<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[162627] branches/jsCStack</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/162627">162627</a></dd>
<dt>Author</dt> <dd>mhahnenberg@apple.com</dd>
<dt>Date</dt> <dd>2014-01-23 11:12:43 -0800 (Thu, 23 Jan 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Merge branch up to ToT <a href="http://trac.webkit.org/projects/webkit/changeset/160556">r160556</a>.

.: 

* .gitignore:
* Source/autotools/SetupAutomake.m4:
* Source/autotools/SetupCompilerFlags.m4:
* Source/autotools/SetupLibtool.m4:
* Source/autotools/SetupWebKitFeatures.m4:
* Source/cmake/OptionsGTK.cmake:
* Source/cmake/WebKitHelpers.cmake:

Source/JavaScriptCore: 

* API/JSBasePrivate.h:
* API/JSContext.h:
* API/JSContext.mm:
(-[JSContext init]):
(-[JSContext initWithVirtualMachine:]):
(-[JSContext initWithGlobalContextRef:]):
* API/JSContextRef.h:
* API/JSContextRefPrivate.h:
* API/JSManagedValue.h:
* API/JSManagedValue.mm:
(-[JSManagedValue init]):
(-[JSManagedValue initWithValue:]):
* API/JSObjectRef.h:
* API/JSStringRefCF.h:
* API/JSValue.h:
* API/JSValueRef.h:
* API/JSVirtualMachine.h:
* API/JSVirtualMachine.mm:
(-[JSVirtualMachine init]):
(-[JSVirtualMachine initWithContextGroupRef:]):
* API/tests/testapi.c:
(globalContextNameTest):
(main):
* API/tests/testapi.mm:
* CMakeLists.txt:
* Configurations/Version.xcconfig:
* DerivedSources.make:
* GNUmakefile.am:
* GNUmakefile.list.am:
* JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
* JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
* JavaScriptCore.vcxproj/JavaScriptCoreCommon.props:
* JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractor.vcxproj:
* JavaScriptCore.vcxproj/build-generated-files.sh:
* JavaScriptCore.vcxproj/copy-files.cmd:
* JavaScriptCore.vcxproj/jsc/jsc.vcxproj:
* JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj:
* JavaScriptCore.vcxproj/testapi/testapi.vcxproj:
* JavaScriptCore.xcodeproj/project.pbxproj:
* bindings: Added.
* bindings/ScriptFunctionCall.cpp: Added.
(Deprecated::ScriptCallArgumentHandler::appendArgument):
(Deprecated::ScriptFunctionCall::ScriptFunctionCall):
(Deprecated::ScriptFunctionCall::call):
* bindings/ScriptFunctionCall.h: Added.
* bindings/ScriptObject.cpp: Added.
(Deprecated::ScriptObject::ScriptObject):
* bindings/ScriptObject.h: Added.
(Deprecated::ScriptObject::ScriptObject):
(Deprecated::ScriptObject::jsObject):
(Deprecated::ScriptObject::scriptState):
* bindings/ScriptValue.cpp: Added.
(Deprecated::ScriptValue::~ScriptValue):
(Deprecated::ScriptValue::getString):
(Deprecated::ScriptValue::toString):
(Deprecated::ScriptValue::isEqual):
(Deprecated::ScriptValue::isNull):
(Deprecated::ScriptValue::isUndefined):
(Deprecated::ScriptValue::isObject):
(Deprecated::ScriptValue::isFunction):
(Deprecated::jsToInspectorValue):
(Deprecated::ScriptValue::toInspectorValue):
* bindings/ScriptValue.h: Added.
* bytecode/CodeBlockHash.cpp:
(JSC::CodeBlockHash::CodeBlockHash):
(JSC::CodeBlockHash::dump):
* bytecode/Opcode.cpp:
(JSC::OpcodeStats::~OpcodeStats):
* dfg/DFGCSEPhase.cpp:
* docs/make-bytecode-docs.pl:
* ftl/FTLAbstractHeap.h:
* heap/Heap.cpp:
(JSC::Heap::collect):
* heap/Heap.h:
* heap/MarkedSpace.h:
* heap/RecursiveAllocationScope.h: Added.
(JSC::RecursiveAllocationScope::RecursiveAllocationScope):
(JSC::RecursiveAllocationScope::~RecursiveAllocationScope):
* inspector/InspectorAgentBase.h: Added.
(Inspector::InspectorAgentBase::~InspectorAgentBase):
(Inspector::InspectorAgentBase::discardAgent):
(Inspector::InspectorAgentBase::InspectorAgentBase):
* inspector/InspectorAgentRegistry.cpp: Added.
(Inspector::InspectorAgentRegistry::append):
(Inspector::InspectorAgentRegistry::didCreateFrontendAndBackend):
(Inspector::InspectorAgentRegistry::willDestroyFrontendAndBackend):
(Inspector::InspectorAgentRegistry::discardAgents):
* inspector/InspectorAgentRegistry.h: Added.
* inspector/InspectorBackendDispatcher.cpp: Added.
(Inspector::InspectorBackendDispatcher::CallbackBase::CallbackBase):
(Inspector::InspectorBackendDispatcher::CallbackBase::isActive):
(Inspector::InspectorBackendDispatcher::CallbackBase::sendFailure):
(Inspector::InspectorBackendDispatcher::CallbackBase::sendIfActive):
(Inspector::InspectorBackendDispatcher::create):
(Inspector::InspectorBackendDispatcher::registerDispatcherForDomain):
(Inspector::InspectorBackendDispatcher::dispatch):
(Inspector::InspectorBackendDispatcher::sendResponse):
(Inspector::InspectorBackendDispatcher::reportProtocolError):
(Inspector::getPropertyValue):
(Inspector::AsMethodBridges::asInt):
(Inspector::AsMethodBridges::asDouble):
(Inspector::AsMethodBridges::asString):
(Inspector::AsMethodBridges::asBoolean):
(Inspector::AsMethodBridges::asObject):
(Inspector::AsMethodBridges::asArray):
(Inspector::InspectorBackendDispatcher::getInt):
(Inspector::InspectorBackendDispatcher::getDouble):
(Inspector::InspectorBackendDispatcher::getString):
(Inspector::InspectorBackendDispatcher::getBoolean):
(Inspector::InspectorBackendDispatcher::getObject):
(Inspector::InspectorBackendDispatcher::getArray):
* inspector/InspectorBackendDispatcher.h: Added.
(Inspector::InspectorSupplementalBackendDispatcher::InspectorSupplementalBackendDispatcher):
(Inspector::InspectorSupplementalBackendDispatcher::~InspectorSupplementalBackendDispatcher):
* inspector/InspectorTypeBuilder.h: Added.
(Inspector::TypeBuilder::OptOutput::OptOutput):
(Inspector::TypeBuilder::OptOutput::operator=):
(Inspector::TypeBuilder::OptOutput::isAssigned):
(Inspector::TypeBuilder::OptOutput::getValue):
(Inspector::TypeBuilder::ExactlyInt::ExactlyInt):
(Inspector::TypeBuilder::ExactlyInt::operator int):
(Inspector::TypeBuilder::ExactlyInt::cast_to_int):
(Inspector::TypeBuilder::int):
(Inspector::TypeBuilder::RuntimeCastHelper::assertType):
(Inspector::TypeBuilder::RuntimeCastHelper::assertAny):
(Inspector::TypeBuilder::RuntimeCastHelper::assertInt):
(Inspector::TypeBuilder::Array::Array):
(Inspector::TypeBuilder::Array::openAccessors):
(Inspector::TypeBuilder::Array::addItem):
(Inspector::TypeBuilder::Array::create):
(Inspector::TypeBuilder::Array::runtimeCast):
(Inspector::TypeBuilder::Array::assertCorrectValue):
(Inspector::TypeBuilder::StructItemTraits::pushRefPtr):
(Inspector::TypeBuilder::StructItemTraits::assertCorrectValue):
* inspector/InspectorValues.cpp: Added.
(Inspector::InspectorValue::asBoolean):
(Inspector::InspectorValue::asNumber):
(Inspector::InspectorValue::asString):
(Inspector::InspectorValue::asValue):
(Inspector::InspectorValue::asObject):
(Inspector::InspectorValue::asArray):
(Inspector::InspectorValue::parseJSON):
(Inspector::InspectorValue::toJSONString):
(Inspector::InspectorValue::writeJSON):
(Inspector::InspectorBasicValue::asBoolean):
(Inspector::InspectorBasicValue::asNumber):
(Inspector::InspectorBasicValue::writeJSON):
(Inspector::InspectorString::asString):
(Inspector::InspectorString::writeJSON):
(Inspector::InspectorObjectBase::~InspectorObjectBase):
(Inspector::InspectorObjectBase::asObject):
(Inspector::InspectorObjectBase::openAccessors):
(Inspector::InspectorObjectBase::getBoolean):
(Inspector::InspectorObjectBase::getString):
(Inspector::InspectorObjectBase::getObject):
(Inspector::InspectorObjectBase::getArray):
(Inspector::InspectorObjectBase::get):
(Inspector::InspectorObjectBase::remove):
(Inspector::InspectorObjectBase::writeJSON):
(Inspector::InspectorObjectBase::InspectorObjectBase):
(Inspector::InspectorArrayBase::~InspectorArrayBase):
(Inspector::InspectorArrayBase::asArray):
(Inspector::InspectorArrayBase::writeJSON):
(Inspector::InspectorArrayBase::InspectorArrayBase):
(Inspector::InspectorArrayBase::get):
(Inspector::InspectorObject::create):
(Inspector::InspectorArray::create):
(Inspector::InspectorValue::null):
(Inspector::InspectorString::create):
(Inspector::InspectorBasicValue::create):
* inspector/InspectorValues.h: Added.
(Inspector::InspectorObjectBase::find):
(Inspector::InspectorObjectBase::setBoolean):
(Inspector::InspectorObjectBase::setNumber):
(Inspector::InspectorObjectBase::setString):
(Inspector::InspectorObjectBase::setValue):
(Inspector::InspectorObjectBase::setObject):
(Inspector::InspectorObjectBase::setArray):
(Inspector::InspectorArrayBase::pushBoolean):
(Inspector::InspectorArrayBase::pushInt):
(Inspector::InspectorArrayBase::pushNumber):
(Inspector::InspectorArrayBase::pushString):
(Inspector::InspectorArrayBase::pushValue):
(Inspector::InspectorArrayBase::pushObject):
(Inspector::InspectorArrayBase::pushArray):
* inspector/scripts: Added.
* jit/JITOperations.cpp:
* jsc.cpp:
* make-generated-sources.sh:
* offlineasm/mips.rb:
* offlineasm/sh4.rb:
* parser/ASTBuilder.h:
(JSC::ASTBuilder::createGetterOrSetterProperty):
(JSC::ASTBuilder::createProperty):
* parser/Parser.cpp:
(JSC::::parseInner):
(JSC::::parseSourceElements):
(JSC::::parseVarDeclarationList):
(JSC::::createBindingPattern):
(JSC::::tryParseDeconstructionPatternExpression):
(JSC::::parseDeconstructionPattern):
(JSC::::parseSwitchClauses):
(JSC::::parseSwitchDefaultClause):
(JSC::::parseBlockStatement):
(JSC::::parseFormalParameters):
(JSC::::parseFunctionBody):
(JSC::::parseFunctionInfo):
(JSC::::parseFunctionDeclaration):
(JSC::::parseProperty):
(JSC::::parseObjectLiteral):
(JSC::::parseStrictObjectLiteral):
(JSC::::parseMemberExpression):
* parser/Parser.h:
* parser/ParserArena.h:
* parser/SyntaxChecker.h:
(JSC::SyntaxChecker::createProperty):
(JSC::SyntaxChecker::createGetterOrSetterProperty):
* runtime/CodeCache.h:
* runtime/DateInstanceCache.h:
* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::reset):
* runtime/JSGlobalObject.h:
* runtime/JSString.h:
* runtime/LiteralParser.h:
* runtime/NumericStrings.h:
* runtime/RegExpCache.h:
* runtime/SmallStrings.h:
* runtime/VM.h:
* testRegExp.cpp:

Source/Platform: 

* GNUmakefile.am:

Source/ThirdParty: 

* gtest/msvc/gtest-md.vcxproj:

Source/ThirdParty/ANGLE: 

* ANGLE.xcodeproj/project.pbxproj:
* src/compiler/glslang_tab.cpp:
(yysyntax_error):
(glslang_parse):
* src/compiler/glslang_tab.h:
* src/compiler/preprocessor/ExpressionParser.cpp:
(yy_symbol_print):
(yy_stack_print):
(yy_reduce_print):
(yystrlen):
(yystpcpy):
(yytnamerr):
(yysyntax_error):
(yydestruct):
(yyparse):

Source/WebCore: 

Tests: accessibility/alt-tag-on-image-with-nonimage-role.html
       accessibility/children-changed-sends-notification.html
       crypto/subtle/aes-postMessage.html
       crypto/subtle/hmac-postMessage.html
       crypto/subtle/postMessage-worker.html
       crypto/subtle/rsa-oaep-generate-non-extractable-key.html
       crypto/subtle/rsa-postMessage.html
       crypto/subtle/rsaes-pkcs1-v1_5-decrypt.html
       crypto/subtle/rsaes-pkcs1-v1_5-wrap-unwrap-aes.html
       crypto/subtle/unwrapKey-check-usage.html
       crypto/subtle/wrapKey-check-usage.html
       fast/css/nth-last-child-recalc.html
       fast/css/pending-image-crash.xhtml
       fast/css/style-sharing-grand-parent-invalidate.html
       fast/dom/Document/clone-node.html
       fast/dom/HTMLDocument/clone-node-quirks-mode.html
       fast/dom/HTMLTableElement/empy-table-cell-with-background-color.html
       fast/dom/Window/postMessage-clone-port-error.html
       inspector-protocol/model/highlight-shape-outside-margin.html
       inspector-protocol/page/deny-X-FrameOption.html
       media/media-source/media-source-end-of-stream.html
       media/media-source/media-source-video-playback-quality.html
       platform/gtk/accessibility/text-at-offset-embedded-objects.html
       platform/gtk/accessibility/text-at-offset-newlines.html
       platform/gtk/accessibility/text-at-offset-preformatted.html
       platform/gtk/accessibility/text-at-offset-simple.html
       platform/gtk/accessibility/text-at-offset-special-chars.html
       platform/gtk/accessibility/text-at-offset-textarea.html
       platform/gtk/accessibility/text-at-offset-textinput.html
       platform/gtk/accessibility/text-at-offset-wrapped-lines.html
       platform/gtk/accessibility/text-for-range-combo-box.html
       platform/gtk/accessibility/text-for-range-embedded-objects.html
       platform/gtk/accessibility/text-for-range-entry-and-password.html
       platform/gtk/accessibility/text-for-range-extraneous-whitespace.html
       platform/gtk/accessibility/text-for-range-formatted.html
       platform/gtk/accessibility/text-for-range-heading.html
       platform/gtk/accessibility/text-for-range-list-items.html
       platform/gtk/accessibility/text-for-range-simple.html
       platform/gtk/accessibility/text-for-range-table-cells.html
       platform/gtk/accessibility/text-for-range-with-link.html
       platform/gtk/accessibility/text-for-table.html
       svg/custom/clone-node.html
       svg/dom/SVGScriptElement/script-type-attribute.svg

* CMakeLists.txt:
* Configurations/Version.xcconfig:
* DerivedSources.make:
* ForwardingHeaders/bindings: Added.
* ForwardingHeaders/bindings/ScriptFunctionCall.h: Added.
* ForwardingHeaders/bindings/ScriptObject.h: Added.
* ForwardingHeaders/bindings/ScriptValue.h: Added.
* ForwardingHeaders/inspector/InspectorAgentBase.h: Added.
* ForwardingHeaders/inspector/InspectorAgentRegistry.h: Added.
* ForwardingHeaders/inspector/InspectorBackendDispatcher.h: Added.
* ForwardingHeaders/inspector/InspectorTypeBuilder.h: Added.
* ForwardingHeaders/inspector/InspectorValues.h: Added.
* GNUmakefile.am:
* GNUmakefile.list.am:
* Modules/battery/BatteryManager.idl:
* Modules/battery/NavigatorBattery.idl:
* Modules/indexeddb/IDBAny.cpp:
(WebCore::IDBAny::scriptValue):
(WebCore::IDBAny::IDBAny):
* Modules/indexeddb/IDBAny.h:
* Modules/indexeddb/IDBCursor.cpp:
(WebCore::IDBCursor::key):
(WebCore::IDBCursor::primaryKey):
(WebCore::IDBCursor::value):
(WebCore::IDBCursor::update):
(WebCore::IDBCursor::continueFunction):
(WebCore::IDBCursor::setValueReady):
* Modules/indexeddb/IDBCursor.h:
* Modules/indexeddb/IDBDatabaseMetadata.cpp: Added.
(WebCore::IDBDatabaseMetadata::isolatedCopy):
(WebCore::IDBObjectStoreMetadata::isolatedCopy):
(WebCore::IDBIndexMetadata::isolatedCopy):
* Modules/indexeddb/IDBDatabaseMetadata.h:
* Modules/indexeddb/IDBFactory.cpp:
(WebCore::IDBFactory::cmp):
* Modules/indexeddb/IDBFactory.h:
* Modules/indexeddb/IDBIndex.cpp:
(WebCore::IDBIndex::openCursor):
(WebCore::IDBIndex::count):
(WebCore::IDBIndex::openKeyCursor):
(WebCore::IDBIndex::get):
(WebCore::IDBIndex::getKey):
* Modules/indexeddb/IDBIndex.h:
(WebCore::IDBIndex::openCursor):
(WebCore::IDBIndex::openKeyCursor):
* Modules/indexeddb/IDBKeyPath.cpp:
(WebCore::IDBKeyPath::isolatedCopy):
* Modules/indexeddb/IDBKeyPath.h:
* Modules/indexeddb/IDBKeyRange.cpp:
(WebCore::IDBKeyRange::lowerValue):
(WebCore::IDBKeyRange::upperValue):
(WebCore::IDBKeyRange::only):
(WebCore::IDBKeyRange::lowerBound):
(WebCore::IDBKeyRange::upperBound):
(WebCore::IDBKeyRange::bound):
* Modules/indexeddb/IDBKeyRange.h:
(WebCore::IDBKeyRange::lowerBound):
(WebCore::IDBKeyRange::upperBound):
(WebCore::IDBKeyRange::bound):
* Modules/indexeddb/IDBObjectStore.cpp:
(WebCore::IDBObjectStore::get):
(WebCore::generateIndexKeysForValue):
(WebCore::IDBObjectStore::add):
(WebCore::IDBObjectStore::put):
(WebCore::IDBObjectStore::deleteFunction):
(WebCore::IDBObjectStore::openCursor):
(WebCore::IDBObjectStore::count):
* Modules/indexeddb/IDBObjectStore.h:
* Modules/indexeddb/IDBRequest.cpp:
(WebCore::IDBRequest::setResultCursor):
(WebCore::IDBRequest::onSuccess):
(WebCore::IDBRequest::onSuccessInternal):
* Modules/indexeddb/IDBRequest.h:
* Modules/mediasource/DOMURLMediaSource.cpp:
(WebCore::DOMURLMediaSource::createObjectURL):
* Modules/mediasource/DOMURLMediaSource.h:
* Modules/mediasource/MediaSource.cpp:
(WebCore::MediaSource::MediaSource):
(WebCore::MediaSource::openKeyword):
(WebCore::MediaSource::closedKeyword):
(WebCore::MediaSource::endedKeyword):
(WebCore::MediaSource::setPrivateAndOpen):
(WebCore::MediaSource::addedToRegistry):
(WebCore::MediaSource::removedFromRegistry):
(WebCore::MediaSource::duration):
(WebCore::MediaSource::buffered):
(WebCore::SourceBufferBufferedDoesNotContainTime::SourceBufferBufferedDoesNotContainTime):
(WebCore::SourceBufferBufferedDoesNotContainTime::operator()):
(WebCore::SourceBufferBufferedHasEnough::SourceBufferBufferedHasEnough):
(WebCore::SourceBufferBufferedHasEnough::operator()):
(WebCore::SourceBufferBufferedHasFuture::SourceBufferBufferedHasFuture):
(WebCore::SourceBufferBufferedHasFuture::operator()):
(WebCore::MediaSource::monitorSourceBuffers):
(WebCore::MediaSource::setDuration):
(WebCore::MediaSource::setReadyState):
(WebCore::SourceBufferIsUpdating):
(WebCore::MediaSource::endOfStream):
(WebCore::MediaSource::streamEndedWithError):
(WebCore::MediaSource::removeSourceBuffer):
(WebCore::MediaSource::isOpen):
(WebCore::MediaSource::isClosed):
(WebCore::MediaSource::close):
(WebCore::MediaSource::attachToElement):
(WebCore::MediaSource::openIfInEndedState):
(WebCore::MediaSource::hasPendingActivity):
(WebCore::MediaSource::stop):
(WebCore::MediaSource::onReadyStateChange):
(WebCore::MediaSource::activeRanges):
(WebCore::MediaSource::createSourceBufferPrivate):
(WebCore::MediaSource::scheduleEvent):
(WebCore::MediaSource::scriptExecutionContext):
(WebCore::MediaSource::eventTargetInterface):
(WebCore::MediaSource::registry):
* Modules/mediasource/MediaSource.h:
(WebCore::MediaSource::readyState):
(WebCore::MediaSource::mediaElement):
(WebCore::MediaSource::asyncEventQueue):
* Modules/mediasource/MediaSource.idl:
* Modules/mediasource/MediaSourceBase.cpp:
* Modules/mediasource/MediaSourceBase.h:
* Modules/mediasource/MediaSourceRegistry.cpp:
(WebCore::MediaSourceRegistry::registerURL):
(WebCore::MediaSourceRegistry::unregisterURL):
* Modules/mediasource/MediaSourceRegistry.h:
* Modules/mediasource/SourceBuffer.cpp:
(WebCore::SourceBuffer::TrackBuffer::TrackBuffer):
(WebCore::SourceBuffer::appendBufferTimerFired):
(WebCore::SourceBuffer::sourceBufferPrivateDidReceiveSample):
(WebCore::SourceBuffer::sourceBufferPrivateHasAudio):
(WebCore::SourceBuffer::sourceBufferPrivateHasVideo):
(WebCore::SourceBuffer::didDropSample):
* Modules/mediasource/SourceBuffer.h:
* Modules/mediasource/VideoPlaybackQuality.cpp: Added.
(WebCore::VideoPlaybackQuality::create):
(WebCore::VideoPlaybackQuality::VideoPlaybackQuality):
* Modules/mediasource/VideoPlaybackQuality.h: Added.
(WebCore::VideoPlaybackQuality::creationTime):
(WebCore::VideoPlaybackQuality::totalVideoFrames):
(WebCore::VideoPlaybackQuality::droppedVideoFrames):
(WebCore::VideoPlaybackQuality::corruptedVideoFrames):
(WebCore::VideoPlaybackQuality::totalFrameDelay):
* Modules/mediasource/VideoPlaybackQuality.idl: Added.
* Modules/mediastream/CapabilityRange.cpp:
(WebCore::scriptValue):
(WebCore::CapabilityRange::min):
(WebCore::CapabilityRange::max):
* Modules/mediastream/CapabilityRange.h:
* Modules/mediastream/HTMLMediaElementMediaStream.idl:
* Modules/mediastream/MediaTrackConstraint.h:
* Modules/mediastream/RTCErrorCallback.h:
* Modules/mediastream/RTCErrorCallback.idl:
* Modules/mediastream/RTCIceCandidate.cpp:
* Modules/mediastream/RTCPeerConnection.cpp:
(WebCore::RTCPeerConnection::createOffer):
(WebCore::RTCPeerConnection::createAnswer):
(WebCore::RTCPeerConnection::setLocalDescription):
(WebCore::RTCPeerConnection::setRemoteDescription):
(WebCore::RTCPeerConnection::addIceCandidate):
* Modules/mediastream/RTCPeerConnection.h:
* Modules/mediastream/RTCPeerConnection.idl:
* Modules/mediastream/RTCPeerConnectionErrorCallback.h: Added.
(WebCore::RTCPeerConnectionErrorCallback::~RTCPeerConnectionErrorCallback):
* Modules/mediastream/RTCPeerConnectionErrorCallback.idl: Added.
* Modules/mediastream/RTCSessionDescriptionRequestImpl.cpp:
(WebCore::RTCSessionDescriptionRequestImpl::create):
(WebCore::RTCSessionDescriptionRequestImpl::RTCSessionDescriptionRequestImpl):
(WebCore::RTCSessionDescriptionRequestImpl::requestFailed):
* Modules/mediastream/RTCSessionDescriptionRequestImpl.h:
* Modules/mediastream/RTCVoidRequestImpl.cpp:
(WebCore::RTCVoidRequestImpl::create):
(WebCore::RTCVoidRequestImpl::RTCVoidRequestImpl):
(WebCore::RTCVoidRequestImpl::requestFailed):
* Modules/mediastream/RTCVoidRequestImpl.h:
* Modules/networkinfo/NavigatorNetworkInfoConnection.idl:
* Modules/networkinfo/NetworkInfoConnection.idl:
* Modules/plugins/QuickTimePluginReplacement.cpp:
* Modules/plugins/QuickTimePluginReplacement.h:
* Modules/websockets/WebSocketHandshake.cpp:
(WebCore::WebSocketHandshake::getExpectedWebSocketAccept):
* PlatformEfl.cmake:
* PlatformGTK.cmake:
* PlatformNix.cmake:
* UseJSC.cmake:
* WebCore.exp.in:
* WebCore.vcxproj/WebCore.vcxproj:
* WebCore.vcxproj/WebCore.vcxproj.filters:
* WebCore.vcxproj/WebCoreCommon.props:
* WebCore.vcxproj/WebCoreTestSupport.vcxproj:
* WebCore.xcodeproj/project.pbxproj:
* accessibility/AccessibilityNodeObject.cpp:
(WebCore::AccessibilityNodeObject::usesAltTagForTextComputation):
(WebCore::AccessibilityNodeObject::alternativeText):
(WebCore::AccessibilityNodeObject::accessibilityDescription):
(WebCore::AccessibilityNodeObject::text):
* accessibility/AccessibilityNodeObject.h:
* accessibility/atk/WebKitAccessibleWrapperAtk.cpp:
(webkitAccessibleGetAttributes):
(atkRole):
* bindings/gobject/GNUmakefile.am:
* bindings/gobject/WebKitDOMCustom.cpp:
* bindings/gobject/WebKitDOMCustom.h:
* bindings/gobject/WebKitDOMCustom.symbols:
* bindings/gobject/WebKitDOMDeprecated.cpp:
* bindings/gobject/WebKitDOMDeprecated.h:
* bindings/gobject/WebKitDOMDeprecated.symbols:
* bindings/gobject/webkitdom.symbols:
* bindings/js/Dictionary.h:
(WebCore::Dictionary::getEventListener):
* bindings/js/IDBBindingUtilities.cpp:
(WebCore::createIDBKeyFromScriptValueAndKeyPath):
(WebCore::injectIDBKeyIntoScriptValue):
(WebCore::canInjectIDBKeyIntoScriptValue):
(WebCore::deserializeIDBValue):
(WebCore::deserializeIDBValueBuffer):
(WebCore::idbKeyToScriptValue):
(WebCore::scriptValueToIDBKey):
* bindings/js/IDBBindingUtilities.h:
* bindings/js/JSBindingsAllInOne.cpp:
* bindings/js/JSCryptoAlgorithmDictionary.cpp:
(WebCore::JSCryptoAlgorithmDictionary::createParametersForEncrypt):
(WebCore::JSCryptoAlgorithmDictionary::createParametersForDecrypt):
(WebCore::JSCryptoAlgorithmDictionary::createParametersForSign):
(WebCore::JSCryptoAlgorithmDictionary::createParametersForVerify):
(WebCore::JSCryptoAlgorithmDictionary::createParametersForDigest):
(WebCore::JSCryptoAlgorithmDictionary::createParametersForGenerateKey):
(WebCore::JSCryptoAlgorithmDictionary::createParametersForDeriveKey):
(WebCore::JSCryptoAlgorithmDictionary::createParametersForDeriveBits):
(WebCore::JSCryptoAlgorithmDictionary::createParametersForImportKey):
(WebCore::JSCryptoAlgorithmDictionary::createParametersForExportKey):
* bindings/js/JSCryptoKeySerializationJWK.cpp:
(WebCore::JSCryptoKeySerializationJWK::reconcileAlgorithm):
(WebCore::JSCryptoKeySerializationJWK::keySizeIsValid):
(WebCore::JSCryptoKeySerializationJWK::addJWKAlgorithmToJSON):
* bindings/js/JSDOMBinding.h:
(WebCore::toJS):
(WebCore::toRefPtrNativeArray):
(WebCore::toNativeArray):
(WebCore::toNativeArguments):
* bindings/js/JSDictionary.cpp:
(WebCore::JSDictionary::convertValue):
* bindings/js/JSDictionary.h:
* bindings/js/JSHTMLCanvasElementCustom.cpp:
(WebCore::JSHTMLCanvasElement::getContext):
* bindings/js/JSInjectedScriptHostCustom.cpp:
(WebCore::InjectedScriptHost::scriptValueAsNode):
(WebCore::InjectedScriptHost::nodeAsScriptValue):
(WebCore::JSInjectedScriptHost::inspectedObject):
(WebCore::JSInjectedScriptHost::inspect):
* bindings/js/JSInjectedScriptManager.cpp:
(WebCore::InjectedScriptManager::createInjectedScript):
* bindings/js/JSMainThreadExecState.cpp:
(WebCore::functionCallHandlerFromAnyThread):
* bindings/js/JSMainThreadExecState.h:
(WebCore::JSMainThreadExecState::currentState):
* bindings/js/JSMessageEventCustom.cpp:
(WebCore::JSMessageEvent::data):
(WebCore::handleInitMessageEvent):
* bindings/js/JSSubtleCryptoCustom.cpp:
(WebCore::JSSubtleCrypto::wrapKey):
* bindings/js/ScheduledAction.cpp:
* bindings/js/ScriptCallStackFactory.cpp:
(WebCore::createScriptArguments):
* bindings/js/ScriptController.cpp:
(WebCore::ScriptController::evaluateInWorld):
(WebCore::ScriptController::evaluate):
(WebCore::ScriptController::executeScriptInWorld):
(WebCore::ScriptController::executeScript):
(WebCore::ScriptController::executeIfJavaScriptURL):
* bindings/js/ScriptController.h:
* bindings/js/ScriptDebugServer.cpp:
(WebCore::ScriptDebugServer::setScriptSource):
(WebCore::ScriptDebugServer::updateCallStack):
(WebCore::ScriptDebugServer::dispatchDidPause):
(WebCore::ScriptDebugServer::runScript):
* bindings/js/ScriptDebugServer.h:
* bindings/js/ScriptFunctionCall.cpp:
* bindings/js/ScriptFunctionCall.h:
* bindings/js/ScriptGlobalObject.cpp: Added.
(WebCore::handleException):
(WebCore::ScriptGlobalObject::set):
(WebCore::ScriptGlobalObject::get):
(WebCore::ScriptGlobalObject::remove):
* bindings/js/ScriptGlobalObject.h: Added.
(WebCore::ScriptGlobalObject::ScriptGlobalObject):
* bindings/js/ScriptObject.cpp:
* bindings/js/ScriptObject.h:
* bindings/js/ScriptProfile.cpp:
(WebCore::buildInspectorObjectFor):
(WebCore::ScriptProfile::buildInspectorObjectForHead):
(WebCore::ScriptProfile::buildInspectorObjectForBottomUpHead):
* bindings/js/ScriptProfile.h:
* bindings/js/ScriptProfiler.cpp:
(WebCore::ScriptProfiler::objectByHeapObjectId):
(WebCore::ScriptProfiler::getHeapObjectId):
* bindings/js/ScriptProfiler.h:
* bindings/js/ScriptState.h:
* bindings/js/ScriptValue.cpp:
* bindings/js/ScriptValue.h:
* bindings/js/SerializedScriptValue.cpp:
(WebCore::ENUM_CLASS):
(WebCore::countUsages):
(WebCore::CloneSerializer::dumpIfTerminal):
(WebCore::CloneSerializer::write):
(WebCore::CloneDeserializer::read):
(WebCore::CloneDeserializer::readHMACKey):
(WebCore::CloneDeserializer::readAESKey):
(WebCore::CloneDeserializer::readRSAKey):
(WebCore::CloneDeserializer::readCryptoKey):
(WebCore::CloneDeserializer::readTerminal):
(WebCore::SerializedScriptValue::deserializeForInspector):
(WebCore::SerializedScriptValue::serialize):
(WebCore::SerializedScriptValue::deserialize):
* bindings/js/SerializedScriptValue.h:
* bindings/js/WorkerScriptController.cpp:
(WebCore::WorkerScriptController::evaluate):
(WebCore::WorkerScriptController::setException):
* bindings/js/WorkerScriptController.h:
* bindings/scripts/CodeGeneratorGObject.pm:
(SkipAttribute):
(SkipFunction):
(GetWriteableProperties):
(GenerateProperty):
(GenerateFunction):
(GenerateFunctions):
* bindings/scripts/CodeGeneratorJS.pm:
* bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::setJSTestObjAnyAttribute):
* crypto/CommonCryptoUtilities.h:
* crypto/CryptoAlgorithmIdentifier.h:
(WebCore::ENUM_CLASS):
* crypto/CryptoAlgorithmRegistry.cpp:
(WebCore::CryptoAlgorithmRegistry::shared):
(WebCore::registryMutex):
(WebCore::CryptoAlgorithmRegistry::getIdentifierForName):
(WebCore::CryptoAlgorithmRegistry::nameForIdentifier):
(WebCore::CryptoAlgorithmRegistry::create):
(WebCore::CryptoAlgorithmRegistry::registerAlgorithm):
* crypto/CryptoAlgorithmRegistry.h:
* crypto/CryptoKey.cpp:
(WebCore::CryptoKey::usages):
* crypto/CryptoKey.idl:
* crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:
* crypto/algorithms/CryptoAlgorithmAES_KW.cpp:
(WebCore::CryptoAlgorithmAES_KW::keyAlgorithmMatches):
(WebCore::CryptoAlgorithmAES_KW::encryptForWrapKey):
(WebCore::CryptoAlgorithmAES_KW::decryptForUnwrapKey):
* crypto/algorithms/CryptoAlgorithmAES_KW.h:
* crypto/algorithms/CryptoAlgorithmHMAC.cpp:
* crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp: Added.
(WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::CryptoAlgorithmRSAES_PKCS1_v1_5):
(WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::~CryptoAlgorithmRSAES_PKCS1_v1_5):
(WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::create):
(WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::identifier):
(WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::keyAlgorithmMatches):
(WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::encrypt):
(WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::decrypt):
(WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::generateKey):
(WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::importKey):
* crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.h: Added.
* crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:
* crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:
* crypto/algorithms/CryptoAlgorithmSHA1.cpp:
* crypto/algorithms/CryptoAlgorithmSHA224.cpp:
* crypto/algorithms/CryptoAlgorithmSHA256.cpp:
* crypto/algorithms/CryptoAlgorithmSHA384.cpp:
* crypto/algorithms/CryptoAlgorithmSHA512.cpp:
* crypto/keys/CryptoKeyAES.cpp:
(WebCore::CryptoKeyAES::CryptoKeyAES):
(WebCore::CryptoKeyAES::isValidAESAlgorithm):
* crypto/keys/CryptoKeyAES.h:
* crypto/mac/CryptoAlgorithmRSAES_PKCS1_v1_5Mac.cpp: Added.
(WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::platformEncrypt):
(WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::platformDecrypt):
* crypto/mac/CryptoAlgorithmRegistryMac.cpp:
(WebCore::CryptoAlgorithmRegistry::platformRegisterAlgorithms):
* crypto/mac/CryptoKeyRSAMac.cpp:
(WebCore::CryptoKeyRSA::generatePair):
* crypto/parameters/CryptoAlgorithmAesCbcParams.h:
* css/CSSComputedStyleDeclaration.cpp:
(WebCore::getBorderRadiusShorthandValue):
(WebCore::ComputedStyleExtractor::valueForFilter):
* css/CSSComputedStyleDeclaration.h:
* css/CSSCrossfadeValue.cpp:
(WebCore::subimageKnownToBeOpaque):
(WebCore::CSSCrossfadeValue::knownToBeOpaque):
* css/CSSCursorImageValue.cpp:
(WebCore::CSSCursorImageValue::detachPendingImage):
(WebCore::CSSCursorImageValue::~CSSCursorImageValue):
(WebCore::CSSCursorImageValue::cachedImage):
(WebCore::CSSCursorImageValue::clearCachedImage):
* css/CSSCursorImageValue.h:
* css/CSSFilterImageValue.h:
(WebCore::CSSFilterImageValue::create):
* css/CSSImageGeneratorValue.cpp:
(WebCore::CSSImageGeneratorValue::saveCachedImageForSize):
(WebCore::CSSImageGeneratorValue::subimageIsPending):
(WebCore::CSSImageGeneratorValue::cachedImageForCSSValue):
* css/CSSImageGeneratorValue.h:
* css/CSSImageSetValue.cpp:
(WebCore::CSSImageSetValue::detachPendingImage):
(WebCore::CSSImageSetValue::~CSSImageSetValue):
(WebCore::CSSImageSetValue::cachedImageSet):
* css/CSSImageSetValue.h:
* css/CSSImageValue.cpp:
(WebCore::CSSImageValue::detachPendingImage):
(WebCore::CSSImageValue::~CSSImageValue):
(WebCore::CSSImageValue::cachedImage):
* css/CSSImageValue.h:
* css/CSSParser.cpp:
(WebCore::filterProperties):
(WebCore::CSSParser::createStyleProperties):
(WebCore::CSSParser::parseFilterImage):
(WebCore::CSSParser::parseFilter):
* css/CSSValue.cpp:
* css/StyleProperties.cpp:
(WebCore::StyleProperties::asText):
* css/StyleResolver.cpp:
(WebCore::StyleResolver::State::clear):
(WebCore::StyleResolver::styleForElement):
(WebCore::StyleResolver::pseudoStyleForElement):
(WebCore::addIntrinsicMargins):
(WebCore::doesNotInheritTextDecoration):
(WebCore::StyleResolver::adjustRenderStyle):
(WebCore::StyleResolver::adjustGridItemPosition):
(WebCore::StyleResolver::applyProperty):
(WebCore::StyleResolver::styleImage):
(WebCore::StyleResolver::generatedOrPendingFromValue):
(WebCore::StyleResolver::loadPendingImage):
(WebCore::StyleResolver::loadPendingImages):
* css/StyleResolver.h:
* dom/CustomEvent.cpp:
(WebCore::CustomEvent::initCustomEvent):
* dom/CustomEvent.h:
(WebCore::CustomEvent::detail):
* dom/Document.cpp:
(WebCore::Document::cloneNode):
(WebCore::Document::cloneDocumentWithoutChildren):
(WebCore::Document::cloneDataFromDocument):
* dom/Document.h:
* dom/Document.idl:
* dom/Element.cpp:
(WebCore::Element::computedStyle):
* dom/Element.h:
* dom/InlineStyleSheetOwner.cpp:
(WebCore::InlineStyleSheetOwner::InlineStyleSheetOwner):
* dom/MessageEvent.cpp:
(WebCore::MessageEvent::MessageEvent):
(WebCore::MessageEvent::initMessageEvent):
* dom/MessageEvent.h:
(WebCore::MessageEvent::create):
(WebCore::MessageEvent::dataAsScriptValue):
* dom/MessagePort.cpp:
(WebCore::MessagePort::postMessage):
* dom/Node.cpp:
(WebCore::Node::computedStyle):
* dom/Node.h:
(WebCore::Node::nonRendererStyle):
* dom/PopStateEvent.h:
(WebCore::PopStateEvent::state):
* dom/ScriptElement.cpp:
(WebCore::ScriptElement::ScriptElement):
* dom/ScriptableDocumentParser.h:
* dom/StyledElement.cpp:
(WebCore::StyledElement::styleAttributeChanged):
* editing/VisibleUnits.cpp:
(WebCore::endWordBoundary):
* html/HTMLDocument.cpp:
(WebCore::HTMLDocument::cloneDocumentWithoutChildren):
* html/HTMLDocument.h:
* html/HTMLInputElement.cpp:
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::HTMLMediaElement):
(HTMLMediaElement::mediaLoadingFailedFatally):
(HTMLMediaElement::mediaLoadingFailed):
(HTMLMediaElement::mediaPlayerEngineUpdated):
(HTMLMediaElement::getVideoPlaybackQuality):
* html/HTMLMediaElement.h:
(WebCore::HTMLMediaElement::incrementDroppedFrameCount):
* html/HTMLMediaElement.idl:
* html/HTMLPlugInImageElement.cpp:
(WebCore::HTMLPlugInImageElement::didAddUserAgentShadowRoot):
* html/HTMLTextAreaElement.cpp:
* html/ImageInputType.cpp:
(WebCore::ImageInputType::handleDOMActivateEvent):
* html/TextFieldInputType.cpp:
* html/TextInputType.cpp:
* html/parser/HTMLDocumentParser.cpp:
(WebCore::HTMLDocumentParser::didReceiveParsedChunkFromBackgroundParser):
(WebCore::HTMLDocumentParser::pumpPendingSpeculations):
* html/parser/HTMLDocumentParser.h:
* html/parser/XSSAuditor.cpp:
* html/parser/XSSAuditorDelegate.cpp:
* inspector/CodeGeneratorInspector.py:
(RawTypes.BaseType.get_raw_validator_call_text):
(RawTypes.Object.get_array_item_raw_c_type_text):
(RawTypes.Any.get_array_item_raw_c_type_text):
(RawTypes.Array.get_array_item_raw_c_type_text):
(CommandReturnPassModel.OptOutput.get_return_var_type):
(CommandReturnPassModel.OptOutput.get_output_parameter_type):
(TypeModel.ExactlyInt.get_input_param_type_text):
(TypeModel.ExactlyInt.get_opt_output_type_):
(TypeModel.init_class):
(TypeBindings.create_named_type_declaration.Helper):
(TypeBindings.create_type_declaration_.EnumBinding.get_code_generator.CodeGenerator.generate_type_builder):
(TypeBindings.create_type_declaration_.EnumBinding.get_setter_value_expression_pattern):
(TypeBindings.create_type_declaration_.ClassBinding.get_code_generator.CodeGenerator.generate_type_builder):
(Inspector):
(ArrayBinding.get_array_item_c_type_text):
(Generator.go):
(Generator.EventMethodStructTemplate.append_epilog):
(Generator.process_command):
* inspector/CodeGeneratorInspectorStrings.py:
(void):
(InspectorFrontend_h):
(InspectorBackendDispatchers_h):
* inspector/ConsoleMessage.cpp:
(WebCore::messageSourceValue):
(WebCore::messageTypeValue):
(WebCore::messageLevelValue):
(WebCore::ConsoleMessage::addToFrontend):
* inspector/ConsoleMessage.h:
* inspector/ContentSearchUtils.cpp:
(WebCore::ContentSearchUtils::buildObjectForSearchMatch):
(WebCore::ContentSearchUtils::searchInTextByLines):
* inspector/ContentSearchUtils.h:
* inspector/DOMPatchSupport.cpp:
(WebCore::DOMPatchSupport::createDigest):
* inspector/InjectedScript.cpp:
(WebCore::InjectedScript::InjectedScript):
(WebCore::InjectedScript::evaluate):
(WebCore::InjectedScript::callFunctionOn):
(WebCore::InjectedScript::evaluateOnCallFrame):
(WebCore::InjectedScript::getFunctionDetails):
(WebCore::InjectedScript::getProperties):
(WebCore::InjectedScript::getInternalProperties):
(WebCore::InjectedScript::nodeForObjectId):
(WebCore::InjectedScript::releaseObject):
(WebCore::InjectedScript::wrapCallFrames):
(WebCore::InjectedScript::wrapObject):
(WebCore::InjectedScript::wrapTable):
(WebCore::InjectedScript::wrapNode):
(WebCore::InjectedScript::findObjectById):
(WebCore::InjectedScript::inspectNode):
(WebCore::InjectedScript::releaseObjectGroup):
(WebCore::InjectedScript::nodeAsScriptValue):
* inspector/InjectedScript.h:
* inspector/InjectedScriptBase.cpp:
(WebCore::InjectedScriptBase::InjectedScriptBase):
(WebCore::InjectedScriptBase::initialize):
(WebCore::InjectedScriptBase::injectedScriptObject):
(WebCore::InjectedScriptBase::callFunctionWithEvalEnabled):
(WebCore::InjectedScriptBase::makeCall):
(WebCore::InjectedScriptBase::makeEvalCall):
* inspector/InjectedScriptBase.h:
* inspector/InjectedScriptCanvasModule.cpp:
(WebCore::InjectedScriptCanvasModule::wrapCanvas2DContext):
(WebCore::InjectedScriptCanvasModule::wrapWebGLContext):
(WebCore::InjectedScriptCanvasModule::callWrapContextFunction):
(WebCore::InjectedScriptCanvasModule::markFrameEnd):
(WebCore::InjectedScriptCanvasModule::callStartCapturingFunction):
(WebCore::InjectedScriptCanvasModule::callVoidFunctionWithTraceLogIdArgument):
(WebCore::InjectedScriptCanvasModule::traceLog):
(WebCore::InjectedScriptCanvasModule::replayTraceLog):
(WebCore::InjectedScriptCanvasModule::resourceInfo):
(WebCore::InjectedScriptCanvasModule::resourceState):
* inspector/InjectedScriptCanvasModule.h:
* inspector/InjectedScriptHost.cpp:
(WebCore::InjectedScriptHost::inspectImpl):
(WebCore::InjectedScriptHost::InspectableObject::get):
* inspector/InjectedScriptHost.h:
* inspector/InjectedScriptManager.cpp:
(WebCore::InjectedScriptManager::injectedScriptFor):
* inspector/InjectedScriptManager.h:
* inspector/InjectedScriptModule.cpp:
(WebCore::InjectedScriptModule::ensureInjected):
* inspector/InspectorAgent.cpp:
(WebCore::InspectorAgent::InspectorAgent):
(WebCore::InspectorAgent::didCreateFrontendAndBackend):
(WebCore::InspectorAgent::inspect):
* inspector/InspectorAgent.h:
* inspector/InspectorAgentRegistry.cpp:
* inspector/InspectorAgentRegistry.h:
* inspector/InspectorAllInOne.cpp:
* inspector/InspectorApplicationCacheAgent.cpp:
(WebCore::InspectorApplicationCacheAgent::InspectorApplicationCacheAgent):
(WebCore::InspectorApplicationCacheAgent::didCreateFrontendAndBackend):
(WebCore::InspectorApplicationCacheAgent::getFramesWithManifests):
(WebCore::InspectorApplicationCacheAgent::getApplicationCacheForFrame):
(WebCore::InspectorApplicationCacheAgent::buildObjectForApplicationCache):
(WebCore::InspectorApplicationCacheAgent::buildArrayForApplicationCacheResources):
(WebCore::InspectorApplicationCacheAgent::buildObjectForApplicationCacheResource):
* inspector/InspectorApplicationCacheAgent.h:
* inspector/InspectorBackendDispatcher.cpp:
* inspector/InspectorBackendDispatcher.h:
* inspector/InspectorBaseAgent.h:
* inspector/InspectorCSSAgent.cpp:
(WebCore::SelectorProfile::toInspectorObject):
(WebCore::InspectorCSSAgent::InspectorCSSAgent):
(WebCore::InspectorCSSAgent::didCreateFrontendAndBackend):
(WebCore::InspectorCSSAgent::getMatchedStylesForNode):
(WebCore::InspectorCSSAgent::getInlineStylesForNode):
(WebCore::InspectorCSSAgent::getComputedStyleForNode):
(WebCore::InspectorCSSAgent::getAllStyleSheets):
(WebCore::InspectorCSSAgent::getStyleSheet):
(WebCore::InspectorCSSAgent::setStyleText):
(WebCore::InspectorCSSAgent::setPropertyText):
(WebCore::InspectorCSSAgent::toggleProperty):
(WebCore::InspectorCSSAgent::setRuleSelector):
(WebCore::InspectorCSSAgent::addRule):
(WebCore::InspectorCSSAgent::getSupportedCSSProperties):
(WebCore::InspectorCSSAgent::getNamedFlowCollection):
(WebCore::InspectorCSSAgent::stopSelectorProfiler):
(WebCore::InspectorCSSAgent::stopSelectorProfilerImpl):
(WebCore::InspectorCSSAgent::asInspectorStyleSheet):
(WebCore::InspectorCSSAgent::collectStyleSheets):
(WebCore::InspectorCSSAgent::viaInspectorStyleSheet):
(WebCore::InspectorCSSAgent::detectOrigin):
(WebCore::InspectorCSSAgent::buildObjectForRule):
(WebCore::InspectorCSSAgent::buildArrayForRuleList):
(WebCore::InspectorCSSAgent::buildArrayForMatchedRuleList):
(WebCore::InspectorCSSAgent::buildObjectForAttributesStyle):
(WebCore::InspectorCSSAgent::buildArrayForRegions):
(WebCore::InspectorCSSAgent::buildObjectForNamedFlow):
* inspector/InspectorCSSAgent.h:
* inspector/InspectorCanvasAgent.cpp:
(WebCore::InspectorCanvasAgent::InspectorCanvasAgent):
(WebCore::InspectorCanvasAgent::didCreateFrontendAndBackend):
(WebCore::InspectorCanvasAgent::wrapCanvas2DRenderingContextForInstrumentation):
(WebCore::InspectorCanvasAgent::wrapWebGLRenderingContextForInstrumentation):
(WebCore::InspectorCanvasAgent::notifyRenderingContextWasWrapped):
(WebCore::InspectorCanvasAgent::injectedScriptCanvasModule):
* inspector/InspectorCanvasAgent.h:
* inspector/InspectorCanvasInstrumentation.h:
(WebCore::InspectorInstrumentation::wrapCanvas2DRenderingContextForInstrumentation):
(WebCore::InspectorInstrumentation::wrapWebGLRenderingContextForInstrumentation):
* inspector/InspectorClient.cpp:
* inspector/InspectorClient.h:
* inspector/InspectorConsoleAgent.cpp:
(WebCore::InspectorConsoleAgent::InspectorConsoleAgent):
(WebCore::InspectorConsoleAgent::didCreateFrontendAndBackend):
(WebCore::InspectableHeapObject::get):
* inspector/InspectorConsoleAgent.h:
* inspector/InspectorController.cpp:
* inspector/InspectorController.h:
* inspector/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::InspectorDOMAgent):
(WebCore::InspectorDOMAgent::didCreateFrontendAndBackend):
(WebCore::InspectorDOMAgent::getDocument):
(WebCore::InspectorDOMAgent::pushChildNodesToFrontend):
(WebCore::InspectorDOMAgent::querySelectorAll):
(WebCore::InspectorDOMAgent::pushNodePathToFrontend):
(WebCore::InspectorDOMAgent::getEventListenersForNode):
(WebCore::InspectorDOMAgent::getSearchResults):
(WebCore::InspectorDOMAgent::resolveNode):
(WebCore::InspectorDOMAgent::getAttributes):
(WebCore::InspectorDOMAgent::buildObjectForNode):
(WebCore::InspectorDOMAgent::buildArrayForElementAttributes):
(WebCore::InspectorDOMAgent::buildArrayForContainerChildren):
(WebCore::InspectorDOMAgent::buildObjectForEventListener):
(WebCore::InspectorDOMAgent::didCommitLoad):
(WebCore::InspectorDOMAgent::didInsertDOMNode):
(WebCore::InspectorDOMAgent::styleAttributeInvalidated):
* inspector/InspectorDOMAgent.h:
* inspector/InspectorDOMDebuggerAgent.cpp:
(WebCore::InspectorDOMDebuggerAgent::InspectorDOMDebuggerAgent):
(WebCore::InspectorDOMDebuggerAgent::didCreateFrontendAndBackend):
(WebCore::InspectorDOMDebuggerAgent::descriptionForDOMEvent):
* inspector/InspectorDOMDebuggerAgent.h:
* inspector/InspectorDOMStorageAgent.cpp:
(WebCore::InspectorDOMStorageAgent::InspectorDOMStorageAgent):
(WebCore::InspectorDOMStorageAgent::didCreateFrontendAndBackend):
(WebCore::InspectorDOMStorageAgent::getDOMStorageItems):
(WebCore::InspectorDOMStorageAgent::storageId):
(WebCore::InspectorDOMStorageAgent::didDispatchDOMStorageEvent):
* inspector/InspectorDOMStorageAgent.h:
* inspector/InspectorDatabaseAgent.cpp:
(WebCore::InspectorDatabaseAgent::InspectorDatabaseAgent):
(WebCore::InspectorDatabaseAgent::didCreateFrontendAndBackend):
(WebCore::InspectorDatabaseAgent::getDatabaseTableNames):
* inspector/InspectorDatabaseAgent.h:
* inspector/InspectorDatabaseResource.cpp:
(WebCore::InspectorDatabaseResource::bind):
* inspector/InspectorDebuggerAgent.cpp:
(WebCore::InspectorDebuggerAgent::InspectorDebuggerAgent):
(WebCore::InspectorDebuggerAgent::didCreateFrontendAndBackend):
(WebCore::breakpointActionTypeForString):
(WebCore::InspectorDebuggerAgent::setBreakpointByUrl):
(WebCore::InspectorDebuggerAgent::setBreakpoint):
(WebCore::InspectorDebuggerAgent::resolveBreakpoint):
(WebCore::scriptToInspectorObject):
(WebCore::InspectorDebuggerAgent::searchInContent):
(WebCore::InspectorDebuggerAgent::setScriptSource):
(WebCore::InspectorDebuggerAgent::getFunctionDetails):
(WebCore::InspectorDebuggerAgent::evaluateOnCallFrame):
(WebCore::InspectorDebuggerAgent::compileScript):
(WebCore::InspectorDebuggerAgent::runScript):
(WebCore::InspectorDebuggerAgent::currentCallFrames):
(WebCore::InspectorDebuggerAgent::didParseSource):
(WebCore::InspectorDebuggerAgent::didPause):
(WebCore::InspectorDebuggerAgent::didContinue):
(WebCore::InspectorDebuggerAgent::clear):
* inspector/InspectorDebuggerAgent.h:
* inspector/InspectorForwarding.h:
* inspector/InspectorFrontendClientLocal.cpp:
(WebCore::InspectorFrontendClientLocal::evaluateAsBoolean):
* inspector/InspectorFrontendHost.cpp:
(WebCore::FrontendMenuProvider::create):
(WebCore::FrontendMenuProvider::disconnect):
(WebCore::FrontendMenuProvider::FrontendMenuProvider):
(WebCore::FrontendMenuProvider::contextMenuItemSelected):
(WebCore::FrontendMenuProvider::contextMenuCleared):
(WebCore::InspectorFrontendHost::showContextMenu):
(WebCore::InspectorFrontendHost::dispatchEventAsContextMenuEvent):
* inspector/InspectorHeapProfilerAgent.cpp:
(WebCore::InspectorHeapProfilerAgent::InspectorHeapProfilerAgent):
(WebCore::InspectorHeapProfilerAgent::didCreateFrontendAndBackend):
(WebCore::InspectorHeapProfilerAgent::createSnapshotHeader):
(WebCore::InspectorHeapProfilerAgent::getProfileHeaders):
(WebCore::InspectorHeapProfilerAgent::getObjectByHeapObjectId):
(WebCore::InspectorHeapProfilerAgent::getHeapObjectId):
* inspector/InspectorHeapProfilerAgent.h:
* inspector/InspectorIndexedDBAgent.cpp:
(WebCore::InspectorIndexedDBAgent::InspectorIndexedDBAgent):
(WebCore::InspectorIndexedDBAgent::didCreateFrontendAndBackend):
* inspector/InspectorIndexedDBAgent.h:
* inspector/InspectorInputAgent.cpp:
(WebCore::InspectorInputAgent::InspectorInputAgent):
(WebCore::InspectorInputAgent::didCreateFrontendAndBackend):
* inspector/InspectorInputAgent.h:
* inspector/InspectorInstrumentation.cpp:
* inspector/InspectorInstrumentation.h:
* inspector/InspectorLayerTreeAgent.cpp:
(WebCore::InspectorLayerTreeAgent::InspectorLayerTreeAgent):
(WebCore::InspectorLayerTreeAgent::didCreateFrontendAndBackend):
(WebCore::InspectorLayerTreeAgent::layersForNode):
(WebCore::InspectorLayerTreeAgent::gatherLayersUsingRenderObjectHierarchy):
(WebCore::InspectorLayerTreeAgent::gatherLayersUsingRenderLayerHierarchy):
(WebCore::InspectorLayerTreeAgent::buildObjectForLayer):
(WebCore::InspectorLayerTreeAgent::buildObjectForIntRect):
(WebCore::InspectorLayerTreeAgent::reasonsForCompositingLayer):
* inspector/InspectorLayerTreeAgent.h:
* inspector/InspectorMemoryAgent.cpp:
(WebCore::InspectorMemoryAgent::didCreateFrontendAndBackend):
(WebCore::InspectorMemoryAgent::InspectorMemoryAgent):
* inspector/InspectorMemoryAgent.h:
* inspector/InspectorOverlay.cpp:
(WebCore::buildObjectForShapeOutside):
* inspector/InspectorOverlay.h:
* inspector/InspectorOverlayPage.js:
(_drawShapeHighlight):
* inspector/InspectorPageAgent.cpp:
(WebCore::InspectorPageAgent::resourceTypeJson):
(WebCore::InspectorPageAgent::cachedResourceTypeJson):
(WebCore::InspectorPageAgent::InspectorPageAgent):
(WebCore::InspectorPageAgent::didCreateFrontendAndBackend):
(WebCore::buildObjectForCookie):
(WebCore::buildArrayForCookies):
(WebCore::InspectorPageAgent::getCookies):
(WebCore::InspectorPageAgent::getResourceTree):
(WebCore::InspectorPageAgent::searchInResource):
(WebCore::buildObjectForSearchResult):
(WebCore::InspectorPageAgent::searchInResources):
(WebCore::InspectorPageAgent::buildObjectForFrame):
(WebCore::InspectorPageAgent::buildObjectForFrameTree):
* inspector/InspectorPageAgent.h:
* inspector/InspectorProfilerAgent.cpp:
(WebCore::InspectorProfilerAgent::InspectorProfilerAgent):
(WebCore::InspectorProfilerAgent::createProfileHeader):
(WebCore::InspectorProfilerAgent::createSnapshotHeader):
(WebCore::InspectorProfilerAgent::getProfileHeaders):
(WebCore::InspectorProfilerAgent::getCPUProfile):
(WebCore::InspectorProfilerAgent::didCreateFrontendAndBackend):
(WebCore::InspectorProfilerAgent::getObjectByHeapObjectId):
(WebCore::InspectorProfilerAgent::getHeapObjectId):
* inspector/InspectorProfilerAgent.h:
* inspector/InspectorResourceAgent.cpp:
(WebCore::InspectorResourceAgent::didCreateFrontendAndBackend):
(WebCore::buildObjectForTiming):
(WebCore::buildObjectForResourceRequest):
(WebCore::buildObjectForResourceResponse):
(WebCore::buildObjectForCachedResource):
(WebCore::InspectorResourceAgent::willSendRequest):
(WebCore::InspectorResourceAgent::didReceiveResponse):
(WebCore::InspectorResourceAgent::didLoadResourceFromMemoryCache):
(WebCore::InspectorResourceAgent::buildInitiatorObject):
(WebCore::InspectorResourceAgent::willSendWebSocketHandshakeRequest):
(WebCore::InspectorResourceAgent::didReceiveWebSocketHandshakeResponse):
(WebCore::InspectorResourceAgent::didReceiveWebSocketFrame):
(WebCore::InspectorResourceAgent::didSendWebSocketFrame):
(WebCore::InspectorResourceAgent::InspectorResourceAgent):
* inspector/InspectorResourceAgent.h:
* inspector/InspectorRuntimeAgent.cpp:
(WebCore::InspectorRuntimeAgent::InspectorRuntimeAgent):
(WebCore::buildErrorRangeObject):
(WebCore::InspectorRuntimeAgent::parse):
(WebCore::InspectorRuntimeAgent::evaluate):
(WebCore::InspectorRuntimeAgent::callFunctionOn):
(WebCore::InspectorRuntimeAgent::getProperties):
* inspector/InspectorRuntimeAgent.h:
* inspector/InspectorStyleSheet.cpp:
(WebCore::buildSourceRangeObject):
(WebCore::buildMediaObject):
(WebCore::fillMediaListChain):
(WebCore::InspectorStyle::buildObjectForStyle):
(WebCore::InspectorStyle::buildArrayForComputedStyle):
(WebCore::InspectorStyle::styleWithProperties):
(WebCore::InspectorStyleSheet::create):
(WebCore::InspectorStyleSheet::InspectorStyleSheet):
(WebCore::InspectorStyleSheet::buildObjectForStyleSheet):
(WebCore::InspectorStyleSheet::buildObjectForStyleSheetInfo):
(WebCore::selectorsFromSource):
(WebCore::InspectorStyleSheet::buildObjectForSelectorList):
(WebCore::InspectorStyleSheet::buildObjectForRule):
(WebCore::InspectorStyleSheet::buildObjectForStyle):
(WebCore::InspectorStyleSheet::resourceStyleSheetText):
(WebCore::InspectorStyleSheet::buildArrayForRuleList):
(WebCore::InspectorStyleSheetForInlineStyle::create):
(WebCore::InspectorStyleSheetForInlineStyle::InspectorStyleSheetForInlineStyle):
* inspector/InspectorStyleSheet.h:
(WebCore::InspectorCSSId::InspectorCSSId):
(WebCore::InspectorStyleSheet::canBind):
* inspector/InspectorStyleTextEditor.cpp:
* inspector/InspectorTimelineAgent.cpp:
(WebCore::InspectorTimelineAgent::didCreateFrontendAndBackend):
(WebCore::toProtocol):
(WebCore::InspectorTimelineAgent::innerAddRecordToTimeline):
(WebCore::InspectorTimelineAgent::setDOMCounters):
(WebCore::InspectorTimelineAgent::InspectorTimelineAgent):
(WebCore::InspectorTimelineAgent::sendEvent):
* inspector/InspectorTimelineAgent.h:
(WebCore::InspectorTimelineAgent::TimelineRecordEntry::TimelineRecordEntry):
* inspector/InspectorValues.cpp:
* inspector/InspectorValues.h:
* inspector/InspectorWebAgentBase.h: Added.
(WebCore::InspectorAgentBase::InspectorAgentBase):
* inspector/InspectorWorkerAgent.cpp:
(WebCore::InspectorWorkerAgent::InspectorWorkerAgent):
(WebCore::InspectorWorkerAgent::didCreateFrontendAndBackend):
* inspector/InspectorWorkerAgent.h:
* inspector/InstrumentingAgents.cpp:
* inspector/NetworkResourcesData.cpp:
* inspector/PageConsoleAgent.cpp:
(WebCore::InspectableNode::get):
* inspector/PageDebuggerAgent.cpp:
* inspector/PageDebuggerAgent.h:
* inspector/PageRuntimeAgent.cpp:
(WebCore::PageRuntimeAgent::didCreateFrontendAndBackend):
* inspector/PageRuntimeAgent.h:
* inspector/ScriptArguments.cpp:
(WebCore::ScriptArguments::create):
(WebCore::ScriptArguments::ScriptArguments):
(WebCore::ScriptArguments::argumentAt):
(WebCore::ScriptArguments::getFirstArgumentAsString):
* inspector/ScriptArguments.h:
* inspector/ScriptCallFrame.cpp:
(WebCore::ScriptCallFrame::buildInspectorObject):
* inspector/ScriptCallFrame.h:
* inspector/ScriptCallStack.cpp:
(WebCore::ScriptCallStack::buildInspectorArray):
* inspector/ScriptCallStack.h:
* inspector/ScriptDebugListener.h:
* inspector/TimelineRecordFactory.cpp:
* inspector/TimelineRecordFactory.h:
(WebCore::TimelineRecordFactory::createWebSocketCreateData):
(WebCore::TimelineRecordFactory::createGenericWebSocketData):
* inspector/WorkerConsoleAgent.cpp:
* inspector/WorkerDebuggerAgent.cpp:
* inspector/WorkerInspectorController.cpp:
* inspector/WorkerInspectorController.h:
* inspector/WorkerRuntimeAgent.cpp:
(WebCore::WorkerRuntimeAgent::didCreateFrontendAndBackend):
* inspector/WorkerRuntimeAgent.h:
* inspector/protocol/Runtime.json:
* loader/archive/cf/LegacyWebArchive.cpp:
(WebCore::LegacyWebArchive::create):
(WebCore::LegacyWebArchive::createFromSelection):
* loader/cache/CachedImage.h:
* loader/cache/CachedResource.h:
(WebCore::CachedResource::decodedDataIsPurgeable):
* loader/cache/MemoryCache.cpp:
(WebCore::MemoryCache::pruneLiveResourcesToSize):
* page/Console.cpp:
(WebCore::internalAddMessage):
* page/ContentSecurityPolicy.cpp:
* page/Frame.cpp:
* page/FrameView.cpp:
(WebCore::paginationModeForRenderStyle):
(WebCore::FrameView::FrameView):
(WebCore::FrameView::applyPaginationToViewport):
* page/FrameView.h:
* page/Page.cpp:
(WebCore::Page::jettisonStyleResolversInAllDocuments):
* page/Page.h:
* page/PageConsole.cpp:
(WebCore::PageConsole::printSourceURLAndPosition):
(WebCore::PageConsole::addMessage):
* page/PageConsole.h:
* page/Settings.in:
* page/animation/CSSPropertyAnimation.cpp:
(WebCore::blendFilter):
(WebCore::crossfadeBlend):
(WebCore::blendFunc):
* platform/CrossThreadCopier.cpp:
(WebCore::::copy):
* platform/CrossThreadCopier.h:
* platform/MediaSample.h:
(WebCore::MediaSample::isSync):
(WebCore::MediaSample::isNonDisplaying):
* platform/SharedBuffer.cpp:
(WebCore::SharedBuffer::createPurgeableBuffer):
* platform/SharedBuffer.h:
* platform/glib: Added.
* platform/glib/BatteryProviderUPower.cpp: Added.
(powerDeviceAlterationCallback):
(BatteryProviderUPower::BatteryProviderUPower):
(BatteryProviderUPower::startUpdating):
(BatteryProviderUPower::stopUpdating):
(BatteryProviderUPower::updateBatteryStatus):
* platform/glib/BatteryProviderUPower.h: Added.
* platform/glib/BatteryProviderUPowerClient.h: Added.
* platform/graphics/BitmapImage.cpp:
(WebCore::BitmapImage::destroyDecodedDataIfNecessary):
* platform/graphics/BitmapImage.h:
* platform/graphics/Font.cpp:
(WebCore::clearWidthCaches):
* platform/graphics/Font.h:
* platform/graphics/GlyphMetricsMap.h:
* platform/graphics/Image.h:
(WebCore::Image::decodedDataIsPurgeable):
* platform/graphics/MediaPlayer.cpp:
(WebCore::installedMediaEngines):
(WebCore::MediaPlayer::totalVideoFrames):
(WebCore::MediaPlayer::droppedVideoFrames):
(WebCore::MediaPlayer::corruptedVideoFrames):
(WebCore::MediaPlayer::totalFrameDelay):
* platform/graphics/MediaPlayer.h:
* platform/graphics/MediaPlayerPrivate.h:
(WebCore::MediaPlayerPrivateInterface::seekWithTolerance):
(WebCore::MediaPlayerPrivateInterface::totalVideoFrames):
(WebCore::MediaPlayerPrivateInterface::droppedVideoFrames):
(WebCore::MediaPlayerPrivateInterface::corruptedVideoFrames):
(WebCore::MediaPlayerPrivateInterface::totalFrameDelay):
* platform/graphics/avfoundation/objc/AudioTrackPrivateMediaSourceAVFObjC.cpp: Added.
(WebCore::AudioTrackPrivateMediaSourceAVFObjC::AudioTrackPrivateMediaSourceAVFObjC):
(WebCore::AudioTrackPrivateMediaSourceAVFObjC::resetPropertiesFromTrack):
(WebCore::AudioTrackPrivateMediaSourceAVFObjC::setAssetTrack):
(WebCore::AudioTrackPrivateMediaSourceAVFObjC::assetTrack):
(WebCore::AudioTrackPrivateMediaSourceAVFObjC::enabled):
(WebCore::AudioTrackPrivateMediaSourceAVFObjC::setEnabled):
* platform/graphics/avfoundation/objc/AudioTrackPrivateMediaSourceAVFObjC.h: Added.
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h: Added.
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setLoadingProgresssed):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setHasAvailableVideoFrame):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm: Added.
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::MediaPlayerPrivateMediaSourceAVFObjC):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::~MediaPlayerPrivateMediaSourceAVFObjC):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::registerMediaEngine):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::create):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::isAvailable):
(WebCore::mimeTypeCache):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::getSupportedTypes):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::supportsType):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::load):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::cancelLoad):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::prepareToPlay):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::platformMedia):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::platformLayer):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::play):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::playInternal):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::pause):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::pauseInternal):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::paused):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::supportsScanning):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::naturalSize):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::hasVideo):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::hasAudio):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setVisible):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::durationDouble):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::currentTimeDouble):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::startTimeDouble):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::initialTime):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::seekWithTolerance):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::seekInternal):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::seeking):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setRateDouble):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::networkState):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::readyState):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::seekable):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::maxTimeSeekableDouble):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::minTimeSeekable):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::buffered):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::didLoadingProgress):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setSize):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::paint):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::paintCurrentFrameInContext):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::hasAvailableVideoFrame):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::supportsAcceleratedRendering):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::acceleratedRenderingStateChanged):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::movieLoadType):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::prepareForRendering):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::engineDescription):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::languageOfPrimaryAudioTrack):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::extraMemoryCost):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::totalVideoFrames):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::droppedVideoFrames):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::corruptedVideoFrames):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::totalFrameDelay):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::ensureLayer):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::destroyLayer):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::durationChanged):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setReadyState):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setNetworkState):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::addDisplayLayer):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::removeDisplayLayer):
* platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.h: Added.
* platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.mm: Added.
(WebCore::MediaSourcePrivateAVFObjC::create):
(WebCore::MediaSourcePrivateAVFObjC::MediaSourcePrivateAVFObjC):
(WebCore::MediaSourcePrivateAVFObjC::~MediaSourcePrivateAVFObjC):
(WebCore::MediaSourcePrivateAVFObjC::addSourceBuffer):
(WebCore::MediaSourcePrivateAVFObjC::removeSourceBuffer):
(WebCore::MediaSourcePrivateAVFObjC::duration):
(WebCore::MediaSourcePrivateAVFObjC::setDuration):
(WebCore::MediaSourcePrivateAVFObjC::markEndOfStream):
(WebCore::MediaSourcePrivateAVFObjC::unmarkEndOfStream):
(WebCore::MediaSourcePrivateAVFObjC::readyState):
(WebCore::MediaSourcePrivateAVFObjC::setReadyState):
(WebCore::MediaSourcePrivateAVFObjC::sourceBufferPrivateDidChangeActiveState):
(WebCore::MediaSourcePrivateAVFObjCHasAudio):
(WebCore::MediaSourcePrivateAVFObjC::hasAudio):
(WebCore::MediaSourcePrivateAVFObjCHasVideo):
(WebCore::MediaSourcePrivateAVFObjC::hasVideo):
(WebCore::MediaSourcePrivateAVFObjC::seekToTime):
* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h: Added.
* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm: Added.
(-[WebAVStreamDataParserListener initWithParser:parent:WebCore::]):
(-[WebAVStreamDataParserListener dealloc]):
(-[WebAVStreamDataParserListener streamDataParser:didParseStreamDataAsAsset:]):
(-[WebAVStreamDataParserListener streamDataParser:didFailToParseStreamDataWithError:]):
(-[WebAVStreamDataParserListener streamDataParser:didProvideMediaData:forTrackID:mediaType:flags:]):
(-[WebAVStreamDataParserListener streamDataParser:didReachEndOfTrackWithTrackID:mediaType:]):
(WebCore::MediaSampleAVFObjC::platformSample):
(WebCore::CMSampleBufferIsRandomAccess):
(WebCore::MediaSampleAVFObjC::flags):
(WebCore::SourceBufferPrivateAVFObjC::create):
(WebCore::SourceBufferPrivateAVFObjC::SourceBufferPrivateAVFObjC):
(WebCore::SourceBufferPrivateAVFObjC::~SourceBufferPrivateAVFObjC):
(WebCore::SourceBufferPrivateAVFObjC::didParseStreamDataAsAsset):
(WebCore::SourceBufferPrivateAVFObjC::didFailToParseStreamDataWithError):
(WebCore::callProcessCodedFrameForEachSample):
(WebCore::SourceBufferPrivateAVFObjC::didProvideMediaDataForTrackID):
(WebCore::SourceBufferPrivateAVFObjC::processCodedFrame):
(WebCore::SourceBufferPrivateAVFObjC::didReachEndOfTrackWithTrackID):
(WebCore::SourceBufferPrivateAVFObjC::setClient):
(WebCore::SourceBufferPrivateAVFObjC::append):
(WebCore::SourceBufferPrivateAVFObjC::abort):
(WebCore::SourceBufferPrivateAVFObjC::removedFromMediaSource):
(WebCore::SourceBufferPrivateAVFObjC::readyState):
(WebCore::SourceBufferPrivateAVFObjC::setReadyState):
(WebCore::SourceBufferPrivateAVFObjC::evictCodedFrames):
(WebCore::SourceBufferPrivateAVFObjC::isFull):
(WebCore::SourceBufferPrivateAVFObjC::hasVideo):
(WebCore::SourceBufferPrivateAVFObjC::hasAudio):
(WebCore::SourceBufferPrivateAVFObjC::trackDidChangeEnabled):
(WebCore::createNonDisplayingCopy):
(WebCore::SourceBufferPrivateAVFObjC::flushAndEnqueueNonDisplayingSamples):
(WebCore::SourceBufferPrivateAVFObjC::enqueueSample):
(WebCore::SourceBufferPrivateAVFObjC::isReadyForMoreSamples):
(WebCore::SourceBufferPrivateAVFObjC::setActive):
(WebCore::SourceBufferPrivateAVFObjC::fastSeekTimeForMediaTime):
(WebCore::SourceBufferPrivateAVFObjC::seekToTime):
* platform/graphics/avfoundation/objc/VideoTrackPrivateMediaSourceAVFObjC.h: Added.
* platform/graphics/gstreamer/TextCombinerGStreamer.cpp:
(webkitTextCombinerPadGetProperty):
(webkitTextCombinerPadEvent):
* platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp:
(WebCore::TrackPrivateBaseGStreamer::TrackPrivateBaseGStreamer):
(WebCore::TrackPrivateBaseGStreamer::disconnect):
(WebCore::TrackPrivateBaseGStreamer::tagsChanged):
(WebCore::TrackPrivateBaseGStreamer::notifyTrackOfTagsChanged):
* platform/graphics/gstreamer/TrackPrivateBaseGStreamer.h:
* platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
(ResourceHandleStreamingClient::didReceiveData):
(ResourceHandleStreamingClient::didReceiveBuffer):
* platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
(WebCore::GraphicsContext3D::texSubImage2D):
* platform/gtk/UserAgentGtk.cpp:
(WebCore::cpuDescriptionForUAString):
(WebCore::platformVersionForUAString):
(WebCore::standardUserAgent):
* platform/gtk/WidgetBackingStoreGtkX11.cpp:
(WebCore::WidgetBackingStoreGtkX11::~WidgetBackingStoreGtkX11):
* platform/mac/MemoryPressureHandlerMac.mm:
(WebCore::MemoryPressureHandler::releaseMemory):
* platform/mac/PlatformClockCM.h:
* platform/mac/ScrollbarThemeMac.mm:
(WebCore::ScrollbarThemeMac::scrollbarThickness):
(WebCore::ScrollbarThemeMac::updateScrollbarOverlayStyle):
(WebCore::ScrollbarThemeMac::minimumThumbLength):
(WebCore::ScrollbarThemeMac::updateEnabledState):
(WebCore::ScrollbarThemeMac::setPaintCharacteristicsForScrollbar):
(WebCore::scrollbarPainterPaint):
* platform/mac/SoftLinking.h:
* platform/mediastream/RTCPeerConnectionHandler.cpp:
(WebCore::RTCPeerConnectionHandler::incompatibleConstraintsErrorName):
(WebCore::RTCPeerConnectionHandler::invalidSessionDescriptionErrorName):
(WebCore::RTCPeerConnectionHandler::incompatibleSessionDescriptionErrorName):
(WebCore::RTCPeerConnectionHandler::internalErrorName):
* platform/mediastream/RTCPeerConnectionHandler.h:
* platform/mock/RTCNotifiersMock.cpp:
(WebCore::SessionRequestNotifier::SessionRequestNotifier):
(WebCore::SessionRequestNotifier::fire):
(WebCore::VoidRequestNotifier::VoidRequestNotifier):
(WebCore::VoidRequestNotifier::fire):
* platform/mock/RTCNotifiersMock.h:
* platform/mock/RTCPeerConnectionHandlerMock.cpp:
(WebCore::RTCPeerConnectionHandlerMock::createOffer):
(WebCore::RTCPeerConnectionHandlerMock::createAnswer):
* platform/mock/mediasource/MockBox.h:
* platform/mock/mediasource/MockMediaPlayerMediaSource.cpp:
(WebCore::MockMediaPlayerMediaSource::setNetworkState):
(WebCore::MockMediaPlayerMediaSource::totalVideoFrames):
(WebCore::MockMediaPlayerMediaSource::droppedVideoFrames):
(WebCore::MockMediaPlayerMediaSource::corruptedVideoFrames):
(WebCore::MockMediaPlayerMediaSource::totalFrameDelay):
* platform/mock/mediasource/MockMediaPlayerMediaSource.h:
* platform/mock/mediasource/MockMediaSourcePrivate.cpp:
(WebCore::MockMediaSourcePrivate::MockMediaSourcePrivate):
(WebCore::MockMediaSourcePrivate::~MockMediaSourcePrivate):
(WebCore::MockMediaSourcePrivate::markEndOfStream):
* platform/mock/mediasource/MockMediaSourcePrivate.h:
* platform/mock/mediasource/MockSourceBufferPrivate.cpp:
(WebCore::MockSourceBufferPrivate::MockSourceBufferPrivate):
(WebCore::MockSourceBufferPrivate::removedFromMediaSource):
(WebCore::MockSourceBufferPrivate::readyState):
(WebCore::MockSourceBufferPrivate::setReadyState):
(WebCore::MockSourceBufferPrivate::setActive):
(WebCore::MockSourceBufferPrivate::enqueueSample):
* platform/mock/mediasource/MockSourceBufferPrivate.h:
(WebCore::MockSourceBufferPrivate::clearMediaSource):
* platform/network/ResourceHandle.cpp:
* platform/network/ResourceHandle.h:
* platform/network/ResourceHandleClient.cpp:
(WebCore::ResourceHandleClient::willCacheResponseAsync):
* platform/network/ResourceHandleClient.h:
* platform/network/ResourceHandleInternal.h:
(WebCore::ResourceHandleInternal::ResourceHandleInternal):
* platform/network/cf/ResourceHandleCFNet.cpp:
(WebCore::ResourceHandleInternal::~ResourceHandleInternal):
(WebCore::ResourceHandle::createCFURLConnection):
(WebCore::ResourceHandle::start):
(WebCore::ResourceHandle::shouldUseCredentialStorage):
(WebCore::ResourceHandle::canAuthenticateAgainstProtectionSpace):
(WebCore::ResourceHandle::continueWillSendRequest):
(WebCore::ResourceHandle::continueDidReceiveResponse):
(WebCore::ResourceHandle::continueShouldUseCredentialStorage):
(WebCore::ResourceHandle::continueCanAuthenticateAgainstProtectionSpace):
(WebCore::ResourceHandle::continueWillCacheResponse):
* platform/network/cf/ResourceHandleCFURLConnectionDelegate.cpp: Added.
(WebCore::ResourceHandleCFURLConnectionDelegate::ResourceHandleCFURLConnectionDelegate):
(WebCore::ResourceHandleCFURLConnectionDelegate::~ResourceHandleCFURLConnectionDelegate):
(WebCore::ResourceHandleCFURLConnectionDelegate::releaseHandle):
(WebCore::ResourceHandleCFURLConnectionDelegate::willSendRequestCallback):
(WebCore::ResourceHandleCFURLConnectionDelegate::didReceiveResponseCallback):
(WebCore::ResourceHandleCFURLConnectionDelegate::didReceiveDataCallback):
(WebCore::ResourceHandleCFURLConnectionDelegate::didFinishLoadingCallback):
(WebCore::ResourceHandleCFURLConnectionDelegate::didFailCallback):
(WebCore::ResourceHandleCFURLConnectionDelegate::willCacheResponseCallback):
(WebCore::ResourceHandleCFURLConnectionDelegate::didReceiveChallengeCallback):
(WebCore::ResourceHandleCFURLConnectionDelegate::didSendBodyDataCallback):
(WebCore::ResourceHandleCFURLConnectionDelegate::shouldUseCredentialStorageCallback):
(WebCore::ResourceHandleCFURLConnectionDelegate::canRespondToProtectionSpaceCallback):
(WebCore::ResourceHandleCFURLConnectionDelegate::didReceiveDataArrayCallback):
(WebCore::ResourceHandleCFURLConnectionDelegate::synthesizeRedirectResponseIfNecessary):
(WebCore::ResourceHandleCFURLConnectionDelegate::createResourceRequest):
(WebCore::ResourceHandleCFURLConnectionDelegate::makeConnectionClient):
* platform/network/cf/ResourceHandleCFURLConnectionDelegate.h: Added.
* platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp: Added.
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::ResourceHandleCFURLConnectionDelegateWithOperationQueue):
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::~ResourceHandleCFURLConnectionDelegateWithOperationQueue):
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::hasHandle):
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::setupRequest):
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::setupConnectionScheduling):
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::willSendRequest):
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveResponse):
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveData):
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didFinishLoading):
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didFail):
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::willCacheResponse):
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveChallenge):
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didSendBodyData):
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::shouldUseCredentialStorage):
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::canRespondToProtectionSpace):
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveDataArray):
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::continueWillSendRequest):
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::continueDidReceiveResponse):
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::continueShouldUseCredentialStorage):
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::continueWillCacheResponse):
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::continueCanAuthenticateAgainstProtectionSpace):
* platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.h: Added.
* platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.cpp: Added.
(WebCore::SynchronousResourceHandleCFURLConnectionDelegate::SynchronousResourceHandleCFURLConnectionDelegate):
(WebCore::SynchronousResourceHandleCFURLConnectionDelegate::setupRequest):
(WebCore::SynchronousResourceHandleCFURLConnectionDelegate::setupConnectionScheduling):
(WebCore::SynchronousResourceHandleCFURLConnectionDelegate::willSendRequest):
(WebCore::setDefaultMIMEType):
(WebCore::SynchronousResourceHandleCFURLConnectionDelegate::didReceiveResponse):
(WebCore::SynchronousResourceHandleCFURLConnectionDelegate::didReceiveData):
(WebCore::SynchronousResourceHandleCFURLConnectionDelegate::didFinishLoading):
(WebCore::SynchronousResourceHandleCFURLConnectionDelegate::didFail):
(WebCore::SynchronousResourceHandleCFURLConnectionDelegate::willCacheResponse):
(WebCore::SynchronousResourceHandleCFURLConnectionDelegate::didReceiveChallenge):
(WebCore::SynchronousResourceHandleCFURLConnectionDelegate::didSendBodyData):
(WebCore::SynchronousResourceHandleCFURLConnectionDelegate::shouldUseCredentialStorage):
(WebCore::SynchronousResourceHandleCFURLConnectionDelegate::canRespondToProtectionSpace):
(WebCore::SynchronousResourceHandleCFURLConnectionDelegate::didReceiveDataArray):
(WebCore::SynchronousResourceHandleCFURLConnectionDelegate::continueWillSendRequest):
(WebCore::SynchronousResourceHandleCFURLConnectionDelegate::continueDidReceiveResponse):
(WebCore::SynchronousResourceHandleCFURLConnectionDelegate::continueShouldUseCredentialStorage):
(WebCore::SynchronousResourceHandleCFURLConnectionDelegate::continueWillCacheResponse):
(WebCore::SynchronousResourceHandleCFURLConnectionDelegate::continueCanAuthenticateAgainstProtectionSpace):
* platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.h: Added.
* platform/network/curl/CurlCacheEntry.cpp:
(WebCore::CurlCacheEntry::generateBaseFilename):
* platform/network/mac/CertificateInfo.h: Added.
(WebCore::CertificateInfo::setCertificateChain):
(WebCore::CertificateInfo::certificateChain):
* platform/network/mac/CertificateInfoMac.mm: Added.
(WebCore::CertificateInfo::CertificateInfo):
(WebCore::CertificateInfo::dump):
* platform/network/mac/WebCoreResourceHandleAsDelegate.mm:
(-[WebCoreResourceHandleAsDelegate connection:willCacheResponse:]):
* platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:
(-[WebCoreResourceHandleAsOperationQueueDelegate connection:willCacheResponse:]):
* platform/network/soup/CertificateInfo.cpp: Added.
(WebCore::CertificateInfo::CertificateInfo):
(WebCore::CertificateInfo::~CertificateInfo):
* platform/network/soup/CertificateInfo.h: Added.
(WebCore::CertificateInfo::certificate):
(WebCore::CertificateInfo::setCertificate):
(WebCore::CertificateInfo::tlsErrors):
(WebCore::CertificateInfo::setTLSErrors):
* platform/network/soup/GOwnPtrSoup.cpp:
(WTF::SoupBuffer):
* platform/network/soup/GOwnPtrSoup.h:
* platform/network/soup/ResourceHandleSoup.cpp:
(WebCore::WebCoreSynchronousLoader::didReceiveData):
(WebCore::WebCoreSynchronousLoader::didReceiveBuffer):
(WebCore::HostTLSCertificateSet::computeCertificateHash):
(WebCore::ResourceHandle::ensureReadBuffer):
(WebCore::redirectSkipCallback):
(WebCore::cleanupSoupRequestOperation):
(WebCore::ResourceHandle::currentStreamPosition):
(WebCore::nextMultipartResponsePartCallback):
(WebCore::sendRequestCallback):
(WebCore::readCallback):
* platform/soup: Added.
* platform/soup/SharedBufferSoup.cpp: Added.
(WebCore::SharedBuffer::SharedBuffer):
(WebCore::SharedBuffer::wrapSoupBuffer):
(WebCore::SharedBuffer::clearPlatformData):
(WebCore::SharedBuffer::tryReplaceContentsWithPlatformBuffer):
(WebCore::SharedBuffer::maybeTransferPlatformData):
(WebCore::SharedBuffer::hasPlatformData):
(WebCore::SharedBuffer::platformData):
(WebCore::SharedBuffer::platformDataSize):
* platform/text/TextBoundaries.cpp:
(WebCore::findEndWordBoundary):
* platform/text/TextBoundaries.h:
* platform/text/mac/TextBoundaries.mm:
(WebCore::findEndWordBoundary):
* plugins/PluginView.cpp:
(WebCore::PluginView::performRequest):
* rendering/AutoTableLayout.cpp:
(WebCore::AutoTableLayout::recalcColumn):
* rendering/InlineBox.cpp:
(WebCore::InlineBox::previousOnLineExists):
* rendering/InlineBox.h:
(WebCore::InlineBox::InlineBox):
* rendering/InlineElementBox.cpp:
* rendering/InlineFlowBox.cpp:
(WebCore::InlineFlowBox::~InlineFlowBox):
(WebCore::InlineFlowBox::checkConsistency):
* rendering/InlineFlowBox.h:
(WebCore::InlineFlowBox::InlineFlowBox):
(WebCore::InlineFlowBox::setHasBadChildList):
* rendering/InlineIterator.h:
(WebCore::InlineIterator::InlineIterator):
(WebCore::InlineIterator::nextBreakablePosition):
(WebCore::InlineIterator::setNextBreakablePosition):
* rendering/InlineTextBox.cpp:
(WebCore::InlineTextBox::paintCompositionBackground):
(WebCore::InlineTextBox::paintDecoration):
(WebCore::lineStyleForMarkerType):
(WebCore::InlineTextBox::paintDocumentMarkers):
* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::paint):
(WebCore::positionForPointRespectingEditingBoundaries):
* rendering/RenderBlock.h:
* rendering/RenderBlockFlow.cpp:
* rendering/RenderBlockLineLayout.cpp:
(WebCore::constructBidiRunsForSegment):
* rendering/RenderBox.cpp:
(WebCore::RenderBox::borderRadii):
(WebCore::RenderBox::paintBoxDecorations):
(WebCore::RenderBox::computeRectForRepaint):
(WebCore::customContainingBlockWidth):
(WebCore::customContainingBlockHeight):
(WebCore::customContainingBlockLogicalWidth):
(WebCore::customContainingBlockLogicalHeight):
(WebCore::customContainingBlockAvailableLogicalHeight):
(WebCore::RenderBox::availableLogicalHeightUsing):
(WebCore::RenderBox::containingBlockLogicalWidthForPositioned):
(WebCore::RenderBox::containingBlockLogicalHeightForPositioned):
(WebCore::RenderBox::layoutOverflowRectForPropagation):
* rendering/RenderBox.h:
* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::stickyPositionOffset):
* rendering/RenderButton.cpp:
(WebCore::RenderButton::layout):
* rendering/RenderElement.cpp:
(WebCore::RenderElement::styleWillChange):
(WebCore::RenderElement::styleDidChange):
* rendering/RenderEmbeddedObject.cpp:
(WebCore::RenderEmbeddedObject::allowsAcceleratedCompositing):
(WebCore::RenderEmbeddedObject::setPluginUnavailabilityReason):
(WebCore::RenderEmbeddedObject::setPluginUnavailabilityReasonWithDescription):
* rendering/RenderFileUploadControl.cpp:
(WebCore::nodeHeight):
(WebCore::RenderFileUploadControl::maxFilenameWidth):
(WebCore::RenderFileUploadControl::paintObject):
(WebCore::RenderFileUploadControl::fileTextValue):
* rendering/RenderFrameSet.cpp:
(WebCore::RenderFrameSet::positionFrames):
* rendering/RenderIFrame.h:
* rendering/RenderImage.cpp:
(WebCore::RenderImage::collectSelectionRects):
(WebCore::RenderImage::paintAreaElementFocusRing):
* rendering/RenderImage.h:
* rendering/RenderImageResource.cpp:
(WebCore::RenderImageResource::image):
* rendering/RenderImageResource.h:
* rendering/RenderImageResourceStyleImage.h:
* rendering/RenderInline.cpp:
(WebCore::RenderInline::absoluteQuadsForSelection):
* rendering/RenderInline.h:
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::RenderLayer):
(WebCore::RenderLayer::~RenderLayer):
(WebCore::RenderLayer::willBeDestroyed):
(WebCore::RenderLayer::hasAcceleratedTouchScrolling):
(WebCore::RenderLayer::handleTouchEvent):
(WebCore::RenderLayer::registerAsTouchEventListenerForScrolling):
(WebCore::RenderLayer::unregisterAsTouchEventListenerForScrolling):
(WebCore::RenderLayer::updateNeedsCompositedScrolling):
(WebCore::RenderLayer::scrollTo):
(WebCore::RenderLayer::scrollRectToVisible):
(WebCore::RenderLayer::visibleContentRect):
(WebCore::RenderLayer::didStartScroll):
(WebCore::RenderLayer::didEndScroll):
(WebCore::RenderLayer::didUpdateScroll):
(WebCore::RenderLayer::invalidateScrollbarRect):
(WebCore::RenderLayer::invalidateScrollCornerRect):
(WebCore::RenderLayer::verticalScrollbarWidth):
(WebCore::RenderLayer::horizontalScrollbarHeight):
(WebCore::RenderLayer::updateScrollInfoAfterLayout):
(WebCore::RenderLayer::paintOverflowControls):
(WebCore::RenderLayer::calculateClipRects):
* rendering/RenderLayer.h:
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::createPrimaryGraphicsLayer):
(WebCore::RenderLayerBacking::layerWillBeDestroyed):
(WebCore::layerOrAncestorIsTransformedOrScrolling):
(WebCore::layerOrAncestorIsTransformedOrUsingCompositedScrolling):
(WebCore::RenderLayerBacking::shouldClipCompositedBounds):
(WebCore::RenderLayerBacking::updateGraphicsLayerConfiguration):
(WebCore::RenderLayerBacking::updateGraphicsLayerGeometry):
(WebCore::RenderLayerBacking::registerScrollingLayers):
(WebCore::RenderLayerBacking::updateScrollingLayers):
(WebCore::RenderLayerBacking::containsPaintedContent):
(WebCore::RenderLayerBacking::parentForSublayers):
(WebCore::RenderLayerBacking::paintsIntoWindow):
(WebCore::RenderLayerBacking::setContentsNeedDisplayInRect):
(WebCore::RenderLayerBacking::paintIntoLayer):
* rendering/RenderLayerBacking.h:
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::scheduleLayerFlush):
(WebCore::RenderLayerCompositor::chromeClient):
(WebCore::RenderLayerCompositor::flushPendingLayerChanges):
(WebCore::scrollbarHasDisplayNone):
(WebCore::updateScrollingLayerWithClient):
(WebCore::RenderLayerCompositor::updateCustomLayersAfterFlush):
(WebCore::RenderLayerCompositor::didFlushChangesForLayer):
(WebCore::RenderLayerCompositor::didChangeVisibleRect):
(WebCore::RenderLayerCompositor::addToOverlapMap):
(WebCore::RenderLayerCompositor::computeCompositingRequirements):
(WebCore::RenderLayerCompositor::setIsInWindow):
(WebCore::RenderLayerCompositor::allowsIndependentlyCompositedFrames):
(WebCore::RenderLayerCompositor::requiresCompositingLayer):
(WebCore::RenderLayerCompositor::requiresOwnBackingStore):
(WebCore::RenderLayerCompositor::reasonsForCompositing):
(WebCore::RenderLayerCompositor::requiresCompositingForAnimation):
(WebCore::RenderLayerCompositor::requiresCompositingForScrolling):
(WebCore::isStickyInAcceleratedScrollingLayerOrViewport):
(WebCore::isViewportConstrainedFixedOrStickyLayer):
(WebCore::RenderLayerCompositor::requiresCompositingForPosition):
(WebCore::RenderLayerCompositor::contentsScaleMultiplierForNewTiles):
(WebCore::RenderLayerCompositor::ensureRootLayer):
(WebCore::RenderLayerCompositor::computeFixedViewportConstraints):
(WebCore::RenderLayerCompositor::computeStickyViewportConstraints):
(WebCore::RenderLayerCompositor::registerOrUpdateViewportConstrainedLayer):
(WebCore::RenderLayerCompositor::unregisterViewportConstrainedLayer):
(WebCore::RenderLayerCompositor::registerAllViewportConstrainedLayers):
(WebCore::RenderLayerCompositor::unregisterAllViewportConstrainedLayers):
(WebCore::RenderLayerCompositor::registerAllScrollingLayers):
(WebCore::RenderLayerCompositor::unregisterAllScrollingLayers):
(WebCore::RenderLayerCompositor::scrollingLayerAddedOrUpdated):
(WebCore::RenderLayerCompositor::scrollingLayerRemoved):
(WebCore::RenderLayerCompositor::startInitialLayerFlushTimerIfNeeded):
* rendering/RenderLayerCompositor.h:
(WebCore::RenderLayerCompositor::layerForContentShadow):
* rendering/RenderLayerFilterInfo.h:
* rendering/RenderMenuList.cpp:
(WebCore::selectedOptionCount):
(WebCore::RenderMenuList::RenderMenuList):
(WebCore::RenderMenuList::~RenderMenuList):
(WebCore::RenderMenuList::adjustInnerStyle):
(RenderMenuList::updateFromElement):
(RenderMenuList::setTextFromOption):
(RenderMenuList::showPopup):
(RenderMenuList::hidePopup):
(RenderMenuList::popupDidHide):
* rendering/RenderMenuList.h:
* rendering/RenderObject.cpp:
(WebCore::RenderObject::columnNumberForOffset):
(WebCore::RenderObject::collectSelectionRects):
(WebCore::RenderObject::destroy):
(WebCore::RenderObject::innerLineHeight):
(WebCore::RenderObject::willRenderImage):
* rendering/RenderObject.h:
(WebCore::RenderObject::absoluteQuadsForSelection):
* rendering/RenderQuote.cpp:
(WebCore::RenderQuote::styleDidChange):
(WebCore::RenderQuote::updateDepth):
* rendering/RenderScrollbar.h:
* rendering/RenderSearchField.cpp:
(WebCore::RenderSearchField::itemText):
* rendering/RenderText.cpp:
(WebCore::originalTextMap):
(WebCore::RenderText::RenderText):
(WebCore::RenderText::~RenderText):
(WebCore::RenderText::styleDidChange):
(WebCore::RenderText::originalText):
(WebCore::RenderText::collectSelectionRects):
(WebCore::RenderText::setTextInternal):
(WebCore::RenderText::setText):
* rendering/RenderText.h:
* rendering/RenderTextControl.cpp:
(WebCore::RenderTextControl::adjustInnerTextStyle):
(WebCore::RenderTextControl::canScroll):
(WebCore::RenderTextControl::innerLineHeight):
* rendering/RenderTextControl.h:
* rendering/RenderTextControlMultiLine.cpp:
(WebCore::RenderTextControlMultiLine::getAvgCharWidth):
(WebCore::RenderTextControlMultiLine::createInnerTextStyle):
* rendering/RenderTextControlSingleLine.cpp:
(WebCore::RenderTextControlSingleLine::layout):
(WebCore::RenderTextControlSingleLine::getAvgCharWidth):
(WebCore::RenderTextControlSingleLine::preferredContentLogicalWidth):
* rendering/RenderTextFragment.cpp:
* rendering/RenderTextFragment.h:
* rendering/RenderTextLineBoxes.cpp:
(WebCore::lineDirectionPointFitsInBox):
(WebCore::RenderTextLineBoxes::positionForPoint):
* rendering/RenderTheme.cpp:
(WebCore::RenderTheme::adjustStyle):
(WebCore::RenderTheme::paintBorderOnly):
(WebCore::RenderTheme::paintDecorations):
* rendering/RenderTheme.h:
(WebCore::RenderTheme::paintCheckboxDecorations):
(WebCore::RenderTheme::paintRadioDecorations):
(WebCore::RenderTheme::paintButtonDecorations):
(WebCore::RenderTheme::paintTextFieldDecorations):
(WebCore::RenderTheme::paintTextAreaDecorations):
(WebCore::RenderTheme::paintMenuListDecorations):
(WebCore::RenderTheme::paintPushButtonDecorations):
(WebCore::RenderTheme::paintSquareButtonDecorations):
(WebCore::RenderTheme::paintFileUploadIconDecorations):
(WebCore::RenderTheme::paintSliderThumbDecorations):
(WebCore::RenderTheme::paintSearchFieldDecorations):
* rendering/RenderThemeIOS.h: Added.
(WebCore::RenderThemeIOS::~RenderThemeIOS):
* rendering/RenderThemeIOS.mm: Added.
(WebCore::IOSGradient::IOSGradient):
(WebCore::interpolateLinearGradient):
(WebCore::interpolateExponentialGradient):
(WebCore::getSharedFunctionRef):
(WebCore::drawAxialGradient):
(WebCore::drawRadialGradient):
(WebCore::getInsetGradient):
(WebCore::getShineGradient):
(WebCore::getShadeGradient):
(WebCore::getConvexGradient):
(WebCore::getConcaveGradient):
(WebCore::getSliderTrackGradient):
(WebCore::getReadonlySliderTrackGradient):
(WebCore::getSliderThumbOpaquePressedGradient):
(WebCore::gradientWithName):
(WebCore::contentSizeCategoryDidChange):
(WebCore::RenderThemeIOS::RenderThemeIOS):
(WebCore::RenderTheme::themeForPage):
(WebCore::RenderThemeIOS::create):
(WebCore::RenderThemeIOS::contentSizeCategory):
(WebCore::RenderThemeIOS::shadowColor):
(WebCore::RenderThemeIOS::addRoundedBorderClip):
(WebCore::RenderThemeIOS::adjustCheckboxStyle):
(WebCore::shortened):
(WebCore::RenderThemeIOS::paintCheckboxDecorations):
(WebCore::RenderThemeIOS::baselinePosition):
(WebCore::RenderThemeIOS::isControlStyled):
(WebCore::RenderThemeIOS::adjustRadioStyle):
(WebCore::RenderThemeIOS::paintRadioDecorations):
(WebCore::RenderThemeIOS::paintTextFieldDecorations):
(WebCore::RenderThemeIOS::paintTextAreaDecorations):
(WebCore::RenderThemeIOS::popupInternalPaddingRight):
(WebCore::RenderThemeIOS::adjustRoundBorderRadius):
(WebCore::applyCommonButtonPaddingToStyle):
(WebCore::adjustSelectListButtonStyle):
(WebCore::adjustInputElementButtonStyle):
(WebCore::RenderThemeIOS::adjustMenuListButtonStyle):
(WebCore::RenderThemeIOS::paintMenuListButtonDecorations):
(WebCore::RenderThemeIOS::adjustSliderTrackStyle):
(WebCore::RenderThemeIOS::paintSliderTrack):
(WebCore::RenderThemeIOS::adjustSliderThumbSize):
(WebCore::RenderThemeIOS::paintSliderThumbDecorations):
(WebCore::RenderThemeIOS::animationRepeatIntervalForProgressBar):
(WebCore::RenderThemeIOS::animationDurationForProgressBar):
(WebCore::RenderThemeIOS::paintProgressBar):
(WebCore::RenderThemeIOS::sliderTickSize):
(WebCore::RenderThemeIOS::sliderTickOffsetFromTrackCenter):
(WebCore::RenderThemeIOS::adjustSearchFieldStyle):
(WebCore::RenderThemeIOS::paintSearchFieldDecorations):
(WebCore::RenderThemeIOS::adjustButtonStyle):
(WebCore::RenderThemeIOS::paintButtonDecorations):
(WebCore::RenderThemeIOS::paintPushButtonDecorations):
(WebCore::RenderThemeIOS::setButtonSize):
(WebCore::RenderThemeIOS::paintFileUploadIconDecorations):
(WebCore::RenderThemeIOS::platformActiveSelectionBackgroundColor):
(WebCore::RenderThemeIOS::platformInactiveSelectionBackgroundColor):
(WebCore::RenderThemeIOS::shouldShowPlaceholderWhenFocused):
(WebCore::RenderThemeIOS::shouldHaveSpinButton):
(WebCore::fromCTFontWeight):
(WebCore::RenderThemeIOS::systemFont):
(WebCore::RenderThemeIOS::mediaControlsStyleSheet):
(WebCore::RenderThemeIOS::mediaControlsScript):
* rendering/RenderThemeMac.h:
* rendering/RenderThemeMac.mm:
* rendering/RenderVideo.cpp:
(WebCore::RenderVideo::calculateIntrinsicSize):
* rendering/RenderView.cpp:
(WebCore::RenderView::availableLogicalHeight):
(WebCore::fixedPositionOffset):
(WebCore::RenderView::mapLocalToContainer):
(WebCore::RenderView::pushMappingToContainer):
(WebCore::RenderView::mapAbsoluteToLocalPoint):
(WebCore::RenderView::repaintViewRectangle):
(WebCore::RenderView::computeRectForRepaint):
(WebCore::isFixedPositionInViewport):
(WebCore::RenderView::hasCustomFixedPosition):
* rendering/RenderView.h:
* rendering/RenderWidget.cpp:
(WebCore::RenderWidget::willBeDestroyed):
* rendering/RootInlineBox.cpp:
(WebCore::RootInlineBox::ascentAndDescentForBox):
* rendering/break_lines.cpp:
* rendering/line/BreakingContextInlineHeaders.h:
(WebCore::BreakingContext::handleText):
* rendering/line/LineBreaker.h:
* rendering/line/LineWidth.cpp:
* rendering/shapes/BoxShape.cpp:
(WebCore::addRoundedRect):
(WebCore::BoxShape::buildDisplayPaths):
* rendering/shapes/BoxShape.h:
* rendering/shapes/PolygonShape.cpp:
(WebCore::addPolygon):
(WebCore::PolygonShape::buildDisplayPaths):
* rendering/shapes/PolygonShape.h:
* rendering/shapes/RasterShape.h:
* rendering/shapes/RectangleShape.cpp:
(WebCore::RectangleShape::buildDisplayPaths):
* rendering/shapes/RectangleShape.h:
* rendering/shapes/Shape.h:
* rendering/shapes/ShapeInfo.cpp:
(WebCore::::computedShape):
* rendering/shapes/ShapeInfo.h:
(WebCore::ShapeInfo::writingMode):
* rendering/shapes/ShapeOutsideInfo.cpp:
(WebCore::ShapeOutsideInfo::writingMode):
* rendering/shapes/ShapeOutsideInfo.h:
* rendering/style/BasicShapes.cpp:
(WebCore::BasicShape::canBlend):
* rendering/style/RenderStyle.h:
* rendering/style/StyleGeneratedImage.cpp:
(WebCore::StyleGeneratedImage::StyleGeneratedImage):
(WebCore::StyleGeneratedImage::cssValue):
(WebCore::StyleGeneratedImage::imageSize):
(WebCore::StyleGeneratedImage::image):
* rendering/style/StyleGeneratedImage.h:
* rendering/style/StyleGridItemData.cpp:
(WebCore::StyleGridItemData::StyleGridItemData):
* rendering/style/StyleImage.h:
* rendering/style/StylePendingImage.h:
(WebCore::StylePendingImage::cssImageValue):
(WebCore::StylePendingImage::cssImageGeneratorValue):
(WebCore::StylePendingImage::cssCursorImageValue):
(WebCore::StylePendingImage::cssImageSetValue):
(WebCore::StylePendingImage::detachFromCSSValue):
* rendering/svg/RenderSVGInlineText.cpp:
(WebCore::RenderSVGInlineText::originalText):
* rendering/svg/RenderSVGInlineText.h:
* svg/SVGDocument.cpp:
(WebCore::SVGDocument::cloneDocumentWithoutChildren):
* svg/SVGDocument.h:
* svg/SVGElement.cpp:
(WebCore::SVGElement::computedStyle):
* svg/SVGElement.h:
* svg/SVGScriptElement.cpp:
(WebCore::SVGScriptElement::parseAttribute):
(WebCore::SVGScriptElement::typeAttributeValue):
(WebCore::SVGScriptElement::isAnimatableAttribute):
* svg/SVGScriptElement.h:
* svg/SVGScriptElement.idl:
* svg/graphics/SVGImage.h:
* testing/Internals.cpp:
(WebCore::Internals::parserMetaData):
(WebCore::Internals::initializeMockMediaSource):
* testing/Internals.h:
* workers/SharedWorkerGlobalScope.cpp:
(WebCore::createConnectEvent):
* workers/WorkerGlobalScope.cpp:
(WebCore::WorkerGlobalScope::importScripts):
* workers/WorkerThread.cpp:
* xml/XMLTreeViewer.cpp:
* xml/parser/XMLDocumentParser.cpp:
* xml/parser/XMLDocumentParser.h:
* xml/parser/XMLDocumentParserLibxml2.cpp:
(WebCore::XMLDocumentParser::error):

Source/WebInspectorUI: 

* Configurations/Version.xcconfig:
* Tools/PrettyPrinting/codemirror.css:
(.cm-s-default .cm-meta):
(.cm-s-default .cm-error):
* Tools/PrettyPrinting/codemirror.js:
(window.CodeMirror):
(window.CodeMirror.):
* Tools/PrettyPrinting/css.js:
(.):
* Tools/PrettyPrinting/javascript.js:
(.):
(maybeoperatorNoComma):
(quasi):
(continueQuasi):
(arrowBody):
(arrowBodyNoComma):
(objprop):
(getterSetter):
(afterprop):
(maybetype):
(typedef):
(vardef):
(pattern):
(proppattern):
(maybeAssign):
(vardefCont):
(forspec):
(forspec1):
(formaybeinof):
(forspec2):
(functiondef):
(funarg):
(className):
(classNameAfter):
(objlit):
(afterModule):
(afterExport):
(afterImport):
(importSpec):
(maybeFrom):
(maybeArrayComprehension):
(comprehension):
(return.startState):
(return.token):
(return.indent):
* UserInterface/CSSStyleDeclarationTextEditor.js:
(WebInspector.CSSStyleDeclarationTextEditor.prototype.):
(WebInspector.CSSStyleDeclarationTextEditor.prototype._createColorSwatches):
* UserInterface/CodeMirrorAdditions.js:
* UserInterface/CodeMirrorColorEditingController.js: Added.
(WebInspector.CodeMirrorColorEditingController):
(WebInspector.CodeMirrorColorEditingController.prototype.get marker):
(WebInspector.CodeMirrorColorEditingController.prototype.get range):
(WebInspector.CodeMirrorColorEditingController.prototype.get color):
(WebInspector.CodeMirrorColorEditingController.prototype.set color):
(WebInspector.CodeMirrorColorEditingController.prototype.get delegate):
(WebInspector.CodeMirrorColorEditingController.prototype.set delegate):
(WebInspector.CodeMirrorColorEditingController.prototype.get text):
(WebInspector.CodeMirrorColorEditingController.prototype.set text):
(WebInspector.CodeMirrorColorEditingController.prototype.presentHoverMenu):
(WebInspector.CodeMirrorColorEditingController.prototype.dismissHoverMenu):
(WebInspector.CodeMirrorColorEditingController.prototype.handleEvent):
(WebInspector.CodeMirrorColorEditingController.prototype.hoverMenuButtonWasPressed):
(WebInspector.CodeMirrorColorEditingController.prototype.didDismissPopover):
(WebInspector.CodeMirrorColorEditingController.prototype._colorPickerColorChanged):
* UserInterface/CodeMirrorTokenTrackingController.js:
(WebInspector.CodeMirrorTokenTrackingController):
(WebInspector.CodeMirrorTokenTrackingController.prototype.set mode):
(WebInspector.CodeMirrorTokenTrackingController.prototype.get hoveredMarker):
(WebInspector.CodeMirrorTokenTrackingController.prototype.set hoveredMarker):
(WebInspector.CodeMirrorTokenTrackingController.prototype._updateHoveredTokenInfo):
(WebInspector.CodeMirrorTokenTrackingController.prototype._processNewHoveredToken):
(WebInspector.CodeMirrorTokenTrackingController.prototype._processMarkedToken):
* UserInterface/Color.js:
(WebInspector.Color):
* UserInterface/External/CodeMirror/codemirror.css:
(.cm-s-default .cm-meta):
(.cm-s-default .cm-error):
* UserInterface/External/CodeMirror/codemirror.js:
(window.CodeMirror):
(window.CodeMirror.):
* UserInterface/External/CodeMirror/coffeescript.js:
* UserInterface/External/CodeMirror/css.js:
(.):
* UserInterface/External/CodeMirror/htmlmixed.js:
* UserInterface/External/CodeMirror/javascript.js:
(.):
(maybeoperatorNoComma):
(quasi):
(continueQuasi):
(arrowBody):
(arrowBodyNoComma):
(objprop):
(getterSetter):
(afterprop):
(maybetype):
(typedef):
(vardef):
(pattern):
(proppattern):
(maybeAssign):
(vardefCont):
(forspec):
(forspec1):
(formaybeinof):
(forspec2):
(functiondef):
(funarg):
(className):
(classNameAfter):
(objlit):
(afterModule):
(afterExport):
(afterImport):
(importSpec):
(maybeFrom):
(maybeArrayComprehension):
(comprehension):
(return.startState):
(return.token):
(return.indent):
* UserInterface/External/CodeMirror/less.js:
(.else.):
* UserInterface/External/CodeMirror/matchbrackets.js:
* UserInterface/External/CodeMirror/placeholder.js:
* UserInterface/External/CodeMirror/runmode.js:
(CodeMirror.runMode):
* UserInterface/External/CodeMirror/searchcursor.js:
(.):
* UserInterface/External/CodeMirror/sql.js:
* UserInterface/External/CodeMirror/xml.js:
* UserInterface/HoverMenu.js:
(WebInspector.HoverMenu.prototype._handleClickEvent):
* UserInterface/Main.html:
* UserInterface/SourceCodeTextEditor.css:
(.hover-menu.color):
(.hover-menu.color &gt; img):
* UserInterface/SourceCodeTextEditor.js:
(WebInspector.SourceCodeTextEditor):
(WebInspector.SourceCodeTextEditor.prototype.close):
(WebInspector.SourceCodeTextEditor.prototype.contentDidChange):
(WebInspector.SourceCodeTextEditor.prototype._contentDidPopulate):
(WebInspector.SourceCodeTextEditor.prototype._debuggerDidPause):
(WebInspector.SourceCodeTextEditor.prototype._debuggerDidResume):
(WebInspector.SourceCodeTextEditor.prototype._sourceCodeSourceMapAdded):
(WebInspector.SourceCodeTextEditor.prototype._updateTokenTrackingControllerState):
(WebInspector.SourceCodeTextEditor.prototype._hasColorMarkers):
(WebInspector.SourceCodeTextEditor.prototype.tokenTrackingControllerHighlightedRangeWasClicked):
(WebInspector.SourceCodeTextEditor.prototype.tokenTrackingControllerNewHighlightCandidate):
(WebInspector.SourceCodeTextEditor.prototype.tokenTrackingControllerMouseOutOfHoveredMarker):
(WebInspector.SourceCodeTextEditor.prototype._showPopover):
(WebInspector.SourceCodeTextEditor.prototype._popoverMouseout):
(WebInspector.SourceCodeTextEditor.prototype._updateColorMarkers):
(WebInspector.SourceCodeTextEditor.prototype._tokenTrackingControllerHighlightedMarkedExpression):
(WebInspector.SourceCodeTextEditor.prototype._dismissCodeMirrorColorEditingController):
(WebInspector.SourceCodeTextEditor.prototype.colorEditingControllerDidStartEditing):
(WebInspector.SourceCodeTextEditor.prototype.colorEditingControllerDidFinishEditing):
* UserInterface/TextEditor.js:
(WebInspector.TextEditor.prototype.contentDidChange):
(WebInspector.TextEditor.prototype.boundsForRange):
(WebInspector.TextEditor.prototype.get markers):
(WebInspector.TextEditor.prototype.markersAtPosition):
(WebInspector.TextEditor.prototype.createColorMarkers):
(WebInspector.TextEditor.prototype.colorEditingControllerForMarker):
(WebInspector.TextEditor.prototype._contentChanged):
* UserInterface/TextMarker.js: Added.
(WebInspector.TextMarker):
(WebInspector.TextMarker.textMarkerForCodeMirrorTextMarker):
(WebInspector.TextMarker.prototype.get codeMirrorTextMarker):
(WebInspector.TextMarker.prototype.get type):
(WebInspector.TextMarker.prototype.get range):
(WebInspector.TextMarker.prototype.get bounds):
(WebInspector.TextMarker.prototype.clear):
* WebInspectorUI.vcxproj/WebInspectorUI.vcxproj:

Source/WebKit: 

* WebKit.vcxproj/Interfaces/Interfaces.vcxproj:
* WebKit.vcxproj/WebKit.sln:
* WebKit.vcxproj/WebKit/WebKit.vcxproj:
* WebKit.vcxproj/WebKit/WebKitVersion.cmd:
* WebKit.vcxproj/WebKitExportGenerator/WebKitExportGenerator.vcxproj:
* WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
* WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj:
* WebKit.xcodeproj/project.pbxproj:

Source/WebKit/blackberry: 

* Api/WebPage.cpp:

Source/WebKit/efl: 

* WebCoreSupport/DumpRenderTreeSupportEfl.cpp:
* ewk/ewk_frame.cpp:

Source/WebKit/gtk: 

* GNUmakefile.am:
* WebCoreSupport/BatteryClientGtk.cpp: Added.
(WebKit::BatteryClientGtk::BatteryClientGtk):
(WebKit::BatteryClientGtk::startUpdating):
(WebKit::BatteryClientGtk::stopUpdating):
(WebKit::BatteryClientGtk::batteryControllerDestroyed):
* WebCoreSupport/BatteryClientGtk.h: Added.
* tests/testatk.c:
(testWebkitAtkCaretOffsets):
(testWebkitAtkCaretOffsetsAndExtranousWhiteSpaces):
(testWebkitAtkComboBox):
(updateLoadingEventsResult):
(documentLoadingEventCallback):
(testWebkitAtkDocumentLoadingEvents):
(testWebkitAtkEmbeddedObjects):
(testWebkitAtkTextSelections):
(testWebkitAtkListsOfItems):
(main):
* tests/testatkroles.c:
(finish_loading):
(test_webkit_atk_get_role_document_frame):
(test_webkit_atk_get_role_heading):
(test_webkit_atk_get_role_image):
(test_webkit_atk_get_role_link):
(test_webkit_atk_get_role_list_and_item):
(test_webkit_atk_get_role_paragraph):
(test_webkit_atk_get_role_section):
(test_webkit_atk_get_role_table):
(test_webkit_atk_get_role_separator):
(test_webkit_atk_get_role_combobox):
(test_webkit_atk_get_role_form):
(test_webkit_atk_get_role_check_box):
(test_webkit_atk_get_role_entry):
(test_webkit_atk_get_role_label):
(test_webkit_atk_get_role_listbox):
(test_webkit_atk_get_role_password_text):
(test_webkit_atk_get_role_push_button):
(test_webkit_atk_get_role_radio_button):
* tests/testwebsettings.c:
(test_webkit_web_settings_copy):
* webkit/webkitdownload.cpp:
(DownloadClient::didReceiveData):
(DownloadClient::didReceiveBuffer):
* webkit/webkitwebsettings.cpp:
(webkit_web_settings_class_init):
(webkit_web_settings_set_property):
(webkit_web_settings_get_property):
* webkit/webkitwebsettingsprivate.h:
* webkit/webkitwebview.cpp:
(webkit_web_view_update_settings):
(webkit_web_view_settings_notify):
(webkit_web_view_init):

Source/WebKit/mac: 

* Configurations/Version.xcconfig:
* DOM/WebDOMOperations.h:
* History/WebBackForwardList.h:
* History/WebHistory.h:
* History/WebHistoryItem.h:
* History/WebHistoryItem.mm:
(-[WebHistoryItem init]):
(-[WebHistoryItem initWithURLString:title:lastVisitedTimeInterval:]):
* Plugins/Hosted/NetscapePluginInstanceProxy.mm:
* Plugins/WebPlugin.h:
* Plugins/WebPluginContainer.h:
* WebCoreSupport/WebInspectorClient.mm:
* WebView/WebAllowDenyPolicyListener.h:
* WebView/WebArchive.h:
* WebView/WebArchive.mm:
(-[WebArchivePrivate init]):
(-[WebArchivePrivate initWithCoreArchive:]):
(-[WebArchive init]):
(-[WebArchive initWithMainResource:subresources:subframeArchives:]):
(-[WebArchive initWithData:]):
(-[WebArchive initWithCoder:]):
* WebView/WebDataSource.h:
* WebView/WebDataSource.mm:
(-[WebDataSource initWithRequest:]):
* WebView/WebEditingDelegate.h:
(NS_ENUM):
* WebView/WebFrame.h:
* WebView/WebFrame.mm:
(-[WebFrame init]):
(-[WebFrame initWithName:webFrameView:webView:]):
* WebView/WebFrameView.h:
* WebView/WebPolicyDelegate.h:
(NS_ENUM):
* WebView/WebPreferenceKeysPrivate.h:
* WebView/WebPreferences.h:
(NS_ENUM):
* WebView/WebPreferences.mm:
(-[WebPreferences init]):
(-[WebPreferences initWithIdentifier:]):
(-[WebPreferences initWithCoder:]):
(+[WebPreferences initialize]):
(-[WebPreferences cacheModel]):
(-[WebPreferences mediaSourceEnabled]):
(-[WebPreferences setMediaSourceEnabled:]):
* WebView/WebPreferencesPrivate.h:
* WebView/WebResource.h:
* WebView/WebResource.mm:
(-[WebResourcePrivate init]):
(-[WebResourcePrivate initWithCoreResource:]):
(-[WebResource init]):
(-[WebResource initWithData:URL:MIMEType:textEncodingName:frameName:]):
(-[WebResource initWithCoder:]):
* WebView/WebUIDelegate.h:
(NS_OPTIONS):
* WebView/WebView.h:
* WebView/WebView.mm:
(createUserVisibleWebKitVersionString):
(-[WebView _preferencesChanged:]):
(-[_WebSafeForwarder initWithTarget:defaultTarget:]):
(-[WebView initWithFrame:]):
(-[WebView initWithFrame:frameName:groupName:]):
(-[WebView initWithCoder:]):
(+[WebView _didSetCacheModel]):

Source/WebKit/win: 

* WebFrame.cpp:
* WebView.cpp:

Source/WebKit2: 

* CMakeLists.txt:
* Configurations/Version.xcconfig:
* DatabaseProcess/DatabaseProcess.cpp:
(WebKit::DatabaseProcess::removeUniqueIDBDatabase):
(WebKit::DatabaseProcess::initializeDatabaseProcess):
(WebKit::DatabaseProcess::ensureIndexedDatabaseRelativePathExists):
(WebKit::DatabaseProcess::ensurePathExists):
(WebKit::DatabaseProcess::absoluteIndexedDatabasePathFromDatabaseRelativePath):
(WebKit::DatabaseProcess::postDatabaseTask):
(WebKit::DatabaseProcess::performNextDatabaseTask):
* DatabaseProcess/DatabaseProcess.h:
(WebKit::DatabaseProcess::queue):
* DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
(WebKit::UniqueIDBDatabase::UniqueIDBDatabase):
(WebKit::UniqueIDBDatabase::~UniqueIDBDatabase):
(WebKit::UniqueIDBDatabase::filenameForDatabaseName):
(WebKit::UniqueIDBDatabase::databaseFilenameIdentifier):
(WebKit::UniqueIDBDatabase::canShareDatabases):
(WebKit::UniqueIDBDatabase::unregisterConnection):
(WebKit::UniqueIDBDatabase::shutdown):
(WebKit::UniqueIDBDatabase::getOrEstablishIDBDatabaseMetadata):
(WebKit::UniqueIDBDatabase::openBackingStoreAndReadMetadata):
(WebKit::UniqueIDBDatabase::didOpenBackingStoreAndReadMetadata):
(WebKit::UniqueIDBDatabase::absoluteDatabaseDirectory):
(WebKit::UniqueIDBDatabase::postMainThreadTask):
(WebKit::UniqueIDBDatabase::performNextMainThreadTask):
(WebKit::UniqueIDBDatabase::postDatabaseTask):
(WebKit::UniqueIDBDatabase::performNextDatabaseTask):
* DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:
* DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h: Added.
(WebKit::UniqueIDBDatabaseBackingStore::~UniqueIDBDatabaseBackingStore):
* DatabaseProcess/IndexedDB/UniqueIDBDatabaseIdentifier.cpp:
(WebKit::UniqueIDBDatabaseIdentifier::isolatedCopy):
* DatabaseProcess/IndexedDB/UniqueIDBDatabaseIdentifier.h:
* DatabaseProcess/IndexedDB/sqlite: Added.
* DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp: Added.
(WebKit::UniqueIDBDatabaseBackingStoreSQLite::UniqueIDBDatabaseBackingStoreSQLite):
(WebKit::UniqueIDBDatabaseBackingStoreSQLite::createAndPopulateInitialMetadata):
(WebKit::UniqueIDBDatabaseBackingStoreSQLite::extractExistingMetadata):
(WebKit::UniqueIDBDatabaseBackingStoreSQLite::openSQLiteDatabaseAtPath):
(WebKit::UniqueIDBDatabaseBackingStoreSQLite::getOrEstablishMetadata):
* DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.h: Added.
* DerivedSources.make:
* GNUmakefile.am:
* GNUmakefile.list.am:
* NetworkProcess/AsynchronousNetworkLoaderClient.cpp:
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::createNetworkConnectionToWebProcess):
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* NetworkProcess/NetworkResourceLoader.cpp:
* NetworkProcess/mac/NetworkProcessMac.mm:
* NetworkProcess/soup/NetworkProcessSoup.cpp:
(WebKit::getCacheDiskFreeSize):
(WebKit::getMemorySize):
(WebKit::NetworkProcess::platformInitializeNetworkProcess):
(WebKit::NetworkProcess::platformSetCacheModel):
(WebKit::NetworkProcess::setIgnoreTLSErrors):
(WebKit::NetworkProcess::allowSpecificHTTPSCertificateForHost):
(WebKit::NetworkProcess::clearCacheForAllOrigins):
* NetworkProcess/unix/NetworkProcessMainUnix.cpp:
(WebKit::NetworkProcessMain):
* Platform/CoreIPC/ArgumentDecoder.cpp:
(CoreIPC::decodeValueFromBuffer):
(CoreIPC::ArgumentDecoder::decode):
* Platform/CoreIPC/ArgumentEncoder.cpp:
(CoreIPC::copyValueToBuffer):
(CoreIPC::ArgumentEncoder::encode):
* Platform/CoreIPC/Connection.h:
* Platform/CoreIPC/HandleMessage.h:
(CoreIPC::callMemberFunction):
* Platform/CoreIPC/MessageReceiverMap.cpp:
(CoreIPC::MessageReceiverMap::addMessageReceiver):
* Platform/CoreIPC/MessageReceiverMap.h:
* Platform/CoreIPC/MessageSender.cpp:
* Platform/CoreIPC/MessageSender.h:
* Platform/CoreIPC/unix/ConnectionUnix.cpp:
(CoreIPC::Connection::createPlatformConnection):
* Platform/IPC/DataReference.cpp:
* Platform/IPC/DataReference.h:
* Platform/IPC/MessageSender.cpp: Added.
(IPC::MessageSender::~MessageSender):
(IPC::MessageSender::sendMessage):
* Platform/IPC/MessageSender.h: Added.
(IPC::MessageSender::send):
(IPC::MessageSender::sendSync):
* Platform/IPC/StringReference.cpp:
* Platform/IPC/StringReference.h:
* PlatformEfl.cmake:
* PlatformGTK.cmake:
* PluginProcess/PluginProcess.cpp:
(WebKit::PluginProcess::createWebProcessConnection):
* Shared/API/Cocoa/WKRemoteObjectCoder.mm:
(-[WKRemoteObjectEncoder encodeBool:forKey:]):
(-[WKRemoteObjectEncoder encodeInt64:forKey:]):
(-[WKRemoteObjectEncoder encodeDouble:forKey:]):
(-[WKRemoteObjectDecoder decodeBoolForKey:]):
(-[WKRemoteObjectDecoder decodeInt64ForKey:]):
(-[WKRemoteObjectDecoder decodeDoubleForKey:]):
* Shared/API/c/WKContextMenuItem.cpp:
(WKContextMenuItemCreateAsAction):
(WKContextMenuItemCreateAsCheckableAction):
(WKContextMenuItemCreateAsSubmenu):
(WKContextMenuItemGetTag):
(WKContextMenuItemGetType):
(WKContextMenuItemCopyTitle):
(WKContextMenuItemGetEnabled):
(WKContextMenuItemGetChecked):
(WKContextMenuCopySubmenuItems):
(WKContextMenuItemGetUserData):
(WKContextMenuItemSetUserData):
* Shared/API/c/WKDictionary.cpp:
(WKDictionaryCreate):
* Shared/API/c/WKDictionary.h:
* Shared/API/c/WKGeometry.cpp:
(WKSizeGetTypeID):
(WKPointGetTypeID):
(WKRectGetTypeID):
(WKPointCreate):
(WKSizeCreate):
(WKRectCreate):
* Shared/API/c/WKNumber.cpp:
(WKBooleanGetTypeID):
(WKBooleanCreate):
(WKDoubleGetTypeID):
(WKDoubleCreate):
(WKUInt64GetTypeID):
(WKUInt64Create):
* Shared/API/c/WKSharedAPICast.h:
* Shared/API/c/WKURLRequest.cpp:
(WKURLRequestCopyURL):
* Shared/API/c/mac/WKCertificateInfoMac.mm:
* Shared/API/c/mac/WKURLRequestNS.mm:
(WKURLRequestCopyNSURLRequest):
* Shared/API/c/mac/WKURLResponseNS.mm:
(WKURLResponseCopyNSURLResponse):
* Shared/APIArray.h:
* Shared/APIFrameHandle.cpp: Added.
(API::FrameHandle::create):
(API::FrameHandle::FrameHandle):
(API::FrameHandle::~FrameHandle):
* Shared/APIFrameHandle.h: Added.
(API::FrameHandle::frameID):
* Shared/APIGeometry.cpp: Added.
(API::Point::encode):
(API::Point::decode):
(API::Size::encode):
(API::Size::decode):
(API::Rect::encode):
(API::Rect::decode):
* Shared/APIGeometry.h: Added.
(API::Size::create):
(API::Size::size):
(API::Size::Size):
(API::Point::create):
(API::Point::point):
(API::Point::Point):
(API::Rect::create):
(API::Rect::rect):
(API::Rect::Rect):
* Shared/APINumber.h: Added.
(API::Number::create):
(API::Number::value):
(API::Number::encode):
(API::Number::decode):
(API::Number::Number):
* Shared/APIObject.h:
(API::ObjectImpl::~ObjectImpl):
(API::ObjectImpl::ObjectImpl):
* Shared/APIPageHandle.cpp: Added.
(API::PageHandle::create):
(API::PageHandle::PageHandle):
(API::PageHandle::~PageHandle):
* Shared/APIPageHandle.h: Added.
(API::PageHandle::pageID):
* Shared/AsyncTask.h: Added.
(WebKit::AsyncTask::~AsyncTask):
(WebKit::AsyncTask::AsyncTask):
(WebKit::createAsyncTask):
* Shared/Authentication/AuthenticationManager.cpp:
(WebKit::AuthenticationManager::AuthenticationManager):
* Shared/Authentication/AuthenticationManager.h:
* Shared/Authentication/AuthenticationManager.messages.in:
* Shared/Authentication/mac/AuthenticationManager.mac.mm:
* Shared/ChildProcess.cpp:
(WebKit::ChildProcess::addMessageReceiver):
* Shared/ChildProcess.h:
* Shared/ChildProcessProxy.cpp:
(WebKit::ChildProcessProxy::addMessageReceiver):
* Shared/ChildProcessProxy.h:
* Shared/Cocoa/APIObject.mm:
(API::Object::newObject):
* Shared/Cocoa/WKNSData.h: Added.
(WebKit::wrapper):
* Shared/Cocoa/WKNSData.mm: Added.
(-[WKNSData dealloc]):
(-[WKNSData length]):
(-[WKNSData bytes]):
(-[WKNSData copyWithZone:]):
(-[WKNSData API::]):
* Shared/Cocoa/WKNSDictionary.mm:
(-[WKNSDictionary copyWithZone:]):
* Shared/ImmutableDictionary.cpp:
(WebKit::ImmutableDictionary::create):
(WebKit::ImmutableDictionary::ImmutableDictionary):
* Shared/ImmutableDictionary.h:
* Shared/MutableDictionary.cpp:
(WebKit::MutableDictionary::MutableDictionary):
* Shared/Network/NetworkProcessCreationParameters.cpp:
(WebKit::NetworkProcessCreationParameters::encode):
(WebKit::NetworkProcessCreationParameters::decode):
* Shared/Network/NetworkProcessCreationParameters.h:
* Shared/Plugins/Netscape/PluginInformation.cpp:
(WebKit::getPluginModuleInformation):
(WebKit::createPluginInformationDictionary):
* Shared/Plugins/Netscape/mac/PluginInformationMac.mm:
(WebKit::getPlatformPluginModuleInformation):
* Shared/SecurityOriginData.cpp:
(WebKit::SecurityOriginData::isolatedCopy):
* Shared/SecurityOriginData.h:
* Shared/UserData.cpp: Added.
(WebKit::UserData::UserData):
(WebKit::UserData::~UserData):
(WebKit::UserData::transform):
(WebKit::UserData::encode):
(WebKit::UserData::decode):
* Shared/UserData.h: Added.
(WebKit::UserData::object):
* Shared/UserMessageCoders.h:
(WebKit::UserMessageEncoder::baseEncode):
(WebKit::UserMessageDecoder::baseDecode):
* Shared/WebArchive.h:
* Shared/WebArchiveResource.h:
* Shared/WebBackForwardListItem.h:
* Shared/WebBatteryStatus.h:
* Shared/WebCertificateInfo.h:
(WebKit::WebCertificateInfo::create):
(WebKit::WebCertificateInfo::certificateInfo):
(WebKit::WebCertificateInfo::WebCertificateInfo):
* Shared/WebConnection.cpp:
(WebKit::WebConnection::postMessage):
* Shared/WebConnection.h:
* Shared/WebContextMenuItem.h:
* Shared/WebCoreArgumentCoders.cpp:
* Shared/WebCoreArgumentCoders.h:
* Shared/WebCrossThreadCopier.cpp: Added.
(WebCore::::copy):
* Shared/WebCrossThreadCopier.h: Added.
* Shared/WebData.h:
* Shared/WebError.h:
* Shared/WebGeolocationPosition.h:
* Shared/WebGeometry.h:
* Shared/WebHitTestResult.h:
* Shared/WebImage.h:
* Shared/WebNetworkInfo.h:
* Shared/WebNumber.h:
* Shared/WebOpenPanelParameters.h:
* Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::encode):
(WebKit::WebPageCreationParameters::decode):
* Shared/WebPageCreationParameters.h:
* Shared/WebPreferencesStore.h:
* Shared/WebRenderLayer.h:
* Shared/WebRenderObject.h:
* Shared/WebSecurityOrigin.h:
* Shared/WebSerializedScriptValue.h:
* Shared/WebString.h:
* Shared/WebURL.h:
* Shared/WebURLRequest.cpp:
* Shared/WebURLRequest.h:
* Shared/WebURLResponse.h:
* Shared/WebUserContentURLPattern.h:
* Shared/mac/CertificateInfo.h:
* Shared/mac/CertificateInfo.mm:
* Shared/mac/ObjCObjectGraph.h:
* Shared/mac/ObjCObjectGraphCoders.mm:
(WebKit::InjectedBundleObjCObjectGraphDecoderImpl::decode):
* Shared/mac/WebCoreArgumentCodersMac.mm:
(CoreIPC::::encode):
(CoreIPC::::decode):
* Shared/mac/WebURLRequestMac.mm:
* Shared/mac/WebURLResponseMac.mm:
* Shared/soup/CertificateInfo.cpp:
* Shared/soup/CertificateInfo.h:
* Shared/soup/WebCoreArgumentCodersSoup.cpp:
(CoreIPC::::encode):
(CoreIPC::::decode):
* UIProcess/API/C/CoordinatedGraphics/WKView.cpp:
(WKViewExitFullScreen):
* UIProcess/API/C/WKPage.cpp:
(WKPageSetBackgroundExtendsBeyondPage):
(WKPageBackgroundExtendsBeyondPage):
(WKPageSetPageContextMenuClient):
(WKPageSelectContextMenuItem):
* UIProcess/API/C/WKPage.h:
* UIProcess/API/C/WKPagePolicyClientInternal.h: Added.
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetMediaSourceEnabled):
(WKPreferencesGetMediaSourceEnabled):
* UIProcess/API/C/WKPreferencesPrivate.h:
* UIProcess/API/C/gtk/WKInspectorClientGtk.h:
* UIProcess/API/C/mac/WKContextPrivateMac.mm:
* UIProcess/API/Cocoa/WKBrowsingContextController.mm:
(processDidCrash):
(setUpPageLoaderClient):
(setUpPagePolicyClient):
* UIProcess/API/Cocoa/WKBrowsingContextLoadDelegatePrivate.h:
* UIProcess/API/Cocoa/WKBrowsingContextPolicyDelegate.h:
* UIProcess/API/Cocoa/WKConnection.mm:
(-[WKConnection dealloc]):
(-[WKConnection setDelegate:]):
(-[WKConnection sendMessageWithName:body:]):
(-[WKConnection remoteObjectRegistry]):
(-[WKConnection _connection]):
(-[WKConnection API::]):
* UIProcess/API/Cocoa/WKViewPrivate.h:
* UIProcess/API/gtk/PageClientImpl.cpp:
(WebKit::PageClientImpl::fullScreenManagerProxyClient):
(WebKit::PageClientImpl::closeFullScreenManager):
(WebKit::PageClientImpl::isFullScreen):
(WebKit::PageClientImpl::enterFullScreen):
(WebKit::PageClientImpl::exitFullScreen):
(WebKit::PageClientImpl::beganEnterFullScreen):
(WebKit::PageClientImpl::beganExitFullScreen):
* UIProcess/API/gtk/PageClientImpl.h:
* UIProcess/API/gtk/WebKitBatteryProvider.cpp: Added.
(toBatteryProvider):
(startUpdatingCallback):
(stopUpdatingCallback):
(WebKitBatteryProvider::create):
(WebKitBatteryProvider::WebKitBatteryProvider):
(WebKitBatteryProvider::~WebKitBatteryProvider):
(WebKitBatteryProvider::startUpdating):
(WebKitBatteryProvider::stopUpdating):
(WebKitBatteryProvider::updateBatteryStatus):
* UIProcess/API/gtk/WebKitBatteryProvider.h: Added.
* UIProcess/API/gtk/WebKitCertificateInfoPrivate.h:
* UIProcess/API/gtk/WebKitInjectedBundleClient.cpp:
(didReceiveWebViewMessageFromInjectedBundle):
* UIProcess/API/gtk/WebKitSettings.cpp:
(webKitSettingsSetProperty):
(webKitSettingsGetProperty):
(webkit_settings_class_init):
(webkit_settings_get_enable_mediasource):
(webkit_settings_set_enable_mediasource):
* UIProcess/API/gtk/WebKitSettings.h:
* UIProcess/API/gtk/WebKitWebContext.cpp:
(createDefaultWebContext):
(webkit_web_context_prefetch_dns):
* UIProcess/API/gtk/WebKitWebView.cpp:
(webkit_web_view_get_tls_info):
(webkit_web_view_get_snapshot):
* UIProcess/API/gtk/WebKitWebViewBase.cpp:
(webkitWebViewBaseAddWebInspector):
(webkitWebViewBaseContainerRemove):
(resizeWebKitWebViewBaseFromAllocation):
(webkitWebViewBaseCreateWebPage):
(webkitWebViewBaseSetInspectorViewSize):
* UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
* UIProcess/API/gtk/WebKitWindowProperties.cpp:
(webkitWindowPropertiesUpdateFromWebWindowFeatures):
* UIProcess/API/gtk/docs/webkit2gtk-sections.txt:
* UIProcess/API/gtk/tests/DOMNodeTest.cpp:
(WebKitDOMNodeTest::testTagNames):
(WebKitDOMNodeTest::runTest):
(registerTests):
* UIProcess/API/gtk/tests/TestDOMNode.cpp:
(testWebKitDOMNodeTagNames):
(beforeAll):
* UIProcess/API/gtk/tests/TestMain.cpp:
(main):
* UIProcess/API/gtk/tests/TestWebKitAccessibility.cpp:
(testAtspiBasicHierarchy):
* UIProcess/API/gtk/tests/TestWebKitSettings.cpp:
(testWebKitSettings):
* UIProcess/API/gtk/tests/WebProcessTestRunner.cpp:
(WebProcessTestRunner::WebProcessTestRunner):
* UIProcess/API/ios/PageClientImplIOS.h:
* UIProcess/API/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::fullScreenManagerProxyClient):
(WebKit::PageClientImpl::closeFullScreenManager):
(WebKit::PageClientImpl::isFullScreen):
(WebKit::PageClientImpl::enterFullScreen):
(WebKit::PageClientImpl::exitFullScreen):
(WebKit::PageClientImpl::beganEnterFullScreen):
(WebKit::PageClientImpl::beganExitFullScreen):
* UIProcess/API/ios/WKGeolocationProviderIOS.mm:
(-[WKGeolocationProviderIOS init]):
* UIProcess/API/mac/PageClientImpl.h:
* UIProcess/API/mac/PageClientImpl.mm:
(WebKit::PageClientImpl::fullScreenManagerProxyClient):
(WebKit::PageClientImpl::closeFullScreenManager):
(WebKit::PageClientImpl::isFullScreen):
(WebKit::PageClientImpl::enterFullScreen):
(WebKit::PageClientImpl::exitFullScreen):
(WebKit::PageClientImpl::beganEnterFullScreen):
(WebKit::PageClientImpl::beganExitFullScreen):
* UIProcess/API/mac/WKView.mm:
(-[WKView _hasFullScreenWindowController]):
(-[WKView _fullScreenWindowController]):
(-[WKView _closeFullScreenWindowController]):
(-[WKView initWithFrame:contextRef:pageGroupRef:relatedToPage:]):
(-[WKView fullScreenPlaceholderView]):
(-[WKView createFullScreenWindow]):
(-[WKView waitForAsyncDrawingAreaSizeUpdate]):
(-[WKView _ensureGestureController]):
(-[WKView setAllowsMagnification:]):
(-[WKView allowsMagnification]):
(-[WKView magnifyWithEvent:]):
(-[WKView endGestureWithEvent:]):
(-[WKView setMagnification:centeredAtPoint:]):
(-[WKView setMagnification:]):
(-[WKView magnification]):
* UIProcess/API/mac/WKViewInternal.h:
* UIProcess/APINavigationData.h:
* UIProcess/Authentication/AuthenticationChallengeProxy.cpp:
(WebKit::AuthenticationChallengeProxy::useCredential):
* UIProcess/Authentication/AuthenticationChallengeProxy.h:
* UIProcess/Authentication/AuthenticationDecisionListener.h:
* UIProcess/Authentication/WebCredential.h:
* UIProcess/Authentication/WebProtectionSpace.h:
* UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.cpp:
(WebKit::CoordinatedLayerTreeHostProxy::CoordinatedLayerTreeHostProxy):
* UIProcess/CoordinatedGraphics/WebView.cpp:
(WebKit::WebView::fullScreenManagerProxyClient):
(WebKit::WebView::requestExitFullScreen):
* UIProcess/CoordinatedGraphics/WebView.h:
* UIProcess/Downloads/DownloadProxy.h:
* UIProcess/Downloads/DownloadProxyMap.cpp:
(WebKit::DownloadProxyMap::createDownloadProxy):
* UIProcess/DrawingAreaProxy.cpp:
(WebKit::DrawingAreaProxy::DrawingAreaProxy):
* UIProcess/DrawingAreaProxy.h:
(WebKit::DrawingAreaProxy::beginTransientZoom):
(WebKit::DrawingAreaProxy::adjustTransientZoom):
(WebKit::DrawingAreaProxy::commitTransientZoom):
* UIProcess/GeolocationPermissionRequestProxy.h:
* UIProcess/Network/CustomProtocols/mac/CustomProtocolManagerProxyMac.mm:
(WebKit::CustomProtocolManagerProxy::CustomProtocolManagerProxy):
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::networkProcessCrashedOrFailedToLaunch):
(WebKit::NetworkProcessProxy::didCreateNetworkConnectionToWebProcess):
* UIProcess/Network/soup/NetworkProcessProxySoup.cpp:
(WebKit::NetworkProcessProxy::platformGetLaunchOptions):
* UIProcess/Notifications/NotificationPermissionRequest.h:
* UIProcess/Notifications/WebNotification.h:
* UIProcess/Notifications/WebNotificationManagerProxy.cpp:
(WebKit::WebNotificationManagerProxy::populateCopyOfNotificationPermissions):
(WebKit::WebNotificationManagerProxy::providerDidCloseNotifications):
* UIProcess/Notifications/WebNotificationManagerProxy.h:
* UIProcess/Notifications/WebNotificationProvider.cpp:
(WebKit::WebNotificationProvider::clearNotifications):
* UIProcess/PageClient.h:
* UIProcess/PageLoadState.cpp:
(WebKit::PageLoadState::PageLoadState):
(WebKit::PageLoadState::endTransaction):
(WebKit::PageLoadState::commitChanges):
(WebKit::PageLoadState::reset):
(WebKit::PageLoadState::isLoading):
(WebKit::PageLoadState::activeURL):
(WebKit::PageLoadState::estimatedProgress):
(WebKit::PageLoadState::pendingAPIRequestURL):
(WebKit::PageLoadState::setPendingAPIRequestURL):
(WebKit::PageLoadState::clearPendingAPIRequestURL):
(WebKit::PageLoadState::didStartProvisionalLoad):
(WebKit::PageLoadState::didReceiveServerRedirectForProvisionalLoad):
(WebKit::PageLoadState::didFailProvisionalLoad):
(WebKit::PageLoadState::didCommitLoad):
(WebKit::PageLoadState::didFinishLoad):
(WebKit::PageLoadState::didFailLoad):
(WebKit::PageLoadState::didSameDocumentNavigation):
(WebKit::PageLoadState::setUnreachableURL):
(WebKit::PageLoadState::title):
(WebKit::PageLoadState::setTitle):
(WebKit::PageLoadState::didStartProgress):
(WebKit::PageLoadState::didChangeProgress):
(WebKit::PageLoadState::didFinishProgress):
* UIProcess/PageLoadState.h:
(WebKit::PageLoadState::Transaction::Transaction):
(WebKit::PageLoadState::Transaction::~Transaction):
(WebKit::PageLoadState::Transaction::Token::Token):
(WebKit::PageLoadState::transaction):
(WebKit::PageLoadState::provisionalURL):
(WebKit::PageLoadState::url):
(WebKit::PageLoadState::unreachableURL):
(WebKit::PageLoadState::beginTransaction):
(WebKit::PageLoadState::Data::Data):
* UIProcess/Plugins/PlugInAutoStartProvider.cpp:
(WebKit::PlugInAutoStartProvider::autoStartOriginsTableCopy):
(WebKit::PlugInAutoStartProvider::setAutoStartOriginsTable):
* UIProcess/Plugins/WebPluginSiteDataManager.h:
* UIProcess/StatisticsRequest.cpp:
(WebKit::addToDictionaryFromHashMap):
* UIProcess/WebApplicationCacheManagerProxy.cpp:
(WebKit::WebApplicationCacheManagerProxy::WebApplicationCacheManagerProxy):
* UIProcess/WebApplicationCacheManagerProxy.h:
* UIProcess/WebBackForwardList.h:
* UIProcess/WebBatteryManagerProxy.cpp:
(WebKit::WebBatteryManagerProxy::WebBatteryManagerProxy):
* UIProcess/WebBatteryManagerProxy.h:
* UIProcess/WebColorPickerResultListenerProxy.h:
* UIProcess/WebConnectionToWebProcess.cpp:
(WebKit::WebConnectionToWebProcess::WebConnectionToWebProcess):
* UIProcess/WebContext.cpp:
(WebKit::WebContext::WebContext):
(WebKit::WebContext::addMessageReceiver):
(WebKit::WebContext::pluginInfoStoreDidLoadPlugins):
* UIProcess/WebContext.h:
(WebKit::WebContext::sendToNetworkingProcess):
(WebKit::WebContext::sendToNetworkingProcessRelaunchingIfNecessary):
* UIProcess/WebCookieManagerProxy.cpp:
(WebKit::WebCookieManagerProxy::WebCookieManagerProxy):
* UIProcess/WebCookieManagerProxy.h:
* UIProcess/WebDatabaseManagerProxy.cpp:
(WebKit::WebDatabaseManagerProxy::WebDatabaseManagerProxy):
(WebKit::WebDatabaseManagerProxy::didGetDatabasesByOrigin):
* UIProcess/WebDatabaseManagerProxy.h:
* UIProcess/WebEditCommandProxy.h:
* UIProcess/WebFormClient.cpp:
(WebKit::WebFormClient::willSubmitForm):
* UIProcess/WebFrameProxy.cpp:
(WebKit::WebFrameProxy::didCommitLoad):
* UIProcess/WebFrameProxy.h:
* UIProcess/WebFullScreenManagerProxy.cpp:
(WebKit::WebFullScreenManagerProxy::create):
(WebKit::WebFullScreenManagerProxy::WebFullScreenManagerProxy):
(WebKit::WebFullScreenManagerProxy::invalidate):
(WebKit::WebFullScreenManagerProxy::close):
(WebKit::WebFullScreenManagerProxy::isFullScreen):
(WebKit::WebFullScreenManagerProxy::enterFullScreen):
(WebKit::WebFullScreenManagerProxy::exitFullScreen):
(WebKit::WebFullScreenManagerProxy::beganEnterFullScreen):
(WebKit::WebFullScreenManagerProxy::beganExitFullScreen):
* UIProcess/WebFullScreenManagerProxy.h:
(WebKit::WebFullScreenManagerProxyClient::~WebFullScreenManagerProxyClient):
* UIProcess/WebGeolocationManagerProxy.cpp:
(WebKit::WebGeolocationManagerProxy::WebGeolocationManagerProxy):
* UIProcess/WebGeolocationManagerProxy.h:
* UIProcess/WebGrammarDetail.h:
* UIProcess/WebIconDatabase.cpp:
(WebKit::WebIconDatabase::WebIconDatabase):
* UIProcess/WebIconDatabase.h:
* UIProcess/WebInspectorProxy.cpp:
(WebKit::WebInspectorProxy::WebInspectorProxy):
(WebKit::isMainInspectorPage):
* UIProcess/WebInspectorProxy.h:
* UIProcess/WebKeyValueStorageManager.h:
* UIProcess/WebMediaCacheManagerProxy.cpp:
(WebKit::WebMediaCacheManagerProxy::WebMediaCacheManagerProxy):
* UIProcess/WebMediaCacheManagerProxy.h:
* UIProcess/WebNetworkInfoManagerProxy.cpp:
(WebKit::WebNetworkInfoManagerProxy::WebNetworkInfoManagerProxy):
* UIProcess/WebNetworkInfoManagerProxy.h:
* UIProcess/WebOpenPanelResultListenerProxy.h:
* UIProcess/WebOriginDataManagerProxy.cpp:
(WebKit::WebOriginDataManagerProxy::WebOriginDataManagerProxy):
* UIProcess/WebOriginDataManagerProxy.h:
* UIProcess/WebPageGroup.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::WebPageProxy):
(WebKit::WebPageProxy::reattachToWebProcess):
(WebKit::WebPageProxy::initializeWebPage):
(WebKit::WebPageProxy::loadURL):
(WebKit::WebPageProxy::loadURLRequest):
(WebKit::WebPageProxy::loadAlternateHTMLString):
(WebKit::WebPageProxy::reload):
(WebKit::WebPageProxy::goForward):
(WebKit::WebPageProxy::goBack):
(WebKit::WebPageProxy::goToBackForwardItem):
(WebKit::WebPageProxy::receivedPolicyDecision):
(WebKit::WebPageProxy::setBackgroundExtendsBeyondPage):
(WebKit::WebPageProxy::backgroundExtendsBeyondPage):
(WebKit::WebPageProxy::didStartProgress):
(WebKit::WebPageProxy::didChangeProgress):
(WebKit::WebPageProxy::didFinishProgress):
(WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
(WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
(WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
(WebKit::WebPageProxy::didCommitLoadForFrame):
(WebKit::WebPageProxy::didFinishLoadForFrame):
(WebKit::WebPageProxy::didFailLoadForFrame):
(WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
(WebKit::WebPageProxy::didReceiveTitleForFrame):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::didFindStringMatches):
(WebKit::WebPageProxy::sendMessage):
(WebKit::WebPageProxy::messageSenderConnection):
(WebKit::WebPageProxy::messageSenderDestinationID):
(WebKit::WebPageProxy::processDidCrash):
(WebKit::WebPageProxy::initializeCreationParameters):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/WebPolicyClient.cpp:
(WebKit::WebPolicyClient::decidePolicyForNavigationAction):
* UIProcess/WebPolicyClient.h:
* UIProcess/WebPreferences.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::apiObjectByConvertingToHandles):
* UIProcess/WebProcessProxy.h:
* UIProcess/WebResourceCacheManagerProxy.cpp:
(WebKit::WebResourceCacheManagerProxy::WebResourceCacheManagerProxy):
* UIProcess/WebResourceCacheManagerProxy.h:
* UIProcess/WebTextChecker.h:
* UIProcess/WebUIClient.cpp:
(WebKit::WebUIClient::createNewPage):
* UIProcess/WebVibrationProxy.cpp:
(WebKit::WebVibrationProxy::WebVibrationProxy):
* UIProcess/WebVibrationProxy.h:
* UIProcess/WebViewportAttributes.h:
* UIProcess/cf/WebPageProxyCF.cpp:
(WebKit::WebPageProxy::restoreFromSessionStateData):
* UIProcess/efl/WebFullScreenManagerProxyEfl.cpp:
* UIProcess/efl/WebPopupItemEfl.h:
* UIProcess/efl/WebViewEfl.cpp:
(WebKit::WebViewEfl::WebViewEfl):
(WebKit::WebViewEfl::setEwkView):
(WebKit::WebViewEfl::isFullScreen):
(WebKit::WebViewEfl::enterFullScreen):
(WebKit::WebViewEfl::exitFullScreen):
* UIProcess/efl/WebViewEfl.h:
* UIProcess/gtk/WebContextGtk.cpp:
(WebKit::WebContext::platformInitializeWebProcess):
(WebKit::WebContext::setIgnoreTLSErrors):
* UIProcess/gtk/WebFullScreenManagerProxyGtk.cpp:
* UIProcess/gtk/WebInspectorClientGtk.cpp:
(WebKit::WebInspectorClientGtk::didChangeAttachedWidth):
* UIProcess/gtk/WebInspectorClientGtk.h:
* UIProcess/gtk/WebInspectorProxyGtk.cpp:
(WebKit::WebInspectorProxy::platformAttach):
(WebKit::WebInspectorProxy::platformSetAttachedWindowHeight):
(WebKit::WebInspectorProxy::platformSetAttachedWindowWidth):
* UIProcess/ios/WebFullScreenManagerProxyIOS.mm:
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::insertText):
* UIProcess/mac/RemoteLayerTreeHost.mm:
(WebKit::RemoteLayerTreeHost::RemoteLayerTreeHost):
* UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
* UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
(WebKit::TiledCoreAnimationDrawingAreaProxy::beginTransientZoom):
(WebKit::TiledCoreAnimationDrawingAreaProxy::adjustTransientZoom):
(WebKit::TiledCoreAnimationDrawingAreaProxy::commitTransientZoom):
* UIProcess/mac/ViewGestureController.h: Added.
* UIProcess/mac/ViewGestureController.messages.in: Added.
* UIProcess/mac/WKFullScreenWindowController.mm:
(-[WKFullScreenWindowController beganExitFullScreenWithInitialFrame:WebCore::finalFrame:WebCore::]):
* UIProcess/mac/WebFullScreenManagerProxyMac.mm:
* UIProcess/mac/WebPageProxyMac.mm:
(WebKit::userVisibleWebKitVersionString):
* UIProcess/soup/WebContextSoup.cpp:
(WebKit::WebContext::platformInitializeNetworkProcess):
* UIProcess/soup/WebSoupRequestManagerProxy.cpp:
(WebKit::WebSoupRequestManagerProxy::WebSoupRequestManagerProxy):
* UIProcess/soup/WebSoupRequestManagerProxy.h:
* WebKit2.xcodeproj/project.pbxproj:
* WebProcess/ApplicationCache/WebApplicationCacheManager.cpp:
(WebKit::WebApplicationCacheManager::WebApplicationCacheManager):
* WebProcess/Battery/WebBatteryManager.cpp:
(WebKit::WebBatteryManager::WebBatteryManager):
* WebProcess/Cookies/WebCookieManager.cpp:
(WebKit::WebCookieManager::WebCookieManager):
* WebProcess/Geolocation/WebGeolocationManager.cpp:
(WebKit::WebGeolocationManager::WebGeolocationManager):
* WebProcess/IconDatabase/WebIconDatabaseProxy.cpp:
(WebKit::WebIconDatabaseProxy::WebIconDatabaseProxy):
* WebProcess/InjectedBundle/API/Cocoa: Added.
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.h: Added.
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm: Added.
(-[WKWebProcessPlugInFrame dealloc]):
(-[WKWebProcessPlugInFrame jsContextForWorld:]):
(-[WKWebProcessPlugInFrame hitTest:]):
(-[WKWebProcessPlugInFrame jsNodeForNodeHandle:inWorld:]):
(-[WKWebProcessPlugInFrame API::]):
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrameInternal.h: Added.
(WebKit::wrapper):
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResult.h: Added.
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResult.mm: Added.
(-[WKWebProcessPlugInHitTestResult dealloc]):
(-[WKWebProcessPlugInHitTestResult nodeHandle]):
(-[WKWebProcessPlugInHitTestResult API::]):
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResultInternal.h: Added.
(WebKit::wrapper):
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.h: Added.
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm: Added.
(-[WKWebProcessPlugInNodeHandle dealloc]):
(-[WKWebProcessPlugInNodeHandle API::]):
(-[WKWebProcessPlugInNodeHandle _nodeHandle]):
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandleInternal.h: Added.
(WebKit::wrapper):
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.h: Added.
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.mm: Added.
(+[WKWebProcessPlugInScriptWorld world]):
(+[WKWebProcessPlugInScriptWorld normalWorld]):
(-[WKWebProcessPlugInScriptWorld dealloc]):
(-[WKWebProcessPlugInScriptWorld API::]):
(-[WKWebProcessPlugInScriptWorld _scriptWorld]):
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorldInternal.h: Added.
(WebKit::wrapper):
* WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
(WKBundlePageSetContextMenuClient):
(WKBundlePageClickMenuItem):
(WKBundlePageCopyContextMenuItems):
(WKBundlePageCopyContextMenuAtPointInWindow):
* WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:
(didInitiateLoadForResource):
(willSendRequestForFrame):
(didReceiveResponseForResource):
(didReceiveContentLengthForResource):
(didFinishLoadForResource):
(didFailLoadForResource):
(webkitWebPageDidReceiveMessage):
* WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.h:
* WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.mm:
(-[WKWebProcessPlugInController dealloc]):
(didCreatePage):
(willDestroyPage):
(setUpBundleClient):
(-[WKWebProcessPlugInController _setPrincipalClassInstance:]):
(-[WKWebProcessPlugInController connection]):
(-[WKWebProcessPlugInController API::]):
* WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
(-[WKWebProcessPlugInBrowserContextController dealloc]):
(-[WKWebProcessPlugInBrowserContextController mainFrameDocument]):
(-[WKWebProcessPlugInBrowserContextController selectedRange]):
(-[WKWebProcessPlugInBrowserContextController API::]):
(-[WKWebProcessPlugInBrowserContextController _bundlePageRef]):
(-[WKWebProcessPlugInBrowserContextController handle]):
(+[WKWebProcessPlugInBrowserContextController lookUpBrowsingContextFromHandle:]):
* WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerInternal.h:
(WebKit::wrapper):
* WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInInternal.h:
(WebKit::wrapper):
* WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInPrivate.h:
* WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.h:
* WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.h:
* WebProcess/InjectedBundle/InjectedBundle.h:
* WebProcess/InjectedBundle/InjectedBundleBackForwardList.h:
* WebProcess/InjectedBundle/InjectedBundleBackForwardListItem.h:
* WebProcess/InjectedBundle/InjectedBundleDOMWindowExtension.h:
* WebProcess/InjectedBundle/InjectedBundleHitTestResult.h:
* WebProcess/InjectedBundle/InjectedBundleNavigationAction.h:
* WebProcess/InjectedBundle/InjectedBundlePageFormClient.cpp:
(WebKit::InjectedBundlePageFormClient::willSendSubmitEvent):
(WebKit::InjectedBundlePageFormClient::willSubmitForm):
* WebProcess/InjectedBundle/InjectedBundleScriptWorld.h:
* WebProcess/InjectedBundle/mac/InjectedBundleMac.mm:
(WebKit::InjectedBundle::load):
* WebProcess/MediaCache/WebMediaCacheManager.cpp:
(WebKit::WebMediaCacheManager::WebMediaCacheManager):
* WebProcess/Network/WebResourceLoader.cpp:
* WebProcess/Network/WebResourceLoader.h:
* WebProcess/Network/WebResourceLoader.messages.in:
* WebProcess/NetworkInfo/WebNetworkInfoManager.cpp:
(WebKit::WebNetworkInfoManager::WebNetworkInfoManager):
* WebProcess/Notifications/WebNotificationManager.cpp:
(WebKit::WebNotificationManager::WebNotificationManager):
* WebProcess/OriginData/WebOriginDataManager.cpp:
(WebKit::WebOriginDataManager::WebOriginDataManager):
* WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::performJavaScriptURLRequest):
* WebProcess/ResourceCache/WebResourceCacheManager.cpp:
(WebKit::WebResourceCacheManager::WebResourceCacheManager):
* WebProcess/Storage/StorageAreaMap.cpp:
(WebKit::StorageAreaMap::StorageAreaMap):
* WebProcess/WebConnectionToUIProcess.cpp:
(WebKit::WebConnectionToUIProcess::WebConnectionToUIProcess):
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::print):
* WebProcess/WebCoreSupport/WebDatabaseManager.cpp:
(WebKit::WebDatabaseManager::WebDatabaseManager):
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
* WebProcess/WebPage/DrawingArea.h:
(WebKit::DrawingArea::beginTransientZoom):
(WebKit::DrawingArea::adjustTransientZoom):
(WebKit::DrawingArea::commitTransientZoom):
* WebProcess/WebPage/DrawingArea.messages.in:
* WebProcess/WebPage/PageBanner.h:
* WebProcess/WebPage/PageOverlay.h:
* WebProcess/WebPage/WebFrame.h:
* WebProcess/WebPage/WebInspector.cpp:
* WebProcess/WebPage/WebInspector.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::WebPage):
(WebKit::WebPage::trackedRepaintRects):
(WebKit::WebPage::setBackgroundExtendsBeyondPage):
(WebKit::WebPage::updatePreferences):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebPage/WebPageGroupProxy.h:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::insertText):
* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
(WebKit::TiledCoreAnimationDrawingArea::beginTransientZoom):
(WebKit::TiledCoreAnimationDrawingArea::adjustTransientZoom):
(WebKit::TiledCoreAnimationDrawingArea::commitTransientZoom):
* WebProcess/WebPage/mac/WKAccessibilityWebPageObject.mm:
(-[WKAccessibilityWebPageObject accessibilityAttributeValue:forParameter:]):
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::ensureNetworkProcessConnection):
(WebKit::WebProcess::apiObjectByConvertingFromHandles):
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in:
* WebProcess/gtk/WebGtkExtensionManager.h:
* WebProcess/soup/WebProcessSoup.cpp:
(WebKit::WebProcess::platformSetCacheModel):
(WebKit::WebProcess::platformClearResourceCaches):
(WebKit::WebProcess::platformInitializeWebProcess):
(WebKit::WebProcess::allowSpecificHTTPSCertificateForHost):
* WebProcess/soup/WebSoupRequestManager.cpp:
(WebKit::WebSoupRequestManager::WebSoupRequestManager):
* config.h:

Source/WTF: 

* GNUmakefile.list.am:
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
* WTF.xcodeproj/project.pbxproj:
* wtf/AVLTree.h:
* wtf/Assertions.h:
* wtf/BitArray.h:
* wtf/Bitmap.h:
* wtf/CMakeLists.txt:
* wtf/Compiler.h:
* wtf/FixedArray.h:
* wtf/HashMap.h:
(WTF::HashMap::HashMap):
* wtf/MD5.cpp:
(WTF::toLittleEndian):
(WTF::MD5::addBytes):
(WTF::MD5::checksum):
* wtf/MD5.h:
* wtf/MathExtras.h:
* wtf/PlatformGTK.cmake:
* wtf/RetainPtr.h:
(WTF::RetainPtr::operator bool):
* wtf/SHA1.cpp:
(WTF::SHA1::computeHash):
(WTF::SHA1::hexDigest):
(WTF::SHA1::computeHexDigest):
* wtf/SHA1.h:
* wtf/SixCharacterHash.cpp:
(WTF::integerToSixCharacterHashString):
* wtf/SixCharacterHash.h:
* wtf/StdLibExtras.h:
* wtf/text/StringImpl.h:
(WTF::StringImpl::StringImpl):
* wtf/text/WTFString.h:

Tools: 

* BuildSlaveSupport/build.webkit.org-config/config.json:
* BuildSlaveSupport/build.webkit.org-config/master.cfg:
(RunPythonTests):
* DumpRenderTree/AccessibilityUIElement.cpp:
(characterAtOffsetCallback):
(wordAtOffsetCallback):
(lineAtOffsetCallback):
(sentenceAtOffsetCallback):
(AccessibilityUIElement::getJSClass):
* DumpRenderTree/AccessibilityUIElement.h:
* DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTree.vcxproj:
* DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeLauncher.vcxproj:
* DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiff.vcxproj:
* DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffLauncher.vcxproj:
* DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePlugin.vcxproj:
* DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
* DumpRenderTree/atk/AccessibilityUIElementAtk.cpp:
(AccessibilityUIElement::role):
(AccessibilityUIElement::stringForRange):
(stringAtOffset):
(AccessibilityUIElement::characterAtOffset):
(AccessibilityUIElement::wordAtOffset):
(AccessibilityUIElement::lineAtOffset):
(AccessibilityUIElement::sentenceAtOffset):
* DumpRenderTree/blackberry/PixelDumpSupportBlackBerry.cpp:
(computeMD5HashStringForBitmapContext):
* DumpRenderTree/cairo/PixelDumpSupportCairo.cpp:
(computeMD5HashStringForBitmapContext):
* DumpRenderTree/gtk/DumpRenderTree.cpp:
(resetDefaultsToConsistentValues):
* DumpRenderTree/gtk/TestRunnerGtk.cpp:
(TestRunner::overridePreference):
* DumpRenderTree/mac/DumpRenderTree.mm:
(resetWebPreferencesToConsistentValues):
(initializeGlobalsFromCommandLineOptions):
* DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupport.c:
* DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupportPregenerated.pm:
* DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupport_wrapPregenerated.c:
* DumpRenderTree/mac/PerlSupport/Makefile:
* DumpRenderTree/mac/TestRunnerMac.mm:
(TestRunner::setCacheModel):
* MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj:
* MiniBrowser/gtk/CMakeLists.txt:
* MiniBrowser/mac/AppDelegate.h:
* MiniBrowser/mac/AppDelegate.m:
(-[BrowserAppDelegate init]):
(-[BrowserAppDelegate newWindow:]):
(-[BrowserAppDelegate applicationWillTerminate:]):
(-[BrowserAppDelegate openDocument:]):
* MiniBrowser/mac/WK2BrowserWindowController.h:
* MiniBrowser/mac/WK2BrowserWindowController.m:
(-[WK2BrowserWindowController initWithProcessGroup:browsingContextGroup:]):
(-[WK2BrowserWindowController dealloc]):
(-[WK2BrowserWindowController fetch:]):
(-[WK2BrowserWindowController reload:]):
(-[WK2BrowserWindowController goBack:]):
(-[WK2BrowserWindowController goForward:]):
(-[WK2BrowserWindowController validateUserInterfaceItem:]):
(-[WK2BrowserWindowController currentZoomFactor]):
(-[WK2BrowserWindowController setCurrentZoomFactor:]):
(-[WK2BrowserWindowController zoomIn:]):
(-[WK2BrowserWindowController zoomOut:]):
(-[WK2BrowserWindowController canResetZoom]):
(-[WK2BrowserWindowController resetZoom:]):
(-[WK2BrowserWindowController toggleZoomMode:]):
(-[WK2BrowserWindowController observeValueForKeyPath:ofObject:change:context:]):
(createNewPage):
(-[WK2BrowserWindowController awakeFromNib]):
(-[WK2BrowserWindowController updateTextFieldFromURL:]):
(-[WK2BrowserWindowController browsingContextControllerDidStartProvisionalLoad:]):
(-[WK2BrowserWindowController browsingContextControllerDidReceiveServerRedirectForProvisionalLoad:]):
(-[WK2BrowserWindowController browsingContextController:didFailProvisionalLoadWithError:]):
(-[WK2BrowserWindowController browsingContextControllerDidCommitLoad:]):
(-[WK2BrowserWindowController browsingContextController:didFailLoadWithError:]):
(-[WK2BrowserWindowController browsingContextController:didNavigateWithNavigationData:]):
(-[WK2BrowserWindowController browsingContextController:didPerformClientRedirectFromURL:toURL:]):
(-[WK2BrowserWindowController browsingContextController:didPerformServerRedirectFromURL:toURL:]):
(-[WK2BrowserWindowController browsingContextController:didUpdateHistoryTitle:forURL:]):
* Scripts/build-jsc:
* Scripts/compare-webkit-configurations: Added.
(main):
(flag_for_comparison):
(run_webkit_tests):
* Scripts/old-run-webkit-tests:
(dumpToolDidCrash):
* Scripts/run-gtk-tests:
(TestRunner._run_test_glib):
(TestRunner):
(TestRunner._get_tests_from_google_test_suite):
(TestRunner._run_google_test):
(TestRunner._run_google_test_suite):
(TestRunner._run_test):
* Scripts/run-javascriptcore-tests:
* Scripts/webkitdirs.pm:
(visualStudioInstallDir):
(visualStudioVersion):
(setupAppleWinEnv):
(setupCygwinEnv):
* Scripts/webkitperl/FeatureList.pm:
* Scripts/webkitpy/common/config/contributors.json:
* Scripts/webkitpy/common/config/watchlist:
* Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
(CommitQueueFlag):
(Bugzilla._commit_queue_flag):
(Bugzilla._fill_attachment_form):
(Bugzilla.add_patch_to_bug):
(Bugzilla.create_bug):
* Scripts/webkitpy/common/net/bugzilla/bugzilla_unittest.py:
(test_commit_queue_flag.assert_commit_queue_flag):
(test_commit_queue_flag):
* Scripts/webkitpy/common/prettypatch.py:
(PrettyPatch.__init__):
(PrettyPatch.pretty_diff):
(PrettyPatch):
(PrettyPatch.pretty_patch_available):
(PrettyPatch.check_pretty_patch):
(PrettyPatch.pretty_patch_text):
* Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
(SingleTestRunner._run_compare_test):
* Scripts/webkitpy/layout_tests/controllers/test_result_writer.py:
(TestResultWriter.create_text_diff_and_write_result):
* Scripts/webkitpy/layout_tests/models/test_run_results.py:
(summarize_results):
* Scripts/webkitpy/layout_tests/reftests/__init__.py:
* Scripts/webkitpy/layout_tests/reftests/extract_reference_link.py:
* Scripts/webkitpy/layout_tests/reftests/extract_reference_link_unittest.py:
* Scripts/webkitpy/layout_tests/run_webkit_tests.py:
(parse_args):
* Scripts/webkitpy/port/base.py:
(Port.__init__):
(Port.wdiff_available):
(Port.check_image_diff):
(Port.reference_files):
(Port.wdiff_text):
(Port._build_driver):
(Port.logging_patterns_to_strip):
* Scripts/webkitpy/port/base_unittest.py:
(PortTest.test_pretty_patch_os_error):
(PortTest.test_pretty_patch_script_error):
* Scripts/webkitpy/port/driver.py:
(DriverOutput):
(DriverOutput.strip_metrics):
(DriverOutput.strip_patterns):
(Driver.cmd_line):
* Scripts/webkitpy/port/gtk.py:
(GtkPort.setup_environ_for_server):
* Scripts/webkitpy/port/mac.py:
(MacPort.xcrun_find):
(MacPort):
(MacPort.logging_patterns_to_strip):
* Scripts/webkitpy/port/westondriver_unittest.py: Added.
(WestonDriverTest):
(WestonDriverTest.make_driver):
(WestonDriverTest.test_start):
(WestonDriverTest.test_stop):
(WestonDriverTest.test_stop.FakeWestonProcess):
(WestonDriverTest.test_stop.FakeWestonProcess.terminate):
* Scripts/webkitpy/style/checkers/cpp.py:
(check_for_missing_new_line_at_eof):
(check_for_extra_new_line_at_eof):
(check_spacing):
(check_member_initialization_list):
(_process_lines):
* Scripts/webkitpy/style/checkers/cpp_unittest.py:
(CppStyleTest.test_spacing_for_binary_ops):
(CppStyleTest.test_extra_newlines_at_eof):
(CppStyleTest.test_extra_newlines_at_eof.do_test):
(WebKitStyleTest.test_member_initialization_list):
* TestWebKitAPI/CMakeLists.txt:
* TestWebKitAPI/GNUmakefile.am:
* TestWebKitAPI/PlatformGTK.cmake:
* TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPI.vcxproj:
* TestWebKitAPI/Tests/WTF/HashMap.cpp:
(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/WTF/MD5.cpp:
(TestWebKitAPI::expectMD5):
* WebKitTestRunner/CMakeLists.txt:
* WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:
(WTR::AccessibilityUIElement::characterAtOffset):
(WTR::AccessibilityUIElement::wordAtOffset):
(WTR::AccessibilityUIElement::lineAtOffset):
(WTR::AccessibilityUIElement::sentenceAtOffset):
* WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
* WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
* WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
(WTR::AccessibilityUIElement::role):
(WTR::AccessibilityUIElement::stringForRange):
(WTR::stringAtOffset):
(WTR::AccessibilityUIElement::characterAtOffset):
(WTR::AccessibilityUIElement::wordAtOffset):
(WTR::AccessibilityUIElement::lineAtOffset):
(WTR::AccessibilityUIElement::sentenceAtOffset):
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::TestController):
(WTR::TestController::initialize):
(WTR::TestController::resetPreferencesToConsistentValues):
* WebKitTestRunner/TestController.h:
(WTR::TestController::shouldUseRemoteLayerTree):
* WebKitTestRunner/TestInvocation.cpp:
(WTR::updateThreadedScrollingForCurrentTest):
* WebKitTestRunner/cairo/TestInvocationCairo.cpp:
(WTR::computeMD5HashStringForCairoSurface):
* WebKitTestRunner/cg/TestInvocationCG.cpp:
(WTR::computeMD5HashStringForContext):
* WebKitTestRunner/mac/PlatformWebViewMac.mm:
(WTR::PlatformWebView::PlatformWebView):
* WinLauncher/WinLauncher.vcxproj/WinLauncher.vcxproj:
* WinLauncher/WinLauncher.vcxproj/WinLauncherLib.vcxproj:
* gdb/webkit.py:
(WTFCStringPrinter.to_string):
(JSCJSStringPrinter.to_string):
* gtk/common.py:
(get_build_path):
* gtk/generate-gtkdoc:
(get_webkit2_options):
* gtk/install-dependencies:
* gtk/jhbuild.modules:
* gtk/ycm_extra_conf.py: Added.
(transform_relative_paths_to_absolute_paths):
(create_make_trace_file):
(make_trace_file_up_to_date):
(ensure_make_trace_file):
(get_compilation_flags_from_build_commandline):
(get_compilation_flags_for_file):
(FlagsForFile):
* win/record-memory/record-memory.vcxproj:

LayoutTests: 

* TestExpectations:
* accessibility/adjacent-continuations-cause-assertion-failure-expected.txt:
* accessibility/alt-tag-on-image-with-nonimage-role-expected.txt: Added.
* accessibility/alt-tag-on-image-with-nonimage-role.html: Added.
* accessibility/aria-hidden-negates-no-visibility-expected.txt: Added.
* accessibility/aria-mappings-expected.txt:
* accessibility/children-changed-sends-notification-expected.txt: Added.
* accessibility/children-changed-sends-notification.html: Added.
* accessibility/div-within-anchors-causes-crash-expected.txt:
* accessibility/press-targets-center-point.html:
* animations/resources/animation-test-helpers.js:
(parseBasicShape):
(basicShapeParametersMatch):
* crypto/subtle/aes-cbc-192-encrypt-decrypt-expected.txt:
* crypto/subtle/aes-cbc-192-encrypt-decrypt.html:
* crypto/subtle/aes-cbc-256-encrypt-decrypt-expected.txt:
* crypto/subtle/aes-cbc-256-encrypt-decrypt.html:
* crypto/subtle/aes-cbc-encrypt-decrypt-expected.txt:
* crypto/subtle/aes-cbc-encrypt-decrypt-with-padding-expected.txt:
* crypto/subtle/aes-cbc-encrypt-decrypt-with-padding.html:
* crypto/subtle/aes-cbc-encrypt-decrypt.html:
* crypto/subtle/aes-cbc-generate-key-expected.txt:
* crypto/subtle/aes-cbc-generate-key.html:
* crypto/subtle/aes-cbc-import-jwk-expected.txt:
* crypto/subtle/aes-cbc-import-jwk.html:
* crypto/subtle/aes-cbc-invalid-length-expected.txt:
* crypto/subtle/aes-cbc-invalid-length.html:
* crypto/subtle/aes-cbc-unwrap-failure-expected.txt:
* crypto/subtle/aes-cbc-unwrap-failure.html:
* crypto/subtle/aes-cbc-unwrap-rsa-expected.txt:
* crypto/subtle/aes-cbc-unwrap-rsa.html:
* crypto/subtle/aes-cbc-wrap-rsa-expected.txt:
* crypto/subtle/aes-cbc-wrap-rsa-non-extractable-expected.txt:
* crypto/subtle/aes-cbc-wrap-rsa-non-extractable.html:
* crypto/subtle/aes-cbc-wrap-rsa.html:
* crypto/subtle/aes-kw-key-manipulation-expected.txt:
* crypto/subtle/aes-kw-key-manipulation.html:
* crypto/subtle/aes-kw-wrap-unwrap-aes-expected.txt:
* crypto/subtle/aes-kw-wrap-unwrap-aes.html:
* crypto/subtle/aes-postMessage-expected.txt: Added.
* crypto/subtle/aes-postMessage.html: Added.
* crypto/subtle/hmac-generate-key-expected.txt:
* crypto/subtle/hmac-generate-key.html:
* crypto/subtle/hmac-import-jwk-expected.txt:
* crypto/subtle/hmac-import-jwk.html:
* crypto/subtle/hmac-postMessage-expected.txt: Added.
* crypto/subtle/hmac-postMessage.html: Added.
* crypto/subtle/hmac-sign-verify-empty-key-expected.txt:
* crypto/subtle/hmac-sign-verify-empty-key.html:
* crypto/subtle/hmac-sign-verify-expected.txt:
* crypto/subtle/hmac-sign-verify.html:
* crypto/subtle/jwk-import-use-values-expected.txt:
* crypto/subtle/jwk-import-use-values.html:
* crypto/subtle/postMessage-worker-expected.txt: Added.
* crypto/subtle/postMessage-worker.html: Added.
* crypto/subtle/resources/postMessage-worker.js: Added.
(onmessage):
* crypto/subtle/rsa-oaep-generate-non-extractable-key-expected.txt: Added.
* crypto/subtle/rsa-oaep-generate-non-extractable-key.html: Added.
* crypto/subtle/rsa-oaep-key-manipulation-expected.txt:
* crypto/subtle/rsa-oaep-key-manipulation.html:
* crypto/subtle/rsa-oaep-wrap-unwrap-aes-expected.txt:
* crypto/subtle/rsa-oaep-wrap-unwrap-aes.html:
* crypto/subtle/rsa-postMessage-expected.txt: Added.
* crypto/subtle/rsa-postMessage.html: Added.
* crypto/subtle/rsaes-pkcs1-v1_5-decrypt-expected.txt: Added.
* crypto/subtle/rsaes-pkcs1-v1_5-decrypt.html: Added.
* crypto/subtle/rsaes-pkcs1-v1_5-wrap-unwrap-aes-expected.txt: Added.
* crypto/subtle/rsaes-pkcs1-v1_5-wrap-unwrap-aes.html: Added.
* crypto/subtle/rsassa-pkcs1-v1_5-generate-key-expected.txt:
* crypto/subtle/rsassa-pkcs1-v1_5-generate-key.html:
* crypto/subtle/rsassa-pkcs1-v1_5-import-jwk-expected.txt:
* crypto/subtle/rsassa-pkcs1-v1_5-import-jwk.html:
* crypto/subtle/unwrapKey-check-usage-expected.txt: Added.
* crypto/subtle/unwrapKey-check-usage.html: Added.
* crypto/subtle/wrapKey-check-usage-expected.txt: Added.
* crypto/subtle/wrapKey-check-usage.html: Added.
* dom/xhtml/level3/core/documentgetinputencoding04-expected.txt:
* dom/xhtml/level3/core/documentgetxmlencoding05-expected.txt:
* dom/xhtml/level3/core/nodeisequalnode01-expected.txt:
* dom/xhtml/level3/core/nodeisequalnode21-expected.txt:
* dom/xhtml/level3/core/nodeisequalnode25-expected.txt:
* dom/xhtml/level3/core/nodeisequalnode26-expected.txt:
* fast/css-grid-layout/grid-item-column-row-get-set-expected.txt:
* fast/css-grid-layout/grid-item-column-row-get-set.html:
* fast/css-grid-layout/grid-item-end-after-get-set-expected.txt:
* fast/css-grid-layout/grid-item-end-after-get-set.html:
* fast/css-grid-layout/grid-item-start-before-get-set-expected.txt:
* fast/css-grid-layout/grid-item-start-before-get-set.html:
* fast/css-grid-layout/resources/grid-item-column-row-parsing-utils.js:
* fast/css/getComputedStyle/getComputedStyle-border-radius-shorthand-expected.txt:
* fast/css/getComputedStyle/getComputedStyle-border-radius-shorthand.html:
* fast/css/nth-last-child-recalc-expected.html: Added.
* fast/css/nth-last-child-recalc.html: Added.
* fast/css/pending-image-crash-expected.txt: Added.
* fast/css/pending-image-crash.xhtml: Added.
* fast/css/style-sharing-grand-parent-invalidate-expected.txt: Added.
* fast/css/style-sharing-grand-parent-invalidate.html: Added.
* fast/dom/Document/clone-node-expected.txt: Added.
* fast/dom/Document/clone-node.html: Added.
* fast/dom/HTMLDocument/clone-node-quirks-mode-expected.txt: Added.
* fast/dom/HTMLDocument/clone-node-quirks-mode.html: Added.
* fast/dom/HTMLTableElement/empy-table-cell-with-background-color-expected.txt: Added.
* fast/dom/HTMLTableElement/empy-table-cell-with-background-color.html: Added.
* fast/dom/Window/postMessage-clone-port-error-expected.txt: Added.
* fast/dom/Window/postMessage-clone-port-error.html: Added.
* fast/events/message-port-clone-expected.txt:
* fast/events/message-port-multi-expected.txt:
* fast/events/stopPropagation-submit-expected.txt:
* fast/forms/input-image-submit.html:
* fast/mediastream/RTCPeerConnection-createAnswer-expected.txt:
* fast/mediastream/RTCPeerConnection-createAnswer.html:
* fast/mediastream/RTCPeerConnection-createOffer-expected.txt:
* fast/mediastream/RTCPeerConnection-createOffer.html:
* fast/shapes/shape-outside-floats/shape-outside-animation-expected.txt:
* fast/shapes/shape-outside-floats/shape-outside-animation.html:
* fast/shapes/shape-outside-floats/shape-outside-floats-different-writing-modes.html:
* fast/table/auto-100-percent-width-expected.txt:
* inspector-protocol/model/highlight-shape-outside-margin-expected.txt: Added.
* inspector-protocol/model/highlight-shape-outside-margin.html: Added.
* inspector-protocol/model/highlight-shape-outside.html:
* inspector-protocol/page/deny-X-FrameOption-expected.txt: Added.
* inspector-protocol/page/deny-X-FrameOption.html: Added.
* inspector-protocol/resources/shape-info-helper.js:
(window.ShapeInfoHelper.):
(window.ShapeInfoHelper):
* media/media-source/media-source-canplaythrough.html:
* media/media-source/media-source-end-of-stream-expected.txt: Added.
* media/media-source/media-source-end-of-stream.html: Added.
* media/media-source/media-source-play.html:
* media/media-source/media-source-video-playback-quality-expected.txt: Added.
* media/media-source/media-source-video-playback-quality.html: Added.
* media/media-source/mock-media-source.js:
(var):
* platform/efl-wk1/accessibility/image-map2-expected.txt:
* platform/efl-wk1/accessibility/lists-expected.txt:
* platform/efl-wk1/accessibility/transformed-element-expected.txt:
* platform/efl-wk2/TestExpectations:
* platform/efl-wk2/accessibility/image-map2-expected.txt:
* platform/efl-wk2/accessibility/lists-expected.txt:
* platform/efl-wk2/accessibility/transformed-element-expected.txt:
* platform/efl/TestExpectations:
* platform/efl/accessibility/media-emits-object-replacement-expected.txt:
* platform/efl/fast/forms/validation-message-appearance-expected.txt:
* platform/efl/fast/parser/entity-comment-in-textarea-expected.txt:
* platform/efl/fast/table/empty-cells-expected.txt:
* platform/efl/http/tests/misc/will-send-request-returns-null-on-redirect-expected.txt:
* platform/efl/http/tests/security/XFrameOptions/x-frame-options-deny-meta-tag-expected.txt:
* platform/efl/http/tests/security/XFrameOptions/x-frame-options-deny-meta-tag-parent-same-origin-deny-expected.txt:
* platform/gtk/TestExpectations:
* platform/gtk/accessibility/aria-roles-unignored-expected.txt:
* platform/gtk/accessibility/aria-roles-unignored.html:
* platform/gtk/accessibility/entry-and-password-expected.txt:
* platform/gtk/accessibility/image-map2-expected.txt:
* platform/gtk/accessibility/lists-expected.txt:
* platform/gtk/accessibility/media-emits-object-replacement-expected.txt:
* platform/gtk/accessibility/object-with-title-expected.txt:
* platform/gtk/accessibility/object-with-title.html:
* platform/gtk/accessibility/replaced-objects-in-anonymous-blocks-expected.txt:
* platform/gtk/accessibility/spans-paragraphs-and-divs-expected.txt:
* platform/gtk/accessibility/spans-paragraphs-and-divs.html:
* platform/gtk/accessibility/text-at-offset-embedded-objects-expected.txt: Added.
* platform/gtk/accessibility/text-at-offset-embedded-objects.html: Added.
* platform/gtk/accessibility/text-at-offset-newlines-expected.txt: Added.
* platform/gtk/accessibility/text-at-offset-newlines.html: Added.
* platform/gtk/accessibility/text-at-offset-preformatted-expected.txt: Added.
* platform/gtk/accessibility/text-at-offset-preformatted.html: Added.
* platform/gtk/accessibility/text-at-offset-simple-expected.txt: Added.
* platform/gtk/accessibility/text-at-offset-simple.html: Added.
* platform/gtk/accessibility/text-at-offset-special-chars-expected.txt: Added.
* platform/gtk/accessibility/text-at-offset-special-chars.html: Added.
* platform/gtk/accessibility/text-at-offset-textarea-expected.txt: Added.
* platform/gtk/accessibility/text-at-offset-textarea.html: Added.
* platform/gtk/accessibility/text-at-offset-textinput-expected.txt: Added.
* platform/gtk/accessibility/text-at-offset-textinput.html: Added.
* platform/gtk/accessibility/text-at-offset-wrapped-lines-expected.txt: Added.
* platform/gtk/accessibility/text-at-offset-wrapped-lines.html: Added.
* platform/gtk/accessibility/text-for-range-combo-box-expected.txt: Added.
* platform/gtk/accessibility/text-for-range-combo-box.html: Added.
* platform/gtk/accessibility/text-for-range-embedded-objects-expected.txt: Added.
* platform/gtk/accessibility/text-for-range-embedded-objects.html: Added.
* platform/gtk/accessibility/text-for-range-entry-and-password-expected.txt: Added.
* platform/gtk/accessibility/text-for-range-entry-and-password.html: Added.
* platform/gtk/accessibility/text-for-range-extraneous-whitespace-expected.txt: Added.
* platform/gtk/accessibility/text-for-range-extraneous-whitespace.html: Added.
* platform/gtk/accessibility/text-for-range-formatted-expected.txt: Added.
* platform/gtk/accessibility/text-for-range-formatted.html: Added.
* platform/gtk/accessibility/text-for-range-heading-expected.txt: Added.
* platform/gtk/accessibility/text-for-range-heading.html: Added.
* platform/gtk/accessibility/text-for-range-list-items-expected.txt: Added.
* platform/gtk/accessibility/text-for-range-list-items.html: Added.
* platform/gtk/accessibility/text-for-range-simple-expected.txt: Added.
* platform/gtk/accessibility/text-for-range-simple.html: Added.
* platform/gtk/accessibility/text-for-range-table-cells-expected.txt: Added.
* platform/gtk/accessibility/text-for-range-table-cells.html: Added.
* platform/gtk/accessibility/text-for-range-with-link-expected.txt: Added.
* platform/gtk/accessibility/text-for-range-with-link.html: Added.
* platform/gtk/accessibility/text-for-table-expected.txt: Added.
* platform/gtk/accessibility/text-for-table.html: Added.
* platform/gtk/accessibility/transformed-element-expected.txt:
* platform/gtk/fast/events/stopPropagation-submit-expected.txt:
* platform/mac/accessibility/aria-hidden-negates-no-visibility-expected.txt:
* platform/mac/fast/table/empty-cells-expected.txt:
* svg/custom/clone-node-expected.txt: Added.
* svg/custom/clone-node.html: Added.
* svg/dom/SVGScriptElement/script-type-attribute-expected.txt: Added.
* svg/dom/SVGScriptElement/script-type-attribute.svg: Added.
* tables/mozilla/bugs/bug1818-6-expected.txt:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#branchesjsCStackgitignore">branches/jsCStack/.gitignore</a></li>
<li><a href="#branchesjsCStackChangeLog">branches/jsCStack/ChangeLog</a></li>
<li><a href="#branchesjsCStackLayoutTestsChangeLog">branches/jsCStack/LayoutTests/ChangeLog</a></li>
<li><a href="#branchesjsCStackLayoutTestsTestExpectations">branches/jsCStack/LayoutTests/TestExpectations</a></li>
<li><a href="#branchesjsCStackLayoutTestsaccessibilityadjacentcontinuationscauseassertionfailureexpectedtxt">branches/jsCStack/LayoutTests/accessibility/adjacent-continuations-cause-assertion-failure-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsaccessibilityariamappingsexpectedtxt">branches/jsCStack/LayoutTests/accessibility/aria-mappings-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsaccessibilitydivwithinanchorscausescrashexpectedtxt">branches/jsCStack/LayoutTests/accessibility/div-within-anchors-causes-crash-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsaccessibilitypresstargetscenterpointhtml">branches/jsCStack/LayoutTests/accessibility/press-targets-center-point.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsanimationsresourcesanimationtesthelpersjs">branches/jsCStack/LayoutTests/animations/resources/animation-test-helpers.js</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtleaescbc192encryptdecryptexpectedtxt">branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-192-encrypt-decrypt-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtleaescbc192encryptdecrypthtml">branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-192-encrypt-decrypt.html</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtleaescbc256encryptdecryptexpectedtxt">branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-256-encrypt-decrypt-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtleaescbc256encryptdecrypthtml">branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-256-encrypt-decrypt.html</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtleaescbcencryptdecryptexpectedtxt">branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-encrypt-decrypt-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtleaescbcencryptdecryptwithpaddingexpectedtxt">branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-encrypt-decrypt-with-padding-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtleaescbcencryptdecryptwithpaddinghtml">branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-encrypt-decrypt-with-padding.html</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtleaescbcencryptdecrypthtml">branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-encrypt-decrypt.html</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtleaescbcgeneratekeyexpectedtxt">branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-generate-key-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtleaescbcgeneratekeyhtml">branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-generate-key.html</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtleaescbcimportjwkexpectedtxt">branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-import-jwk-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtleaescbcimportjwkhtml">branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-import-jwk.html</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtleaescbcinvalidlengthexpectedtxt">branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-invalid-length-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtleaescbcinvalidlengthhtml">branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-invalid-length.html</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtleaescbcunwrapfailureexpectedtxt">branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-unwrap-failure-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtleaescbcunwrapfailurehtml">branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-unwrap-failure.html</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtleaescbcunwraprsaexpectedtxt">branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-unwrap-rsa-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtleaescbcunwraprsahtml">branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-unwrap-rsa.html</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtleaescbcwraprsaexpectedtxt">branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-wrap-rsa-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtleaescbcwraprsanonextractableexpectedtxt">branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-wrap-rsa-non-extractable-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtleaescbcwraprsanonextractablehtml">branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-wrap-rsa-non-extractable.html</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtleaescbcwraprsahtml">branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-wrap-rsa.html</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtleaeskwkeymanipulationexpectedtxt">branches/jsCStack/LayoutTests/crypto/subtle/aes-kw-key-manipulation-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtleaeskwkeymanipulationhtml">branches/jsCStack/LayoutTests/crypto/subtle/aes-kw-key-manipulation.html</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtleaeskwwrapunwrapaesexpectedtxt">branches/jsCStack/LayoutTests/crypto/subtle/aes-kw-wrap-unwrap-aes-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtleaeskwwrapunwrapaeshtml">branches/jsCStack/LayoutTests/crypto/subtle/aes-kw-wrap-unwrap-aes.html</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtlehmacgeneratekeyexpectedtxt">branches/jsCStack/LayoutTests/crypto/subtle/hmac-generate-key-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtlehmacgeneratekeyhtml">branches/jsCStack/LayoutTests/crypto/subtle/hmac-generate-key.html</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtlehmacimportjwkexpectedtxt">branches/jsCStack/LayoutTests/crypto/subtle/hmac-import-jwk-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtlehmacimportjwkhtml">branches/jsCStack/LayoutTests/crypto/subtle/hmac-import-jwk.html</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtlehmacsignverifyemptykeyexpectedtxt">branches/jsCStack/LayoutTests/crypto/subtle/hmac-sign-verify-empty-key-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtlehmacsignverifyemptykeyhtml">branches/jsCStack/LayoutTests/crypto/subtle/hmac-sign-verify-empty-key.html</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtlehmacsignverifyexpectedtxt">branches/jsCStack/LayoutTests/crypto/subtle/hmac-sign-verify-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtlehmacsignverifyhtml">branches/jsCStack/LayoutTests/crypto/subtle/hmac-sign-verify.html</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtlejwkimportusevaluesexpectedtxt">branches/jsCStack/LayoutTests/crypto/subtle/jwk-import-use-values-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtlejwkimportusevalueshtml">branches/jsCStack/LayoutTests/crypto/subtle/jwk-import-use-values.html</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtlersaoaepkeymanipulationexpectedtxt">branches/jsCStack/LayoutTests/crypto/subtle/rsa-oaep-key-manipulation-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtlersaoaepkeymanipulationhtml">branches/jsCStack/LayoutTests/crypto/subtle/rsa-oaep-key-manipulation.html</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtlersaoaepwrapunwrapaesexpectedtxt">branches/jsCStack/LayoutTests/crypto/subtle/rsa-oaep-wrap-unwrap-aes-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtlersaoaepwrapunwrapaeshtml">branches/jsCStack/LayoutTests/crypto/subtle/rsa-oaep-wrap-unwrap-aes.html</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtlersassapkcs1v1_5generatekeyexpectedtxt">branches/jsCStack/LayoutTests/crypto/subtle/rsassa-pkcs1-v1_5-generate-key-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtlersassapkcs1v1_5generatekeyhtml">branches/jsCStack/LayoutTests/crypto/subtle/rsassa-pkcs1-v1_5-generate-key.html</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtlersassapkcs1v1_5importjwkexpectedtxt">branches/jsCStack/LayoutTests/crypto/subtle/rsassa-pkcs1-v1_5-import-jwk-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtlersassapkcs1v1_5importjwkhtml">branches/jsCStack/LayoutTests/crypto/subtle/rsassa-pkcs1-v1_5-import-jwk.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsdomxhtmllevel3coredocumentgetinputencoding04expectedtxt">branches/jsCStack/LayoutTests/dom/xhtml/level3/core/documentgetinputencoding04-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsdomxhtmllevel3coredocumentgetxmlencoding05expectedtxt">branches/jsCStack/LayoutTests/dom/xhtml/level3/core/documentgetxmlencoding05-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsdomxhtmllevel3corenodeisequalnode01expectedtxt">branches/jsCStack/LayoutTests/dom/xhtml/level3/core/nodeisequalnode01-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsdomxhtmllevel3corenodeisequalnode21expectedtxt">branches/jsCStack/LayoutTests/dom/xhtml/level3/core/nodeisequalnode21-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsdomxhtmllevel3corenodeisequalnode25expectedtxt">branches/jsCStack/LayoutTests/dom/xhtml/level3/core/nodeisequalnode25-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsdomxhtmllevel3corenodeisequalnode26expectedtxt">branches/jsCStack/LayoutTests/dom/xhtml/level3/core/nodeisequalnode26-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsfastcssgetComputedStylegetComputedStyleborderradiusshorthandexpectedtxt">branches/jsCStack/LayoutTests/fast/css/getComputedStyle/getComputedStyle-border-radius-shorthand-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsfastcssgetComputedStylegetComputedStyleborderradiusshorthandhtml">branches/jsCStack/LayoutTests/fast/css/getComputedStyle/getComputedStyle-border-radius-shorthand.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsfastcssgridlayoutgriditemcolumnrowgetsetexpectedtxt">branches/jsCStack/LayoutTests/fast/css-grid-layout/grid-item-column-row-get-set-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsfastcssgridlayoutgriditemcolumnrowgetsethtml">branches/jsCStack/LayoutTests/fast/css-grid-layout/grid-item-column-row-get-set.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsfastcssgridlayoutgriditemendaftergetsetexpectedtxt">branches/jsCStack/LayoutTests/fast/css-grid-layout/grid-item-end-after-get-set-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsfastcssgridlayoutgriditemendaftergetsethtml">branches/jsCStack/LayoutTests/fast/css-grid-layout/grid-item-end-after-get-set.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsfastcssgridlayoutgriditemstartbeforegetsetexpectedtxt">branches/jsCStack/LayoutTests/fast/css-grid-layout/grid-item-start-before-get-set-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsfastcssgridlayoutgriditemstartbeforegetsethtml">branches/jsCStack/LayoutTests/fast/css-grid-layout/grid-item-start-before-get-set.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsfastcssgridlayoutresourcesgriditemcolumnrowparsingutilsjs">branches/jsCStack/LayoutTests/fast/css-grid-layout/resources/grid-item-column-row-parsing-utils.js</a></li>
<li><a href="#branchesjsCStackLayoutTestsfasteventsmessageportcloneexpectedtxt">branches/jsCStack/LayoutTests/fast/events/message-port-clone-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsfasteventsmessageportmultiexpectedtxt">branches/jsCStack/LayoutTests/fast/events/message-port-multi-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsfasteventsstopPropagationsubmitexpectedtxt">branches/jsCStack/LayoutTests/fast/events/stopPropagation-submit-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsfastformsinputimagesubmithtml">branches/jsCStack/LayoutTests/fast/forms/input-image-submit.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsfastmediastreamRTCPeerConnectioncreateAnswerexpectedtxt">branches/jsCStack/LayoutTests/fast/mediastream/RTCPeerConnection-createAnswer-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsfastmediastreamRTCPeerConnectioncreateAnswerhtml">branches/jsCStack/LayoutTests/fast/mediastream/RTCPeerConnection-createAnswer.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsfastmediastreamRTCPeerConnectioncreateOfferexpectedtxt">branches/jsCStack/LayoutTests/fast/mediastream/RTCPeerConnection-createOffer-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsfastmediastreamRTCPeerConnectioncreateOfferhtml">branches/jsCStack/LayoutTests/fast/mediastream/RTCPeerConnection-createOffer.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsfastshapesshapeoutsidefloatsshapeoutsideanimationexpectedtxt">branches/jsCStack/LayoutTests/fast/shapes/shape-outside-floats/shape-outside-animation-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsfastshapesshapeoutsidefloatsshapeoutsideanimationhtml">branches/jsCStack/LayoutTests/fast/shapes/shape-outside-floats/shape-outside-animation.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsfastshapesshapeoutsidefloatsshapeoutsidefloatsdifferentwritingmodeshtml">branches/jsCStack/LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-different-writing-modes.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsfasttableauto100percentwidthexpectedtxt">branches/jsCStack/LayoutTests/fast/table/auto-100-percent-width-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsinspectorprotocolmodelhighlightshapeoutsidehtml">branches/jsCStack/LayoutTests/inspector-protocol/model/highlight-shape-outside.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsinspectorprotocolresourcesshapeinfohelperjs">branches/jsCStack/LayoutTests/inspector-protocol/resources/shape-info-helper.js</a></li>
<li><a href="#branchesjsCStackLayoutTestsmediamediasourcemediasourcecanplaythroughhtml">branches/jsCStack/LayoutTests/media/media-source/media-source-canplaythrough.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsmediamediasourcemediasourceplayhtml">branches/jsCStack/LayoutTests/media/media-source/media-source-play.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsmediamediasourcemockmediasourcejs">branches/jsCStack/LayoutTests/media/media-source/mock-media-source.js</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformeflTestExpectations">branches/jsCStack/LayoutTests/platform/efl/TestExpectations</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformeflaccessibilitymediaemitsobjectreplacementexpectedtxt">branches/jsCStack/LayoutTests/platform/efl/accessibility/media-emits-object-replacement-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformeflfastformsvalidationmessageappearanceexpectedtxt">branches/jsCStack/LayoutTests/platform/efl/fast/forms/validation-message-appearance-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformeflfastparserentitycommentintextareaexpectedtxt">branches/jsCStack/LayoutTests/platform/efl/fast/parser/entity-comment-in-textarea-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformeflfasttableemptycellsexpectedtxt">branches/jsCStack/LayoutTests/platform/efl/fast/table/empty-cells-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformeflhttptestsmiscwillsendrequestreturnsnullonredirectexpectedtxt">branches/jsCStack/LayoutTests/platform/efl/http/tests/misc/will-send-request-returns-null-on-redirect-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformeflhttptestssecurityXFrameOptionsxframeoptionsdenymetatagexpectedtxt">branches/jsCStack/LayoutTests/platform/efl/http/tests/security/XFrameOptions/x-frame-options-deny-meta-tag-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformeflhttptestssecurityXFrameOptionsxframeoptionsdenymetatagparentsameorigindenyexpectedtxt">branches/jsCStack/LayoutTests/platform/efl/http/tests/security/XFrameOptions/x-frame-options-deny-meta-tag-parent-same-origin-deny-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformeflwk1accessibilityimagemap2expectedtxt">branches/jsCStack/LayoutTests/platform/efl-wk1/accessibility/image-map2-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformeflwk1accessibilitylistsexpectedtxt">branches/jsCStack/LayoutTests/platform/efl-wk1/accessibility/lists-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformeflwk1accessibilitytransformedelementexpectedtxt">branches/jsCStack/LayoutTests/platform/efl-wk1/accessibility/transformed-element-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformeflwk2TestExpectations">branches/jsCStack/LayoutTests/platform/efl-wk2/TestExpectations</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformeflwk2accessibilityimagemap2expectedtxt">branches/jsCStack/LayoutTests/platform/efl-wk2/accessibility/image-map2-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformeflwk2accessibilitylistsexpectedtxt">branches/jsCStack/LayoutTests/platform/efl-wk2/accessibility/lists-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformeflwk2accessibilitytransformedelementexpectedtxt">branches/jsCStack/LayoutTests/platform/efl-wk2/accessibility/transformed-element-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkTestExpectations">branches/jsCStack/LayoutTests/platform/gtk/TestExpectations</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilityariarolesunignoredexpectedtxt">branches/jsCStack/LayoutTests/platform/gtk/accessibility/aria-roles-unignored-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilityariarolesunignoredhtml">branches/jsCStack/LayoutTests/platform/gtk/accessibility/aria-roles-unignored.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilityentryandpasswordexpectedtxt">branches/jsCStack/LayoutTests/platform/gtk/accessibility/entry-and-password-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilityimagemap2expectedtxt">branches/jsCStack/LayoutTests/platform/gtk/accessibility/image-map2-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitylistsexpectedtxt">branches/jsCStack/LayoutTests/platform/gtk/accessibility/lists-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitymediaemitsobjectreplacementexpectedtxt">branches/jsCStack/LayoutTests/platform/gtk/accessibility/media-emits-object-replacement-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilityobjectwithtitleexpectedtxt">branches/jsCStack/LayoutTests/platform/gtk/accessibility/object-with-title-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilityobjectwithtitlehtml">branches/jsCStack/LayoutTests/platform/gtk/accessibility/object-with-title.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilityreplacedobjectsinanonymousblocksexpectedtxt">branches/jsCStack/LayoutTests/platform/gtk/accessibility/replaced-objects-in-anonymous-blocks-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilityspansparagraphsanddivsexpectedtxt">branches/jsCStack/LayoutTests/platform/gtk/accessibility/spans-paragraphs-and-divs-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilityspansparagraphsanddivshtml">branches/jsCStack/LayoutTests/platform/gtk/accessibility/spans-paragraphs-and-divs.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitytransformedelementexpectedtxt">branches/jsCStack/LayoutTests/platform/gtk/accessibility/transformed-element-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkfasteventsstopPropagationsubmitexpectedtxt">branches/jsCStack/LayoutTests/platform/gtk/fast/events/stopPropagation-submit-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformmacaccessibilityariahiddennegatesnovisibilityexpectedtxt">branches/jsCStack/LayoutTests/platform/mac/accessibility/aria-hidden-negates-no-visibility-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformmacfasttableemptycellsexpectedtxt">branches/jsCStack/LayoutTests/platform/mac/fast/table/empty-cells-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTeststablesmozillabugsbug18186expectedtxt">branches/jsCStack/LayoutTests/tables/mozilla/bugs/bug1818-6-expected.txt</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreAPIJSBasePrivateh">branches/jsCStack/Source/JavaScriptCore/API/JSBasePrivate.h</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreAPIJSContexth">branches/jsCStack/Source/JavaScriptCore/API/JSContext.h</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreAPIJSContextmm">branches/jsCStack/Source/JavaScriptCore/API/JSContext.mm</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreAPIJSContextRefh">branches/jsCStack/Source/JavaScriptCore/API/JSContextRef.h</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreAPIJSContextRefPrivateh">branches/jsCStack/Source/JavaScriptCore/API/JSContextRefPrivate.h</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreAPIJSManagedValueh">branches/jsCStack/Source/JavaScriptCore/API/JSManagedValue.h</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreAPIJSManagedValuemm">branches/jsCStack/Source/JavaScriptCore/API/JSManagedValue.mm</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreAPIJSObjectRefh">branches/jsCStack/Source/JavaScriptCore/API/JSObjectRef.h</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreAPIJSStringRefCFh">branches/jsCStack/Source/JavaScriptCore/API/JSStringRefCF.h</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreAPIJSValueh">branches/jsCStack/Source/JavaScriptCore/API/JSValue.h</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreAPIJSValueRefh">branches/jsCStack/Source/JavaScriptCore/API/JSValueRef.h</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreAPIJSVirtualMachineh">branches/jsCStack/Source/JavaScriptCore/API/JSVirtualMachine.h</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreAPIJSVirtualMachinemm">branches/jsCStack/Source/JavaScriptCore/API/JSVirtualMachine.mm</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreAPIteststestapic">branches/jsCStack/Source/JavaScriptCore/API/tests/testapi.c</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreAPIteststestapimm">branches/jsCStack/Source/JavaScriptCore/API/tests/testapi.mm</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreCMakeListstxt">branches/jsCStack/Source/JavaScriptCore/CMakeLists.txt</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreChangeLog">branches/jsCStack/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreConfigurationsVersionxcconfig">branches/jsCStack/Source/JavaScriptCore/Configurations/Version.xcconfig</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreDerivedSourcesmake">branches/jsCStack/Source/JavaScriptCore/DerivedSources.make</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreGNUmakefileam">branches/jsCStack/Source/JavaScriptCore/GNUmakefile.am</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreGNUmakefilelistam">branches/jsCStack/Source/JavaScriptCore/GNUmakefile.list.am</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreJavaScriptCorevcxprojJavaScriptCorevcxproj">branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreJavaScriptCorevcxprojJavaScriptCorevcxprojfilters">branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreJavaScriptCorevcxprojJavaScriptCoreCommonprops">branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreCommon.props</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreJavaScriptCorevcxprojLLIntLLIntOffsetsExtractorLLIntOffsetsExtractorvcxproj">branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractor.vcxproj</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreJavaScriptCorevcxprojbuildgeneratedfilessh">branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.vcxproj/build-generated-files.sh</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreJavaScriptCorevcxprojcopyfilescmd">branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.vcxproj/copy-files.cmd</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreJavaScriptCorevcxprojjscjscvcxproj">branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.vcxproj/jsc/jsc.vcxproj</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreJavaScriptCorevcxprojtestRegExptestRegExpvcxproj">branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreJavaScriptCorevcxprojtestapitestapivcxproj">branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.vcxproj/testapi/testapi.vcxproj</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreJavaScriptCorexcodeprojprojectpbxproj">branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCorebytecodeCodeBlockHashcpp">branches/jsCStack/Source/JavaScriptCore/bytecode/CodeBlockHash.cpp</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCorebytecodeOpcodecpp">branches/jsCStack/Source/JavaScriptCore/bytecode/Opcode.cpp</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoredfgDFGCSEPhasecpp">branches/jsCStack/Source/JavaScriptCore/dfg/DFGCSEPhase.cpp</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoredocsmakebytecodedocspl">branches/jsCStack/Source/JavaScriptCore/docs/make-bytecode-docs.pl</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreftlFTLAbstractHeaph">branches/jsCStack/Source/JavaScriptCore/ftl/FTLAbstractHeap.h</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreheapHeapcpp">branches/jsCStack/Source/JavaScriptCore/heap/Heap.cpp</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreheapHeaph">branches/jsCStack/Source/JavaScriptCore/heap/Heap.h</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreheapMarkedSpaceh">branches/jsCStack/Source/JavaScriptCore/heap/MarkedSpace.h</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCorejitJITOperationscpp">branches/jsCStack/Source/JavaScriptCore/jit/JITOperations.cpp</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCorejsccpp">branches/jsCStack/Source/JavaScriptCore/jsc.cpp</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoremakegeneratedsourcessh">branches/jsCStack/Source/JavaScriptCore/make-generated-sources.sh</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreofflineasmmipsrb">branches/jsCStack/Source/JavaScriptCore/offlineasm/mips.rb</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreofflineasmsh4rb">branches/jsCStack/Source/JavaScriptCore/offlineasm/sh4.rb</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreparserASTBuilderh">branches/jsCStack/Source/JavaScriptCore/parser/ASTBuilder.h</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreparserParsercpp">branches/jsCStack/Source/JavaScriptCore/parser/Parser.cpp</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreparserParserh">branches/jsCStack/Source/JavaScriptCore/parser/Parser.h</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreparserParserArenah">branches/jsCStack/Source/JavaScriptCore/parser/ParserArena.h</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreparserSyntaxCheckerh">branches/jsCStack/Source/JavaScriptCore/parser/SyntaxChecker.h</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreruntimeCodeCacheh">branches/jsCStack/Source/JavaScriptCore/runtime/CodeCache.h</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreruntimeDateInstanceCacheh">branches/jsCStack/Source/JavaScriptCore/runtime/DateInstanceCache.h</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreruntimeJSGlobalObjectcpp">branches/jsCStack/Source/JavaScriptCore/runtime/JSGlobalObject.cpp</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreruntimeJSGlobalObjecth">branches/jsCStack/Source/JavaScriptCore/runtime/JSGlobalObject.h</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreruntimeJSStringh">branches/jsCStack/Source/JavaScriptCore/runtime/JSString.h</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreruntimeLiteralParserh">branches/jsCStack/Source/JavaScriptCore/runtime/LiteralParser.h</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreruntimeNumericStringsh">branches/jsCStack/Source/JavaScriptCore/runtime/NumericStrings.h</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreruntimeRegExpCacheh">branches/jsCStack/Source/JavaScriptCore/runtime/RegExpCache.h</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreruntimeSmallStringsh">branches/jsCStack/Source/JavaScriptCore/runtime/SmallStrings.h</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreruntimeVMh">branches/jsCStack/Source/JavaScriptCore/runtime/VM.h</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoretestRegExpcpp">branches/jsCStack/Source/JavaScriptCore/testRegExp.cpp</a></li>
<li><a href="#branchesjsCStackSourcePlatformChangeLog">branches/jsCStack/Source/Platform/ChangeLog</a></li>
<li><a href="#branchesjsCStackSourcePlatformGNUmakefileam">branches/jsCStack/Source/Platform/GNUmakefile.am</a></li>
<li><a href="#branchesjsCStackSourceThirdPartyANGLEANGLExcodeprojprojectpbxproj">branches/jsCStack/Source/ThirdParty/ANGLE/ANGLE.xcodeproj/project.pbxproj</a></li>
<li><a href="#branchesjsCStackSourceThirdPartyANGLEChangeLog">branches/jsCStack/Source/ThirdParty/ANGLE/ChangeLog</a></li>
<li><a href="#branchesjsCStackSourceThirdPartyANGLEsrccompilerglslang_tabcpp">branches/jsCStack/Source/ThirdParty/ANGLE/src/compiler/glslang_tab.cpp</a></li>
<li><a href="#branchesjsCStackSourceThirdPartyANGLEsrccompilerglslang_tabh">branches/jsCStack/Source/ThirdParty/ANGLE/src/compiler/glslang_tab.h</a></li>
<li><a href="#branchesjsCStackSourceThirdPartyANGLEsrccompilerpreprocessorExpressionParsercpp">branches/jsCStack/Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp</a></li>
<li><a href="#branchesjsCStackSourceThirdPartyChangeLog">branches/jsCStack/Source/ThirdParty/ChangeLog</a></li>
<li><a href="#branchesjsCStackSourceThirdPartygtestmsvcgtestmdvcxproj">branches/jsCStack/Source/ThirdParty/gtest/msvc/gtest-md.vcxproj</a></li>
<li><a href="#branchesjsCStackSourceWTFChangeLog">branches/jsCStack/Source/WTF/ChangeLog</a></li>
<li><a href="#branchesjsCStackSourceWTFGNUmakefilelistam">branches/jsCStack/Source/WTF/GNUmakefile.list.am</a></li>
<li><a href="#branchesjsCStackSourceWTFWTFvcxprojWTFvcxproj">branches/jsCStack/Source/WTF/WTF.vcxproj/WTF.vcxproj</a></li>
<li><a href="#branchesjsCStackSourceWTFWTFvcxprojWTFvcxprojfilters">branches/jsCStack/Source/WTF/WTF.vcxproj/WTF.vcxproj.filters</a></li>
<li><a href="#branchesjsCStackSourceWTFWTFxcodeprojprojectpbxproj">branches/jsCStack/Source/WTF/WTF.xcodeproj/project.pbxproj</a></li>
<li><a href="#branchesjsCStackSourceWTFwtfAVLTreeh">branches/jsCStack/Source/WTF/wtf/AVLTree.h</a></li>
<li><a href="#branchesjsCStackSourceWTFwtfAssertionsh">branches/jsCStack/Source/WTF/wtf/Assertions.h</a></li>
<li><a href="#branchesjsCStackSourceWTFwtfBitArrayh">branches/jsCStack/Source/WTF/wtf/BitArray.h</a></li>
<li><a href="#branchesjsCStackSourceWTFwtfBitmaph">branches/jsCStack/Source/WTF/wtf/Bitmap.h</a></li>
<li><a href="#branchesjsCStackSourceWTFwtfCMakeListstxt">branches/jsCStack/Source/WTF/wtf/CMakeLists.txt</a></li>
<li><a href="#branchesjsCStackSourceWTFwtfCompilerh">branches/jsCStack/Source/WTF/wtf/Compiler.h</a></li>
<li><a href="#branchesjsCStackSourceWTFwtfFixedArrayh">branches/jsCStack/Source/WTF/wtf/FixedArray.h</a></li>
<li><a href="#branchesjsCStackSourceWTFwtfHashMaph">branches/jsCStack/Source/WTF/wtf/HashMap.h</a></li>
<li><a href="#branchesjsCStackSourceWTFwtfMD5cpp">branches/jsCStack/Source/WTF/wtf/MD5.cpp</a></li>
<li><a href="#branchesjsCStackSourceWTFwtfMD5h">branches/jsCStack/Source/WTF/wtf/MD5.h</a></li>
<li><a href="#branchesjsCStackSourceWTFwtfMathExtrash">branches/jsCStack/Source/WTF/wtf/MathExtras.h</a></li>
<li><a href="#branchesjsCStackSourceWTFwtfPlatformGTKcmake">branches/jsCStack/Source/WTF/wtf/PlatformGTK.cmake</a></li>
<li><a href="#branchesjsCStackSourceWTFwtfRetainPtrh">branches/jsCStack/Source/WTF/wtf/RetainPtr.h</a></li>
<li><a href="#branchesjsCStackSourceWTFwtfSHA1cpp">branches/jsCStack/Source/WTF/wtf/SHA1.cpp</a></li>
<li><a href="#branchesjsCStackSourceWTFwtfSHA1h">branches/jsCStack/Source/WTF/wtf/SHA1.h</a></li>
<li><a href="#branchesjsCStackSourceWTFwtfSixCharacterHashcpp">branches/jsCStack/Source/WTF/wtf/SixCharacterHash.cpp</a></li>
<li><a href="#branchesjsCStackSourceWTFwtfSixCharacterHashh">branches/jsCStack/Source/WTF/wtf/SixCharacterHash.h</a></li>
<li><a href="#branchesjsCStackSourceWTFwtfStdLibExtrash">branches/jsCStack/Source/WTF/wtf/StdLibExtras.h</a></li>
<li><a href="#branchesjsCStackSourceWTFwtftextStringImplh">branches/jsCStack/Source/WTF/wtf/text/StringImpl.h</a></li>
<li><a href="#branchesjsCStackSourceWTFwtftextWTFStringh">branches/jsCStack/Source/WTF/wtf/text/WTFString.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreCMakeListstxt">branches/jsCStack/Source/WebCore/CMakeLists.txt</a></li>
<li><a href="#branchesjsCStackSourceWebCoreChangeLog">branches/jsCStack/Source/WebCore/ChangeLog</a></li>
<li><a href="#branchesjsCStackSourceWebCoreConfigurationsVersionxcconfig">branches/jsCStack/Source/WebCore/Configurations/Version.xcconfig</a></li>
<li><a href="#branchesjsCStackSourceWebCoreDerivedSourcesmake">branches/jsCStack/Source/WebCore/DerivedSources.make</a></li>
<li><a href="#branchesjsCStackSourceWebCoreGNUmakefileam">branches/jsCStack/Source/WebCore/GNUmakefile.am</a></li>
<li><a href="#branchesjsCStackSourceWebCoreGNUmakefilelistam">branches/jsCStack/Source/WebCore/GNUmakefile.list.am</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesbatteryBatteryManageridl">branches/jsCStack/Source/WebCore/Modules/battery/BatteryManager.idl</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesbatteryNavigatorBatteryidl">branches/jsCStack/Source/WebCore/Modules/battery/NavigatorBattery.idl</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesindexeddbIDBAnycpp">branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBAny.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesindexeddbIDBAnyh">branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBAny.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesindexeddbIDBCursorcpp">branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBCursor.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesindexeddbIDBCursorh">branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBCursor.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesindexeddbIDBDatabaseMetadatah">branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBDatabaseMetadata.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesindexeddbIDBFactorycpp">branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBFactory.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesindexeddbIDBFactoryh">branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBFactory.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesindexeddbIDBIndexcpp">branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBIndex.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesindexeddbIDBIndexh">branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBIndex.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesindexeddbIDBKeyPathcpp">branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBKeyPath.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesindexeddbIDBKeyPathh">branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBKeyPath.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesindexeddbIDBKeyRangecpp">branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBKeyRange.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesindexeddbIDBKeyRangeh">branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBKeyRange.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesindexeddbIDBObjectStorecpp">branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBObjectStore.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesindexeddbIDBObjectStoreh">branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBObjectStore.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesindexeddbIDBRequestcpp">branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBRequest.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesindexeddbIDBRequesth">branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBRequest.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesmediasourceDOMURLMediaSourcecpp">branches/jsCStack/Source/WebCore/Modules/mediasource/DOMURLMediaSource.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesmediasourceDOMURLMediaSourceh">branches/jsCStack/Source/WebCore/Modules/mediasource/DOMURLMediaSource.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesmediasourceMediaSourcecpp">branches/jsCStack/Source/WebCore/Modules/mediasource/MediaSource.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesmediasourceMediaSourceh">branches/jsCStack/Source/WebCore/Modules/mediasource/MediaSource.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesmediasourceMediaSourceidl">branches/jsCStack/Source/WebCore/Modules/mediasource/MediaSource.idl</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesmediasourceMediaSourceBasecpp">branches/jsCStack/Source/WebCore/Modules/mediasource/MediaSourceBase.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesmediasourceMediaSourceBaseh">branches/jsCStack/Source/WebCore/Modules/mediasource/MediaSourceBase.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesmediasourceMediaSourceRegistrycpp">branches/jsCStack/Source/WebCore/Modules/mediasource/MediaSourceRegistry.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesmediasourceMediaSourceRegistryh">branches/jsCStack/Source/WebCore/Modules/mediasource/MediaSourceRegistry.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesmediasourceSourceBuffercpp">branches/jsCStack/Source/WebCore/Modules/mediasource/SourceBuffer.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesmediasourceSourceBufferh">branches/jsCStack/Source/WebCore/Modules/mediasource/SourceBuffer.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesmediastreamCapabilityRangecpp">branches/jsCStack/Source/WebCore/Modules/mediastream/CapabilityRange.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesmediastreamCapabilityRangeh">branches/jsCStack/Source/WebCore/Modules/mediastream/CapabilityRange.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesmediastreamHTMLMediaElementMediaStreamidl">branches/jsCStack/Source/WebCore/Modules/mediastream/HTMLMediaElementMediaStream.idl</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesmediastreamMediaTrackConstrainth">branches/jsCStack/Source/WebCore/Modules/mediastream/MediaTrackConstraint.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesmediastreamRTCErrorCallbackh">branches/jsCStack/Source/WebCore/Modules/mediastream/RTCErrorCallback.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesmediastreamRTCErrorCallbackidl">branches/jsCStack/Source/WebCore/Modules/mediastream/RTCErrorCallback.idl</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesmediastreamRTCIceCandidatecpp">branches/jsCStack/Source/WebCore/Modules/mediastream/RTCIceCandidate.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesmediastreamRTCPeerConnectioncpp">branches/jsCStack/Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesmediastreamRTCPeerConnectionh">branches/jsCStack/Source/WebCore/Modules/mediastream/RTCPeerConnection.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesmediastreamRTCPeerConnectionidl">branches/jsCStack/Source/WebCore/Modules/mediastream/RTCPeerConnection.idl</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesmediastreamRTCSessionDescriptionRequestImplcpp">branches/jsCStack/Source/WebCore/Modules/mediastream/RTCSessionDescriptionRequestImpl.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesmediastreamRTCSessionDescriptionRequestImplh">branches/jsCStack/Source/WebCore/Modules/mediastream/RTCSessionDescriptionRequestImpl.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesmediastreamRTCVoidRequestImplcpp">branches/jsCStack/Source/WebCore/Modules/mediastream/RTCVoidRequestImpl.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesmediastreamRTCVoidRequestImplh">branches/jsCStack/Source/WebCore/Modules/mediastream/RTCVoidRequestImpl.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesnetworkinfoNavigatorNetworkInfoConnectionidl">branches/jsCStack/Source/WebCore/Modules/networkinfo/NavigatorNetworkInfoConnection.idl</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesnetworkinfoNetworkInfoConnectionidl">branches/jsCStack/Source/WebCore/Modules/networkinfo/NetworkInfoConnection.idl</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulespluginsQuickTimePluginReplacementcpp">branches/jsCStack/Source/WebCore/Modules/plugins/QuickTimePluginReplacement.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulespluginsQuickTimePluginReplacementh">branches/jsCStack/Source/WebCore/Modules/plugins/QuickTimePluginReplacement.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModuleswebsocketsWebSocketHandshakecpp">branches/jsCStack/Source/WebCore/Modules/websockets/WebSocketHandshake.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorePlatformEflcmake">branches/jsCStack/Source/WebCore/PlatformEfl.cmake</a></li>
<li><a href="#branchesjsCStackSourceWebCorePlatformGTKcmake">branches/jsCStack/Source/WebCore/PlatformGTK.cmake</a></li>
<li><a href="#branchesjsCStackSourceWebCorePlatformNixcmake">branches/jsCStack/Source/WebCore/PlatformNix.cmake</a></li>
<li><a href="#branchesjsCStackSourceWebCoreUseJSCcmake">branches/jsCStack/Source/WebCore/UseJSC.cmake</a></li>
<li><a href="#branchesjsCStackSourceWebCoreWebCoreexpin">branches/jsCStack/Source/WebCore/WebCore.exp.in</a></li>
<li><a href="#branchesjsCStackSourceWebCoreWebCorevcxprojWebCorevcxproj">branches/jsCStack/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj</a></li>
<li><a href="#branchesjsCStackSourceWebCoreWebCorevcxprojWebCorevcxprojfilters">branches/jsCStack/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters</a></li>
<li><a href="#branchesjsCStackSourceWebCoreWebCorevcxprojWebCoreCommonprops">branches/jsCStack/Source/WebCore/WebCore.vcxproj/WebCoreCommon.props</a></li>
<li><a href="#branchesjsCStackSourceWebCoreWebCorevcxprojWebCoreTestSupportvcxproj">branches/jsCStack/Source/WebCore/WebCore.vcxproj/WebCoreTestSupport.vcxproj</a></li>
<li><a href="#branchesjsCStackSourceWebCoreWebCorexcodeprojprojectpbxproj">branches/jsCStack/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#branchesjsCStackSourceWebCoreaccessibilityAccessibilityNodeObjectcpp">branches/jsCStack/Source/WebCore/accessibility/AccessibilityNodeObject.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreaccessibilityAccessibilityNodeObjecth">branches/jsCStack/Source/WebCore/accessibility/AccessibilityNodeObject.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreaccessibilityatkWebKitAccessibleWrapperAtkcpp">branches/jsCStack/Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsgobjectGNUmakefileam">branches/jsCStack/Source/WebCore/bindings/gobject/GNUmakefile.am</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsgobjectWebKitDOMCustomcpp">branches/jsCStack/Source/WebCore/bindings/gobject/WebKitDOMCustom.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsgobjectWebKitDOMCustomh">branches/jsCStack/Source/WebCore/bindings/gobject/WebKitDOMCustom.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsgobjectWebKitDOMCustomsymbols">branches/jsCStack/Source/WebCore/bindings/gobject/WebKitDOMCustom.symbols</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsgobjectWebKitDOMDeprecatedcpp">branches/jsCStack/Source/WebCore/bindings/gobject/WebKitDOMDeprecated.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsgobjectWebKitDOMDeprecatedh">branches/jsCStack/Source/WebCore/bindings/gobject/WebKitDOMDeprecated.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsgobjectWebKitDOMDeprecatedsymbols">branches/jsCStack/Source/WebCore/bindings/gobject/WebKitDOMDeprecated.symbols</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsgobjectwebkitdomsymbols">branches/jsCStack/Source/WebCore/bindings/gobject/webkitdom.symbols</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsjsDictionaryh">branches/jsCStack/Source/WebCore/bindings/js/Dictionary.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsjsIDBBindingUtilitiescpp">branches/jsCStack/Source/WebCore/bindings/js/IDBBindingUtilities.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsjsIDBBindingUtilitiesh">branches/jsCStack/Source/WebCore/bindings/js/IDBBindingUtilities.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsjsJSBindingsAllInOnecpp">branches/jsCStack/Source/WebCore/bindings/js/JSBindingsAllInOne.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsjsJSCryptoAlgorithmDictionarycpp">branches/jsCStack/Source/WebCore/bindings/js/JSCryptoAlgorithmDictionary.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsjsJSCryptoKeySerializationJWKcpp">branches/jsCStack/Source/WebCore/bindings/js/JSCryptoKeySerializationJWK.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsjsJSDOMBindingh">branches/jsCStack/Source/WebCore/bindings/js/JSDOMBinding.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsjsJSDictionarycpp">branches/jsCStack/Source/WebCore/bindings/js/JSDictionary.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsjsJSDictionaryh">branches/jsCStack/Source/WebCore/bindings/js/JSDictionary.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsjsJSHTMLCanvasElementCustomcpp">branches/jsCStack/Source/WebCore/bindings/js/JSHTMLCanvasElementCustom.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsjsJSInjectedScriptHostCustomcpp">branches/jsCStack/Source/WebCore/bindings/js/JSInjectedScriptHostCustom.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsjsJSInjectedScriptManagercpp">branches/jsCStack/Source/WebCore/bindings/js/JSInjectedScriptManager.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsjsJSMainThreadExecStatecpp">branches/jsCStack/Source/WebCore/bindings/js/JSMainThreadExecState.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsjsJSMainThreadExecStateh">branches/jsCStack/Source/WebCore/bindings/js/JSMainThreadExecState.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsjsJSMessageEventCustomcpp">branches/jsCStack/Source/WebCore/bindings/js/JSMessageEventCustom.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsjsJSSubtleCryptoCustomcpp">branches/jsCStack/Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsjsScheduledActioncpp">branches/jsCStack/Source/WebCore/bindings/js/ScheduledAction.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsjsScriptCallStackFactorycpp">branches/jsCStack/Source/WebCore/bindings/js/ScriptCallStackFactory.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsjsScriptControllercpp">branches/jsCStack/Source/WebCore/bindings/js/ScriptController.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsjsScriptControllerh">branches/jsCStack/Source/WebCore/bindings/js/ScriptController.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsjsScriptDebugServercpp">branches/jsCStack/Source/WebCore/bindings/js/ScriptDebugServer.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsjsScriptDebugServerh">branches/jsCStack/Source/WebCore/bindings/js/ScriptDebugServer.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsjsScriptFunctionCallcpp">branches/jsCStack/Source/WebCore/bindings/js/ScriptFunctionCall.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsjsScriptFunctionCallh">branches/jsCStack/Source/WebCore/bindings/js/ScriptFunctionCall.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsjsScriptObjectcpp">branches/jsCStack/Source/WebCore/bindings/js/ScriptObject.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsjsScriptObjecth">branches/jsCStack/Source/WebCore/bindings/js/ScriptObject.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsjsScriptProfilecpp">branches/jsCStack/Source/WebCore/bindings/js/ScriptProfile.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsjsScriptProfileh">branches/jsCStack/Source/WebCore/bindings/js/ScriptProfile.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsjsScriptProfilercpp">branches/jsCStack/Source/WebCore/bindings/js/ScriptProfiler.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsjsScriptProfilerh">branches/jsCStack/Source/WebCore/bindings/js/ScriptProfiler.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsjsScriptStateh">branches/jsCStack/Source/WebCore/bindings/js/ScriptState.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsjsScriptValuecpp">branches/jsCStack/Source/WebCore/bindings/js/ScriptValue.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsjsScriptValueh">branches/jsCStack/Source/WebCore/bindings/js/ScriptValue.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsjsSerializedScriptValuecpp">branches/jsCStack/Source/WebCore/bindings/js/SerializedScriptValue.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsjsSerializedScriptValueh">branches/jsCStack/Source/WebCore/bindings/js/SerializedScriptValue.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsjsWorkerScriptControllercpp">branches/jsCStack/Source/WebCore/bindings/js/WorkerScriptController.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsjsWorkerScriptControllerh">branches/jsCStack/Source/WebCore/bindings/js/WorkerScriptController.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsscriptsCodeGeneratorGObjectpm">branches/jsCStack/Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsscriptsCodeGeneratorJSpm">branches/jsCStack/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsscriptstestJSJSTestObjcpp">branches/jsCStack/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorecryptoCommonCryptoUtilitiesh">branches/jsCStack/Source/WebCore/crypto/CommonCryptoUtilities.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorecryptoCryptoAlgorithmIdentifierh">branches/jsCStack/Source/WebCore/crypto/CryptoAlgorithmIdentifier.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorecryptoCryptoAlgorithmRegistrycpp">branches/jsCStack/Source/WebCore/crypto/CryptoAlgorithmRegistry.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorecryptoCryptoAlgorithmRegistryh">branches/jsCStack/Source/WebCore/crypto/CryptoAlgorithmRegistry.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorecryptoCryptoKeycpp">branches/jsCStack/Source/WebCore/crypto/CryptoKey.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorecryptoCryptoKeyidl">branches/jsCStack/Source/WebCore/crypto/CryptoKey.idl</a></li>
<li><a href="#branchesjsCStackSourceWebCorecryptoalgorithmsCryptoAlgorithmAES_CBCcpp">branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorecryptoalgorithmsCryptoAlgorithmAES_KWcpp">branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorecryptoalgorithmsCryptoAlgorithmAES_KWh">branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorecryptoalgorithmsCryptoAlgorithmHMACcpp">branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorecryptoalgorithmsCryptoAlgorithmRSASSA_PKCS1_v1_5cpp">branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorecryptoalgorithmsCryptoAlgorithmRSA_OAEPcpp">branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorecryptoalgorithmsCryptoAlgorithmSHA1cpp">branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA1.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorecryptoalgorithmsCryptoAlgorithmSHA224cpp">branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA224.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorecryptoalgorithmsCryptoAlgorithmSHA256cpp">branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA256.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorecryptoalgorithmsCryptoAlgorithmSHA384cpp">branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA384.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorecryptoalgorithmsCryptoAlgorithmSHA512cpp">branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA512.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorecryptokeysCryptoKeyAEScpp">branches/jsCStack/Source/WebCore/crypto/keys/CryptoKeyAES.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorecryptokeysCryptoKeyAESh">branches/jsCStack/Source/WebCore/crypto/keys/CryptoKeyAES.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorecryptomacCryptoAlgorithmRegistryMaccpp">branches/jsCStack/Source/WebCore/crypto/mac/CryptoAlgorithmRegistryMac.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorecryptomacCryptoKeyRSAMaccpp">branches/jsCStack/Source/WebCore/crypto/mac/CryptoKeyRSAMac.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorecryptoparametersCryptoAlgorithmAesCbcParamsh">branches/jsCStack/Source/WebCore/crypto/parameters/CryptoAlgorithmAesCbcParams.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorecssCSSComputedStyleDeclarationcpp">branches/jsCStack/Source/WebCore/css/CSSComputedStyleDeclaration.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorecssCSSComputedStyleDeclarationh">branches/jsCStack/Source/WebCore/css/CSSComputedStyleDeclaration.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorecssCSSCrossfadeValuecpp">branches/jsCStack/Source/WebCore/css/CSSCrossfadeValue.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorecssCSSCursorImageValuecpp">branches/jsCStack/Source/WebCore/css/CSSCursorImageValue.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorecssCSSCursorImageValueh">branches/jsCStack/Source/WebCore/css/CSSCursorImageValue.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorecssCSSFilterImageValueh">branches/jsCStack/Source/WebCore/css/CSSFilterImageValue.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorecssCSSImageGeneratorValuecpp">branches/jsCStack/Source/WebCore/css/CSSImageGeneratorValue.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorecssCSSImageGeneratorValueh">branches/jsCStack/Source/WebCore/css/CSSImageGeneratorValue.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorecssCSSImageSetValuecpp">branches/jsCStack/Source/WebCore/css/CSSImageSetValue.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorecssCSSImageSetValueh">branches/jsCStack/Source/WebCore/css/CSSImageSetValue.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorecssCSSImageValuecpp">branches/jsCStack/Source/WebCore/css/CSSImageValue.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorecssCSSImageValueh">branches/jsCStack/Source/WebCore/css/CSSImageValue.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorecssCSSParsercpp">branches/jsCStack/Source/WebCore/css/CSSParser.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorecssCSSValuecpp">branches/jsCStack/Source/WebCore/css/CSSValue.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorecssStylePropertiescpp">branches/jsCStack/Source/WebCore/css/StyleProperties.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorecssStyleResolvercpp">branches/jsCStack/Source/WebCore/css/StyleResolver.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorecssStyleResolverh">branches/jsCStack/Source/WebCore/css/StyleResolver.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoredomCustomEventcpp">branches/jsCStack/Source/WebCore/dom/CustomEvent.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoredomCustomEventh">branches/jsCStack/Source/WebCore/dom/CustomEvent.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoredomDocumentcpp">branches/jsCStack/Source/WebCore/dom/Document.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoredomDocumenth">branches/jsCStack/Source/WebCore/dom/Document.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoredomDocumentidl">branches/jsCStack/Source/WebCore/dom/Document.idl</a></li>
<li><a href="#branchesjsCStackSourceWebCoredomElementcpp">branches/jsCStack/Source/WebCore/dom/Element.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoredomElementh">branches/jsCStack/Source/WebCore/dom/Element.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoredomInlineStyleSheetOwnercpp">branches/jsCStack/Source/WebCore/dom/InlineStyleSheetOwner.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoredomMessageEventcpp">branches/jsCStack/Source/WebCore/dom/MessageEvent.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoredomMessageEventh">branches/jsCStack/Source/WebCore/dom/MessageEvent.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoredomMessagePortcpp">branches/jsCStack/Source/WebCore/dom/MessagePort.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoredomNodecpp">branches/jsCStack/Source/WebCore/dom/Node.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoredomNodeh">branches/jsCStack/Source/WebCore/dom/Node.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoredomPopStateEventh">branches/jsCStack/Source/WebCore/dom/PopStateEvent.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoredomScriptElementcpp">branches/jsCStack/Source/WebCore/dom/ScriptElement.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoredomScriptableDocumentParserh">branches/jsCStack/Source/WebCore/dom/ScriptableDocumentParser.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoredomStyledElementcpp">branches/jsCStack/Source/WebCore/dom/StyledElement.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreeditingVisibleUnitscpp">branches/jsCStack/Source/WebCore/editing/VisibleUnits.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorehtmlHTMLDocumentcpp">branches/jsCStack/Source/WebCore/html/HTMLDocument.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorehtmlHTMLDocumenth">branches/jsCStack/Source/WebCore/html/HTMLDocument.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorehtmlHTMLInputElementcpp">branches/jsCStack/Source/WebCore/html/HTMLInputElement.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorehtmlHTMLMediaElementcpp">branches/jsCStack/Source/WebCore/html/HTMLMediaElement.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorehtmlHTMLMediaElementh">branches/jsCStack/Source/WebCore/html/HTMLMediaElement.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorehtmlHTMLMediaElementidl">branches/jsCStack/Source/WebCore/html/HTMLMediaElement.idl</a></li>
<li><a href="#branchesjsCStackSourceWebCorehtmlHTMLPlugInImageElementcpp">branches/jsCStack/Source/WebCore/html/HTMLPlugInImageElement.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorehtmlHTMLTextAreaElementcpp">branches/jsCStack/Source/WebCore/html/HTMLTextAreaElement.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorehtmlImageInputTypecpp">branches/jsCStack/Source/WebCore/html/ImageInputType.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorehtmlTextFieldInputTypecpp">branches/jsCStack/Source/WebCore/html/TextFieldInputType.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorehtmlTextInputTypecpp">branches/jsCStack/Source/WebCore/html/TextInputType.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorehtmlparserHTMLDocumentParsercpp">branches/jsCStack/Source/WebCore/html/parser/HTMLDocumentParser.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorehtmlparserHTMLDocumentParserh">branches/jsCStack/Source/WebCore/html/parser/HTMLDocumentParser.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorehtmlparserXSSAuditorcpp">branches/jsCStack/Source/WebCore/html/parser/XSSAuditor.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorehtmlparserXSSAuditorDelegatecpp">branches/jsCStack/Source/WebCore/html/parser/XSSAuditorDelegate.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorCodeGeneratorInspectorpy">branches/jsCStack/Source/WebCore/inspector/CodeGeneratorInspector.py</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorCodeGeneratorInspectorStringspy">branches/jsCStack/Source/WebCore/inspector/CodeGeneratorInspectorStrings.py</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorConsoleMessagecpp">branches/jsCStack/Source/WebCore/inspector/ConsoleMessage.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorConsoleMessageh">branches/jsCStack/Source/WebCore/inspector/ConsoleMessage.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorContentSearchUtilscpp">branches/jsCStack/Source/WebCore/inspector/ContentSearchUtils.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorContentSearchUtilsh">branches/jsCStack/Source/WebCore/inspector/ContentSearchUtils.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorDOMPatchSupportcpp">branches/jsCStack/Source/WebCore/inspector/DOMPatchSupport.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInjectedScriptcpp">branches/jsCStack/Source/WebCore/inspector/InjectedScript.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInjectedScripth">branches/jsCStack/Source/WebCore/inspector/InjectedScript.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInjectedScriptBasecpp">branches/jsCStack/Source/WebCore/inspector/InjectedScriptBase.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInjectedScriptBaseh">branches/jsCStack/Source/WebCore/inspector/InjectedScriptBase.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInjectedScriptCanvasModulecpp">branches/jsCStack/Source/WebCore/inspector/InjectedScriptCanvasModule.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInjectedScriptCanvasModuleh">branches/jsCStack/Source/WebCore/inspector/InjectedScriptCanvasModule.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInjectedScriptHostcpp">branches/jsCStack/Source/WebCore/inspector/InjectedScriptHost.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInjectedScriptHosth">branches/jsCStack/Source/WebCore/inspector/InjectedScriptHost.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInjectedScriptManagercpp">branches/jsCStack/Source/WebCore/inspector/InjectedScriptManager.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInjectedScriptManagerh">branches/jsCStack/Source/WebCore/inspector/InjectedScriptManager.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInjectedScriptModulecpp">branches/jsCStack/Source/WebCore/inspector/InjectedScriptModule.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorAgentcpp">branches/jsCStack/Source/WebCore/inspector/InspectorAgent.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorAgenth">branches/jsCStack/Source/WebCore/inspector/InspectorAgent.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorAgentRegistrycpp">branches/jsCStack/Source/WebCore/inspector/InspectorAgentRegistry.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorAgentRegistryh">branches/jsCStack/Source/WebCore/inspector/InspectorAgentRegistry.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorAllInOnecpp">branches/jsCStack/Source/WebCore/inspector/InspectorAllInOne.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorApplicationCacheAgentcpp">branches/jsCStack/Source/WebCore/inspector/InspectorApplicationCacheAgent.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorApplicationCacheAgenth">branches/jsCStack/Source/WebCore/inspector/InspectorApplicationCacheAgent.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorBackendDispatchercpp">branches/jsCStack/Source/WebCore/inspector/InspectorBackendDispatcher.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorBackendDispatcherh">branches/jsCStack/Source/WebCore/inspector/InspectorBackendDispatcher.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorBaseAgenth">branches/jsCStack/Source/WebCore/inspector/InspectorBaseAgent.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorCSSAgentcpp">branches/jsCStack/Source/WebCore/inspector/InspectorCSSAgent.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorCSSAgenth">branches/jsCStack/Source/WebCore/inspector/InspectorCSSAgent.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorCanvasAgentcpp">branches/jsCStack/Source/WebCore/inspector/InspectorCanvasAgent.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorCanvasAgenth">branches/jsCStack/Source/WebCore/inspector/InspectorCanvasAgent.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorCanvasInstrumentationh">branches/jsCStack/Source/WebCore/inspector/InspectorCanvasInstrumentation.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorClientcpp">branches/jsCStack/Source/WebCore/inspector/InspectorClient.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorClienth">branches/jsCStack/Source/WebCore/inspector/InspectorClient.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorConsoleAgentcpp">branches/jsCStack/Source/WebCore/inspector/InspectorConsoleAgent.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorConsoleAgenth">branches/jsCStack/Source/WebCore/inspector/InspectorConsoleAgent.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorControllercpp">branches/jsCStack/Source/WebCore/inspector/InspectorController.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorControllerh">branches/jsCStack/Source/WebCore/inspector/InspectorController.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorDOMAgentcpp">branches/jsCStack/Source/WebCore/inspector/InspectorDOMAgent.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorDOMAgenth">branches/jsCStack/Source/WebCore/inspector/InspectorDOMAgent.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorDOMDebuggerAgentcpp">branches/jsCStack/Source/WebCore/inspector/InspectorDOMDebuggerAgent.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorDOMDebuggerAgenth">branches/jsCStack/Source/WebCore/inspector/InspectorDOMDebuggerAgent.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorDOMStorageAgentcpp">branches/jsCStack/Source/WebCore/inspector/InspectorDOMStorageAgent.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorDOMStorageAgenth">branches/jsCStack/Source/WebCore/inspector/InspectorDOMStorageAgent.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorDatabaseAgentcpp">branches/jsCStack/Source/WebCore/inspector/InspectorDatabaseAgent.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorDatabaseAgenth">branches/jsCStack/Source/WebCore/inspector/InspectorDatabaseAgent.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorDatabaseResourcecpp">branches/jsCStack/Source/WebCore/inspector/InspectorDatabaseResource.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorDebuggerAgentcpp">branches/jsCStack/Source/WebCore/inspector/InspectorDebuggerAgent.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorDebuggerAgenth">branches/jsCStack/Source/WebCore/inspector/InspectorDebuggerAgent.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorForwardingh">branches/jsCStack/Source/WebCore/inspector/InspectorForwarding.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorFrontendClientLocalcpp">branches/jsCStack/Source/WebCore/inspector/InspectorFrontendClientLocal.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorFrontendHostcpp">branches/jsCStack/Source/WebCore/inspector/InspectorFrontendHost.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorHeapProfilerAgentcpp">branches/jsCStack/Source/WebCore/inspector/InspectorHeapProfilerAgent.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorHeapProfilerAgenth">branches/jsCStack/Source/WebCore/inspector/InspectorHeapProfilerAgent.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorIndexedDBAgentcpp">branches/jsCStack/Source/WebCore/inspector/InspectorIndexedDBAgent.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorIndexedDBAgenth">branches/jsCStack/Source/WebCore/inspector/InspectorIndexedDBAgent.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorInputAgentcpp">branches/jsCStack/Source/WebCore/inspector/InspectorInputAgent.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorInputAgenth">branches/jsCStack/Source/WebCore/inspector/InspectorInputAgent.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorInstrumentationcpp">branches/jsCStack/Source/WebCore/inspector/InspectorInstrumentation.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorInstrumentationh">branches/jsCStack/Source/WebCore/inspector/InspectorInstrumentation.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorLayerTreeAgentcpp">branches/jsCStack/Source/WebCore/inspector/InspectorLayerTreeAgent.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorLayerTreeAgenth">branches/jsCStack/Source/WebCore/inspector/InspectorLayerTreeAgent.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorMemoryAgentcpp">branches/jsCStack/Source/WebCore/inspector/InspectorMemoryAgent.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorMemoryAgenth">branches/jsCStack/Source/WebCore/inspector/InspectorMemoryAgent.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorOverlaycpp">branches/jsCStack/Source/WebCore/inspector/InspectorOverlay.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorOverlayh">branches/jsCStack/Source/WebCore/inspector/InspectorOverlay.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorOverlayPagejs">branches/jsCStack/Source/WebCore/inspector/InspectorOverlayPage.js</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorPageAgentcpp">branches/jsCStack/Source/WebCore/inspector/InspectorPageAgent.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorPageAgenth">branches/jsCStack/Source/WebCore/inspector/InspectorPageAgent.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorProfilerAgentcpp">branches/jsCStack/Source/WebCore/inspector/InspectorProfilerAgent.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorProfilerAgenth">branches/jsCStack/Source/WebCore/inspector/InspectorProfilerAgent.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorResourceAgentcpp">branches/jsCStack/Source/WebCore/inspector/InspectorResourceAgent.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorResourceAgenth">branches/jsCStack/Source/WebCore/inspector/InspectorResourceAgent.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorRuntimeAgentcpp">branches/jsCStack/Source/WebCore/inspector/InspectorRuntimeAgent.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorRuntimeAgenth">branches/jsCStack/Source/WebCore/inspector/InspectorRuntimeAgent.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorStyleSheetcpp">branches/jsCStack/Source/WebCore/inspector/InspectorStyleSheet.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorStyleSheeth">branches/jsCStack/Source/WebCore/inspector/InspectorStyleSheet.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorStyleTextEditorcpp">branches/jsCStack/Source/WebCore/inspector/InspectorStyleTextEditor.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorTimelineAgentcpp">branches/jsCStack/Source/WebCore/inspector/InspectorTimelineAgent.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorTimelineAgenth">branches/jsCStack/Source/WebCore/inspector/InspectorTimelineAgent.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorValuescpp">branches/jsCStack/Source/WebCore/inspector/InspectorValues.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorValuesh">branches/jsCStack/Source/WebCore/inspector/InspectorValues.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorWorkerAgentcpp">branches/jsCStack/Source/WebCore/inspector/InspectorWorkerAgent.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorWorkerAgenth">branches/jsCStack/Source/WebCore/inspector/InspectorWorkerAgent.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInstrumentingAgentscpp">branches/jsCStack/Source/WebCore/inspector/InstrumentingAgents.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorNetworkResourcesDatacpp">branches/jsCStack/Source/WebCore/inspector/NetworkResourcesData.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorPageConsoleAgentcpp">branches/jsCStack/Source/WebCore/inspector/PageConsoleAgent.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorPageDebuggerAgentcpp">branches/jsCStack/Source/WebCore/inspector/PageDebuggerAgent.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorPageDebuggerAgenth">branches/jsCStack/Source/WebCore/inspector/PageDebuggerAgent.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorPageRuntimeAgentcpp">branches/jsCStack/Source/WebCore/inspector/PageRuntimeAgent.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorPageRuntimeAgenth">branches/jsCStack/Source/WebCore/inspector/PageRuntimeAgent.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorScriptArgumentscpp">branches/jsCStack/Source/WebCore/inspector/ScriptArguments.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorScriptArgumentsh">branches/jsCStack/Source/WebCore/inspector/ScriptArguments.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorScriptCallFramecpp">branches/jsCStack/Source/WebCore/inspector/ScriptCallFrame.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorScriptCallFrameh">branches/jsCStack/Source/WebCore/inspector/ScriptCallFrame.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorScriptCallStackcpp">branches/jsCStack/Source/WebCore/inspector/ScriptCallStack.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorScriptCallStackh">branches/jsCStack/Source/WebCore/inspector/ScriptCallStack.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorScriptDebugListenerh">branches/jsCStack/Source/WebCore/inspector/ScriptDebugListener.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorTimelineRecordFactorycpp">branches/jsCStack/Source/WebCore/inspector/TimelineRecordFactory.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorTimelineRecordFactoryh">branches/jsCStack/Source/WebCore/inspector/TimelineRecordFactory.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorWorkerConsoleAgentcpp">branches/jsCStack/Source/WebCore/inspector/WorkerConsoleAgent.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorWorkerDebuggerAgentcpp">branches/jsCStack/Source/WebCore/inspector/WorkerDebuggerAgent.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorWorkerInspectorControllercpp">branches/jsCStack/Source/WebCore/inspector/WorkerInspectorController.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorWorkerInspectorControllerh">branches/jsCStack/Source/WebCore/inspector/WorkerInspectorController.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorWorkerRuntimeAgentcpp">branches/jsCStack/Source/WebCore/inspector/WorkerRuntimeAgent.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorWorkerRuntimeAgenth">branches/jsCStack/Source/WebCore/inspector/WorkerRuntimeAgent.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorprotocolRuntimejson">branches/jsCStack/Source/WebCore/inspector/protocol/Runtime.json</a></li>
<li><a href="#branchesjsCStackSourceWebCoreloaderarchivecfLegacyWebArchivecpp">branches/jsCStack/Source/WebCore/loader/archive/cf/LegacyWebArchive.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreloadercacheCachedImageh">branches/jsCStack/Source/WebCore/loader/cache/CachedImage.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreloadercacheCachedResourceh">branches/jsCStack/Source/WebCore/loader/cache/CachedResource.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreloadercacheMemoryCachecpp">branches/jsCStack/Source/WebCore/loader/cache/MemoryCache.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorepageConsolecpp">branches/jsCStack/Source/WebCore/page/Console.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorepageContentSecurityPolicycpp">branches/jsCStack/Source/WebCore/page/ContentSecurityPolicy.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorepageFramecpp">branches/jsCStack/Source/WebCore/page/Frame.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorepageFrameViewcpp">branches/jsCStack/Source/WebCore/page/FrameView.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorepageFrameViewh">branches/jsCStack/Source/WebCore/page/FrameView.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorepagePagecpp">branches/jsCStack/Source/WebCore/page/Page.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorepagePageh">branches/jsCStack/Source/WebCore/page/Page.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorepagePageConsolecpp">branches/jsCStack/Source/WebCore/page/PageConsole.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorepagePageConsoleh">branches/jsCStack/Source/WebCore/page/PageConsole.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorepageSettingsin">branches/jsCStack/Source/WebCore/page/Settings.in</a></li>
<li><a href="#branchesjsCStackSourceWebCorepageanimationCSSPropertyAnimationcpp">branches/jsCStack/Source/WebCore/page/animation/CSSPropertyAnimation.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformCrossThreadCopiercpp">branches/jsCStack/Source/WebCore/platform/CrossThreadCopier.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformCrossThreadCopierh">branches/jsCStack/Source/WebCore/platform/CrossThreadCopier.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformMediaSampleh">branches/jsCStack/Source/WebCore/platform/MediaSample.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformSharedBuffercpp">branches/jsCStack/Source/WebCore/platform/SharedBuffer.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformSharedBufferh">branches/jsCStack/Source/WebCore/platform/SharedBuffer.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformgraphicsBitmapImagecpp">branches/jsCStack/Source/WebCore/platform/graphics/BitmapImage.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformgraphicsBitmapImageh">branches/jsCStack/Source/WebCore/platform/graphics/BitmapImage.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformgraphicsFontcpp">branches/jsCStack/Source/WebCore/platform/graphics/Font.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformgraphicsFonth">branches/jsCStack/Source/WebCore/platform/graphics/Font.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformgraphicsGlyphMetricsMaph">branches/jsCStack/Source/WebCore/platform/graphics/GlyphMetricsMap.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformgraphicsImageh">branches/jsCStack/Source/WebCore/platform/graphics/Image.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformgraphicsMediaPlayercpp">branches/jsCStack/Source/WebCore/platform/graphics/MediaPlayer.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformgraphicsMediaPlayerh">branches/jsCStack/Source/WebCore/platform/graphics/MediaPlayer.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformgraphicsMediaPlayerPrivateh">branches/jsCStack/Source/WebCore/platform/graphics/MediaPlayerPrivate.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformgraphicsgstreamerTextCombinerGStreamercpp">branches/jsCStack/Source/WebCore/platform/graphics/gstreamer/TextCombinerGStreamer.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformgraphicsgstreamerTrackPrivateBaseGStreamercpp">branches/jsCStack/Source/WebCore/platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformgraphicsgstreamerTrackPrivateBaseGStreamerh">branches/jsCStack/Source/WebCore/platform/graphics/gstreamer/TrackPrivateBaseGStreamer.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformgraphicsgstreamerWebKitWebSourceGStreamercpp">branches/jsCStack/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformgraphicsopenglGraphicsContext3DOpenGLCommoncpp">branches/jsCStack/Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformgtkUserAgentGtkcpp">branches/jsCStack/Source/WebCore/platform/gtk/UserAgentGtk.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformgtkWidgetBackingStoreGtkX11cpp">branches/jsCStack/Source/WebCore/platform/gtk/WidgetBackingStoreGtkX11.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformmacMemoryPressureHandlerMacmm">branches/jsCStack/Source/WebCore/platform/mac/MemoryPressureHandlerMac.mm</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformmacPlatformClockCMh">branches/jsCStack/Source/WebCore/platform/mac/PlatformClockCM.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformmacScrollbarThemeMacmm">branches/jsCStack/Source/WebCore/platform/mac/ScrollbarThemeMac.mm</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformmacSoftLinkingh">branches/jsCStack/Source/WebCore/platform/mac/SoftLinking.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformmediastreamRTCPeerConnectionHandlercpp">branches/jsCStack/Source/WebCore/platform/mediastream/RTCPeerConnectionHandler.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformmediastreamRTCPeerConnectionHandlerh">branches/jsCStack/Source/WebCore/platform/mediastream/RTCPeerConnectionHandler.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformmockRTCNotifiersMockcpp">branches/jsCStack/Source/WebCore/platform/mock/RTCNotifiersMock.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformmockRTCNotifiersMockh">branches/jsCStack/Source/WebCore/platform/mock/RTCNotifiersMock.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformmockRTCPeerConnectionHandlerMockcpp">branches/jsCStack/Source/WebCore/platform/mock/RTCPeerConnectionHandlerMock.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformmockmediasourceMockBoxh">branches/jsCStack/Source/WebCore/platform/mock/mediasource/MockBox.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformmockmediasourceMockMediaPlayerMediaSourcecpp">branches/jsCStack/Source/WebCore/platform/mock/mediasource/MockMediaPlayerMediaSource.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformmockmediasourceMockMediaPlayerMediaSourceh">branches/jsCStack/Source/WebCore/platform/mock/mediasource/MockMediaPlayerMediaSource.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformmockmediasourceMockMediaSourcePrivatecpp">branches/jsCStack/Source/WebCore/platform/mock/mediasource/MockMediaSourcePrivate.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformmockmediasourceMockMediaSourcePrivateh">branches/jsCStack/Source/WebCore/platform/mock/mediasource/MockMediaSourcePrivate.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformmockmediasourceMockSourceBufferPrivatecpp">branches/jsCStack/Source/WebCore/platform/mock/mediasource/MockSourceBufferPrivate.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformmockmediasourceMockSourceBufferPrivateh">branches/jsCStack/Source/WebCore/platform/mock/mediasource/MockSourceBufferPrivate.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformnetworkResourceHandlecpp">branches/jsCStack/Source/WebCore/platform/network/ResourceHandle.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformnetworkResourceHandleh">branches/jsCStack/Source/WebCore/platform/network/ResourceHandle.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformnetworkResourceHandleClientcpp">branches/jsCStack/Source/WebCore/platform/network/ResourceHandleClient.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformnetworkResourceHandleClienth">branches/jsCStack/Source/WebCore/platform/network/ResourceHandleClient.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformnetworkResourceHandleInternalh">branches/jsCStack/Source/WebCore/platform/network/ResourceHandleInternal.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformnetworkcfResourceHandleCFNetcpp">branches/jsCStack/Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformnetworkcurlCurlCacheEntrycpp">branches/jsCStack/Source/WebCore/platform/network/curl/CurlCacheEntry.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformnetworkmacWebCoreResourceHandleAsDelegatemm">branches/jsCStack/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsDelegate.mm</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformnetworkmacWebCoreResourceHandleAsOperationQueueDelegatemm">branches/jsCStack/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformnetworksoupGOwnPtrSoupcpp">branches/jsCStack/Source/WebCore/platform/network/soup/GOwnPtrSoup.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformnetworksoupGOwnPtrSouph">branches/jsCStack/Source/WebCore/platform/network/soup/GOwnPtrSoup.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformnetworksoupResourceHandleSoupcpp">branches/jsCStack/Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformtextTextBoundariescpp">branches/jsCStack/Source/WebCore/platform/text/TextBoundaries.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformtextTextBoundariesh">branches/jsCStack/Source/WebCore/platform/text/TextBoundaries.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformtextmacTextBoundariesmm">branches/jsCStack/Source/WebCore/platform/text/mac/TextBoundaries.mm</a></li>
<li><a href="#branchesjsCStackSourceWebCorepluginsPluginViewcpp">branches/jsCStack/Source/WebCore/plugins/PluginView.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingAutoTableLayoutcpp">branches/jsCStack/Source/WebCore/rendering/AutoTableLayout.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingInlineBoxcpp">branches/jsCStack/Source/WebCore/rendering/InlineBox.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingInlineBoxh">branches/jsCStack/Source/WebCore/rendering/InlineBox.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingInlineElementBoxcpp">branches/jsCStack/Source/WebCore/rendering/InlineElementBox.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingInlineFlowBoxcpp">branches/jsCStack/Source/WebCore/rendering/InlineFlowBox.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingInlineFlowBoxh">branches/jsCStack/Source/WebCore/rendering/InlineFlowBox.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingInlineIteratorh">branches/jsCStack/Source/WebCore/rendering/InlineIterator.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingInlineTextBoxcpp">branches/jsCStack/Source/WebCore/rendering/InlineTextBox.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderBlockcpp">branches/jsCStack/Source/WebCore/rendering/RenderBlock.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderBlockh">branches/jsCStack/Source/WebCore/rendering/RenderBlock.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderBlockFlowcpp">branches/jsCStack/Source/WebCore/rendering/RenderBlockFlow.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderBlockLineLayoutcpp">branches/jsCStack/Source/WebCore/rendering/RenderBlockLineLayout.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderBoxcpp">branches/jsCStack/Source/WebCore/rendering/RenderBox.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderBoxh">branches/jsCStack/Source/WebCore/rendering/RenderBox.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderBoxModelObjectcpp">branches/jsCStack/Source/WebCore/rendering/RenderBoxModelObject.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderButtoncpp">branches/jsCStack/Source/WebCore/rendering/RenderButton.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderElementcpp">branches/jsCStack/Source/WebCore/rendering/RenderElement.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderEmbeddedObjectcpp">branches/jsCStack/Source/WebCore/rendering/RenderEmbeddedObject.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderFileUploadControlcpp">branches/jsCStack/Source/WebCore/rendering/RenderFileUploadControl.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderFrameSetcpp">branches/jsCStack/Source/WebCore/rendering/RenderFrameSet.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderIFrameh">branches/jsCStack/Source/WebCore/rendering/RenderIFrame.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderImagecpp">branches/jsCStack/Source/WebCore/rendering/RenderImage.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderImageh">branches/jsCStack/Source/WebCore/rendering/RenderImage.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderImageResourcecpp">branches/jsCStack/Source/WebCore/rendering/RenderImageResource.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderImageResourceh">branches/jsCStack/Source/WebCore/rendering/RenderImageResource.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderImageResourceStyleImageh">branches/jsCStack/Source/WebCore/rendering/RenderImageResourceStyleImage.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderInlinecpp">branches/jsCStack/Source/WebCore/rendering/RenderInline.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderInlineh">branches/jsCStack/Source/WebCore/rendering/RenderInline.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderLayercpp">branches/jsCStack/Source/WebCore/rendering/RenderLayer.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderLayerh">branches/jsCStack/Source/WebCore/rendering/RenderLayer.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderLayerBackingcpp">branches/jsCStack/Source/WebCore/rendering/RenderLayerBacking.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderLayerBackingh">branches/jsCStack/Source/WebCore/rendering/RenderLayerBacking.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderLayerCompositorcpp">branches/jsCStack/Source/WebCore/rendering/RenderLayerCompositor.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderLayerCompositorh">branches/jsCStack/Source/WebCore/rendering/RenderLayerCompositor.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderLayerFilterInfoh">branches/jsCStack/Source/WebCore/rendering/RenderLayerFilterInfo.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderMenuListcpp">branches/jsCStack/Source/WebCore/rendering/RenderMenuList.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderMenuListh">branches/jsCStack/Source/WebCore/rendering/RenderMenuList.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderObjectcpp">branches/jsCStack/Source/WebCore/rendering/RenderObject.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderObjecth">branches/jsCStack/Source/WebCore/rendering/RenderObject.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderQuotecpp">branches/jsCStack/Source/WebCore/rendering/RenderQuote.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderScrollbarh">branches/jsCStack/Source/WebCore/rendering/RenderScrollbar.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderSearchFieldcpp">branches/jsCStack/Source/WebCore/rendering/RenderSearchField.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderTextcpp">branches/jsCStack/Source/WebCore/rendering/RenderText.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderTexth">branches/jsCStack/Source/WebCore/rendering/RenderText.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderTextControlcpp">branches/jsCStack/Source/WebCore/rendering/RenderTextControl.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderTextControlh">branches/jsCStack/Source/WebCore/rendering/RenderTextControl.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderTextControlMultiLinecpp">branches/jsCStack/Source/WebCore/rendering/RenderTextControlMultiLine.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderTextControlSingleLinecpp">branches/jsCStack/Source/WebCore/rendering/RenderTextControlSingleLine.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderTextFragmentcpp">branches/jsCStack/Source/WebCore/rendering/RenderTextFragment.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderTextFragmenth">branches/jsCStack/Source/WebCore/rendering/RenderTextFragment.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderTextLineBoxescpp">branches/jsCStack/Source/WebCore/rendering/RenderTextLineBoxes.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderThemecpp">branches/jsCStack/Source/WebCore/rendering/RenderTheme.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderThemeh">branches/jsCStack/Source/WebCore/rendering/RenderTheme.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderThemeMach">branches/jsCStack/Source/WebCore/rendering/RenderThemeMac.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderThemeMacmm">branches/jsCStack/Source/WebCore/rendering/RenderThemeMac.mm</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderVideocpp">branches/jsCStack/Source/WebCore/rendering/RenderVideo.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderViewcpp">branches/jsCStack/Source/WebCore/rendering/RenderView.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderViewh">branches/jsCStack/Source/WebCore/rendering/RenderView.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderWidgetcpp">branches/jsCStack/Source/WebCore/rendering/RenderWidget.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRootInlineBoxcpp">branches/jsCStack/Source/WebCore/rendering/RootInlineBox.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingbreak_linescpp">branches/jsCStack/Source/WebCore/rendering/break_lines.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderinglineBreakingContextInlineHeadersh">branches/jsCStack/Source/WebCore/rendering/line/BreakingContextInlineHeaders.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderinglineLineBreakerh">branches/jsCStack/Source/WebCore/rendering/line/LineBreaker.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderinglineLineWidthcpp">branches/jsCStack/Source/WebCore/rendering/line/LineWidth.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingshapesBoxShapecpp">branches/jsCStack/Source/WebCore/rendering/shapes/BoxShape.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingshapesBoxShapeh">branches/jsCStack/Source/WebCore/rendering/shapes/BoxShape.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingshapesPolygonShapecpp">branches/jsCStack/Source/WebCore/rendering/shapes/PolygonShape.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingshapesPolygonShapeh">branches/jsCStack/Source/WebCore/rendering/shapes/PolygonShape.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingshapesRasterShapeh">branches/jsCStack/Source/WebCore/rendering/shapes/RasterShape.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingshapesRectangleShapecpp">branches/jsCStack/Source/WebCore/rendering/shapes/RectangleShape.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingshapesRectangleShapeh">branches/jsCStack/Source/WebCore/rendering/shapes/RectangleShape.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingshapesShapeh">branches/jsCStack/Source/WebCore/rendering/shapes/Shape.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingshapesShapeInfocpp">branches/jsCStack/Source/WebCore/rendering/shapes/ShapeInfo.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingshapesShapeInfoh">branches/jsCStack/Source/WebCore/rendering/shapes/ShapeInfo.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingshapesShapeOutsideInfocpp">branches/jsCStack/Source/WebCore/rendering/shapes/ShapeOutsideInfo.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingshapesShapeOutsideInfoh">branches/jsCStack/Source/WebCore/rendering/shapes/ShapeOutsideInfo.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingstyleBasicShapescpp">branches/jsCStack/Source/WebCore/rendering/style/BasicShapes.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingstyleRenderStyleh">branches/jsCStack/Source/WebCore/rendering/style/RenderStyle.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingstyleStyleGeneratedImagecpp">branches/jsCStack/Source/WebCore/rendering/style/StyleGeneratedImage.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingstyleStyleGeneratedImageh">branches/jsCStack/Source/WebCore/rendering/style/StyleGeneratedImage.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingstyleStyleGridItemDatacpp">branches/jsCStack/Source/WebCore/rendering/style/StyleGridItemData.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingstyleStyleImageh">branches/jsCStack/Source/WebCore/rendering/style/StyleImage.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingstyleStylePendingImageh">branches/jsCStack/Source/WebCore/rendering/style/StylePendingImage.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingsvgRenderSVGInlineTextcpp">branches/jsCStack/Source/WebCore/rendering/svg/RenderSVGInlineText.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingsvgRenderSVGInlineTexth">branches/jsCStack/Source/WebCore/rendering/svg/RenderSVGInlineText.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoresvgSVGDocumentcpp">branches/jsCStack/Source/WebCore/svg/SVGDocument.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoresvgSVGDocumenth">branches/jsCStack/Source/WebCore/svg/SVGDocument.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoresvgSVGElementcpp">branches/jsCStack/Source/WebCore/svg/SVGElement.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoresvgSVGElementh">branches/jsCStack/Source/WebCore/svg/SVGElement.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoresvgSVGScriptElementcpp">branches/jsCStack/Source/WebCore/svg/SVGScriptElement.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoresvgSVGScriptElementh">branches/jsCStack/Source/WebCore/svg/SVGScriptElement.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoresvgSVGScriptElementidl">branches/jsCStack/Source/WebCore/svg/SVGScriptElement.idl</a></li>
<li><a href="#branchesjsCStackSourceWebCoresvggraphicsSVGImageh">branches/jsCStack/Source/WebCore/svg/graphics/SVGImage.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoretestingInternalscpp">branches/jsCStack/Source/WebCore/testing/Internals.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoretestingInternalsh">branches/jsCStack/Source/WebCore/testing/Internals.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreworkersSharedWorkerGlobalScopecpp">branches/jsCStack/Source/WebCore/workers/SharedWorkerGlobalScope.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreworkersWorkerGlobalScopecpp">branches/jsCStack/Source/WebCore/workers/WorkerGlobalScope.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreworkersWorkerThreadcpp">branches/jsCStack/Source/WebCore/workers/WorkerThread.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorexmlXMLTreeViewercpp">branches/jsCStack/Source/WebCore/xml/XMLTreeViewer.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorexmlparserXMLDocumentParsercpp">branches/jsCStack/Source/WebCore/xml/parser/XMLDocumentParser.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorexmlparserXMLDocumentParserh">branches/jsCStack/Source/WebCore/xml/parser/XMLDocumentParser.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorexmlparserXMLDocumentParserLibxml2cpp">branches/jsCStack/Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebInspectorUIChangeLog">branches/jsCStack/Source/WebInspectorUI/ChangeLog</a></li>
<li><a href="#branchesjsCStackSourceWebInspectorUIConfigurationsVersionxcconfig">branches/jsCStack/Source/WebInspectorUI/Configurations/Version.xcconfig</a></li>
<li><a href="#branchesjsCStackSourceWebInspectorUIToolsPrettyPrintingcodemirrorcss">branches/jsCStack/Source/WebInspectorUI/Tools/PrettyPrinting/codemirror.css</a></li>
<li><a href="#branchesjsCStackSourceWebInspectorUIToolsPrettyPrintingcodemirrorjs">branches/jsCStack/Source/WebInspectorUI/Tools/PrettyPrinting/codemirror.js</a></li>
<li><a href="#branchesjsCStackSourceWebInspectorUIToolsPrettyPrintingcssjs">branches/jsCStack/Source/WebInspectorUI/Tools/PrettyPrinting/css.js</a></li>
<li><a href="#branchesjsCStackSourceWebInspectorUIToolsPrettyPrintingjavascriptjs">branches/jsCStack/Source/WebInspectorUI/Tools/PrettyPrinting/javascript.js</a></li>
<li><a href="#branchesjsCStackSourceWebInspectorUIUserInterfaceCSSStyleDeclarationTextEditorjs">branches/jsCStack/Source/WebInspectorUI/UserInterface/CSSStyleDeclarationTextEditor.js</a></li>
<li><a href="#branchesjsCStackSourceWebInspectorUIUserInterfaceCodeMirrorAdditionsjs">branches/jsCStack/Source/WebInspectorUI/UserInterface/CodeMirrorAdditions.js</a></li>
<li><a href="#branchesjsCStackSourceWebInspectorUIUserInterfaceCodeMirrorTokenTrackingControllerjs">branches/jsCStack/Source/WebInspectorUI/UserInterface/CodeMirrorTokenTrackingController.js</a></li>
<li><a href="#branchesjsCStackSourceWebInspectorUIUserInterfaceColorjs">branches/jsCStack/Source/WebInspectorUI/UserInterface/Color.js</a></li>
<li><a href="#branchesjsCStackSourceWebInspectorUIUserInterfaceExternalCodeMirrorcodemirrorcss">branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/codemirror.css</a></li>
<li><a href="#branchesjsCStackSourceWebInspectorUIUserInterfaceExternalCodeMirrorcodemirrorjs">branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/codemirror.js</a></li>
<li><a href="#branchesjsCStackSourceWebInspectorUIUserInterfaceExternalCodeMirrorcoffeescriptjs">branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/coffeescript.js</a></li>
<li><a href="#branchesjsCStackSourceWebInspectorUIUserInterfaceExternalCodeMirrorcssjs">branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/css.js</a></li>
<li><a href="#branchesjsCStackSourceWebInspectorUIUserInterfaceExternalCodeMirrorhtmlmixedjs">branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/htmlmixed.js</a></li>
<li><a href="#branchesjsCStackSourceWebInspectorUIUserInterfaceExternalCodeMirrorjavascriptjs">branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/javascript.js</a></li>
<li><a href="#branchesjsCStackSourceWebInspectorUIUserInterfaceExternalCodeMirrorlessjs">branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/less.js</a></li>
<li><a href="#branchesjsCStackSourceWebInspectorUIUserInterfaceExternalCodeMirrormatchbracketsjs">branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/matchbrackets.js</a></li>
<li><a href="#branchesjsCStackSourceWebInspectorUIUserInterfaceExternalCodeMirrorplaceholderjs">branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/placeholder.js</a></li>
<li><a href="#branchesjsCStackSourceWebInspectorUIUserInterfaceExternalCodeMirrorrunmodejs">branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/runmode.js</a></li>
<li><a href="#branchesjsCStackSourceWebInspectorUIUserInterfaceExternalCodeMirrorsearchcursorjs">branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/searchcursor.js</a></li>
<li><a href="#branchesjsCStackSourceWebInspectorUIUserInterfaceExternalCodeMirrorsqljs">branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/sql.js</a></li>
<li><a href="#branchesjsCStackSourceWebInspectorUIUserInterfaceExternalCodeMirrorxmljs">branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/xml.js</a></li>
<li><a href="#branchesjsCStackSourceWebInspectorUIUserInterfaceHoverMenujs">branches/jsCStack/Source/WebInspectorUI/UserInterface/HoverMenu.js</a></li>
<li><a href="#branchesjsCStackSourceWebInspectorUIUserInterfaceMainhtml">branches/jsCStack/Source/WebInspectorUI/UserInterface/Main.html</a></li>
<li><a href="#branchesjsCStackSourceWebInspectorUIUserInterfaceSourceCodeTextEditorcss">branches/jsCStack/Source/WebInspectorUI/UserInterface/SourceCodeTextEditor.css</a></li>
<li><a href="#branchesjsCStackSourceWebInspectorUIUserInterfaceSourceCodeTextEditorjs">branches/jsCStack/Source/WebInspectorUI/UserInterface/SourceCodeTextEditor.js</a></li>
<li><a href="#branchesjsCStackSourceWebInspectorUIUserInterfaceTextEditorjs">branches/jsCStack/Source/WebInspectorUI/UserInterface/TextEditor.js</a></li>
<li><a href="#branchesjsCStackSourceWebInspectorUIWebInspectorUIvcxprojWebInspectorUIvcxproj">branches/jsCStack/Source/WebInspectorUI/WebInspectorUI.vcxproj/WebInspectorUI.vcxproj</a></li>
<li><a href="#branchesjsCStackSourceWebKitChangeLog">branches/jsCStack/Source/WebKit/ChangeLog</a></li>
<li><a href="#branchesjsCStackSourceWebKitWebKitvcxprojInterfacesInterfacesvcxproj">branches/jsCStack/Source/WebKit/WebKit.vcxproj/Interfaces/Interfaces.vcxproj</a></li>
<li><a href="#branchesjsCStackSourceWebKitWebKitvcxprojWebKitWebKitvcxproj">branches/jsCStack/Source/WebKit/WebKit.vcxproj/WebKit/WebKit.vcxproj</a></li>
<li><a href="#branchesjsCStackSourceWebKitWebKitvcxprojWebKitWebKitVersioncmd">branches/jsCStack/Source/WebKit/WebKit.vcxproj/WebKit/WebKitVersion.cmd</a></li>
<li><a href="#branchesjsCStackSourceWebKitWebKitvcxprojWebKitsln">branches/jsCStack/Source/WebKit/WebKit.vcxproj/WebKit.sln</a></li>
<li><a href="#branchesjsCStackSourceWebKitWebKitvcxprojWebKitExportGeneratorWebKitExportGeneratorvcxproj">branches/jsCStack/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExportGenerator.vcxproj</a></li>
<li><a href="#branchesjsCStackSourceWebKitWebKitvcxprojWebKitExportGeneratorWebKitExportsdefin">branches/jsCStack/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in</a></li>
<li><a href="#branchesjsCStackSourceWebKitWebKitvcxprojWebKitGUIDWebKitGUIDvcxproj">branches/jsCStack/Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj</a></li>
<li><a href="#branchesjsCStackSourceWebKitWebKitxcodeprojprojectpbxproj">branches/jsCStack/Source/WebKit/WebKit.xcodeproj/project.pbxproj</a></li>
<li><a href="#branchesjsCStackSourceWebKitblackberryApiWebPagecpp">branches/jsCStack/Source/WebKit/blackberry/Api/WebPage.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKitblackberryChangeLog">branches/jsCStack/Source/WebKit/blackberry/ChangeLog</a></li>
<li><a href="#branchesjsCStackSourceWebKiteflChangeLog">branches/jsCStack/Source/WebKit/efl/ChangeLog</a></li>
<li><a href="#branchesjsCStackSourceWebKiteflWebCoreSupportDumpRenderTreeSupportEflcpp">branches/jsCStack/Source/WebKit/efl/WebCoreSupport/DumpRenderTreeSupportEfl.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKiteflewkewk_framecpp">branches/jsCStack/Source/WebKit/efl/ewk/ewk_frame.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKitgtkChangeLog">branches/jsCStack/Source/WebKit/gtk/ChangeLog</a></li>
<li><a href="#branchesjsCStackSourceWebKitgtkGNUmakefileam">branches/jsCStack/Source/WebKit/gtk/GNUmakefile.am</a></li>
<li><a href="#branchesjsCStackSourceWebKitgtkteststestatkc">branches/jsCStack/Source/WebKit/gtk/tests/testatk.c</a></li>
<li><a href="#branchesjsCStackSourceWebKitgtkteststestatkrolesc">branches/jsCStack/Source/WebKit/gtk/tests/testatkroles.c</a></li>
<li><a href="#branchesjsCStackSourceWebKitgtkteststestwebsettingsc">branches/jsCStack/Source/WebKit/gtk/tests/testwebsettings.c</a></li>
<li><a href="#branchesjsCStackSourceWebKitgtkwebkitwebkitdownloadcpp">branches/jsCStack/Source/WebKit/gtk/webkit/webkitdownload.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKitgtkwebkitwebkitwebsettingscpp">branches/jsCStack/Source/WebKit/gtk/webkit/webkitwebsettings.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKitgtkwebkitwebkitwebsettingsprivateh">branches/jsCStack/Source/WebKit/gtk/webkit/webkitwebsettingsprivate.h</a></li>
<li><a href="#branchesjsCStackSourceWebKitgtkwebkitwebkitwebviewcpp">branches/jsCStack/Source/WebKit/gtk/webkit/webkitwebview.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKitmacChangeLog">branches/jsCStack/Source/WebKit/mac/ChangeLog</a></li>
<li><a href="#branchesjsCStackSourceWebKitmacConfigurationsVersionxcconfig">branches/jsCStack/Source/WebKit/mac/Configurations/Version.xcconfig</a></li>
<li><a href="#branchesjsCStackSourceWebKitmacDOMWebDOMOperationsh">branches/jsCStack/Source/WebKit/mac/DOM/WebDOMOperations.h</a></li>
<li><a href="#branchesjsCStackSourceWebKitmacHistoryWebBackForwardListh">branches/jsCStack/Source/WebKit/mac/History/WebBackForwardList.h</a></li>
<li><a href="#branchesjsCStackSourceWebKitmacHistoryWebHistoryh">branches/jsCStack/Source/WebKit/mac/History/WebHistory.h</a></li>
<li><a href="#branchesjsCStackSourceWebKitmacHistoryWebHistoryItemh">branches/jsCStack/Source/WebKit/mac/History/WebHistoryItem.h</a></li>
<li><a href="#branchesjsCStackSourceWebKitmacHistoryWebHistoryItemmm">branches/jsCStack/Source/WebKit/mac/History/WebHistoryItem.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKitmacPluginsHostedNetscapePluginInstanceProxymm">branches/jsCStack/Source/WebKit/mac/Plugins/Hosted/NetscapePluginInstanceProxy.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKitmacPluginsWebPluginh">branches/jsCStack/Source/WebKit/mac/Plugins/WebPlugin.h</a></li>
<li><a href="#branchesjsCStackSourceWebKitmacPluginsWebPluginContainerh">branches/jsCStack/Source/WebKit/mac/Plugins/WebPluginContainer.h</a></li>
<li><a href="#branchesjsCStackSourceWebKitmacWebCoreSupportWebInspectorClientmm">branches/jsCStack/Source/WebKit/mac/WebCoreSupport/WebInspectorClient.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKitmacWebViewWebAllowDenyPolicyListenerh">branches/jsCStack/Source/WebKit/mac/WebView/WebAllowDenyPolicyListener.h</a></li>
<li><a href="#branchesjsCStackSourceWebKitmacWebViewWebArchiveh">branches/jsCStack/Source/WebKit/mac/WebView/WebArchive.h</a></li>
<li><a href="#branchesjsCStackSourceWebKitmacWebViewWebArchivemm">branches/jsCStack/Source/WebKit/mac/WebView/WebArchive.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKitmacWebViewWebDataSourceh">branches/jsCStack/Source/WebKit/mac/WebView/WebDataSource.h</a></li>
<li><a href="#branchesjsCStackSourceWebKitmacWebViewWebDataSourcemm">branches/jsCStack/Source/WebKit/mac/WebView/WebDataSource.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKitmacWebViewWebEditingDelegateh">branches/jsCStack/Source/WebKit/mac/WebView/WebEditingDelegate.h</a></li>
<li><a href="#branchesjsCStackSourceWebKitmacWebViewWebFrameh">branches/jsCStack/Source/WebKit/mac/WebView/WebFrame.h</a></li>
<li><a href="#branchesjsCStackSourceWebKitmacWebViewWebFramemm">branches/jsCStack/Source/WebKit/mac/WebView/WebFrame.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKitmacWebViewWebFrameViewh">branches/jsCStack/Source/WebKit/mac/WebView/WebFrameView.h</a></li>
<li><a href="#branchesjsCStackSourceWebKitmacWebViewWebPolicyDelegateh">branches/jsCStack/Source/WebKit/mac/WebView/WebPolicyDelegate.h</a></li>
<li><a href="#branchesjsCStackSourceWebKitmacWebViewWebPreferenceKeysPrivateh">branches/jsCStack/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h</a></li>
<li><a href="#branchesjsCStackSourceWebKitmacWebViewWebPreferencesh">branches/jsCStack/Source/WebKit/mac/WebView/WebPreferences.h</a></li>
<li><a href="#branchesjsCStackSourceWebKitmacWebViewWebPreferencesmm">branches/jsCStack/Source/WebKit/mac/WebView/WebPreferences.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKitmacWebViewWebPreferencesPrivateh">branches/jsCStack/Source/WebKit/mac/WebView/WebPreferencesPrivate.h</a></li>
<li><a href="#branchesjsCStackSourceWebKitmacWebViewWebResourceh">branches/jsCStack/Source/WebKit/mac/WebView/WebResource.h</a></li>
<li><a href="#branchesjsCStackSourceWebKitmacWebViewWebResourcemm">branches/jsCStack/Source/WebKit/mac/WebView/WebResource.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKitmacWebViewWebUIDelegateh">branches/jsCStack/Source/WebKit/mac/WebView/WebUIDelegate.h</a></li>
<li><a href="#branchesjsCStackSourceWebKitmacWebViewWebViewh">branches/jsCStack/Source/WebKit/mac/WebView/WebView.h</a></li>
<li><a href="#branchesjsCStackSourceWebKitmacWebViewWebViewmm">branches/jsCStack/Source/WebKit/mac/WebView/WebView.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKitwinChangeLog">branches/jsCStack/Source/WebKit/win/ChangeLog</a></li>
<li><a href="#branchesjsCStackSourceWebKitwinWebFramecpp">branches/jsCStack/Source/WebKit/win/WebFrame.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKitwinWebViewcpp">branches/jsCStack/Source/WebKit/win/WebView.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2CMakeListstxt">branches/jsCStack/Source/WebKit2/CMakeLists.txt</a></li>
<li><a href="#branchesjsCStackSourceWebKit2ChangeLog">branches/jsCStack/Source/WebKit2/ChangeLog</a></li>
<li><a href="#branchesjsCStackSourceWebKit2ConfigurationsVersionxcconfig">branches/jsCStack/Source/WebKit2/Configurations/Version.xcconfig</a></li>
<li><a href="#branchesjsCStackSourceWebKit2DatabaseProcessDatabaseProcesscpp">branches/jsCStack/Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2DatabaseProcessDatabaseProcessh">branches/jsCStack/Source/WebKit2/DatabaseProcess/DatabaseProcess.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2DatabaseProcessIndexedDBUniqueIDBDatabasecpp">branches/jsCStack/Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2DatabaseProcessIndexedDBUniqueIDBDatabaseh">branches/jsCStack/Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2DatabaseProcessIndexedDBUniqueIDBDatabaseIdentifiercpp">branches/jsCStack/Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabaseIdentifier.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2DatabaseProcessIndexedDBUniqueIDBDatabaseIdentifierh">branches/jsCStack/Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabaseIdentifier.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2DerivedSourcesmake">branches/jsCStack/Source/WebKit2/DerivedSources.make</a></li>
<li><a href="#branchesjsCStackSourceWebKit2GNUmakefileam">branches/jsCStack/Source/WebKit2/GNUmakefile.am</a></li>
<li><a href="#branchesjsCStackSourceWebKit2GNUmakefilelistam">branches/jsCStack/Source/WebKit2/GNUmakefile.list.am</a></li>
<li><a href="#branchesjsCStackSourceWebKit2NetworkProcessAsynchronousNetworkLoaderClientcpp">branches/jsCStack/Source/WebKit2/NetworkProcess/AsynchronousNetworkLoaderClient.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2NetworkProcessNetworkProcesscpp">branches/jsCStack/Source/WebKit2/NetworkProcess/NetworkProcess.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2NetworkProcessNetworkProcessh">branches/jsCStack/Source/WebKit2/NetworkProcess/NetworkProcess.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2NetworkProcessNetworkProcessmessagesin">branches/jsCStack/Source/WebKit2/NetworkProcess/NetworkProcess.messages.in</a></li>
<li><a href="#branchesjsCStackSourceWebKit2NetworkProcessNetworkResourceLoadercpp">branches/jsCStack/Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2NetworkProcessmacNetworkProcessMacmm">branches/jsCStack/Source/WebKit2/NetworkProcess/mac/NetworkProcessMac.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2NetworkProcesssoupNetworkProcessSoupcpp">branches/jsCStack/Source/WebKit2/NetworkProcess/soup/NetworkProcessSoup.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2NetworkProcessunixNetworkProcessMainUnixcpp">branches/jsCStack/Source/WebKit2/NetworkProcess/unix/NetworkProcessMainUnix.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2PlatformCoreIPCArgumentDecodercpp">branches/jsCStack/Source/WebKit2/Platform/CoreIPC/ArgumentDecoder.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2PlatformCoreIPCArgumentEncodercpp">branches/jsCStack/Source/WebKit2/Platform/CoreIPC/ArgumentEncoder.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2PlatformCoreIPCConnectionh">branches/jsCStack/Source/WebKit2/Platform/CoreIPC/Connection.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2PlatformCoreIPCHandleMessageh">branches/jsCStack/Source/WebKit2/Platform/CoreIPC/HandleMessage.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2PlatformCoreIPCMessageReceiverMapcpp">branches/jsCStack/Source/WebKit2/Platform/CoreIPC/MessageReceiverMap.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2PlatformCoreIPCMessageReceiverMaph">branches/jsCStack/Source/WebKit2/Platform/CoreIPC/MessageReceiverMap.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2PlatformCoreIPCMessageSendercpp">branches/jsCStack/Source/WebKit2/Platform/CoreIPC/MessageSender.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2PlatformCoreIPCMessageSenderh">branches/jsCStack/Source/WebKit2/Platform/CoreIPC/MessageSender.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2PlatformCoreIPCunixConnectionUnixcpp">branches/jsCStack/Source/WebKit2/Platform/CoreIPC/unix/ConnectionUnix.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2PlatformIPCDataReferencecpp">branches/jsCStack/Source/WebKit2/Platform/IPC/DataReference.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2PlatformIPCDataReferenceh">branches/jsCStack/Source/WebKit2/Platform/IPC/DataReference.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2PlatformIPCStringReferencecpp">branches/jsCStack/Source/WebKit2/Platform/IPC/StringReference.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2PlatformIPCStringReferenceh">branches/jsCStack/Source/WebKit2/Platform/IPC/StringReference.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2PlatformEflcmake">branches/jsCStack/Source/WebKit2/PlatformEfl.cmake</a></li>
<li><a href="#branchesjsCStackSourceWebKit2PlatformGTKcmake">branches/jsCStack/Source/WebKit2/PlatformGTK.cmake</a></li>
<li><a href="#branchesjsCStackSourceWebKit2PluginProcessPluginProcesscpp">branches/jsCStack/Source/WebKit2/PluginProcess/PluginProcess.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedAPICocoaWKRemoteObjectCodermm">branches/jsCStack/Source/WebKit2/Shared/API/Cocoa/WKRemoteObjectCoder.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedAPIcWKContextMenuItemcpp">branches/jsCStack/Source/WebKit2/Shared/API/c/WKContextMenuItem.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedAPIcWKDictionarycpp">branches/jsCStack/Source/WebKit2/Shared/API/c/WKDictionary.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedAPIcWKDictionaryh">branches/jsCStack/Source/WebKit2/Shared/API/c/WKDictionary.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedAPIcWKGeometrycpp">branches/jsCStack/Source/WebKit2/Shared/API/c/WKGeometry.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedAPIcWKNumbercpp">branches/jsCStack/Source/WebKit2/Shared/API/c/WKNumber.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedAPIcWKSharedAPICasth">branches/jsCStack/Source/WebKit2/Shared/API/c/WKSharedAPICast.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedAPIcWKURLRequestcpp">branches/jsCStack/Source/WebKit2/Shared/API/c/WKURLRequest.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedAPIcmacWKCertificateInfoMacmm">branches/jsCStack/Source/WebKit2/Shared/API/c/mac/WKCertificateInfoMac.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedAPIcmacWKURLRequestNSmm">branches/jsCStack/Source/WebKit2/Shared/API/c/mac/WKURLRequestNS.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedAPIcmacWKURLResponseNSmm">branches/jsCStack/Source/WebKit2/Shared/API/c/mac/WKURLResponseNS.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedAPIArrayh">branches/jsCStack/Source/WebKit2/Shared/APIArray.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedAPIObjecth">branches/jsCStack/Source/WebKit2/Shared/APIObject.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedAuthenticationAuthenticationManagercpp">branches/jsCStack/Source/WebKit2/Shared/Authentication/AuthenticationManager.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedAuthenticationAuthenticationManagerh">branches/jsCStack/Source/WebKit2/Shared/Authentication/AuthenticationManager.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedAuthenticationAuthenticationManagermessagesin">branches/jsCStack/Source/WebKit2/Shared/Authentication/AuthenticationManager.messages.in</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedAuthenticationmacAuthenticationManagermacmm">branches/jsCStack/Source/WebKit2/Shared/Authentication/mac/AuthenticationManager.mac.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedChildProcesscpp">branches/jsCStack/Source/WebKit2/Shared/ChildProcess.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedChildProcessh">branches/jsCStack/Source/WebKit2/Shared/ChildProcess.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedChildProcessProxycpp">branches/jsCStack/Source/WebKit2/Shared/ChildProcessProxy.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedChildProcessProxyh">branches/jsCStack/Source/WebKit2/Shared/ChildProcessProxy.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedCocoaAPIObjectmm">branches/jsCStack/Source/WebKit2/Shared/Cocoa/APIObject.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedCocoaWKNSDictionarymm">branches/jsCStack/Source/WebKit2/Shared/Cocoa/WKNSDictionary.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedImmutableDictionarycpp">branches/jsCStack/Source/WebKit2/Shared/ImmutableDictionary.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedImmutableDictionaryh">branches/jsCStack/Source/WebKit2/Shared/ImmutableDictionary.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedMutableDictionarycpp">branches/jsCStack/Source/WebKit2/Shared/MutableDictionary.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedNetworkNetworkProcessCreationParameterscpp">branches/jsCStack/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedNetworkNetworkProcessCreationParametersh">branches/jsCStack/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedPluginsNetscapePluginInformationcpp">branches/jsCStack/Source/WebKit2/Shared/Plugins/Netscape/PluginInformation.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedPluginsNetscapemacPluginInformationMacmm">branches/jsCStack/Source/WebKit2/Shared/Plugins/Netscape/mac/PluginInformationMac.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedSecurityOriginDatacpp">branches/jsCStack/Source/WebKit2/Shared/SecurityOriginData.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedSecurityOriginDatah">branches/jsCStack/Source/WebKit2/Shared/SecurityOriginData.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedUserMessageCodersh">branches/jsCStack/Source/WebKit2/Shared/UserMessageCoders.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedWebArchiveh">branches/jsCStack/Source/WebKit2/Shared/WebArchive.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedWebArchiveResourceh">branches/jsCStack/Source/WebKit2/Shared/WebArchiveResource.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedWebBackForwardListItemh">branches/jsCStack/Source/WebKit2/Shared/WebBackForwardListItem.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedWebBatteryStatush">branches/jsCStack/Source/WebKit2/Shared/WebBatteryStatus.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedWebCertificateInfoh">branches/jsCStack/Source/WebKit2/Shared/WebCertificateInfo.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedWebConnectioncpp">branches/jsCStack/Source/WebKit2/Shared/WebConnection.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedWebConnectionh">branches/jsCStack/Source/WebKit2/Shared/WebConnection.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedWebContextMenuItemh">branches/jsCStack/Source/WebKit2/Shared/WebContextMenuItem.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedWebCoreArgumentCoderscpp">branches/jsCStack/Source/WebKit2/Shared/WebCoreArgumentCoders.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedWebCoreArgumentCodersh">branches/jsCStack/Source/WebKit2/Shared/WebCoreArgumentCoders.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedWebDatah">branches/jsCStack/Source/WebKit2/Shared/WebData.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedWebErrorh">branches/jsCStack/Source/WebKit2/Shared/WebError.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedWebGeolocationPositionh">branches/jsCStack/Source/WebKit2/Shared/WebGeolocationPosition.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedWebGeometryh">branches/jsCStack/Source/WebKit2/Shared/WebGeometry.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedWebHitTestResulth">branches/jsCStack/Source/WebKit2/Shared/WebHitTestResult.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedWebImageh">branches/jsCStack/Source/WebKit2/Shared/WebImage.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedWebNetworkInfoh">branches/jsCStack/Source/WebKit2/Shared/WebNetworkInfo.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedWebNumberh">branches/jsCStack/Source/WebKit2/Shared/WebNumber.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedWebOpenPanelParametersh">branches/jsCStack/Source/WebKit2/Shared/WebOpenPanelParameters.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedWebPageCreationParameterscpp">branches/jsCStack/Source/WebKit2/Shared/WebPageCreationParameters.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedWebPageCreationParametersh">branches/jsCStack/Source/WebKit2/Shared/WebPageCreationParameters.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedWebPreferencesStoreh">branches/jsCStack/Source/WebKit2/Shared/WebPreferencesStore.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedWebRenderLayerh">branches/jsCStack/Source/WebKit2/Shared/WebRenderLayer.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedWebRenderObjecth">branches/jsCStack/Source/WebKit2/Shared/WebRenderObject.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedWebSecurityOriginh">branches/jsCStack/Source/WebKit2/Shared/WebSecurityOrigin.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedWebSerializedScriptValueh">branches/jsCStack/Source/WebKit2/Shared/WebSerializedScriptValue.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedWebStringh">branches/jsCStack/Source/WebKit2/Shared/WebString.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedWebURLh">branches/jsCStack/Source/WebKit2/Shared/WebURL.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedWebURLRequestcpp">branches/jsCStack/Source/WebKit2/Shared/WebURLRequest.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedWebURLRequesth">branches/jsCStack/Source/WebKit2/Shared/WebURLRequest.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedWebURLResponseh">branches/jsCStack/Source/WebKit2/Shared/WebURLResponse.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedWebUserContentURLPatternh">branches/jsCStack/Source/WebKit2/Shared/WebUserContentURLPattern.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedmacCertificateInfoh">branches/jsCStack/Source/WebKit2/Shared/mac/CertificateInfo.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedmacCertificateInfomm">branches/jsCStack/Source/WebKit2/Shared/mac/CertificateInfo.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedmacObjCObjectGraphh">branches/jsCStack/Source/WebKit2/Shared/mac/ObjCObjectGraph.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedmacObjCObjectGraphCodersmm">branches/jsCStack/Source/WebKit2/Shared/mac/ObjCObjectGraphCoders.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedmacWebCoreArgumentCodersMacmm">branches/jsCStack/Source/WebKit2/Shared/mac/WebCoreArgumentCodersMac.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedmacWebURLRequestMacmm">branches/jsCStack/Source/WebKit2/Shared/mac/WebURLRequestMac.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedmacWebURLResponseMacmm">branches/jsCStack/Source/WebKit2/Shared/mac/WebURLResponseMac.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedsoupCertificateInfocpp">branches/jsCStack/Source/WebKit2/Shared/soup/CertificateInfo.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedsoupCertificateInfoh">branches/jsCStack/Source/WebKit2/Shared/soup/CertificateInfo.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedsoupWebCoreArgumentCodersSoupcpp">branches/jsCStack/Source/WebKit2/Shared/soup/WebCoreArgumentCodersSoup.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPICCoordinatedGraphicsWKViewcpp">branches/jsCStack/Source/WebKit2/UIProcess/API/C/CoordinatedGraphics/WKView.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPICWKPagecpp">branches/jsCStack/Source/WebKit2/UIProcess/API/C/WKPage.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPICWKPageh">branches/jsCStack/Source/WebKit2/UIProcess/API/C/WKPage.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPICWKPreferencescpp">branches/jsCStack/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPICWKPreferencesPrivateh">branches/jsCStack/Source/WebKit2/UIProcess/API/C/WKPreferencesPrivate.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPICgtkWKInspectorClientGtkh">branches/jsCStack/Source/WebKit2/UIProcess/API/C/gtk/WKInspectorClientGtk.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPICmacWKContextPrivateMacmm">branches/jsCStack/Source/WebKit2/UIProcess/API/C/mac/WKContextPrivateMac.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPICocoaWKBrowsingContextControllermm">branches/jsCStack/Source/WebKit2/UIProcess/API/Cocoa/WKBrowsingContextController.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPICocoaWKBrowsingContextLoadDelegatePrivateh">branches/jsCStack/Source/WebKit2/UIProcess/API/Cocoa/WKBrowsingContextLoadDelegatePrivate.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPICocoaWKBrowsingContextPolicyDelegateh">branches/jsCStack/Source/WebKit2/UIProcess/API/Cocoa/WKBrowsingContextPolicyDelegate.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPICocoaWKConnectionmm">branches/jsCStack/Source/WebKit2/UIProcess/API/Cocoa/WKConnection.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPICocoaWKViewPrivateh">branches/jsCStack/Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPIgtkPageClientImplcpp">branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPIgtkPageClientImplh">branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPIgtkWebKitCertificateInfoPrivateh">branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitCertificateInfoPrivate.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPIgtkWebKitInjectedBundleClientcpp">branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitInjectedBundleClient.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPIgtkWebKitSettingscpp">branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPIgtkWebKitSettingsh">branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPIgtkWebKitWebContextcpp">branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPIgtkWebKitWebViewcpp">branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPIgtkWebKitWebViewBasecpp">branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPIgtkWebKitWebViewBasePrivateh">branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBasePrivate.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPIgtkWebKitWindowPropertiescpp">branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPIgtkdocswebkit2gtksectionstxt">branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPIgtktestsDOMNodeTestcpp">branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/tests/DOMNodeTest.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPIgtktestsTestDOMNodecpp">branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/tests/TestDOMNode.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPIgtktestsTestMaincpp">branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/tests/TestMain.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPIgtktestsTestWebKitAccessibilitycpp">branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitAccessibility.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPIgtktestsTestWebKitSettingscpp">branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitSettings.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPIgtktestsWebProcessTestRunnercpp">branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/tests/WebProcessTestRunner.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPIiosPageClientImplIOSh">branches/jsCStack/Source/WebKit2/UIProcess/API/ios/PageClientImplIOS.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPIiosPageClientImplIOSmm">branches/jsCStack/Source/WebKit2/UIProcess/API/ios/PageClientImplIOS.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPIiosWKGeolocationProviderIOSmm">branches/jsCStack/Source/WebKit2/UIProcess/API/ios/WKGeolocationProviderIOS.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPImacPageClientImplh">branches/jsCStack/Source/WebKit2/UIProcess/API/mac/PageClientImpl.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPImacPageClientImplmm">branches/jsCStack/Source/WebKit2/UIProcess/API/mac/PageClientImpl.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPImacWKViewmm">branches/jsCStack/Source/WebKit2/UIProcess/API/mac/WKView.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPImacWKViewInternalh">branches/jsCStack/Source/WebKit2/UIProcess/API/mac/WKViewInternal.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPINavigationDatah">branches/jsCStack/Source/WebKit2/UIProcess/APINavigationData.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAuthenticationAuthenticationChallengeProxycpp">branches/jsCStack/Source/WebKit2/UIProcess/Authentication/AuthenticationChallengeProxy.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAuthenticationAuthenticationChallengeProxyh">branches/jsCStack/Source/WebKit2/UIProcess/Authentication/AuthenticationChallengeProxy.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAuthenticationAuthenticationDecisionListenerh">branches/jsCStack/Source/WebKit2/UIProcess/Authentication/AuthenticationDecisionListener.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAuthenticationWebCredentialh">branches/jsCStack/Source/WebKit2/UIProcess/Authentication/WebCredential.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAuthenticationWebProtectionSpaceh">branches/jsCStack/Source/WebKit2/UIProcess/Authentication/WebProtectionSpace.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessCoordinatedGraphicsCoordinatedLayerTreeHostProxycpp">branches/jsCStack/Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessCoordinatedGraphicsWebViewcpp">branches/jsCStack/Source/WebKit2/UIProcess/CoordinatedGraphics/WebView.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessCoordinatedGraphicsWebViewh">branches/jsCStack/Source/WebKit2/UIProcess/CoordinatedGraphics/WebView.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessDownloadsDownloadProxyh">branches/jsCStack/Source/WebKit2/UIProcess/Downloads/DownloadProxy.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessDownloadsDownloadProxyMapcpp">branches/jsCStack/Source/WebKit2/UIProcess/Downloads/DownloadProxyMap.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessDrawingAreaProxycpp">branches/jsCStack/Source/WebKit2/UIProcess/DrawingAreaProxy.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessDrawingAreaProxyh">branches/jsCStack/Source/WebKit2/UIProcess/DrawingAreaProxy.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessGeolocationPermissionRequestProxyh">branches/jsCStack/Source/WebKit2/UIProcess/GeolocationPermissionRequestProxy.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessNetworkCustomProtocolsmacCustomProtocolManagerProxyMacmm">branches/jsCStack/Source/WebKit2/UIProcess/Network/CustomProtocols/mac/CustomProtocolManagerProxyMac.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessNetworkNetworkProcessProxycpp">branches/jsCStack/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessNetworksoupNetworkProcessProxySoupcpp">branches/jsCStack/Source/WebKit2/UIProcess/Network/soup/NetworkProcessProxySoup.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessNotificationsNotificationPermissionRequesth">branches/jsCStack/Source/WebKit2/UIProcess/Notifications/NotificationPermissionRequest.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessNotificationsWebNotificationh">branches/jsCStack/Source/WebKit2/UIProcess/Notifications/WebNotification.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessNotificationsWebNotificationManagerProxycpp">branches/jsCStack/Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessNotificationsWebNotificationManagerProxyh">branches/jsCStack/Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessNotificationsWebNotificationProvidercpp">branches/jsCStack/Source/WebKit2/UIProcess/Notifications/WebNotificationProvider.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessPageClienth">branches/jsCStack/Source/WebKit2/UIProcess/PageClient.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessPageLoadStatecpp">branches/jsCStack/Source/WebKit2/UIProcess/PageLoadState.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessPageLoadStateh">branches/jsCStack/Source/WebKit2/UIProcess/PageLoadState.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessPluginsPlugInAutoStartProvidercpp">branches/jsCStack/Source/WebKit2/UIProcess/Plugins/PlugInAutoStartProvider.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessPluginsWebPluginSiteDataManagerh">branches/jsCStack/Source/WebKit2/UIProcess/Plugins/WebPluginSiteDataManager.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessStatisticsRequestcpp">branches/jsCStack/Source/WebKit2/UIProcess/StatisticsRequest.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebApplicationCacheManagerProxycpp">branches/jsCStack/Source/WebKit2/UIProcess/WebApplicationCacheManagerProxy.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebApplicationCacheManagerProxyh">branches/jsCStack/Source/WebKit2/UIProcess/WebApplicationCacheManagerProxy.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebBackForwardListh">branches/jsCStack/Source/WebKit2/UIProcess/WebBackForwardList.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebBatteryManagerProxycpp">branches/jsCStack/Source/WebKit2/UIProcess/WebBatteryManagerProxy.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebBatteryManagerProxyh">branches/jsCStack/Source/WebKit2/UIProcess/WebBatteryManagerProxy.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebColorPickerResultListenerProxyh">branches/jsCStack/Source/WebKit2/UIProcess/WebColorPickerResultListenerProxy.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebConnectionToWebProcesscpp">branches/jsCStack/Source/WebKit2/UIProcess/WebConnectionToWebProcess.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebContextcpp">branches/jsCStack/Source/WebKit2/UIProcess/WebContext.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebContexth">branches/jsCStack/Source/WebKit2/UIProcess/WebContext.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebCookieManagerProxycpp">branches/jsCStack/Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebCookieManagerProxyh">branches/jsCStack/Source/WebKit2/UIProcess/WebCookieManagerProxy.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebDatabaseManagerProxycpp">branches/jsCStack/Source/WebKit2/UIProcess/WebDatabaseManagerProxy.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebDatabaseManagerProxyh">branches/jsCStack/Source/WebKit2/UIProcess/WebDatabaseManagerProxy.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebEditCommandProxyh">branches/jsCStack/Source/WebKit2/UIProcess/WebEditCommandProxy.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebFormClientcpp">branches/jsCStack/Source/WebKit2/UIProcess/WebFormClient.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebFrameProxycpp">branches/jsCStack/Source/WebKit2/UIProcess/WebFrameProxy.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebFrameProxyh">branches/jsCStack/Source/WebKit2/UIProcess/WebFrameProxy.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebFullScreenManagerProxycpp">branches/jsCStack/Source/WebKit2/UIProcess/WebFullScreenManagerProxy.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebFullScreenManagerProxyh">branches/jsCStack/Source/WebKit2/UIProcess/WebFullScreenManagerProxy.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebGeolocationManagerProxycpp">branches/jsCStack/Source/WebKit2/UIProcess/WebGeolocationManagerProxy.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebGeolocationManagerProxyh">branches/jsCStack/Source/WebKit2/UIProcess/WebGeolocationManagerProxy.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebGrammarDetailh">branches/jsCStack/Source/WebKit2/UIProcess/WebGrammarDetail.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebIconDatabasecpp">branches/jsCStack/Source/WebKit2/UIProcess/WebIconDatabase.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebIconDatabaseh">branches/jsCStack/Source/WebKit2/UIProcess/WebIconDatabase.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebInspectorProxycpp">branches/jsCStack/Source/WebKit2/UIProcess/WebInspectorProxy.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebInspectorProxyh">branches/jsCStack/Source/WebKit2/UIProcess/WebInspectorProxy.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebKeyValueStorageManagerh">branches/jsCStack/Source/WebKit2/UIProcess/WebKeyValueStorageManager.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebMediaCacheManagerProxycpp">branches/jsCStack/Source/WebKit2/UIProcess/WebMediaCacheManagerProxy.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebMediaCacheManagerProxyh">branches/jsCStack/Source/WebKit2/UIProcess/WebMediaCacheManagerProxy.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebNetworkInfoManagerProxycpp">branches/jsCStack/Source/WebKit2/UIProcess/WebNetworkInfoManagerProxy.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebNetworkInfoManagerProxyh">branches/jsCStack/Source/WebKit2/UIProcess/WebNetworkInfoManagerProxy.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebOpenPanelResultListenerProxyh">branches/jsCStack/Source/WebKit2/UIProcess/WebOpenPanelResultListenerProxy.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebOriginDataManagerProxycpp">branches/jsCStack/Source/WebKit2/UIProcess/WebOriginDataManagerProxy.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebOriginDataManagerProxyh">branches/jsCStack/Source/WebKit2/UIProcess/WebOriginDataManagerProxy.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebPageGrouph">branches/jsCStack/Source/WebKit2/UIProcess/WebPageGroup.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebPageProxycpp">branches/jsCStack/Source/WebKit2/UIProcess/WebPageProxy.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebPageProxyh">branches/jsCStack/Source/WebKit2/UIProcess/WebPageProxy.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebPageProxymessagesin">branches/jsCStack/Source/WebKit2/UIProcess/WebPageProxy.messages.in</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebPolicyClientcpp">branches/jsCStack/Source/WebKit2/UIProcess/WebPolicyClient.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebPolicyClienth">branches/jsCStack/Source/WebKit2/UIProcess/WebPolicyClient.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebPreferencesh">branches/jsCStack/Source/WebKit2/UIProcess/WebPreferences.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebProcessProxycpp">branches/jsCStack/Source/WebKit2/UIProcess/WebProcessProxy.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebProcessProxyh">branches/jsCStack/Source/WebKit2/UIProcess/WebProcessProxy.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebResourceCacheManagerProxycpp">branches/jsCStack/Source/WebKit2/UIProcess/WebResourceCacheManagerProxy.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebResourceCacheManagerProxyh">branches/jsCStack/Source/WebKit2/UIProcess/WebResourceCacheManagerProxy.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebTextCheckerh">branches/jsCStack/Source/WebKit2/UIProcess/WebTextChecker.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebUIClientcpp">branches/jsCStack/Source/WebKit2/UIProcess/WebUIClient.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebVibrationProxycpp">branches/jsCStack/Source/WebKit2/UIProcess/WebVibrationProxy.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebVibrationProxyh">branches/jsCStack/Source/WebKit2/UIProcess/WebVibrationProxy.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessWebViewportAttributesh">branches/jsCStack/Source/WebKit2/UIProcess/WebViewportAttributes.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcesscfWebPageProxyCFcpp">branches/jsCStack/Source/WebKit2/UIProcess/cf/WebPageProxyCF.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcesseflWebFullScreenManagerProxyEflcpp">branches/jsCStack/Source/WebKit2/UIProcess/efl/WebFullScreenManagerProxyEfl.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcesseflWebPopupItemEflh">branches/jsCStack/Source/WebKit2/UIProcess/efl/WebPopupItemEfl.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcesseflWebViewEflcpp">branches/jsCStack/Source/WebKit2/UIProcess/efl/WebViewEfl.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcesseflWebViewEflh">branches/jsCStack/Source/WebKit2/UIProcess/efl/WebViewEfl.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessgtkWebContextGtkcpp">branches/jsCStack/Source/WebKit2/UIProcess/gtk/WebContextGtk.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessgtkWebFullScreenManagerProxyGtkcpp">branches/jsCStack/Source/WebKit2/UIProcess/gtk/WebFullScreenManagerProxyGtk.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessgtkWebInspectorClientGtkcpp">branches/jsCStack/Source/WebKit2/UIProcess/gtk/WebInspectorClientGtk.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessgtkWebInspectorClientGtkh">branches/jsCStack/Source/WebKit2/UIProcess/gtk/WebInspectorClientGtk.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessgtkWebInspectorProxyGtkcpp">branches/jsCStack/Source/WebKit2/UIProcess/gtk/WebInspectorProxyGtk.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessiosWebFullScreenManagerProxyIOSmm">branches/jsCStack/Source/WebKit2/UIProcess/ios/WebFullScreenManagerProxyIOS.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessiosWebPageProxyIOSmm">branches/jsCStack/Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessmacRemoteLayerTreeHostmm">branches/jsCStack/Source/WebKit2/UIProcess/mac/RemoteLayerTreeHost.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessmacTiledCoreAnimationDrawingAreaProxyh">branches/jsCStack/Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessmacTiledCoreAnimationDrawingAreaProxymm">branches/jsCStack/Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessmacWKFullScreenWindowControllermm">branches/jsCStack/Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessmacWebFullScreenManagerProxyMacmm">branches/jsCStack/Source/WebKit2/UIProcess/mac/WebFullScreenManagerProxyMac.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessmacWebPageProxyMacmm">branches/jsCStack/Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcesssoupWebContextSoupcpp">branches/jsCStack/Source/WebKit2/UIProcess/soup/WebContextSoup.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcesssoupWebSoupRequestManagerProxycpp">branches/jsCStack/Source/WebKit2/UIProcess/soup/WebSoupRequestManagerProxy.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcesssoupWebSoupRequestManagerProxyh">branches/jsCStack/Source/WebKit2/UIProcess/soup/WebSoupRequestManagerProxy.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebKit2xcodeprojprojectpbxproj">branches/jsCStack/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessApplicationCacheWebApplicationCacheManagercpp">branches/jsCStack/Source/WebKit2/WebProcess/ApplicationCache/WebApplicationCacheManager.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessBatteryWebBatteryManagercpp">branches/jsCStack/Source/WebKit2/WebProcess/Battery/WebBatteryManager.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessCookiesWebCookieManagercpp">branches/jsCStack/Source/WebKit2/WebProcess/Cookies/WebCookieManager.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessGeolocationWebGeolocationManagercpp">branches/jsCStack/Source/WebKit2/WebProcess/Geolocation/WebGeolocationManager.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessIconDatabaseWebIconDatabaseProxycpp">branches/jsCStack/Source/WebKit2/WebProcess/IconDatabase/WebIconDatabaseProxy.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPIcWKBundlePagecpp">branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPIgtkWebKitWebPagecpp">branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPImacWKWebProcessPlugInh">branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPImacWKWebProcessPlugInmm">branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPImacWKWebProcessPlugInBrowserContextControllermm">branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPImacWKWebProcessPlugInBrowserContextControllerInternalh">branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerInternal.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPImacWKWebProcessPlugInInternalh">branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInInternal.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPImacWKWebProcessPlugInPrivateh">branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInPrivate.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessInjectedBundleDOMInjectedBundleNodeHandleh">branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessInjectedBundleDOMInjectedBundleRangeHandleh">branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessInjectedBundleInjectedBundleh">branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessInjectedBundleInjectedBundleBackForwardListh">branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleBackForwardList.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessInjectedBundleInjectedBundleBackForwardListItemh">branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleBackForwardListItem.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessInjectedBundleInjectedBundleDOMWindowExtensionh">branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleDOMWindowExtension.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessInjectedBundleInjectedBundleHitTestResulth">branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleHitTestResult.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessInjectedBundleInjectedBundleNavigationActionh">branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleNavigationAction.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessInjectedBundleInjectedBundlePageFormClientcpp">branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageFormClient.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessInjectedBundleInjectedBundleScriptWorldh">branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleScriptWorld.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessInjectedBundlemacInjectedBundleMacmm">branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/mac/InjectedBundleMac.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessMediaCacheWebMediaCacheManagercpp">branches/jsCStack/Source/WebKit2/WebProcess/MediaCache/WebMediaCacheManager.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessNetworkWebResourceLoadercpp">branches/jsCStack/Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessNetworkWebResourceLoaderh">branches/jsCStack/Source/WebKit2/WebProcess/Network/WebResourceLoader.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessNetworkWebResourceLoadermessagesin">branches/jsCStack/Source/WebKit2/WebProcess/Network/WebResourceLoader.messages.in</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessNetworkInfoWebNetworkInfoManagercpp">branches/jsCStack/Source/WebKit2/WebProcess/NetworkInfo/WebNetworkInfoManager.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessNotificationsWebNotificationManagercpp">branches/jsCStack/Source/WebKit2/WebProcess/Notifications/WebNotificationManager.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessOriginDataWebOriginDataManagercpp">branches/jsCStack/Source/WebKit2/WebProcess/OriginData/WebOriginDataManager.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessPluginsPluginViewcpp">branches/jsCStack/Source/WebKit2/WebProcess/Plugins/PluginView.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessResourceCacheWebResourceCacheManagercpp">branches/jsCStack/Source/WebKit2/WebProcess/ResourceCache/WebResourceCacheManager.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessStorageStorageAreaMapcpp">branches/jsCStack/Source/WebKit2/WebProcess/Storage/StorageAreaMap.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessWebConnectionToUIProcesscpp">branches/jsCStack/Source/WebKit2/WebProcess/WebConnectionToUIProcess.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessWebCoreSupportWebChromeClientcpp">branches/jsCStack/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessWebCoreSupportWebDatabaseManagercpp">branches/jsCStack/Source/WebKit2/WebProcess/WebCoreSupport/WebDatabaseManager.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessWebCoreSupportWebFrameLoaderClientcpp">branches/jsCStack/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessWebPageDrawingAreah">branches/jsCStack/Source/WebKit2/WebProcess/WebPage/DrawingArea.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessWebPageDrawingAreamessagesin">branches/jsCStack/Source/WebKit2/WebProcess/WebPage/DrawingArea.messages.in</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessWebPagePageBannerh">branches/jsCStack/Source/WebKit2/WebProcess/WebPage/PageBanner.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessWebPagePageOverlayh">branches/jsCStack/Source/WebKit2/WebProcess/WebPage/PageOverlay.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessWebPageWebFrameh">branches/jsCStack/Source/WebKit2/WebProcess/WebPage/WebFrame.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessWebPageWebInspectorcpp">branches/jsCStack/Source/WebKit2/WebProcess/WebPage/WebInspector.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessWebPageWebInspectorh">branches/jsCStack/Source/WebKit2/WebProcess/WebPage/WebInspector.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessWebPageWebPagecpp">branches/jsCStack/Source/WebKit2/WebProcess/WebPage/WebPage.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessWebPageWebPageh">branches/jsCStack/Source/WebKit2/WebProcess/WebPage/WebPage.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessWebPageWebPagemessagesin">branches/jsCStack/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessWebPageWebPageGroupProxyh">branches/jsCStack/Source/WebKit2/WebProcess/WebPage/WebPageGroupProxy.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessWebPageiosWebPageIOSmm">branches/jsCStack/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessWebPagemacTiledCoreAnimationDrawingAreah">branches/jsCStack/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessWebPagemacTiledCoreAnimationDrawingAreamm">branches/jsCStack/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessWebPagemacWKAccessibilityWebPageObjectmm">branches/jsCStack/Source/WebKit2/WebProcess/WebPage/mac/WKAccessibilityWebPageObject.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessWebProcesscpp">branches/jsCStack/Source/WebKit2/WebProcess/WebProcess.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessWebProcessh">branches/jsCStack/Source/WebKit2/WebProcess/WebProcess.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessWebProcessmessagesin">branches/jsCStack/Source/WebKit2/WebProcess/WebProcess.messages.in</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessgtkWebGtkExtensionManagerh">branches/jsCStack/Source/WebKit2/WebProcess/gtk/WebGtkExtensionManager.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcesssoupWebProcessSoupcpp">branches/jsCStack/Source/WebKit2/WebProcess/soup/WebProcessSoup.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcesssoupWebSoupRequestManagercpp">branches/jsCStack/Source/WebKit2/WebProcess/soup/WebSoupRequestManager.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2configh">branches/jsCStack/Source/WebKit2/config.h</a></li>
<li><a href="#branchesjsCStackSourceautotoolsSetupAutomakem4">branches/jsCStack/Source/autotools/SetupAutomake.m4</a></li>
<li><a href="#branchesjsCStackSourceautotoolsSetupCompilerFlagsm4">branches/jsCStack/Source/autotools/SetupCompilerFlags.m4</a></li>
<li><a href="#branchesjsCStackSourceautotoolsSetupLibtoolm4">branches/jsCStack/Source/autotools/SetupLibtool.m4</a></li>
<li><a href="#branchesjsCStackSourceautotoolsSetupWebKitFeaturesm4">branches/jsCStack/Source/autotools/SetupWebKitFeatures.m4</a></li>
<li><a href="#branchesjsCStackSourcecmakeOptionsGTKcmake">branches/jsCStack/Source/cmake/OptionsGTK.cmake</a></li>
<li><a href="#branchesjsCStackSourcecmakeWebKitHelperscmake">branches/jsCStack/Source/cmake/WebKitHelpers.cmake</a></li>
<li><a href="#branchesjsCStackToolsBuildSlaveSupportbuildwebkitorgconfigconfigjson">branches/jsCStack/Tools/BuildSlaveSupport/build.webkit.org-config/config.json</a></li>
<li><a href="#branchesjsCStackToolsBuildSlaveSupportbuildwebkitorgconfigmastercfg">branches/jsCStack/Tools/BuildSlaveSupport/build.webkit.org-config/master.cfg</a></li>
<li><a href="#branchesjsCStackToolsChangeLog">branches/jsCStack/Tools/ChangeLog</a></li>
<li><a href="#branchesjsCStackToolsDumpRenderTreeAccessibilityUIElementcpp">branches/jsCStack/Tools/DumpRenderTree/AccessibilityUIElement.cpp</a></li>
<li><a href="#branchesjsCStackToolsDumpRenderTreeAccessibilityUIElementh">branches/jsCStack/Tools/DumpRenderTree/AccessibilityUIElement.h</a></li>
<li><a href="#branchesjsCStackToolsDumpRenderTreeDumpRenderTreevcxprojDumpRenderTreeDumpRenderTreevcxproj">branches/jsCStack/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTree.vcxproj</a></li>
<li><a href="#branchesjsCStackToolsDumpRenderTreeDumpRenderTreevcxprojDumpRenderTreeDumpRenderTreeLaunchervcxproj">branches/jsCStack/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeLauncher.vcxproj</a></li>
<li><a href="#branchesjsCStackToolsDumpRenderTreeDumpRenderTreevcxprojImageDiffImageDiffvcxproj">branches/jsCStack/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiff.vcxproj</a></li>
<li><a href="#branchesjsCStackToolsDumpRenderTreeDumpRenderTreevcxprojImageDiffImageDiffLaunchervcxproj">branches/jsCStack/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffLauncher.vcxproj</a></li>
<li><a href="#branchesjsCStackToolsDumpRenderTreeDumpRenderTreevcxprojTestNetscapePluginTestNetscapePluginvcxproj">branches/jsCStack/Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePlugin.vcxproj</a></li>
<li><a href="#branchesjsCStackToolsDumpRenderTreeDumpRenderTreexcodeprojprojectpbxproj">branches/jsCStack/Tools/DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj</a></li>
<li><a href="#branchesjsCStackToolsDumpRenderTreeatkAccessibilityUIElementAtkcpp">branches/jsCStack/Tools/DumpRenderTree/atk/AccessibilityUIElementAtk.cpp</a></li>
<li><a href="#branchesjsCStackToolsDumpRenderTreeblackberryPixelDumpSupportBlackBerrycpp">branches/jsCStack/Tools/DumpRenderTree/blackberry/PixelDumpSupportBlackBerry.cpp</a></li>
<li><a href="#branchesjsCStackToolsDumpRenderTreecairoPixelDumpSupportCairocpp">branches/jsCStack/Tools/DumpRenderTree/cairo/PixelDumpSupportCairo.cpp</a></li>
<li><a href="#branchesjsCStackToolsDumpRenderTreegtkDumpRenderTreecpp">branches/jsCStack/Tools/DumpRenderTree/gtk/DumpRenderTree.cpp</a></li>
<li><a href="#branchesjsCStackToolsDumpRenderTreegtkTestRunnerGtkcpp">branches/jsCStack/Tools/DumpRenderTree/gtk/TestRunnerGtk.cpp</a></li>
<li><a href="#branchesjsCStackToolsDumpRenderTreemacDumpRenderTreemm">branches/jsCStack/Tools/DumpRenderTree/mac/DumpRenderTree.mm</a></li>
<li><a href="#branchesjsCStackToolsDumpRenderTreemacPerlSupportDumpRenderTreeSupportc">branches/jsCStack/Tools/DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupport.c</a></li>
<li><a href="#branchesjsCStackToolsDumpRenderTreemacPerlSupportDumpRenderTreeSupportPregeneratedpm">branches/jsCStack/Tools/DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupportPregenerated.pm</a></li>
<li><a href="#branchesjsCStackToolsDumpRenderTreemacPerlSupportDumpRenderTreeSupport_wrapPregeneratedc">branches/jsCStack/Tools/DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupport_wrapPregenerated.c</a></li>
<li><a href="#branchesjsCStackToolsDumpRenderTreemacPerlSupportMakefile">branches/jsCStack/Tools/DumpRenderTree/mac/PerlSupport/Makefile</a></li>
<li><a href="#branchesjsCStackToolsDumpRenderTreemacTestRunnerMacmm">branches/jsCStack/Tools/DumpRenderTree/mac/TestRunnerMac.mm</a></li>
<li><a href="#branchesjsCStackToolsMiniBrowserMiniBrowserxcodeprojprojectpbxproj">branches/jsCStack/Tools/MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj</a></li>
<li><a href="#branchesjsCStackToolsMiniBrowsergtkCMakeListstxt">branches/jsCStack/Tools/MiniBrowser/gtk/CMakeLists.txt</a></li>
<li><a href="#branchesjsCStackToolsMiniBrowsermacAppDelegateh">branches/jsCStack/Tools/MiniBrowser/mac/AppDelegate.h</a></li>
<li><a href="#branchesjsCStackToolsMiniBrowsermacAppDelegatem">branches/jsCStack/Tools/MiniBrowser/mac/AppDelegate.m</a></li>
<li><a href="#branchesjsCStackToolsMiniBrowsermacWK2BrowserWindowControllerh">branches/jsCStack/Tools/MiniBrowser/mac/WK2BrowserWindowController.h</a></li>
<li><a href="#branchesjsCStackToolsMiniBrowsermacWK2BrowserWindowControllerm">branches/jsCStack/Tools/MiniBrowser/mac/WK2BrowserWindowController.m</a></li>
<li><a href="#branchesjsCStackToolsScriptsbuildjsc">branches/jsCStack/Tools/Scripts/build-jsc</a></li>
<li><a href="#branchesjsCStackToolsScriptsoldrunwebkittests">branches/jsCStack/Tools/Scripts/old-run-webkit-tests</a></li>
<li><a href="#branchesjsCStackToolsScriptsrungtktests">branches/jsCStack/Tools/Scripts/run-gtk-tests</a></li>
<li><a href="#branchesjsCStackToolsScriptsrunjavascriptcoretests">branches/jsCStack/Tools/Scripts/run-javascriptcore-tests</a></li>
<li><a href="#branchesjsCStackToolsScriptswebkitdirspm">branches/jsCStack/Tools/Scripts/webkitdirs.pm</a></li>
<li><a href="#branchesjsCStackToolsScriptswebkitperlFeatureListpm">branches/jsCStack/Tools/Scripts/webkitperl/FeatureList.pm</a></li>
<li><a href="#branchesjsCStackToolsScriptswebkitpycommonconfigcontributorsjson">branches/jsCStack/Tools/Scripts/webkitpy/common/config/contributors.json</a></li>
<li><a href="#branchesjsCStackToolsScriptswebkitpycommonconfigwatchlist">branches/jsCStack/Tools/Scripts/webkitpy/common/config/watchlist</a></li>
<li><a href="#branchesjsCStackToolsScriptswebkitpycommonnetbugzillabugzillapy">branches/jsCStack/Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla.py</a></li>
<li><a href="#branchesjsCStackToolsScriptswebkitpycommonnetbugzillabugzilla_unittestpy">branches/jsCStack/Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla_unittest.py</a></li>
<li><a href="#branchesjsCStackToolsScriptswebkitpycommonprettypatchpy">branches/jsCStack/Tools/Scripts/webkitpy/common/prettypatch.py</a></li>
<li><a href="#branchesjsCStackToolsScriptswebkitpylayout_testscontrollerssingle_test_runnerpy">branches/jsCStack/Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py</a></li>
<li><a href="#branchesjsCStackToolsScriptswebkitpylayout_testscontrollerstest_result_writerpy">branches/jsCStack/Tools/Scripts/webkitpy/layout_tests/controllers/test_result_writer.py</a></li>
<li><a href="#branchesjsCStackToolsScriptswebkitpylayout_testsmodelstest_run_resultspy">branches/jsCStack/Tools/Scripts/webkitpy/layout_tests/models/test_run_results.py</a></li>
<li><a href="#branchesjsCStackToolsScriptswebkitpylayout_testsreftests__init__py">branches/jsCStack/Tools/Scripts/webkitpy/layout_tests/reftests/__init__.py</a></li>
<li><a href="#branchesjsCStackToolsScriptswebkitpylayout_testsreftestsextract_reference_linkpy">branches/jsCStack/Tools/Scripts/webkitpy/layout_tests/reftests/extract_reference_link.py</a></li>
<li><a href="#branchesjsCStackToolsScriptswebkitpylayout_testsreftestsextract_reference_link_unittestpy">branches/jsCStack/Tools/Scripts/webkitpy/layout_tests/reftests/extract_reference_link_unittest.py</a></li>
<li><a href="#branchesjsCStackToolsScriptswebkitpylayout_testsrun_webkit_testspy">branches/jsCStack/Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py</a></li>
<li><a href="#branchesjsCStackToolsScriptswebkitpyportbasepy">branches/jsCStack/Tools/Scripts/webkitpy/port/base.py</a></li>
<li><a href="#branchesjsCStackToolsScriptswebkitpyportbase_unittestpy">branches/jsCStack/Tools/Scripts/webkitpy/port/base_unittest.py</a></li>
<li><a href="#branchesjsCStackToolsScriptswebkitpyportdriverpy">branches/jsCStack/Tools/Scripts/webkitpy/port/driver.py</a></li>
<li><a href="#branchesjsCStackToolsScriptswebkitpyportgtkpy">branches/jsCStack/Tools/Scripts/webkitpy/port/gtk.py</a></li>
<li><a href="#branchesjsCStackToolsScriptswebkitpyportmacpy">branches/jsCStack/Tools/Scripts/webkitpy/port/mac.py</a></li>
<li><a href="#branchesjsCStackToolsScriptswebkitpystylecheckerscpppy">branches/jsCStack/Tools/Scripts/webkitpy/style/checkers/cpp.py</a></li>
<li><a href="#branchesjsCStackToolsScriptswebkitpystylecheckerscpp_unittestpy">branches/jsCStack/Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py</a></li>
<li><a href="#branchesjsCStackToolsTestWebKitAPICMakeListstxt">branches/jsCStack/Tools/TestWebKitAPI/CMakeLists.txt</a></li>
<li><a href="#branchesjsCStackToolsTestWebKitAPIGNUmakefileam">branches/jsCStack/Tools/TestWebKitAPI/GNUmakefile.am</a></li>
<li><a href="#branchesjsCStackToolsTestWebKitAPIPlatformGTKcmake">branches/jsCStack/Tools/TestWebKitAPI/PlatformGTK.cmake</a></li>
<li><a href="#branchesjsCStackToolsTestWebKitAPITestWebKitAPIvcxprojTestWebKitAPIvcxproj">branches/jsCStack/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPI.vcxproj</a></li>
<li><a href="#branchesjsCStackToolsTestWebKitAPITestsWTFHashMapcpp">branches/jsCStack/Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp</a></li>
<li><a href="#branchesjsCStackToolsTestWebKitAPITestsWTFMD5cpp">branches/jsCStack/Tools/TestWebKitAPI/Tests/WTF/MD5.cpp</a></li>
<li><a href="#branchesjsCStackToolsWebKitTestRunnerCMakeListstxt">branches/jsCStack/Tools/WebKitTestRunner/CMakeLists.txt</a></li>
<li><a href="#branchesjsCStackToolsWebKitTestRunnerInjectedBundleAccessibilityUIElementcpp">branches/jsCStack/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp</a></li>
<li><a href="#branchesjsCStackToolsWebKitTestRunnerInjectedBundleAccessibilityUIElementh">branches/jsCStack/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h</a></li>
<li><a href="#branchesjsCStackToolsWebKitTestRunnerInjectedBundleBindingsAccessibilityUIElementidl">branches/jsCStack/Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl</a></li>
<li><a href="#branchesjsCStackToolsWebKitTestRunnerInjectedBundleatkAccessibilityUIElementAtkcpp">branches/jsCStack/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp</a></li>
<li><a href="#branchesjsCStackToolsWebKitTestRunnerTestControllercpp">branches/jsCStack/Tools/WebKitTestRunner/TestController.cpp</a></li>
<li><a href="#branchesjsCStackToolsWebKitTestRunnerTestControllerh">branches/jsCStack/Tools/WebKitTestRunner/TestController.h</a></li>
<li><a href="#branchesjsCStackToolsWebKitTestRunnerTestInvocationcpp">branches/jsCStack/Tools/WebKitTestRunner/TestInvocation.cpp</a></li>
<li><a href="#branchesjsCStackToolsWebKitTestRunnercairoTestInvocationCairocpp">branches/jsCStack/Tools/WebKitTestRunner/cairo/TestInvocationCairo.cpp</a></li>
<li><a href="#branchesjsCStackToolsWebKitTestRunnercgTestInvocationCGcpp">branches/jsCStack/Tools/WebKitTestRunner/cg/TestInvocationCG.cpp</a></li>
<li><a href="#branchesjsCStackToolsWebKitTestRunnermacPlatformWebViewMacmm">branches/jsCStack/Tools/WebKitTestRunner/mac/PlatformWebViewMac.mm</a></li>
<li><a href="#branchesjsCStackToolsWinLauncherWinLaunchervcxprojWinLaunchervcxproj">branches/jsCStack/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncher.vcxproj</a></li>
<li><a href="#branchesjsCStackToolsWinLauncherWinLaunchervcxprojWinLauncherLibvcxproj">branches/jsCStack/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLib.vcxproj</a></li>
<li><a href="#branchesjsCStackToolsgdbwebkitpy">branches/jsCStack/Tools/gdb/webkit.py</a></li>
<li><a href="#branchesjsCStackToolsgtkcommonpy">branches/jsCStack/Tools/gtk/common.py</a></li>
<li><a href="#branchesjsCStackToolsgtkgenerategtkdoc">branches/jsCStack/Tools/gtk/generate-gtkdoc</a></li>
<li><a href="#branchesjsCStackToolsgtkinstalldependencies">branches/jsCStack/Tools/gtk/install-dependencies</a></li>
<li><a href="#branchesjsCStackToolsgtkjhbuildmodules">branches/jsCStack/Tools/gtk/jhbuild.modules</a></li>
<li><a href="#branchesjsCStackToolswinrecordmemoryrecordmemoryvcxproj">branches/jsCStack/Tools/win/record-memory/record-memory.vcxproj</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#branchesjsCStackLayoutTestsaccessibilityalttagonimagewithnonimageroleexpectedtxt">branches/jsCStack/LayoutTests/accessibility/alt-tag-on-image-with-nonimage-role-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsaccessibilityalttagonimagewithnonimagerolehtml">branches/jsCStack/LayoutTests/accessibility/alt-tag-on-image-with-nonimage-role.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsaccessibilityariahiddennegatesnovisibilityexpectedtxt">branches/jsCStack/LayoutTests/accessibility/aria-hidden-negates-no-visibility-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsaccessibilitychildrenchangedsendsnotificationexpectedtxt">branches/jsCStack/LayoutTests/accessibility/children-changed-sends-notification-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsaccessibilitychildrenchangedsendsnotificationhtml">branches/jsCStack/LayoutTests/accessibility/children-changed-sends-notification.html</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtleaespostMessageexpectedtxt">branches/jsCStack/LayoutTests/crypto/subtle/aes-postMessage-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtleaespostMessagehtml">branches/jsCStack/LayoutTests/crypto/subtle/aes-postMessage.html</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtlehmacpostMessageexpectedtxt">branches/jsCStack/LayoutTests/crypto/subtle/hmac-postMessage-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtlehmacpostMessagehtml">branches/jsCStack/LayoutTests/crypto/subtle/hmac-postMessage.html</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtlepostMessageworkerexpectedtxt">branches/jsCStack/LayoutTests/crypto/subtle/postMessage-worker-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtlepostMessageworkerhtml">branches/jsCStack/LayoutTests/crypto/subtle/postMessage-worker.html</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtleresourcespostMessageworkerjs">branches/jsCStack/LayoutTests/crypto/subtle/resources/postMessage-worker.js</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtlersaoaepgeneratenonextractablekeyexpectedtxt">branches/jsCStack/LayoutTests/crypto/subtle/rsa-oaep-generate-non-extractable-key-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtlersaoaepgeneratenonextractablekeyhtml">branches/jsCStack/LayoutTests/crypto/subtle/rsa-oaep-generate-non-extractable-key.html</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtlersapostMessageexpectedtxt">branches/jsCStack/LayoutTests/crypto/subtle/rsa-postMessage-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtlersapostMessagehtml">branches/jsCStack/LayoutTests/crypto/subtle/rsa-postMessage.html</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtlersaespkcs1v1_5decryptexpectedtxt">branches/jsCStack/LayoutTests/crypto/subtle/rsaes-pkcs1-v1_5-decrypt-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtlersaespkcs1v1_5decrypthtml">branches/jsCStack/LayoutTests/crypto/subtle/rsaes-pkcs1-v1_5-decrypt.html</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtlersaespkcs1v1_5wrapunwrapaesexpectedtxt">branches/jsCStack/LayoutTests/crypto/subtle/rsaes-pkcs1-v1_5-wrap-unwrap-aes-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtlersaespkcs1v1_5wrapunwrapaeshtml">branches/jsCStack/LayoutTests/crypto/subtle/rsaes-pkcs1-v1_5-wrap-unwrap-aes.html</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtleunwrapKeycheckusageexpectedtxt">branches/jsCStack/LayoutTests/crypto/subtle/unwrapKey-check-usage-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtleunwrapKeycheckusagehtml">branches/jsCStack/LayoutTests/crypto/subtle/unwrapKey-check-usage.html</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtlewrapKeycheckusageexpectedtxt">branches/jsCStack/LayoutTests/crypto/subtle/wrapKey-check-usage-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestscryptosubtlewrapKeycheckusagehtml">branches/jsCStack/LayoutTests/crypto/subtle/wrapKey-check-usage.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsfastcssnthlastchildrecalcexpectedhtml">branches/jsCStack/LayoutTests/fast/css/nth-last-child-recalc-expected.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsfastcssnthlastchildrecalchtml">branches/jsCStack/LayoutTests/fast/css/nth-last-child-recalc.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsfastcsspendingimagecrashexpectedtxt">branches/jsCStack/LayoutTests/fast/css/pending-image-crash-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsfastcsspendingimagecrashxhtml">branches/jsCStack/LayoutTests/fast/css/pending-image-crash.xhtml</a></li>
<li><a href="#branchesjsCStackLayoutTestsfastcssstylesharinggrandparentinvalidateexpectedtxt">branches/jsCStack/LayoutTests/fast/css/style-sharing-grand-parent-invalidate-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsfastcssstylesharinggrandparentinvalidatehtml">branches/jsCStack/LayoutTests/fast/css/style-sharing-grand-parent-invalidate.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsfastdomDocumentclonenodeexpectedtxt">branches/jsCStack/LayoutTests/fast/dom/Document/clone-node-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsfastdomDocumentclonenodehtml">branches/jsCStack/LayoutTests/fast/dom/Document/clone-node.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsfastdomHTMLDocumentclonenodequirksmodeexpectedtxt">branches/jsCStack/LayoutTests/fast/dom/HTMLDocument/clone-node-quirks-mode-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsfastdomHTMLDocumentclonenodequirksmodehtml">branches/jsCStack/LayoutTests/fast/dom/HTMLDocument/clone-node-quirks-mode.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsfastdomHTMLTableElementempytablecellwithbackgroundcolorexpectedtxt">branches/jsCStack/LayoutTests/fast/dom/HTMLTableElement/empy-table-cell-with-background-color-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsfastdomHTMLTableElementempytablecellwithbackgroundcolorhtml">branches/jsCStack/LayoutTests/fast/dom/HTMLTableElement/empy-table-cell-with-background-color.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsfastdomWindowpostMessagecloneporterrorexpectedtxt">branches/jsCStack/LayoutTests/fast/dom/Window/postMessage-clone-port-error-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsfastdomWindowpostMessagecloneporterrorhtml">branches/jsCStack/LayoutTests/fast/dom/Window/postMessage-clone-port-error.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsinspectorprotocolmodelhighlightshapeoutsidemarginexpectedtxt">branches/jsCStack/LayoutTests/inspector-protocol/model/highlight-shape-outside-margin-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsinspectorprotocolmodelhighlightshapeoutsidemarginhtml">branches/jsCStack/LayoutTests/inspector-protocol/model/highlight-shape-outside-margin.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsinspectorprotocolpagedenyXFrameOptionexpectedtxt">branches/jsCStack/LayoutTests/inspector-protocol/page/deny-X-FrameOption-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsinspectorprotocolpagedenyXFrameOptionhtml">branches/jsCStack/LayoutTests/inspector-protocol/page/deny-X-FrameOption.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsmediamediasourcemediasourceendofstreamexpectedtxt">branches/jsCStack/LayoutTests/media/media-source/media-source-end-of-stream-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsmediamediasourcemediasourceendofstreamhtml">branches/jsCStack/LayoutTests/media/media-source/media-source-end-of-stream.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsmediamediasourcemediasourcevideoplaybackqualityexpectedtxt">branches/jsCStack/LayoutTests/media/media-source/media-source-video-playback-quality-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsmediamediasourcemediasourcevideoplaybackqualityhtml">branches/jsCStack/LayoutTests/media/media-source/media-source-video-playback-quality.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitytextatoffsetembeddedobjectsexpectedtxt">branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-embedded-objects-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitytextatoffsetembeddedobjectshtml">branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-embedded-objects.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitytextatoffsetnewlinesexpectedtxt">branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-newlines-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitytextatoffsetnewlineshtml">branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-newlines.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitytextatoffsetpreformattedexpectedtxt">branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-preformatted-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitytextatoffsetpreformattedhtml">branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-preformatted.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitytextatoffsetsimpleexpectedtxt">branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-simple-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitytextatoffsetsimplehtml">branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-simple.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitytextatoffsetspecialcharsexpectedtxt">branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-special-chars-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitytextatoffsetspecialcharshtml">branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-special-chars.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitytextatoffsettextareaexpectedtxt">branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-textarea-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitytextatoffsettextareahtml">branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-textarea.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitytextatoffsettextinputexpectedtxt">branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-textinput-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitytextatoffsettextinputhtml">branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-textinput.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitytextatoffsetwrappedlinesexpectedtxt">branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-wrapped-lines-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitytextatoffsetwrappedlineshtml">branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-wrapped-lines.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangecomboboxexpectedtxt">branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-combo-box-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangecomboboxhtml">branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-combo-box.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangeembeddedobjectsexpectedtxt">branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-embedded-objects-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangeembeddedobjectshtml">branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-embedded-objects.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangeentryandpasswordexpectedtxt">branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-entry-and-password-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangeentryandpasswordhtml">branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-entry-and-password.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangeextraneouswhitespaceexpectedtxt">branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-extraneous-whitespace-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangeextraneouswhitespacehtml">branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-extraneous-whitespace.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangeformattedexpectedtxt">branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-formatted-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangeformattedhtml">branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-formatted.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangeheadingexpectedtxt">branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-heading-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangeheadinghtml">branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-heading.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangelistitemsexpectedtxt">branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-list-items-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangelistitemshtml">branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-list-items.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangesimpleexpectedtxt">branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-simple-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangesimplehtml">branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-simple.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangetablecellsexpectedtxt">branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-table-cells-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangetablecellshtml">branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-table-cells.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangewithlinkexpectedtxt">branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-with-link-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangewithlinkhtml">branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-with-link.html</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitytextfortableexpectedtxt">branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-table-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestsplatformgtkaccessibilitytextfortablehtml">branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-table.html</a></li>
<li><a href="#branchesjsCStackLayoutTestssvgcustomclonenodeexpectedtxt">branches/jsCStack/LayoutTests/svg/custom/clone-node-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestssvgcustomclonenodehtml">branches/jsCStack/LayoutTests/svg/custom/clone-node.html</a></li>
<li><a href="#branchesjsCStackLayoutTestssvgdomSVGScriptElementscripttypeattributeexpectedtxt">branches/jsCStack/LayoutTests/svg/dom/SVGScriptElement/script-type-attribute-expected.txt</a></li>
<li><a href="#branchesjsCStackLayoutTestssvgdomSVGScriptElementscripttypeattributesvg">branches/jsCStack/LayoutTests/svg/dom/SVGScriptElement/script-type-attribute.svg</a></li>
<li>branches/jsCStack/Source/JavaScriptCore/bindings/</li>
<li><a href="#branchesjsCStackSourceJavaScriptCorebindingsScriptFunctionCallcpp">branches/jsCStack/Source/JavaScriptCore/bindings/ScriptFunctionCall.cpp</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCorebindingsScriptFunctionCallh">branches/jsCStack/Source/JavaScriptCore/bindings/ScriptFunctionCall.h</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCorebindingsScriptObjectcpp">branches/jsCStack/Source/JavaScriptCore/bindings/ScriptObject.cpp</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCorebindingsScriptObjecth">branches/jsCStack/Source/JavaScriptCore/bindings/ScriptObject.h</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCorebindingsScriptValuecpp">branches/jsCStack/Source/JavaScriptCore/bindings/ScriptValue.cpp</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCorebindingsScriptValueh">branches/jsCStack/Source/JavaScriptCore/bindings/ScriptValue.h</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreheapRecursiveAllocationScopeh">branches/jsCStack/Source/JavaScriptCore/heap/RecursiveAllocationScope.h</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreinspectorInspectorAgentBaseh">branches/jsCStack/Source/JavaScriptCore/inspector/InspectorAgentBase.h</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreinspectorInspectorAgentRegistrycpp">branches/jsCStack/Source/JavaScriptCore/inspector/InspectorAgentRegistry.cpp</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreinspectorInspectorAgentRegistryh">branches/jsCStack/Source/JavaScriptCore/inspector/InspectorAgentRegistry.h</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreinspectorInspectorBackendDispatchercpp">branches/jsCStack/Source/JavaScriptCore/inspector/InspectorBackendDispatcher.cpp</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreinspectorInspectorBackendDispatcherh">branches/jsCStack/Source/JavaScriptCore/inspector/InspectorBackendDispatcher.h</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreinspectorInspectorTypeBuilderh">branches/jsCStack/Source/JavaScriptCore/inspector/InspectorTypeBuilder.h</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreinspectorInspectorValuescpp">branches/jsCStack/Source/JavaScriptCore/inspector/InspectorValues.cpp</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreinspectorInspectorValuesh">branches/jsCStack/Source/JavaScriptCore/inspector/InspectorValues.h</a></li>
<li>branches/jsCStack/Source/JavaScriptCore/inspector/scripts/</li>
<li>branches/jsCStack/Source/WebCore/ForwardingHeaders/bindings/</li>
<li><a href="#branchesjsCStackSourceWebCoreForwardingHeadersbindingsScriptFunctionCallh">branches/jsCStack/Source/WebCore/ForwardingHeaders/bindings/ScriptFunctionCall.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreForwardingHeadersbindingsScriptObjecth">branches/jsCStack/Source/WebCore/ForwardingHeaders/bindings/ScriptObject.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreForwardingHeadersbindingsScriptValueh">branches/jsCStack/Source/WebCore/ForwardingHeaders/bindings/ScriptValue.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreForwardingHeadersinspectorInspectorAgentBaseh">branches/jsCStack/Source/WebCore/ForwardingHeaders/inspector/InspectorAgentBase.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreForwardingHeadersinspectorInspectorAgentRegistryh">branches/jsCStack/Source/WebCore/ForwardingHeaders/inspector/InspectorAgentRegistry.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreForwardingHeadersinspectorInspectorBackendDispatcherh">branches/jsCStack/Source/WebCore/ForwardingHeaders/inspector/InspectorBackendDispatcher.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreForwardingHeadersinspectorInspectorTypeBuilderh">branches/jsCStack/Source/WebCore/ForwardingHeaders/inspector/InspectorTypeBuilder.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreForwardingHeadersinspectorInspectorValuesh">branches/jsCStack/Source/WebCore/ForwardingHeaders/inspector/InspectorValues.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesindexeddbIDBDatabaseMetadatacpp">branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBDatabaseMetadata.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesmediasourceVideoPlaybackQualitycpp">branches/jsCStack/Source/WebCore/Modules/mediasource/VideoPlaybackQuality.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesmediasourceVideoPlaybackQualityh">branches/jsCStack/Source/WebCore/Modules/mediasource/VideoPlaybackQuality.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesmediasourceVideoPlaybackQualityidl">branches/jsCStack/Source/WebCore/Modules/mediasource/VideoPlaybackQuality.idl</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesmediastreamRTCPeerConnectionErrorCallbackh">branches/jsCStack/Source/WebCore/Modules/mediastream/RTCPeerConnectionErrorCallback.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreModulesmediastreamRTCPeerConnectionErrorCallbackidl">branches/jsCStack/Source/WebCore/Modules/mediastream/RTCPeerConnectionErrorCallback.idl</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsjsScriptGlobalObjectcpp">branches/jsCStack/Source/WebCore/bindings/js/ScriptGlobalObject.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorebindingsjsScriptGlobalObjecth">branches/jsCStack/Source/WebCore/bindings/js/ScriptGlobalObject.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorecryptoalgorithmsCryptoAlgorithmRSAES_PKCS1_v1_5cpp">branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorecryptoalgorithmsCryptoAlgorithmRSAES_PKCS1_v1_5h">branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorecryptomacCryptoAlgorithmRSAES_PKCS1_v1_5Maccpp">branches/jsCStack/Source/WebCore/crypto/mac/CryptoAlgorithmRSAES_PKCS1_v1_5Mac.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreinspectorInspectorWebAgentBaseh">branches/jsCStack/Source/WebCore/inspector/InspectorWebAgentBase.h</a></li>
<li>branches/jsCStack/Source/WebCore/platform/glib/</li>
<li><a href="#branchesjsCStackSourceWebCoreplatformglibBatteryProviderUPowercpp">branches/jsCStack/Source/WebCore/platform/glib/BatteryProviderUPower.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformglibBatteryProviderUPowerh">branches/jsCStack/Source/WebCore/platform/glib/BatteryProviderUPower.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformglibBatteryProviderUPowerClienth">branches/jsCStack/Source/WebCore/platform/glib/BatteryProviderUPowerClient.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformgraphicsavfoundationobjcAudioTrackPrivateMediaSourceAVFObjCcpp">branches/jsCStack/Source/WebCore/platform/graphics/avfoundation/objc/AudioTrackPrivateMediaSourceAVFObjC.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformgraphicsavfoundationobjcAudioTrackPrivateMediaSourceAVFObjCh">branches/jsCStack/Source/WebCore/platform/graphics/avfoundation/objc/AudioTrackPrivateMediaSourceAVFObjC.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformgraphicsavfoundationobjcMediaPlayerPrivateMediaSourceAVFObjCh">branches/jsCStack/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformgraphicsavfoundationobjcMediaPlayerPrivateMediaSourceAVFObjCmm">branches/jsCStack/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformgraphicsavfoundationobjcMediaSourcePrivateAVFObjCh">branches/jsCStack/Source/WebCore/platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformgraphicsavfoundationobjcMediaSourcePrivateAVFObjCmm">branches/jsCStack/Source/WebCore/platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.mm</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformgraphicsavfoundationobjcSourceBufferPrivateAVFObjCh">branches/jsCStack/Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformgraphicsavfoundationobjcSourceBufferPrivateAVFObjCmm">branches/jsCStack/Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformgraphicsavfoundationobjcVideoTrackPrivateMediaSourceAVFObjCh">branches/jsCStack/Source/WebCore/platform/graphics/avfoundation/objc/VideoTrackPrivateMediaSourceAVFObjC.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformnetworkcfResourceHandleCFURLConnectionDelegatecpp">branches/jsCStack/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegate.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformnetworkcfResourceHandleCFURLConnectionDelegateh">branches/jsCStack/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegate.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformnetworkcfResourceHandleCFURLConnectionDelegateWithOperationQueuecpp">branches/jsCStack/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformnetworkcfResourceHandleCFURLConnectionDelegateWithOperationQueueh">branches/jsCStack/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformnetworkcfSynchronousResourceHandleCFURLConnectionDelegatecpp">branches/jsCStack/Source/WebCore/platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformnetworkcfSynchronousResourceHandleCFURLConnectionDelegateh">branches/jsCStack/Source/WebCore/platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformnetworkmacCertificateInfoh">branches/jsCStack/Source/WebCore/platform/network/mac/CertificateInfo.h</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformnetworkmacCertificateInfoMacmm">branches/jsCStack/Source/WebCore/platform/network/mac/CertificateInfoMac.mm</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformnetworksoupCertificateInfocpp">branches/jsCStack/Source/WebCore/platform/network/soup/CertificateInfo.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCoreplatformnetworksoupCertificateInfoh">branches/jsCStack/Source/WebCore/platform/network/soup/CertificateInfo.h</a></li>
<li>branches/jsCStack/Source/WebCore/platform/soup/</li>
<li><a href="#branchesjsCStackSourceWebCoreplatformsoupSharedBufferSoupcpp">branches/jsCStack/Source/WebCore/platform/soup/SharedBufferSoup.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderThemeIOSh">branches/jsCStack/Source/WebCore/rendering/RenderThemeIOS.h</a></li>
<li><a href="#branchesjsCStackSourceWebCorerenderingRenderThemeIOSmm">branches/jsCStack/Source/WebCore/rendering/RenderThemeIOS.mm</a></li>
<li><a href="#branchesjsCStackSourceWebInspectorUIUserInterfaceCodeMirrorColorEditingControllerjs">branches/jsCStack/Source/WebInspectorUI/UserInterface/CodeMirrorColorEditingController.js</a></li>
<li><a href="#branchesjsCStackSourceWebInspectorUIUserInterfaceTextMarkerjs">branches/jsCStack/Source/WebInspectorUI/UserInterface/TextMarker.js</a></li>
<li><a href="#branchesjsCStackSourceWebKitgtkWebCoreSupportBatteryClientGtkcpp">branches/jsCStack/Source/WebKit/gtk/WebCoreSupport/BatteryClientGtk.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKitgtkWebCoreSupportBatteryClientGtkh">branches/jsCStack/Source/WebKit/gtk/WebCoreSupport/BatteryClientGtk.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2DatabaseProcessIndexedDBUniqueIDBDatabaseBackingStoreh">branches/jsCStack/Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h</a></li>
<li>branches/jsCStack/Source/WebKit2/DatabaseProcess/IndexedDB/sqlite/</li>
<li><a href="#branchesjsCStackSourceWebKit2DatabaseProcessIndexedDBsqliteUniqueIDBDatabaseBackingStoreSQLitecpp">branches/jsCStack/Source/WebKit2/DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2DatabaseProcessIndexedDBsqliteUniqueIDBDatabaseBackingStoreSQLiteh">branches/jsCStack/Source/WebKit2/DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2PlatformIPCMessageSendercpp">branches/jsCStack/Source/WebKit2/Platform/IPC/MessageSender.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2PlatformIPCMessageSenderh">branches/jsCStack/Source/WebKit2/Platform/IPC/MessageSender.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedAPIFrameHandlecpp">branches/jsCStack/Source/WebKit2/Shared/APIFrameHandle.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedAPIFrameHandleh">branches/jsCStack/Source/WebKit2/Shared/APIFrameHandle.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedAPIGeometrycpp">branches/jsCStack/Source/WebKit2/Shared/APIGeometry.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedAPIGeometryh">branches/jsCStack/Source/WebKit2/Shared/APIGeometry.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedAPINumberh">branches/jsCStack/Source/WebKit2/Shared/APINumber.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedAPIPageHandlecpp">branches/jsCStack/Source/WebKit2/Shared/APIPageHandle.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedAPIPageHandleh">branches/jsCStack/Source/WebKit2/Shared/APIPageHandle.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedAsyncTaskh">branches/jsCStack/Source/WebKit2/Shared/AsyncTask.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedCocoaWKNSDatah">branches/jsCStack/Source/WebKit2/Shared/Cocoa/WKNSData.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedCocoaWKNSDatamm">branches/jsCStack/Source/WebKit2/Shared/Cocoa/WKNSData.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedUserDatacpp">branches/jsCStack/Source/WebKit2/Shared/UserData.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedUserDatah">branches/jsCStack/Source/WebKit2/Shared/UserData.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedWebCrossThreadCopiercpp">branches/jsCStack/Source/WebKit2/Shared/WebCrossThreadCopier.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2SharedWebCrossThreadCopierh">branches/jsCStack/Source/WebKit2/Shared/WebCrossThreadCopier.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPICWKPagePolicyClientInternalh">branches/jsCStack/Source/WebKit2/UIProcess/API/C/WKPagePolicyClientInternal.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPIgtkWebKitBatteryProvidercpp">branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitBatteryProvider.cpp</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessAPIgtkWebKitBatteryProviderh">branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitBatteryProvider.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessmacViewGestureControllerh">branches/jsCStack/Source/WebKit2/UIProcess/mac/ViewGestureController.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2UIProcessmacViewGestureControllermessagesin">branches/jsCStack/Source/WebKit2/UIProcess/mac/ViewGestureController.messages.in</a></li>
<li>branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/</li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPICocoaWKWebProcessPlugInFrameh">branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPICocoaWKWebProcessPlugInFramemm">branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPICocoaWKWebProcessPlugInFrameInternalh">branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrameInternal.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPICocoaWKWebProcessPlugInHitTestResulth">branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResult.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPICocoaWKWebProcessPlugInHitTestResultmm">branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResult.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPICocoaWKWebProcessPlugInHitTestResultInternalh">branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResultInternal.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPICocoaWKWebProcessPlugInNodeHandleh">branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPICocoaWKWebProcessPlugInNodeHandlemm">branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPICocoaWKWebProcessPlugInNodeHandleInternalh">branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandleInternal.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPICocoaWKWebProcessPlugInScriptWorldh">branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.h</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPICocoaWKWebProcessPlugInScriptWorldmm">branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.mm</a></li>
<li><a href="#branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPICocoaWKWebProcessPlugInScriptWorldInternalh">branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorldInternal.h</a></li>
<li><a href="#branchesjsCStackToolsScriptscomparewebkitconfigurations">branches/jsCStack/Tools/Scripts/compare-webkit-configurations</a></li>
<li><a href="#branchesjsCStackToolsScriptswebkitpyportwestondriver_unittestpy">branches/jsCStack/Tools/Scripts/webkitpy/port/westondriver_unittest.py</a></li>
<li><a href="#branchesjsCStackToolsgtkycm_extra_confpy">branches/jsCStack/Tools/gtk/ycm_extra_conf.py</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="branchesjsCStackgitignore"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/.gitignore (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/.gitignore        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/.gitignore        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -117,3 +117,6 @@
</span><span class="cx"> .project
</span><span class="cx"> .cproject
</span><span class="cx"> .settings
</span><ins>+
+# Ignore YouCompleteMe symlinks
+.ycm_extra_conf.py
</ins></span></pre></div>
<a id="branchesjsCStackChangeLog"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/ChangeLog (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/ChangeLog        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/ChangeLog        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,3 +1,15 @@
</span><ins>+2014-01-23  Mark Hahnenberg  &lt;mhahnenberg@apple.com&gt;
+
+        Merge branch up to ToT r160556.
+
+        * .gitignore:
+        * Source/autotools/SetupAutomake.m4:
+        * Source/autotools/SetupCompilerFlags.m4:
+        * Source/autotools/SetupLibtool.m4:
+        * Source/autotools/SetupWebKitFeatures.m4:
+        * Source/cmake/OptionsGTK.cmake:
+        * Source/cmake/WebKitHelpers.cmake:
+
</ins><span class="cx"> 2013-12-06  Alberto Garcia  &lt;berto@igalia.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [GTK] Enable web audio by default
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/ChangeLog (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/ChangeLog        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/ChangeLog        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,3 +1,216 @@
</span><ins>+2014-01-23  Mark Hahnenberg  &lt;mhahnenberg@apple.com&gt;
+
+        Merge branch up to ToT r160556.
+
+        * TestExpectations:
+        * accessibility/adjacent-continuations-cause-assertion-failure-expected.txt:
+        * accessibility/alt-tag-on-image-with-nonimage-role-expected.txt: Added.
+        * accessibility/alt-tag-on-image-with-nonimage-role.html: Added.
+        * accessibility/aria-hidden-negates-no-visibility-expected.txt: Added.
+        * accessibility/aria-mappings-expected.txt:
+        * accessibility/children-changed-sends-notification-expected.txt: Added.
+        * accessibility/children-changed-sends-notification.html: Added.
+        * accessibility/div-within-anchors-causes-crash-expected.txt:
+        * accessibility/press-targets-center-point.html:
+        * animations/resources/animation-test-helpers.js:
+        (parseBasicShape):
+        (basicShapeParametersMatch):
+        * crypto/subtle/aes-cbc-192-encrypt-decrypt-expected.txt:
+        * crypto/subtle/aes-cbc-192-encrypt-decrypt.html:
+        * crypto/subtle/aes-cbc-256-encrypt-decrypt-expected.txt:
+        * crypto/subtle/aes-cbc-256-encrypt-decrypt.html:
+        * crypto/subtle/aes-cbc-encrypt-decrypt-expected.txt:
+        * crypto/subtle/aes-cbc-encrypt-decrypt-with-padding-expected.txt:
+        * crypto/subtle/aes-cbc-encrypt-decrypt-with-padding.html:
+        * crypto/subtle/aes-cbc-encrypt-decrypt.html:
+        * crypto/subtle/aes-cbc-generate-key-expected.txt:
+        * crypto/subtle/aes-cbc-generate-key.html:
+        * crypto/subtle/aes-cbc-import-jwk-expected.txt:
+        * crypto/subtle/aes-cbc-import-jwk.html:
+        * crypto/subtle/aes-cbc-invalid-length-expected.txt:
+        * crypto/subtle/aes-cbc-invalid-length.html:
+        * crypto/subtle/aes-cbc-unwrap-failure-expected.txt:
+        * crypto/subtle/aes-cbc-unwrap-failure.html:
+        * crypto/subtle/aes-cbc-unwrap-rsa-expected.txt:
+        * crypto/subtle/aes-cbc-unwrap-rsa.html:
+        * crypto/subtle/aes-cbc-wrap-rsa-expected.txt:
+        * crypto/subtle/aes-cbc-wrap-rsa-non-extractable-expected.txt:
+        * crypto/subtle/aes-cbc-wrap-rsa-non-extractable.html:
+        * crypto/subtle/aes-cbc-wrap-rsa.html:
+        * crypto/subtle/aes-kw-key-manipulation-expected.txt:
+        * crypto/subtle/aes-kw-key-manipulation.html:
+        * crypto/subtle/aes-kw-wrap-unwrap-aes-expected.txt:
+        * crypto/subtle/aes-kw-wrap-unwrap-aes.html:
+        * crypto/subtle/aes-postMessage-expected.txt: Added.
+        * crypto/subtle/aes-postMessage.html: Added.
+        * crypto/subtle/hmac-generate-key-expected.txt:
+        * crypto/subtle/hmac-generate-key.html:
+        * crypto/subtle/hmac-import-jwk-expected.txt:
+        * crypto/subtle/hmac-import-jwk.html:
+        * crypto/subtle/hmac-postMessage-expected.txt: Added.
+        * crypto/subtle/hmac-postMessage.html: Added.
+        * crypto/subtle/hmac-sign-verify-empty-key-expected.txt:
+        * crypto/subtle/hmac-sign-verify-empty-key.html:
+        * crypto/subtle/hmac-sign-verify-expected.txt:
+        * crypto/subtle/hmac-sign-verify.html:
+        * crypto/subtle/jwk-import-use-values-expected.txt:
+        * crypto/subtle/jwk-import-use-values.html:
+        * crypto/subtle/postMessage-worker-expected.txt: Added.
+        * crypto/subtle/postMessage-worker.html: Added.
+        * crypto/subtle/resources/postMessage-worker.js: Added.
+        (onmessage):
+        * crypto/subtle/rsa-oaep-generate-non-extractable-key-expected.txt: Added.
+        * crypto/subtle/rsa-oaep-generate-non-extractable-key.html: Added.
+        * crypto/subtle/rsa-oaep-key-manipulation-expected.txt:
+        * crypto/subtle/rsa-oaep-key-manipulation.html:
+        * crypto/subtle/rsa-oaep-wrap-unwrap-aes-expected.txt:
+        * crypto/subtle/rsa-oaep-wrap-unwrap-aes.html:
+        * crypto/subtle/rsa-postMessage-expected.txt: Added.
+        * crypto/subtle/rsa-postMessage.html: Added.
+        * crypto/subtle/rsaes-pkcs1-v1_5-decrypt-expected.txt: Added.
+        * crypto/subtle/rsaes-pkcs1-v1_5-decrypt.html: Added.
+        * crypto/subtle/rsaes-pkcs1-v1_5-wrap-unwrap-aes-expected.txt: Added.
+        * crypto/subtle/rsaes-pkcs1-v1_5-wrap-unwrap-aes.html: Added.
+        * crypto/subtle/rsassa-pkcs1-v1_5-generate-key-expected.txt:
+        * crypto/subtle/rsassa-pkcs1-v1_5-generate-key.html:
+        * crypto/subtle/rsassa-pkcs1-v1_5-import-jwk-expected.txt:
+        * crypto/subtle/rsassa-pkcs1-v1_5-import-jwk.html:
+        * crypto/subtle/unwrapKey-check-usage-expected.txt: Added.
+        * crypto/subtle/unwrapKey-check-usage.html: Added.
+        * crypto/subtle/wrapKey-check-usage-expected.txt: Added.
+        * crypto/subtle/wrapKey-check-usage.html: Added.
+        * dom/xhtml/level3/core/documentgetinputencoding04-expected.txt:
+        * dom/xhtml/level3/core/documentgetxmlencoding05-expected.txt:
+        * dom/xhtml/level3/core/nodeisequalnode01-expected.txt:
+        * dom/xhtml/level3/core/nodeisequalnode21-expected.txt:
+        * dom/xhtml/level3/core/nodeisequalnode25-expected.txt:
+        * dom/xhtml/level3/core/nodeisequalnode26-expected.txt:
+        * fast/css-grid-layout/grid-item-column-row-get-set-expected.txt:
+        * fast/css-grid-layout/grid-item-column-row-get-set.html:
+        * fast/css-grid-layout/grid-item-end-after-get-set-expected.txt:
+        * fast/css-grid-layout/grid-item-end-after-get-set.html:
+        * fast/css-grid-layout/grid-item-start-before-get-set-expected.txt:
+        * fast/css-grid-layout/grid-item-start-before-get-set.html:
+        * fast/css-grid-layout/resources/grid-item-column-row-parsing-utils.js:
+        * fast/css/getComputedStyle/getComputedStyle-border-radius-shorthand-expected.txt:
+        * fast/css/getComputedStyle/getComputedStyle-border-radius-shorthand.html:
+        * fast/css/nth-last-child-recalc-expected.html: Added.
+        * fast/css/nth-last-child-recalc.html: Added.
+        * fast/css/pending-image-crash-expected.txt: Added.
+        * fast/css/pending-image-crash.xhtml: Added.
+        * fast/css/style-sharing-grand-parent-invalidate-expected.txt: Added.
+        * fast/css/style-sharing-grand-parent-invalidate.html: Added.
+        * fast/dom/Document/clone-node-expected.txt: Added.
+        * fast/dom/Document/clone-node.html: Added.
+        * fast/dom/HTMLDocument/clone-node-quirks-mode-expected.txt: Added.
+        * fast/dom/HTMLDocument/clone-node-quirks-mode.html: Added.
+        * fast/dom/HTMLTableElement/empy-table-cell-with-background-color-expected.txt: Added.
+        * fast/dom/HTMLTableElement/empy-table-cell-with-background-color.html: Added.
+        * fast/dom/Window/postMessage-clone-port-error-expected.txt: Added.
+        * fast/dom/Window/postMessage-clone-port-error.html: Added.
+        * fast/events/message-port-clone-expected.txt:
+        * fast/events/message-port-multi-expected.txt:
+        * fast/events/stopPropagation-submit-expected.txt:
+        * fast/forms/input-image-submit.html:
+        * fast/mediastream/RTCPeerConnection-createAnswer-expected.txt:
+        * fast/mediastream/RTCPeerConnection-createAnswer.html:
+        * fast/mediastream/RTCPeerConnection-createOffer-expected.txt:
+        * fast/mediastream/RTCPeerConnection-createOffer.html:
+        * fast/shapes/shape-outside-floats/shape-outside-animation-expected.txt:
+        * fast/shapes/shape-outside-floats/shape-outside-animation.html:
+        * fast/shapes/shape-outside-floats/shape-outside-floats-different-writing-modes.html:
+        * fast/table/auto-100-percent-width-expected.txt:
+        * inspector-protocol/model/highlight-shape-outside-margin-expected.txt: Added.
+        * inspector-protocol/model/highlight-shape-outside-margin.html: Added.
+        * inspector-protocol/model/highlight-shape-outside.html:
+        * inspector-protocol/page/deny-X-FrameOption-expected.txt: Added.
+        * inspector-protocol/page/deny-X-FrameOption.html: Added.
+        * inspector-protocol/resources/shape-info-helper.js:
+        (window.ShapeInfoHelper.):
+        (window.ShapeInfoHelper):
+        * media/media-source/media-source-canplaythrough.html:
+        * media/media-source/media-source-end-of-stream-expected.txt: Added.
+        * media/media-source/media-source-end-of-stream.html: Added.
+        * media/media-source/media-source-play.html:
+        * media/media-source/media-source-video-playback-quality-expected.txt: Added.
+        * media/media-source/media-source-video-playback-quality.html: Added.
+        * media/media-source/mock-media-source.js:
+        (var):
+        * platform/efl-wk1/accessibility/image-map2-expected.txt:
+        * platform/efl-wk1/accessibility/lists-expected.txt:
+        * platform/efl-wk1/accessibility/transformed-element-expected.txt:
+        * platform/efl-wk2/TestExpectations:
+        * platform/efl-wk2/accessibility/image-map2-expected.txt:
+        * platform/efl-wk2/accessibility/lists-expected.txt:
+        * platform/efl-wk2/accessibility/transformed-element-expected.txt:
+        * platform/efl/TestExpectations:
+        * platform/efl/accessibility/media-emits-object-replacement-expected.txt:
+        * platform/efl/fast/forms/validation-message-appearance-expected.txt:
+        * platform/efl/fast/parser/entity-comment-in-textarea-expected.txt:
+        * platform/efl/fast/table/empty-cells-expected.txt:
+        * platform/efl/http/tests/misc/will-send-request-returns-null-on-redirect-expected.txt:
+        * platform/efl/http/tests/security/XFrameOptions/x-frame-options-deny-meta-tag-expected.txt:
+        * platform/efl/http/tests/security/XFrameOptions/x-frame-options-deny-meta-tag-parent-same-origin-deny-expected.txt:
+        * platform/gtk/TestExpectations:
+        * platform/gtk/accessibility/aria-roles-unignored-expected.txt:
+        * platform/gtk/accessibility/aria-roles-unignored.html:
+        * platform/gtk/accessibility/entry-and-password-expected.txt:
+        * platform/gtk/accessibility/image-map2-expected.txt:
+        * platform/gtk/accessibility/lists-expected.txt:
+        * platform/gtk/accessibility/media-emits-object-replacement-expected.txt:
+        * platform/gtk/accessibility/object-with-title-expected.txt:
+        * platform/gtk/accessibility/object-with-title.html:
+        * platform/gtk/accessibility/replaced-objects-in-anonymous-blocks-expected.txt:
+        * platform/gtk/accessibility/spans-paragraphs-and-divs-expected.txt:
+        * platform/gtk/accessibility/spans-paragraphs-and-divs.html:
+        * platform/gtk/accessibility/text-at-offset-embedded-objects-expected.txt: Added.
+        * platform/gtk/accessibility/text-at-offset-embedded-objects.html: Added.
+        * platform/gtk/accessibility/text-at-offset-newlines-expected.txt: Added.
+        * platform/gtk/accessibility/text-at-offset-newlines.html: Added.
+        * platform/gtk/accessibility/text-at-offset-preformatted-expected.txt: Added.
+        * platform/gtk/accessibility/text-at-offset-preformatted.html: Added.
+        * platform/gtk/accessibility/text-at-offset-simple-expected.txt: Added.
+        * platform/gtk/accessibility/text-at-offset-simple.html: Added.
+        * platform/gtk/accessibility/text-at-offset-special-chars-expected.txt: Added.
+        * platform/gtk/accessibility/text-at-offset-special-chars.html: Added.
+        * platform/gtk/accessibility/text-at-offset-textarea-expected.txt: Added.
+        * platform/gtk/accessibility/text-at-offset-textarea.html: Added.
+        * platform/gtk/accessibility/text-at-offset-textinput-expected.txt: Added.
+        * platform/gtk/accessibility/text-at-offset-textinput.html: Added.
+        * platform/gtk/accessibility/text-at-offset-wrapped-lines-expected.txt: Added.
+        * platform/gtk/accessibility/text-at-offset-wrapped-lines.html: Added.
+        * platform/gtk/accessibility/text-for-range-combo-box-expected.txt: Added.
+        * platform/gtk/accessibility/text-for-range-combo-box.html: Added.
+        * platform/gtk/accessibility/text-for-range-embedded-objects-expected.txt: Added.
+        * platform/gtk/accessibility/text-for-range-embedded-objects.html: Added.
+        * platform/gtk/accessibility/text-for-range-entry-and-password-expected.txt: Added.
+        * platform/gtk/accessibility/text-for-range-entry-and-password.html: Added.
+        * platform/gtk/accessibility/text-for-range-extraneous-whitespace-expected.txt: Added.
+        * platform/gtk/accessibility/text-for-range-extraneous-whitespace.html: Added.
+        * platform/gtk/accessibility/text-for-range-formatted-expected.txt: Added.
+        * platform/gtk/accessibility/text-for-range-formatted.html: Added.
+        * platform/gtk/accessibility/text-for-range-heading-expected.txt: Added.
+        * platform/gtk/accessibility/text-for-range-heading.html: Added.
+        * platform/gtk/accessibility/text-for-range-list-items-expected.txt: Added.
+        * platform/gtk/accessibility/text-for-range-list-items.html: Added.
+        * platform/gtk/accessibility/text-for-range-simple-expected.txt: Added.
+        * platform/gtk/accessibility/text-for-range-simple.html: Added.
+        * platform/gtk/accessibility/text-for-range-table-cells-expected.txt: Added.
+        * platform/gtk/accessibility/text-for-range-table-cells.html: Added.
+        * platform/gtk/accessibility/text-for-range-with-link-expected.txt: Added.
+        * platform/gtk/accessibility/text-for-range-with-link.html: Added.
+        * platform/gtk/accessibility/text-for-table-expected.txt: Added.
+        * platform/gtk/accessibility/text-for-table.html: Added.
+        * platform/gtk/accessibility/transformed-element-expected.txt:
+        * platform/gtk/fast/events/stopPropagation-submit-expected.txt:
+        * platform/mac/accessibility/aria-hidden-negates-no-visibility-expected.txt:
+        * platform/mac/fast/table/empty-cells-expected.txt:
+        * svg/custom/clone-node-expected.txt: Added.
+        * svg/custom/clone-node.html: Added.
+        * svg/dom/SVGScriptElement/script-type-attribute-expected.txt: Added.
+        * svg/dom/SVGScriptElement/script-type-attribute.svg: Added.
+        * tables/mozilla/bugs/bug1818-6-expected.txt:
+
</ins><span class="cx"> 2014-01-16  Filip Pizlo  &lt;fpizlo@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Unreviewed, remove sstepanov_container because it is too slow.
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsTestExpectations"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/TestExpectations (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/TestExpectations        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/TestExpectations        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -68,3 +68,5 @@
</span><span class="cx"> # No port in WebKit already support getMediaStream, so we are skipping those for now.
</span><span class="cx"> fast/mediastream/MediaStream-construct-with-ended-tracks.html [ Skip ]
</span><span class="cx"> fast/mediastream/MediaStream-clone.html [ Skip ]
</span><ins>+
+webkit.org/b/124660 inspector-protocol/model/highlight-shape-outside.html [ Failure ]
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsaccessibilityadjacentcontinuationscauseassertionfailureexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/accessibility/adjacent-continuations-cause-assertion-failure-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/accessibility/adjacent-continuations-cause-assertion-failure-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/accessibility/adjacent-continuations-cause-assertion-failure-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -8,8 +8,8 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> AXRole: AXWebArea 
</span><del>-    AXRole: AXDiv AXValue: y
-    AXRole: AXDiv AXValue: End of test
</del><ins>+    AXRole: AXSection AXValue: y
+    AXRole: AXSection AXValue: End of test
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsaccessibilityalttagonimagewithnonimageroleexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/accessibility/alt-tag-on-image-with-nonimage-role-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/accessibility/alt-tag-on-image-with-nonimage-role-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/accessibility/alt-tag-on-image-with-nonimage-role-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,13 @@
</span><ins>+   
+This tests that setting a role on an img still allows the alt attribute to be used for the description..
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS text.stringValue is 'AXValue: TEST1'
+PASS group.description is 'AXDescription: TEST2'
+PASS button.description is 'AXDescription: TEST3'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsaccessibilityalttagonimagewithnonimagerolehtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/accessibility/alt-tag-on-image-with-nonimage-role.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/accessibility/alt-tag-on-image-with-nonimage-role.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/accessibility/alt-tag-on-image-with-nonimage-role.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,37 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body id=&quot;body&quot;&gt;
+
+&lt;img alt=&quot;TEST1&quot; src=&quot;resources/cake.png&quot; role=&quot;text&quot; id=&quot;text&quot;&gt;
+
+&lt;img alt=&quot;TEST2&quot; src=&quot;resources/cake.png&quot; role=&quot;group&quot; id=&quot;group&quot;&gt;
+
+&lt;img alt=&quot;TEST3&quot; src=&quot;resources/cake.png&quot; role=&quot;button&quot; id=&quot;button&quot;&gt;
+
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+
+&lt;script&gt;
+
+    description(&quot;This tests that setting a role on an img still allows the alt attribute to be used for the description..&quot;);
+
+    if (window.accessibilityController) {
+
+        var text = accessibilityController.accessibleElementById(&quot;text&quot;);
+        shouldBe(&quot;text.stringValue&quot;, &quot;'AXValue: TEST1'&quot;);
+
+        var group = accessibilityController.accessibleElementById(&quot;group&quot;);
+        shouldBe(&quot;group.description&quot;, &quot;'AXDescription: TEST2'&quot;);
+
+        var button = accessibilityController.accessibleElementById(&quot;button&quot;);
+        shouldBe(&quot;button.description&quot;, &quot;'AXDescription: TEST3'&quot;);
+    }
+
+&lt;/script&gt;
+
+&lt;script src=&quot;../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsaccessibilityariahiddennegatesnovisibilityexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/accessibility/aria-hidden-negates-no-visibility-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/accessibility/aria-hidden-negates-no-visibility-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/accessibility/aria-hidden-negates-no-visibility-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,23 @@
</span><ins>+heading1.2
+
+
+
+This tests ensures that aria-hidden=false will allow a node to be in the AX hierarchy even if it's not rendered or visible
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS !heading1_1 || !heading1_1.isValid is true
+PASS !heading1_2 || !heading1_3.isValid is true
+PASS !heading1_3 || !heading1_3.isValid is true
+PASS heading2.role is 'AXRole: AXHeading'
+PASS parent.childAtIndex(0).isEqual(heading2) is true
+PASS heading3.role is 'AXRole: AXHeading'
+PASS parent.childAtIndex(1).isEqual(heading3) is true
+PASS heading4.role is 'AXRole: AXHeading'
+PASS parent.childAtIndex(2).isEqual(heading4) is true
+Textfield Title: AXTitle: 
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsaccessibilityariamappingsexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/accessibility/aria-mappings-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/accessibility/aria-mappings-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/accessibility/aria-mappings-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -21,7 +21,7 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> role=&quot;alertdialog&quot; is a dialog which contains an alert message.
</span><del>-Role for 'alertdialog' div is: AXRole: AXDialog
</del><ins>+Role for 'alertdialog' div is: AXRole: AXAlert
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> role=&quot;article&quot; is a  section of a page that consists of a composition that forms an independent part of a document, page, or site
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsaccessibilitychildrenchangedsendsnotificationexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/accessibility/children-changed-sends-notification-expected.txt ( => )</h4>
<pre class="diff"><span>
<span class="info">Added: branches/jsCStack/LayoutTests/accessibility/children-changed-sends-notification.html
===================================================================
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsaccessibilitydivwithinanchorscausescrashexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/accessibility/div-within-anchors-causes-crash-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/accessibility/div-within-anchors-causes-crash-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/accessibility/div-within-anchors-causes-crash-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -2,10 +2,10 @@
</span><span class="cx"> Before:
</span><span class="cx"> AXRole: AXWebArea 
</span><span class="cx">     AXRole: AXLink AXValue: 
</span><del>-    AXRole: AXDiv AXValue: End of test
</del><ins>+    AXRole: AXSection AXValue: End of test
</ins><span class="cx"> After:
</span><span class="cx"> AXRole: AXWebArea 
</span><del>-    AXRole: AXDiv AXValue: End of test
</del><ins>+    AXRole: AXSection AXValue: End of test
</ins><span class="cx"> This can cause a crash.
</span><span class="cx"> 
</span><span class="cx"> On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsaccessibilitypresstargetscenterpointhtml"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/accessibility/press-targets-center-point.html (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/accessibility/press-targets-center-point.html        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/accessibility/press-targets-center-point.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -16,16 +16,16 @@
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> 
</span><del>-&lt;div class=&quot;target&quot; id=&quot;t0&quot; style=&quot;width:160px;&quot;&gt;target&lt;/div&gt;
</del><ins>+&lt;div class=&quot;target&quot; id=&quot;t0&quot; style=&quot;height: 18px; width:160px;&quot;&gt;target&lt;/div&gt;
</ins><span class="cx"> &lt;p&gt;Actual: &lt;span class=&quot;result&quot; id=&quot;a0&quot;&gt;waiting&lt;/span&gt;&lt;br&gt;Expected: &lt;span class=&quot;result&quot; id=&quot;e0&quot;&gt;waiting&lt;/span&gt;&lt;/p&gt;
</span><span class="cx"> 
</span><del>-&lt;div class=&quot;target&quot; id=&quot;t1&quot; style=&quot;-webkit-transform:translate(160px, 160px); width:240px;&quot;&gt;translate transform target&lt;/div&gt;
</del><ins>+&lt;div class=&quot;target&quot; id=&quot;t1&quot; style=&quot;-webkit-transform:translate(160px, 160px); height: 18px; width:240px;&quot;&gt;translate transform target&lt;/div&gt;
</ins><span class="cx"> &lt;p&gt;Actual: &lt;span class=&quot;result&quot; id=&quot;a1&quot;&gt;waiting&lt;/span&gt;&lt;br&gt;Expected: &lt;span class=&quot;result&quot; id=&quot;e1&quot;&gt;waiting&lt;/span&gt;&lt;/p&gt;
</span><span class="cx"> 
</span><del>-&lt;div class=&quot;target&quot; id=&quot;t2&quot; style=&quot;-webkit-writing-mode:vertical-lr;&quot;&gt;vertical left-to-right writing mode target&lt;/div&gt;
</del><ins>+&lt;div class=&quot;target&quot; id=&quot;t2&quot; style=&quot;-webkit-writing-mode:vertical-lr; width: 18px;&quot;&gt;vertical left-to-right writing mode target&lt;/div&gt;
</ins><span class="cx"> &lt;p&gt;Actual: &lt;span class=&quot;result&quot; id=&quot;a2&quot;&gt;waiting&lt;/span&gt;&lt;br&gt;Expected: &lt;span class=&quot;result&quot; id=&quot;e2&quot;&gt;waiting&lt;/span&gt;&lt;/p&gt;
</span><span class="cx"> 
</span><del>-&lt;div class=&quot;target&quot; id=&quot;t3&quot; style=&quot;direction:rtl; width:240px;&quot;&gt;right-to-left direction target&lt;/div&gt;
</del><ins>+&lt;div class=&quot;target&quot; id=&quot;t3&quot; style=&quot;direction:rtl; height: 18px; width:240px;&quot;&gt;right-to-left direction target&lt;/div&gt;
</ins><span class="cx"> &lt;p&gt;Actual: &lt;span class=&quot;result&quot; id=&quot;a3&quot;&gt;waiting&lt;/span&gt;&lt;br&gt;Expected: &lt;span class=&quot;result&quot; id=&quot;e3&quot;&gt;waiting&lt;/span&gt;&lt;/p&gt;
</span><span class="cx"> 
</span><span class="cx"> &lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsanimationsresourcesanimationtesthelpersjs"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/animations/resources/animation-test-helpers.js (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/animations/resources/animation-test-helpers.js        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/animations/resources/animation-test-helpers.js        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -222,7 +222,7 @@
</span><span class="cx">         matches = s.match(&quot;ellipse\\((.*)\\s+(.*)\\s+at\\s+(.*)\\s+(.*)\\)&quot;);
</span><span class="cx">         break;
</span><span class="cx">     case &quot;polygon&quot;:
</span><del>-        matches = s.match(&quot;polygon\\(nonzero, (.*)\\s+(.*)\\s*,\\s*(.*)\\s+(.*)\\s*,\\s*(.*)\\s+(.*)\\s*,\\s*(.*)\\s+(.*)\\)&quot;);
</del><ins>+        matches = s.match(&quot;polygon\\((evenodd|nonzero), (.*)\\s+(.*)\\s*,\\s*(.*)\\s+(.*)\\s*,\\s*(.*)\\s+(.*)\\s*,\\s*(.*)\\s+(.*)\\)&quot;);
</ins><span class="cx">         break;
</span><span class="cx">     default:
</span><span class="cx">         return null;
</span><span class="lines">@@ -232,9 +232,12 @@
</span><span class="cx">         return null;
</span><span class="cx"> 
</span><span class="cx">     matches.shift();
</span><ins>+    var i = 0;
+    if (shapeFunction[1] == &quot;polygon&quot;)
+        i++; // skip nonzero|evenodd below
</ins><span class="cx"> 
</span><span class="cx">     // Normalize percentage values.
</span><del>-    for (var i = 0; i &lt; matches.length; ++i) {
</del><ins>+    for (; i &lt; matches.length; ++i) {
</ins><span class="cx">         var param = matches[i];
</span><span class="cx">         matches[i] = parseFloat(matches[i]);
</span><span class="cx">         if (param.indexOf('%') != -1)
</span><span class="lines">@@ -309,7 +312,13 @@
</span><span class="cx">     if (paramList1.shape != paramList2.shape
</span><span class="cx">         || paramList1.params.length != paramList2.params.length)
</span><span class="cx">         return false;
</span><del>-    for (var i = 0; i &lt; paramList1.params.length; ++i) {
</del><ins>+    var i = 0;
+    if (paramList1.shape == &quot;polygon&quot;) {
+        if (paramList1.params[0] != paramList2.params[0])
+            return false; // fill-rule's don't match
+        i++;
+    }
+    for (; i &lt; paramList1.params.length; ++i) {
</ins><span class="cx">         var param1 = paramList1.params[i], 
</span><span class="cx">             param2 = paramList2.params[i];
</span><span class="cx">         var match = isCloseEnough(param1, param2, tolerance);
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtleaescbc192encryptdecryptexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-192-encrypt-decrypt-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-192-encrypt-decrypt-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-192-encrypt-decrypt-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -6,9 +6,9 @@
</span><span class="cx"> Importing a raw AES key from string literal...
</span><span class="cx"> PASS key.type is 'secret'
</span><span class="cx"> PASS key.extractable is true
</span><del>-PASS key.algorithm.name is 'aes-cbc'
</del><ins>+PASS key.algorithm.name is 'AES-CBC'
</ins><span class="cx"> PASS key.algorithm.length is 192
</span><del>-PASS key.usages is ['encrypt', 'decrypt']
</del><ins>+PASS key.usages is ['decrypt', 'encrypt']
</ins><span class="cx"> Using the key to encrypt plaintext...
</span><span class="cx"> PASS bytesToHexString(new Uint8Array(encryptionResult)) is '4f021db243bc633d7178183a9fa071e8b4d9ada9ad7dedf4e5e738763f69145a571b242012fb7ae07fa9baac3df102e008b0e27988598881d920a9e64f5615cd612ccd79224b350935d45dd6a98f8176'
</span><span class="cx"> Decrypting it back...
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtleaescbc192encryptdecrypthtml"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-192-encrypt-decrypt.html (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-192-encrypt-decrypt.html        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-192-encrypt-decrypt.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -23,9 +23,9 @@
</span><span class="cx">     key = result;
</span><span class="cx">     shouldBe(&quot;key.type&quot;, &quot;'secret'&quot;);
</span><span class="cx">     shouldBe(&quot;key.extractable&quot;, &quot;true&quot;);
</span><del>-    shouldBe(&quot;key.algorithm.name&quot;, &quot;'aes-cbc'&quot;);
</del><ins>+    shouldBe(&quot;key.algorithm.name&quot;, &quot;'AES-CBC'&quot;);
</ins><span class="cx">     shouldBe(&quot;key.algorithm.length&quot;, &quot;192&quot;);
</span><del>-    shouldBe(&quot;key.usages&quot;, &quot;['encrypt', 'decrypt']&quot;);
</del><ins>+    shouldBe(&quot;key.usages&quot;, &quot;['decrypt', 'encrypt']&quot;);
</ins><span class="cx"> 
</span><span class="cx">     debug(&quot;Using the key to encrypt plaintext...&quot;);
</span><span class="cx">     return crypto.subtle.encrypt({name: &quot;aes-cbc&quot;, iv: iv}, key, plaintext);
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtleaescbc256encryptdecryptexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-256-encrypt-decrypt-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-256-encrypt-decrypt-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-256-encrypt-decrypt-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -6,9 +6,9 @@
</span><span class="cx"> Importing a raw AES key from string literal...
</span><span class="cx"> PASS key.type is 'secret'
</span><span class="cx"> PASS key.extractable is true
</span><del>-PASS key.algorithm.name is 'aes-cbc'
</del><ins>+PASS key.algorithm.name is 'AES-CBC'
</ins><span class="cx"> PASS key.algorithm.length is 256
</span><del>-PASS key.usages is ['encrypt', 'decrypt']
</del><ins>+PASS key.usages is ['decrypt', 'encrypt']
</ins><span class="cx"> Using the key to encrypt plaintext...
</span><span class="cx"> PASS bytesToHexString(new Uint8Array(encryptionResult)) is 'f58c4c04d6e5f1ba779eabfb5f7bfbd69cfc4e967edb808d679f777bc6702c7d39f23369a9d9bacfa530e26304231461b2eb05e2c39be9fcda6c19078c6a9d1b3f461796d6b0d6b2e0c2a72b4d80e644'
</span><span class="cx"> Decrypting it back...
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtleaescbc256encryptdecrypthtml"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-256-encrypt-decrypt.html (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-256-encrypt-decrypt.html        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-256-encrypt-decrypt.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -23,9 +23,9 @@
</span><span class="cx">     key = result;
</span><span class="cx">     shouldBe(&quot;key.type&quot;, &quot;'secret'&quot;);
</span><span class="cx">     shouldBe(&quot;key.extractable&quot;, &quot;true&quot;);
</span><del>-    shouldBe(&quot;key.algorithm.name&quot;, &quot;'aes-cbc'&quot;);
</del><ins>+    shouldBe(&quot;key.algorithm.name&quot;, &quot;'AES-CBC'&quot;);
</ins><span class="cx">     shouldBe(&quot;key.algorithm.length&quot;, &quot;256&quot;);
</span><del>-    shouldBe(&quot;key.usages&quot;, &quot;['encrypt', 'decrypt']&quot;);
</del><ins>+    shouldBe(&quot;key.usages&quot;, &quot;['decrypt', 'encrypt']&quot;);
</ins><span class="cx"> 
</span><span class="cx">     debug(&quot;Using the key to encrypt plaintext...&quot;);
</span><span class="cx">     return crypto.subtle.encrypt({name: &quot;aes-cbc&quot;, iv: iv}, key, plaintext);
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtleaescbcencryptdecryptexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-encrypt-decrypt-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-encrypt-decrypt-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-encrypt-decrypt-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -6,9 +6,9 @@
</span><span class="cx"> Importing a raw AES key from string literal...
</span><span class="cx"> PASS key.type is 'secret'
</span><span class="cx"> PASS key.extractable is true
</span><del>-PASS key.algorithm.name is 'aes-cbc'
</del><ins>+PASS key.algorithm.name is 'AES-CBC'
</ins><span class="cx"> PASS key.algorithm.length is 128
</span><del>-PASS key.usages is ['encrypt', 'decrypt']
</del><ins>+PASS key.usages is ['decrypt', 'encrypt']
</ins><span class="cx"> Using the key to encrypt plaintext...
</span><span class="cx"> PASS bytesToHexString(new Uint8Array(encryptionResult)) is '7649abac8119b246cee98e9b12e9197d5086cb9b507219ee95db113a917678b273bed6b8e3c1743b7116e69e222295163ff1caa1681fac09120eca307586e1a78cb82807230e1321d3fae00d18cc2012'
</span><span class="cx"> Decrypting it back...
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtleaescbcencryptdecryptwithpaddingexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-encrypt-decrypt-with-padding-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-encrypt-decrypt-with-padding-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-encrypt-decrypt-with-padding-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -6,9 +6,9 @@
</span><span class="cx"> Importing a raw AES key from string literal...
</span><span class="cx"> PASS key.type is 'secret'
</span><span class="cx"> PASS key.extractable is true
</span><del>-PASS key.algorithm.name is 'aes-cbc'
</del><ins>+PASS key.algorithm.name is 'AES-CBC'
</ins><span class="cx"> PASS key.algorithm.length is 128
</span><del>-PASS key.usages is ['encrypt', 'decrypt']
</del><ins>+PASS key.usages is ['decrypt', 'encrypt']
</ins><span class="cx"> Using the key to encrypt plaintext...
</span><span class="cx"> PASS bytesToHexString(new Uint8Array(cyphertext)) is '630199c5f202cc7167bb84c6c72b349d'
</span><span class="cx"> Decrypting it back...
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtleaescbcencryptdecryptwithpaddinghtml"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-encrypt-decrypt-with-padding.html (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-encrypt-decrypt-with-padding.html        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-encrypt-decrypt-with-padding.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -23,9 +23,9 @@
</span><span class="cx">     key = result;
</span><span class="cx">     shouldBe(&quot;key.type&quot;, &quot;'secret'&quot;);
</span><span class="cx">     shouldBe(&quot;key.extractable&quot;, &quot;true&quot;);
</span><del>-    shouldBe(&quot;key.algorithm.name&quot;, &quot;'aes-cbc'&quot;);
</del><ins>+    shouldBe(&quot;key.algorithm.name&quot;, &quot;'AES-CBC'&quot;);
</ins><span class="cx">     shouldBe(&quot;key.algorithm.length&quot;, &quot;128&quot;);
</span><del>-    shouldBe(&quot;key.usages&quot;, &quot;['encrypt', 'decrypt']&quot;);
</del><ins>+    shouldBe(&quot;key.usages&quot;, &quot;['decrypt', 'encrypt']&quot;);
</ins><span class="cx"> 
</span><span class="cx">     debug(&quot;Using the key to encrypt plaintext...&quot;);
</span><span class="cx">     return crypto.subtle.encrypt({name: &quot;aes-cbc&quot;, iv: iv}, key, plaintext);
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtleaescbcencryptdecrypthtml"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-encrypt-decrypt.html (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-encrypt-decrypt.html        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-encrypt-decrypt.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -23,9 +23,9 @@
</span><span class="cx">     key = result;
</span><span class="cx">     shouldBe(&quot;key.type&quot;, &quot;'secret'&quot;);
</span><span class="cx">     shouldBe(&quot;key.extractable&quot;, &quot;true&quot;);
</span><del>-    shouldBe(&quot;key.algorithm.name&quot;, &quot;'aes-cbc'&quot;);
</del><ins>+    shouldBe(&quot;key.algorithm.name&quot;, &quot;'AES-CBC'&quot;);
</ins><span class="cx">     shouldBe(&quot;key.algorithm.length&quot;, &quot;128&quot;);
</span><del>-    shouldBe(&quot;key.usages&quot;, &quot;['encrypt', 'decrypt']&quot;);
</del><ins>+    shouldBe(&quot;key.usages&quot;, &quot;['decrypt', 'encrypt']&quot;);
</ins><span class="cx"> 
</span><span class="cx">     debug(&quot;Using the key to encrypt plaintext...&quot;);
</span><span class="cx">     return crypto.subtle.encrypt({name: &quot;aes-cbc&quot;, iv: iv}, key, plaintext);
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtleaescbcgeneratekeyexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-generate-key-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-generate-key-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-generate-key-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -10,9 +10,9 @@
</span><span class="cx"> Generating a key...
</span><span class="cx"> PASS key.type is 'secret'
</span><span class="cx"> PASS key.extractable is true
</span><del>-PASS key.algorithm.name is 'aes-cbc'
</del><ins>+PASS key.algorithm.name is 'AES-CBC'
</ins><span class="cx"> PASS key.algorithm.length is 128
</span><del>-PASS key.usages is ['encrypt', 'decrypt']
</del><ins>+PASS key.usages is ['decrypt', 'encrypt']
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtleaescbcgeneratekeyhtml"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-generate-key.html (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-generate-key.html        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-generate-key.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -26,9 +26,9 @@
</span><span class="cx"> 
</span><span class="cx">     shouldBe(&quot;key.type&quot;, &quot;'secret'&quot;);
</span><span class="cx">     shouldBe(&quot;key.extractable&quot;, &quot;true&quot;);
</span><del>-    shouldBe(&quot;key.algorithm.name&quot;, &quot;'aes-cbc'&quot;);
</del><ins>+    shouldBe(&quot;key.algorithm.name&quot;, &quot;'AES-CBC'&quot;);
</ins><span class="cx">     shouldBe(&quot;key.algorithm.length&quot;, &quot;128&quot;);
</span><del>-    shouldBe(&quot;key.usages&quot;, &quot;['encrypt', 'decrypt']&quot;);
</del><ins>+    shouldBe(&quot;key.usages&quot;, &quot;['decrypt', 'encrypt']&quot;);
</ins><span class="cx"> 
</span><span class="cx">     finishJSTest();
</span><span class="cx"> });
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtleaescbcimportjwkexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-import-jwk-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-import-jwk-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-import-jwk-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -7,7 +7,7 @@
</span><span class="cx"> 
</span><span class="cx"> PASS key.type is 'secret'
</span><span class="cx"> PASS key.extractable is false
</span><del>-PASS key.algorithm.name is 'aes-cbc'
</del><ins>+PASS key.algorithm.name is 'AES-CBC'
</ins><span class="cx"> PASS key.algorithm.length is 192
</span><span class="cx"> PASS key.usages is [&quot;encrypt&quot;]
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtleaescbcimportjwkhtml"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-import-jwk.html (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-import-jwk.html        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-import-jwk.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -34,7 +34,7 @@
</span><span class="cx"> 
</span><span class="cx">     shouldBe(&quot;key.type&quot;, &quot;'secret'&quot;);
</span><span class="cx">     shouldBe(&quot;key.extractable&quot;, &quot;false&quot;);
</span><del>-    shouldBe(&quot;key.algorithm.name&quot;, &quot;'aes-cbc'&quot;);
</del><ins>+    shouldBe(&quot;key.algorithm.name&quot;, &quot;'AES-CBC'&quot;);
</ins><span class="cx">     shouldBe(&quot;key.algorithm.length&quot;, &quot;192&quot;);
</span><span class="cx">     shouldBe(&quot;key.usages&quot;, '[&quot;encrypt&quot;]');
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtleaescbcinvalidlengthexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-invalid-length-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-invalid-length-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-invalid-length-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -6,9 +6,9 @@
</span><span class="cx"> Importing a raw AES key from string literal...
</span><span class="cx"> PASS key.type is 'secret'
</span><span class="cx"> PASS key.extractable is true
</span><del>-PASS key.algorithm.name is 'aes-cbc'
</del><ins>+PASS key.algorithm.name is 'AES-CBC'
</ins><span class="cx"> PASS key.algorithm.length is 176
</span><del>-PASS key.usages is ['encrypt', 'decrypt']
</del><ins>+PASS key.usages is ['decrypt', 'encrypt']
</ins><span class="cx"> Using the key to encrypt plaintext...
</span><span class="cx"> Failed, as expected. Note that the spec doesn't appear to clearly define which step should fail.
</span><span class="cx"> PASS successfullyParsed is true
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtleaescbcinvalidlengthhtml"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-invalid-length.html (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-invalid-length.html        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-invalid-length.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -23,9 +23,9 @@
</span><span class="cx">     key = result;
</span><span class="cx">     shouldBe(&quot;key.type&quot;, &quot;'secret'&quot;);
</span><span class="cx">     shouldBe(&quot;key.extractable&quot;, &quot;true&quot;);
</span><del>-    shouldBe(&quot;key.algorithm.name&quot;, &quot;'aes-cbc'&quot;);
</del><ins>+    shouldBe(&quot;key.algorithm.name&quot;, &quot;'AES-CBC'&quot;);
</ins><span class="cx">     shouldBe(&quot;key.algorithm.length&quot;, &quot;176&quot;);
</span><del>-    shouldBe(&quot;key.usages&quot;, &quot;['encrypt', 'decrypt']&quot;);
</del><ins>+    shouldBe(&quot;key.usages&quot;, &quot;['decrypt', 'encrypt']&quot;);
</ins><span class="cx"> 
</span><span class="cx">     debug(&quot;Using the key to encrypt plaintext...&quot;);
</span><span class="cx">     return crypto.subtle.encrypt({name: &quot;aes-cbc&quot;, iv: iv}, key, [plaintext]);
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtleaescbcunwrapfailureexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-unwrap-failure-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-unwrap-failure-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-unwrap-failure-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -4,7 +4,7 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> Importing an unwrapping key...
</span><del>-PASS unwrappingKey.algorithm.name is 'aes-cbc'
</del><ins>+PASS unwrappingKey.algorithm.name is 'AES-CBC'
</ins><span class="cx"> Unwrapping a key...
</span><span class="cx"> PASS Promise rejected
</span><span class="cx"> PASS successfullyParsed is true
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtleaescbcunwrapfailurehtml"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-unwrap-failure.html (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-unwrap-failure.html        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-unwrap-failure.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -22,7 +22,7 @@
</span><span class="cx"> debug(&quot;Importing an unwrapping key...&quot;);
</span><span class="cx"> crypto.subtle.importKey(&quot;raw&quot;, unwrappingKeyOctets, &quot;AES-CBC&quot;, nonExtractable, [&quot;unwrapKey&quot;]).then(function(result) {
</span><span class="cx">     unwrappingKey = result;
</span><del>-    shouldBe(&quot;unwrappingKey.algorithm.name&quot;, &quot;'aes-cbc'&quot;);
</del><ins>+    shouldBe(&quot;unwrappingKey.algorithm.name&quot;, &quot;'AES-CBC'&quot;);
</ins><span class="cx">     var unwrapAlgorithm = {name: &quot;AES-CBC&quot;, iv: hexStringToUint8Array(&quot;000102030405060708090a0b0c0d0e0f&quot;)};
</span><span class="cx">     debug(&quot;Unwrapping a key...&quot;);
</span><span class="cx">     return crypto.subtle.unwrapKey(&quot;jwk&quot;, wrappedKey, unwrappingKey, unwrapAlgorithm, null, extractable, [&quot;sign&quot;, &quot;verify&quot;, &quot;encrypt&quot;, &quot;decrypt&quot;, &quot;wrap&quot;, &quot;unwrap&quot;]);
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtleaescbcunwraprsaexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-unwrap-rsa-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-unwrap-rsa-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-unwrap-rsa-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -4,15 +4,15 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> Importing an unwrapping key...
</span><del>-PASS unwrappingKey.algorithm.name is 'aes-cbc'
</del><ins>+PASS unwrappingKey.algorithm.name is 'AES-CBC'
</ins><span class="cx"> Unwrapping a key...
</span><span class="cx"> PASS unwrappedKey.toString() is '[object Key]'
</span><span class="cx"> PASS unwrappedKey.type is 'public'
</span><span class="cx"> PASS unwrappedKey.usages is ['sign','verify']
</span><del>-PASS unwrappedKey.algorithm.name is 'rsassa-pkcs1-v1_5'
</del><ins>+PASS unwrappedKey.algorithm.name is 'RSASSA-PKCS1-v1_5'
</ins><span class="cx"> PASS unwrappedKey.algorithm.modulusLength is 2048
</span><span class="cx"> PASS Base64URL.stringify(unwrappedKey.algorithm.publicExponent) is publicKeyJSON.e
</span><del>-PASS unwrappedKey.algorithm.hash.name is 'sha-256'
</del><ins>+PASS unwrappedKey.algorithm.hash.name is 'SHA-256'
</ins><span class="cx"> PASS unwrappedKey.extractable is false
</span><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtleaescbcunwraprsahtml"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-unwrap-rsa.html (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-unwrap-rsa.html        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-unwrap-rsa.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -31,7 +31,7 @@
</span><span class="cx"> debug(&quot;Importing an unwrapping key...&quot;);
</span><span class="cx"> crypto.subtle.importKey(&quot;raw&quot;, unwrappingKeyOctets, &quot;AES-CBC&quot;, nonExtractable, [&quot;unwrapKey&quot;]).then(function(result) {
</span><span class="cx">     unwrappingKey = result;
</span><del>-    shouldBe(&quot;unwrappingKey.algorithm.name&quot;, &quot;'aes-cbc'&quot;);
</del><ins>+    shouldBe(&quot;unwrappingKey.algorithm.name&quot;, &quot;'AES-CBC'&quot;);
</ins><span class="cx">     var unwrapAlgorithm = {name: &quot;AES-CBC&quot;, iv: hexStringToUint8Array(&quot;000102030405060708090a0b0c0d0e0f&quot;)};
</span><span class="cx">     debug(&quot;Unwrapping a key...&quot;);
</span><span class="cx">     return crypto.subtle.unwrapKey(&quot;jwk&quot;, wrappedKey, unwrappingKey, unwrapAlgorithm, null, extractable, [&quot;sign&quot;, &quot;verify&quot;, &quot;encrypt&quot;, &quot;decrypt&quot;, &quot;wrap&quot;, &quot;unwrap&quot;]);
</span><span class="lines">@@ -41,10 +41,10 @@
</span><span class="cx">     shouldBe(&quot;unwrappedKey.toString()&quot;, &quot;'[object Key]'&quot;);
</span><span class="cx">     shouldBe(&quot;unwrappedKey.type&quot;, &quot;'public'&quot;);
</span><span class="cx">     shouldBe(&quot;unwrappedKey.usages&quot;, &quot;['sign','verify']&quot;);
</span><del>-    shouldBe(&quot;unwrappedKey.algorithm.name&quot;, &quot;'rsassa-pkcs1-v1_5'&quot;);
</del><ins>+    shouldBe(&quot;unwrappedKey.algorithm.name&quot;, &quot;'RSASSA-PKCS1-v1_5'&quot;);
</ins><span class="cx">     shouldBe(&quot;unwrappedKey.algorithm.modulusLength&quot;, &quot;2048&quot;);
</span><span class="cx">     shouldBe(&quot;Base64URL.stringify(unwrappedKey.algorithm.publicExponent)&quot;, &quot;publicKeyJSON.e&quot;);
</span><del>-    shouldBe(&quot;unwrappedKey.algorithm.hash.name&quot;, &quot;'sha-256'&quot;);
</del><ins>+    shouldBe(&quot;unwrappedKey.algorithm.hash.name&quot;, &quot;'SHA-256'&quot;);
</ins><span class="cx">     shouldBe(&quot;unwrappedKey.extractable&quot;, &quot;false&quot;);
</span><span class="cx">     finishJSTest();
</span><span class="cx"> });
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtleaescbcwraprsaexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-wrap-rsa-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-wrap-rsa-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-wrap-rsa-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -4,9 +4,9 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> Importing a key to wrap...
</span><del>-PASS key.algorithm.name is 'rsassa-pkcs1-v1_5'
</del><ins>+PASS key.algorithm.name is 'RSASSA-PKCS1-v1_5'
</ins><span class="cx"> Importing a key encryption key...
</span><del>-PASS wrappingKey.algorithm.name is 'aes-cbc'
</del><ins>+PASS wrappingKey.algorithm.name is 'AES-CBC'
</ins><span class="cx"> PASS wrappedKey.toString() is '[object ArrayBuffer]'
</span><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtleaescbcwraprsanonextractableexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-wrap-rsa-non-extractable-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-wrap-rsa-non-extractable-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-wrap-rsa-non-extractable-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -4,9 +4,9 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> Importing a key to wrap...
</span><del>-PASS key.algorithm.name is 'rsassa-pkcs1-v1_5'
</del><ins>+PASS key.algorithm.name is 'RSASSA-PKCS1-v1_5'
</ins><span class="cx"> Importing a key encryption key...
</span><del>-PASS wrappingKey.algorithm.name is 'aes-cbc'
</del><ins>+PASS wrappingKey.algorithm.name is 'AES-CBC'
</ins><span class="cx"> wrapping the key...
</span><span class="cx"> PASS Rejected
</span><span class="cx"> PASS successfullyParsed is true
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtleaescbcwraprsanonextractablehtml"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-wrap-rsa-non-extractable.html (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-wrap-rsa-non-extractable.html        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-wrap-rsa-non-extractable.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -31,12 +31,12 @@
</span><span class="cx"> debug(&quot;Importing a key to wrap...&quot;);
</span><span class="cx"> crypto.subtle.importKey(&quot;jwk&quot;, jwkKeyAsArrayBuffer, null, extractable, [&quot;sign&quot;, &quot;verify&quot;]).then(function(result) {
</span><span class="cx">     key = result;
</span><del>-    shouldBe(&quot;key.algorithm.name&quot;, &quot;'rsassa-pkcs1-v1_5'&quot;);
</del><ins>+    shouldBe(&quot;key.algorithm.name&quot;, &quot;'RSASSA-PKCS1-v1_5'&quot;);
</ins><span class="cx">     debug(&quot;Importing a key encryption key...&quot;);
</span><span class="cx">     return crypto.subtle.importKey(&quot;raw&quot;, wrappingKeyOctets, &quot;AES-CBC&quot;, nonExtractable, [&quot;wrapKey&quot;]);
</span><span class="cx"> }).then(function(result) {
</span><span class="cx">     wrappingKey = result;
</span><del>-    shouldBe(&quot;wrappingKey.algorithm.name&quot;, &quot;'aes-cbc'&quot;);
</del><ins>+    shouldBe(&quot;wrappingKey.algorithm.name&quot;, &quot;'AES-CBC'&quot;);
</ins><span class="cx">     var wrapAlgorithm = {name: &quot;AES-CBC&quot;, iv: hexStringToUint8Array(&quot;000102030405060708090a0b0c0d0e0f&quot;)};
</span><span class="cx">     debug(&quot;wrapping the key...&quot;);
</span><span class="cx">     return crypto.subtle.wrapKey(&quot;jwk&quot;, key, wrappingKey, wrapAlgorithm);
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtleaescbcwraprsahtml"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-wrap-rsa.html (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-wrap-rsa.html        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/aes-cbc-wrap-rsa.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -31,12 +31,12 @@
</span><span class="cx"> debug(&quot;Importing a key to wrap...&quot;);
</span><span class="cx"> crypto.subtle.importKey(&quot;jwk&quot;, jwkKeyAsArrayBuffer, null, extractable, [&quot;sign&quot;, &quot;verify&quot;]).then(function(result) {
</span><span class="cx">     key = result;
</span><del>-    shouldBe(&quot;key.algorithm.name&quot;, &quot;'rsassa-pkcs1-v1_5'&quot;);
</del><ins>+    shouldBe(&quot;key.algorithm.name&quot;, &quot;'RSASSA-PKCS1-v1_5'&quot;);
</ins><span class="cx">     debug(&quot;Importing a key encryption key...&quot;);
</span><span class="cx">     return crypto.subtle.importKey(&quot;raw&quot;, wrappingKeyOctets, &quot;AES-CBC&quot;, nonExtractable, [&quot;wrapKey&quot;]);
</span><span class="cx"> }).then(function(result) {
</span><span class="cx">     wrappingKey = result;
</span><del>-    shouldBe(&quot;wrappingKey.algorithm.name&quot;, &quot;'aes-cbc'&quot;);
</del><ins>+    shouldBe(&quot;wrappingKey.algorithm.name&quot;, &quot;'AES-CBC'&quot;);
</ins><span class="cx">     var wrapAlgorithm = {name: &quot;AES-CBC&quot;, iv: hexStringToUint8Array(&quot;000102030405060708090a0b0c0d0e0f&quot;)};
</span><span class="cx">     return crypto.subtle.wrapKey(&quot;jwk&quot;, key, wrappingKey, wrapAlgorithm);
</span><span class="cx"> }).then(function(result) {
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtleaeskwkeymanipulationexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/aes-kw-key-manipulation-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/aes-kw-key-manipulation-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/aes-kw-key-manipulation-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -6,7 +6,7 @@
</span><span class="cx"> Generating a key...
</span><span class="cx"> PASS key.toString() is '[object Key]'
</span><span class="cx"> PASS key.type is 'secret'
</span><del>-PASS key.algorithm.name is 'aes-kw'
</del><ins>+PASS key.algorithm.name is 'AES-KW'
</ins><span class="cx"> PASS key.algorithm.length is 256
</span><span class="cx"> 
</span><span class="cx"> Testing that the key can't be used with AES-CBC...
</span><span class="lines">@@ -17,7 +17,7 @@
</span><span class="cx"> Importing it back...
</span><span class="cx"> PASS importedKey.toString() is '[object Key]'
</span><span class="cx"> PASS importedKey.type is 'secret'
</span><del>-PASS importedKey.algorithm.name is 'aes-kw'
</del><ins>+PASS importedKey.algorithm.name is 'AES-KW'
</ins><span class="cx"> PASS importedKey.algorithm.length is 256
</span><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtleaeskwkeymanipulationhtml"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/aes-kw-key-manipulation.html (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/aes-kw-key-manipulation.html        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/aes-kw-key-manipulation.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -20,7 +20,7 @@
</span><span class="cx">     key = result;
</span><span class="cx">     shouldBe(&quot;key.toString()&quot;, &quot;'[object Key]'&quot;);
</span><span class="cx">     shouldBe(&quot;key.type&quot;, &quot;'secret'&quot;);
</span><del>-    shouldBe(&quot;key.algorithm.name&quot;, &quot;'aes-kw'&quot;);
</del><ins>+    shouldBe(&quot;key.algorithm.name&quot;, &quot;'AES-KW'&quot;);
</ins><span class="cx">     shouldBe(&quot;key.algorithm.length&quot;, &quot;256&quot;);
</span><span class="cx"> 
</span><span class="cx">     debug(&quot;\nTesting that the key can't be used with AES-CBC...&quot;);
</span><span class="lines">@@ -39,7 +39,7 @@
</span><span class="cx"> 
</span><span class="cx">     shouldBe(&quot;importedKey.toString()&quot;, &quot;'[object Key]'&quot;);
</span><span class="cx">     shouldBe(&quot;importedKey.type&quot;, &quot;'secret'&quot;);
</span><del>-    shouldBe(&quot;importedKey.algorithm.name&quot;, &quot;'aes-kw'&quot;);
</del><ins>+    shouldBe(&quot;importedKey.algorithm.name&quot;, &quot;'AES-KW'&quot;);
</ins><span class="cx">     shouldBe(&quot;importedKey.algorithm.length&quot;, &quot;256&quot;);
</span><span class="cx"> 
</span><span class="cx">     finishJSTest();
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtleaeskwwrapunwrapaesexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/aes-kw-wrap-unwrap-aes-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/aes-kw-wrap-unwrap-aes-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/aes-kw-wrap-unwrap-aes-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -11,9 +11,9 @@
</span><span class="cx"> PASS unwrappedKey.toString() is '[object Key]'
</span><span class="cx"> PASS unwrappedKey.type is 'secret'
</span><span class="cx"> PASS unwrappedKey.extractable is true
</span><del>-PASS unwrappedKey.algorithm.name is 'aes-cbc'
</del><ins>+PASS unwrappedKey.algorithm.name is 'AES-CBC'
</ins><span class="cx"> PASS unwrappedKey.algorithm.length is 128
</span><del>-PASS unwrappedKey.usages is ['encrypt', 'decrypt', 'wrapKey', 'unwrapKey']
</del><ins>+PASS unwrappedKey.usages is ['decrypt', 'encrypt', 'unwrapKey', 'wrapKey']
</ins><span class="cx"> Exporting it...
</span><span class="cx"> PASS bytesToHexString(unwrappedKeyData) is bytesToHexString(keyData)
</span><span class="cx"> 
</span><span class="lines">@@ -22,9 +22,9 @@
</span><span class="cx"> PASS unwrappedKey.toString() is '[object Key]'
</span><span class="cx"> PASS unwrappedKey.type is 'secret'
</span><span class="cx"> PASS unwrappedKey.extractable is true
</span><del>-PASS unwrappedKey.algorithm.name is 'aes-cbc'
</del><ins>+PASS unwrappedKey.algorithm.name is 'AES-CBC'
</ins><span class="cx"> PASS unwrappedKey.algorithm.length is 128
</span><del>-PASS unwrappedKey.usages is ['encrypt', 'decrypt', 'wrapKey', 'unwrapKey']
</del><ins>+PASS unwrappedKey.usages is ['decrypt', 'encrypt', 'unwrapKey', 'wrapKey']
</ins><span class="cx"> Exporting it...
</span><span class="cx"> PASS bytesToHexString(unwrappedKeyData) is bytesToHexString(keyData)
</span><span class="cx"> PASS successfullyParsed is true
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtleaeskwwrapunwrapaeshtml"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/aes-kw-wrap-unwrap-aes.html (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/aes-kw-wrap-unwrap-aes.html        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/aes-kw-wrap-unwrap-aes.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -39,9 +39,9 @@
</span><span class="cx">     shouldBe(&quot;unwrappedKey.toString()&quot;, &quot;'[object Key]'&quot;);
</span><span class="cx">     shouldBe(&quot;unwrappedKey.type&quot;, &quot;'secret'&quot;);
</span><span class="cx">     shouldBe(&quot;unwrappedKey.extractable&quot;, &quot;true&quot;);
</span><del>-    shouldBe(&quot;unwrappedKey.algorithm.name&quot;, &quot;'aes-cbc'&quot;);
</del><ins>+    shouldBe(&quot;unwrappedKey.algorithm.name&quot;, &quot;'AES-CBC'&quot;);
</ins><span class="cx">     shouldBe(&quot;unwrappedKey.algorithm.length&quot;, &quot;128&quot;);
</span><del>-    shouldBe(&quot;unwrappedKey.usages&quot;, &quot;['encrypt', 'decrypt', 'wrapKey', 'unwrapKey']&quot;);
</del><ins>+    shouldBe(&quot;unwrappedKey.usages&quot;, &quot;['decrypt', 'encrypt', 'unwrapKey', 'wrapKey']&quot;);
</ins><span class="cx"> 
</span><span class="cx">     debug(&quot;Exporting it...&quot;);
</span><span class="cx">     return crypto.subtle.exportKey(&quot;raw&quot;, unwrappedKey);
</span><span class="lines">@@ -61,9 +61,9 @@
</span><span class="cx">     shouldBe(&quot;unwrappedKey.toString()&quot;, &quot;'[object Key]'&quot;);
</span><span class="cx">     shouldBe(&quot;unwrappedKey.type&quot;, &quot;'secret'&quot;);
</span><span class="cx">     shouldBe(&quot;unwrappedKey.extractable&quot;, &quot;true&quot;);
</span><del>-    shouldBe(&quot;unwrappedKey.algorithm.name&quot;, &quot;'aes-cbc'&quot;);
</del><ins>+    shouldBe(&quot;unwrappedKey.algorithm.name&quot;, &quot;'AES-CBC'&quot;);
</ins><span class="cx">     shouldBe(&quot;unwrappedKey.algorithm.length&quot;, &quot;128&quot;);
</span><del>-    shouldBe(&quot;unwrappedKey.usages&quot;, &quot;['encrypt', 'decrypt', 'wrapKey', 'unwrapKey']&quot;);
</del><ins>+    shouldBe(&quot;unwrappedKey.usages&quot;, &quot;['decrypt', 'encrypt', 'unwrapKey', 'wrapKey']&quot;);
</ins><span class="cx"> 
</span><span class="cx">     debug(&quot;Exporting it...&quot;);
</span><span class="cx">     return crypto.subtle.exportKey(&quot;raw&quot;, unwrappedKey);
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtleaespostMessageexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/crypto/subtle/aes-postMessage-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/aes-postMessage-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/crypto/subtle/aes-postMessage-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+Test sending crypto keys via postMessage.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS key.type is 'secret'
+PASS key.extractable is true
+PASS key.algorithm.name is 'AES-CBC'
+PASS key.algorithm.length is 128
+PASS key.usages is [&quot;decrypt&quot;, &quot;encrypt&quot;, &quot;sign&quot;, &quot;verify&quot;]
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtleaespostMessagehtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/crypto/subtle/aes-postMessage.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/aes-postMessage.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/crypto/subtle/aes-postMessage.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,32 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/common.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;script&gt;
+
+description(&quot;Test sending crypto keys via postMessage.&quot;);
+
+jsTestIsAsync = true;
+
+window.addEventListener(&quot;message&quot;, function(evt) {
+    key = evt.data;
+    shouldBe(&quot;key.type&quot;, &quot;'secret'&quot;);
+    shouldBe(&quot;key.extractable&quot;, &quot;true&quot;);
+    shouldBe(&quot;key.algorithm.name&quot;, &quot;'AES-CBC'&quot;);
+    shouldBe(&quot;key.algorithm.length&quot;, &quot;128&quot;);
+    shouldBe(&quot;key.usages&quot;, '[&quot;decrypt&quot;, &quot;encrypt&quot;, &quot;sign&quot;, &quot;verify&quot;]');
+
+    finishJSTest();
+}, false);
+
+importTestKeys().then(function(keys) {
+    postMessage(keys.aesCbc, &quot;*&quot;);
+});
+&lt;/script&gt;
+&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtlehmacgeneratekeyexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/hmac-generate-key-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/hmac-generate-key-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/hmac-generate-key-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -11,14 +11,14 @@
</span><span class="cx"> Generating a key with default length...
</span><span class="cx"> PASS key.type is 'secret'
</span><span class="cx"> PASS key.extractable is true
</span><del>-PASS key.algorithm.name is 'hmac'
</del><ins>+PASS key.algorithm.name is 'HMAC'
</ins><span class="cx"> PASS key.algorithm.length is 64
</span><span class="cx"> PASS key.usages is [&quot;sign&quot;, &quot;verify&quot;]
</span><span class="cx"> 
</span><span class="cx"> Generating a key with custom length...
</span><span class="cx"> PASS key.type is 'secret'
</span><span class="cx"> PASS key.extractable is true
</span><del>-PASS key.algorithm.name is 'hmac'
</del><ins>+PASS key.algorithm.name is 'HMAC'
</ins><span class="cx"> PASS key.algorithm.length is 5
</span><span class="cx"> PASS key.usages is [&quot;sign&quot;]
</span><span class="cx"> PASS successfullyParsed is true
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtlehmacgeneratekeyhtml"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/hmac-generate-key.html (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/hmac-generate-key.html        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/hmac-generate-key.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -26,7 +26,7 @@
</span><span class="cx"> 
</span><span class="cx">     shouldBe(&quot;key.type&quot;, &quot;'secret'&quot;);
</span><span class="cx">     shouldBe(&quot;key.extractable&quot;, &quot;true&quot;);
</span><del>-    shouldBe(&quot;key.algorithm.name&quot;, &quot;'hmac'&quot;);
</del><ins>+    shouldBe(&quot;key.algorithm.name&quot;, &quot;'HMAC'&quot;);
</ins><span class="cx">     shouldBe(&quot;key.algorithm.length&quot;, &quot;64&quot;);
</span><span class="cx">     shouldBe(&quot;key.usages&quot;, '[&quot;sign&quot;, &quot;verify&quot;]');
</span><span class="cx"> 
</span><span class="lines">@@ -37,7 +37,7 @@
</span><span class="cx"> 
</span><span class="cx">     shouldBe(&quot;key.type&quot;, &quot;'secret'&quot;);
</span><span class="cx">     shouldBe(&quot;key.extractable&quot;, &quot;true&quot;);
</span><del>-    shouldBe(&quot;key.algorithm.name&quot;, &quot;'hmac'&quot;);
</del><ins>+    shouldBe(&quot;key.algorithm.name&quot;, &quot;'HMAC'&quot;);
</ins><span class="cx">     shouldBe(&quot;key.algorithm.length&quot;, &quot;5&quot;);
</span><span class="cx">     shouldBe(&quot;key.usages&quot;, '[&quot;sign&quot;]');
</span><span class="cx">     finishJSTest();
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtlehmacimportjwkexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/hmac-import-jwk-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/hmac-import-jwk-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/hmac-import-jwk-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -7,7 +7,7 @@
</span><span class="cx"> 
</span><span class="cx"> PASS key.type is 'secret'
</span><span class="cx"> PASS key.extractable is false
</span><del>-PASS key.algorithm.name is 'hmac'
</del><ins>+PASS key.algorithm.name is 'HMAC'
</ins><span class="cx"> PASS key.algorithm.length is 32
</span><span class="cx"> PASS key.usages is [&quot;sign&quot;, &quot;verify&quot;]
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtlehmacimportjwkhtml"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/hmac-import-jwk.html (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/hmac-import-jwk.html        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/hmac-import-jwk.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -31,7 +31,7 @@
</span><span class="cx"> 
</span><span class="cx">     shouldBe(&quot;key.type&quot;, &quot;'secret'&quot;);
</span><span class="cx">     shouldBe(&quot;key.extractable&quot;, &quot;false&quot;);
</span><del>-    shouldBe(&quot;key.algorithm.name&quot;, &quot;'hmac'&quot;);
</del><ins>+    shouldBe(&quot;key.algorithm.name&quot;, &quot;'HMAC'&quot;);
</ins><span class="cx">     shouldBe(&quot;key.algorithm.length&quot;, &quot;32&quot;);
</span><span class="cx">     shouldBe(&quot;key.usages&quot;, '[&quot;sign&quot;, &quot;verify&quot;]');
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtlehmacpostMessageexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/crypto/subtle/hmac-postMessage-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/hmac-postMessage-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/crypto/subtle/hmac-postMessage-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+Test sending crypto keys via postMessage.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS key.type is 'secret'
+PASS key.extractable is true
+PASS key.algorithm.name is 'HMAC'
+PASS key.algorithm.length is 16
+PASS key.usages is [&quot;decrypt&quot;, &quot;encrypt&quot;, &quot;sign&quot;, &quot;verify&quot;]
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtlehmacpostMessagehtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/crypto/subtle/hmac-postMessage.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/hmac-postMessage.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/crypto/subtle/hmac-postMessage.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,32 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/common.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;script&gt;
+
+description(&quot;Test sending crypto keys via postMessage.&quot;);
+
+jsTestIsAsync = true;
+
+window.addEventListener(&quot;message&quot;, function(evt) {
+    key = evt.data;
+    shouldBe(&quot;key.type&quot;, &quot;'secret'&quot;);
+    shouldBe(&quot;key.extractable&quot;, &quot;true&quot;);
+    shouldBe(&quot;key.algorithm.name&quot;, &quot;'HMAC'&quot;);
+    shouldBe(&quot;key.algorithm.length&quot;, &quot;16&quot;);
+    shouldBe(&quot;key.usages&quot;, '[&quot;decrypt&quot;, &quot;encrypt&quot;, &quot;sign&quot;, &quot;verify&quot;]');
+
+    finishJSTest();
+}, false);
+
+importTestKeys().then(function(keys) {
+    postMessage(keys.hmacSha1, &quot;*&quot;);
+});
+&lt;/script&gt;
+&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtlehmacsignverifyemptykeyexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/hmac-sign-verify-empty-key-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/hmac-sign-verify-empty-key-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/hmac-sign-verify-empty-key-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -6,9 +6,9 @@
</span><span class="cx"> Importing a raw HMAC key from string literal...
</span><span class="cx"> PASS key.type is 'secret'
</span><span class="cx"> PASS key.extractable is true
</span><del>-PASS key.algorithm.name is 'hmac'
</del><ins>+PASS key.algorithm.name is 'HMAC'
</ins><span class="cx"> PASS key.algorithm.length is 0
</span><del>-PASS key.algorithm.hash.name is 'sha-1'
</del><ins>+PASS key.algorithm.hash.name is 'SHA-1'
</ins><span class="cx"> PASS key.usages is ['sign', 'verify']
</span><span class="cx"> Using the key to sign 'foo'...
</span><span class="cx"> PASS bytesToHexString(new Uint8Array(signature)) is 'a3cc770fc033e2cb419d42b64e0081a3bd3be30e'
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtlehmacsignverifyemptykeyhtml"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/hmac-sign-verify-empty-key.html (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/hmac-sign-verify-empty-key.html        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/hmac-sign-verify-empty-key.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -21,9 +21,9 @@
</span><span class="cx">     key = result;
</span><span class="cx">     shouldBe(&quot;key.type&quot;, &quot;'secret'&quot;);
</span><span class="cx">     shouldBe(&quot;key.extractable&quot;, &quot;true&quot;);
</span><del>-    shouldBe(&quot;key.algorithm.name&quot;, &quot;'hmac'&quot;);
</del><ins>+    shouldBe(&quot;key.algorithm.name&quot;, &quot;'HMAC'&quot;);
</ins><span class="cx">     shouldBe(&quot;key.algorithm.length&quot;, &quot;0&quot;); // See &lt;https://www.w3.org/Bugs/Public/show_bug.cgi?id=23098&gt;.
</span><del>-    shouldBe(&quot;key.algorithm.hash.name&quot;, &quot;'sha-1'&quot;);
</del><ins>+    shouldBe(&quot;key.algorithm.hash.name&quot;, &quot;'SHA-1'&quot;);
</ins><span class="cx">     shouldBe(&quot;key.usages&quot;, &quot;['sign', 'verify']&quot;);
</span><span class="cx"> 
</span><span class="cx">     debug(&quot;Using the key to sign 'foo'...&quot;);
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtlehmacsignverifyexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/hmac-sign-verify-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/hmac-sign-verify-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/hmac-sign-verify-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -6,9 +6,9 @@
</span><span class="cx"> Importing a raw HMAC key from string literal...
</span><span class="cx"> PASS key.type is 'secret'
</span><span class="cx"> PASS key.extractable is true
</span><del>-PASS key.algorithm.name is 'hmac'
</del><ins>+PASS key.algorithm.name is 'HMAC'
</ins><span class="cx"> PASS key.algorithm.length is 1
</span><del>-PASS key.algorithm.hash.name is 'sha-1'
</del><ins>+PASS key.algorithm.hash.name is 'SHA-1'
</ins><span class="cx"> PASS key.usages is ['sign', 'verify']
</span><span class="cx"> Using the key to sign 'foo'...
</span><span class="cx"> PASS bytesToHexString(new Uint8Array(signature)) is 'bebbc02e46b0f81183f40c25dce23e5045d65519'
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtlehmacsignverifyhtml"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/hmac-sign-verify.html (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/hmac-sign-verify.html        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/hmac-sign-verify.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -21,9 +21,9 @@
</span><span class="cx">     key = result;
</span><span class="cx">     shouldBe(&quot;key.type&quot;, &quot;'secret'&quot;);
</span><span class="cx">     shouldBe(&quot;key.extractable&quot;, &quot;true&quot;);
</span><del>-    shouldBe(&quot;key.algorithm.name&quot;, &quot;'hmac'&quot;);
</del><ins>+    shouldBe(&quot;key.algorithm.name&quot;, &quot;'HMAC'&quot;);
</ins><span class="cx">     shouldBe(&quot;key.algorithm.length&quot;, &quot;1&quot;); // See &lt;https://www.w3.org/Bugs/Public/show_bug.cgi?id=23098&gt;.
</span><del>-    shouldBe(&quot;key.algorithm.hash.name&quot;, &quot;'sha-1'&quot;);
</del><ins>+    shouldBe(&quot;key.algorithm.hash.name&quot;, &quot;'SHA-1'&quot;);
</ins><span class="cx">     shouldBe(&quot;key.usages&quot;, &quot;['sign', 'verify']&quot;);
</span><span class="cx"> 
</span><span class="cx">     debug(&quot;Using the key to sign 'foo'...&quot;);
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtlejwkimportusevaluesexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/jwk-import-use-values-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/jwk-import-use-values-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/jwk-import-use-values-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -10,7 +10,7 @@
</span><span class="cx"> PASS key.usages is [&quot;decrypt&quot;]
</span><span class="cx"> 
</span><span class="cx"> enconly,deconly:
</span><del>-PASS key.usages is [&quot;encrypt&quot;,&quot;decrypt&quot;]
</del><ins>+PASS key.usages is [&quot;decrypt&quot;,&quot;encrypt&quot;]
</ins><span class="cx"> 
</span><span class="cx"> wrap:
</span><span class="cx"> PASS key.usages is [&quot;wrapKey&quot;]
</span><span class="lines">@@ -19,13 +19,13 @@
</span><span class="cx"> PASS key.usages is [&quot;unwrapKey&quot;]
</span><span class="cx"> 
</span><span class="cx"> wrap,unwrap:
</span><del>-PASS key.usages is [&quot;wrapKey&quot;,&quot;unwrapKey&quot;]
</del><ins>+PASS key.usages is [&quot;unwrapKey&quot;,&quot;wrapKey&quot;]
</ins><span class="cx"> 
</span><span class="cx"> enconly,deconly,wrap:
</span><del>-PASS key.usages is [&quot;encrypt&quot;,&quot;decrypt&quot;,&quot;wrapKey&quot;]
</del><ins>+PASS key.usages is [&quot;decrypt&quot;,&quot;encrypt&quot;,&quot;wrapKey&quot;]
</ins><span class="cx"> 
</span><span class="cx"> enc:
</span><del>-PASS key.usages is [&quot;encrypt&quot;,&quot;decrypt&quot;,&quot;wrapKey&quot;,&quot;unwrapKey&quot;]
</del><ins>+PASS key.usages is [&quot;decrypt&quot;,&quot;encrypt&quot;,&quot;unwrapKey&quot;,&quot;wrapKey&quot;]
</ins><span class="cx"> 
</span><span class="cx"> sigonly:
</span><span class="cx"> PASS key.usages is [&quot;sign&quot;]
</span><span class="lines">@@ -49,7 +49,7 @@
</span><span class="cx"> PASS key.usages is [&quot;encrypt&quot;]
</span><span class="cx"> 
</span><span class="cx"> enconly,,deconly:
</span><del>-PASS key.usages is [&quot;encrypt&quot;,&quot;decrypt&quot;]
</del><ins>+PASS key.usages is [&quot;decrypt&quot;,&quot;encrypt&quot;]
</ins><span class="cx"> 
</span><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtlejwkimportusevalueshtml"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/jwk-import-use-values.html (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/jwk-import-use-values.html        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/jwk-import-use-values.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -54,12 +54,12 @@
</span><span class="cx"> Promise.all([
</span><span class="cx">     testWithAESCBC([&quot;encrypt&quot;], &quot;enconly&quot;),
</span><span class="cx">     testWithAESCBC([&quot;decrypt&quot;], &quot;deconly&quot;),
</span><del>-    testWithAESCBC([&quot;encrypt&quot;, &quot;decrypt&quot;], &quot;enconly,deconly&quot;),
</del><ins>+    testWithAESCBC([&quot;decrypt&quot;, &quot;encrypt&quot;], &quot;enconly,deconly&quot;),
</ins><span class="cx">     testWithAESCBC([&quot;wrapKey&quot;], &quot;wrap&quot;),
</span><span class="cx">     testWithAESCBC([&quot;unwrapKey&quot;], &quot;unwrap&quot;),
</span><del>-    testWithAESCBC([&quot;wrapKey&quot;, &quot;unwrapKey&quot;], &quot;wrap,unwrap&quot;),
-    testWithAESCBC([&quot;encrypt&quot;, &quot;decrypt&quot;, &quot;wrapKey&quot;], &quot;enconly,deconly,wrap&quot;),
-    testWithAESCBC([&quot;encrypt&quot;, &quot;decrypt&quot;, &quot;wrapKey&quot;, &quot;unwrapKey&quot;], &quot;enc&quot;),
</del><ins>+    testWithAESCBC([&quot;unwrapKey&quot;, &quot;wrapKey&quot;], &quot;wrap,unwrap&quot;),
+    testWithAESCBC([&quot;decrypt&quot;, &quot;encrypt&quot;, &quot;wrapKey&quot;], &quot;enconly,deconly,wrap&quot;),
+    testWithAESCBC([&quot;decrypt&quot;, &quot;encrypt&quot;, &quot;unwrapKey&quot;, &quot;wrapKey&quot;], &quot;enc&quot;),
</ins><span class="cx">     testWithHMAC([&quot;sign&quot;], &quot;sigonly&quot;),
</span><span class="cx">     testWithHMAC([&quot;verify&quot;], &quot;vfyonly&quot;),
</span><span class="cx">     testWithHMAC([&quot;sign&quot;, &quot;verify&quot;], &quot;sig&quot;),
</span><span class="lines">@@ -69,7 +69,7 @@
</span><span class="cx">     testWithAESCBC([], &quot;enconly &quot;),
</span><span class="cx">     testWithAESCBC([], &quot;EncOnly&quot;),
</span><span class="cx">     testWithAESCBC([&quot;encrypt&quot;], &quot;enconly, deconly&quot;),
</span><del>-    testWithAESCBC([&quot;encrypt&quot;, &quot;decrypt&quot;], &quot;enconly,,deconly&quot;),
</del><ins>+    testWithAESCBC([&quot;decrypt&quot;,&quot;encrypt&quot;], &quot;enconly,,deconly&quot;),
</ins><span class="cx"> 
</span><span class="cx"> ]).then(function() { finishJSTest(); } );
</span><span class="cx"> &lt;/script&gt;
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtlepostMessageworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/crypto/subtle/postMessage-worker-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/postMessage-worker-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/crypto/subtle/postMessage-worker-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,15 @@
</span><ins>+Test sending crypto keys via postMessage to a worker.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS All checks passed in worker
+PASS key.type is 'secret'
+PASS key.extractable is true
+PASS key.algorithm.name is 'HMAC'
+PASS key.algorithm.length is 16
+PASS key.usages is [&quot;decrypt&quot;, &quot;encrypt&quot;, &quot;sign&quot;, &quot;verify&quot;]
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtlepostMessageworkerhtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/crypto/subtle/postMessage-worker.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/postMessage-worker.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/crypto/subtle/postMessage-worker.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,36 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/common.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;script&gt;
+
+description(&quot;Test sending crypto keys via postMessage to a worker.&quot;);
+
+jsTestIsAsync = true;
+
+importTestKeys().then(function(keys) {
+    var worker = new Worker(&quot;resources/postMessage-worker.js&quot;);
+    worker.onmessage = function(evt) {
+        if (!evt.data.result) {
+            testFailed(&quot;Check failed in worker: &quot; + evt.data.message);
+        } else {
+            testPassed(&quot;All checks passed in worker&quot;);
+            key = evt.data.key;
+            shouldBe(&quot;key.type&quot;, &quot;'secret'&quot;);
+            shouldBe(&quot;key.extractable&quot;, &quot;true&quot;);
+            shouldBe(&quot;key.algorithm.name&quot;, &quot;'HMAC'&quot;);
+            shouldBe(&quot;key.algorithm.length&quot;, &quot;16&quot;);
+            shouldBe(&quot;key.usages&quot;, '[&quot;decrypt&quot;, &quot;encrypt&quot;, &quot;sign&quot;, &quot;verify&quot;]');
+        }
+        finishJSTest();
+    }
+    worker.postMessage(keys.hmacSha1);
+});
+&lt;/script&gt;
+&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtleresourcespostMessageworkerjs"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/crypto/subtle/resources/postMessage-worker.js (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/resources/postMessage-worker.js                                (rev 0)
+++ branches/jsCStack/LayoutTests/crypto/subtle/resources/postMessage-worker.js        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+onmessage = function(evt)
+{
+    var key = evt.data;
+    if (key.type != 'secret')
+        postMessage({ result:false, message:'key.type should be &quot;secret&quot;' });
+    else if (!key.extractable)
+        postMessage({ result:false, message:'key.extractable should be true' });
+    else if (key.algorithm.name != &quot;HMAC&quot;)
+        postMessage({ result:false, message:'key.algorithm.name should be &quot;HMAC&quot;' });
+    else if (key.usages.toString() != &quot;decrypt,encrypt,sign,verify&quot;)
+        postMessage({ result:false, message:'key.usages should be [&quot;decrypt&quot;, &quot;encrypt&quot;, &quot;sign&quot;, &quot;verify&quot;]' });
+    else
+        postMessage({ result:true, key:key });
+}
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtlersaoaepgeneratenonextractablekeyexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/crypto/subtle/rsa-oaep-generate-non-extractable-key-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/rsa-oaep-generate-non-extractable-key-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/crypto/subtle/rsa-oaep-generate-non-extractable-key-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,23 @@
</span><ins>+Test that even when non-extractability is requested, the public key is still extractable.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+Generating a key pair...
+PASS keyPair.toString() is '[object KeyPair]'
+PASS keyPair.publicKey.type is 'public'
+PASS keyPair.publicKey.extractable is true
+PASS keyPair.publicKey.algorithm.name is 'RSA-OAEP'
+PASS keyPair.publicKey.algorithm.modulusLength is 2048
+PASS bytesToHexString(keyPair.publicKey.algorithm.publicExponent) is '010001'
+PASS keyPair.publicKey.algorithm.hash is undefined.
+PASS keyPair.privateKey.type is 'private'
+PASS keyPair.privateKey.extractable is false
+PASS keyPair.privateKey.algorithm.name is 'RSA-OAEP'
+PASS keyPair.privateKey.algorithm.modulusLength is 2048
+PASS bytesToHexString(keyPair.privateKey.algorithm.publicExponent) is '010001'
+PASS keyPair.privateKey.algorithm.hash is undefined.
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtlersaoaepgeneratenonextractablekeyhtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/crypto/subtle/rsa-oaep-generate-non-extractable-key.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/rsa-oaep-generate-non-extractable-key.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/crypto/subtle/rsa-oaep-generate-non-extractable-key.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,47 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/common.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+
+&lt;script&gt;
+description(&quot;Test that even when non-extractability is requested, the public key is still extractable.&quot;);
+
+jsTestIsAsync = true;
+
+var algorithmKeyGen = {
+    name: &quot;RSA-OAEP&quot;,
+    // RsaKeyGenParams
+    modulusLength: 2048,
+    publicExponent: new Uint8Array([0x01, 0x00, 0x01]),  // Equivalent to 65537
+};
+var nonExtractable = false;
+
+debug(&quot;Generating a key pair...&quot;);
+crypto.subtle.generateKey(algorithmKeyGen, nonExtractable, []).then(function(result) {
+    keyPair = result;
+    shouldBe(&quot;keyPair.toString()&quot;, &quot;'[object KeyPair]'&quot;);
+    shouldBe(&quot;keyPair.publicKey.type&quot;, &quot;'public'&quot;);
+    shouldBe(&quot;keyPair.publicKey.extractable&quot;, &quot;true&quot;);
+    shouldBe(&quot;keyPair.publicKey.algorithm.name&quot;, &quot;'RSA-OAEP'&quot;);
+    shouldBe(&quot;keyPair.publicKey.algorithm.modulusLength&quot;, &quot;2048&quot;);
+    shouldBe(&quot;bytesToHexString(keyPair.publicKey.algorithm.publicExponent)&quot;, &quot;'010001'&quot;);
+    shouldBeUndefined(&quot;keyPair.publicKey.algorithm.hash&quot;);
+    shouldBe(&quot;keyPair.privateKey.type&quot;, &quot;'private'&quot;);
+    shouldBe(&quot;keyPair.privateKey.extractable&quot;, &quot;false&quot;);
+    shouldBe(&quot;keyPair.privateKey.algorithm.name&quot;, &quot;'RSA-OAEP'&quot;);
+    shouldBe(&quot;keyPair.privateKey.algorithm.modulusLength&quot;, &quot;2048&quot;);
+    shouldBe(&quot;bytesToHexString(keyPair.privateKey.algorithm.publicExponent)&quot;, &quot;'010001'&quot;);
+    shouldBeUndefined(&quot;keyPair.privateKey.algorithm.hash&quot;);
+
+    finishJSTest();
+});
+&lt;/script&gt;
+
+&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtlersaoaepkeymanipulationexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/rsa-oaep-key-manipulation-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/rsa-oaep-key-manipulation-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/rsa-oaep-key-manipulation-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -6,12 +6,12 @@
</span><span class="cx"> Generating a key pair...
</span><span class="cx"> PASS keyPair.toString() is '[object KeyPair]'
</span><span class="cx"> PASS keyPair.publicKey.type is 'public'
</span><del>-PASS keyPair.publicKey.algorithm.name is 'rsa-oaep'
</del><ins>+PASS keyPair.publicKey.algorithm.name is 'RSA-OAEP'
</ins><span class="cx"> PASS keyPair.publicKey.algorithm.modulusLength is 2048
</span><span class="cx"> PASS bytesToHexString(keyPair.publicKey.algorithm.publicExponent) is '010001'
</span><span class="cx"> PASS keyPair.publicKey.algorithm.hash is undefined.
</span><span class="cx"> PASS keyPair.privateKey.type is 'private'
</span><del>-PASS keyPair.privateKey.algorithm.name is 'rsa-oaep'
</del><ins>+PASS keyPair.privateKey.algorithm.name is 'RSA-OAEP'
</ins><span class="cx"> PASS keyPair.privateKey.algorithm.modulusLength is 2048
</span><span class="cx"> PASS bytesToHexString(keyPair.privateKey.algorithm.publicExponent) is '010001'
</span><span class="cx"> PASS keyPair.privateKey.algorithm.hash is undefined.
</span><span class="lines">@@ -33,12 +33,12 @@
</span><span class="cx"> 
</span><span class="cx"> Importing it back...
</span><span class="cx"> PASS exportedPublicKey.type is 'public'
</span><del>-PASS exportedPublicKey.algorithm.name is 'rsa-oaep'
</del><ins>+PASS exportedPublicKey.algorithm.name is 'RSA-OAEP'
</ins><span class="cx"> PASS exportedPublicKey.algorithm.modulusLength is 2048
</span><span class="cx"> PASS bytesToHexString(exportedPublicKey.algorithm.publicExponent) is '010001'
</span><del>-PASS exportedPublicKey.algorithm.hash.name is 'sha-1'
</del><ins>+PASS exportedPublicKey.algorithm.hash.name is 'SHA-1'
</ins><span class="cx"> PASS exportedPublicKey.extractable is true
</span><del>-PASS exportedPublicKey.usages is ['encrypt','decrypt','wrapKey','unwrapKey']
</del><ins>+PASS exportedPublicKey.usages is ['decrypt','encrypt','unwrapKey','wrapKey']
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtlersaoaepkeymanipulationhtml"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/rsa-oaep-key-manipulation.html (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/rsa-oaep-key-manipulation.html        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/rsa-oaep-key-manipulation.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -26,12 +26,12 @@
</span><span class="cx">     keyPair = result;
</span><span class="cx">     shouldBe(&quot;keyPair.toString()&quot;, &quot;'[object KeyPair]'&quot;);
</span><span class="cx">     shouldBe(&quot;keyPair.publicKey.type&quot;, &quot;'public'&quot;);
</span><del>-    shouldBe(&quot;keyPair.publicKey.algorithm.name&quot;, &quot;'rsa-oaep'&quot;);
</del><ins>+    shouldBe(&quot;keyPair.publicKey.algorithm.name&quot;, &quot;'RSA-OAEP'&quot;);
</ins><span class="cx">     shouldBe(&quot;keyPair.publicKey.algorithm.modulusLength&quot;, &quot;2048&quot;);
</span><span class="cx">     shouldBe(&quot;bytesToHexString(keyPair.publicKey.algorithm.publicExponent)&quot;, &quot;'010001'&quot;);
</span><span class="cx">     shouldBeUndefined(&quot;keyPair.publicKey.algorithm.hash&quot;);
</span><span class="cx">     shouldBe(&quot;keyPair.privateKey.type&quot;, &quot;'private'&quot;);
</span><del>-    shouldBe(&quot;keyPair.privateKey.algorithm.name&quot;, &quot;'rsa-oaep'&quot;);
</del><ins>+    shouldBe(&quot;keyPair.privateKey.algorithm.name&quot;, &quot;'RSA-OAEP'&quot;);
</ins><span class="cx">     shouldBe(&quot;keyPair.privateKey.algorithm.modulusLength&quot;, &quot;2048&quot;);
</span><span class="cx">     shouldBe(&quot;bytesToHexString(keyPair.privateKey.algorithm.publicExponent)&quot;, &quot;'010001'&quot;);
</span><span class="cx">     shouldBeUndefined(&quot;keyPair.privateKey.algorithm.hash&quot;);
</span><span class="lines">@@ -65,12 +65,12 @@
</span><span class="cx"> }).then(function(result) {
</span><span class="cx">     exportedPublicKey = result;
</span><span class="cx">     shouldBe(&quot;exportedPublicKey.type&quot;, &quot;'public'&quot;);
</span><del>-    shouldBe(&quot;exportedPublicKey.algorithm.name&quot;, &quot;'rsa-oaep'&quot;);
</del><ins>+    shouldBe(&quot;exportedPublicKey.algorithm.name&quot;, &quot;'RSA-OAEP'&quot;);
</ins><span class="cx">     shouldBe(&quot;exportedPublicKey.algorithm.modulusLength&quot;, &quot;2048&quot;);
</span><span class="cx">     shouldBe(&quot;bytesToHexString(exportedPublicKey.algorithm.publicExponent)&quot;, &quot;'010001'&quot;);
</span><del>-    shouldBe(&quot;exportedPublicKey.algorithm.hash.name&quot;, &quot;'sha-1'&quot;);
</del><ins>+    shouldBe(&quot;exportedPublicKey.algorithm.hash.name&quot;, &quot;'SHA-1'&quot;);
</ins><span class="cx">     shouldBe(&quot;exportedPublicKey.extractable&quot;, &quot;true&quot;);
</span><del>-    shouldBe(&quot;exportedPublicKey.usages&quot;, &quot;['encrypt','decrypt','wrapKey','unwrapKey']&quot;);
</del><ins>+    shouldBe(&quot;exportedPublicKey.usages&quot;, &quot;['decrypt','encrypt','unwrapKey','wrapKey']&quot;);
</ins><span class="cx"> 
</span><span class="cx">     finishJSTest();
</span><span class="cx"> });
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtlersaoaepwrapunwrapaesexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/rsa-oaep-wrap-unwrap-aes-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/rsa-oaep-wrap-unwrap-aes-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/rsa-oaep-wrap-unwrap-aes-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -11,9 +11,9 @@
</span><span class="cx"> PASS unwrappedKey.toString() is '[object Key]'
</span><span class="cx"> PASS unwrappedKey.type is 'secret'
</span><span class="cx"> PASS unwrappedKey.extractable is true
</span><del>-PASS unwrappedKey.algorithm.name is 'aes-cbc'
</del><ins>+PASS unwrappedKey.algorithm.name is 'AES-CBC'
</ins><span class="cx"> PASS unwrappedKey.algorithm.length is 256
</span><del>-PASS unwrappedKey.usages is ['encrypt', 'decrypt']
</del><ins>+PASS unwrappedKey.usages is ['decrypt', 'encrypt']
</ins><span class="cx"> Exporting it...
</span><span class="cx"> PASS bytesToHexString(unwrappedKeyData) is bytesToHexString(aesKeyData)
</span><span class="cx"> 
</span><span class="lines">@@ -23,9 +23,9 @@
</span><span class="cx"> PASS unwrappedKey.toString() is '[object Key]'
</span><span class="cx"> PASS unwrappedKey.type is 'secret'
</span><span class="cx"> PASS unwrappedKey.extractable is true
</span><del>-PASS unwrappedKey.algorithm.name is 'aes-cbc'
</del><ins>+PASS unwrappedKey.algorithm.name is 'AES-CBC'
</ins><span class="cx"> PASS unwrappedKey.algorithm.length is 256
</span><del>-PASS unwrappedKey.usages is ['encrypt', 'decrypt']
</del><ins>+PASS unwrappedKey.usages is ['decrypt', 'encrypt']
</ins><span class="cx"> Exporting it...
</span><span class="cx"> PASS bytesToHexString(unwrappedKeyData) is bytesToHexString(aesKeyData)
</span><span class="cx"> PASS successfullyParsed is true
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtlersaoaepwrapunwrapaeshtml"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/rsa-oaep-wrap-unwrap-aes.html (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/rsa-oaep-wrap-unwrap-aes.html        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/rsa-oaep-wrap-unwrap-aes.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -62,9 +62,9 @@
</span><span class="cx">     shouldBe(&quot;unwrappedKey.toString()&quot;, &quot;'[object Key]'&quot;);
</span><span class="cx">     shouldBe(&quot;unwrappedKey.type&quot;, &quot;'secret'&quot;);
</span><span class="cx">     shouldBe(&quot;unwrappedKey.extractable&quot;, &quot;true&quot;);
</span><del>-    shouldBe(&quot;unwrappedKey.algorithm.name&quot;, &quot;'aes-cbc'&quot;);
</del><ins>+    shouldBe(&quot;unwrappedKey.algorithm.name&quot;, &quot;'AES-CBC'&quot;);
</ins><span class="cx">     shouldBe(&quot;unwrappedKey.algorithm.length&quot;, &quot;256&quot;);
</span><del>-    shouldBe(&quot;unwrappedKey.usages&quot;, &quot;['encrypt', 'decrypt']&quot;);
</del><ins>+    shouldBe(&quot;unwrappedKey.usages&quot;, &quot;['decrypt', 'encrypt']&quot;);
</ins><span class="cx"> 
</span><span class="cx">     debug(&quot;Exporting it...&quot;);
</span><span class="cx">     return crypto.subtle.exportKey(&quot;raw&quot;, unwrappedKey);
</span><span class="lines">@@ -85,9 +85,9 @@
</span><span class="cx">     shouldBe(&quot;unwrappedKey.toString()&quot;, &quot;'[object Key]'&quot;);
</span><span class="cx">     shouldBe(&quot;unwrappedKey.type&quot;, &quot;'secret'&quot;);
</span><span class="cx">     shouldBe(&quot;unwrappedKey.extractable&quot;, &quot;true&quot;);
</span><del>-    shouldBe(&quot;unwrappedKey.algorithm.name&quot;, &quot;'aes-cbc'&quot;);
</del><ins>+    shouldBe(&quot;unwrappedKey.algorithm.name&quot;, &quot;'AES-CBC'&quot;);
</ins><span class="cx">     shouldBe(&quot;unwrappedKey.algorithm.length&quot;, &quot;256&quot;);
</span><del>-    shouldBe(&quot;unwrappedKey.usages&quot;, &quot;['encrypt', 'decrypt']&quot;);
</del><ins>+    shouldBe(&quot;unwrappedKey.usages&quot;, &quot;['decrypt', 'encrypt']&quot;);
</ins><span class="cx"> 
</span><span class="cx">     debug(&quot;Exporting it...&quot;);
</span><span class="cx">     return crypto.subtle.exportKey(&quot;raw&quot;, unwrappedKey);
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtlersapostMessageexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/crypto/subtle/rsa-postMessage-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/rsa-postMessage-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/crypto/subtle/rsa-postMessage-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+Test sending crypto keys via postMessage.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+Key received in a message:
+PASS key.type is 'private'
+PASS key.extractable is true
+PASS key.algorithm.name is 'RSASSA-PKCS1-v1_5'
+PASS key.algorithm.modulusLength is 2048
+PASS bytesToHexString(key.algorithm.publicExponent) is '010001'
+PASS key.usages is [&quot;sign&quot;, &quot;verify&quot;]
+
+Exported back to JWK:
+PASS exportedJWK.kty is 'RSA'
+PASS exportedJWK.alg is 'RS256'
+PASS exportedJWK.ext is true
+PASS exportedJWK.use is 'sig'
+PASS exportedJWK.n is privateKeyJSON.n
+PASS exportedJWK.e is privateKeyJSON.e
+PASS exportedJWK.d is privateKeyJSON.d
+PASS exportedJWK.p is privateKeyJSON.p
+PASS exportedJWK.q is privateKeyJSON.q
+PASS exportedJWK.dp is privateKeyJSON.dp
+PASS exportedJWK.dq is privateKeyJSON.dq
+PASS exportedJWK.qi is privateKeyJSON.qi
+
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtlersapostMessagehtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/crypto/subtle/rsa-postMessage.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/rsa-postMessage.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/crypto/subtle/rsa-postMessage.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,65 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/common.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;script&gt;
+
+description(&quot;Test sending crypto keys via postMessage.&quot;);
+
+jsTestIsAsync = true;
+
+var privateKeyJSON = {
+    kty: &quot;RSA&quot;,
+    alg: &quot;RS256&quot;,
+    n: &quot;rcCUCv7Oc1HVam1DIhCzqknThWawOp8QLk8Ziy2p10ByjQFCajoFiyuAWl-R1WXZaf4xitLRracT9agpzIzc-MbLSHIGgWQGO21lGiImy5ftZ-D8bHAqRz2y15pzD4c4CEou7XSSLDoRnR0QG5MsDhD6s2gV9mwHkrtkCxtMWdBi-77as8wGmlNRldcOSgZDLK8UnCSgA1OguZ989bFyc8tOOEIb0xUSfPSz3LPSCnyYz68aDjmKVeNH-ig857OScyWbGyEy3Biw64qun3juUlNWsJ3zngkOdteYWytx5Qr4XKNs6R-Myyq72KUp02mJDZiiyiglxML_i3-_CeecCw&quot;,
+    e: &quot;AQAB&quot;,
+    d: &quot;eNLS37aCz7RXSNPD_DtLBJ6j5T8cSxdzRBCjPaI6WcGqJp16lq3UTwuoDLAqlA9oGYm238dsIWpuucP_lQtbWe-7SpxoI6_vmYGf7YVUHv1-DF9qiOmSrMmdxMnVOzYXY8RaT6thPjn_J5cfLV2xI_LwsrMtmpdSyNlgX0zTUhwtuahgAKMEChYjH2EnjHdHw6sY2-wApdcQI7ULE0oo5RzbQZpmuhcN9hiBc0L3hhF0qo50mbl02_65_GQ7DpVkXBxNgRBLzlPabmzzG2oAhfefLgYmSC1opaCkXE6vRWQNWNL45RZNZFYM3uoJghOMqGeocM0BpjdChHrPOlFvSQ&quot;,
+    p: &quot;4miTuAjKMeH5uJ5KB397QUwhbkYEgSbcA2mifmSkvE2018gb55qkBHK1eVryf1_m43LNlc6O_ak6gfzdZIZvS5NCGjPl0q09plUpu8qFOSspBwA67qGH76lFlZLn_d4yglS7wfLru4_5Ys8qLLs-DqVLviwposOnyyWqwM5AXp0&quot;,
+    q: &quot;xHYrzkivtmnz_sGchnWGc0q-pDOkKicptRpv2pMFIIXxnFX5aMeEXIZjVujXtwUy1UlFIN2GZJSvy5KJ79mu_XyNnFHMzedH-A3ee3u8h1UUrZF-vUu1_e4U_x67NN1dedzUSKynN7pFl3OkuShMBWGV-cwzOPdcVAfVuZlxUMc&quot;,
+    dp: &quot;fBzDzYDUBmBQGop7Hn0dvf_T27V6RqpctWo074CQZcFbP2atFVtKSj3viWT3xid2VHzcgiDHdfpM3nEVlEO1wwIonGCSvdjGEOZiiFVOjrZAOVxA8guOjyyFvqbXke06VwPIIVvfKeSU2zuhbP__1tt6F_fxow4Kb2xonGT0GGk&quot;,
+    dq: &quot;jmE2DiIPdhwDgLXAQpIaBqQ81bO3XfVT_LRULAwwwwlPuQV148H04zlh9TJ6Y2GZHYokV1U0eOBpJxfkb7dLYtpJpuiBjRf4yIUEoGlkkI_QlJnFSFr-YjGRdfNHqWBkxlSMZL770R9mIATndGkH7z5x-r9KwBZFC4FCG2hg_zE&quot;,
+    qi: &quot;YCX_pLwbMBA1ThVH0WcwmnytqNcrMCEwTm7ByA2eU6nWbQrULvf7m9_kzfLUcjsnpAVlBQG5JMXMy0Sq4ptwbywsa5-G8KAOOOR2L3v4hC-Eys9ftgFM_3i0o40eeQH4b3haPbntrIeMg8IzlOuVYKf9-2QuKDoWeRdd7NsdxTk&quot;
+};
+
+window.addEventListener(&quot;message&quot;, function(evt) {
+    debug(&quot;Key received in a message:&quot;);
+    key = evt.data;
+    shouldBe(&quot;key.type&quot;, &quot;'private'&quot;);
+    shouldBe(&quot;key.extractable&quot;, &quot;true&quot;);
+    shouldBe(&quot;key.algorithm.name&quot;, &quot;'RSASSA-PKCS1-v1_5'&quot;);
+    shouldBe(&quot;key.algorithm.modulusLength&quot;, &quot;2048&quot;);
+    shouldBe(&quot;bytesToHexString(key.algorithm.publicExponent)&quot;, &quot;'010001'&quot;);
+    shouldBe(&quot;key.usages&quot;, '[&quot;sign&quot;, &quot;verify&quot;]');
+
+    crypto.subtle.exportKey(&quot;jwk&quot;, key).then(function(result) {
+        exportedJWK = JSON.parse(bytesToASCIIString(result));
+        debug(&quot;\nExported back to JWK:&quot;);
+        shouldBe(&quot;exportedJWK.kty&quot;, &quot;'RSA'&quot;);
+        shouldBe(&quot;exportedJWK.alg&quot;, &quot;'RS256'&quot;);
+        shouldBe(&quot;exportedJWK.ext&quot;, &quot;true&quot;);
+        shouldBe(&quot;exportedJWK.use&quot;, &quot;'sig'&quot;);
+        shouldBe(&quot;exportedJWK.n&quot;, &quot;privateKeyJSON.n&quot;);
+        shouldBe(&quot;exportedJWK.e&quot;, &quot;privateKeyJSON.e&quot;);
+        shouldBe(&quot;exportedJWK.d&quot;, &quot;privateKeyJSON.d&quot;);
+        shouldBe(&quot;exportedJWK.p&quot;, &quot;privateKeyJSON.p&quot;);
+        shouldBe(&quot;exportedJWK.q&quot;, &quot;privateKeyJSON.q&quot;);
+        shouldBe(&quot;exportedJWK.dp&quot;, &quot;privateKeyJSON.dp&quot;);
+        shouldBe(&quot;exportedJWK.dq&quot;, &quot;privateKeyJSON.dq&quot;);
+        shouldBe(&quot;exportedJWK.qi&quot;, &quot;privateKeyJSON.qi&quot;);
+        debug(&quot;&quot;);
+
+        finishJSTest();
+    });
+}, false);
+
+crypto.subtle.importKey(&quot;jwk&quot;, asciiToUint8Array(JSON.stringify(privateKeyJSON)), null, true, [&quot;sign&quot;, &quot;verify&quot;]).then(function(result) {
+    postMessage(result, &quot;*&quot;);
+});
+&lt;/script&gt;
+&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtlersaespkcs1v1_5decryptexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/crypto/subtle/rsaes-pkcs1-v1_5-decrypt-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/rsaes-pkcs1-v1_5-decrypt-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/crypto/subtle/rsaes-pkcs1-v1_5-decrypt-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+Test decrypting a known message with RSAES-PKCS1-v1_5.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+Importing an RSA key...
+Decrypting...
+PASS bytesToHexString(new Uint8Array(message)) is '2aacec86f423dd925ec158822a748cbe6c31a0'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtlersaespkcs1v1_5decrypthtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/crypto/subtle/rsaes-pkcs1-v1_5-decrypt.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/rsaes-pkcs1-v1_5-decrypt.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/crypto/subtle/rsaes-pkcs1-v1_5-decrypt.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,49 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/common.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+
+&lt;script&gt;
+description(&quot;Test decrypting a known message with RSAES-PKCS1-v1_5.&quot;);
+
+jsTestIsAsync = true;
+
+var privateKeyJSON = {
+    kty: &quot;RSA&quot;,
+    alg: &quot;RSA1_5&quot;,
+    n: Base64URL.stringify(hexStringToUint8Array(&quot;dcfa10ffa74665aeef870974ea99b2ce54547c67f42aaa6dd01a2ed31fd2c242af5d960b1f896efba3543d6554b7b12687a5c688568f32e026c532d25993b97a7c2842ec2b8e1235eee2414d25806c6fbae438954eba9d2755dffeeb1b47700957815a8a233f97b1a2c714b3e2be2e42d8be30b1961582ea9948910e0c797c50fc4bb455f0fc45e5e34e6396ac5b2d46239365c7f3daaf0909400d61cf9e0ca8083eaf335a6fceb6863c1cc0cf5a171aff35d97ecb60ef251c7ec2c8a588361dc41266a4b7ed38b026ce0d53786449dbb11a06ea33ccf1eca575201ed1aa473ed1187ec1d8a744ea345bed7ea00ee4e81bba4648601dd537dc91015d31f0c2c1&quot;)),
+    e: Base64URL.stringify(hexStringToUint8Array(&quot;010001&quot;)),
+    d: Base64URL.stringify(hexStringToUint8Array(&quot;21950851cdf25320318b305afa0f371f07ae5a44b314ebd729f5dcb15da7fa3947acdd915daed574bd16df88bf85f61060b387172fae6e01262b3864c2d3c22f94e04a8159422b4ed279c48a4c9d767d4966071a5bbf5d043e16ff46ec1ba0716f00bbc97bff5d5693e214e99c9721f12b3ec6282ae2a485721b96ddcf7403fa037d0c57ab463c448de5cc12265add886d311ea8d8a5903fa56c5f1c9cf2eb11cb657a1a7d3e41352dc3e686898c4ce4305e8b638e1b08a2a86cc9eb9866f3499ac77b6136b81cb276d614cfeb7b6ed3f3bc775e46c00066ebeee2cff7166b57520598947ff6210320b288fb4f2c3f8fe97b279414ebf7203000a19fc0424875&quot;)),
+    p: Base64URL.stringify(hexStringToUint8Array(&quot;f123bfe53de97a569d91adcf556fa625ad30f3fd3d811f9e91e6af44b6e780cb0f327829fb21190ae2806646d728cd9b6531132b1ebfef1272993060f1ce70b124393091ee8593b727367edbba009ec5be17c4acee120c841267d47631a16c36a6d1c99973c1b0b5a835bf39feafe8f6421fd9c2a90bc27976659e67bc83124d&quot;)),
+    q: Base64URL.stringify(hexStringToUint8Array(&quot;ea9839b7e37ea89bbda27e4c93471cb4fd92189a0a96bcb4d75693f18a5c2f742af9e36fde679fbd9eae345fa269527b6965021c4bdf54d685bf08960cc976f68dca21cebf44f268a59dab8d1a25e519f5147e1f45fe287d74cf725bec1326d34212c56cf4fffa202f57b68ee8cca943f3c138c4cde33bdf2c9440df65322445&quot;)),
+    dp: Base64URL.stringify(hexStringToUint8Array(&quot;ca0c9b60b8e4a6066756c65d2088419df6253b7b688a85f4f6e964d85dad52a45262867f1e9618069fccd865e9289e46e39e2022944c5c4487d345cf252d460d977d77edfefedbcbae46a23af7fa470f077da0e50942044cb1a360497cc2760ac0f2ad4a2fcd0e84d7a1d94dfdd2658fd9ce18475c1fa75ee0cebad0cf0ac04d&quot;)),
+    dq: Base64URL.stringify(hexStringToUint8Array(&quot;528171233c4e4a6c63b86764f51338846afddbcb2958344c01c4004a1dd828145a1d02a1507def4f58247a64fc10c0a288c1ae895721d78b8f044db7c00d86da55a9b654292ecd768270be69e4bd5922d4effd1f70955f9627e3e19b749e93b40ef3dd1d61d93915e2b09d930b4b1768bfacc0136f39b0cfdfb4d050011e2e65&quot;)),
+    qi: Base64URL.stringify(hexStringToUint8Array(&quot;df2eb2322cc2daabf4d1465508f41521cda7ceff23ebe61d00d441ee728dda5d16c7bf920cd95f34beb4fe32ee817ef3362e0bcd1d1245f7b07793eaa190dc5a37fdaf4c68e2ca13972d7f5148b796b6fb6d7adda07bd2cd13be98cebed1edc6ca412e395350c59a1d842bc4aa2f3c0b243fde7dfd95356f2439251a1172c45e&quot;))
+};
+
+var extractable = true;
+var nonExtractable = false;
+
+debug(&quot;Importing an RSA key...&quot;);
+crypto.subtle.importKey(&quot;jwk&quot;, asciiToUint8Array(JSON.stringify(privateKeyJSON)), null, extractable, [&quot;decrypt&quot;]).then(function(result) {
+    privateKey = result;
+
+    debug(&quot;Decrypting...&quot;);
+    encryptedMessage = hexStringToUint8Array(&quot;6042e745589af03af87520f93c45d8c35985ada1161a37d822e9f9460fc75fcf0179d8491b8f5d1e4de8ceb31e07c4865c5a3efdbbb69a8803b89ee65a430a5809c707569150b580bb686a94c5541c46adcd827960ce244ff688387d1616e85b4d1780c6483606cf924b54f080cf4154e66829bf6e532481048ec41fadc07d755bb34bb28145219cb30d47d0d618709180e90303ff9ef09018bed3da75761da794811f96bc9e8d7c4ba1b5946bda0bd313faec4c993ed2748eed8cce4bdb520ba7db165f9fe56aa8454d6ff33874feeebf29de2df5b7f00aa1d9fb073fc4067b58dc50624e127f711dde2cc2cfdab4919ccf28c83660dfc227b0f500ec1f904f&quot;);
+    return crypto.subtle.decrypt(&quot;RSAES-PKCS1-v1_5&quot;, privateKey, encryptedMessage);
+}).then(function(result) {
+    message = result;
+    shouldBe(&quot;bytesToHexString(new Uint8Array(message))&quot;, &quot;'2aacec86f423dd925ec158822a748cbe6c31a0'&quot;);
+
+    finishJSTest();
+});
+&lt;/script&gt;
+
+&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtlersaespkcs1v1_5wrapunwrapaesexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/crypto/subtle/rsaes-pkcs1-v1_5-wrap-unwrap-aes-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/rsaes-pkcs1-v1_5-wrap-unwrap-aes-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/crypto/subtle/rsaes-pkcs1-v1_5-wrap-unwrap-aes-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,34 @@
</span><ins>+Test wrapping and unwrapping an AES key with RSAES-PKCS1-v1_5.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+Importing RSA keys...
+Importing an AES key...
+Wrapping it...
+PASS wrappedKey.toString() is '[object ArrayBuffer]'
+Unwrapping it...
+PASS unwrappedKey.toString() is '[object Key]'
+PASS unwrappedKey.type is 'secret'
+PASS unwrappedKey.extractable is true
+PASS unwrappedKey.algorithm.name is 'AES-CBC'
+PASS unwrappedKey.algorithm.length is 256
+PASS unwrappedKey.usages is ['decrypt', 'encrypt']
+Exporting it...
+PASS bytesToHexString(unwrappedKeyData) is bytesToHexString(aesKeyData)
+
+Wrapping the same key as JWK...
+PASS wrappedKey.toString() is '[object ArrayBuffer]'
+Unwrapping it...
+PASS unwrappedKey.toString() is '[object Key]'
+PASS unwrappedKey.type is 'secret'
+PASS unwrappedKey.extractable is true
+PASS unwrappedKey.algorithm.name is 'AES-CBC'
+PASS unwrappedKey.algorithm.length is 256
+PASS unwrappedKey.usages is ['decrypt', 'encrypt']
+Exporting it...
+PASS bytesToHexString(unwrappedKeyData) is bytesToHexString(aesKeyData)
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtlersaespkcs1v1_5wrapunwrapaeshtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/crypto/subtle/rsaes-pkcs1-v1_5-wrap-unwrap-aes.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/rsaes-pkcs1-v1_5-wrap-unwrap-aes.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/crypto/subtle/rsaes-pkcs1-v1_5-wrap-unwrap-aes.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,103 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/common.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+
+&lt;script&gt;
+description(&quot;Test wrapping and unwrapping an AES key with RSAES-PKCS1-v1_5.&quot;);
+
+jsTestIsAsync = true;
+
+var publicKeyJSON = {
+    kty: &quot;RSA&quot;,
+    alg: &quot;RSA1_5&quot;,
+    n: Base64URL.stringify(hexStringToUint8Array(&quot;dcfa10ffa74665aeef870974ea99b2ce54547c67f42aaa6dd01a2ed31fd2c242af5d960b1f896efba3543d6554b7b12687a5c688568f32e026c532d25993b97a7c2842ec2b8e1235eee2414d25806c6fbae438954eba9d2755dffeeb1b47700957815a8a233f97b1a2c714b3e2be2e42d8be30b1961582ea9948910e0c797c50fc4bb455f0fc45e5e34e6396ac5b2d46239365c7f3daaf0909400d61cf9e0ca8083eaf335a6fceb6863c1cc0cf5a171aff35d97ecb60ef251c7ec2c8a588361dc41266a4b7ed38b026ce0d53786449dbb11a06ea33ccf1eca575201ed1aa473ed1187ec1d8a744ea345bed7ea00ee4e81bba4648601dd537dc91015d31f0c2c1&quot;)),
+    e: Base64URL.stringify(hexStringToUint8Array(&quot;010001&quot;))
+};
+
+var privateKeyJSON = {
+    kty: &quot;RSA&quot;,
+    alg: &quot;RSA1_5&quot;,
+    n: Base64URL.stringify(hexStringToUint8Array(&quot;dcfa10ffa74665aeef870974ea99b2ce54547c67f42aaa6dd01a2ed31fd2c242af5d960b1f896efba3543d6554b7b12687a5c688568f32e026c532d25993b97a7c2842ec2b8e1235eee2414d25806c6fbae438954eba9d2755dffeeb1b47700957815a8a233f97b1a2c714b3e2be2e42d8be30b1961582ea9948910e0c797c50fc4bb455f0fc45e5e34e6396ac5b2d46239365c7f3daaf0909400d61cf9e0ca8083eaf335a6fceb6863c1cc0cf5a171aff35d97ecb60ef251c7ec2c8a588361dc41266a4b7ed38b026ce0d53786449dbb11a06ea33ccf1eca575201ed1aa473ed1187ec1d8a744ea345bed7ea00ee4e81bba4648601dd537dc91015d31f0c2c1&quot;)),
+    e: Base64URL.stringify(hexStringToUint8Array(&quot;010001&quot;)),
+    d: Base64URL.stringify(hexStringToUint8Array(&quot;21950851cdf25320318b305afa0f371f07ae5a44b314ebd729f5dcb15da7fa3947acdd915daed574bd16df88bf85f61060b387172fae6e01262b3864c2d3c22f94e04a8159422b4ed279c48a4c9d767d4966071a5bbf5d043e16ff46ec1ba0716f00bbc97bff5d5693e214e99c9721f12b3ec6282ae2a485721b96ddcf7403fa037d0c57ab463c448de5cc12265add886d311ea8d8a5903fa56c5f1c9cf2eb11cb657a1a7d3e41352dc3e686898c4ce4305e8b638e1b08a2a86cc9eb9866f3499ac77b6136b81cb276d614cfeb7b6ed3f3bc775e46c00066ebeee2cff7166b57520598947ff6210320b288fb4f2c3f8fe97b279414ebf7203000a19fc0424875&quot;)),
+    p: Base64URL.stringify(hexStringToUint8Array(&quot;f123bfe53de97a569d91adcf556fa625ad30f3fd3d811f9e91e6af44b6e780cb0f327829fb21190ae2806646d728cd9b6531132b1ebfef1272993060f1ce70b124393091ee8593b727367edbba009ec5be17c4acee120c841267d47631a16c36a6d1c99973c1b0b5a835bf39feafe8f6421fd9c2a90bc27976659e67bc83124d&quot;)),
+    q: Base64URL.stringify(hexStringToUint8Array(&quot;ea9839b7e37ea89bbda27e4c93471cb4fd92189a0a96bcb4d75693f18a5c2f742af9e36fde679fbd9eae345fa269527b6965021c4bdf54d685bf08960cc976f68dca21cebf44f268a59dab8d1a25e519f5147e1f45fe287d74cf725bec1326d34212c56cf4fffa202f57b68ee8cca943f3c138c4cde33bdf2c9440df65322445&quot;)),
+    dp: Base64URL.stringify(hexStringToUint8Array(&quot;ca0c9b60b8e4a6066756c65d2088419df6253b7b688a85f4f6e964d85dad52a45262867f1e9618069fccd865e9289e46e39e2022944c5c4487d345cf252d460d977d77edfefedbcbae46a23af7fa470f077da0e50942044cb1a360497cc2760ac0f2ad4a2fcd0e84d7a1d94dfdd2658fd9ce18475c1fa75ee0cebad0cf0ac04d&quot;)),
+    dq: Base64URL.stringify(hexStringToUint8Array(&quot;528171233c4e4a6c63b86764f51338846afddbcb2958344c01c4004a1dd828145a1d02a1507def4f58247a64fc10c0a288c1ae895721d78b8f044db7c00d86da55a9b654292ecd768270be69e4bd5922d4effd1f70955f9627e3e19b749e93b40ef3dd1d61d93915e2b09d930b4b1768bfacc0136f39b0cfdfb4d050011e2e65&quot;)),
+    qi: Base64URL.stringify(hexStringToUint8Array(&quot;df2eb2322cc2daabf4d1465508f41521cda7ceff23ebe61d00d441ee728dda5d16c7bf920cd95f34beb4fe32ee817ef3362e0bcd1d1245f7b07793eaa190dc5a37fdaf4c68e2ca13972d7f5148b796b6fb6d7adda07bd2cd13be98cebed1edc6ca412e395350c59a1d842bc4aa2f3c0b243fde7dfd95356f2439251a1172c45e&quot;))
+};
+var wrapAlgorithm = {name: &quot;RSAES-PKCS1-v1_5&quot;};
+var extractable = true;
+var nonExtractable = false;
+
+debug(&quot;Importing RSA keys...&quot;);
+crypto.subtle.importKey(&quot;jwk&quot;, asciiToUint8Array(JSON.stringify(publicKeyJSON)), null, extractable, [&quot;wrapKey&quot;, &quot;unwrapKey&quot;]).then(function(result) {
+    publicKey = result;
+    return crypto.subtle.importKey(&quot;jwk&quot;, asciiToUint8Array(JSON.stringify(privateKeyJSON)), null, extractable, [&quot;wrapKey&quot;, &quot;unwrapKey&quot;]);
+}).then(function(result) {
+    privateKey = result;
+
+    debug(&quot;Importing an AES key...&quot;);
+    aesKeyData = hexStringToUint8Array(&quot;603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4&quot;);
+    return crypto.subtle.importKey(&quot;raw&quot;, aesKeyData, &quot;aes-cbc&quot;, extractable, [&quot;encrypt&quot;, &quot;decrypt&quot;, &quot;wrapKey&quot;, &quot;unwrapKey&quot;])
+}).then(function(result) {
+    aesKey = result;
+    debug(&quot;Wrapping it...&quot;);
+
+    return crypto.subtle.wrapKey(&quot;raw&quot;, aesKey, publicKey, wrapAlgorithm);
+}).then(function(result) {
+    wrappedKey = result;
+    shouldBe(&quot;wrappedKey.toString()&quot;, &quot;'[object ArrayBuffer]'&quot;);
+
+    debug(&quot;Unwrapping it...&quot;);
+    return crypto.subtle.unwrapKey(&quot;raw&quot;, wrappedKey, privateKey, wrapAlgorithm, &quot;aes-cbc&quot;, extractable, [&quot;encrypt&quot;, &quot;decrypt&quot;]);
+}).then(function(result) {
+    unwrappedKey = result;
+    shouldBe(&quot;unwrappedKey.toString()&quot;, &quot;'[object Key]'&quot;);
+    shouldBe(&quot;unwrappedKey.type&quot;, &quot;'secret'&quot;);
+    shouldBe(&quot;unwrappedKey.extractable&quot;, &quot;true&quot;);
+    shouldBe(&quot;unwrappedKey.algorithm.name&quot;, &quot;'AES-CBC'&quot;);
+    shouldBe(&quot;unwrappedKey.algorithm.length&quot;, &quot;256&quot;);
+    shouldBe(&quot;unwrappedKey.usages&quot;, &quot;['decrypt', 'encrypt']&quot;);
+
+    debug(&quot;Exporting it...&quot;);
+    return crypto.subtle.exportKey(&quot;raw&quot;, unwrappedKey);
+}).then(function(result) {
+    unwrappedKeyData = result;
+    shouldBe(&quot;bytesToHexString(unwrappedKeyData)&quot;, &quot;bytesToHexString(aesKeyData)&quot;);
+
+    debug(&quot;\nWrapping the same key as JWK...&quot;);
+    return crypto.subtle.wrapKey(&quot;jwk&quot;, aesKey, publicKey, wrapAlgorithm);
+}).then(function(result) {
+    wrappedKey = result;
+    shouldBe(&quot;wrappedKey.toString()&quot;, &quot;'[object ArrayBuffer]'&quot;);
+
+    debug(&quot;Unwrapping it...&quot;);
+    return crypto.subtle.unwrapKey(&quot;jwk&quot;, wrappedKey, privateKey, wrapAlgorithm, &quot;aes-cbc&quot;, extractable, [&quot;encrypt&quot;, &quot;decrypt&quot;]);
+}).then(function(result) {
+    unwrappedKey = result;
+    shouldBe(&quot;unwrappedKey.toString()&quot;, &quot;'[object Key]'&quot;);
+    shouldBe(&quot;unwrappedKey.type&quot;, &quot;'secret'&quot;);
+    shouldBe(&quot;unwrappedKey.extractable&quot;, &quot;true&quot;);
+    shouldBe(&quot;unwrappedKey.algorithm.name&quot;, &quot;'AES-CBC'&quot;);
+    shouldBe(&quot;unwrappedKey.algorithm.length&quot;, &quot;256&quot;);
+    shouldBe(&quot;unwrappedKey.usages&quot;, &quot;['decrypt', 'encrypt']&quot;);
+
+    debug(&quot;Exporting it...&quot;);
+    return crypto.subtle.exportKey(&quot;raw&quot;, unwrappedKey);
+}).then(function(result) {
+    unwrappedKeyData = result;
+    shouldBe(&quot;bytesToHexString(unwrappedKeyData)&quot;, &quot;bytesToHexString(aesKeyData)&quot;);
+    finishJSTest();
+});
+&lt;/script&gt;
+
+&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtlersassapkcs1v1_5generatekeyexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/rsassa-pkcs1-v1_5-generate-key-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/rsassa-pkcs1-v1_5-generate-key-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/rsassa-pkcs1-v1_5-generate-key-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -6,12 +6,12 @@
</span><span class="cx"> Generating a key pair...
</span><span class="cx"> PASS keyPair.toString() is '[object KeyPair]'
</span><span class="cx"> PASS keyPair.publicKey.type is 'public'
</span><del>-PASS keyPair.publicKey.algorithm.name is 'rsassa-pkcs1-v1_5'
</del><ins>+PASS keyPair.publicKey.algorithm.name is 'RSASSA-PKCS1-v1_5'
</ins><span class="cx"> PASS keyPair.publicKey.algorithm.modulusLength is 2048
</span><span class="cx"> PASS bytesToHexString(keyPair.publicKey.algorithm.publicExponent) is '010001'
</span><span class="cx"> PASS keyPair.publicKey.algorithm.hash is undefined.
</span><span class="cx"> PASS keyPair.privateKey.type is 'private'
</span><del>-PASS keyPair.privateKey.algorithm.name is 'rsassa-pkcs1-v1_5'
</del><ins>+PASS keyPair.privateKey.algorithm.name is 'RSASSA-PKCS1-v1_5'
</ins><span class="cx"> PASS keyPair.privateKey.algorithm.modulusLength is 2048
</span><span class="cx"> PASS bytesToHexString(keyPair.privateKey.algorithm.publicExponent) is '010001'
</span><span class="cx"> PASS keyPair.privateKey.algorithm.hash is undefined.
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtlersassapkcs1v1_5generatekeyhtml"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/rsassa-pkcs1-v1_5-generate-key.html (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/rsassa-pkcs1-v1_5-generate-key.html        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/rsassa-pkcs1-v1_5-generate-key.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -26,12 +26,12 @@
</span><span class="cx">     keyPair = result;
</span><span class="cx">     shouldBe(&quot;keyPair.toString()&quot;, &quot;'[object KeyPair]'&quot;);
</span><span class="cx">     shouldBe(&quot;keyPair.publicKey.type&quot;, &quot;'public'&quot;);
</span><del>-    shouldBe(&quot;keyPair.publicKey.algorithm.name&quot;, &quot;'rsassa-pkcs1-v1_5'&quot;);
</del><ins>+    shouldBe(&quot;keyPair.publicKey.algorithm.name&quot;, &quot;'RSASSA-PKCS1-v1_5'&quot;);
</ins><span class="cx">     shouldBe(&quot;keyPair.publicKey.algorithm.modulusLength&quot;, &quot;2048&quot;);
</span><span class="cx">     shouldBe(&quot;bytesToHexString(keyPair.publicKey.algorithm.publicExponent)&quot;, &quot;'010001'&quot;);
</span><span class="cx">     shouldBeUndefined(&quot;keyPair.publicKey.algorithm.hash&quot;);
</span><span class="cx">     shouldBe(&quot;keyPair.privateKey.type&quot;, &quot;'private'&quot;);
</span><del>-    shouldBe(&quot;keyPair.privateKey.algorithm.name&quot;, &quot;'rsassa-pkcs1-v1_5'&quot;);
</del><ins>+    shouldBe(&quot;keyPair.privateKey.algorithm.name&quot;, &quot;'RSASSA-PKCS1-v1_5'&quot;);
</ins><span class="cx">     shouldBe(&quot;keyPair.privateKey.algorithm.modulusLength&quot;, &quot;2048&quot;);
</span><span class="cx">     shouldBe(&quot;bytesToHexString(keyPair.privateKey.algorithm.publicExponent)&quot;, &quot;'010001'&quot;);
</span><span class="cx">     shouldBeUndefined(&quot;keyPair.privateKey.algorithm.hash&quot;);
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtlersassapkcs1v1_5importjwkexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/rsassa-pkcs1-v1_5-import-jwk-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/rsassa-pkcs1-v1_5-import-jwk-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/rsassa-pkcs1-v1_5-import-jwk-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -7,19 +7,19 @@
</span><span class="cx"> PASS publicKey.toString() is '[object Key]'
</span><span class="cx"> PASS publicKey.type is 'public'
</span><span class="cx"> PASS publicKey.usages is ['sign','verify']
</span><del>-PASS publicKey.algorithm.name is 'rsassa-pkcs1-v1_5'
</del><ins>+PASS publicKey.algorithm.name is 'RSASSA-PKCS1-v1_5'
</ins><span class="cx"> PASS publicKey.algorithm.modulusLength is 2048
</span><span class="cx"> PASS bytesToHexString(publicKey.algorithm.publicExponent) is '010001'
</span><del>-PASS publicKey.algorithm.hash.name is 'sha-256'
</del><ins>+PASS publicKey.algorithm.hash.name is 'SHA-256'
</ins><span class="cx"> 
</span><span class="cx"> Importing a private key...
</span><span class="cx"> PASS privateKey.toString() is '[object Key]'
</span><span class="cx"> PASS privateKey.type is 'private'
</span><span class="cx"> PASS privateKey.usages is ['sign','verify']
</span><del>-PASS privateKey.algorithm.name is 'rsassa-pkcs1-v1_5'
</del><ins>+PASS privateKey.algorithm.name is 'RSASSA-PKCS1-v1_5'
</ins><span class="cx"> PASS privateKey.algorithm.modulusLength is 2048
</span><span class="cx"> PASS bytesToHexString(privateKey.algorithm.publicExponent) is '010001'
</span><del>-PASS privateKey.algorithm.hash.name is 'sha-256'
</del><ins>+PASS privateKey.algorithm.hash.name is 'SHA-256'
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtlersassapkcs1v1_5importjwkhtml"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/crypto/subtle/rsassa-pkcs1-v1_5-import-jwk.html (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/rsassa-pkcs1-v1_5-import-jwk.html        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/crypto/subtle/rsassa-pkcs1-v1_5-import-jwk.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -41,10 +41,10 @@
</span><span class="cx">     shouldBe(&quot;publicKey.toString()&quot;, &quot;'[object Key]'&quot;);
</span><span class="cx">     shouldBe(&quot;publicKey.type&quot;, &quot;'public'&quot;);
</span><span class="cx">     shouldBe(&quot;publicKey.usages&quot;, &quot;['sign','verify']&quot;);
</span><del>-    shouldBe(&quot;publicKey.algorithm.name&quot;, &quot;'rsassa-pkcs1-v1_5'&quot;);
</del><ins>+    shouldBe(&quot;publicKey.algorithm.name&quot;, &quot;'RSASSA-PKCS1-v1_5'&quot;);
</ins><span class="cx">     shouldBe(&quot;publicKey.algorithm.modulusLength&quot;, &quot;2048&quot;);
</span><span class="cx">     shouldBe(&quot;bytesToHexString(publicKey.algorithm.publicExponent)&quot;, &quot;'010001'&quot;);
</span><del>-    shouldBe(&quot;publicKey.algorithm.hash.name&quot;, &quot;'sha-256'&quot;);
</del><ins>+    shouldBe(&quot;publicKey.algorithm.hash.name&quot;, &quot;'SHA-256'&quot;);
</ins><span class="cx">     debug(&quot;\nImporting a private key...&quot;);
</span><span class="cx">     return crypto.subtle.importKey(&quot;jwk&quot;, asciiToUint8Array(JSON.stringify(privateKeyJSON)), null, extractable, [&quot;sign&quot;, &quot;verify&quot;]);
</span><span class="cx"> }).then(function(result) {
</span><span class="lines">@@ -52,10 +52,10 @@
</span><span class="cx">     shouldBe(&quot;privateKey.toString()&quot;, &quot;'[object Key]'&quot;);
</span><span class="cx">     shouldBe(&quot;privateKey.type&quot;, &quot;'private'&quot;);
</span><span class="cx">     shouldBe(&quot;privateKey.usages&quot;, &quot;['sign','verify']&quot;);
</span><del>-    shouldBe(&quot;privateKey.algorithm.name&quot;, &quot;'rsassa-pkcs1-v1_5'&quot;);
</del><ins>+    shouldBe(&quot;privateKey.algorithm.name&quot;, &quot;'RSASSA-PKCS1-v1_5'&quot;);
</ins><span class="cx">     shouldBe(&quot;privateKey.algorithm.modulusLength&quot;, &quot;2048&quot;);
</span><span class="cx">     shouldBe(&quot;bytesToHexString(privateKey.algorithm.publicExponent)&quot;, &quot;'010001'&quot;);
</span><del>-    shouldBe(&quot;privateKey.algorithm.hash.name&quot;, &quot;'sha-256'&quot;);
</del><ins>+    shouldBe(&quot;privateKey.algorithm.hash.name&quot;, &quot;'SHA-256'&quot;);
</ins><span class="cx">     finishJSTest();
</span><span class="cx"> });
</span><span class="cx"> &lt;/script&gt;
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtleunwrapKeycheckusageexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/crypto/subtle/unwrapKey-check-usage-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/unwrapKey-check-usage-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/crypto/subtle/unwrapKey-check-usage-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,15 @@
</span><ins>+CONSOLE MESSAGE: Key usages do not include 'unwrapKey'
+Verify that usage is respected in unwrapKey operation.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+Importing RSA keys...
+Importing an AES key...
+Wrapping it...
+Unwrapping it...
+PASS crypto.subtle.unwrapKey(&quot;raw&quot;, wrappedKey, privateKey, wrapAlgorithm, &quot;aes-cbc&quot;, extractable, [&quot;encrypt&quot;, &quot;decrypt&quot;]) threw exception Error: NotSupportedError: DOM Exception 9.
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtleunwrapKeycheckusagehtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/crypto/subtle/unwrapKey-check-usage.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/unwrapKey-check-usage.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/crypto/subtle/unwrapKey-check-usage.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,67 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/common.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+
+&lt;script&gt;
+description(&quot;Verify that usage is respected in unwrapKey operation.&quot;);
+
+jsTestIsAsync = true;
+
+var publicKeyJSON = {
+    kty: &quot;RSA&quot;,
+    alg: &quot;RSA-OAEP&quot;,
+    n: &quot;rcCUCv7Oc1HVam1DIhCzqknThWawOp8QLk8Ziy2p10ByjQFCajoFiyuAWl-R1WXZaf4xitLRracT9agpzIzc-MbLSHIGgWQGO21lGiImy5ftZ-D8bHAqRz2y15pzD4c4CEou7XSSLDoRnR0QG5MsDhD6s2gV9mwHkrtkCxtMWdBi-77as8wGmlNRldcOSgZDLK8UnCSgA1OguZ989bFyc8tOOEIb0xUSfPSz3LPSCnyYz68aDjmKVeNH-ig857OScyWbGyEy3Biw64qun3juUlNWsJ3zngkOdteYWytx5Qr4XKNs6R-Myyq72KUp02mJDZiiyiglxML_i3-_CeecCw&quot;,
+    e: &quot;AQAB&quot;
+};
+
+var privateKeyJSON = {
+    kty: &quot;RSA&quot;,
+    alg: &quot;RSA-OAEP&quot;,
+    n: &quot;rcCUCv7Oc1HVam1DIhCzqknThWawOp8QLk8Ziy2p10ByjQFCajoFiyuAWl-R1WXZaf4xitLRracT9agpzIzc-MbLSHIGgWQGO21lGiImy5ftZ-D8bHAqRz2y15pzD4c4CEou7XSSLDoRnR0QG5MsDhD6s2gV9mwHkrtkCxtMWdBi-77as8wGmlNRldcOSgZDLK8UnCSgA1OguZ989bFyc8tOOEIb0xUSfPSz3LPSCnyYz68aDjmKVeNH-ig857OScyWbGyEy3Biw64qun3juUlNWsJ3zngkOdteYWytx5Qr4XKNs6R-Myyq72KUp02mJDZiiyiglxML_i3-_CeecCw&quot;,
+    e: &quot;AQAB&quot;,
+    d: &quot;eNLS37aCz7RXSNPD_DtLBJ6j5T8cSxdzRBCjPaI6WcGqJp16lq3UTwuoDLAqlA9oGYm238dsIWpuucP_lQtbWe-7SpxoI6_vmYGf7YVUHv1-DF9qiOmSrMmdxMnVOzYXY8RaT6thPjn_J5cfLV2xI_LwsrMtmpdSyNlgX0zTUhwtuahgAKMEChYjH2EnjHdHw6sY2-wApdcQI7ULE0oo5RzbQZpmuhcN9hiBc0L3hhF0qo50mbl02_65_GQ7DpVkXBxNgRBLzlPabmzzG2oAhfefLgYmSC1opaCkXE6vRWQNWNL45RZNZFYM3uoJghOMqGeocM0BpjdChHrPOlFvSQ&quot;,
+    p: &quot;4miTuAjKMeH5uJ5KB397QUwhbkYEgSbcA2mifmSkvE2018gb55qkBHK1eVryf1_m43LNlc6O_ak6gfzdZIZvS5NCGjPl0q09plUpu8qFOSspBwA67qGH76lFlZLn_d4yglS7wfLru4_5Ys8qLLs-DqVLviwposOnyyWqwM5AXp0&quot;,
+    q: &quot;xHYrzkivtmnz_sGchnWGc0q-pDOkKicptRpv2pMFIIXxnFX5aMeEXIZjVujXtwUy1UlFIN2GZJSvy5KJ79mu_XyNnFHMzedH-A3ee3u8h1UUrZF-vUu1_e4U_x67NN1dedzUSKynN7pFl3OkuShMBWGV-cwzOPdcVAfVuZlxUMc&quot;,
+    dp: &quot;fBzDzYDUBmBQGop7Hn0dvf_T27V6RqpctWo074CQZcFbP2atFVtKSj3viWT3xid2VHzcgiDHdfpM3nEVlEO1wwIonGCSvdjGEOZiiFVOjrZAOVxA8guOjyyFvqbXke06VwPIIVvfKeSU2zuhbP__1tt6F_fxow4Kb2xonGT0GGk&quot;,
+    dq: &quot;jmE2DiIPdhwDgLXAQpIaBqQ81bO3XfVT_LRULAwwwwlPuQV148H04zlh9TJ6Y2GZHYokV1U0eOBpJxfkb7dLYtpJpuiBjRf4yIUEoGlkkI_QlJnFSFr-YjGRdfNHqWBkxlSMZL770R9mIATndGkH7z5x-r9KwBZFC4FCG2hg_zE&quot;,
+    qi: &quot;YCX_pLwbMBA1ThVH0WcwmnytqNcrMCEwTm7ByA2eU6nWbQrULvf7m9_kzfLUcjsnpAVlBQG5JMXMy0Sq4ptwbywsa5-G8KAOOOR2L3v4hC-Eys9ftgFM_3i0o40eeQH4b3haPbntrIeMg8IzlOuVYKf9-2QuKDoWeRdd7NsdxTk&quot;
+};
+var wrapAlgorithm = {name: &quot;RSA-OAEP&quot;, hash: &quot;sha-1&quot;};
+var extractable = true;
+var nonExtractable = false;
+
+debug(&quot;Importing RSA keys...&quot;);
+crypto.subtle.importKey(&quot;jwk&quot;, asciiToUint8Array(JSON.stringify(publicKeyJSON)), null, extractable, [&quot;wrapKey&quot;]).then(function(result) {
+    publicKey = result;
+    return crypto.subtle.importKey(&quot;jwk&quot;, asciiToUint8Array(JSON.stringify(privateKeyJSON)), null, extractable, [&quot;encrypt&quot;, &quot;decrypt&quot;, &quot;wrapKey&quot;]);
+}).then(function(result) {
+    privateKey = result;
+
+    debug(&quot;Importing an AES key...&quot;);
+    aesKeyData = hexStringToUint8Array(&quot;603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4&quot;);
+    return crypto.subtle.importKey(&quot;raw&quot;, aesKeyData, &quot;aes-cbc&quot;, extractable, [&quot;encrypt&quot;, &quot;decrypt&quot;, &quot;wrapKey&quot;, &quot;unwrapKey&quot;])
+}).then(function(result) {
+    aesKey = result;
+
+    debug(&quot;Wrapping it...&quot;);
+    return crypto.subtle.wrapKey(&quot;raw&quot;, aesKey, publicKey, wrapAlgorithm);
+}).then(function(result) {
+    wrappedKey = result;
+
+    debug(&quot;Unwrapping it...&quot;);
+    // privateKey lacks unwrapKey usage.
+    shouldThrow('crypto.subtle.unwrapKey(&quot;raw&quot;, wrappedKey, privateKey, wrapAlgorithm, &quot;aes-cbc&quot;, extractable, [&quot;encrypt&quot;, &quot;decrypt&quot;])');
+
+    finishJSTest();
+});
+&lt;/script&gt;
+
+&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtlewrapKeycheckusageexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/crypto/subtle/wrapKey-check-usage-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/wrapKey-check-usage-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/crypto/subtle/wrapKey-check-usage-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+CONSOLE MESSAGE: Key usages do not include 'wrapKey'
+Verify that usage is respected in wrapKey operation.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+Importing an RSA key...
+Importing an AES key...
+Wrapping it...
+PASS crypto.subtle.wrapKey(&quot;raw&quot;, aesKey, publicKey, wrapAlgorithm) threw exception Error: NotSupportedError: DOM Exception 9.
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestscryptosubtlewrapKeycheckusagehtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/crypto/subtle/wrapKey-check-usage.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/crypto/subtle/wrapKey-check-usage.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/crypto/subtle/wrapKey-check-usage.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,46 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/common.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+
+&lt;script&gt;
+description(&quot;Verify that usage is respected in wrapKey operation.&quot;);
+
+jsTestIsAsync = true;
+
+var publicKeyJSON = {
+    kty: &quot;RSA&quot;,
+    alg: &quot;RSA-OAEP&quot;,
+    n: &quot;rcCUCv7Oc1HVam1DIhCzqknThWawOp8QLk8Ziy2p10ByjQFCajoFiyuAWl-R1WXZaf4xitLRracT9agpzIzc-MbLSHIGgWQGO21lGiImy5ftZ-D8bHAqRz2y15pzD4c4CEou7XSSLDoRnR0QG5MsDhD6s2gV9mwHkrtkCxtMWdBi-77as8wGmlNRldcOSgZDLK8UnCSgA1OguZ989bFyc8tOOEIb0xUSfPSz3LPSCnyYz68aDjmKVeNH-ig857OScyWbGyEy3Biw64qun3juUlNWsJ3zngkOdteYWytx5Qr4XKNs6R-Myyq72KUp02mJDZiiyiglxML_i3-_CeecCw&quot;,
+    e: &quot;AQAB&quot;
+};
+
+var wrapAlgorithm = {name: &quot;RSA-OAEP&quot;, hash: &quot;sha-1&quot;};
+var extractable = true;
+var nonExtractable = false;
+
+debug(&quot;Importing an RSA key...&quot;);
+crypto.subtle.importKey(&quot;jwk&quot;, asciiToUint8Array(JSON.stringify(publicKeyJSON)), null, extractable, [&quot;encrypt&quot;, &quot;decrypt&quot;, &quot;unwrapKey&quot;]).then(function(result) {
+    publicKey = result;
+
+    debug(&quot;Importing an AES key...&quot;);
+    aesKeyData = hexStringToUint8Array(&quot;603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4&quot;);
+    return crypto.subtle.importKey(&quot;raw&quot;, aesKeyData, &quot;aes-cbc&quot;, extractable, [&quot;encrypt&quot;, &quot;decrypt&quot;, &quot;wrapKey&quot;, &quot;unwrapKey&quot;])
+}).then(function(result) {
+    aesKey = result;
+
+    debug(&quot;Wrapping it...&quot;);
+    // publicKey lacks wrapKey usage.
+    shouldThrow('crypto.subtle.wrapKey(&quot;raw&quot;, aesKey, publicKey, wrapAlgorithm)');
+    finishJSTest();
+});
+&lt;/script&gt;
+
+&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsdomxhtmllevel3coredocumentgetinputencoding04expectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/dom/xhtml/level3/core/documentgetinputencoding04-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/dom/xhtml/level3/core/documentgetinputencoding04-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/dom/xhtml/level3/core/documentgetinputencoding04-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,3 +1,2 @@
</span><span class="cx"> Test        http://www.w3.org/2001/DOM-Test-Suite/level3/core/documentgetinputencoding04
</span><del>-Status        error
-Message        Line 98: TypeError
</del><ins>+Status        Success
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsdomxhtmllevel3coredocumentgetxmlencoding05expectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/dom/xhtml/level3/core/documentgetxmlencoding05-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/dom/xhtml/level3/core/documentgetxmlencoding05-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/dom/xhtml/level3/core/documentgetxmlencoding05-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,3 +1,2 @@
</span><span class="cx"> Test        http://www.w3.org/2001/DOM-Test-Suite/level3/core/documentgetxmlencoding05
</span><del>-Status        error
-Message        Line 98: TypeError
</del><ins>+Status        Success
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsdomxhtmllevel3corenodeisequalnode01expectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/dom/xhtml/level3/core/nodeisequalnode01-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/dom/xhtml/level3/core/nodeisequalnode01-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/dom/xhtml/level3/core/nodeisequalnode01-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,3 +1,2 @@
</span><span class="cx"> Test        http://www.w3.org/2001/DOM-Test-Suite/level3/core/nodeisequalnode01
</span><del>-Status        failure
-Message        nodeisequalnode01: assertTrue failed
</del><ins>+Status        Success
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsdomxhtmllevel3corenodeisequalnode21expectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/dom/xhtml/level3/core/nodeisequalnode21-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/dom/xhtml/level3/core/nodeisequalnode21-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/dom/xhtml/level3/core/nodeisequalnode21-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,3 +1,2 @@
</span><span class="cx"> Test        http://www.w3.org/2001/DOM-Test-Suite/level3/core/nodeisequalnode21
</span><del>-Status        failure
-Message        nodeisequalnode21: assertTrue failed
</del><ins>+Status        Success
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsdomxhtmllevel3corenodeisequalnode25expectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/dom/xhtml/level3/core/nodeisequalnode25-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/dom/xhtml/level3/core/nodeisequalnode25-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/dom/xhtml/level3/core/nodeisequalnode25-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,3 +1,3 @@
</span><span class="cx"> Test        http://www.w3.org/2001/DOM-Test-Suite/level3/core/nodeisequalnode25
</span><span class="cx"> Status        error
</span><del>-Message        Line 123: TypeError
</del><ins>+Message        Line 125: TypeError
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsdomxhtmllevel3corenodeisequalnode26expectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/dom/xhtml/level3/core/nodeisequalnode26-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/dom/xhtml/level3/core/nodeisequalnode26-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/dom/xhtml/level3/core/nodeisequalnode26-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,3 +1,3 @@
</span><span class="cx"> Test        http://www.w3.org/2001/DOM-Test-Suite/level3/core/nodeisequalnode26
</span><span class="cx"> Status        error
</span><del>-Message        Line 123: TypeError
</del><ins>+Message        Line 125: TypeError
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsfastcssgetComputedStylegetComputedStyleborderradiusshorthandexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/fast/css/getComputedStyle/getComputedStyle-border-radius-shorthand-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/fast/css/getComputedStyle/getComputedStyle-border-radius-shorthand-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/fast/css/getComputedStyle/getComputedStyle-border-radius-shorthand-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -83,6 +83,38 @@
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('border-bottom-right-radius').cssText is '4px 7px'
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('border-bottom-left-radius').cssText is '6px 8px'
</span><span class="cx"> PASS checkComputedStyleValue() is true
</span><ins>+PASS computedStyle.getPropertyValue('border-radius') is '10px 20px 30px 40px / 15px 25px 35px 45px'
+PASS computedStyle.getPropertyCSSValue('border-radius').toString() is '[object CSSValueList]'
+PASS computedStyle.getPropertyCSSValue('border-radius').cssText is '10px 20px 30px 40px / 15px 25px 35px 45px'
+PASS computedStyle.getPropertyCSSValue('border-top-left-radius').cssText is '10px 15px'
+PASS computedStyle.getPropertyCSSValue('border-top-right-radius').cssText is '20px 25px'
+PASS computedStyle.getPropertyCSSValue('border-bottom-right-radius').cssText is '30px 35px'
+PASS computedStyle.getPropertyCSSValue('border-bottom-left-radius').cssText is '40px 45px'
+PASS checkComputedStyleValue() is true
+PASS computedStyle.getPropertyValue('border-radius') is '10px 20px 30px 40px / 10px 25px 35px 45px'
+PASS computedStyle.getPropertyCSSValue('border-radius').toString() is '[object CSSValueList]'
+PASS computedStyle.getPropertyCSSValue('border-radius').cssText is '10px 20px 30px 40px / 10px 25px 35px 45px'
+PASS computedStyle.getPropertyCSSValue('border-top-left-radius').cssText is '10px'
+PASS computedStyle.getPropertyCSSValue('border-top-right-radius').cssText is '20px 25px'
+PASS computedStyle.getPropertyCSSValue('border-bottom-right-radius').cssText is '30px 35px'
+PASS computedStyle.getPropertyCSSValue('border-bottom-left-radius').cssText is '40px 45px'
+PASS checkComputedStyleValue() is true
+PASS computedStyle.getPropertyValue('border-radius') is '10px 20px 30px 40px / 10px 20px 35px 45px'
+PASS computedStyle.getPropertyCSSValue('border-radius').toString() is '[object CSSValueList]'
+PASS computedStyle.getPropertyCSSValue('border-radius').cssText is '10px 20px 30px 40px / 10px 20px 35px 45px'
+PASS computedStyle.getPropertyCSSValue('border-top-left-radius').cssText is '10px'
+PASS computedStyle.getPropertyCSSValue('border-top-right-radius').cssText is '20px'
+PASS computedStyle.getPropertyCSSValue('border-bottom-right-radius').cssText is '30px 35px'
+PASS computedStyle.getPropertyCSSValue('border-bottom-left-radius').cssText is '40px 45px'
+PASS checkComputedStyleValue() is true
+PASS computedStyle.getPropertyValue('border-radius') is '10px 20px 30px 40px / 10px 20px 30px 45px'
+PASS computedStyle.getPropertyCSSValue('border-radius').toString() is '[object CSSValueList]'
+PASS computedStyle.getPropertyCSSValue('border-radius').cssText is '10px 20px 30px 40px / 10px 20px 30px 45px'
+PASS computedStyle.getPropertyCSSValue('border-top-left-radius').cssText is '10px'
+PASS computedStyle.getPropertyCSSValue('border-top-right-radius').cssText is '20px'
+PASS computedStyle.getPropertyCSSValue('border-bottom-right-radius').cssText is '30px'
+PASS computedStyle.getPropertyCSSValue('border-bottom-left-radius').cssText is '40px 45px'
+PASS checkComputedStyleValue() is true
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsfastcssgetComputedStylegetComputedStyleborderradiusshorthandhtml"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/fast/css/getComputedStyle/getComputedStyle-border-radius-shorthand.html (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/fast/css/getComputedStyle/getComputedStyle-border-radius-shorthand.html        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/fast/css/getComputedStyle/getComputedStyle-border-radius-shorthand.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -15,17 +15,17 @@
</span><span class="cx"> 
</span><span class="cx"> testContainer.innerHTML = '&lt;div style=&quot;width:100px;height:100px&quot;&gt;&lt;div id=&quot;test&quot;&gt;hello&lt;/div&gt;&lt;/div&gt;';
</span><span class="cx"> 
</span><del>-e = document.getElementById('test');
-computedStyle = window.getComputedStyle(e, null);
</del><ins>+var element = document.getElementById('test');
+var computedStyle = window.getComputedStyle(element, null);
</ins><span class="cx"> 
</span><span class="cx"> function checkComputedStyleValue() {
</span><del>-    var before = window.getComputedStyle(e, null).getPropertyValue('border-radius');
-    e.style.background = 'none';
-    e.style.background = before;
-    return (window.getComputedStyle(e, null).getPropertyValue('border-radius') == before);
</del><ins>+    var before = window.getComputedStyle(element, null).getPropertyValue('border-radius');
+    element.style.background = 'none';
+    element.style.background = before;
+    return (window.getComputedStyle(element, null).getPropertyValue('border-radius') == before);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-e.style.borderRadius = &quot;4em&quot;;
</del><ins>+element.style.borderRadius = &quot;4em&quot;;
</ins><span class="cx"> shouldBe(&quot;computedStyle.getPropertyValue('border-radius')&quot;, &quot;'64px'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').toString()&quot;, &quot;'[object CSSValueList]'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').cssText&quot;, &quot;'64px'&quot;);
</span><span class="lines">@@ -35,7 +35,7 @@
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-bottom-left-radius').cssText&quot;, &quot;'64px'&quot;);
</span><span class="cx"> shouldBe(&quot;checkComputedStyleValue()&quot;, &quot;true&quot;);
</span><span class="cx"> 
</span><del>-e.style.borderRadius = &quot;2em 1em 4em / 0.5em 3em&quot;;
</del><ins>+element.style.borderRadius = &quot;2em 1em 4em / 0.5em 3em&quot;;
</ins><span class="cx"> shouldBe(&quot;computedStyle.getPropertyValue('border-radius')&quot;, &quot;'32px 16px 64px / 8px 48px'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').toString()&quot;, &quot;'[object CSSValueList]'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').cssText&quot;, &quot;'32px 16px 64px / 8px 48px'&quot;);
</span><span class="lines">@@ -45,11 +45,11 @@
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-bottom-left-radius').cssText&quot;, &quot;'16px 48px'&quot;);
</span><span class="cx"> shouldBe(&quot;checkComputedStyleValue()&quot;, &quot;true&quot;);
</span><span class="cx"> 
</span><del>-e.style.borderRadius = &quot;&quot;;
-e.style.borderTopLeftRadius = &quot;4em&quot;;
-e.style.borderTopRightRadius = &quot;4em&quot;;
-e.style.borderBottomLeftRadius = &quot;4em&quot;;
-e.style.borderBottomRightRadius = &quot;4em&quot;;
</del><ins>+element.style.borderRadius = &quot;&quot;;
+element.style.borderTopLeftRadius = &quot;4em&quot;;
+element.style.borderTopRightRadius = &quot;4em&quot;;
+element.style.borderBottomLeftRadius = &quot;4em&quot;;
+element.style.borderBottomRightRadius = &quot;4em&quot;;
</ins><span class="cx"> shouldBe(&quot;computedStyle.getPropertyValue('border-radius')&quot;, &quot;'64px'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').toString()&quot;, &quot;'[object CSSValueList]'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').cssText&quot;, &quot;'64px'&quot;);
</span><span class="lines">@@ -59,7 +59,7 @@
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-bottom-left-radius').cssText&quot;, &quot;'64px'&quot;);
</span><span class="cx"> shouldBe(&quot;checkComputedStyleValue()&quot;, &quot;true&quot;);
</span><span class="cx"> 
</span><del>-e.style.borderRadius = &quot;1px 2px&quot;;
</del><ins>+element.style.borderRadius = &quot;1px 2px&quot;;
</ins><span class="cx"> shouldBe(&quot;computedStyle.getPropertyValue('border-radius')&quot;, &quot;'1px 2px'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').toString()&quot;, &quot;'[object CSSValueList]'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').cssText&quot;, &quot;'1px 2px'&quot;);
</span><span class="lines">@@ -69,7 +69,7 @@
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-bottom-left-radius').cssText&quot;, &quot;'2px'&quot;);
</span><span class="cx"> shouldBe(&quot;checkComputedStyleValue()&quot;, &quot;true&quot;);
</span><span class="cx"> 
</span><del>-e.style.borderRadius = &quot;1px 2px 4px&quot;;
</del><ins>+element.style.borderRadius = &quot;1px 2px 4px&quot;;
</ins><span class="cx"> shouldBe(&quot;computedStyle.getPropertyValue('border-radius')&quot;, &quot;'1px 2px 4px'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').toString()&quot;, &quot;'[object CSSValueList]'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').cssText&quot;, &quot;'1px 2px 4px'&quot;);
</span><span class="lines">@@ -79,7 +79,7 @@
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-bottom-left-radius').cssText&quot;, &quot;'2px'&quot;);
</span><span class="cx"> shouldBe(&quot;checkComputedStyleValue()&quot;, &quot;true&quot;);
</span><span class="cx"> 
</span><del>-e.style.borderRadius = &quot;1px 2px 4px 6px&quot;;
</del><ins>+element.style.borderRadius = &quot;1px 2px 4px 6px&quot;;
</ins><span class="cx"> shouldBe(&quot;computedStyle.getPropertyValue('border-radius')&quot;, &quot;'1px 2px 4px 6px'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').toString()&quot;, &quot;'[object CSSValueList]'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').cssText&quot;, &quot;'1px 2px 4px 6px'&quot;);
</span><span class="lines">@@ -89,7 +89,7 @@
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-bottom-left-radius').cssText&quot;, &quot;'6px'&quot;);
</span><span class="cx"> shouldBe(&quot;checkComputedStyleValue()&quot;, &quot;true&quot;);
</span><span class="cx"> 
</span><del>-e.style.borderRadius = &quot;1px 2px 4px 6px / 4em&quot;;
</del><ins>+element.style.borderRadius = &quot;1px 2px 4px 6px / 4em&quot;;
</ins><span class="cx"> shouldBe(&quot;computedStyle.getPropertyValue('border-radius')&quot;, &quot;'1px 2px 4px 6px / 64px'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').toString()&quot;, &quot;'[object CSSValueList]'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').cssText&quot;, &quot;'1px 2px 4px 6px / 64px'&quot;);
</span><span class="lines">@@ -99,7 +99,7 @@
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-bottom-left-radius').cssText&quot;, &quot;'6px 64px'&quot;);
</span><span class="cx"> shouldBe(&quot;checkComputedStyleValue()&quot;, &quot;true&quot;);
</span><span class="cx"> 
</span><del>-e.style.borderRadius = &quot;1px 2px 4px 6px / 4em 3px&quot;;
</del><ins>+element.style.borderRadius = &quot;1px 2px 4px 6px / 4em 3px&quot;;
</ins><span class="cx"> shouldBe(&quot;computedStyle.getPropertyValue('border-radius')&quot;, &quot;'1px 2px 4px 6px / 64px 3px'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').toString()&quot;, &quot;'[object CSSValueList]'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').cssText&quot;, &quot;'1px 2px 4px 6px / 64px 3px'&quot;);
</span><span class="lines">@@ -109,7 +109,7 @@
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-bottom-left-radius').cssText&quot;, &quot;'6px 3px'&quot;);
</span><span class="cx"> shouldBe(&quot;checkComputedStyleValue()&quot;, &quot;true&quot;);
</span><span class="cx"> 
</span><del>-e.style.borderRadius = &quot;1px 2px 4px 6px / 4em 3px 7px&quot;;
</del><ins>+element.style.borderRadius = &quot;1px 2px 4px 6px / 4em 3px 7px&quot;;
</ins><span class="cx"> shouldBe(&quot;computedStyle.getPropertyValue('border-radius')&quot;, &quot;'1px 2px 4px 6px / 64px 3px 7px'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').toString()&quot;, &quot;'[object CSSValueList]'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').cssText&quot;, &quot;'1px 2px 4px 6px / 64px 3px 7px'&quot;);
</span><span class="lines">@@ -119,7 +119,7 @@
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-bottom-left-radius').cssText&quot;, &quot;'6px 3px'&quot;);
</span><span class="cx"> shouldBe(&quot;checkComputedStyleValue()&quot;, &quot;true&quot;);
</span><span class="cx"> 
</span><del>-e.style.borderRadius = &quot;1px 2px 4px 6px / 4em 3px 7px 8px&quot;;
</del><ins>+element.style.borderRadius = &quot;1px 2px 4px 6px / 4em 3px 7px 8px&quot;;
</ins><span class="cx"> shouldBe(&quot;computedStyle.getPropertyValue('border-radius')&quot;, &quot;'1px 2px 4px 6px / 64px 3px 7px 8px'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').toString()&quot;, &quot;'[object CSSValueList]'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').cssText&quot;, &quot;'1px 2px 4px 6px / 64px 3px 7px 8px'&quot;);
</span><span class="lines">@@ -129,6 +129,46 @@
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-bottom-left-radius').cssText&quot;, &quot;'6px 8px'&quot;);
</span><span class="cx"> shouldBe(&quot;checkComputedStyleValue()&quot;, &quot;true&quot;);
</span><span class="cx"> 
</span><ins>+element.style.borderRadius = &quot;10px 20px 30px 40px / 15px 25px 35px 45px&quot;;
+shouldBe(&quot;computedStyle.getPropertyValue('border-radius')&quot;, &quot;'10px 20px 30px 40px / 15px 25px 35px 45px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').toString()&quot;, &quot;'[object CSSValueList]'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').cssText&quot;, &quot;'10px 20px 30px 40px / 15px 25px 35px 45px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-top-left-radius').cssText&quot;, &quot;'10px 15px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-top-right-radius').cssText&quot;, &quot;'20px 25px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-bottom-right-radius').cssText&quot;, &quot;'30px 35px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-bottom-left-radius').cssText&quot;, &quot;'40px 45px'&quot;);
+shouldBe(&quot;checkComputedStyleValue()&quot;, &quot;true&quot;);
+
+element.style.borderRadius = &quot;10px 20px 30px 40px / 10px 25px 35px 45px&quot;;
+shouldBe(&quot;computedStyle.getPropertyValue('border-radius')&quot;, &quot;'10px 20px 30px 40px / 10px 25px 35px 45px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').toString()&quot;, &quot;'[object CSSValueList]'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').cssText&quot;, &quot;'10px 20px 30px 40px / 10px 25px 35px 45px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-top-left-radius').cssText&quot;, &quot;'10px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-top-right-radius').cssText&quot;, &quot;'20px 25px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-bottom-right-radius').cssText&quot;, &quot;'30px 35px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-bottom-left-radius').cssText&quot;, &quot;'40px 45px'&quot;);
+shouldBe(&quot;checkComputedStyleValue()&quot;, &quot;true&quot;);
+
+element.style.borderRadius = &quot;10px 20px 30px 40px / 10px 20px 35px 45px&quot;;
+shouldBe(&quot;computedStyle.getPropertyValue('border-radius')&quot;, &quot;'10px 20px 30px 40px / 10px 20px 35px 45px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').toString()&quot;, &quot;'[object CSSValueList]'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').cssText&quot;, &quot;'10px 20px 30px 40px / 10px 20px 35px 45px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-top-left-radius').cssText&quot;, &quot;'10px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-top-right-radius').cssText&quot;, &quot;'20px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-bottom-right-radius').cssText&quot;, &quot;'30px 35px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-bottom-left-radius').cssText&quot;, &quot;'40px 45px'&quot;);
+shouldBe(&quot;checkComputedStyleValue()&quot;, &quot;true&quot;);
+
+element.style.borderRadius = &quot;10px 20px 30px 40px / 10px 20px 30px 45px&quot;;
+shouldBe(&quot;computedStyle.getPropertyValue('border-radius')&quot;, &quot;'10px 20px 30px 40px / 10px 20px 30px 45px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').toString()&quot;, &quot;'[object CSSValueList]'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').cssText&quot;, &quot;'10px 20px 30px 40px / 10px 20px 30px 45px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-top-left-radius').cssText&quot;, &quot;'10px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-top-right-radius').cssText&quot;, &quot;'20px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-bottom-right-radius').cssText&quot;, &quot;'30px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-bottom-left-radius').cssText&quot;, &quot;'40px 45px'&quot;);
+shouldBe(&quot;checkComputedStyleValue()&quot;, &quot;true&quot;);
+
</ins><span class="cx"> document.body.removeChild(testContainer);
</span><span class="cx"> 
</span><span class="cx"> &lt;/script&gt;
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsfastcssnthlastchildrecalcexpectedhtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/fast/css/nth-last-child-recalc-expected.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/fast/css/nth-last-child-recalc-expected.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/fast/css/nth-last-child-recalc-expected.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;style&gt;
+a {
+    float: left;
+    background-color: green;
+    width: 100px;
+    height: 100px;
+    margin: 0 13px 13px 0;
+}
+.lastInRow {
+    margin-right: 0;
+}
+div {
+    width: 370px;
+}
+&lt;/style&gt;
+&lt;body&gt;
+&lt;p&gt;This tests that we get nth-child and nth-last-child correct on style recalc. There should be 2 identical rows of green boxes below.&lt;/p&gt;
+&lt;div&gt;
+&lt;a&gt;&lt;/a&gt;
+&lt;a&gt;&lt;/a&gt;
+&lt;a class=&quot;lastInRow&quot;&gt;&lt;/a&gt;
+&lt;a&gt;&lt;/a&gt;
+&lt;a&gt;&lt;/a&gt;
+&lt;a class=&quot;lastInRow&quot;&gt;&lt;/a&gt;
+&lt;/div&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsfastcssnthlastchildrecalchtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/fast/css/nth-last-child-recalc.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/fast/css/nth-last-child-recalc.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/fast/css/nth-last-child-recalc.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,36 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;style&gt;
+a {
+    float: left;
+    background-color: green;
+    width: 100px;
+    height: 100px;
+    margin: 0 13px 13px 0;
+}
+a:nth-child(3n+3) {
+    margin-right: 0;
+}
+a:nth-last-child(-n+3) {
+    margin-bottom: 30px;
+}
+div {
+    width: 370px;
+}
+&lt;/style&gt;
+&lt;script&gt;
+onload = function () {
+    test.focus();
+    test.blur();
+}
+&lt;/script&gt;
+&lt;body&gt;
+&lt;p&gt;This tests that we get nth-child and nth-last-child correct on style recalc. There should be 2 identical rows of green boxes below.&lt;/p&gt;
+&lt;div&gt;
+&lt;a id=&quot;test&quot; href=&quot;&quot;&gt;&lt;/a&gt;
+&lt;a&gt;&lt;/a&gt;
+&lt;a&gt;&lt;/a&gt;
+&lt;a&gt;&lt;/a&gt;
+&lt;a&gt;&lt;/a&gt;
+&lt;a&gt;&lt;/a&gt;
+&lt;/div&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsfastcsspendingimagecrashexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/fast/css/pending-image-crash-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/fast/css/pending-image-crash-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/fast/css/pending-image-crash-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+PASS test did not crash
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsfastcsspendingimagecrashxhtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/fast/css/pending-image-crash.xhtml (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/fast/css/pending-image-crash.xhtml                                (rev 0)
+++ branches/jsCStack/LayoutTests/fast/css/pending-image-crash.xhtml        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,24 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+&lt;head id=&quot;head&quot;&gt;
+&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+window.jsTestIsAsync = true;
+var count = 0;
+for (i = 0; i != 50; i++) {
+    setTimeout(function() {
+        var head = document.getElementsByTagName(&quot;head&quot;)[0];
+        var style = document.createElement(&quot;style&quot;);
+        style.innerHTML=&quot;:first-of-type {-webkit-border-image:-webkit-cross-fade(url(#head), url(#head), 100%);}&quot;;
+        head.appendChild(style);
+        count++;
+        if (count == 50) {
+            testPassed(&quot;test did not crash&quot;);
+            finishJSTest();
+        }
+    }, 36);
+}
+&lt;/script&gt;
+&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsfastcssstylesharinggrandparentinvalidateexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/fast/css/style-sharing-grand-parent-invalidate-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/fast/css/style-sharing-grand-parent-invalidate-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/fast/css/style-sharing-grand-parent-invalidate-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,2 @@
</span><ins>+This test succeeds if the two blocks show red and green repectively: SUCCESS
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsfastcssstylesharinggrandparentinvalidatehtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/fast/css/style-sharing-grand-parent-invalidate.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/fast/css/style-sharing-grand-parent-invalidate.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/fast/css/style-sharing-grand-parent-invalidate.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,53 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;style&gt;
+.outerx .mid .inner {
+    background-color: red;
+}
+.outery .mid .inner {
+    background-color: green;
+}
+.inner {
+    width: 50px;
+    height: 50px;
+}
+&lt;/style&gt;
+&lt;script&gt;
+function test() {
+    if (window.testRunner)
+        testRunner.dumpAsText();
+
+    var x = document.getElementById(&quot;x&quot;);
+    x.classList.add(&quot;outerx&quot;);
+
+    var y = document.getElementById(&quot;y&quot;);
+    y.classList.add(&quot;outery&quot;);
+
+    var colorX = getComputedStyle(x.children[0].children[0]).backgroundColor;
+    var colorY = getComputedStyle(y.children[0].children[0]).backgroundColor;
+
+    var result = document.getElementById(&quot;result&quot;)
+    if (colorX == colorY)
+        result.innerHTML = &quot;FAIL&quot;;
+    else
+        result.innerHTML = &quot;SUCCESS&quot;;
+}
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body onload=&quot;test()&quot;&gt;
+This test succeeds if the two blocks show red and green repectively: &lt;span id=&quot;result&quot;&gt;&lt;/span&gt;
+&lt;div id=&quot;x&quot;&gt;
+    &lt;div class=&quot;mid&quot;&gt;
+        &lt;div class=&quot;inner&quot;&gt;
+        &lt;/div&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+&lt;div id=&quot;y&quot;&gt;
+    &lt;div class=&quot;mid&quot;&gt;
+        &lt;div class=&quot;inner&quot;&gt;
+        &lt;/div&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsfastcssgridlayoutgriditemcolumnrowgetsetexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/fast/css-grid-layout/grid-item-column-row-get-set-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/fast/css-grid-layout/grid-item-column-row-get-set-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/fast/css-grid-layout/grid-item-column-row-get-set-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -227,6 +227,46 @@
</span><span class="cx"> PASS getComputedStyle(element, '').getPropertyValue('-webkit-grid-row-start') is 'auto'
</span><span class="cx"> PASS getComputedStyle(element, '').getPropertyValue('-webkit-grid-row-end') is 'auto'
</span><span class="cx"> 
</span><ins>+Test getting and setting 'initial' grid-column and grid-row through JS
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is &quot;1 / span 2&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is &quot;1&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is &quot;span 2&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is &quot;span 3 / 5&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is &quot;span 3&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is &quot;5&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is &quot;auto / auto&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is &quot;auto&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is &quot;auto&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is &quot;span 3 / 5&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is &quot;span 3&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is &quot;5&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is &quot;auto / auto&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is &quot;auto&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is &quot;auto&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is &quot;auto / auto&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is &quot;auto&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is &quot;auto&quot;
+
+Test getting and setting 'inherit' grid-column and grid-row through JS
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is &quot;1 / auto&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is &quot;1&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is &quot;auto&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is &quot;span 1 / 7&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is &quot;span 1&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is &quot;7&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is &quot;6 / span 2&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is &quot;6&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is &quot;span 2&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is &quot;1 / auto&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is &quot;1&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is &quot;auto&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is &quot;6 / span 2&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is &quot;6&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is &quot;span 2&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is &quot;span 1 / 7&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is &quot;span 1&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is &quot;7&quot;
+
</ins><span class="cx"> Test getting and setting invalid grid-column and grid-row through JS
</span><span class="cx"> PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is &quot;auto / auto&quot;
</span><span class="cx"> PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is &quot;auto&quot;
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsfastcssgridlayoutgriditemcolumnrowgetsethtml"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/fast/css-grid-layout/grid-item-column-row-get-set.html (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/fast/css-grid-layout/grid-item-column-row-get-set.html        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/fast/css-grid-layout/grid-item-column-row-get-set.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -173,6 +173,16 @@
</span><span class="cx">     shouldBe(&quot;getComputedStyle(element, '').getPropertyValue('-webkit-grid-row-end')&quot;, &quot;'auto'&quot;);
</span><span class="cx"> 
</span><span class="cx">     debug(&quot;&quot;);
</span><ins>+    debug(&quot;Test getting and setting 'initial' grid-column and grid-row through JS&quot;);
+    testColumnRowInitialJSParsing();
+
+    debug(&quot;&quot;);
+    debug(&quot;Test getting and setting 'inherit' grid-column and grid-row through JS&quot;);
+    testColumnRowInheritJSParsing(&quot;1 / auto&quot;, &quot;inherit&quot;);
+    testColumnRowInheritJSParsing(&quot;inherit&quot;, &quot;1 / auto&quot;);
+    testColumnRowInheritJSParsing(&quot;inherit&quot;, &quot;inherit&quot;);
+
+    debug(&quot;&quot;);
</ins><span class="cx">     debug(&quot;Test getting and setting invalid grid-column and grid-row through JS&quot;);
</span><span class="cx">     testColumnRowInvalidJSParsing(&quot;4 5&quot;, &quot;5 8&quot;);
</span><span class="cx">     testColumnRowInvalidJSParsing(&quot;4 /&quot;, &quot;5 /&quot;);
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsfastcssgridlayoutgriditemendaftergetsetexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/fast/css-grid-layout/grid-item-end-after-get-set-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/fast/css-grid-layout/grid-item-end-after-get-set-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/fast/css-grid-layout/grid-item-end-after-get-set-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -103,6 +103,46 @@
</span><span class="cx"> PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is &quot;auto&quot;
</span><span class="cx"> PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is &quot;auto&quot;
</span><span class="cx"> 
</span><ins>+Test setting grid-start and grid-before to 'inherit' through JS
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is &quot;auto / span 2&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is &quot;auto&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is &quot;span 2&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is &quot;auto / 18&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is &quot;auto&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is &quot;18&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is &quot;auto / 2&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is &quot;auto&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is &quot;2&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is &quot;auto / 7&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is &quot;auto&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is &quot;7&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is &quot;auto / span 2&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is &quot;auto&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is &quot;span 2&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is &quot;auto / 7&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is &quot;auto&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is &quot;7&quot;
+
+Test setting grid-start and grid-before to 'initial' through JS
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is &quot;1 / span 2&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is &quot;1&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is &quot;span 2&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is &quot;span 3 / 5&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is &quot;span 3&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is &quot;5&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is &quot;1 / auto&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is &quot;1&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is &quot;auto&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is &quot;span 3 / 5&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is &quot;span 3&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is &quot;5&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is &quot;1 / auto&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is &quot;1&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is &quot;auto&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is &quot;span 3 / auto&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is &quot;span 3&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is &quot;auto&quot;
+
</ins><span class="cx"> Test setting grid-column-end and grid-row-end back to 'auto' through JS
</span><span class="cx"> PASS getComputedStyle(element, '').getPropertyValue('-webkit-grid-column-end') is '18'
</span><span class="cx"> PASS getComputedStyle(element, '').getPropertyValue('-webkit-grid-column') is 'auto / 18'
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsfastcssgridlayoutgriditemendaftergetsethtml"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/fast/css-grid-layout/grid-item-end-after-get-set.html (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/fast/css-grid-layout/grid-item-end-after-get-set.html        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/fast/css-grid-layout/grid-item-end-after-get-set.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -89,6 +89,16 @@
</span><span class="cx">     testColumnEndRowEndJSParsing(&quot;secondArea&quot;, &quot;nonExistentArea&quot;, &quot;secondArea&quot;, &quot;auto&quot;);
</span><span class="cx"> 
</span><span class="cx">     debug(&quot;&quot;);
</span><ins>+    debug(&quot;Test setting grid-start and grid-before to 'inherit' through JS&quot;);
+    testEndAfterInheritJSParsing(&quot;inherit&quot;, &quot;18&quot;);
+    testEndAfterInheritJSParsing(&quot;2&quot;, &quot;inherit&quot;);
+    testEndAfterInheritJSParsing(&quot;inherit&quot;, &quot;inherit&quot;);
+
+    debug(&quot;&quot;);
+    debug(&quot;Test setting grid-start and grid-before to 'initial' through JS&quot;);
+    testEndAfterInitialJSParsing();
+
+    debug(&quot;&quot;);
</ins><span class="cx">     debug(&quot;Test setting grid-column-end and grid-row-end back to 'auto' through JS&quot;);
</span><span class="cx">     element.style.webkitGridColumnEnd = &quot;18&quot;;
</span><span class="cx">     element.style.webkitGridRowEnd = &quot;66&quot;;
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsfastcssgridlayoutgriditemstartbeforegetsetexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/fast/css-grid-layout/grid-item-start-before-get-set-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/fast/css-grid-layout/grid-item-start-before-get-set-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/fast/css-grid-layout/grid-item-start-before-get-set-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -101,6 +101,46 @@
</span><span class="cx"> PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is &quot;auto&quot;
</span><span class="cx"> PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is &quot;auto&quot;
</span><span class="cx"> 
</span><ins>+Test setting grid-start and grid-before to 'inherit' through JS
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is &quot;6 / auto&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is &quot;6&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is &quot;auto&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is &quot;18 / auto&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is &quot;18&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is &quot;auto&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is &quot;2 / auto&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is &quot;2&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is &quot;auto&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is &quot;span 1 / auto&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is &quot;span 1&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is &quot;auto&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is &quot;6 / auto&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is &quot;6&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is &quot;auto&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is &quot;span 1 / auto&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is &quot;span 1&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is &quot;auto&quot;
+
+Test setting grid-start and grid-before to 'initial' through JS
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is &quot;1 / span 2&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is &quot;1&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is &quot;span 2&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is &quot;span 3 / 5&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is &quot;span 3&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is &quot;5&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is &quot;auto / span 2&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is &quot;auto&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is &quot;span 2&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is &quot;span 3 / 5&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is &quot;span 3&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is &quot;5&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is &quot;auto / span 2&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is &quot;auto&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is &quot;span 2&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is &quot;auto / 5&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is &quot;auto&quot;
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is &quot;5&quot;
+
</ins><span class="cx"> Test setting grid-column-start and grid-row-start back to 'auto' through JS
</span><span class="cx"> PASS getComputedStyle(element, '').getPropertyValue('-webkit-grid-column-start') is '18'
</span><span class="cx"> PASS getComputedStyle(element, '').getPropertyValue('-webkit-grid-column') is '18 / auto'
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsfastcssgridlayoutgriditemstartbeforegetsethtml"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/fast/css-grid-layout/grid-item-start-before-get-set.html (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/fast/css-grid-layout/grid-item-start-before-get-set.html        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/fast/css-grid-layout/grid-item-start-before-get-set.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -94,6 +94,16 @@
</span><span class="cx">     testColumnStartRowStartJSParsing(&quot;secondArea&quot;, &quot;nonExistentArea&quot;, &quot;secondArea&quot;, &quot;auto&quot;);
</span><span class="cx"> 
</span><span class="cx">     debug(&quot;&quot;);
</span><ins>+    debug(&quot;Test setting grid-start and grid-before to 'inherit' through JS&quot;);
+    testStartBeforeInheritJSParsing(&quot;inherit&quot;, &quot;18&quot;);
+    testStartBeforeInheritJSParsing(&quot;2&quot;, &quot;inherit&quot;);
+    testStartBeforeInheritJSParsing(&quot;inherit&quot;, &quot;inherit&quot;);
+
+    debug(&quot;&quot;);
+    debug(&quot;Test setting grid-start and grid-before to 'initial' through JS&quot;);
+    testStartBeforeInitialJSParsing();
+
+    debug(&quot;&quot;);
</ins><span class="cx">     debug(&quot;Test setting grid-column-start and grid-row-start back to 'auto' through JS&quot;);
</span><span class="cx">     element.style.webkitGridColumnStart = &quot;18&quot;;
</span><span class="cx">     element.style.webkitGridRowStart = &quot;66&quot;;
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsfastcssgridlayoutresourcesgriditemcolumnrowparsingutilsjs"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/fast/css-grid-layout/resources/grid-item-column-row-parsing-utils.js (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/fast/css-grid-layout/resources/grid-item-column-row-parsing-utils.js        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/fast/css-grid-layout/resources/grid-item-column-row-parsing-utils.js        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -88,4 +88,122 @@
</span><span class="cx">     gridElement.removeChild(gridItem);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+var placeholderParentStartValueForInherit = &quot;6&quot;;
+var placeholderParentEndValueForInherit = &quot;span 2&quot;;
+var placeholderParentColumnValueForInherit = placeholderParentStartValueForInherit + &quot; / &quot; + placeholderParentEndValueForInherit;
+var placeholderParentBeforeValueForInherit = &quot;span 1&quot;;
+var placeholderParentAfterValueForInherit = &quot;7&quot;;
+var placeholderParentRowValueForInherit = placeholderParentBeforeValueForInherit + &quot; / &quot; + placeholderParentAfterValueForInherit;
+
+var placeholderStartValueForInitial = &quot;1&quot;;
+var placeholderEndValueForInitial = &quot;span 2&quot;;
+var placeholderColumnValueForInitial = placeholderStartValueForInitial + &quot; / &quot; + placeholderEndValueForInitial;
+var placeholderBeforeValueForInitial = &quot;span 3&quot;;
+var placeholderAfterValueForInitial = &quot;5&quot;;
+var placeholderRowValueForInitial = placeholderBeforeValueForInitial + &quot; / &quot; + placeholderAfterValueForInitial;
+
+function setupInheritTest()
+{
+    var parentElement = document.createElement(&quot;div&quot;);
+    document.body.appendChild(parentElement);
+    parentElement.style.webkitGridColumn = placeholderParentColumnValueForInherit;
+    parentElement.style.webkitGridRow = placeholderParentRowValueForInherit;
+
+    var gridItem = document.createElement(&quot;div&quot;);
+    parentElement.appendChild(gridItem);
+    return parentElement;
+}
+
+function setupInitialTest()
+{
+    var gridItem = document.createElement(&quot;div&quot;);
+    document.body.appendChild(gridItem);
+    gridItem.style.webkitGridColumn = placeholderColumnValueForInitial;
+    gridItem.style.webkitGridRow = placeholderRowValueForInitial;
+
+    checkColumnRowValues(gridItem, placeholderColumnValueForInitial, placeholderRowValueForInitial);
+    return gridItem;
+}
+
+window.testColumnRowInheritJSParsing = function(columnValue, rowValue)
+{
+    var parentElement = setupInheritTest();
+    var gridItem = parentElement.firstChild;
+    gridItem.style.webkitGridColumn = columnValue;
+    gridItem.style.webkitGridRow = rowValue;
+
+    checkColumnRowValues(gridItem, columnValue !== &quot;inherit&quot; ? columnValue : placeholderParentColumnValueForInherit, rowValue !== &quot;inherit&quot; ? rowValue : placeholderParentRowValueForInherit);
+
+    document.body.removeChild(parentElement);
+}
+
+window.testStartBeforeInheritJSParsing = function(startValue, beforeValue)
+{
+    var parentElement = setupInheritTest();
+    var gridItem = parentElement.firstChild;
+    gridItem.style.webkitGridColumnStart = startValue;
+    gridItem.style.webkitGridRowStart = beforeValue;
+
+    // Initial value is 'auto' but we shouldn't touch the opposite grid line.
+    var columnValueForInherit = (startValue !== &quot;inherit&quot; ? startValue : placeholderParentStartValueForInherit) + &quot; / auto&quot;;
+    var rowValueForInherit = (beforeValue !== &quot;inherit&quot; ? beforeValue : placeholderParentBeforeValueForInherit) + &quot; / auto&quot;;
+    checkColumnRowValues(parentElement.firstChild, columnValueForInherit, rowValueForInherit);
+
+    document.body.removeChild(parentElement);
+}
+
+window.testEndAfterInheritJSParsing = function(endValue, afterValue)
+{
+    var parentElement = setupInheritTest();
+    var gridItem = parentElement.firstChild;
+    gridItem.style.webkitGridColumnEnd = endValue;
+    gridItem.style.webkitGridRowEnd = afterValue;
+
+    // Initial value is 'auto' but we shouldn't touch the opposite grid line.
+    var columnValueForInherit = &quot;auto / &quot; + (endValue !== &quot;inherit&quot; ? endValue : placeholderParentEndValueForInherit);
+    var rowValueForInherit = &quot;auto / &quot; + (afterValue !== &quot;inherit&quot; ? afterValue : placeholderParentAfterValueForInherit);
+    checkColumnRowValues(parentElement.firstChild, columnValueForInherit, rowValueForInherit);
+
+    document.body.removeChild(parentElement);
+}
+
+window.testColumnRowInitialJSParsing = function()
+{
+    var gridItem = setupInitialTest();
+
+    gridItem.style.webkitGridColumn = &quot;initial&quot;;
+    checkColumnRowValues(gridItem, &quot;auto / auto&quot;, placeholderRowValueForInitial);
+
+    gridItem.style.webkitGridRow = &quot;initial&quot;;
+    checkColumnRowValues(gridItem, &quot;auto / auto&quot;, &quot;auto / auto&quot;);
+
+    document.body.removeChild(gridItem);
+}
+
+window.testStartBeforeInitialJSParsing = function()
+{
+    var gridItem = setupInitialTest();
+
+    gridItem.style.webkitGridColumnStart = &quot;initial&quot;;
+    checkColumnRowValues(gridItem, &quot;auto / &quot; + placeholderEndValueForInitial, placeholderRowValueForInitial);
+
+    gridItem.style.webkitGridRowStart = &quot;initial&quot;;
+    checkColumnRowValues(gridItem,  &quot;auto / &quot; + placeholderEndValueForInitial, &quot;auto / &quot; + placeholderAfterValueForInitial);
+
+    document.body.removeChild(gridItem);
+}
+
+window.testEndAfterInitialJSParsing = function()
+{
+    var gridItem = setupInitialTest();
+
+    gridItem.style.webkitGridColumnEnd = &quot;initial&quot;;
+    checkColumnRowValues(gridItem, placeholderStartValueForInitial + &quot; / auto&quot;, placeholderRowValueForInitial);
+
+    gridItem.style.webkitGridRowEnd = &quot;initial&quot;;
+    checkColumnRowValues(gridItem, placeholderStartValueForInitial + &quot; / auto&quot;, placeholderBeforeValueForInitial + &quot; / auto&quot;);
+
+    document.body.removeChild(gridItem);
+}
+
</ins><span class="cx"> })();
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsfastdomDocumentclonenodeexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/fast/dom/Document/clone-node-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/fast/dom/Document/clone-node-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/fast/dom/Document/clone-node-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+Tests cloneNode for Document.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS doc.cloneNode(false).__proto__ is Document.prototype
+PASS className(doc.cloneNode(false)) is &quot;Document&quot;
+PASS doc.cloneNode(true).documentElement.localName is &quot;root&quot;
+PASS document.cloneNode(true).compatMode is &quot;CSS1Compat&quot;
+PASS document.cloneNode(false).URL is document.URL
+PASS document.cloneNode(false).baseURI is document.baseURI
+PASS document.cloneNode(false).characterSet is document.characterSet
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsfastdomDocumentclonenodehtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/fast/dom/Document/clone-node.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/fast/dom/Document/clone-node.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/fast/dom/Document/clone-node.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;body&gt;
+&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+description('Tests cloneNode for Document.');
+
+function className(object) {
+    return Object.prototype.toString.call(object).slice(8, -1);
+}
+
+var doc = document.implementation.createDocument('', 'root', null);
+
+shouldBe('doc.cloneNode(false).__proto__', 'Document.prototype');
+shouldBeEqualToString('className(doc.cloneNode(false))', 'Document');
+shouldBeEqualToString('doc.cloneNode(true).documentElement.localName', 'root');
+shouldBeEqualToString('document.cloneNode(true).compatMode', 'CSS1Compat');
+shouldBe('document.cloneNode(false).URL', 'document.URL');
+shouldBe('document.cloneNode(false).baseURI', 'document.baseURI');
+shouldBe('document.cloneNode(false).characterSet', 'document.characterSet');
+
+&lt;/script&gt;
+&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsfastdomHTMLDocumentclonenodequirksmodeexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/fast/dom/HTMLDocument/clone-node-quirks-mode-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/fast/dom/HTMLDocument/clone-node-quirks-mode-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/fast/dom/HTMLDocument/clone-node-quirks-mode-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+Tests cloneNode for HTMLDocument.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS document.cloneNode(false).__proto__ is HTMLDocument.prototype
+PASS className(document.cloneNode(false)) is &quot;HTMLDocument&quot;
+PASS document.cloneNode(true).title is document.title
+PASS document.cloneNode(true).compatMode is &quot;BackCompat&quot;
+PASS doc.cloneNode(false).__proto__ is HTMLDocument.prototype
+PASS className(doc.cloneNode(false)) is &quot;HTMLDocument&quot;
+PASS doc.cloneNode(true).title is doc.title
+PASS doc.cloneNode(true).compatMode is &quot;CSS1Compat&quot;
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsfastdomHTMLDocumentclonenodequirksmodehtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/fast/dom/HTMLDocument/clone-node-quirks-mode.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/fast/dom/HTMLDocument/clone-node-quirks-mode.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/fast/dom/HTMLDocument/clone-node-quirks-mode.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,22 @@
</span><ins>+&lt;title&gt;Tests HTMLDocument cloneNode&lt;/title&gt;
+&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+description('Tests cloneNode for HTMLDocument.');
+
+function className(object) {
+    return Object.prototype.toString.call(object).slice(8, -1);
+}
+
+shouldBe('document.cloneNode(false).__proto__', 'HTMLDocument.prototype');
+shouldBeEqualToString('className(document.cloneNode(false))', 'HTMLDocument');
+shouldBe('document.cloneNode(true).title', 'document.title');
+shouldBeEqualToString('document.cloneNode(true).compatMode', 'BackCompat');
+
+var doc = document.implementation.createHTMLDocument('title');
+shouldBe('doc.cloneNode(false).__proto__', 'HTMLDocument.prototype');
+shouldBeEqualToString('className(doc.cloneNode(false))', 'HTMLDocument');
+shouldBe('doc.cloneNode(true).title', 'doc.title');
+shouldBeEqualToString('doc.cloneNode(true).compatMode', 'CSS1Compat');
+
+&lt;/script&gt;
+&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsfastdomHTMLTableElementempytablecellwithbackgroundcolorexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/fast/dom/HTMLTableElement/empy-table-cell-with-background-color-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/fast/dom/HTMLTableElement/empy-table-cell-with-background-color-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/fast/dom/HTMLTableElement/empy-table-cell-with-background-color-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+Tests that the table cell width is set properly even when the table cell has no child and its table has width defined
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS document.getElementById('nochildTd').offsetWidth is 750
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsfastdomHTMLTableElementempytablecellwithbackgroundcolorhtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/fast/dom/HTMLTableElement/empy-table-cell-with-background-color.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/fast/dom/HTMLTableElement/empy-table-cell-with-background-color.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/fast/dom/HTMLTableElement/empy-table-cell-with-background-color.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+        &lt;script&gt;
+            function runTest() {
+                description('Tests that the table cell width is set properly even when the table cell has no child and its table has width defined');
+
+                shouldBe(&quot;document.getElementById('nochildTd').offsetWidth&quot;,&quot;750&quot;);
+                isSuccessfullyParsed();
+            }
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;runTest()&quot;&gt;
+        &lt;table  width=&quot;750px&quot; border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt;
+            &lt;tr&gt;
+                &lt;td id=&quot;nochildTd&quot; height=&quot;1px&quot; bgcolor=#000000&gt;&lt;/td&gt;
+            &lt;/tr&gt;
+        &lt;/table&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsfastdomWindowpostMessagecloneporterrorexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/fast/dom/Window/postMessage-clone-port-error-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/fast/dom/Window/postMessage-clone-port-error-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/fast/dom/Window/postMessage-clone-port-error-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+This test checks if DataCloneError exception is thrown when postMessage's second parameter is the source port or the target port.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS dataCloneErrorWasThrown is true
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsfastdomWindowpostMessagecloneporterrorhtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/fast/dom/Window/postMessage-clone-port-error.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/fast/dom/Window/postMessage-clone-port-error.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/fast/dom/Window/postMessage-clone-port-error.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,22 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;script&gt;
+    description(&quot;This test checks if DataCloneError exception is thrown when postMessage's second parameter is the source port or the target port.&quot;);
+    var dataCloneErrorWasThrown = false;
+    var channel = new MessageChannel();
+    channel.port1.start();
+    try {
+        channel.port1.postMessage(&quot;ports&quot;, [channel.port1]);
+    } catch(ex) {
+        if (ex.name == &quot;DataCloneError&quot;)
+            dataCloneErrorWasThrown = true;
+    }
+    shouldBeTrue(&quot;dataCloneErrorWasThrown&quot;)
+&lt;/script&gt;
+&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsfasteventsmessageportcloneexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/fast/events/message-port-clone-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/fast/events/message-port-clone-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/fast/events/message-port-clone-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -2,8 +2,8 @@
</span><span class="cx"> 
</span><span class="cx"> Should be a series of SUCCESS messages, followed with DONE.
</span><span class="cx"> 
</span><del>-SUCCESS: Posting port to itself: Error: InvalidStateError: DOM Exception 11
-SUCCESS: Posting entangled port: Error: InvalidStateError: DOM Exception 11
</del><ins>+SUCCESS: Posting port to itself: Error: DataCloneError: DOM Exception 25
+SUCCESS: Posting entangled port: Error: DataCloneError: DOM Exception 25
</ins><span class="cx"> SUCCESS: Posting cloned port.
</span><span class="cx"> SUCCESS: Posted messages to cloned port.
</span><span class="cx"> SUCCESS: Cloned both endpoints of a channel.
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsfasteventsmessageportmultiexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/fast/events/message-port-multi-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/fast/events/message-port-multi-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/fast/events/message-port-multi-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -3,8 +3,8 @@
</span><span class="cx"> On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-PASS channel.port1.postMessage(&quot;same port&quot;, [channel.port1]) threw exception Error: InvalidStateError: DOM Exception 11.
-PASS channel.port1.postMessage(&quot;entangled port&quot;, [channel.port2]) threw exception Error: InvalidStateError: DOM Exception 11.
</del><ins>+PASS channel.port1.postMessage(&quot;same port&quot;, [channel.port1]) threw exception Error: DataCloneError: DOM Exception 25.
+PASS channel.port1.postMessage(&quot;entangled port&quot;, [channel.port2]) threw exception Error: DataCloneError: DOM Exception 25.
</ins><span class="cx"> PASS channel.port1.postMessage(&quot;null port&quot;, [channel3.port1, null, channel3.port2]) threw exception Error: InvalidStateError: DOM Exception 11.
</span><span class="cx"> PASS channel.port1.postMessage(&quot;notAPort&quot;, [channel3.port1, {}, channel3.port2]) threw exception TypeError: Type error.
</span><span class="cx"> PASS channel.port1.postMessage(&quot;duplicate port&quot;, [channel3.port1, channel3.port1]) threw exception Error: InvalidStateError: DOM Exception 11.
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsfasteventsstopPropagationsubmitexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/fast/events/stopPropagation-submit-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/fast/events/stopPropagation-submit-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/fast/events/stopPropagation-submit-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,2 +1,2 @@
</span><span class="cx"> PASS
</span><del>-?x=-8&amp;y=-60
</del><ins>+?x=0&amp;y=0
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsfastformsinputimagesubmithtml"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/fast/forms/input-image-submit.html (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/fast/forms/input-image-submit.html        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/fast/forms/input-image-submit.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -60,7 +60,7 @@
</span><span class="cx">     var query = window.location.search;
</span><span class="cx"> 
</span><span class="cx">     if (query.indexOf('state=') == -1) {
</span><del>-        // Step 1: Normal submission with type=image
</del><ins>+        // Step 1a: Normal submission by mouse click with type=image
</ins><span class="cx">         state.value = 'normal';
</span><span class="cx">         image.dispatchEvent(clickEvent);
</span><span class="cx">     } else if (query.indexOf('state=normal') != -1) {
</span><span class="lines">@@ -70,6 +70,30 @@
</span><span class="cx">             return;
</span><span class="cx">         }
</span><span class="cx"> 
</span><ins>+        // Step 1b: Submission by element.click() method with type=image
+        state.value = 'click-method';
+        image.click();
+    } else if (query.indexOf('state=click-method') != -1) {
+        if (query.indexOf('image.x=0&amp;image.y=0&amp;image=value') == -1) {
+            failAndDone('Click method failed: ' + query);
+            return;
+        }
+
+        // Step 1c: Submission by keyboard activation with type=image
+        state.value = 'keyboard';
+        if (window.eventSender) {
+            image.focus();
+            eventSender.keyDown(' ');
+        } else {
+            failAndDone('This test requires eventSender');
+            return;
+        }
+    } else if (query.indexOf('state=keyboard') != -1) {
+        if (query.indexOf('image.x=0&amp;image.y=0&amp;image=value') == -1) {
+            failAndDone('Activating with keyboard failed: ' + query);
+            return;
+        }
+
</ins><span class="cx">         // Step 2: Change the type to text on 'submit' event
</span><span class="cx">         state.value = 'to-text-on-submit';
</span><span class="cx">         image.dispatchEvent(clickEvent);
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsfastmediastreamRTCPeerConnectioncreateAnswerexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/fast/mediastream/RTCPeerConnection-createAnswer-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/fast/mediastream/RTCPeerConnection-createAnswer-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/fast/mediastream/RTCPeerConnection-createAnswer-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -3,11 +3,19 @@
</span><span class="cx"> On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-PASS createOffer request failed.
-PASS pc.setRemoteDescription(sessionDescription, requestSucceeded2, requestFailed2); did not throw exception.
-PASS setRemoteDescription request succeeded.
</del><ins>+PASS pc.createAnswer(requestSucceeded1, requestFailed1); did not throw exception.
+PASS createAnswer request succeeded.
+PASS pc.setRemoteDescription(sessionDescription, setDescriptionSucceeded, setDescriptionFailed); did not throw exception.
+PASS setRemoteDescription succeeded.
+PASS pc.createAnswer(requestSucceeded2, requestFailed2, {mandatory:{&quot;succeed&quot;:false}}); did not throw exception.
+PASS createAnswer request failed.
+PASS errorReason.name is &quot;IncompatibleConstraintsError&quot;
</ins><span class="cx"> PASS pc.createAnswer(requestSucceeded3, requestFailed3); did not throw exception.
</span><span class="cx"> PASS createAnswer request succeeded.
</span><ins>+PASS sessionDescription.type is &quot;answer&quot;
+PASS pc.createAnswer(requestSucceeded4, requestFailed3, {mandatory:{&quot;succeed&quot;:true}}); did not throw exception.
+PASS createAnswer request succeeded.
+PASS sessionDescription.type is &quot;answer&quot;
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsfastmediastreamRTCPeerConnectioncreateAnswerhtml"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/fast/mediastream/RTCPeerConnection-createAnswer.html (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/fast/mediastream/RTCPeerConnection-createAnswer.html        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/fast/mediastream/RTCPeerConnection-createAnswer.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -9,6 +9,16 @@
</span><span class="cx"> 
</span><span class="cx">             var pc = null;
</span><span class="cx"> 
</span><ins>+            function requestSucceeded4(sd)
+            {
+                testPassed('createAnswer request succeeded.');
+
+                sessionDescription = sd;
+                shouldBe('sessionDescription.type', '&quot;answer&quot;');
+
+                finishJSTest();
+            }
+
</ins><span class="cx">             function requestFailed3(reason)
</span><span class="cx">             {
</span><span class="cx">                 testFailed('createAnswer request failed.');
</span><span class="lines">@@ -16,43 +26,63 @@
</span><span class="cx">                 finishJSTest();
</span><span class="cx">             }
</span><span class="cx"> 
</span><del>-            function requestSucceeded3()
</del><ins>+            function requestSucceeded3(sd)
</ins><span class="cx">             {
</span><span class="cx">                 testPassed('createAnswer request succeeded.');
</span><span class="cx"> 
</span><del>-                finishJSTest();
</del><ins>+                sessionDescription = sd;
+                shouldBe('sessionDescription.type', '&quot;answer&quot;');
+
+                shouldNotThrow('pc.createAnswer(requestSucceeded4, requestFailed3, {mandatory:{&quot;succeed&quot;:true}});');
</ins><span class="cx">             }
</span><span class="cx"> 
</span><span class="cx">             function requestFailed2(reason)
</span><span class="cx">             {
</span><del>-                testFailed('setRemoteDescription request failed.');
</del><ins>+                testPassed('createAnswer request failed.');
</ins><span class="cx"> 
</span><del>-                finishJSTest();
</del><ins>+                errorReason = reason;
+                shouldBe('errorReason.name', '&quot;IncompatibleConstraintsError&quot;');
+
+                shouldNotThrow('pc.createAnswer(requestSucceeded3, requestFailed3);');
</ins><span class="cx">             }
</span><span class="cx"> 
</span><span class="cx">             function requestSucceeded2()
</span><span class="cx">             {
</span><del>-                testPassed('setRemoteDescription request succeeded.');
</del><ins>+                testFailed('createAnswer request succeeded.');
</ins><span class="cx"> 
</span><del>-                shouldNotThrow('pc.createAnswer(requestSucceeded3, requestFailed3);');
</del><ins>+                finishJSTest();
</ins><span class="cx">             }
</span><span class="cx"> 
</span><del>-            function requestFailed1()
</del><ins>+            function requestFailed1(reason)
</ins><span class="cx">             {
</span><del>-                testPassed('createOffer request failed.');
</del><ins>+                testFailed('createAnswer request failed.');
</ins><span class="cx"> 
</span><del>-                sessionDescription = new RTCSessionDescription({type:&quot;answer&quot;, sdp:&quot;remote&quot;});
-                shouldNotThrow('pc.setRemoteDescription(sessionDescription, requestSucceeded2, requestFailed2);');
</del><ins>+                finishJSTest();
</ins><span class="cx">             }
</span><span class="cx"> 
</span><del>-            function requestSucceeded1(sd)
</del><ins>+            function requestSucceeded1()
</ins><span class="cx">             {
</span><del>-                testFailed('createOffer request succeeded.');
</del><ins>+                testPassed('createAnswer request succeeded.');
+
+                sessionDescription = new RTCSessionDescription({type:&quot;offer&quot;, sdp:&quot;remote&quot;});
+                shouldNotThrow('pc.setRemoteDescription(sessionDescription, setDescriptionSucceeded, setDescriptionFailed);');
+            }
+
+            function setDescriptionFailed()
+            {
+                testFailed('setRemoteDescription failed.');
+
</ins><span class="cx">                 finishJSTest();
</span><span class="cx">             }
</span><span class="cx"> 
</span><ins>+            function setDescriptionSucceeded()
+            {
+                testPassed('setRemoteDescription succeeded.');
+                shouldNotThrow('pc.createAnswer(requestSucceeded2, requestFailed2, {mandatory:{&quot;succeed&quot;:false}});');
+            }
+
</ins><span class="cx">             pc = new webkitRTCPeerConnection({iceServers:[]});
</span><del>-            pc.createOffer(requestSucceeded1, requestFailed1);
</del><ins>+            shouldNotThrow('pc.createAnswer(requestSucceeded1, requestFailed1);');
</ins><span class="cx"> 
</span><span class="cx">             window.jsTestIsAsync = true;
</span><span class="cx">             window.successfullyParsed = true;
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsfastmediastreamRTCPeerConnectioncreateOfferexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/fast/mediastream/RTCPeerConnection-createOffer-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/fast/mediastream/RTCPeerConnection-createOffer-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/fast/mediastream/RTCPeerConnection-createOffer-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -3,10 +3,15 @@
</span><span class="cx"> On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-PASS requestSucceeded was called.
</del><ins>+PASS pc.createOffer(requestSucceeded1, requestFailed1, {mandatory:{&quot;succeed&quot;:true}}); did not throw exception.
+PASS createOffer request succeeded.
</ins><span class="cx"> PASS sessionDescription.type is &quot;offer&quot;
</span><del>-PASS requestFailed was called.
-PASS errorReason is &quot;TEST_ERROR&quot;
</del><ins>+PASS pc.createOffer(requestSucceeded2, requestFailed2, {mandatory:{&quot;succeed&quot;:false}}); did not throw exception.
+PASS createOffer request failed.
+PASS errorReason.name is &quot;IncompatibleConstraintsError&quot;
+PASS pc.createOffer(requestSucceeded3, requestFailed1); did not throw exception.
+PASS createOffer request succeeded.
+PASS sessionDescription.type is &quot;offer&quot;
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsfastmediastreamRTCPeerConnectioncreateOfferhtml"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/fast/mediastream/RTCPeerConnection-createOffer.html (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/fast/mediastream/RTCPeerConnection-createOffer.html        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/fast/mediastream/RTCPeerConnection-createOffer.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -9,40 +9,49 @@
</span><span class="cx"> 
</span><span class="cx">             var pc = null;
</span><span class="cx"> 
</span><ins>+            function requestSucceeded3(sd)
+            {
+                testPassed('createOffer request succeeded.');
+
+                sessionDescription = sd;
+                shouldBe('sessionDescription.type', '&quot;offer&quot;');
+                finishJSTest();
+            }
+
</ins><span class="cx">             function requestFailed2(reason)
</span><span class="cx">             {
</span><del>-                testPassed('requestFailed was called.');
</del><ins>+                testPassed('createOffer request failed.');
</ins><span class="cx"> 
</span><span class="cx">                 errorReason = reason;
</span><del>-                shouldBe('errorReason', '&quot;TEST_ERROR&quot;');
</del><ins>+                shouldBe('errorReason.name', '&quot;IncompatibleConstraintsError&quot;');
</ins><span class="cx"> 
</span><del>-                finishJSTest();
</del><ins>+                shouldNotThrow('pc.createOffer(requestSucceeded3, requestFailed1);');
</ins><span class="cx">             }
</span><span class="cx"> 
</span><span class="cx">             function requestSucceeded2(sd)
</span><span class="cx">             {
</span><del>-                testFailed('requestSucceeded was called.');
</del><ins>+                testFailed('createOffer request succeeded.');
</ins><span class="cx">                 finishJSTest();
</span><span class="cx">             }
</span><span class="cx"> 
</span><span class="cx">             function requestFailed1()
</span><span class="cx">             {
</span><del>-                testFailed('requestFailed was called.');
</del><ins>+                testFailed('createOffer request failed.');
</ins><span class="cx">                 finishJSTest();
</span><span class="cx">             }
</span><span class="cx"> 
</span><span class="cx">             function requestSucceeded1(sd)
</span><span class="cx">             {
</span><del>-                testPassed('requestSucceeded was called.');
</del><ins>+                testPassed('createOffer request succeeded.');
</ins><span class="cx"> 
</span><span class="cx">                 sessionDescription = sd;
</span><span class="cx">                 shouldBe('sessionDescription.type', '&quot;offer&quot;');
</span><span class="cx"> 
</span><del>-                pc.createOffer(requestSucceeded2, requestFailed2, {mandatory:{&quot;succeed&quot;:false}});
</del><ins>+                shouldNotThrow('pc.createOffer(requestSucceeded2, requestFailed2, {mandatory:{&quot;succeed&quot;:false}});');
</ins><span class="cx">             }
</span><span class="cx"> 
</span><span class="cx">             pc = new webkitRTCPeerConnection({iceServers:[]});
</span><del>-            pc.createOffer(requestSucceeded1, requestFailed1, {mandatory:{&quot;succeed&quot;:true}});
</del><ins>+            shouldNotThrow('pc.createOffer(requestSucceeded1, requestFailed1, {mandatory:{&quot;succeed&quot;:true}});');
</ins><span class="cx"> 
</span><span class="cx">             window.jsTestIsAsync = true;
</span><span class="cx">             window.successfullyParsed = true;
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsfastshapesshapeoutsidefloatsshapeoutsideanimationexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/fast/shapes/shape-outside-floats/shape-outside-animation-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/fast/shapes/shape-outside-floats/shape-outside-animation-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/fast/shapes/shape-outside-floats/shape-outside-animation-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -2,8 +2,10 @@
</span><span class="cx"> Moving Text
</span><span class="cx"> Moving Text
</span><span class="cx"> Moving Text
</span><ins>+Moving Text
</ins><span class="cx"> PASS - &quot;webkitShapeOutside&quot; property for &quot;rectangle-box&quot; element at 1s saw something close to: rectangle(10%, 10%, 80%, 80%, 0px, 0px)
</span><span class="cx"> PASS - &quot;webkitShapeOutside&quot; property for &quot;circle-box&quot; element at 1s saw something close to: circle(35% at 35% 35%)
</span><span class="cx"> PASS - &quot;webkitShapeOutside&quot; property for &quot;ellipse-box&quot; element at 1s saw something close to: ellipse(35% 30% at 35% 35%)
</span><span class="cx"> PASS - &quot;webkitShapeOutside&quot; property for &quot;polygon-box&quot; element at 1s saw something close to: polygon(nonzero, 10% 10%, 90% 10%, 90% 90%, 10% 90%)
</span><ins>+PASS - &quot;webkitShapeOutside&quot; property for &quot;polygon2-box&quot; element at 1s saw something close to: polygon(nonzero, 20% 20%, 80% 20%, 80% 80%, 20% 80%)
</ins><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsfastshapesshapeoutsidefloatsshapeoutsideanimationhtml"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/fast/shapes/shape-outside-floats/shape-outside-animation.html (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/fast/shapes/shape-outside-floats/shape-outside-animation.html        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/fast/shapes/shape-outside-floats/shape-outside-animation.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -30,6 +30,9 @@
</span><span class="cx">       -webkit-animation: polygon-anim 2s linear
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    #polygon2-box {
+      -webkit-animation: polygon2-anim 2s linear
+    }
</ins><span class="cx"> 
</span><span class="cx">     @-webkit-keyframes rectangle-anim {
</span><span class="cx">         from { -webkit-shape-outside: rectangle(0%, 0%, 100%, 100%); }
</span><span class="lines">@@ -51,6 +54,11 @@
</span><span class="cx">         to   { -webkit-shape-outside: polygon(nonzero, 20% 20%, 80% 20%, 80% 80%, 20% 80%); }
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    @-webkit-keyframes polygon2-anim {
+        from { -webkit-shape-outside: polygon(evenodd, 0% 0%, 100% 0%, 100% 100%, 0% 100%); }
+        to   { -webkit-shape-outside: polygon(nonzero, 20% 20%, 80% 20%, 80% 80%, 20% 80%); }
+    }
+
</ins><span class="cx">   &lt;/style&gt;
</span><span class="cx">   &lt;script src=&quot;../../../animations/resources/animation-test-helpers.js&quot;&gt;&lt;/script&gt;
</span><span class="cx">   &lt;script type=&quot;text/javascript&quot;&gt;
</span><span class="lines">@@ -60,6 +68,7 @@
</span><span class="cx">       [&quot;circle-anim&quot;,  1, &quot;circle-box&quot;, &quot;webkitShapeOutside&quot;, &quot;circle(35% at 35% 35%)&quot;, 0.05],
</span><span class="cx">       [&quot;ellipse-anim&quot;,  1, &quot;ellipse-box&quot;, &quot;webkitShapeOutside&quot;, &quot;ellipse(35% 30% at 35% 35%)&quot;, 0.05],
</span><span class="cx">       [&quot;polygon-anim&quot;,  1, &quot;polygon-box&quot;, &quot;webkitShapeOutside&quot;, &quot;polygon(nonzero, 10% 10%, 90% 10%, 90% 90%, 10% 90%)&quot;, 0.05],
</span><ins>+      [&quot;polygon2-anim&quot;,  1, &quot;polygon2-box&quot;, &quot;webkitShapeOutside&quot;, &quot;polygon(nonzero, 20% 20%, 80% 20%, 80% 80%, 20% 80%)&quot;, 0.05],
</ins><span class="cx">     ];
</span><span class="cx">     
</span><span class="cx">     runAnimationTest(expectedValues);
</span><span class="lines">@@ -83,6 +92,10 @@
</span><span class="cx">   &lt;div class=&quot;box&quot; id=&quot;polygon-box&quot;&gt;&lt;/div&gt;
</span><span class="cx">   Moving Text
</span><span class="cx"> &lt;/div&gt;
</span><ins>+&lt;div class='container'&gt;
+  &lt;div class=&quot;box&quot; id=&quot;polygon2-box&quot;&gt;&lt;/div&gt;
+  Moving Text
+&lt;/div&gt;
</ins><span class="cx"> 
</span><span class="cx"> &lt;div id=&quot;result&quot;&gt;
</span><span class="cx"> &lt;/div&gt;
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsfastshapesshapeoutsidefloatsshapeoutsidefloatsdifferentwritingmodeshtml"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-different-writing-modes.html (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-different-writing-modes.html        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-different-writing-modes.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -8,7 +8,7 @@
</span><span class="cx">     }
</span><span class="cx">     .float {
</span><span class="cx">         -webkit-writing-mode: vertical-lr;
</span><del>-        -webkit-shape-outside: rectangle(0px, -20px, 20px, 20px) content-box;
</del><ins>+        -webkit-shape-outside: rectangle(-20px, 0px, 20px, 20px) content-box;
</ins><span class="cx">         height: 20px;
</span><span class="cx">         width: 40px;
</span><span class="cx">         margin: 0px 20px;
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsfasttableauto100percentwidthexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/fast/table/auto-100-percent-width-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/fast/table/auto-100-percent-width-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/fast/table/auto-100-percent-width-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -8,5 +8,5 @@
</span><span class="cx">     RenderTable {TABLE} at (0,0) size 480x540
</span><span class="cx">       RenderTableSection {TBODY} at (0,0) size 480x540
</span><span class="cx">         RenderTableRow {TR} at (0,0) size 480x540
</span><del>-          RenderTableCell {TD} at (0,269) size 480x2 [bgcolor=#008000] [r=0 c=0 rs=1 cs=1]
-          RenderTableCell {TD} at (480,270) size 0x0 [bgcolor=#FF0000] [r=0 c=1 rs=1 cs=1]
</del><ins>+          RenderTableCell {TD} at (0,269) size 479x2 [bgcolor=#008000] [r=0 c=0 rs=1 cs=1]
+          RenderTableCell {TD} at (479,270) size 1x0 [bgcolor=#FF0000] [r=0 c=1 rs=1 cs=1]
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsinspectorprotocolmodelhighlightshapeoutsidemarginexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/inspector-protocol/model/highlight-shape-outside-margin-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/inspector-protocol/model/highlight-shape-outside-margin-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/inspector-protocol/model/highlight-shape-outside-margin-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+PASS: Shape roughly equals [M 60 50 L 90 50 C 95.52 50 100 54.48 100 60 L 100 90 C 100 95.52 95.52 100 90 100 L 60 100 C 54.48 100 50 95.52 50 90 L 50 60 C 50 54.48 54.48 50 60 50 Z]
+PASS: Margin shape roughly equals [M 60 40 L 90 40 C 101.05 40 110 48.95 110 60 L 110 90 C 110 101.05 101.05 110 90 110 L 60 110 C 48.95 110 40 101.05 40 90 L 40 60 C 40 48.95 48.95 40 60 40 Z]
+PASS: Shape roughly equals [M 75 25 L 75 25 C 102.61 25 125 47.39 125 75 L 125 75 C 125 102.61 102.61 125 75 125 L 75 125 C 47.39 125 25 102.61 25 75 L 25 75 C 25 47.39 47.39 25 75 25 Z]
+PASS: Margin shape roughly equals [M 75 15 L 75 15 C 108.14 15 135 41.86 135 75 L 135 75 C 135 108.14 108.14 135 75 135 L 75 135 C 41.86 135 15 108.14 15 75 L 15 75 C 15 41.86 41.86 15 75 15 Z]
+PASS: Shape roughly equals [M 50 50 L 100 50 L 100 100 L 50 100 L 50 50 Z]
+PASS: Margin shape roughly equals [M 50 49 L 100 49 L 100 50 L 50 50 L 50 49 Z M 49 50 L 101 50 L 101 100 L 49 100 L 49 50 Z M 50 100 L 100 100 L 100 101 L 50 101 L 50 100 Z]
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsinspectorprotocolmodelhighlightshapeoutsidemarginhtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/inspector-protocol/model/highlight-shape-outside-margin.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/inspector-protocol/model/highlight-shape-outside-margin.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/inspector-protocol/model/highlight-shape-outside-margin.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,114 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;style&gt;
+body {
+    margin: 0;
+}
+.shape {
+    float: left;
+    width: 100px;
+    height: 100px;
+    padding: 25px 75px 75px 25px;
+    margin-right: -200px;
+    -webkit-shape-margin: 10px;
+}
+.inset {
+    -webkit-shape-outside: inset(25px 25px 25px 25px round 10px 10px) content-box;
+}
+.circle {
+    -webkit-shape-outside: circle(50px) content-box;
+}
+.svg {
+    -webkit-shape-outside: url(&quot;data:image/svg+xml;utf8,&lt;svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' preserveAspectRatio='none' width='100px' height='100px'&gt;&lt;rect x='25' y='25' width='50' height='50' fill='blue' /&gt;&lt;/svg&gt;&quot;);
+    -webkit-shape-margin: 1px;
+}
+&lt;/style&gt;
+&lt;script type=&quot;text/javascript&quot; src=&quot;../../http/tests/inspector-protocol/resources/protocol-test.js&quot;&gt;&lt;/script&gt;
+&lt;script type=&quot;text/javascript&quot; src=&quot;../resources/shape-info-helper.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+function shapeTests() {
+    var tests = [
+    {
+        'selector' : '.inset',
+        'shape' : roundedRectCommands(50, 50, 50, 50, 10),
+        'marginShape' : roundedRectCommands(40, 40, 70, 70, 20)
+    },
+    {
+        'selector' : '.circle',
+        'shape' : roundedRectCommands(25, 25, 100, 100, 50),
+        'marginShape' : roundedRectCommands(15, 15, 120, 120, 60)
+    },
+    {
+        'selector' : '.svg',
+        'shape' : roundedRectCommands(50, 50, 50, 50, 0),
+        'marginShape' : [].concat(roundedRectCommands(50, 49, 50, 1, 0),
+            roundedRectCommands(49, 50, 52, 50, 0),
+            roundedRectCommands(50, 100, 50, 1, 0))
+    }
+    ];
+
+    function roundedRectCommands(x, y, w, h, r) {
+        if (!r)
+            return ['M', x, y, 'L', x + w, y, 'L', x + w, y + h, 'L', x, y + h, 'L', x, y, 'Z'];
+
+        // Approximate 1 - kappa, see Path.cpp
+        var control = .447715;
+
+        var commands = [];
+
+        commands.push('M', x + r, y);
+        commands.push('L', x + w - r, y);
+        commands.push('C', x + w - control * r, y, x + w, y + control * r, x + w, y + r);
+
+        commands.push('L', x + w, y + h - r);
+        commands.push('C', x + w, y + h - control * r, x + w - control * r, y + h, x + w - r, y + h);
+
+        commands.push('L', x + r, y + h);
+        commands.push('C', x + control * r, y + h, x, y + h - control * r, x, y + h - r);
+
+        commands.push('L', x, y + r);
+        commands.push('C', x, y + control * r, x + control * r, y, x + r, y);
+        commands.push('Z');
+
+        return commands;
+    }
+
+    function testPath(actual, expected, msg) {
+        var result = InspectorTest.pathsRoughlyEqual(actual, expected);
+        expectedString = expected.map(function(item) {
+            if (typeof item === 'number')
+                return +item.toFixed(2);
+            return item;
+        }).join(' ');
+        InspectorTest.assert(result, msg + &quot; [&quot; + expectedString + &quot;]&quot;);
+        if (!result)
+            InspectorTest.log(&quot;Actual shape was [&quot; + actual.join(&quot; &quot;) + &quot;]&quot;);
+    }
+
+    function doTests(tests) {
+        if (!tests.length) {
+            InspectorTest.completeTest();
+            return;
+        }
+        var test = tests[0];
+        tests = tests.splice(1);
+        InspectorTest.shapeOutsideInfo(test.selector, function(shapeOutside) {
+            testPath(shapeOutside.shape, test.shape, &quot;Shape roughly equals&quot;);
+            testPath(shapeOutside.marginShape, test.marginShape, &quot;Margin shape roughly equals&quot;);
+
+            doTests(tests);
+        });
+    }
+
+    doTests(tests);
+}
+window.onload = function() { ShapeInfoHelper.runShapeTest(shapeTests); }
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+    &lt;div class='shape inset'&gt;&lt;/div&gt;
+    &lt;div class='shape circle'&gt;&lt;/div&gt;
+    &lt;div class='shape svg'&gt;&lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsinspectorprotocolmodelhighlightshapeoutsidehtml"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/inspector-protocol/model/highlight-shape-outside.html (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/inspector-protocol/model/highlight-shape-outside.html        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/inspector-protocol/model/highlight-shape-outside.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -72,19 +72,19 @@
</span><span class="cx">         'path' : ['M', 50, 50, 'L', 150, 50, 'L', 150, 100, 'L', 50, 100, 'L', 50, 50, 'Z']
</span><span class="cx">     },
</span><span class="cx">     {
</span><del>-        'selector' : '.rectangle.vertical-lr',
</del><ins>+        'selector' : '.vertical-lr &gt; .rectangle',
</ins><span class="cx">         'path' : ['M', 50, 50, 'L', 50, 100, 'L', 150, 100, 'L', 150, 50, 'L', 50, 50, 'Z']
</span><span class="cx">     },
</span><span class="cx">     {
</span><del>-        'selector' : '.rectangle.vertical-rl',
</del><ins>+        'selector' : '.vertical-rl &gt; .rectangle',
</ins><span class="cx">         'path' : ['M', 150, 50, 'L', 150, 100, 'L', 50, 100, 'L', 50, 50, 'L', 150, 50, 'Z']
</span><span class="cx">     },
</span><span class="cx">     {
</span><del>-        'selector' : '.rectangle.padded.vertical-rl',
</del><ins>+        'selector' : '.vertical-rl &gt; .rectangle.padded',
</ins><span class="cx">         'path' : ['M', 175, 75, 'L', 175, 125, 'L', 75, 125, 'L', 75, 75, 'L', 175, 75, 'Z']
</span><span class="cx">     },
</span><span class="cx">     {
</span><del>-        'selector' : '.rectangle.padded.vertical-rl.border-box',
</del><ins>+        'selector' : '.vertical-rl &gt; .rectangle.padded.border-box',
</ins><span class="cx">         'path' : ['M', 150, 50, 'L', 150, 100, 'L', 50, 100, 'L', 50, 50, 'L', 150, 50, 'Z']
</span><span class="cx">     },
</span><span class="cx">     {
</span><span class="lines">@@ -113,7 +113,7 @@
</span><span class="cx">         var test = tests[0];
</span><span class="cx">         tests = tests.splice(1);
</span><span class="cx">         InspectorTest.shapeOutsideInfo(test.selector, function(shapeOutside) {
</span><del>-            var actual = shapeOutside.path.join(' ');
</del><ins>+            var actual = shapeOutside.shape.join(' ');
</ins><span class="cx">             var expected = test.path.join(' ');
</span><span class="cx">             InspectorTest.assert(actual === expected, &quot;Actual [&quot; + actual + &quot;] Expected [&quot; + expected + &quot;]&quot;);
</span><span class="cx">             doTests(tests);
</span><span class="lines">@@ -130,10 +130,14 @@
</span><span class="cx">     &lt;div class='shape polygon'&gt;&lt;/div&gt;
</span><span class="cx">     &lt;div class='shape padded rectangle'&gt;&lt;/div&gt;
</span><span class="cx">     &lt;div class='shape padded rectangle border-box'&gt;&lt;/div&gt;
</span><del>-    &lt;div class='shape rectangle vertical-lr'&gt;&lt;/div&gt;
-    &lt;div class='shape rectangle vertical-rl'&gt;&lt;/div&gt;
-    &lt;div class='shape padded rectangle vertical-rl'&gt;&lt;/div&gt;
-    &lt;div class='shape padded rectangle vertical-rl border-box'&gt;&lt;/div&gt;
</del><ins>+    &lt;div class='vertical-lr'&gt;
+        &lt;div class='shape rectangle'&gt;&lt;/div&gt;
+    &lt;/div&gt;
+    &lt;div class='vertical-rl'&gt;
+        &lt;div class='shape rectangle'&gt;&lt;/div&gt;
+        &lt;div class='shape padded rectangle'&gt;&lt;/div&gt;
+        &lt;div class='shape padded rectangle border-box'&gt;&lt;/div&gt;
+    &lt;/div&gt;
</ins><span class="cx">     &lt;div class='shape padded content-box'&gt;&lt;/div&gt;
</span><span class="cx">     &lt;div class='shape padded raster-svg'&gt;&lt;/div&gt;
</span><span class="cx">     &lt;div class='shape padded raster-svg-complex'&gt;&lt;/div&gt;
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsinspectorprotocolpagedenyXFrameOptionexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/inspector-protocol/page/deny-X-FrameOption-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/inspector-protocol/page/deny-X-FrameOption-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/inspector-protocol/page/deny-X-FrameOption-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+CONSOLE MESSAGE: Refused to display 'deny-X-FrameOption.html' in a frame because it set 'X-Frame-Options' to 'deny'.
+
+deny-X-FrameOption.html:0:0
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsinspectorprotocolpagedenyXFrameOptionhtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/inspector-protocol/page/deny-X-FrameOption.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/inspector-protocol/page/deny-X-FrameOption.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/inspector-protocol/page/deny-X-FrameOption.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+&lt;html&gt;
+&lt;head&gt;
+&lt;script type=&quot;text/javascript&quot; src=&quot;../../http/tests/inspector-protocol/resources/protocol-test.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+function test()
+{
+    InspectorTest.importScript(&quot;../../../../inspector-protocol/resources/console-helper.js&quot;);
+    InspectorTest.sendCommand(&quot;Console.enable&quot;, {});
+
+    InspectorTest.eventHandler[&quot;Console.messageAdded&quot;] = function(messageObject)
+    {
+        var simplifiedMessage = ConsoleHelper.simplifiedConsoleMessage(messageObject);
+        // FIXME The line and column values will be zeros until this fix:
+        // https://bugs.webkit.org/show_bug.cgi?id=125340
+        // After this probably we should update the expected.txt.
+        InspectorTest.log(simplifiedMessage.location);
+
+        InspectorTest.completeTest();
+    }
+}
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body onload=&quot;runTest()&quot;&gt;
+  &lt;iframe id=foo&gt;&lt;/iframe&gt;
+  &lt;script&gt;
+    var fooFrame = document.getElementById('foo');
+    var fooDoc = fooFrame.contentWindow.document;
+    fooDoc.write('&lt;meta http-equiv=&quot;X-Frame-Options&quot; content=&quot;deny&quot;/&gt;');
+  &lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsinspectorprotocolresourcesshapeinfohelperjs"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/inspector-protocol/resources/shape-info-helper.js (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/inspector-protocol/resources/shape-info-helper.js        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/inspector-protocol/resources/shape-info-helper.js        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -47,9 +47,44 @@
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    function pathsRoughlyEqual(actual, expected) {
+        function coordinatesRoughlyEqual(actual, expected) {
+            // Some platforms may only store integer path points, so the potential
+            // differences between correct paths can be roughly half a unit
+            return (typeof actual === 'number'
+                &amp;&amp; typeof expected === 'number'
+                &amp;&amp; Math.abs(actual - expected) &lt; 0.5);
+        }
+
+        var expectedSubpathStart = 0, ei, ai;
+        for (var ei = 0, ai = 0; ai &lt; actual.length &amp;&amp; ei &lt; expected.length; ai++, ei++) {
+            if (expected[ei] === 'M')
+                expectedSubpathStart = ei;
+
+            if (actual[ai] === expected[ei]
+                || coordinatesRoughlyEqual(actual[ai], expected[ei]))
+                continue;
+
+            // Extrapolate the missing line to command if it is missing from actual.
+            // The choice to close the path with an explicit line to command is
+            // platform dependent.
+            if (actual[ai] === 'Z'
+                &amp;&amp; expected[ei] === 'L'
+                &amp;&amp; coordinatesRoughlyEqual(expected[expectedSubpathStart + 1], expected[ei + 1])
+                &amp;&amp; coordinatesRoughlyEqual(expected[expectedSubpathStart + 2], expected[ei + 2])) {
+                ei += 2;
+                ai--;
+                continue;
+            }
+            return false;
+        }
+        return true;
+    }
+
</ins><span class="cx">     function runShapeTest(testfn) {
</span><span class="cx">         var body = [
</span><span class="cx">             &quot;InspectorTest.shapeOutsideInfo = &quot; + shapeOutsideInfo.toString(),
</span><ins>+            &quot;InspectorTest.pathsRoughlyEqual = &quot; + pathsRoughlyEqual.toString(),
</ins><span class="cx">             &quot;(&quot; + testfn.toString() + &quot;)()&quot;
</span><span class="cx">         ];
</span><span class="cx">         window.test = new Function(
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsmediamediasourcemediasourcecanplaythroughhtml"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/media/media-source/media-source-canplaythrough.html (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/media/media-source/media-source-canplaythrough.html        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/media/media-source/media-source-canplaythrough.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -39,7 +39,7 @@
</span><span class="cx">     function sourceUpdated() {
</span><span class="cx">         source.activeSourceBuffers.length;
</span><span class="cx">         if (nextRequest &lt; totalLength) {
</span><del>-            sourceBuffer.appendBuffer(makeASample(nextRequest, nextRequest, 1, 1, 0));
</del><ins>+            sourceBuffer.appendBuffer(makeASample(nextRequest, nextRequest, 1, 1, SAMPLE_FLAG.SYNC));
</ins><span class="cx">             ++nextRequest;
</span><span class="cx">         }
</span><span class="cx">     }
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsmediamediasourcemediasourceendofstreamexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/media/media-source/media-source-end-of-stream-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/media/media-source/media-source-end-of-stream-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/media/media-source/media-source-end-of-stream-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,37 @@
</span><ins>+
+RUN(video.src = URL.createObjectURL(source))
+EVENT(sourceopen)
+RUN(source.endOfStream(&quot;network&quot;))
+EVENT(error)
+EXPECTED (video.error.code == '4') OK
+RUN(video.src = URL.createObjectURL(source))
+EVENT(sourceopen)
+RUN(source.endOfStream(&quot;decode&quot;))
+EVENT(error)
+EXPECTED (video.error.code == '4') OK
+RUN(video.src = URL.createObjectURL(source))
+EVENT(sourceopen)
+RUN(sourceBuffer = source.addSourceBuffer(&quot;video/mock; codecs=mock&quot;))
+RUN(sourceBuffer.appendBuffer(initSegment))
+EVENT(updateend)
+RUN(source.endOfStream(&quot;network&quot;))
+EVENT(error)
+EXPECTED (video.error.code == '2') OK
+RUN(video.src = URL.createObjectURL(source))
+EVENT(sourceopen)
+RUN(sourceBuffer = source.addSourceBuffer(&quot;video/mock; codecs=mock&quot;))
+RUN(sourceBuffer.appendBuffer(initSegment))
+EVENT(updateend)
+RUN(source.endOfStream(&quot;decode&quot;))
+EVENT(error)
+EXPECTED (video.error.code == '3') OK
+RUN(video.src = URL.createObjectURL(source))
+EVENT(sourceopen)
+RUN(sourceBuffer = source.addSourceBuffer(&quot;video/mock; codecs=mock&quot;))
+RUN(sourceBuffer.appendBuffer(initSegment))
+EVENT(updateend)
+RUN(source.endOfStream(&quot;&quot;))
+EVENT(suspend)
+EXPECTED (video.networkState == '1') OK
+END OF TEST
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsmediamediasourcemediasourceendofstreamhtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/media/media-source/media-source-end-of-stream.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/media/media-source/media-source-end-of-stream.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/media/media-source/media-source-end-of-stream.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,112 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+    &lt;title&gt;mock-media-source&lt;/title&gt;
+    &lt;script src=&quot;mock-media-source.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;../video-test.js&quot;&gt;&lt;/script&gt;
+    &lt;script&gt;
+    var source;
+    var sourceBuffer;
+    var initSegment;
+
+    if (window.internals)
+        internals.initializeMockMediaSource();
+
+    function runTest() {
+        findMediaElement();
+
+        source = new MediaSource();
+        waitForEventOn(source, 'sourceopen', sourceOpen1, false, true);
+        run('video.src = URL.createObjectURL(source)');
+    }
+
+    function sourceOpen1() {
+        waitForEventOnce('error', videoError1);
+        run('source.endOfStream(&quot;network&quot;)');
+    }
+
+    function videoError1() {
+        testExpected('video.error.code', MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED);
+
+        source = new MediaSource();
+        waitForEventOn(source, 'sourceopen', sourceOpen2, false, true);
+        run('video.src = URL.createObjectURL(source)');
+    }    
+
+    function sourceOpen2() {
+        waitForEventOnce('error', videoError2);
+        run('source.endOfStream(&quot;decode&quot;)');
+    }
+
+    function videoError2() {
+        testExpected('video.error.code', MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED);
+
+        source = new MediaSource();
+        waitForEventOn(source, 'sourceopen', sourceOpen3, false, true);
+        run('video.src = URL.createObjectURL(source)');
+    }
+
+    function sourceOpen3() {
+        run('sourceBuffer = source.addSourceBuffer(&quot;video/mock; codecs=mock&quot;)');
+        waitForEventOn(sourceBuffer, 'updateend', updateEnd3);
+        initSegment = makeAInit(100, [makeATrack(1, 'mock', TRACK_KIND.VIDEO)]);
+        run('sourceBuffer.appendBuffer(initSegment)');
+    }
+
+    function updateEnd3() {
+        waitForEventOnce('error', videoError3);
+        run('source.endOfStream(&quot;network&quot;)');
+    }
+
+    function videoError3() {
+        testExpected('video.error.code', MediaError.MEDIA_ERR_NETWORK);
+
+        source = new MediaSource();
+        waitForEventOn(source, 'sourceopen', sourceOpen4, false, true);
+        run('video.src = URL.createObjectURL(source)');
+    }
+
+    function sourceOpen4() {
+        run('sourceBuffer = source.addSourceBuffer(&quot;video/mock; codecs=mock&quot;)');
+        waitForEventOn(sourceBuffer, 'updateend', updateEnd4);
+        initSegment = makeAInit(100, [makeATrack(1, 'mock', TRACK_KIND.VIDEO)]);
+        run('sourceBuffer.appendBuffer(initSegment)');
+    }
+
+    function updateEnd4() {
+        waitForEventOnce('error', videoError4);
+        run('source.endOfStream(&quot;decode&quot;)');
+    }
+
+    function videoError4() {
+        testExpected('video.error.code', MediaError.MEDIA_ERR_DECODE);
+
+        source = new MediaSource();
+        waitForEventOn(source, 'sourceopen', sourceOpen5, false, true);
+        run('video.src = URL.createObjectURL(source)');
+    }
+
+    function sourceOpen5() {
+        run('sourceBuffer = source.addSourceBuffer(&quot;video/mock; codecs=mock&quot;)');
+        waitForEventOn(sourceBuffer, 'updateend', updateEnd5);
+        initSegment = makeAInit(100, [makeATrack(1, 'mock', TRACK_KIND.VIDEO)]);
+        run('sourceBuffer.appendBuffer(initSegment)');
+    }
+
+    function updateEnd5() {
+        waitForEventOnce('suspend', videoSuspend5);
+        run('source.endOfStream(&quot;&quot;)');
+    }
+
+    function videoSuspend5() {
+        testExpected('video.networkState', HTMLMediaElement.NETWORK_IDLE);
+
+        endTest();
+    }
+
+    &lt;/script&gt;
+&lt;/head&gt;
+&lt;body onload=&quot;runTest()&quot;&gt;
+    &lt;video&gt;&lt;/video&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsmediamediasourcemediasourceplayhtml"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/media/media-source/media-source-play.html (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/media/media-source/media-source-play.html        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/media/media-source/media-source-play.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -31,7 +31,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     function loadSamples() {
</span><del>-        sample = makeASample(0, 0, 10, 1, 0);
</del><ins>+        sample = makeASample(0, 0, 10, 1, SAMPLE_FLAG.SYNC);
</ins><span class="cx">         waitForEventOn(sourceBuffer, 'updateend', play, false, true);
</span><span class="cx">         run('sourceBuffer.appendBuffer(sample)');
</span><span class="cx">     }
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsmediamediasourcemediasourcevideoplaybackqualityexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/media/media-source/media-source-video-playback-quality-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/media/media-source/media-source-video-playback-quality-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/media/media-source/media-source-video-playback-quality-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,23 @@
</span><ins>+
+RUN(video.src = URL.createObjectURL(source))
+EVENT(sourceopen)
+RUN(sourceBuffer = source.addSourceBuffer(&quot;video/mock; codecs=mock&quot;))
+RUN(sourceBuffer.appendBuffer(initSegment))
+EVENT(updateend)
+Test that beginning a buffer with a non-sync sample results in that sample being dropped.
+RUN(sourceBuffer.appendBuffer(samples))
+EVENT(updateend)
+RUN(quality = video.getVideoPlaybackQuality())
+EXPECTED (quality.totalVideoFrames == '1') OK
+EXPECTED (quality.corruptedVideoFrames == '0') OK
+EXPECTED (quality.droppedVideoFrames == '1') OK
+EXPECTED (quality.totalFrameDelay == '0') OK
+RUN(sourceBuffer.appendBuffer(samples))
+EVENT(updateend)
+RUN(quality = video.getVideoPlaybackQuality())
+EXPECTED (quality.totalVideoFrames == '8') OK
+EXPECTED (quality.corruptedVideoFrames == '1') OK
+EXPECTED (quality.droppedVideoFrames == '2') OK
+EXPECTED (quality.totalFrameDelay == '3') OK
+END OF TEST
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsmediamediasourcemediasourcevideoplaybackqualityhtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/media/media-source/media-source-video-playback-quality.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/media/media-source/media-source-video-playback-quality.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/media/media-source/media-source-video-playback-quality.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,76 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+    &lt;title&gt;mock-media-source&lt;/title&gt;
+    &lt;script src=&quot;mock-media-source.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;../video-test.js&quot;&gt;&lt;/script&gt;
+    &lt;script&gt;
+    var source;
+    var sourceBuffer;
+    var initSegment;
+    var samples;
+    var quality;
+
+    if (window.internals)
+        internals.initializeMockMediaSource();
+
+    function runTest()
+    {
+        findMediaElement();
+
+        source = new MediaSource();
+        waitForEventOn(source, 'sourceopen', sourceOpen);
+        run('video.src = URL.createObjectURL(source)');
+    }
+
+    function sourceOpen()
+    {
+        run('sourceBuffer = source.addSourceBuffer(&quot;video/mock; codecs=mock&quot;)');
+        waitForEventOn(sourceBuffer, 'updateend', loadSample, false, true);
+        initSegment = makeAInit(8, [makeATrack(1, 'mock', TRACK_KIND.VIDEO)]);
+        run('sourceBuffer.appendBuffer(initSegment)');
+    }
+
+    function loadSample()
+    {
+        samples = concatenateSamples([makeASample(0, 0, 1, 1, SAMPLE_FLAG.NONE)]);
+        waitForEventOn(sourceBuffer, 'updateend', loadMoreSamples, false, true);
+        consoleWrite('Test that beginning a buffer with a non-sync sample results in that sample being dropped.')
+        run('sourceBuffer.appendBuffer(samples)');
+    }
+
+    function loadMoreSamples()
+    {
+        run('quality = video.getVideoPlaybackQuality()');
+        testExpected('quality.totalVideoFrames', 1);
+        testExpected('quality.corruptedVideoFrames', 0);
+        testExpected('quality.droppedVideoFrames', 1);
+        testExpected('quality.totalFrameDelay', 0);
+
+        samples = concatenateSamples([
+            makeASample(0, 0, 1, 1, SAMPLE_FLAG.SYNC),
+            makeASample(1, 1, 1, 1, SAMPLE_FLAG.CORRUPTED),
+            makeASample(2, 2, 1, 1, SAMPLE_FLAG.DROPPED),
+            makeASample(4, 4, 1, 1, SAMPLE_FLAG.DELAYED),
+            makeASample(5, 5, 1, 1, SAMPLE_FLAG.DELAYED),
+            makeASample(6, 6, 1, 1, SAMPLE_FLAG.DELAYED),
+            makeASample(7, 7, 1, 1, SAMPLE_FLAG.NONE),
+        ]);
+        waitForEventOn(sourceBuffer, 'updateend', samplesAdded, false, true);
+        run('sourceBuffer.appendBuffer(samples)');
+    }
+
+    function samplesAdded()
+    {
+        run('quality = video.getVideoPlaybackQuality()');
+        testExpected('quality.totalVideoFrames', 8);
+        testExpected('quality.corruptedVideoFrames', 1);
+        testExpected('quality.droppedVideoFrames', 2);
+        testExpected('quality.totalFrameDelay', 3);
+        endTest();
+    }
+    &lt;/script&gt;
+&lt;/head&gt;
+&lt;body onload=&quot;runTest()&quot;&gt;
+    &lt;video&gt;&lt;/video&gt;
+&lt;/body&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsmediamediasourcemockmediasourcejs"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/media/media-source/mock-media-source.js (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/media/media-source/mock-media-source.js        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/media/media-source/mock-media-source.js        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -11,6 +11,9 @@
</span><span class="cx"> var SAMPLE_FLAG = {
</span><span class="cx">     NONE: 0,
</span><span class="cx">     SYNC: 1 &lt;&lt; 0,
</span><ins>+    CORRUPTED: 1 &lt;&lt; 1,
+    DROPPED: 1 &lt;&lt; 2,
+    DELAYED: 1 &lt;&lt; 3,
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> function makeASample(presentationTime, decodeTime, duration, trackID, flags) {
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformeflTestExpectations"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/platform/efl/TestExpectations (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/efl/TestExpectations        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/platform/efl/TestExpectations        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1219,7 +1219,7 @@
</span><span class="cx"> webkit.org/b/89845 fast/forms/input-set-composition-scroll.html [ Failure ]
</span><span class="cx"> 
</span><span class="cx"> # These tests are failing after r122528.
</span><del>-webkit.org/b/91210 http/tests/w3c/webperf/approved/navigation-timing/html/test_performance_attributes_exist_in_object.html [ Failure ]
</del><ins>+webkit.org/b/91210 http/tests/w3c/webperf/approved/navigation-timing/html/test_performance_attributes_exist_in_object.html [ Failure Pass ]
</ins><span class="cx"> webkit.org/b/91210 http/tests/w3c/webperf/approved/navigation-timing/html/test_timing_xserver_redirect.html [ Failure ]
</span><span class="cx"> 
</span><span class="cx"> # Proximity Events is not supported.
</span><span class="lines">@@ -1360,7 +1360,7 @@
</span><span class="cx"> webkit.org/b/100846 inspector-protocol/debugger/terminate-dedicated-worker-while-paused.html [ Skip ]
</span><span class="cx"> 
</span><span class="cx"> # New media test introduced in r133660 fails.
</span><del>-webkit.org/b/101439 media/progress-events-generated-correctly.html [ Failure ]
</del><ins>+webkit.org/b/101439 media/progress-events-generated-correctly.html [ Failure Pass ]
</ins><span class="cx"> 
</span><span class="cx"> webkit.org/b/101456 fast/repaint/block-selection-gap-in-table-cell.html [ Missing ]
</span><span class="cx"> 
</span><span class="lines">@@ -1549,6 +1549,7 @@
</span><span class="cx"> webkit.org/b/114739 compositing/patterns/direct-pattern-compositing-padding.html [ ImageOnlyFailure Crash ]
</span><span class="cx"> webkit.org/b/114739 compositing/patterns/direct-pattern-compositing-position.html [ ImageOnlyFailure Crash ]
</span><span class="cx"> webkit.org/b/114739 compositing/patterns/direct-pattern-compositing-size.html [ ImageOnlyFailure Crash ]
</span><ins>+webkit.org/b/114739 compositing/patterns/direct-pattern-compositing-contain-no-repeat.html [ ImageOnlyFailure Crash ]
</ins><span class="cx"> 
</span><span class="cx"> # Newly added test in r148131 is failing.
</span><span class="cx"> webkit.org/b/114876 media/click-volume-bar-not-pausing.html [ Failure ]
</span><span class="lines">@@ -1634,8 +1635,8 @@
</span><span class="cx"> webkit.org/b/123617 fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-decoration-shorthand.html [ Failure ]
</span><span class="cx"> webkit.org/b/123617 fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-decoration-style.html [ Failure ]
</span><span class="cx"> webkit.org/b/123617 fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-underline-position.html [ Failure ]
</span><del>-webkit.org/b/123617 fast/css3-text/css3-text-decoration/text-decoration-color.html [ Failure ]
-webkit.org/b/123617 fast/css3-text/css3-text-decoration/text-decoration-line.html [ Failure ]
</del><ins>+webkit.org/b/123617 fast/css3-text/css3-text-decoration/text-decoration-color.html [ ImageOnlyFailure ]
+webkit.org/b/123617 fast/css3-text/css3-text-decoration/text-decoration-line.html [ ImageOnlyFailure ]
</ins><span class="cx"> webkit.org/b/123617 fast/css3-text/css3-text-decoration/text-decoration-skip/text-decoration-skip-roundtrip.html [ Failure ]
</span><span class="cx"> 
</span><span class="cx"> # Known WebGL conformance test failures, fails on Intel and AMD hardware
</span><span class="lines">@@ -1727,6 +1728,7 @@
</span><span class="cx"> webkit.org/b/124589 http/tests/cache/partitioned-cache.html [ Failure ]
</span><span class="cx"> 
</span><span class="cx"> webkit.org/b/118126 css3/flexbox/image-percent-max-height.html [ ImageOnlyFailure ]
</span><ins>+webkit.org/b/118126 fast/flexbox/image-percent-max-height.html [ ImageOnlyFailure ]
</ins><span class="cx"> 
</span><span class="cx"> webkit.org/b/124506 fast/block/float/float-with-fractional-height-vertical-lr.html [ ImageOnlyFailure ]
</span><span class="cx"> webkit.org/b/124506 fast/block/float/float-with-fractional-height.html [ ImageOnlyFailure ]
</span><span class="lines">@@ -1749,6 +1751,8 @@
</span><span class="cx"> 
</span><span class="cx"> webkit.org/b/124894 accessibility/fieldset-element.html [ Missing ]
</span><span class="cx"> 
</span><ins>+webkit.org/b/125506 accessibility/alt-tag-on-image-with-nonimage-role.html [ Failure ]
+
</ins><span class="cx"> # QuickTime plug-in not relevant to this port
</span><span class="cx"> plugins/quicktime-plugin-replacement.html [ Skip ]
</span><span class="cx"> 
</span><span class="lines">@@ -1763,3 +1767,32 @@
</span><span class="cx"> webkit.org/b/125352 fast/css/text-input-with-webkit-border-radius.html [ Failure ]
</span><span class="cx"> 
</span><span class="cx"> webkit.org/b/125355 fast/events/updateLayoutForHitTest.html [ Failure ]
</span><ins>+
+webkit.org/b/125458 fast/repaint/line-flow-with-floats-9.html [ Failure ]
+
+webkit.org/b/125459 fast/text/partial-textruns.html [ ImageOnlyFailure ]
+
+# Started failing after r154906
+webkit.org/b/125496 animations/cross-fade-border-image-source.html [ Failure ]
+webkit.org/b/125496 animations/cross-fade-list-style-image.html [ Failure ]
+webkit.org/b/125496 animations/cross-fade-webkit-mask-box-image.html [ Failure ]
+webkit.org/b/125496 animations/cross-fade-webkit-mask-image.html [ Failure ]
+
+# Added in r157725, failing due differences in media player controls rendering
+webkit.org/b/125517 compositing/regions/floated-region-with-transformed-child.html [ ImageOnlyFailure ]
+webkit.org/b/125517 compositing/regions/propagate-region-box-shadow-border-padding-for-video.html [ ImageOnlyFailure ]
+webkit.org/b/125517 compositing/regions/transform-transparent-positioned-video-inside-region.html [ ImageOnlyFailure ]
+
+# Added in r157725, failing due insigificant pixel differences on bot
+webkit.org/b/125517 compositing/regions/crash-transform-inside-region.html [ ImageOnlyFailure ]
+webkit.org/b/125517 compositing/regions/move-layer-from-one-region-to-another.html [ ImageOnlyFailure ]
+webkit.org/b/125517 compositing/regions/propagate-region-box-shadow-border-padding.html [ ImageOnlyFailure ]
+webkit.org/b/125517 compositing/regions/region-as-layer-in-another-flowthread.html [ ImageOnlyFailure ]
+webkit.org/b/125517 compositing/regions/transformed-layer-inside-transformed-layer.html [ ImageOnlyFailure ]
+webkit.org/b/125517 compositing/regions/z-index-update.html [ ImageOnlyFailure ]
+webkit.org/b/125517 compositing/regions/z-index.html [ ImageOnlyFailure ]
+
+webkit.org/b/125573 compositing/backgrounds/fixed-background-on-descendant.html [ ImageOnlyFailure ]
+webkit.org/b/125573 compositing/backgrounds/fixed-backgrounds.html [ ImageOnlyFailure ]
+
+webkit.org/b/125578 compositing/images/positioned-image-content-rect.html [ ImageOnlyFailure ]
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformeflaccessibilitymediaemitsobjectreplacementexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/platform/efl/accessibility/media-emits-object-replacement-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/efl/accessibility/media-emits-object-replacement-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/platform/efl/accessibility/media-emits-object-replacement-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -3,20 +3,20 @@
</span><span class="cx"> a  b
</span><span class="cx"> End of test
</span><span class="cx"> AXRole: AXWebArea 
</span><del>-    AXRole: AXDiv AXValue: a &lt;obj&gt; b
</del><ins>+    AXRole: AXSection AXValue: a &lt;obj&gt; b
</ins><span class="cx">         AXRole: AXEmbedded 
</span><span class="cx">             AXRole: AXToolbar 
</span><span class="cx">                 AXRole: AXToolbar 
</span><span class="cx">                     AXRole: AXButton 
</span><span class="cx">                     AXRole: AXSlider 
</span><span class="cx">     AXRole: AXGroup AXValue: &lt;\n&gt;
</span><del>-    AXRole: AXDiv AXValue: a &lt;obj&gt; b
</del><ins>+    AXRole: AXSection AXValue: a &lt;obj&gt; b
</ins><span class="cx">         AXRole: AXEmbedded 
</span><span class="cx">             AXRole: AXToolbar 
</span><span class="cx">                 AXRole: AXToolbar 
</span><span class="cx">                     AXRole: AXButton 
</span><span class="cx">                     AXRole: AXSlider 
</span><del>-    AXRole: AXDiv AXValue: End of test
</del><ins>+    AXRole: AXSection AXValue: End of test
</ins><span class="cx"> This tests ensures that if video or audio tags are used, they will emit an object replacement character in a range for string operation.
</span><span class="cx"> 
</span><span class="cx"> On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformeflfastformsvalidationmessageappearanceexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/platform/efl/fast/forms/validation-message-appearance-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/efl/fast/forms/validation-message-appearance-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/platform/efl/fast/forms/validation-message-appearance-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,44 +1,37 @@
</span><span class="cx"> layer at (0,0) size 800x600
</span><span class="cx">   RenderView at (0,0) size 800x600
</span><del>-layer at (0,0) size 800x58
-  RenderBlock {HTML} at (0,0) size 800x58
-    RenderBody {BODY} at (8,8) size 784x42
-      RenderBlock {FORM} at (0,0) size 784x42
-        RenderTextControl {INPUT} at (2,6) size 327x26 [bgcolor=#FFFFFF]
-        RenderText {#text} at (331,12) size 16x16
-          text run at (331,12) width 16: &quot; &quot;
-        RenderButton {INPUT} at (349,2) size 130x38 [bgcolor=#C0C0C0] [border: (2px outset #C0C0C0)]
-          RenderBlock (anonymous) at (17,10) size 96x16
-            RenderText at (0,0) size 96x16
-              text run at (0,0) width 96: &quot;Submit&quot;
</del><ins>+layer at (0,0) size 800x60
+  RenderBlock {HTML} at (0,0) size 800x60
+    RenderBody {BODY} at (8,8) size 784x44
+      RenderBlock {FORM} at (0,0) size 784x44
+        RenderTextControl {INPUT} at (2,6) size 192x28 [bgcolor=#FFFFFF]
+        RenderText {#text} at (196,12) size 4x17
+          text run at (196,12) width 4: &quot; &quot;
+        RenderButton {INPUT} at (202,2) size 84x40 [bgcolor=#C0C0C0] [border: (2px outset #C0C0C0)]
+          RenderBlock (anonymous) at (17,10) size 50x18
+            RenderText at (0,0) size 50x17
+              text run at (0,0) width 50: &quot;Submit&quot;
</ins><span class="cx">         RenderText {#text} at (0,0) size 0x0
</span><del>-layer at (14,20) size 320x16
-  RenderBlock {DIV} at (4,6) size 320x16
-layer at (10,40) size 220x212
-  RenderBlock (positioned) zI: 2147483647 {DIV} at (10,40) size 220x212
-layer at (10,40) size 220x16 scrollHeight 25
</del><ins>+layer at (14,20) size 185x18
+  RenderBlock {DIV} at (4,6) size 185x18
+layer at (10,42) size 220x108
+  RenderBlock (positioned) zI: 2147483647 {DIV} at (10,42) size 220x108
+layer at (10,42) size 220x16 scrollHeight 25
</ins><span class="cx">   RenderBlock {DIV} at (0,0) size 220x16
</span><del>-layer at (10,52) size 220x196
-  RenderFlexibleBox zI: 2147483644 {DIV} at (0,16) size 220x196 [border: (2px solid #440000)]
-    RenderBlock {DIV} at (10,10) size 0x176
-    RenderBlock {DIV} at (10,10) size 200x176
-      RenderBlock {DIV} at (0,0) size 200x48
-        RenderText {#text} at (0,0) size 176x48
-          text run at (0,0) width 176: &quot;Please fill&quot;
-          text run at (0,16) width 128: &quot;out this&quot;
-          text run at (0,32) width 96: &quot;field.&quot;
-      RenderBlock {DIV} at (0,48) size 200x128
-        RenderText {#text} at (0,0) size 128x48
-          text run at (0,0) width 128: &quot;Needs at&quot;
-          text run at (0,16) width 112: &quot;least 8&quot;
-          text run at (0,32) width 128: &quot;letters.&quot;
-        RenderBR {BR} at (128,32) size 0x16
-        RenderText {#text} at (0,48) size 192x80
-          text run at (0,48) width 160: &quot;Should not&quot;
-          text run at (0,64) width 192: &quot;be identical&quot;
-          text run at (0,80) width 128: &quot;with the&quot;
-          text run at (0,96) width 112: &quot;current&quot;
-          text run at (0,112) width 144: &quot;password.&quot;
-layer at (42,40) size 18x18 backgroundClip at (10,40) size 220x16 clip at (10,40) size 220x16 outlineClip at (10,40) size 220x16
</del><ins>+layer at (10,54) size 220x92
+  RenderFlexibleBox zI: 2147483644 {DIV} at (0,16) size 220x92 [border: (2px solid #440000)]
+    RenderBlock {DIV} at (10,10) size 0x72
+    RenderBlock {DIV} at (10,10) size 200x72
+      RenderBlock {DIV} at (0,0) size 200x18
+        RenderText {#text} at (0,0) size 173x17
+          text run at (0,0) width 173: &quot;Please fill out this field.&quot;
+      RenderBlock {DIV} at (0,18) size 200x54
+        RenderText {#text} at (0,0) size 166x17
+          text run at (0,0) width 166: &quot;Needs at least 8 letters.&quot;
+        RenderBR {BR} at (166,0) size 0x17
+        RenderText {#text} at (0,18) size 196x35
+          text run at (0,18) width 196: &quot;Should not be identical with&quot;
+          text run at (0,36) width 152: &quot;the current password.&quot;
+layer at (42,42) size 18x18 backgroundClip at (10,42) size 220x16 clip at (10,42) size 220x16 outlineClip at (10,42) size 220x16
</ins><span class="cx">   RenderBlock (relative positioned) zI: 2147483645 {DIV} at (0,0) size 18x18 [bgcolor=#F8ECEC] [border: (2px solid #440000) none (2px solid #440000)]
</span><span class="cx"> caret: position 0 of child 0 {DIV} of {#document-fragment} of child 1 {INPUT} of child 0 {FORM} of body
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformeflfastparserentitycommentintextareaexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/platform/efl/fast/parser/entity-comment-in-textarea-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/efl/fast/parser/entity-comment-in-textarea-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/platform/efl/fast/parser/entity-comment-in-textarea-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -8,6 +8,5 @@
</span><span class="cx"> layer at (10,10) size 201x42 clip at (11,11) size 199x40
</span><span class="cx">   RenderTextControl {TEXTAREA} at (2,2) size 201x42 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
</span><span class="cx">     RenderBlock {DIV} at (3,3) size 195x18
</span><del>-      RenderText {#text} at (0,0) size 27x17
</del><ins>+      RenderText {#text} at (0,0) size 23x17
</ins><span class="cx">         text run at (0,0) width 23: &quot;&lt;!--&quot;
</span><del>-        text run at (23,0) width 4: &quot; &quot;
</del></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformeflfasttableemptycellsexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/platform/efl/fast/table/empty-cells-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/efl/fast/table/empty-cells-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/platform/efl/fast/table/empty-cells-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -78,8 +78,8 @@
</span><span class="cx">       RenderTable {TABLE} at (0,292) size 785x29 [border: (2px solid #000000)]
</span><span class="cx">         RenderTableSection {TBODY} at (2,2) size 781x25
</span><span class="cx">           RenderTableRow {TR} at (0,0) size 781x25
</span><del>-            RenderTableCell {TD} at (0,12) size 0x0 [bgcolor=#FFFF00] [r=0 c=0 rs=1 cs=1]
-            RenderTableCell {TD} at (0,3) size 781x18 [bgcolor=#FF0000] [r=0 c=1 rs=1 cs=1]
</del><ins>+            RenderTableCell {TD} at (0,12) size 391x0 [bgcolor=#FFFF00] [r=0 c=0 rs=1 cs=1]
+            RenderTableCell {TD} at (391,3) size 390x18 [bgcolor=#FF0000] [r=0 c=1 rs=1 cs=1]
</ins><span class="cx">               RenderText {#text} at (0,0) size 261x17
</span><span class="cx">                 text run at (0,0) width 261: &quot;First cell empty but has background color&quot;
</span><span class="cx">       RenderTable {TABLE} at (0,321) size 785x54 [border: (2px solid #000000)]
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformeflhttptestsmiscwillsendrequestreturnsnullonredirectexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/platform/efl/http/tests/misc/will-send-request-returns-null-on-redirect-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/efl/http/tests/misc/will-send-request-returns-null-on-redirect-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/platform/efl/http/tests/misc/will-send-request-returns-null-on-redirect-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,8 +0,0 @@
</span><del>-http://127.0.0.1:8000/misc/resources/redirect-to-http-url.php - willSendRequest &lt;NSURLRequest URL http://127.0.0.1:8000/misc/resources/redirect-to-http-url.php, main document URL http://127.0.0.1:8000/misc/will-send-request-returns-null-on-redirect.html, http method GET&gt; redirectResponse (null)
-&lt;unknown&gt; - didFinishLoading
-http://127.0.0.1:8000/misc/resources/redirect-to-http-url.php - willSendRequest &lt;NSURLRequest URL http://www.example.com/, main document URL http://www.example.com/, http method GET&gt; redirectResponse &lt;NSURLResponse http://127.0.0.1:8000/misc/resources/redirect-to-http-url.php, http status code 302&gt;
-Returning null for this redirect
-http://127.0.0.1:8000/misc/resources/redirect-to-http-url.php - didFailLoadingWithError: &lt;NSError domain NSURLErrorDomain, code -999&gt;
-https://bugs.webkit.org/show_bug.cgi?id=27595
-This test checks to make sure that things behave as expected when the resource load delegate returns null in response to willSendRequest.
-
</del></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformeflhttptestssecurityXFrameOptionsxframeoptionsdenymetatagexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/platform/efl/http/tests/security/XFrameOptions/x-frame-options-deny-meta-tag-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/efl/http/tests/security/XFrameOptions/x-frame-options-deny-meta-tag-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/platform/efl/http/tests/security/XFrameOptions/x-frame-options-deny-meta-tag-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,19 +0,0 @@
</span><del>-http://127.0.0.1:8000/security/XFrameOptions/resources/x-frame-options-deny-meta-tag-subframe.html - willSendRequest &lt;NSURLRequest URL http://127.0.0.1:8000/security/XFrameOptions/resources/x-frame-options-deny-meta-tag-subframe.html, main document URL http://127.0.0.1:8000/security/XFrameOptions/x-frame-options-deny-meta-tag.html, http method GET&gt; redirectResponse (null)
-&lt;unknown&gt; - didFinishLoading
-http://127.0.0.1:8000/security/XFrameOptions/resources/x-frame-options-deny-meta-tag-subframe.html - didReceiveResponse &lt;NSURLResponse http://127.0.0.1:8000/security/XFrameOptions/resources/x-frame-options-deny-meta-tag-subframe.html, http status code 200&gt;
-http://127.0.0.1:8000/security/XFrameOptions/resources/x-frame-options-deny-meta-tag-subframe.html - didFailLoadingWithError: &lt;NSError domain NSURLErrorDomain, code -999, failing URL &quot;http://127.0.0.1:8000/security/XFrameOptions/resources/x-frame-options-deny-meta-tag-subframe.html&quot;&gt;
-CONSOLE MESSAGE: Refused to display 'http://127.0.0.1:8000/security/XFrameOptions/resources/x-frame-options-deny-meta-tag-subframe.html' in a frame because it set 'X-Frame-Options' to 'deny'.
-data:, - willSendRequest &lt;NSURLRequest URL data:,, main document URL http://127.0.0.1:8000/security/XFrameOptions/x-frame-options-deny-meta-tag.html, http method GET&gt; redirectResponse (null)
-data:, - didReceiveResponse &lt;NSURLResponse data:,, http status code 0&gt;
-data:, - didFinishLoading
-CONSOLE MESSAGE: Blocked a frame with origin &quot;http://127.0.0.1:8000&quot; from accessing a frame with origin &quot;null&quot;.  The frame requesting access has a protocol of &quot;http&quot;, the frame being accessed has a protocol of &quot;data&quot;. Protocols must match.
-
-CONSOLE MESSAGE: line 13: PASS: Could not read contentWindow.location.href
-There should be no content in the iframe below
-
-
-
---------
-Frame: '&lt;!--framePath //&lt;!--frame0--&gt;--&gt;'
---------
-
</del></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformeflhttptestssecurityXFrameOptionsxframeoptionsdenymetatagparentsameorigindenyexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/platform/efl/http/tests/security/XFrameOptions/x-frame-options-deny-meta-tag-parent-same-origin-deny-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/efl/http/tests/security/XFrameOptions/x-frame-options-deny-meta-tag-parent-same-origin-deny-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/platform/efl/http/tests/security/XFrameOptions/x-frame-options-deny-meta-tag-parent-same-origin-deny-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,18 +0,0 @@
</span><del>-http://localhost:8000/security/XFrameOptions/resources/x-frame-options-deny-meta-tag-subframe-parent-same-origin-deny.html - willSendRequest &lt;NSURLRequest URL http://localhost:8000/security/XFrameOptions/resources/x-frame-options-deny-meta-tag-subframe-parent-same-origin-deny.html, main document URL http://127.0.0.1:8000/security/XFrameOptions/x-frame-options-deny-meta-tag-parent-same-origin-deny.html, http method GET&gt; redirectResponse (null)
-&lt;unknown&gt; - didFinishLoading
-http://localhost:8000/security/XFrameOptions/resources/x-frame-options-deny-meta-tag-subframe-parent-same-origin-deny.html - didReceiveResponse &lt;NSURLResponse http://localhost:8000/security/XFrameOptions/resources/x-frame-options-deny-meta-tag-subframe-parent-same-origin-deny.html, http status code 200&gt;
-http://localhost:8000/security/XFrameOptions/resources/x-frame-options-deny-meta-tag-subframe-parent-same-origin-deny.html - didFailLoadingWithError: &lt;NSError domain NSURLErrorDomain, code -999, failing URL &quot;http://localhost:8000/security/XFrameOptions/resources/x-frame-options-deny-meta-tag-subframe-parent-same-origin-deny.html&quot;&gt;
-CONSOLE MESSAGE: Refused to display 'http://localhost:8000/security/XFrameOptions/resources/x-frame-options-deny-meta-tag-subframe-parent-same-origin-deny.html' in a frame because it set 'X-Frame-Options' to 'sameorigin'.
-data:, - willSendRequest &lt;NSURLRequest URL data:,, main document URL http://127.0.0.1:8000/security/XFrameOptions/x-frame-options-deny-meta-tag-parent-same-origin-deny.html, http method GET&gt; redirectResponse (null)
-data:, - didReceiveResponse &lt;NSURLResponse data:,, http status code 0&gt;
-CONSOLE MESSAGE: Blocked a frame with origin &quot;http://127.0.0.1:8000&quot; from accessing a frame with origin &quot;null&quot;.  The frame requesting access has a protocol of &quot;http&quot;, the frame being accessed has a protocol of &quot;data&quot;. Protocols must match.
-
-CONSOLE MESSAGE: line 13: PASS: Could not read contentWindow.location.href
-There should be no content in the iframe below
-
-
-
---------
-Frame: '&lt;!--framePath //&lt;!--frame0--&gt;--&gt;'
---------
-
</del></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformeflwk1accessibilityimagemap2expectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/platform/efl-wk1/accessibility/image-map2-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/efl-wk1/accessibility/image-map2-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/platform/efl-wk1/accessibility/image-map2-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> Image map - test 2 - 2 Links (alt tags)
</span><span class="cx"> ----------------------
</span><del>-AXRole: AXDiv
</del><ins>+AXRole: AXSection
</ins><span class="cx"> AXParent: AXWebArea
</span><span class="cx"> AXChildren: 0
</span><span class="cx"> AXPosition: { 8.000000, 8.000000 }
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformeflwk1accessibilitylistsexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/platform/efl-wk1/accessibility/lists-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/efl-wk1/accessibility/lists-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/platform/efl-wk1/accessibility/lists-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -84,7 +84,7 @@
</span><span class="cx"> AXChecked: 0
</span><span class="cx"> AXPlatformAttributes: toolkit:WebKitEfl
</span><span class="cx"> ------------
</span><del>-AXRole: AXHorizontalRule
</del><ins>+AXRole: AXSeparator
</ins><span class="cx"> AXParent: AXWebArea
</span><span class="cx"> AXChildren: 0
</span><span class="cx"> AXPosition: { 8.000000, 288.000000 }
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformeflwk1accessibilitytransformedelementexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/platform/efl-wk1/accessibility/transformed-element-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/efl-wk1/accessibility/transformed-element-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/platform/efl-wk1/accessibility/transformed-element-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> hello
</span><del>-AXRole: AXDiv
</del><ins>+AXRole: AXSection
</ins><span class="cx"> AXParent: AXWebArea
</span><span class="cx"> AXChildren: 1
</span><span class="cx"> AXPosition: { 8.000000, 9.000000 }
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformeflwk2TestExpectations"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/platform/efl-wk2/TestExpectations (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/efl-wk2/TestExpectations        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/platform/efl-wk2/TestExpectations        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -376,4 +376,23 @@
</span><span class="cx"> Bug(EFL) fast/media/media-query-list-05.html [ Failure ]
</span><span class="cx"> Bug(EFL) fast/media/media-query-list-06.html [ Failure ]
</span><span class="cx"> 
</span><ins>+# Failing after r150802
+webkit.org/b/125350 compositing/tiled-layers-hidpi.html [ Failure ]
+webkit.org/b/125350 fast/backgrounds/gradient-background-leakage-hidpi.html [ Failure ]
</ins><span class="cx"> webkit.org/b/125350 fast/canvas/canvas-as-image-hidpi.html [ Failure ]
</span><ins>+
+webkit.org/b/125577 compositing/overlap-blending/reflection-opacity-huge.html [ ImageOnlyFailure ]
+
+webkit.org/b/125631 compositing/columns/composited-lr-paginated-repaint.html [ Failure ]
+webkit.org/b/125631 compositing/columns/composited-rl-paginated-repaint.html [ Failure ]
+
+webkit.org/b/125632 compositing/layer-creation/fixed-position-transformed-outside-view.html [ Failure ]
+
+webkit.org/b/125633 compositing/repaint/fixed-background-scroll.html [ Failure ]
+
+# Failing after r159030
+webkit.org/b/125634 compositing/repaint/invalidations-on-composited-layers.html [ Failure ]
+
+webkit.org/b/125635 compositing/repaint/positioned-movement.html [ Failure ]
+
+webkit.org/b/125636 compositing/video/video-object-fit.html [ Failure ]
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformeflwk2accessibilityimagemap2expectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/platform/efl-wk2/accessibility/image-map2-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/efl-wk2/accessibility/image-map2-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/platform/efl-wk2/accessibility/image-map2-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> Image map - test 2 - 2 Links (alt tags)
</span><span class="cx"> ----------------------
</span><del>-AXRole: AXDiv
</del><ins>+AXRole: AXSection
</ins><span class="cx"> AXParent: AXWebArea
</span><span class="cx"> AXChildren: 0
</span><span class="cx"> AXPosition: { 0.000000, 0.000000 }
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformeflwk2accessibilitylistsexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/platform/efl-wk2/accessibility/lists-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/efl-wk2/accessibility/lists-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/platform/efl-wk2/accessibility/lists-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -84,7 +84,7 @@
</span><span class="cx"> AXChecked: 0
</span><span class="cx"> AXPlatformAttributes: toolkit:WebKitEfl
</span><span class="cx"> ------------
</span><del>-AXRole: AXHorizontalRule
</del><ins>+AXRole: AXSeparator
</ins><span class="cx"> AXParent: AXWebArea
</span><span class="cx"> AXChildren: 0
</span><span class="cx"> AXPosition: { 0.000000, 0.000000 }
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformeflwk2accessibilitytransformedelementexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/platform/efl-wk2/accessibility/transformed-element-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/efl-wk2/accessibility/transformed-element-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/platform/efl-wk2/accessibility/transformed-element-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> hello
</span><del>-AXRole: AXDiv
</del><ins>+AXRole: AXSection
</ins><span class="cx"> AXParent: AXWebArea
</span><span class="cx"> AXChildren: 1
</span><span class="cx"> AXPosition: { 0.000000, 0.000000 }
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkTestExpectations"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/platform/gtk/TestExpectations (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/TestExpectations        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/platform/gtk/TestExpectations        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -293,11 +293,12 @@
</span><span class="cx"> webkit.org/b/99065 http/tests/media/media-source/video-media-source-state-changes.html [ Timeout ]
</span><span class="cx"> webkit.org/b/99065 http/tests/media/media-source/video-media-source-zero-byte-append-in-ended-state.html [ Timeout ]
</span><span class="cx"> 
</span><del>-webkit.org/b/99065  media/media-source/media-source-track-enabled.html [ Failure ]
-webkit.org/b/99065  media/media-source/media-source-tracks.html [ Failure ]
-webkit.org/b/99065  media/media-source/media-source-append-failed.html [ Timeout ]
-webkit.org/b/99065  media/media-source/media-source-canplaythrough.html [ Timeout ]
-webkit.org/b/99065  media/media-source/media-source-play.html [ Timeout ]
</del><ins>+webkit.org/b/99065 media/media-source/media-source-track-enabled.html [ Failure ]
+webkit.org/b/99065 media/media-source/media-source-tracks.html [ Failure ]
+webkit.org/b/99065 media/media-source/media-source-append-failed.html [ Timeout ]
+webkit.org/b/99065 media/media-source/media-source-canplaythrough.html [ Timeout ]
+webkit.org/b/99065 media/media-source/media-source-play.html [ Timeout ]
+webkit.org/b/99065 media/media-source/media-source-end-of-stream.html [ Timeout ]
</ins><span class="cx"> 
</span><span class="cx"> # Encrypted Media Extensions are not enabled.
</span><span class="cx"> webkit.org/b/99024 media/encrypted-media [ Failure Timeout ]
</span><span class="lines">@@ -493,7 +494,6 @@
</span><span class="cx"> webkit.org/b/118665 fast/regions/shape-inside/shape-inside-on-multiple-regions-with-negative-shape-top.html [ ImageOnlyFailure Pass ]
</span><span class="cx"> webkit.org/b/118665 fast/regions/top-overflow-out-of-second-region.html [ ImageOnlyFailure Pass Missing ]
</span><span class="cx"> webkit.org/b/118665 fast/regions/webkit-flow-float-unable-to-push.html [ ImageOnlyFailure Pass ]
</span><del>-webkit.org/b/118665 fast/regions/auto-size/autoheight-correct-region-for-lines-2.html [ ImageOnlyFailure Crash Pass ]
</del><span class="cx"> 
</span><span class="cx"> # The feature is enabled at build-time, but the whole test set is failing.
</span><span class="cx"> webkit.org/b/120665 media/track/in-band [ Skip ]
</span><span class="lines">@@ -755,6 +755,8 @@
</span><span class="cx"> 
</span><span class="cx"> webkit.org/b/124513 media/video-ended-event-negative-playback.html [ Failure Pass ]
</span><span class="cx"> 
</span><ins>+webkit.org/b/125407 plugins/plugin-clip-subframe.html [ Failure Pass ]
+
</ins><span class="cx"> #////////////////////////////////////////////////////////////////////////////////////////
</span><span class="cx"> # End of Flaky tests
</span><span class="cx"> #////////////////////////////////////////////////////////////////////////////////////////
</span><span class="lines">@@ -951,6 +953,8 @@
</span><span class="cx"> webkit.org/b/98380 accessibility/th-as-title-ui.html [ Failure ]
</span><span class="cx"> webkit.org/b/98382 accessibility/visible-elements.html [ Failure ]
</span><span class="cx"> 
</span><ins>+webkit.org/b/125506 accessibility/alt-tag-on-image-with-nonimage-role.html [ Failure ]
+
</ins><span class="cx"> # Blur and focus events are not received for the following tests.
</span><span class="cx"> Bug(GTK) fast/events/blur-focus-window-should-blur-focus-element.html [ Failure ]
</span><span class="cx"> Bug(GTK) fast/dom/HTMLDocument/hasFocus.html [ Failure ]
</span><span class="lines">@@ -1435,8 +1439,6 @@
</span><span class="cx"> 
</span><span class="cx"> webkit.org/b/118420 [ Release ] fast/dom/gc-dom-tree-lifetime.html [ Failure ]
</span><span class="cx"> 
</span><del>-webkit.org/b/118595 fast/regions/auto-size/autoheight-correct-region-for-lines-2.html [ ImageOnlyFailure ]
-
</del><span class="cx"> # May take too long on the bots.
</span><span class="cx"> Bug(GTK) mathml/very-large-stretchy-operators.html [ Pass Timeout ]
</span><span class="cx"> 
</span><span class="lines">@@ -1514,6 +1516,8 @@
</span><span class="cx"> 
</span><span class="cx"> webkit.org/b/125348 accessibility/document-attributes.html [ Failure ]
</span><span class="cx"> 
</span><ins>+webkit.org/b/125406 fast/regions/relative-in-absolute-borders-overflow.html [ ImageOnlyFailure ]
+
</ins><span class="cx"> #////////////////////////////////////////////////////////////////////////////////////////
</span><span class="cx"> # End of Tests failing
</span><span class="cx"> #////////////////////////////////////////////////////////////////////////////////////////
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilityariarolesunignoredexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/platform/gtk/accessibility/aria-roles-unignored-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/aria-roles-unignored-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/aria-roles-unignored-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -18,7 +18,7 @@
</span><span class="cx"> PASS element.role is 'AXRole: AXHeading'
</span><span class="cx"> PASS element.role is 'AXRole: AXForm'
</span><span class="cx"> PASS element.role is 'AXRole: AXButton'
</span><del>-PASS element.role is 'AXRole: AXDiv'
</del><ins>+PASS element.role is 'AXRole: AXSection'
</ins><span class="cx"> PASS element.role is 'AXRole: AXTextField'
</span><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilityariarolesunignoredhtml"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/platform/gtk/accessibility/aria-roles-unignored.html (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/aria-roles-unignored.html        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/aria-roles-unignored.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -51,7 +51,7 @@
</span><span class="cx"> 
</span><span class="cx">     // Divs
</span><span class="cx">     element = webArea.childAtIndex(5);
</span><del>-    shouldBe(&quot;element.role&quot;, &quot;'AXRole: AXDiv'&quot;);
</del><ins>+    shouldBe(&quot;element.role&quot;, &quot;'AXRole: AXSection'&quot;);
</ins><span class="cx">     element = webArea.childAtIndex(6);
</span><span class="cx">     shouldBe(&quot;element.role&quot;, &quot;'AXRole: AXTextField'&quot;);
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilityentryandpasswordexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/platform/gtk/accessibility/entry-and-password-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/entry-and-password-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/entry-and-password-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -4,7 +4,7 @@
</span><span class="cx">     AXRole: AXForm AXValue: &lt;obj&gt; &lt;obj&gt;
</span><span class="cx">         AXRole: AXTextField AXValue: 123
</span><span class="cx">         AXRole: AXPasswordField AXValue: •••
</span><del>-    AXRole: AXDiv AXValue: End of test
</del><ins>+    AXRole: AXSection AXValue: End of test
</ins><span class="cx"> This tests that the text associated with entry and password fields is correct.
</span><span class="cx"> 
</span><span class="cx"> On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilityimagemap2expectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/platform/gtk/accessibility/image-map2-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/image-map2-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/image-map2-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> Image map - test 2 - 2 Links (alt tags)
</span><span class="cx"> ----------------------
</span><del>-AXRole: AXDiv
</del><ins>+AXRole: AXSection
</ins><span class="cx"> AXParent: AXWebArea
</span><span class="cx"> AXChildren: 0
</span><span class="cx"> AXPosition: { 8.000000, 8.000000 }
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitylistsexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/platform/gtk/accessibility/lists-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/lists-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/lists-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -84,7 +84,7 @@
</span><span class="cx"> AXChecked: 0
</span><span class="cx"> AXPlatformAttributes: toolkit:WebKitGtk
</span><span class="cx"> ------------
</span><del>-AXRole: AXHorizontalRule
</del><ins>+AXRole: AXSeparator
</ins><span class="cx"> AXParent: AXWebArea
</span><span class="cx"> AXChildren: 0
</span><span class="cx"> AXPosition: { 8.000000, 276.000000 }
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitymediaemitsobjectreplacementexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/platform/gtk/accessibility/media-emits-object-replacement-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/media-emits-object-replacement-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/media-emits-object-replacement-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -3,20 +3,20 @@
</span><span class="cx"> a  b
</span><span class="cx"> End of test
</span><span class="cx"> AXRole: AXWebArea 
</span><del>-    AXRole: AXDiv AXValue: a &lt;obj&gt; b
</del><ins>+    AXRole: AXSection AXValue: a &lt;obj&gt; b
</ins><span class="cx">         AXRole: AXEmbedded 
</span><span class="cx">             AXRole: AXToolbar 
</span><span class="cx">                 AXRole: AXToolbar 
</span><span class="cx">                     AXRole: AXButton 
</span><span class="cx">                     AXRole: AXSlider 
</span><span class="cx">     AXRole: AXGroup AXValue: &lt;\n&gt;
</span><del>-    AXRole: AXDiv AXValue: a &lt;obj&gt; b
</del><ins>+    AXRole: AXSection AXValue: a &lt;obj&gt; b
</ins><span class="cx">         AXRole: AXEmbedded 
</span><span class="cx">             AXRole: AXToolbar 
</span><span class="cx">                 AXRole: AXToolbar 
</span><span class="cx">                     AXRole: AXButton 
</span><span class="cx">                     AXRole: AXSlider 
</span><del>-    AXRole: AXDiv AXValue: End of test
</del><ins>+    AXRole: AXSection AXValue: End of test
</ins><span class="cx"> This tests ensures that if video or audio tags are used, they will emit an object replacement character in a range for string operation.
</span><span class="cx"> 
</span><span class="cx"> On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilityobjectwithtitleexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/platform/gtk/accessibility/object-with-title-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/object-with-title-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/object-with-title-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -8,7 +8,7 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> PASS child.role is 'AXRole: AXList'
</span><del>-PASS child.role is 'AXRole: AXDiv'
</del><ins>+PASS child.role is 'AXRole: AXSection'
</ins><span class="cx"> PASS child.role is 'AXRole: AXList'
</span><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilityobjectwithtitlehtml"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/platform/gtk/accessibility/object-with-title.html (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/object-with-title.html        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/object-with-title.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -23,7 +23,7 @@
</span><span class="cx">         shouldBe(&quot;child.role&quot;, &quot;'AXRole: AXList'&quot;);
</span><span class="cx"> 
</span><span class="cx">         child = webArea.childAtIndex(1);
</span><del>-        shouldBe(&quot;child.role&quot;, &quot;'AXRole: AXDiv'&quot;);
</del><ins>+        shouldBe(&quot;child.role&quot;, &quot;'AXRole: AXSection'&quot;);
</ins><span class="cx"> 
</span><span class="cx">         child = child.childAtIndex(0);
</span><span class="cx">         shouldBe(&quot;child.role&quot;, &quot;'AXRole: AXList'&quot;);
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilityreplacedobjectsinanonymousblocksexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/platform/gtk/accessibility/replaced-objects-in-anonymous-blocks-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/replaced-objects-in-anonymous-blocks-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/replaced-objects-in-anonymous-blocks-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -20,12 +20,12 @@
</span><span class="cx">                 AXRole: AXWebArea 
</span><span class="cx">     AXRole: AXGroup AXValue: &lt;obj&gt;
</span><span class="cx">         AXRole: AXTextField AXValue: text area
</span><del>-    AXRole: AXDiv AXValue: Div&lt;\n&gt;&lt;obj&gt;
</del><ins>+    AXRole: AXSection AXValue: Div&lt;\n&gt;&lt;obj&gt;
</ins><span class="cx">         AXRole: AXButton 
</span><span class="cx">     AXRole: AXHeading AXValue: Heading&lt;\n&gt;&lt;obj&gt;&lt;\n&gt;&lt;obj&gt;
</span><span class="cx">         AXRole: AXButton 
</span><span class="cx">         AXRole: AXImage 
</span><del>-    AXRole: AXDiv AXValue: End of test
</del><ins>+    AXRole: AXSection AXValue: End of test
</ins><span class="cx"> This tests that the text associated with replaced objects in an anonymous block is correct.
</span><span class="cx"> 
</span><span class="cx"> On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilityspansparagraphsanddivsexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/platform/gtk/accessibility/spans-paragraphs-and-divs-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/spans-paragraphs-and-divs-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/spans-paragraphs-and-divs-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -34,17 +34,17 @@
</span><span class="cx"> PASS link.childrenCount is 0
</span><span class="cx"> PASS element.role is 'AXRole: AXParagraph'
</span><span class="cx"> PASS element.childrenCount is 0
</span><del>-PASS element.role is 'AXRole: AXDiv'
</del><ins>+PASS element.role is 'AXRole: AXSection'
</ins><span class="cx"> PASS element.childrenCount is 1
</span><span class="cx"> PASS link.role is 'AXRole: AXLink'
</span><span class="cx"> PASS link.childrenCount is 0
</span><del>-PASS element.role is 'AXRole: AXDiv'
</del><ins>+PASS element.role is 'AXRole: AXSection'
</ins><span class="cx"> PASS element.childrenCount is 0
</span><del>-PASS element.role is 'AXRole: AXDiv'
</del><ins>+PASS element.role is 'AXRole: AXSection'
</ins><span class="cx"> PASS element.childrenCount is 1
</span><span class="cx"> PASS link.role is 'AXRole: AXLink'
</span><span class="cx"> PASS link.childrenCount is 0
</span><del>-PASS element.role is 'AXRole: AXDiv'
</del><ins>+PASS element.role is 'AXRole: AXSection'
</ins><span class="cx"> PASS element.childrenCount is 0
</span><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilityspansparagraphsanddivshtml"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/platform/gtk/accessibility/spans-paragraphs-and-divs.html (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/spans-paragraphs-and-divs.html        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/spans-paragraphs-and-divs.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -83,7 +83,7 @@
</span><span class="cx">     shouldBe(&quot;element.childrenCount&quot;, &quot;0&quot;);
</span><span class="cx"> 
</span><span class="cx">     element = webArea.childAtIndex(4);
</span><del>-    shouldBe(&quot;element.role&quot;, &quot;'AXRole: AXDiv'&quot;);
</del><ins>+    shouldBe(&quot;element.role&quot;, &quot;'AXRole: AXSection'&quot;);
</ins><span class="cx">     shouldBe(&quot;element.childrenCount&quot;, &quot;1&quot;);
</span><span class="cx"> 
</span><span class="cx">     link = element.childAtIndex(0);
</span><span class="lines">@@ -91,11 +91,11 @@
</span><span class="cx">     shouldBe(&quot;link.childrenCount&quot;, &quot;0&quot;);
</span><span class="cx"> 
</span><span class="cx">     element = webArea.childAtIndex(5);
</span><del>-    shouldBe(&quot;element.role&quot;, &quot;'AXRole: AXDiv'&quot;);
</del><ins>+    shouldBe(&quot;element.role&quot;, &quot;'AXRole: AXSection'&quot;);
</ins><span class="cx">     shouldBe(&quot;element.childrenCount&quot;, &quot;0&quot;);
</span><span class="cx"> 
</span><span class="cx">     element = webArea.childAtIndex(6);
</span><del>-    shouldBe(&quot;element.role&quot;, &quot;'AXRole: AXDiv'&quot;);
</del><ins>+    shouldBe(&quot;element.role&quot;, &quot;'AXRole: AXSection'&quot;);
</ins><span class="cx">     shouldBe(&quot;element.childrenCount&quot;, &quot;1&quot;);
</span><span class="cx"> 
</span><span class="cx">     link = element.childAtIndex(0);
</span><span class="lines">@@ -103,7 +103,7 @@
</span><span class="cx">     shouldBe(&quot;link.childrenCount&quot;, &quot;0&quot;);
</span><span class="cx"> 
</span><span class="cx">     element = webArea.childAtIndex(7);
</span><del>-    shouldBe(&quot;element.role&quot;, &quot;'AXRole: AXDiv'&quot;);
</del><ins>+    shouldBe(&quot;element.role&quot;, &quot;'AXRole: AXSection'&quot;);
</ins><span class="cx">     shouldBe(&quot;element.childrenCount&quot;, &quot;0&quot;);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitytextatoffsetembeddedobjectsexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-embedded-objects-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-embedded-objects-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-embedded-objects-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+This is one line containing two  embedded objects  in the middle.
+
+This tests the ability to get element text for different granularities and offsets.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS content.characterAtOffset(32) is ', 32, 33'
+PASS content.wordAtOffset(32) is 'two ï¿¼ , 28, 34'
+PASS content.characterAtOffset(33) is ' , 33, 34'
+PASS content.wordAtOffset(33) is 'two ï¿¼ , 28, 34'
+PASS content.characterAtOffset(34) is 'e, 34, 35'
+PASS content.wordAtOffset(34) is 'embedded , 34, 43'
+PASS content.characterAtOffset(42) is ' , 42, 43'
+PASS content.wordAtOffset(42) is 'embedded , 34, 43'
+PASS content.characterAtOffset(51) is ', 51, 52'
+PASS content.wordAtOffset(51) is 'objects ï¿¼ , 43, 53'
+PASS content.characterAtOffset(52) is ' , 52, 53'
+PASS content.wordAtOffset(52) is 'objects ï¿¼ , 43, 53'
+PASS content.characterAtOffset(53) is 'i, 53, 54'
+PASS content.wordAtOffset(53) is 'in , 53, 56'
+PASS content.characterAtOffset(55) is ' , 55, 56'
+PASS content.wordAtOffset(55) is 'in , 53, 56'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitytextatoffsetembeddedobjectshtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-embedded-objects.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-embedded-objects.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-embedded-objects.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,37 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body id=&quot;body&quot;&gt;
+&lt;p&gt;This is one line containing two &lt;img&gt; embedded objects &lt;img&gt; in the middle.&lt;/p&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    description(&quot;This tests the ability to get element text for different granularities and offsets.&quot;);
+    if (window.accessibilityController) {
+        document.getElementById(&quot;body&quot;).focus();
+        var webArea = accessibilityController.focusedElement;
+        var content = webArea.childAtIndex(0);
+
+        shouldBe(&quot;content.characterAtOffset(32)&quot;, &quot;'\357\277\274, 32, 33'&quot;);
+        shouldBe(&quot;content.wordAtOffset(32)&quot;, &quot;'two \357\277\274 , 28, 34'&quot;);
+        shouldBe(&quot;content.characterAtOffset(33)&quot;, &quot;' , 33, 34'&quot;);
+        shouldBe(&quot;content.wordAtOffset(33)&quot;, &quot;'two \357\277\274 , 28, 34'&quot;);
+        shouldBe(&quot;content.characterAtOffset(34)&quot;, &quot;'e, 34, 35'&quot;);
+        shouldBe(&quot;content.wordAtOffset(34)&quot;, &quot;'embedded , 34, 43'&quot;);
+        shouldBe(&quot;content.characterAtOffset(42)&quot;, &quot;' , 42, 43'&quot;);
+        shouldBe(&quot;content.wordAtOffset(42)&quot;, &quot;'embedded , 34, 43'&quot;);
+        shouldBe(&quot;content.characterAtOffset(51)&quot;, &quot;'\357\277\274, 51, 52'&quot;);
+        shouldBe(&quot;content.wordAtOffset(51)&quot;, &quot;'objects \357\277\274 , 43, 53'&quot;);
+        shouldBe(&quot;content.characterAtOffset(52)&quot;, &quot;' , 52, 53'&quot;);
+        shouldBe(&quot;content.wordAtOffset(52)&quot;, &quot;'objects \357\277\274 , 43, 53'&quot;);
+        shouldBe(&quot;content.characterAtOffset(53)&quot;, &quot;'i, 53, 54'&quot;);
+        shouldBe(&quot;content.wordAtOffset(53)&quot;, &quot;'in , 53, 56'&quot;);
+        shouldBe(&quot;content.characterAtOffset(55)&quot;, &quot;' , 55, 56'&quot;);
+        shouldBe(&quot;content.wordAtOffset(55)&quot;, &quot;'in , 53, 56'&quot;);
+    }
+&lt;/script&gt;
+&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitytextatoffsetnewlinesexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-newlines-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-newlines-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-newlines-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,19 @@
</span><ins>+This is a test. This is the second sentence. And this the third.
+
+This tests the ability to get element text for different granularities and offsets.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS content.characterAtOffset(0) is 'T, 0, 1'
+PASS content.wordAtOffset(0) is 'This , 0, 5'
+PASS content.wordAtOffset(4) is 'This , 0, 5'
+PASS content.wordAtOffset(10) is 'test. , 10, 16'
+PASS content.wordAtOffset(58) is 'third., 58, 64'
+PASS content.sentenceAtOffset(0) is 'This is a test. , 0, 16'
+PASS content.sentenceAtOffset(15) is 'This is a test. , 0, 16'
+PASS content.lineAtOffset(0) is 'This is a test. This is the second sentence. And this the third., 0, 64'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitytextatoffsetnewlineshtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-newlines.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-newlines.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-newlines.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,32 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body id=&quot;body&quot;&gt;
+&lt;p id=&quot;content&quot;&gt;This is a test. 
+
+This
+   is the second sentence. And this the third.&lt;/p&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    description(&quot;This tests the ability to get element text for different granularities and offsets.&quot;);
+    if (window.accessibilityController) {
+        document.getElementById(&quot;body&quot;).focus();
+        var webArea = accessibilityController.focusedElement;
+        var content = webArea.childAtIndex(0);
+
+        shouldBe(&quot;content.characterAtOffset(0)&quot;, &quot;'T, 0, 1'&quot;);
+        shouldBe(&quot;content.wordAtOffset(0)&quot;, &quot;'This , 0, 5'&quot;);
+        shouldBe(&quot;content.wordAtOffset(4)&quot;, &quot;'This , 0, 5'&quot;);
+        shouldBe(&quot;content.wordAtOffset(10)&quot;, &quot;'test. , 10, 16'&quot;);
+        shouldBe(&quot;content.wordAtOffset(58)&quot;, &quot;'third., 58, 64'&quot;);
+        shouldBe(&quot;content.sentenceAtOffset(0)&quot;, &quot;'This is a test. , 0, 16'&quot;);
+        shouldBe(&quot;content.sentenceAtOffset(15)&quot;, &quot;'This is a test. , 0, 16'&quot;);
+        shouldBe(&quot;content.lineAtOffset(0)&quot;, &quot;'This is a test. This is the second sentence. And this the third., 0, 64'&quot;);
+    }
+&lt;/script&gt;
+&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitytextatoffsetpreformattedexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-preformatted-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-preformatted-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-preformatted-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+        
+        first line
+        second line
+        
+This tests the ability to get element text for different granularities and offsets.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS content.lineAtOffset(0) is '\t\n, 0, 2'
+PASS content.lineAtOffset(2) is '\tfirst line\n, 2, 14'
+PASS content.lineAtOffset(14) is '\tsecond line\n, 14, 27'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitytextatoffsetpreformattedhtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-preformatted.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-preformatted.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-preformatted.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body id=&quot;body&quot;&gt;
+&lt;pre id=&quot;content&quot;&gt;
+        
+        first line
+        second line
+        
+&lt;/pre&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    description(&quot;This tests the ability to get element text for different granularities and offsets.&quot;);
+    if (window.accessibilityController) {
+        document.getElementById(&quot;body&quot;).focus();
+        var webArea = accessibilityController.focusedElement;
+        var content = webArea.childAtIndex(0);
+
+        shouldBe(&quot;content.lineAtOffset(0)&quot;, &quot;'\\t\\n, 0, 2'&quot;);
+        shouldBe(&quot;content.lineAtOffset(2)&quot;, &quot;'\\tfirst line\\n, 2, 14'&quot;);
+        shouldBe(&quot;content.lineAtOffset(14)&quot;, &quot;'\\tsecond line\\n, 14, 27'&quot;);
+    }
+&lt;/script&gt;
+&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitytextatoffsetsimpleexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-simple-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-simple-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-simple-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,19 @@
</span><ins>+This is a test. This is the second sentence. And this the third.
+
+This tests the ability to get element text for different granularities and offsets.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS content.characterAtOffset(0) is 'T, 0, 1'
+PASS content.wordAtOffset(0) is 'This , 0, 5'
+PASS content.wordAtOffset(4) is 'This , 0, 5'
+PASS content.wordAtOffset(10) is 'test. , 10, 16'
+PASS content.wordAtOffset(58) is 'third., 58, 64'
+PASS content.sentenceAtOffset(0) is 'This is a test. , 0, 16'
+PASS content.sentenceAtOffset(15) is 'This is a test. , 0, 16'
+PASS content.lineAtOffset(0) is 'This is a test. This is the second sentence. And this the third., 0, 64'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitytextatoffsetsimplehtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-simple.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-simple.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-simple.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body id=&quot;body&quot;&gt;
+&lt;p id=&quot;content&quot;&gt;This is a test. This is the second sentence. And this the third.&lt;/p&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    description(&quot;This tests the ability to get element text for different granularities and offsets.&quot;);
+    if (window.accessibilityController) {
+        document.getElementById(&quot;body&quot;).focus();
+        var webArea = accessibilityController.focusedElement;
+        var content = webArea.childAtIndex(0);
+
+        shouldBe(&quot;content.characterAtOffset(0)&quot;, &quot;'T, 0, 1'&quot;);
+        shouldBe(&quot;content.wordAtOffset(0)&quot;, &quot;'This , 0, 5'&quot;);
+        shouldBe(&quot;content.wordAtOffset(4)&quot;, &quot;'This , 0, 5'&quot;);
+        shouldBe(&quot;content.wordAtOffset(10)&quot;, &quot;'test. , 10, 16'&quot;);
+        shouldBe(&quot;content.wordAtOffset(58)&quot;, &quot;'third., 58, 64'&quot;);
+        shouldBe(&quot;content.sentenceAtOffset(0)&quot;, &quot;'This is a test. , 0, 16'&quot;);
+        shouldBe(&quot;content.sentenceAtOffset(15)&quot;, &quot;'This is a test. , 0, 16'&quot;);
+        shouldBe(&quot;content.lineAtOffset(0)&quot;, &quot;'This is a test. This is the second sentence. And this the third., 0, 64'&quot;);
+    }
+&lt;/script&gt;
+&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitytextatoffsetspecialcharsexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-special-chars-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-special-chars-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-special-chars-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,19 @@
</span><ins>+« This is a paragraph with “special” characters inside. »
+
+List item with some text that wraps across different lines.
+List item with some text that wraps across different lines.
+
+This tests the ability to get element text for different granularities and offsets.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS paragraph.lineAtOffset(0) is '« This is a paragraph with â€œspecial” characters inside. », 0, 57'
+PASS listitem.lineAtOffset(3) is '• List item , 0, 12'
+PASS listitem.lineAtOffset(13) is 'with some , 12, 22'
+PASS listitem.lineAtOffset(3) is '• List item , 0, 12'
+PASS listitem.lineAtOffset(13) is 'with some , 12, 22'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitytextatoffsetspecialcharshtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-special-chars.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-special-chars.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-special-chars.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body id=&quot;body&quot;&gt;
+&lt;p&gt;&amp;laquo;&amp;nbsp;This is a paragraph with &amp;ldquo;special&amp;rdquo; characters inside.&amp;nbsp;&amp;raquo;&lt;/p&gt;&lt;ul&gt;&lt;li style='max-width:70px;'&gt;List item with some text that wraps across different lines.&lt;/li&gt;&lt;li style='max-width:70px;'&gt;&lt;p&gt;List item with some text that wraps across different lines.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    description(&quot;This tests the ability to get element text for different granularities and offsets.&quot;);
+    if (window.accessibilityController) {
+        document.getElementById(&quot;body&quot;).focus();
+        var webArea = accessibilityController.focusedElement;
+
+        var paragraph = webArea.childAtIndex(0);
+        shouldBe(&quot;paragraph.lineAtOffset(0)&quot;, &quot;'\302\253\302\240This is a paragraph with \342\200\234special\342\200\235 characters inside.\302\240\302\273, 0, 57'&quot;);
+
+        var list = webArea.childAtIndex(1);
+        var listitem = list.childAtIndex(0);
+        shouldBe(&quot;listitem.lineAtOffset(3)&quot;, &quot;'\342\200\242 List item , 0, 12'&quot;);
+        shouldBe(&quot;listitem.lineAtOffset(13)&quot;, &quot;'with some , 12, 22'&quot;);
+
+        var listitem = list.childAtIndex(1);
+        shouldBe(&quot;listitem.lineAtOffset(3)&quot;, &quot;'\342\200\242 List item , 0, 12'&quot;);
+        shouldBe(&quot;listitem.lineAtOffset(13)&quot;, &quot;'with some , 12, 22'&quot;);
+    }
+&lt;/script&gt;
+&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitytextatoffsettextareaexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-textarea-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-textarea-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-textarea-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,19 @@
</span><ins>+
+This tests the ability to get element text for different granularities and offsets.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS content.characterAtOffset(0) is 'T, 0, 1'
+PASS content.wordAtOffset(0) is 'This , 0, 5'
+PASS content.wordAtOffset(4) is 'This , 0, 5'
+PASS content.wordAtOffset(10) is 'test. , 10, 16'
+PASS content.wordAtOffset(58) is 'third., 58, 64'
+PASS content.sentenceAtOffset(0) is 'This is a test. , 0, 16'
+PASS content.sentenceAtOffset(15) is 'This is a test. , 0, 16'
+PASS content.lineAtOffset(0) is 'This is a test. This is the second sentence. And this the third., 0, 64'
+PASS content.lineAtOffset(0) is 'foo bar baz, 0, 11'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitytextatoffsettextareahtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-textarea.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-textarea.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-textarea.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body id=&quot;body&quot;&gt;
+&lt;textarea id=&quot;content&quot; cols='80'&gt;This is a test. This is the second sentence. And this the third.&lt;/textarea&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    description(&quot;This tests the ability to get element text for different granularities and offsets.&quot;);
+    if (window.accessibilityController) {
+        document.getElementById(&quot;content&quot;).focus();
+        var content = accessibilityController.focusedElement;
+
+        shouldBe(&quot;content.characterAtOffset(0)&quot;, &quot;'T, 0, 1'&quot;);
+        shouldBe(&quot;content.wordAtOffset(0)&quot;, &quot;'This , 0, 5'&quot;);
+        shouldBe(&quot;content.wordAtOffset(4)&quot;, &quot;'This , 0, 5'&quot;);
+        shouldBe(&quot;content.wordAtOffset(10)&quot;, &quot;'test. , 10, 16'&quot;);
+        shouldBe(&quot;content.wordAtOffset(58)&quot;, &quot;'third., 58, 64'&quot;);
+        shouldBe(&quot;content.sentenceAtOffset(0)&quot;, &quot;'This is a test. , 0, 16'&quot;);
+        shouldBe(&quot;content.sentenceAtOffset(15)&quot;, &quot;'This is a test. , 0, 16'&quot;);
+        shouldBe(&quot;content.lineAtOffset(0)&quot;, &quot;'This is a test. This is the second sentence. And this the third., 0, 64'&quot;);
+
+        document.getElementById(&quot;content&quot;).value = &quot;foo bar baz&quot;;
+        shouldBe(&quot;content.lineAtOffset(0)&quot;, &quot;'foo bar baz, 0, 11'&quot;);
+    }
+&lt;/script&gt;
+&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitytextatoffsettextinputexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-textinput-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-textinput-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-textinput-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,19 @@
</span><ins>+
+This tests the ability to get element text for different granularities and offsets.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS content.characterAtOffset(0) is 'T, 0, 1'
+PASS content.wordAtOffset(0) is 'This , 0, 5'
+PASS content.wordAtOffset(4) is 'This , 0, 5'
+PASS content.wordAtOffset(10) is 'test. , 10, 16'
+PASS content.wordAtOffset(58) is 'third., 58, 64'
+PASS content.sentenceAtOffset(0) is 'This is a test. , 0, 16'
+PASS content.sentenceAtOffset(15) is 'This is a test. , 0, 16'
+PASS content.lineAtOffset(0) is 'This is a test. This is the second sentence. And this the third., 0, 64'
+PASS content.lineAtOffset(0) is 'foo bar baz, 0, 11'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitytextatoffsettextinputhtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-textinput.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-textinput.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-textinput.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body id=&quot;body&quot;&gt;
+&lt;input id=&quot;content&quot; type='text' size='80' value='This is a test. This is the second sentence. And this the third.'/&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    description(&quot;This tests the ability to get element text for different granularities and offsets.&quot;);
+    if (window.accessibilityController) {
+        document.getElementById(&quot;content&quot;).focus();
+        var content = accessibilityController.focusedElement;
+
+        shouldBe(&quot;content.characterAtOffset(0)&quot;, &quot;'T, 0, 1'&quot;);
+        shouldBe(&quot;content.wordAtOffset(0)&quot;, &quot;'This , 0, 5'&quot;);
+        shouldBe(&quot;content.wordAtOffset(4)&quot;, &quot;'This , 0, 5'&quot;);
+        shouldBe(&quot;content.wordAtOffset(10)&quot;, &quot;'test. , 10, 16'&quot;);
+        shouldBe(&quot;content.wordAtOffset(58)&quot;, &quot;'third., 58, 64'&quot;);
+        shouldBe(&quot;content.sentenceAtOffset(0)&quot;, &quot;'This is a test. , 0, 16'&quot;);
+        shouldBe(&quot;content.sentenceAtOffset(15)&quot;, &quot;'This is a test. , 0, 16'&quot;);
+        shouldBe(&quot;content.lineAtOffset(0)&quot;, &quot;'This is a test. This is the second sentence. And this the third., 0, 64'&quot;);
+
+        document.getElementById(&quot;content&quot;).value = &quot;foo bar baz&quot;;
+        shouldBe(&quot;content.lineAtOffset(0)&quot;, &quot;'foo bar baz, 0, 11'&quot;);
+    }
+&lt;/script&gt;
+&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitytextatoffsetwrappedlinesexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-wrapped-lines-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-wrapped-lines-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-wrapped-lines-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+This is one line wrapped because of the maximum width of its container.
+
+This is another line wrapped
+because of one forced
+line break in the middle.
+
+This tests the ability to get element text for different granularities and offsets.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS paragraph.characterAtOffset(16) is ' , 16, 17'
+PASS paragraph.wordAtOffset(16) is 'line , 12, 17'
+PASS paragraph.lineAtOffset(17) is 'wrapped because , 17, 33'
+PASS paragraph.characterAtOffset(28) is '\n, 28, 29'
+PASS paragraph.wordAtOffset(28) is 'wrapped\n, 21, 29'
+PASS paragraph.lineAtOffset(30) is 'because of one forced\n, 29, 51'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitytextatoffsetwrappedlineshtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-wrapped-lines.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-wrapped-lines.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-at-offset-wrapped-lines.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body id=&quot;body&quot;&gt;
+&lt;p style='max-width:120px;'&gt;This is one line wrapped because of the maximum width of its container.&lt;/p&gt;&lt;p&gt;This is another line wrapped&lt;br&gt;because of one forced&lt;br&gt;line break in the middle.&lt;/p&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    description(&quot;This tests the ability to get element text for different granularities and offsets.&quot;);
+    if (window.accessibilityController) {
+        document.getElementById(&quot;body&quot;).focus();
+        var webArea = accessibilityController.focusedElement;
+
+        var paragraph = webArea.childAtIndex(0);
+        shouldBe(&quot;paragraph.characterAtOffset(16)&quot;, &quot;' , 16, 17'&quot;);
+        shouldBe(&quot;paragraph.wordAtOffset(16)&quot;, &quot;'line , 12, 17'&quot;);
+        shouldBe(&quot;paragraph.lineAtOffset(17)&quot;, &quot;'wrapped because , 17, 33'&quot;);
+
+        paragraph = webArea.childAtIndex(1);
+        shouldBe(&quot;paragraph.characterAtOffset(28)&quot;, &quot;'\\n, 28, 29'&quot;);
+        shouldBe(&quot;paragraph.wordAtOffset(28)&quot;, &quot;'wrapped\\n, 21, 29'&quot;);
+        shouldBe(&quot;paragraph.lineAtOffset(30)&quot;, &quot;'because of one forced\\n, 29, 51'&quot;);
+    }
+&lt;/script&gt;
+&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangecomboboxexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-combo-box-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-combo-box-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-combo-box-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,19 @@
</span><ins>+ 
+This tests the ability to get element text for a specified range.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS combobox.stringForRange(0, -1) is ''
+PASS popup.stringForRange(0, -1) is ''
+PASS option.stringForRange(0, -1) is 'An option in a combo box'
+PASS combobox.stringForRange(0, -1) is ''
+PASS popup.stringForRange(0, -1) is ''
+PASS option.stringForRange(0, -1) is 'foo'
+PASS option.stringForRange(0, 2) is 'fo'
+PASS option.stringForRange(0, -1) is 'bar'
+PASS option.stringForRange(1, 3) is 'ar'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangecomboboxhtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-combo-box.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-combo-box.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-combo-box.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,42 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body id=&quot;body&quot;&gt;
+&lt;select&gt;&lt;option selected value='foo'&gt;An option in a combo box&lt;/option&gt;&lt;/select&gt;
+&lt;select&gt;&lt;option selected value='foo'&gt;foo&lt;/option&gt;&lt;option value='bar'&gt;bar&lt;/option&gt;&lt;/select&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    description(&quot;This tests the ability to get element text for a specified range.&quot;);
+    if (window.accessibilityController) {
+        document.getElementById(&quot;body&quot;).focus();
+        var webArea = accessibilityController.focusedElement;
+        var panel = webArea.childAtIndex(0);
+
+        var combobox = panel.childAtIndex(0);
+        var popup = combobox.childAtIndex(0);
+        var option = popup.childAtIndex(0);
+
+        shouldBe(&quot;combobox.stringForRange(0, -1)&quot;, &quot;''&quot;);
+        shouldBe(&quot;popup.stringForRange(0, -1)&quot;, &quot;''&quot;);
+        shouldBe(&quot;option.stringForRange(0, -1)&quot;, &quot;'An option in a combo box'&quot;);
+
+        combobox = panel.childAtIndex(1);
+        popup = combobox.childAtIndex(0);
+        option = popup.childAtIndex(0);
+
+        shouldBe(&quot;combobox.stringForRange(0, -1)&quot;, &quot;''&quot;);
+        shouldBe(&quot;popup.stringForRange(0, -1)&quot;, &quot;''&quot;);
+        shouldBe(&quot;option.stringForRange(0, -1)&quot;, &quot;'foo'&quot;);
+        shouldBe(&quot;option.stringForRange(0, 2)&quot;, &quot;'fo'&quot;);
+
+        option = popup.childAtIndex(1);
+        shouldBe(&quot;option.stringForRange(0, -1)&quot;, &quot;'bar'&quot;);
+        shouldBe(&quot;option.stringForRange(1, 3)&quot;, &quot;'ar'&quot;);
+    }
+&lt;/script&gt;
+&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangeembeddedobjectsexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-embedded-objects-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-embedded-objects-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-embedded-objects-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+Choose: foo bar (pick one)
+
+Choose:  (pick one)
+
+
+
+This tests the ability to get element text for a specified range.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS paragraph1.stringForRange(0, -1) is 'Choose: ï¿¼foo ï¿¼bar (pick one)'
+PASS paragraph2.stringForRange(0, -1) is 'Choose: ï¿¼ (pick one)'
+PASS paragraph3.stringForRange(0, -1) is ''
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangeembeddedobjectshtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-embedded-objects.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-embedded-objects.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-embedded-objects.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,28 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body id=&quot;body&quot;&gt;
+  &lt;p&gt;Choose: &lt;input value='foo' type='checkbox'/&gt;foo &lt;input value='bar' type='checkbox'/&gt;bar (pick one)&lt;/p&gt;
+  &lt;p&gt;Choose: &lt;select name='foo'&gt;&lt;option&gt;bar&lt;/option&gt;&lt;option&gt;baz&lt;/option&gt;&lt;/select&gt; (pick one)&lt;/p&gt;
+  &lt;p&gt;&lt;input name='foobarbutton' value='foobar' type='button'/&gt;&lt;/p&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    description(&quot;This tests the ability to get element text for a specified range.&quot;);
+    if (window.accessibilityController) {
+        document.getElementById(&quot;body&quot;).focus();
+        var webArea = accessibilityController.focusedElement;
+
+        var paragraph1 = webArea.childAtIndex(0);
+        var paragraph2 = webArea.childAtIndex(1);
+        var paragraph3 = webArea.childAtIndex(2);
+        shouldBe(&quot;paragraph1.stringForRange(0, -1)&quot;, &quot;'Choose: \357\277\274foo \357\277\274bar (pick one)'&quot;);
+        shouldBe(&quot;paragraph2.stringForRange(0, -1)&quot;, &quot;'Choose: \357\277\274 (pick one)'&quot;);
+        shouldBe(&quot;paragraph3.stringForRange(0, -1)&quot;, &quot;'\357\277\274'&quot;);
+    }
+&lt;/script&gt;
+&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangeentryandpasswordexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-entry-and-password-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-entry-and-password-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-entry-and-password-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+ 
+This tests the ability to get element text for a specified range.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS entry.stringForRange(0, -1) is 'foo bar baz'
+PASS password.stringForRange(0, -1) is '•••••••••••'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangeentryandpasswordhtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-entry-and-password.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-entry-and-password.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-entry-and-password.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body id=&quot;body&quot;&gt;
+&lt;input type='text' name='foo' value='foo bar baz' /&gt;
+&lt;input type='password' name='bar' value='foo bar baz' /&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    description(&quot;This tests the ability to get element text for a specified range.&quot;);
+    if (window.accessibilityController) {
+        document.getElementById(&quot;body&quot;).focus();
+        var webArea = accessibilityController.focusedElement;
+        var panel = webArea.childAtIndex(0);
+        var entry = panel.childAtIndex(0);
+        var password = panel.childAtIndex(1);
+        shouldBe(&quot;entry.stringForRange(0, -1)&quot;, &quot;'foo bar baz'&quot;);
+        shouldBe(&quot;password.stringForRange(0, -1)&quot;, &quot;'\342\200\242\342\200\242\342\200\242\342\200\242\342\200\242\342\200\242\342\200\242\342\200\242\342\200\242\342\200\242\342\200\242'&quot;);
+    }
+&lt;/script&gt;
+&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangeextraneouswhitespaceexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-extraneous-whitespace-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-extraneous-whitespace-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-extraneous-whitespace-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+This paragraph is borked!
+
+This tests the ability to get element text for a specified range.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS paragraph.stringForRange(0, 25) is 'This paragraph is borked!'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangeextraneouswhitespacehtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-extraneous-whitespace.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-extraneous-whitespace.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-extraneous-whitespace.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,24 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body id=&quot;body&quot;&gt;
+&lt;p&gt;This
+                          paragraph
+                                                      is
+                                                                                                                                                                                                                                                                                                                                                                            borked!&lt;/p&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    description(&quot;This tests the ability to get element text for a specified range.&quot;);
+    if (window.accessibilityController) {
+        document.getElementById(&quot;body&quot;).focus();
+        var webArea = accessibilityController.focusedElement;
+        var paragraph = webArea.childAtIndex(0);
+        shouldBe(&quot;paragraph.stringForRange(0, 25)&quot;, &quot;'This paragraph is borked!'&quot;);
+    }
+&lt;/script&gt;
+&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangeformattedexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-formatted-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-formatted-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-formatted-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+This is a test.
+
+Hello world.
+This sentence is green.
+This one is not.
+This tests the ability to get element text for a specified range.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS paragraph.stringForRange(0, -1) is 'This is a test.'
+PASS block.stringForRange(0, 53) is 'Hello world.\nThis sentence is green.\nThis one is not.'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangeformattedhtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-formatted.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-formatted.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-formatted.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,23 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body id=&quot;body&quot;&gt;
+&lt;p id=&quot;content&quot;&gt;This is a test.&lt;/p&gt;Hello world.&lt;br /&gt;&lt;font color='#00cc00'&gt;This sentence is green.&lt;/font&gt;&lt;br /&gt;This one is not.
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    description(&quot;This tests the ability to get element text for a specified range.&quot;);
+    if (window.accessibilityController) {
+        document.getElementById(&quot;body&quot;).focus();
+        var webArea = accessibilityController.focusedElement;
+        var paragraph = webArea.childAtIndex(0);
+        var block = webArea.childAtIndex(1);
+        shouldBe(&quot;paragraph.stringForRange(0, -1)&quot;, &quot;'This is a test.'&quot;);
+        shouldBe(&quot;block.stringForRange(0, 53)&quot;, &quot;'Hello world.\\nThis sentence is green.\\nThis one is not.'&quot;);
+    }
+&lt;/script&gt;
+&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangeheadingexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-heading-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-heading-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-heading-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+A text header
+
+Block span in a link in a heading
+Inline span in a link in a heading
+
+Block span in a heading
+Inline span in a heading
+
+This tests the ability to get element text for a specified range.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS heading1.stringForRange(0, -1) is 'A text header'
+PASS heading2.stringForRange(0, -1) is 'Block span in a link in a heading\nInline span in a link in a heading'
+PASS heading3.stringForRange(0, -1) is 'Block span in a heading\nInline span in a heading'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangeheadinghtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-heading.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-heading.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-heading.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,28 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body id=&quot;body&quot;&gt;
+&lt;h1&gt;A text header&lt;/h1&gt;
+&lt;h4&gt;&lt;a href='foo'&gt;&lt;span style='display:block;'&gt;Block span in a link in a heading&lt;/span&gt;&lt;span&gt;Inline span in a link in a heading&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
+&lt;h4&gt;&lt;span style='display:block;'&gt;Block span in a heading&lt;/span&gt;&lt;span&gt;Inline span in a heading&lt;/span&gt;&lt;/h4&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    description(&quot;This tests the ability to get element text for a specified range.&quot;);
+    if (window.accessibilityController) {
+        document.getElementById(&quot;body&quot;).focus();
+        var webArea = accessibilityController.focusedElement;
+
+        var heading1 = webArea.childAtIndex(0);
+        var heading2 = webArea.childAtIndex(1);
+        var heading3 = webArea.childAtIndex(2);
+        shouldBe(&quot;heading1.stringForRange(0, -1)&quot;, &quot;'A text header'&quot;);
+        shouldBe(&quot;heading2.stringForRange(0, -1)&quot;, &quot;'Block span in a link in a heading\\nInline span in a link in a heading'&quot;);
+        shouldBe(&quot;heading3.stringForRange(0, -1)&quot;, &quot;'Block span in a heading\\nInline span in a heading'&quot;);
+    }
+&lt;/script&gt;
+&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangelistitemsexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-list-items-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-list-items-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-list-items-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+A list item
+Block span in a list item
+Inline span in a list item
+Block span in a link in a list item
+Inline span in a link in a list item
+text only
+link only
+text and a link
+text only
+link only
+text and a link
+This tests the ability to get element text for a specified range.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS listitem1.stringForRange(0, -1) is '1. A list item'
+PASS listitem2.stringForRange(0, -1) is '2. Block span in a list item\nInline span in a list item'
+PASS listitem3.stringForRange(0, -1) is '3. Block span in a link in a list item\nInline span in a link in a list item'
+PASS listitem1.stringForRange(0, -1) is '• text only'
+PASS listitem2.stringForRange(0, -1) is '• link only'
+PASS listitem3.stringForRange(0, -1) is '• text and a link'
+PASS listitem1.stringForRange(0, -1) is '1. text only'
+PASS listitem2.stringForRange(0, -1) is '2. link only'
+PASS listitem3.stringForRange(0, -1) is '3. text and a link'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangelistitemshtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-list-items.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-list-items.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-list-items.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,49 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body id=&quot;body&quot;&gt;
+&lt;ol&gt;
+&lt;li&gt;A list item&lt;/li&gt;
+&lt;li&gt;&lt;span style='display:block;'&gt;Block span in a list item&lt;/span&gt;&lt;span&gt;Inline span in a list item&lt;/span&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a href='foo'&gt;&lt;span style='display:block;'&gt;Block span in a link in a list item&lt;/span&gt;&lt;span&gt;Inline span in a link in a list item&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
+&lt;/ol&gt;
+&lt;ul&gt;&lt;li&gt;text only&lt;/li&gt;&lt;li&gt;&lt;a href='foo'&gt;link only&lt;/a&gt;&lt;/li&gt;&lt;li&gt;text and a &lt;a href='bar'&gt;link&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
+&lt;ol&gt;&lt;li&gt;text only&lt;/li&gt;&lt;li&gt;&lt;a href='foo'&gt;link only&lt;/a&gt;&lt;/li&gt;&lt;li&gt;text and a &lt;a href='bar'&gt;link&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    description(&quot;This tests the ability to get element text for a specified range.&quot;);
+    if (window.accessibilityController) {
+        document.getElementById(&quot;body&quot;).focus();
+        var webArea = accessibilityController.focusedElement;
+
+        var list = webArea.childAtIndex(0);
+        var listitem1 = list.childAtIndex(0);
+        var listitem2 = list.childAtIndex(1);
+        var listitem3 = list.childAtIndex(2);
+        shouldBe(&quot;listitem1.stringForRange(0, -1)&quot;, &quot;'1. A list item'&quot;);
+        shouldBe(&quot;listitem2.stringForRange(0, -1)&quot;, &quot;'2. Block span in a list item\\nInline span in a list item'&quot;);
+        shouldBe(&quot;listitem3.stringForRange(0, -1)&quot;, &quot;'3. Block span in a link in a list item\\nInline span in a link in a list item'&quot;);
+
+        list = webArea.childAtIndex(1);
+        listitem1 = list.childAtIndex(0);
+        listitem2 = list.childAtIndex(1);
+        listitem3 = list.childAtIndex(2);
+        shouldBe(&quot;listitem1.stringForRange(0, -1)&quot;, &quot;'\342\200\242 text only'&quot;);
+        shouldBe(&quot;listitem2.stringForRange(0, -1)&quot;, &quot;'\342\200\242 link only'&quot;);
+        shouldBe(&quot;listitem3.stringForRange(0, -1)&quot;, &quot;'\342\200\242 text and a link'&quot;);
+
+        list = webArea.childAtIndex(2);
+        listitem1 = list.childAtIndex(0);
+        listitem2 = list.childAtIndex(1);
+        listitem3 = list.childAtIndex(2);
+        shouldBe(&quot;listitem1.stringForRange(0, -1)&quot;, &quot;'1. text only'&quot;);
+        shouldBe(&quot;listitem2.stringForRange(0, -1)&quot;, &quot;'2. link only'&quot;);
+        shouldBe(&quot;listitem3.stringForRange(0, -1)&quot;, &quot;'3. text and a link'&quot;);
+    }
+&lt;/script&gt;
+&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangesimpleexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-simple-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-simple-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-simple-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+This is a test.
+
+Hello world.
+This tests the ability to get element text for a specified range.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS paragraph.stringForRange(0, -1) is 'This is a test.'
+PASS block.stringForRange(0, 12) is 'Hello world.'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangesimplehtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-simple.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-simple.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-simple.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,23 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body id=&quot;body&quot;&gt;
+&lt;p id=&quot;content&quot;&gt;This is a test.&lt;/p&gt;Hello world.
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    description(&quot;This tests the ability to get element text for a specified range.&quot;);
+    if (window.accessibilityController) {
+        document.getElementById(&quot;body&quot;).focus();
+        var webArea = accessibilityController.focusedElement;
+        var paragraph = webArea.childAtIndex(0);
+        var block = webArea.childAtIndex(1);
+        shouldBe(&quot;paragraph.stringForRange(0, -1)&quot;, &quot;'This is a test.'&quot;);
+        shouldBe(&quot;block.stringForRange(0, 12)&quot;, &quot;'Hello world.'&quot;);
+    }
+&lt;/script&gt;
+&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangetablecellsexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-table-cells-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-table-cells-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-table-cells-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+a table cell                
+Block span in a link in a table cell
+Inline span in a link in a table cell        
+Block span in a table cell
+Inline span in a table cell
+This tests the ability to get element text for a specified range.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS cell1.stringForRange(0, -1) is 'a table cell'
+PASS cell2.stringForRange(0, -1) is ''
+PASS cell3.stringForRange(0, -1) is 'Block span in a link in a table cell\nInline span in a link in a table cell'
+PASS cell4.stringForRange(0, -1) is 'Block span in a table cell\nInline span in a table cell'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangetablecellshtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-table-cells.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-table-cells.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-table-cells.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body id=&quot;body&quot;&gt;
+&lt;table&gt;
+&lt;tr&gt;
+&lt;td&gt;a table cell&lt;/td&gt;
+&lt;td&gt;&lt;/td&gt;
+&lt;td&gt;&lt;a href='foo'&gt;&lt;span style='display:block;'&gt;Block span in a link in a table cell&lt;/span&gt;&lt;span&gt;Inline span in a link in a table cell&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
+&lt;td&gt;&lt;span style='display:block;'&gt;Block span in a table cell&lt;/span&gt;&lt;span&gt;Inline span in a table cell&lt;/span&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;/table&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    description(&quot;This tests the ability to get element text for a specified range.&quot;);
+    if (window.accessibilityController) {
+        document.getElementById(&quot;body&quot;).focus();
+        var webArea = accessibilityController.focusedElement;
+        var table = webArea.childAtIndex(0);
+        var cell1 = table.childAtIndex(0);
+        var cell2 = table.childAtIndex(1);
+        var cell3 = table.childAtIndex(2);
+        var cell4 = table.childAtIndex(3);
+        shouldBe(&quot;cell1.stringForRange(0, -1)&quot;, &quot;'a table cell'&quot;);
+        shouldBe(&quot;cell2.stringForRange(0, -1)&quot;, &quot;''&quot;);
+        shouldBe(&quot;cell3.stringForRange(0, -1)&quot;, &quot;'Block span in a link in a table cell\\nInline span in a link in a table cell'&quot;);
+        shouldBe(&quot;cell4.stringForRange(0, -1)&quot;, &quot;'Block span in a table cell\\nInline span in a table cell'&quot;);
+    }
+&lt;/script&gt;
+&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangewithlinkexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-with-link-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-with-link-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-with-link-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,13 @@
</span><ins>+A paragraph with a link in the middle
+
+This tests the ability to get element text for a specified range.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS paragraph.stringForRange(0, -1) is 'A paragraph with a link in the middle'
+PASS link.stringForRange(0, -1) is 'a link'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitytextforrangewithlinkhtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-with-link.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-with-link.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-range-with-link.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body id=&quot;body&quot;&gt;
+&lt;p id=&quot;content&quot;&gt;A paragraph with &lt;a href='http://webkit.org'&gt;a link&lt;/a&gt; in the middle&lt;/p&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    description(&quot;This tests the ability to get element text for a specified range.&quot;);
+    if (window.accessibilityController) {
+        document.getElementById(&quot;body&quot;).focus();
+        var webArea = accessibilityController.focusedElement;
+
+        var paragraph = webArea.childAtIndex(0);
+        shouldBe(&quot;paragraph.stringForRange(0, -1)&quot;, &quot;'A paragraph with a link in the middle'&quot;);
+
+        var link = paragraph.childAtIndex(0);
+        shouldBe(&quot;link.stringForRange(0, -1)&quot;, &quot;'a link'&quot;);
+    }
+&lt;/script&gt;
+&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitytextfortableexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-table-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-table-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-table-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+foo        bar
+This tests the ability to get element text for a specified range. No text should be obtainable for tables which should not implement the text interface.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS table.stringForRange(0, -1) is ''
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitytextfortablehtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-table.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-table.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/text-for-table.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body id=&quot;body&quot;&gt;
+&lt;table id=&quot;content&quot;&gt;&lt;tr&gt;&lt;td&gt;foo&lt;/td&gt;&lt;td&gt;bar&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    description(&quot;This tests the ability to get element text for a specified range. No text should be obtainable for tables which should not implement the text interface.&quot;);
+    if (window.accessibilityController) {
+        document.getElementById(&quot;body&quot;).focus();
+        var webArea = accessibilityController.focusedElement;
+        var table = webArea.childAtIndex(0);
+        shouldBe(&quot;table.stringForRange(0, -1)&quot;, &quot;''&quot;);
+    }
+&lt;/script&gt;
+&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkaccessibilitytransformedelementexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/platform/gtk/accessibility/transformed-element-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/accessibility/transformed-element-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/platform/gtk/accessibility/transformed-element-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> hello
</span><del>-AXRole: AXDiv
</del><ins>+AXRole: AXSection
</ins><span class="cx"> AXParent: AXWebArea
</span><span class="cx"> AXChildren: 1
</span><span class="cx"> AXPosition: { 8.000000, 9.000000 }
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformgtkfasteventsstopPropagationsubmitexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/platform/gtk/fast/events/stopPropagation-submit-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/gtk/fast/events/stopPropagation-submit-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/platform/gtk/fast/events/stopPropagation-submit-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,2 +0,0 @@
</span><del>-PASS
-?x=-8&amp;y=-58
</del></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformmacaccessibilityariahiddennegatesnovisibilityexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/platform/mac/accessibility/aria-hidden-negates-no-visibility-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/mac/accessibility/aria-hidden-negates-no-visibility-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/platform/mac/accessibility/aria-hidden-negates-no-visibility-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,23 +0,0 @@
</span><del>-heading1.2
-
-
-
-This tests ensures that aria-hidden=false will allow a node to be in the AX hierarchy even if it's not rendered or visible
-
-On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
-
-
-PASS !heading1_1 || !heading1_1.isValid is true
-PASS !heading1_2 || !heading1_3.isValid is true
-PASS !heading1_3 || !heading1_3.isValid is true
-PASS heading2.role is 'AXRole: AXHeading'
-PASS parent.childAtIndex(0).isEqual(heading2) is true
-PASS heading3.role is 'AXRole: AXHeading'
-PASS parent.childAtIndex(1).isEqual(heading3) is true
-PASS heading4.role is 'AXRole: AXHeading'
-PASS parent.childAtIndex(2).isEqual(heading4) is true
-Textfield Title: AXTitle: 
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
</del></span></pre></div>
<a id="branchesjsCStackLayoutTestsplatformmacfasttableemptycellsexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/platform/mac/fast/table/empty-cells-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/platform/mac/fast/table/empty-cells-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/platform/mac/fast/table/empty-cells-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -78,8 +78,8 @@
</span><span class="cx">       RenderTable {TABLE} at (0,292) size 785x29 [border: (2px solid #000000)]
</span><span class="cx">         RenderTableSection {TBODY} at (2,2) size 781x25
</span><span class="cx">           RenderTableRow {TR} at (0,0) size 781x25
</span><del>-            RenderTableCell {TD} at (0,12) size 0x0 [bgcolor=#FFFF00] [r=0 c=0 rs=1 cs=1]
-            RenderTableCell {TD} at (0,3) size 781x18 [bgcolor=#FF0000] [r=0 c=1 rs=1 cs=1]
</del><ins>+            RenderTableCell {TD} at (0,12) size 391x0 [bgcolor=#FFFF00] [r=0 c=0 rs=1 cs=1]
+            RenderTableCell {TD} at (391,3) size 390x18 [bgcolor=#FF0000] [r=0 c=1 rs=1 cs=1]
</ins><span class="cx">               RenderText {#text} at (0,0) size 261x18
</span><span class="cx">                 text run at (0,0) width 261: &quot;First cell empty but has background color&quot;
</span><span class="cx">       RenderTable {TABLE} at (0,321) size 785x54 [border: (2px solid #000000)]
</span></span></pre></div>
<a id="branchesjsCStackLayoutTestssvgcustomclonenodeexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/svg/custom/clone-node-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/svg/custom/clone-node-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/svg/custom/clone-node-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+Tests cloneNode for SVGDocument.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS svgDoc.cloneNode(false).__proto__ is SVGDocument.prototype
+PASS className(svgDoc.cloneNode(false)) is &quot;SVGDocument&quot;
+PASS svgDoc.cloneNode(true).compatMode is &quot;CSS1Compat&quot;
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestssvgcustomclonenodehtml"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/svg/custom/clone-node.html (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/svg/custom/clone-node.html                                (rev 0)
+++ branches/jsCStack/LayoutTests/svg/custom/clone-node.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+description('Tests cloneNode for SVGDocument.');
+
+function className(object) {
+    return Object.prototype.toString.call(object).slice(8, -1);
+}
+
+var svgDoc = document.implementation.createDocument('http://www.w3.org/2000/svg', 'svg', null);
+
+shouldBe('svgDoc.cloneNode(false).__proto__', 'SVGDocument.prototype');
+shouldBeEqualToString('className(svgDoc.cloneNode(false))', 'SVGDocument');
+shouldBeEqualToString('svgDoc.cloneNode(true).compatMode', 'CSS1Compat');
+
+&lt;/script&gt;
+&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestssvgdomSVGScriptElementscripttypeattributeexpectedtxt"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/svg/dom/SVGScriptElement/script-type-attribute-expected.txt (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/svg/dom/SVGScriptElement/script-type-attribute-expected.txt                                (rev 0)
+++ branches/jsCStack/LayoutTests/svg/dom/SVGScriptElement/script-type-attribute-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+Test that getting/setting the type JS property on SVGScriptElement keeps sync with the type content attribute.
+
+PASS
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTestssvgdomSVGScriptElementscripttypeattributesvg"></a>
<div class="addfile"><h4>Added: branches/jsCStack/LayoutTests/svg/dom/SVGScriptElement/script-type-attribute.svg (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/svg/dom/SVGScriptElement/script-type-attribute.svg                                (rev 0)
+++ branches/jsCStack/LayoutTests/svg/dom/SVGScriptElement/script-type-attribute.svg        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,24 @@
</span><ins>+&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xhtml=&quot;http://www.w3.org/1999/xhtml&quot; onload=&quot;test()&quot;&gt;
+&lt;script type=&quot;text/javascript&quot;&gt;
+function test() {
+    if (window.testRunner) {
+        testRunner.dumpAsText();
+    }
+
+    var script = document.createElementNS(&quot;http://www.w3.org/2000/svg&quot;, &quot;svg:script&quot;);
+    script.type = &quot;text/javascript&quot;;
+    if (script.type != &quot;text/javascript&quot; || script.getAttribute(&quot;type&quot;) != &quot;text/javascript&quot;) {
+        document.getElementById(&quot;p0&quot;).innerHTML = &quot;FAIL&quot;;
+        return;
+    }
+
+    script.setAttribute(&quot;type&quot;, &quot;text/fooscript&quot;);
+    if (script.type != &quot;text/fooscript&quot; || script.getAttribute(&quot;type&quot;) != &quot;text/fooscript&quot;)
+        document.getElementById(&quot;p0&quot;).innerHTML = &quot;FAIL&quot;;
+}
+&lt;/script&gt;
+&lt;foreignObject&gt;
+&lt;xhtml:p&gt;Test that getting/setting the type JS property on SVGScriptElement keeps sync with the type content attribute.&lt;/xhtml:p&gt;
+&lt;xhtml:span id=&quot;p0&quot;&gt;PASS&lt;/xhtml:span&gt;
+&lt;/foreignObject&gt;
+&lt;/svg&gt;
</ins></span></pre></div>
<a id="branchesjsCStackLayoutTeststablesmozillabugsbug18186expectedtxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/LayoutTests/tables/mozilla/bugs/bug1818-6-expected.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/LayoutTests/tables/mozilla/bugs/bug1818-6-expected.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/LayoutTests/tables/mozilla/bugs/bug1818-6-expected.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -6,6 +6,6 @@
</span><span class="cx">       RenderTable {TABLE} at (0,0) size 784x0
</span><span class="cx">         RenderTableSection {TBODY} at (0,0) size 784x0
</span><span class="cx">           RenderTableRow {TR} at (0,0) size 784x0
</span><del>-            RenderTableCell {TD} at (0,0) size 772x0 [bgcolor=#0000CC] [r=0 c=0 rs=1 cs=1]
-            RenderTableCell {TD} at (772,0) size 12x0 [bgcolor=#00CC00] [r=0 c=1 rs=1 cs=1]
-            RenderTableCell {TD} at (784,0) size 0x0 [bgcolor=#CC0000] [r=0 c=2 rs=1 cs=1]
</del><ins>+            RenderTableCell {TD} at (0,0) size 400x0 [bgcolor=#0000CC] [r=0 c=0 rs=1 cs=1]
+            RenderTableCell {TD} at (400,0) size 6x0 [bgcolor=#00CC00] [r=0 c=1 rs=1 cs=1]
+            RenderTableCell {TD} at (406,0) size 378x0 [bgcolor=#CC0000] [r=0 c=2 rs=1 cs=1]
</ins></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreAPIJSBasePrivateh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/API/JSBasePrivate.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/API/JSBasePrivate.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/API/JSBasePrivate.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -43,7 +43,7 @@
</span><span class="cx"> garbage collector to collect soon, hoping to reclaim that large non-GC memory
</span><span class="cx"> region.
</span><span class="cx"> */
</span><del>-JS_EXPORT void JSReportExtraMemoryCost(JSContextRef ctx, size_t size) AVAILABLE_IN_WEBKIT_VERSION_4_0;
</del><ins>+JS_EXPORT void JSReportExtraMemoryCost(JSContextRef ctx, size_t size) CF_AVAILABLE(10_6, 7_0);
</ins><span class="cx"> 
</span><span class="cx"> JS_EXPORT void JSDisableGCTimer(void);
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreAPIJSContexth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/API/JSContext.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/API/JSContext.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/API/JSContext.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -20,7 +20,7 @@
</span><span class="cx">  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
</span><span class="cx">  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
</span><span class="cx">  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
</span><del>- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
</del><ins>+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</ins><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> #ifndef JSContext_h
</span><span class="lines">@@ -40,7 +40,7 @@
</span><span class="cx">  JavaScript virtual machine. Every instance of JSValue is associated with a
</span><span class="cx">  JSContext via a strong reference. The JSValue will keep the JSContext it
</span><span class="cx">  references alive so long as the JSValue remains alive. When all of the JSValues
</span><del>- that reference a particular JSContext have been deallocated the JSContext 
</del><ins>+ that reference a particular JSContext have been deallocated the JSContext
</ins><span class="cx">  will be deallocated unless it has been previously retained.
</span><span class="cx"> */
</span><span class="cx"> #ifndef JSC_OBJC_API_AVAILABLE_MAC_OS_X_1080
</span><span class="lines">@@ -58,7 +58,7 @@
</span><span class="cx"> @abstract Create a JSContext.
</span><span class="cx"> @result The new context.
</span><span class="cx"> */
</span><del>-- (id)init;
</del><ins>+- (instancetype)init;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx"> @method
</span><span class="lines">@@ -66,7 +66,7 @@
</span><span class="cx"> @param virtualMachine The JSVirtualMachine in which the context will be created.
</span><span class="cx"> @result The new context.
</span><span class="cx"> */
</span><del>-- (id)initWithVirtualMachine:(JSVirtualMachine *)virtualMachine;
</del><ins>+- (instancetype)initWithVirtualMachine:(JSVirtualMachine *)virtualMachine;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx"> @methodgroup Evaluating Scripts
</span><span class="lines">@@ -117,14 +117,14 @@
</span><span class="cx"> @methodgroup Global Properties
</span><span class="cx"> */
</span><span class="cx"> /*!
</span><del>-@method
</del><ins>+@property
</ins><span class="cx"> @abstract Get the global object of the context.
</span><span class="cx"> @discussion This method retrieves the global object of the JavaScript execution context.
</span><span class="cx">  Instances of JSContext originating from WebKit will return a reference to the
</span><span class="cx">  WindowProxy object.
</span><span class="cx"> @result The global object.
</span><span class="cx"> */
</span><del>-- (JSValue *)globalObject;
</del><ins>+@property (readonly, strong) JSValue *globalObject;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx"> @property
</span><span class="lines">@@ -143,7 +143,7 @@
</span><span class="cx">  If a JSValue originating from a different JSVirtualMachine than this context
</span><span class="cx">  is assigned to this property, an Objective-C exception will be raised.
</span><span class="cx"> */
</span><del>-@property(retain) JSValue *exception;
</del><ins>+@property (strong) JSValue *exception;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx"> @property
</span><span class="lines">@@ -155,20 +155,20 @@
</span><span class="cx">  Setting this value to nil will result in all uncaught exceptions thrown from
</span><span class="cx">  the API being silently consumed.
</span><span class="cx"> */
</span><del>-@property(copy) void(^exceptionHandler)(JSContext *context, JSValue *exception);
</del><ins>+@property (copy) void(^exceptionHandler)(JSContext *context, JSValue *exception);
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx"> @property
</span><span class="cx"> @discussion All instances of JSContext are associated with a single JSVirtualMachine. The
</span><span class="cx">  virtual machine provides an &quot;object space&quot; or set of execution resources.
</span><span class="cx"> */
</span><del>-@property(readonly, retain) JSVirtualMachine *virtualMachine;
</del><ins>+@property (readonly, strong) JSVirtualMachine *virtualMachine;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx"> @property
</span><span class="cx"> @discussion Name of the JSContext. Exposed when remote debugging the context.
</span><span class="cx"> */
</span><del>-@property(copy) NSString *name;
</del><ins>+@property (copy) NSString *name;
</ins><span class="cx"> 
</span><span class="cx"> @end
</span><span class="cx"> 
</span><span class="lines">@@ -187,7 +187,7 @@
</span><span class="cx">  and then the value converted to a string used to resolve a property of the
</span><span class="cx">  global object.
</span><span class="cx"> */
</span><del>-@interface JSContext(SubscriptSupport)
</del><ins>+@interface JSContext (SubscriptSupport)
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx"> method
</span><span class="lines">@@ -211,7 +211,7 @@
</span><span class="cx"> @category
</span><span class="cx"> @discussion These functions are for bridging between the C API and the Objective-C API.
</span><span class="cx"> */
</span><del>-@interface JSContext(JSContextRefSupport)
</del><ins>+@interface JSContext (JSContextRefSupport)
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx"> @method
</span><span class="lines">@@ -222,11 +222,11 @@
</span><span class="cx"> + (JSContext *)contextWithJSGlobalContextRef:(JSGlobalContextRef)jsGlobalContextRef;
</span><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-@method
</del><ins>+@property
</ins><span class="cx"> @abstract Get the C API counterpart wrapped by a JSContext.
</span><span class="cx"> @result The C API equivalent of this JSContext.
</span><span class="cx"> */
</span><del>-- (JSGlobalContextRef)JSGlobalContextRef;
</del><ins>+@property (readonly) JSGlobalContextRef JSGlobalContextRef;
</ins><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreAPIJSContextmm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/API/JSContext.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/API/JSContext.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/API/JSContext.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -54,12 +54,12 @@
</span><span class="cx">     return m_context;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (id)init
</del><ins>+- (instancetype)init
</ins><span class="cx"> {
</span><span class="cx">     return [self initWithVirtualMachine:[[[JSVirtualMachine alloc] init] autorelease]];
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (id)initWithVirtualMachine:(JSVirtualMachine *)virtualMachine
</del><ins>+- (instancetype)initWithVirtualMachine:(JSVirtualMachine *)virtualMachine
</ins><span class="cx"> {
</span><span class="cx">     self = [super init];
</span><span class="cx">     if (!self)
</span><span class="lines">@@ -198,9 +198,9 @@
</span><span class="cx"> 
</span><span class="cx"> @end
</span><span class="cx"> 
</span><del>-@implementation JSContext(Internal)
</del><ins>+@implementation JSContext (Internal)
</ins><span class="cx"> 
</span><del>-- (id)initWithGlobalContextRef:(JSGlobalContextRef)context
</del><ins>+- (instancetype)initWithGlobalContextRef:(JSGlobalContextRef)context
</ins><span class="cx"> {
</span><span class="cx">     self = [super init];
</span><span class="cx">     if (!self)
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreAPIJSContextRefh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/API/JSContextRef.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/API/JSContextRef.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/API/JSContextRef.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -20,7 +20,7 @@
</span><span class="cx">  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
</span><span class="cx">  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
</span><span class="cx">  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
</span><del>- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
</del><ins>+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</ins><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> #ifndef JSContextRef_h
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx">  synchronization is required.
</span><span class="cx"> @result The created JSContextGroup.
</span><span class="cx"> */
</span><del>-JS_EXPORT JSContextGroupRef JSContextGroupCreate() AVAILABLE_IN_WEBKIT_VERSION_4_0;
</del><ins>+JS_EXPORT JSContextGroupRef JSContextGroupCreate() CF_AVAILABLE(10_6, 7_0);
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx"> @function
</span><span class="lines">@@ -56,14 +56,14 @@
</span><span class="cx"> @param group The JSContextGroup to retain.
</span><span class="cx"> @result A JSContextGroup that is the same as group.
</span><span class="cx"> */
</span><del>-JS_EXPORT JSContextGroupRef JSContextGroupRetain(JSContextGroupRef group) AVAILABLE_IN_WEBKIT_VERSION_4_0;
</del><ins>+JS_EXPORT JSContextGroupRef JSContextGroupRetain(JSContextGroupRef group) CF_AVAILABLE(10_6, 7_0);
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx"> @function
</span><span class="cx"> @abstract Releases a JavaScript context group.
</span><span class="cx"> @param group The JSContextGroup to release.
</span><span class="cx"> */
</span><del>-JS_EXPORT void JSContextGroupRelease(JSContextGroupRef group) AVAILABLE_IN_WEBKIT_VERSION_4_0;
</del><ins>+JS_EXPORT void JSContextGroupRelease(JSContextGroupRef group) CF_AVAILABLE(10_6, 7_0);
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx"> @function
</span><span class="lines">@@ -78,7 +78,7 @@
</span><span class="cx">  NULL to use the default object class.
</span><span class="cx"> @result A JSGlobalContext with a global object of class globalObjectClass.
</span><span class="cx"> */
</span><del>-JS_EXPORT JSGlobalContextRef JSGlobalContextCreate(JSClassRef globalObjectClass) AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
</del><ins>+JS_EXPORT JSGlobalContextRef JSGlobalContextCreate(JSClassRef globalObjectClass) CF_AVAILABLE(10_5, 7_0);
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx"> @function
</span><span class="lines">@@ -92,7 +92,7 @@
</span><span class="cx"> @result A JSGlobalContext with a global object of class globalObjectClass and a context
</span><span class="cx">  group equal to group.
</span><span class="cx"> */
</span><del>-JS_EXPORT JSGlobalContextRef JSGlobalContextCreateInGroup(JSContextGroupRef group, JSClassRef globalObjectClass) AVAILABLE_IN_WEBKIT_VERSION_4_0;
</del><ins>+JS_EXPORT JSGlobalContextRef JSGlobalContextCreateInGroup(JSContextGroupRef group, JSClassRef globalObjectClass) CF_AVAILABLE(10_6, 7_0);
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx"> @function
</span><span class="lines">@@ -123,7 +123,7 @@
</span><span class="cx"> @param ctx The JSContext whose group you want to get.
</span><span class="cx"> @result ctx's group.
</span><span class="cx"> */
</span><del>-JS_EXPORT JSContextGroupRef JSContextGetGroup(JSContextRef ctx) AVAILABLE_IN_WEBKIT_VERSION_4_0;
</del><ins>+JS_EXPORT JSContextGroupRef JSContextGetGroup(JSContextRef ctx) CF_AVAILABLE(10_6, 7_0);
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx"> @function
</span><span class="lines">@@ -131,7 +131,7 @@
</span><span class="cx"> @param ctx The JSContext whose global context you want to get.
</span><span class="cx"> @result ctx's global context.
</span><span class="cx"> */
</span><del>-JS_EXPORT JSGlobalContextRef JSContextGetGlobalContext(JSContextRef ctx) CF_AVAILABLE(10_7, 4_0);
</del><ins>+JS_EXPORT JSGlobalContextRef JSContextGetGlobalContext(JSContextRef ctx) CF_AVAILABLE(10_7, 7_0);
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx"> @function
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreAPIJSContextRefPrivateh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/API/JSContextRefPrivate.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/API/JSContextRefPrivate.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/API/JSContextRefPrivate.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -44,7 +44,7 @@
</span><span class="cx"> @param ctx The JSContext whose backtrace you want to get
</span><span class="cx"> @result A string containing the backtrace
</span><span class="cx"> */
</span><del>-JS_EXPORT JSStringRef JSContextCreateBacktrace(JSContextRef ctx, unsigned maxStackSize) AVAILABLE_IN_WEBKIT_VERSION_4_0;
</del><ins>+JS_EXPORT JSStringRef JSContextCreateBacktrace(JSContextRef ctx, unsigned maxStackSize) CF_AVAILABLE(10_6, 7_0);
</ins><span class="cx">     
</span><span class="cx"> 
</span><span class="cx"> /*! 
</span><span class="lines">@@ -85,14 +85,14 @@
</span><span class="cx">  need to call JSContextGroupSetExecutionTimeLimit before you start executing
</span><span class="cx">  any scripts.
</span><span class="cx"> */
</span><del>-JS_EXPORT void JSContextGroupSetExecutionTimeLimit(JSContextGroupRef, double limit, JSShouldTerminateCallback, void* context) AVAILABLE_IN_WEBKIT_VERSION_4_0;
</del><ins>+JS_EXPORT void JSContextGroupSetExecutionTimeLimit(JSContextGroupRef, double limit, JSShouldTerminateCallback, void* context) CF_AVAILABLE(10_6, 7_0);
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx"> @function
</span><span class="cx"> @abstract Clears the script execution time limit.
</span><span class="cx"> @param group The JavaScript context group that the time limit is cleared on.
</span><span class="cx"> */
</span><del>-JS_EXPORT void JSContextGroupClearExecutionTimeLimit(JSContextGroupRef) AVAILABLE_IN_WEBKIT_VERSION_4_0;
</del><ins>+JS_EXPORT void JSContextGroupClearExecutionTimeLimit(JSContextGroupRef) CF_AVAILABLE(10_6, 7_0);
</ins><span class="cx"> 
</span><span class="cx"> #ifdef __cplusplus
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreAPIJSManagedValueh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/API/JSManagedValue.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/API/JSManagedValue.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/API/JSManagedValue.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -70,15 +70,15 @@
</span><span class="cx"> @param value
</span><span class="cx"> @result The new JSManagedValue.
</span><span class="cx"> */
</span><del>-- (id)initWithValue:(JSValue *)value;
</del><ins>+- (instancetype)initWithValue:(JSValue *)value;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-@method
</del><ins>+@property
</ins><span class="cx"> @abstract Get the JSValue from the JSManagedValue.
</span><span class="cx"> @result The corresponding JSValue for this JSManagedValue or 
</span><span class="cx">  nil if the JSValue has been collected.
</span><span class="cx"> */
</span><del>-- (JSValue *)value;
</del><ins>+@property (readonly, strong) JSValue *value;
</ins><span class="cx"> 
</span><span class="cx"> @end
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreAPIJSManagedValuemm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/API/JSManagedValue.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/API/JSManagedValue.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/API/JSManagedValue.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -176,12 +176,12 @@
</span><span class="cx">     return [[[self alloc] initWithValue:value] autorelease];
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (id)init
</del><ins>+- (instancetype)init
</ins><span class="cx"> {
</span><span class="cx">     return [self initWithValue:nil];
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (id)initWithValue:(JSValue *)value
</del><ins>+- (instancetype)initWithValue:(JSValue *)value
</ins><span class="cx"> {
</span><span class="cx">     self = [super init];
</span><span class="cx">     if (!self)
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreAPIJSObjectRefh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/API/JSObjectRef.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/API/JSObjectRef.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/API/JSObjectRef.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -441,7 +441,7 @@
</span><span class="cx">  @discussion The behavior of this function does not exactly match the behavior of the built-in Array constructor. Specifically, if one argument 
</span><span class="cx">  is supplied, this function returns an array with one element.
</span><span class="cx">  */
</span><del>-JS_EXPORT JSObjectRef JSObjectMakeArray(JSContextRef ctx, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) AVAILABLE_IN_WEBKIT_VERSION_4_0;
</del><ins>+JS_EXPORT JSObjectRef JSObjectMakeArray(JSContextRef ctx, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) CF_AVAILABLE(10_6, 7_0);
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx">  @function
</span><span class="lines">@@ -452,7 +452,7 @@
</span><span class="cx">  @param exception A pointer to a JSValueRef in which to store an exception, if any. Pass NULL if you do not care to store an exception.
</span><span class="cx">  @result A JSObject that is a Date.
</span><span class="cx">  */
</span><del>-JS_EXPORT JSObjectRef JSObjectMakeDate(JSContextRef ctx, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) AVAILABLE_IN_WEBKIT_VERSION_4_0;
</del><ins>+JS_EXPORT JSObjectRef JSObjectMakeDate(JSContextRef ctx, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) CF_AVAILABLE(10_6, 7_0);
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx">  @function
</span><span class="lines">@@ -463,7 +463,7 @@
</span><span class="cx">  @param exception A pointer to a JSValueRef in which to store an exception, if any. Pass NULL if you do not care to store an exception.
</span><span class="cx">  @result A JSObject that is a Error.
</span><span class="cx">  */
</span><del>-JS_EXPORT JSObjectRef JSObjectMakeError(JSContextRef ctx, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) AVAILABLE_IN_WEBKIT_VERSION_4_0;
</del><ins>+JS_EXPORT JSObjectRef JSObjectMakeError(JSContextRef ctx, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) CF_AVAILABLE(10_6, 7_0);
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx">  @function
</span><span class="lines">@@ -474,7 +474,7 @@
</span><span class="cx">  @param exception A pointer to a JSValueRef in which to store an exception, if any. Pass NULL if you do not care to store an exception.
</span><span class="cx">  @result A JSObject that is a RegExp.
</span><span class="cx">  */
</span><del>-JS_EXPORT JSObjectRef JSObjectMakeRegExp(JSContextRef ctx, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) AVAILABLE_IN_WEBKIT_VERSION_4_0;
</del><ins>+JS_EXPORT JSObjectRef JSObjectMakeRegExp(JSContextRef ctx, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) CF_AVAILABLE(10_6, 7_0);
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx"> @function
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreAPIJSStringRefCFh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/API/JSStringRefCF.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/API/JSStringRefCF.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/API/JSStringRefCF.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -51,7 +51,7 @@
</span><span class="cx"> @param string     The JSString to copy into the new CFString.
</span><span class="cx"> @result           A CFString containing string. Ownership follows the Create Rule.
</span><span class="cx"> */
</span><del>-JS_EXPORT CFStringRef JSStringCopyCFString(CFAllocatorRef alloc, JSStringRef string);
</del><ins>+JS_EXPORT CFStringRef JSStringCopyCFString(CFAllocatorRef alloc, JSStringRef string) CF_RETURNS_RETAINED;
</ins><span class="cx"> 
</span><span class="cx"> #ifdef __cplusplus
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreAPIJSValueh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/API/JSValue.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/API/JSValue.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/API/JSValue.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -61,7 +61,7 @@
</span><span class="cx"> @property
</span><span class="cx"> @abstract The JSContext that this value originates from.
</span><span class="cx"> */
</span><del>-@property(readonly, retain) JSContext *context;
</del><ins>+@property (readonly, strong) JSContext *context;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx"> @methodgroup Creating JavaScript Values
</span><span class="lines">@@ -483,7 +483,7 @@
</span><span class="cx">  return type of the latter.
</span><span class="cx">  Support is provided for structs of type CGPoint, NSRange, CGRect and CGSize.
</span><span class="cx"> */
</span><del>-@interface JSValue(StructSupport)
</del><ins>+@interface JSValue (StructSupport)
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx"> @method
</span><span class="lines">@@ -572,7 +572,7 @@
</span><span class="cx">  An object key passed as a subscript will be converted to a JavaScript value,
</span><span class="cx">  and then the value converted to a string used as a property name.
</span><span class="cx"> */
</span><del>-@interface JSValue(SubscriptSupport)
</del><ins>+@interface JSValue (SubscriptSupport)
</ins><span class="cx"> 
</span><span class="cx"> - (JSValue *)objectForKeyedSubscript:(id)key;
</span><span class="cx"> - (JSValue *)objectAtIndexedSubscript:(NSUInteger)index;
</span><span class="lines">@@ -585,7 +585,7 @@
</span><span class="cx"> @category
</span><span class="cx"> @discussion  These functions are for bridging between the C API and the Objective-C API.
</span><span class="cx"> */
</span><del>-@interface JSValue(JSValueRefSupport)
</del><ins>+@interface JSValue (JSValueRefSupport)
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx"> @method
</span><span class="lines">@@ -597,11 +597,11 @@
</span><span class="cx"> + (JSValue *)valueWithJSValueRef:(JSValueRef)value inContext:(JSContext *)context;
</span><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-@method
</del><ins>+@property
</ins><span class="cx"> @abstract Returns the C API counterpart wrapped by a JSContext.
</span><span class="cx"> @result The C API equivalent of this JSValue.
</span><span class="cx"> */
</span><del>-- (JSValueRef)JSValueRef;
</del><ins>+@property (readonly) JSValueRef JSValueRef;
</ins><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> #ifdef __cplusplus
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreAPIJSValueRefh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/API/JSValueRef.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/API/JSValueRef.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/API/JSValueRef.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -218,7 +218,7 @@
</span><span class="cx">  @param string   The JSString containing the JSON string to be parsed.
</span><span class="cx">  @result         A JSValue containing the parsed value, or NULL if the input is invalid.
</span><span class="cx">  */
</span><del>-JS_EXPORT JSValueRef JSValueMakeFromJSONString(JSContextRef ctx, JSStringRef string) AVAILABLE_AFTER_WEBKIT_VERSION_4_0;
</del><ins>+JS_EXPORT JSValueRef JSValueMakeFromJSONString(JSContextRef ctx, JSStringRef string) CF_AVAILABLE(10_7, 7_0);
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx">  @function
</span><span class="lines">@@ -229,7 +229,7 @@
</span><span class="cx">  @param exception A pointer to a JSValueRef in which to store an exception, if any. Pass NULL if you do not care to store an exception.
</span><span class="cx">  @result         A JSString with the result of serialization, or NULL if an exception is thrown.
</span><span class="cx">  */
</span><del>-JS_EXPORT JSStringRef JSValueCreateJSONString(JSContextRef ctx, JSValueRef value, unsigned indent, JSValueRef* exception) AVAILABLE_AFTER_WEBKIT_VERSION_4_0;
</del><ins>+JS_EXPORT JSStringRef JSValueCreateJSONString(JSContextRef ctx, JSValueRef value, unsigned indent, JSValueRef* exception) CF_AVAILABLE(10_7, 7_0);
</ins><span class="cx"> 
</span><span class="cx"> /* Converting to primitive values */
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreAPIJSVirtualMachineh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/API/JSVirtualMachine.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/API/JSVirtualMachine.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/API/JSVirtualMachine.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx"> @method
</span><span class="cx"> @abstract Create a new JSVirtualMachine.
</span><span class="cx"> */
</span><del>-- (id)init;
</del><ins>+- (instancetype)init;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx"> @methodgroup Memory Management
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreAPIJSVirtualMachinemm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/API/JSVirtualMachine.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/API/JSVirtualMachine.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/API/JSVirtualMachine.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -86,7 +86,7 @@
</span><span class="cx">     NSMapTable *m_externalObjectGraph;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (id)init
</del><ins>+- (instancetype)init
</ins><span class="cx"> {
</span><span class="cx">     JSContextGroupRef group = JSContextGroupCreate();
</span><span class="cx">     self = [self initWithContextGroupRef:group];
</span><span class="lines">@@ -95,7 +95,7 @@
</span><span class="cx">     return self;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (id)initWithContextGroupRef:(JSContextGroupRef)group
</del><ins>+- (instancetype)initWithContextGroupRef:(JSContextGroupRef)group
</ins><span class="cx"> {
</span><span class="cx">     self = [super init];
</span><span class="cx">     if (!self)
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreAPIteststestapic"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/API/tests/testapi.c (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/API/tests/testapi.c        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/API/tests/testapi.c        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -20,7 +20,7 @@
</span><span class="cx">  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
</span><span class="cx">  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
</span><span class="cx">  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
</span><del>- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
</del><ins>+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</ins><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JavaScriptCore.h&quot;
</span><span class="lines">@@ -45,6 +45,7 @@
</span><span class="cx"> 
</span><span class="cx"> #if COMPILER(MSVC)
</span><span class="cx"> 
</span><ins>+#if _MSC_VER &lt; 1800
</ins><span class="cx"> #include &lt;wtf/MathExtras.h&gt;
</span><span class="cx"> 
</span><span class="cx"> static double nan(const char*)
</span><span class="lines">@@ -54,6 +55,7 @@
</span><span class="cx"> 
</span><span class="cx"> using std::isinf;
</span><span class="cx"> using std::isnan;
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -1081,6 +1083,34 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+static bool globalContextNameTest()
+{
+    bool result = true;
+    JSGlobalContextRef context = JSGlobalContextCreate(0);
+
+    JSStringRef str = JSGlobalContextCopyName(context);
+    result &amp;= assertTrue(!str, &quot;Default context name is NULL&quot;);
+
+    JSStringRef name1 = JSStringCreateWithUTF8CString(&quot;name1&quot;);
+    JSStringRef name2 = JSStringCreateWithUTF8CString(&quot;name2&quot;);
+
+    JSGlobalContextSetName(context, name1);
+    JSStringRef fetchName1 = JSGlobalContextCopyName(context);
+    JSGlobalContextSetName(context, name2);
+    JSStringRef fetchName2 = JSGlobalContextCopyName(context);
+
+    result &amp;= assertTrue(JSStringIsEqual(name1, fetchName1), &quot;Unexpected Context name&quot;);
+    result &amp;= assertTrue(JSStringIsEqual(name2, fetchName2), &quot;Unexpected Context name&quot;);
+    result &amp;= assertTrue(!JSStringIsEqual(fetchName1, fetchName2), &quot;Unexpected Context name&quot;);
+
+    JSStringRelease(name1);
+    JSStringRelease(name2);
+    JSStringRelease(fetchName1);
+    JSStringRelease(fetchName2);
+
+    return result;
+}
+
</ins><span class="cx"> static void checkConstnessInJSObjectNames()
</span><span class="cx"> {
</span><span class="cx">     JSStaticFunction fun;
</span><span class="lines">@@ -2016,6 +2046,9 @@
</span><span class="cx">     if (valueToObjectExceptionTest())
</span><span class="cx">         printf(&quot;PASS: throwException did not crash when handling an error with appendMessageToError set and no codeBlock available.\n&quot;);
</span><span class="cx"> 
</span><ins>+    if (globalContextNameTest())
+        printf(&quot;PASS: global context name behaves as expected.\n&quot;);
+
</ins><span class="cx">     if (failed) {
</span><span class="cx">         printf(&quot;FAIL: Some tests failed.\n&quot;);
</span><span class="cx">         return 1;
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreAPIteststestapimm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/API/tests/testapi.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/API/tests/testapi.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/API/tests/testapi.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -20,7 +20,7 @@
</span><span class="cx">  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
</span><span class="cx">  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
</span><span class="cx">  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
</span><del>- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
</del><ins>+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</ins><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> #import &lt;JavaScriptCore/JavaScriptCore.h&gt;
</span><span class="lines">@@ -1196,6 +1196,20 @@
</span><span class="cx">         checkResult(@&quot;EvilAllocationObject was successfully dealloced without crashing&quot;, evilAllocationObjectWasDealloced);
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    @autoreleasepool {
+        JSContext *context = [[JSContext alloc] init];
+        checkResult(@&quot;default context.name is nil&quot;, context.name == nil);
+        NSString *name1 = @&quot;Name1&quot;;
+        NSString *name2 = @&quot;Name2&quot;;
+        context.name = name1;
+        NSString *fetchedName1 = context.name;
+        context.name = name2;
+        NSString *fetchedName2 = context.name;
+        checkResult(@&quot;fetched context.name was expected&quot;, [fetchedName1 isEqualToString:name1]);
+        checkResult(@&quot;fetched context.name was expected&quot;, [fetchedName2 isEqualToString:name2]);
+        checkResult(@&quot;fetched context.name was expected&quot;, ![fetchedName1 isEqualToString:fetchedName2]);
+    }
+
</ins><span class="cx">     currentThisInsideBlockGetterTest();
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/CMakeLists.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/CMakeLists.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/CMakeLists.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -4,6 +4,7 @@
</span><span class="cx">     &quot;${JAVASCRIPTCORE_DIR}/API&quot;
</span><span class="cx">     &quot;${JAVASCRIPTCORE_DIR}/ForwardingHeaders&quot;
</span><span class="cx">     &quot;${JAVASCRIPTCORE_DIR}/assembler&quot;
</span><ins>+    &quot;${JAVASCRIPTCORE_DIR}/bindings&quot;
</ins><span class="cx">     &quot;${JAVASCRIPTCORE_DIR}/bytecode&quot;
</span><span class="cx">     &quot;${JAVASCRIPTCORE_DIR}/bytecompiler&quot;
</span><span class="cx">     &quot;${JAVASCRIPTCORE_DIR}/dfg&quot;
</span><span class="lines">@@ -45,6 +46,10 @@
</span><span class="cx">     assembler/MacroAssembler.cpp
</span><span class="cx">     assembler/MacroAssemblerX86Common.cpp
</span><span class="cx"> 
</span><ins>+    bindings/ScriptFunctionCall.cpp
+    bindings/ScriptObject.cpp
+    bindings/ScriptValue.cpp
+
</ins><span class="cx">     bytecode/ArrayAllocationProfile.cpp
</span><span class="cx">     bytecode/ArrayProfile.cpp
</span><span class="cx">     bytecode/BytecodeBasicBlock.cpp
</span><span class="lines">@@ -217,6 +222,10 @@
</span><span class="cx">     heap/WeakSet.cpp
</span><span class="cx">     heap/WriteBarrierSupport.cpp
</span><span class="cx"> 
</span><ins>+    inspector/InspectorAgentRegistry.cpp
+    inspector/InspectorBackendDispatcher.cpp
+    inspector/InspectorValues.cpp
+
</ins><span class="cx">     interpreter/AbstractPC.cpp
</span><span class="cx">     interpreter/CallFrame.cpp
</span><span class="cx">     interpreter/Interpreter.cpp
</span><span class="lines">@@ -586,6 +595,7 @@
</span><span class="cx"> 
</span><span class="cx"> set(JavaScriptCore_FORWARDING_HEADERS_DIRECTORIES
</span><span class="cx">     assembler
</span><ins>+    bindings
</ins><span class="cx">     bytecode
</span><span class="cx">     collector/handles
</span><span class="cx">     debugger
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/ChangeLog (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/ChangeLog        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/ChangeLog        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,3 +1,237 @@
</span><ins>+2014-01-23  Mark Hahnenberg  &lt;mhahnenberg@apple.com&gt;
+
+        Merge branch up to ToT r160556.
+
+        * API/JSBasePrivate.h:
+        * API/JSContext.h:
+        * API/JSContext.mm:
+        (-[JSContext init]):
+        (-[JSContext initWithVirtualMachine:]):
+        (-[JSContext initWithGlobalContextRef:]):
+        * API/JSContextRef.h:
+        * API/JSContextRefPrivate.h:
+        * API/JSManagedValue.h:
+        * API/JSManagedValue.mm:
+        (-[JSManagedValue init]):
+        (-[JSManagedValue initWithValue:]):
+        * API/JSObjectRef.h:
+        * API/JSStringRefCF.h:
+        * API/JSValue.h:
+        * API/JSValueRef.h:
+        * API/JSVirtualMachine.h:
+        * API/JSVirtualMachine.mm:
+        (-[JSVirtualMachine init]):
+        (-[JSVirtualMachine initWithContextGroupRef:]):
+        * API/tests/testapi.c:
+        (globalContextNameTest):
+        (main):
+        * API/tests/testapi.mm:
+        * CMakeLists.txt:
+        * Configurations/Version.xcconfig:
+        * DerivedSources.make:
+        * GNUmakefile.am:
+        * GNUmakefile.list.am:
+        * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
+        * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
+        * JavaScriptCore.vcxproj/JavaScriptCoreCommon.props:
+        * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractor.vcxproj:
+        * JavaScriptCore.vcxproj/build-generated-files.sh:
+        * JavaScriptCore.vcxproj/copy-files.cmd:
+        * JavaScriptCore.vcxproj/jsc/jsc.vcxproj:
+        * JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj:
+        * JavaScriptCore.vcxproj/testapi/testapi.vcxproj:
+        * JavaScriptCore.xcodeproj/project.pbxproj:
+        * bindings: Added.
+        * bindings/ScriptFunctionCall.cpp: Added.
+        (Deprecated::ScriptCallArgumentHandler::appendArgument):
+        (Deprecated::ScriptFunctionCall::ScriptFunctionCall):
+        (Deprecated::ScriptFunctionCall::call):
+        * bindings/ScriptFunctionCall.h: Added.
+        * bindings/ScriptObject.cpp: Added.
+        (Deprecated::ScriptObject::ScriptObject):
+        * bindings/ScriptObject.h: Added.
+        (Deprecated::ScriptObject::ScriptObject):
+        (Deprecated::ScriptObject::jsObject):
+        (Deprecated::ScriptObject::scriptState):
+        * bindings/ScriptValue.cpp: Added.
+        (Deprecated::ScriptValue::~ScriptValue):
+        (Deprecated::ScriptValue::getString):
+        (Deprecated::ScriptValue::toString):
+        (Deprecated::ScriptValue::isEqual):
+        (Deprecated::ScriptValue::isNull):
+        (Deprecated::ScriptValue::isUndefined):
+        (Deprecated::ScriptValue::isObject):
+        (Deprecated::ScriptValue::isFunction):
+        (Deprecated::jsToInspectorValue):
+        (Deprecated::ScriptValue::toInspectorValue):
+        * bindings/ScriptValue.h: Added.
+        * bytecode/CodeBlockHash.cpp:
+        (JSC::CodeBlockHash::CodeBlockHash):
+        (JSC::CodeBlockHash::dump):
+        * bytecode/Opcode.cpp:
+        (JSC::OpcodeStats::~OpcodeStats):
+        * dfg/DFGCSEPhase.cpp:
+        * docs/make-bytecode-docs.pl:
+        * ftl/FTLAbstractHeap.h:
+        * heap/Heap.cpp:
+        (JSC::Heap::collect):
+        * heap/Heap.h:
+        * heap/MarkedSpace.h:
+        * heap/RecursiveAllocationScope.h: Added.
+        (JSC::RecursiveAllocationScope::RecursiveAllocationScope):
+        (JSC::RecursiveAllocationScope::~RecursiveAllocationScope):
+        * inspector/InspectorAgentBase.h: Added.
+        (Inspector::InspectorAgentBase::~InspectorAgentBase):
+        (Inspector::InspectorAgentBase::discardAgent):
+        (Inspector::InspectorAgentBase::InspectorAgentBase):
+        * inspector/InspectorAgentRegistry.cpp: Added.
+        (Inspector::InspectorAgentRegistry::append):
+        (Inspector::InspectorAgentRegistry::didCreateFrontendAndBackend):
+        (Inspector::InspectorAgentRegistry::willDestroyFrontendAndBackend):
+        (Inspector::InspectorAgentRegistry::discardAgents):
+        * inspector/InspectorAgentRegistry.h: Added.
+        * inspector/InspectorBackendDispatcher.cpp: Added.
+        (Inspector::InspectorBackendDispatcher::CallbackBase::CallbackBase):
+        (Inspector::InspectorBackendDispatcher::CallbackBase::isActive):
+        (Inspector::InspectorBackendDispatcher::CallbackBase::sendFailure):
+        (Inspector::InspectorBackendDispatcher::CallbackBase::sendIfActive):
+        (Inspector::InspectorBackendDispatcher::create):
+        (Inspector::InspectorBackendDispatcher::registerDispatcherForDomain):
+        (Inspector::InspectorBackendDispatcher::dispatch):
+        (Inspector::InspectorBackendDispatcher::sendResponse):
+        (Inspector::InspectorBackendDispatcher::reportProtocolError):
+        (Inspector::getPropertyValue):
+        (Inspector::AsMethodBridges::asInt):
+        (Inspector::AsMethodBridges::asDouble):
+        (Inspector::AsMethodBridges::asString):
+        (Inspector::AsMethodBridges::asBoolean):
+        (Inspector::AsMethodBridges::asObject):
+        (Inspector::AsMethodBridges::asArray):
+        (Inspector::InspectorBackendDispatcher::getInt):
+        (Inspector::InspectorBackendDispatcher::getDouble):
+        (Inspector::InspectorBackendDispatcher::getString):
+        (Inspector::InspectorBackendDispatcher::getBoolean):
+        (Inspector::InspectorBackendDispatcher::getObject):
+        (Inspector::InspectorBackendDispatcher::getArray):
+        * inspector/InspectorBackendDispatcher.h: Added.
+        (Inspector::InspectorSupplementalBackendDispatcher::InspectorSupplementalBackendDispatcher):
+        (Inspector::InspectorSupplementalBackendDispatcher::~InspectorSupplementalBackendDispatcher):
+        * inspector/InspectorTypeBuilder.h: Added.
+        (Inspector::TypeBuilder::OptOutput::OptOutput):
+        (Inspector::TypeBuilder::OptOutput::operator=):
+        (Inspector::TypeBuilder::OptOutput::isAssigned):
+        (Inspector::TypeBuilder::OptOutput::getValue):
+        (Inspector::TypeBuilder::ExactlyInt::ExactlyInt):
+        (Inspector::TypeBuilder::ExactlyInt::operator int):
+        (Inspector::TypeBuilder::ExactlyInt::cast_to_int):
+        (Inspector::TypeBuilder::int):
+        (Inspector::TypeBuilder::RuntimeCastHelper::assertType):
+        (Inspector::TypeBuilder::RuntimeCastHelper::assertAny):
+        (Inspector::TypeBuilder::RuntimeCastHelper::assertInt):
+        (Inspector::TypeBuilder::Array::Array):
+        (Inspector::TypeBuilder::Array::openAccessors):
+        (Inspector::TypeBuilder::Array::addItem):
+        (Inspector::TypeBuilder::Array::create):
+        (Inspector::TypeBuilder::Array::runtimeCast):
+        (Inspector::TypeBuilder::Array::assertCorrectValue):
+        (Inspector::TypeBuilder::StructItemTraits::pushRefPtr):
+        (Inspector::TypeBuilder::StructItemTraits::assertCorrectValue):
+        * inspector/InspectorValues.cpp: Added.
+        (Inspector::InspectorValue::asBoolean):
+        (Inspector::InspectorValue::asNumber):
+        (Inspector::InspectorValue::asString):
+        (Inspector::InspectorValue::asValue):
+        (Inspector::InspectorValue::asObject):
+        (Inspector::InspectorValue::asArray):
+        (Inspector::InspectorValue::parseJSON):
+        (Inspector::InspectorValue::toJSONString):
+        (Inspector::InspectorValue::writeJSON):
+        (Inspector::InspectorBasicValue::asBoolean):
+        (Inspector::InspectorBasicValue::asNumber):
+        (Inspector::InspectorBasicValue::writeJSON):
+        (Inspector::InspectorString::asString):
+        (Inspector::InspectorString::writeJSON):
+        (Inspector::InspectorObjectBase::~InspectorObjectBase):
+        (Inspector::InspectorObjectBase::asObject):
+        (Inspector::InspectorObjectBase::openAccessors):
+        (Inspector::InspectorObjectBase::getBoolean):
+        (Inspector::InspectorObjectBase::getString):
+        (Inspector::InspectorObjectBase::getObject):
+        (Inspector::InspectorObjectBase::getArray):
+        (Inspector::InspectorObjectBase::get):
+        (Inspector::InspectorObjectBase::remove):
+        (Inspector::InspectorObjectBase::writeJSON):
+        (Inspector::InspectorObjectBase::InspectorObjectBase):
+        (Inspector::InspectorArrayBase::~InspectorArrayBase):
+        (Inspector::InspectorArrayBase::asArray):
+        (Inspector::InspectorArrayBase::writeJSON):
+        (Inspector::InspectorArrayBase::InspectorArrayBase):
+        (Inspector::InspectorArrayBase::get):
+        (Inspector::InspectorObject::create):
+        (Inspector::InspectorArray::create):
+        (Inspector::InspectorValue::null):
+        (Inspector::InspectorString::create):
+        (Inspector::InspectorBasicValue::create):
+        * inspector/InspectorValues.h: Added.
+        (Inspector::InspectorObjectBase::find):
+        (Inspector::InspectorObjectBase::setBoolean):
+        (Inspector::InspectorObjectBase::setNumber):
+        (Inspector::InspectorObjectBase::setString):
+        (Inspector::InspectorObjectBase::setValue):
+        (Inspector::InspectorObjectBase::setObject):
+        (Inspector::InspectorObjectBase::setArray):
+        (Inspector::InspectorArrayBase::pushBoolean):
+        (Inspector::InspectorArrayBase::pushInt):
+        (Inspector::InspectorArrayBase::pushNumber):
+        (Inspector::InspectorArrayBase::pushString):
+        (Inspector::InspectorArrayBase::pushValue):
+        (Inspector::InspectorArrayBase::pushObject):
+        (Inspector::InspectorArrayBase::pushArray):
+        * inspector/scripts: Added.
+        * jit/JITOperations.cpp:
+        * jsc.cpp:
+        * make-generated-sources.sh:
+        * offlineasm/mips.rb:
+        * offlineasm/sh4.rb:
+        * parser/ASTBuilder.h:
+        (JSC::ASTBuilder::createGetterOrSetterProperty):
+        (JSC::ASTBuilder::createProperty):
+        * parser/Parser.cpp:
+        (JSC::::parseInner):
+        (JSC::::parseSourceElements):
+        (JSC::::parseVarDeclarationList):
+        (JSC::::createBindingPattern):
+        (JSC::::tryParseDeconstructionPatternExpression):
+        (JSC::::parseDeconstructionPattern):
+        (JSC::::parseSwitchClauses):
+        (JSC::::parseSwitchDefaultClause):
+        (JSC::::parseBlockStatement):
+        (JSC::::parseFormalParameters):
+        (JSC::::parseFunctionBody):
+        (JSC::::parseFunctionInfo):
+        (JSC::::parseFunctionDeclaration):
+        (JSC::::parseProperty):
+        (JSC::::parseObjectLiteral):
+        (JSC::::parseStrictObjectLiteral):
+        (JSC::::parseMemberExpression):
+        * parser/Parser.h:
+        * parser/ParserArena.h:
+        * parser/SyntaxChecker.h:
+        (JSC::SyntaxChecker::createProperty):
+        (JSC::SyntaxChecker::createGetterOrSetterProperty):
+        * runtime/CodeCache.h:
+        * runtime/DateInstanceCache.h:
+        * runtime/JSGlobalObject.cpp:
+        (JSC::JSGlobalObject::reset):
+        * runtime/JSGlobalObject.h:
+        * runtime/JSString.h:
+        * runtime/LiteralParser.h:
+        * runtime/NumericStrings.h:
+        * runtime/RegExpCache.h:
+        * runtime/SmallStrings.h:
+        * runtime/VM.h:
+        * testRegExp.cpp:
+
</ins><span class="cx"> 2014-01-22  Filip Pizlo  &lt;fpizlo@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Unreviewed, fix style.
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreConfigurationsVersionxcconfig"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/Configurations/Version.xcconfig (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/Configurations/Version.xcconfig        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/Configurations/Version.xcconfig        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -22,7 +22,7 @@
</span><span class="cx"> // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
</span><span class="cx"> 
</span><span class="cx"> MAJOR_VERSION = 538;
</span><del>-MINOR_VERSION = 9;
</del><ins>+MINOR_VERSION = 10;
</ins><span class="cx"> TINY_VERSION = 0;
</span><span class="cx"> FULL_VERSION = $(MAJOR_VERSION).$(MINOR_VERSION);
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreDerivedSourcesmake"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/DerivedSources.make (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/DerivedSources.make        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/DerivedSources.make        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -27,7 +27,6 @@
</span><span class="cx"> VPATH = \
</span><span class="cx">     $(JavaScriptCore) \
</span><span class="cx">     $(JavaScriptCore)/parser \
</span><del>-    $(JavaScriptCore)/docs \
</del><span class="cx">     $(JavaScriptCore)/runtime \
</span><span class="cx">     $(JavaScriptCore)/interpreter \
</span><span class="cx">     $(JavaScriptCore)/jit \
</span><span class="lines">@@ -58,7 +57,6 @@
</span><span class="cx">     RegExpJitTables.h \
</span><span class="cx">     RegExpObject.lut.h \
</span><span class="cx">     StringConstructor.lut.h \
</span><del>-    docs/bytecode.html \
</del><span class="cx">     udis86_itab.h \
</span><span class="cx"> #
</span><span class="cx"> 
</span><span class="lines">@@ -69,9 +67,6 @@
</span><span class="cx"> Lexer.lut.h: create_hash_table Keywords.table
</span><span class="cx">         $^ &gt; $@
</span><span class="cx"> 
</span><del>-docs/bytecode.html: make-bytecode-docs.pl Interpreter.cpp 
-        perl $^ $@
-
</del><span class="cx"> # character tables for Yarr
</span><span class="cx"> 
</span><span class="cx"> RegExpJitTables.h: create_regex_tables
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreGNUmakefileam"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/GNUmakefile.am (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/GNUmakefile.am        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/GNUmakefile.am        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -52,6 +52,7 @@
</span><span class="cx">         -I$(srcdir)/Source/JavaScriptCore/API \
</span><span class="cx">         -I$(srcdir)/Source/JavaScriptCore/ForwardingHeaders \
</span><span class="cx">         -I$(srcdir)/Source/JavaScriptCore/assembler \
</span><ins>+        -I$(srcdir)/Source/JavaScriptCore/bindings \
</ins><span class="cx">         -I$(srcdir)/Source/JavaScriptCore/bytecode \
</span><span class="cx">         -I$(srcdir)/Source/JavaScriptCore/bytecompiler \
</span><span class="cx">         -I$(srcdir)/Source/JavaScriptCore/debugger \
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreGNUmakefilelistam"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/GNUmakefile.list.am (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/GNUmakefile.list.am        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/GNUmakefile.list.am        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -96,6 +96,12 @@
</span><span class="cx">         Source/JavaScriptCore/assembler/RepatchBuffer.h \
</span><span class="cx">         Source/JavaScriptCore/assembler/SH4Assembler.h \
</span><span class="cx">         Source/JavaScriptCore/assembler/X86Assembler.h \
</span><ins>+    Source/JavaScriptCore/bindings/ScriptFunctionCall.cpp \
+    Source/JavaScriptCore/bindings/ScriptFunctionCall.h \
+    Source/JavaScriptCore/bindings/ScriptObject.cpp \
+    Source/JavaScriptCore/bindings/ScriptObject.h \
+    Source/JavaScriptCore/bindings/ScriptValue.cpp \
+    Source/JavaScriptCore/bindings/ScriptValue.h \
</ins><span class="cx">         Source/JavaScriptCore/bytecode/ArrayAllocationProfile.cpp \
</span><span class="cx">         Source/JavaScriptCore/bytecode/ArrayAllocationProfile.h \
</span><span class="cx">         Source/JavaScriptCore/bytecode/ArrayProfile.cpp \
</span><span class="lines">@@ -554,6 +560,7 @@
</span><span class="cx">         Source/JavaScriptCore/heap/TinyBloomFilter.h \
</span><span class="cx">         Source/JavaScriptCore/heap/MarkedSpace.cpp \
</span><span class="cx">         Source/JavaScriptCore/heap/MarkedSpace.h \
</span><ins>+    Source/JavaScriptCore/heap/RecursiveAllocationScope.h \
</ins><span class="cx">         Source/JavaScriptCore/heap/Region.h \
</span><span class="cx">         Source/JavaScriptCore/heap/Strong.h \
</span><span class="cx">         Source/JavaScriptCore/heap/StrongInlines.h \
</span><span class="lines">@@ -617,7 +624,15 @@
</span><span class="cx">         Source/JavaScriptCore/icu/unicode/utf_old.h \
</span><span class="cx">         Source/JavaScriptCore/icu/unicode/utypes.h \
</span><span class="cx">         Source/JavaScriptCore/icu/unicode/uversion.h \
</span><ins>+        Source/JavaScriptCore/inspector/InspectorAgentBase.h \
+        Source/JavaScriptCore/inspector/InspectorAgentRegistry.cpp \
+        Source/JavaScriptCore/inspector/InspectorAgentRegistry.h \
+        Source/JavaScriptCore/inspector/InspectorBackendDispatcher.cpp \
+        Source/JavaScriptCore/inspector/InspectorBackendDispatcher.h \
</ins><span class="cx">         Source/JavaScriptCore/inspector/InspectorFrontendChannel.h \
</span><ins>+        Source/JavaScriptCore/inspector/InspectorTypeBuilder.h \
+        Source/JavaScriptCore/inspector/InspectorValues.cpp \
+        Source/JavaScriptCore/inspector/InspectorValues.h \
</ins><span class="cx">         Source/JavaScriptCore/interpreter/AbstractPC.cpp \
</span><span class="cx">         Source/JavaScriptCore/interpreter/AbstractPC.h \
</span><span class="cx">         Source/JavaScriptCore/interpreter/CachedCall.h \
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreJavaScriptCorevcxprojJavaScriptCorevcxproj"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -61,6 +61,7 @@
</span><span class="cx">     &lt;UseDebugLibraries&gt;true&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;true&lt;/UseDebugLibraries&gt;
</span><span class="lines">@@ -71,6 +72,7 @@
</span><span class="cx">     &lt;UseDebugLibraries&gt;true&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;true&lt;/UseDebugLibraries&gt;
</span><span class="lines">@@ -81,6 +83,7 @@
</span><span class="cx">     &lt;UseDebugLibraries&gt;true&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;true&lt;/UseDebugLibraries&gt;
</span><span class="lines">@@ -91,6 +94,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;false&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -101,6 +105,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;false&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -111,6 +116,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;false&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -294,6 +300,9 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\assembler\MacroAssembler.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\API\JSCTestRunnerUtils.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\assembler\MacroAssemblerX86Common.cpp&quot; /&gt;
</span><ins>+    &lt;ClCompile Include=&quot;..\bindings\ScriptFunctionCall.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;..\bindings\ScriptObject.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;..\bindings\ScriptValue.cpp&quot; /&gt;
</ins><span class="cx">     &lt;ClCompile Include=&quot;..\bytecode\ArrayAllocationProfile.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\bytecode\ArrayProfile.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\bytecode\BytecodeBasicBlock.cpp&quot; /&gt;
</span><span class="lines">@@ -458,6 +467,9 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\heap\WeakHandleOwner.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\heap\WeakSet.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\heap\WriteBarrierSupport.cpp&quot; /&gt;
</span><ins>+    &lt;ClCompile Include=&quot;..\inspector\InspectorAgentRegistry.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;..\inspector\InspectorBackendDispatcher.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;..\inspector\InspectorValues.cpp&quot; /&gt;
</ins><span class="cx">     &lt;ClCompile Include=&quot;..\interpreter\AbstractPC.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\interpreter\CallFrame.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\interpreter\Interpreter.cpp&quot; /&gt;
</span><span class="lines">@@ -753,6 +765,9 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\assembler\MaxFrameExtentForSlowPathCall.h /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\assembler\RepatchBuffer.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\assembler\X86Assembler.h&quot; /&gt;
</span><ins>+    &lt;ClInclude Include=&quot;..\bindings\ScriptFunctionCall.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\bindings\ScriptObject.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\bindings\ScriptValue.h&quot; /&gt;
</ins><span class="cx">     &lt;ClInclude Include=&quot;..\bytecode\ArrayAllocationProfile.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\bytecode\ArrayProfile.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\bytecode\ByValInfo.h&quot; /&gt;
</span><span class="lines">@@ -987,6 +1002,7 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\heap\MarkedSpace.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\heap\MarkStack.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\heap\MarkStackInlines.h&quot; /&gt;
</span><ins>+    &lt;ClInclude Include=&quot;..\heap\RecursiveAllocationScope.h&quot; /&gt;
</ins><span class="cx">     &lt;ClInclude Include=&quot;..\heap\Region.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\heap\SlotVisitor.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\heap\SlotVisitorInlines.h&quot; /&gt;
</span><span class="lines">@@ -1003,7 +1019,12 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\heap\WeakSet.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\heap\WeakSetInlines.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\heap\WriteBarrierSupport.h&quot; /&gt;
</span><ins>+    &lt;ClInclude Include=&quot;..\inspector\InspectorAgentBase.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\inspector\InspectorAgentRegistry.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\inspector\InspectorBackendDispatcher.h&quot; /&gt;
</ins><span class="cx">     &lt;ClInclude Include=&quot;..\inspector\InspectorFrontendChannel.h&quot; /&gt;
</span><ins>+    &lt;ClInclude Include=&quot;..\inspector\InspectorTypeBuilder.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\inspector\InspectorValues.h&quot; /&gt;
</ins><span class="cx">     &lt;ClInclude Include=&quot;..\interpreter\AbstractPC.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\interpreter\CachedCall.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\interpreter\CallFrame.h&quot; /&gt;
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreJavaScriptCorevcxprojJavaScriptCorevcxprojfilters"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -4,6 +4,9 @@
</span><span class="cx">     &lt;Filter Include=&quot;assembler&quot;&gt;
</span><span class="cx">       &lt;UniqueIdentifier&gt;{429783a1-5d6a-4019-ad1a-ddb2c98f9b6c}&lt;/UniqueIdentifier&gt;
</span><span class="cx">     &lt;/Filter&gt;
</span><ins>+    &lt;Filter Include=&quot;bindings&quot;&gt;
+      &lt;UniqueIdentifier&gt;{0bace123-4582-eebc-9314-7819b376c198}&lt;/UniqueIdentifier&gt;
+    &lt;/Filter&gt;
</ins><span class="cx">     &lt;Filter Include=&quot;bytecode&quot;&gt;
</span><span class="cx">       &lt;UniqueIdentifier&gt;{766088a0-1216-4854-aa43-560c5e283668}&lt;/UniqueIdentifier&gt;
</span><span class="cx">     &lt;/Filter&gt;
</span><span class="lines">@@ -279,6 +282,15 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\heap\WriteBarrierSupport.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;heap&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><ins>+    &lt;ClCompile Include=&quot;..\inspector\InspectorAgentRegistry.cpp&quot;&gt;
+      &lt;Filter&gt;inspector&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;..\inspector\InspectorBackendDispatcher.cpp&quot;&gt;
+      &lt;Filter&gt;inspector&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;..\inspector\InspectorValues.cpp&quot;&gt;
+      &lt;Filter&gt;inspector&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
</ins><span class="cx">     &lt;ClCompile Include=&quot;..\interpreter\AbstractPC.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;interpreter&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><span class="lines">@@ -1269,6 +1281,24 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\bytecode\ProfiledCodeBlockJettisoningWatchpoint.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;bytecode&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><ins>+    &lt;ClCompile Include=&quot;..\bindings\ScriptValue.cpp&quot;&gt;
+      &lt;Filter&gt;bindings&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;..\bindings\ScriptFunctionCall.cpp&quot;&gt;
+      &lt;Filter&gt;bindings&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;..\bindings\ScriptObject.cpp&quot;&gt;
+      &lt;Filter&gt;bindings&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;..\dfg\DFGSSALoweringPhase.cpp&quot;&gt;
+      &lt;Filter&gt;dfg&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;..\dfg\DFGStrengthReductionPhase.cpp&quot;&gt;
+      &lt;Filter&gt;dfg&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;..\runtime\ArrayBufferNeuteringWatchpoint.cpp&quot;&gt;
+      &lt;Filter&gt;runtime&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
</ins><span class="cx">   &lt;/ItemGroup&gt;
</span><span class="cx">   &lt;ItemGroup&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\API\APICallbackFunction.h&quot;&gt;
</span><span class="lines">@@ -1673,6 +1703,9 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\heap\MarkStackInlines.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;heap&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><ins>+    &lt;ClInclude Include=&quot;..\heap\RecursiveAllocationScope.h&quot;&gt;
+      &lt;Filter&gt;heap&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
</ins><span class="cx">     &lt;ClInclude Include=&quot;..\heap\Region.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;heap&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><span class="lines">@@ -1721,9 +1754,24 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\heap\WriteBarrierSupport.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;heap&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><ins>+    &lt;ClInclude Include=&quot;..\inspector\InspectorAgentBase.h&quot;&gt;
+      &lt;Filter&gt;inspector&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;..\inspector\InspectorAgentRegistry.h&quot;&gt;
+      &lt;Filter&gt;inspector&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;..\inspector\InspectorBackendDispatcher.h&quot;&gt;
+      &lt;Filter&gt;inspector&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
</ins><span class="cx">     &lt;ClInclude Include=&quot;..\inspector\InspectorFrontendChannel.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;inspector&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><ins>+    &lt;ClInclude Include=&quot;..\inspector\InspectorTypeBuilder.h&quot;&gt;
+      &lt;Filter&gt;inspector&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;..\inspector\InspectorValues.h&quot;&gt;
+      &lt;Filter&gt;inspector&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
</ins><span class="cx">     &lt;ClInclude Include=&quot;..\interpreter\AbstractPC.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;interpreter&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><span class="lines">@@ -3168,6 +3216,27 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\bytecode\VariableWatchpointSet.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;bytecode&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><ins>+    &lt;ClInclude Include=&quot;..\bindings\ScriptFunctionCall.h&quot;&gt;
+      &lt;Filter&gt;bindings&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;..\bindings\ScriptObject.h&quot;&gt;
+      &lt;Filter&gt;bindings&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;..\bindings\ScriptValue.h&quot;&gt;
+      &lt;Filter&gt;bindings&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;..\dfg\DFGStrengthReductionPhase.h&quot;&gt;
+      &lt;Filter&gt;dfg&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;..\dfg\DFGSSALoweringPhase.h&quot;&gt;
+      &lt;Filter&gt;dfg&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;..\runtime\ArrayBufferNeuteringWatchpoint.h&quot;&gt;
+      &lt;Filter&gt;runtime&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;..\runtime\ConstantMode.h&quot;&gt;
+      &lt;Filter&gt;runtime&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
</ins><span class="cx">   &lt;/ItemGroup&gt;
</span><span class="cx">   &lt;ItemGroup&gt;
</span><span class="cx">     &lt;None Include=&quot;JavaScriptCorePreLink.cmd&quot; /&gt;
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreJavaScriptCorevcxprojJavaScriptCoreCommonprops"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreCommon.props (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreCommon.props        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreCommon.props        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx">   &lt;PropertyGroup /&gt;
</span><span class="cx">   &lt;ItemDefinitionGroup&gt;
</span><span class="cx">     &lt;ClCompile&gt;
</span><del>-      &lt;AdditionalIncludeDirectories&gt;..\;..\tools\;..\runtime\;..\llint\;..\jit\;..\disassembler\;..\heap\;..\debugger\;..\assembler\;..\profiler\;..\yarr\;..\interpreter\;..\bytecode\;..\dfg\;..\bytecompiler\;..\parser\;..\API\;..\ftl\;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\JavaScriptCore\DerivedSources\;$(ConfigurationBuildDir)\include\;$(ConfigurationBuildDir)\include\JavaScriptCore\;$(ConfigurationBuildDir)\include\private\;$(WebKit_Libraries)\include;$(WebKit_Libraries)\include\private;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;
</del><ins>+      &lt;AdditionalIncludeDirectories&gt;..\;..\tools\;..\runtime\;..\llint\;..\jit\;..\disassembler\;..\heap\;..\debugger\;..\assembler\;..\profiler\;..\yarr\;..\interpreter\;..\bytecode\;..\dfg\;..\bytecompiler\;..\parser\;..\API\;..\ftl\;..\bindings\;..\inspector\;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\JavaScriptCore\DerivedSources\;$(ConfigurationBuildDir)\include\;$(ConfigurationBuildDir)\include\JavaScriptCore\;$(ConfigurationBuildDir)\include\private\;$(WebKit_Libraries)\include;$(WebKit_Libraries)\include\private;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;
</ins><span class="cx">       &lt;ForcedIncludeFiles&gt;ICUVersion.h;%(ForcedIncludeFiles)&lt;/ForcedIncludeFiles&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><span class="cx">     &lt;Link&gt;
</span><span class="lines">@@ -16,4 +16,4 @@
</span><span class="cx">     &lt;/Link&gt;
</span><span class="cx">   &lt;/ItemDefinitionGroup&gt;
</span><span class="cx">   &lt;ItemGroup /&gt;
</span><del>-&lt;/Project&gt;
</del><ins>+&lt;/Project&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreJavaScriptCorevcxprojLLIntLLIntOffsetsExtractorLLIntOffsetsExtractorvcxproj"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractor.vcxproj (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractor.vcxproj        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractor.vcxproj        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -61,6 +61,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -69,6 +70,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -77,6 +79,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -85,6 +88,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -93,6 +97,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -101,6 +106,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Production|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreJavaScriptCorevcxprojbuildgeneratedfilessh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.vcxproj/build-generated-files.sh (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.vcxproj/build-generated-files.sh        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.vcxproj/build-generated-files.sh        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -28,7 +28,7 @@
</span><span class="cx"> 
</span><span class="cx"> export BUILT_PRODUCTS_DIR=&quot;$XDSTROOT/obj${3}/JavaScriptCore&quot;
</span><span class="cx"> 
</span><del>-mkdir -p &quot;${BUILT_PRODUCTS_DIR}/DerivedSources/docs&quot;
</del><ins>+mkdir -p &quot;${BUILT_PRODUCTS_DIR}/DerivedSources&quot;
</ins><span class="cx"> cd &quot;${BUILT_PRODUCTS_DIR}/DerivedSources&quot;
</span><span class="cx"> 
</span><span class="cx"> export JavaScriptCore=&quot;${XSRCROOT}&quot;
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreJavaScriptCorevcxprojcopyfilescmd"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.vcxproj/copy-files.cmd (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.vcxproj/copy-files.cmd        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.vcxproj/copy-files.cmd        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -39,6 +39,7 @@
</span><span class="cx"> mkdir &quot;%PrivateHeadersDirectory%&quot; 2&gt;NUL
</span><span class="cx"> for %%d in (
</span><span class="cx">     assembler
</span><ins>+    bindings
</ins><span class="cx">     bytecode
</span><span class="cx">     dfg
</span><span class="cx">     disassembler
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreJavaScriptCorevcxprojjscjscvcxproj"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.vcxproj/jsc/jsc.vcxproj (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.vcxproj/jsc/jsc.vcxproj        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.vcxproj/jsc/jsc.vcxproj        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -60,6 +60,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;true&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -70,6 +71,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;true&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -80,6 +82,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;true&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -90,6 +93,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;false&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -100,6 +104,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;false&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -110,6 +115,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;false&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreJavaScriptCorevcxprojtestRegExptestRegExpvcxproj"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -61,6 +61,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;true&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -71,6 +72,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;true&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -81,6 +83,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;true&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -91,6 +94,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;false&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -101,6 +105,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;false&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -111,6 +116,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;false&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreJavaScriptCorevcxprojtestapitestapivcxproj"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.vcxproj/testapi/testapi.vcxproj (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.vcxproj/testapi/testapi.vcxproj        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.vcxproj/testapi/testapi.vcxproj        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -60,6 +60,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;true&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -70,6 +71,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;true&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -80,6 +82,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;true&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -90,6 +93,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;false&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -100,6 +104,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;false&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -110,6 +115,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;false&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreJavaScriptCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -741,6 +741,7 @@
</span><span class="cx">                 2A48D1911772365B00C65A5F /* APICallbackFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = C211B574176A224D000E2A23 /* APICallbackFunction.h */; };
</span><span class="cx">                 2A6F462617E959CE00C45C98 /* HeapOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A6F462517E959CE00C45C98 /* HeapOperation.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 2A7A58EF1808A4C40020BDF7 /* DeferGC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2A7A58EE1808A4C40020BDF7 /* DeferGC.cpp */; };
</span><ins>+                2AAD964A18569417001F93BE /* RecursiveAllocationScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AAD964918569417001F93BE /* RecursiveAllocationScope.h */; };
</ins><span class="cx">                 2AD8932B17E3868F00668276 /* HeapIterationScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AD8932917E3868F00668276 /* HeapIterationScope.h */; };
</span><span class="cx">                 371D842D17C98B6E00ECF994 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 371D842C17C98B6E00ECF994 /* libz.dylib */; };
</span><span class="cx">                 41359CF30FDD89AD00206180 /* DateConversion.h in Headers */ = {isa = PBXBuildFile; fileRef = D21202290AD4310C00ED79B6 /* DateConversion.h */; };
</span><span class="lines">@@ -914,6 +915,20 @@
</span><span class="cx">                 A1712B4111C7B235007A5315 /* RegExpKey.h in Headers */ = {isa = PBXBuildFile; fileRef = A1712B4011C7B235007A5315 /* RegExpKey.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 A1A009C01831A22D00CF8711 /* MacroAssemblerARM64.h in Headers */ = {isa = PBXBuildFile; fileRef = 8640923C156EED3B00566CB2 /* MacroAssemblerARM64.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 A1A009C11831A26E00CF8711 /* ARM64Assembler.h in Headers */ = {isa = PBXBuildFile; fileRef = 8640923B156EED3B00566CB2 /* ARM64Assembler.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><ins>+                A54CF2F5184EAB2400237F19 /* ScriptValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A54CF2F2184EAB2400237F19 /* ScriptValue.cpp */; };
+                A54CF2F6184EAB2400237F19 /* ScriptValue.h in Headers */ = {isa = PBXBuildFile; fileRef = A54CF2F3184EAB2400237F19 /* ScriptValue.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                A54CF2F9184EAEDA00237F19 /* ScriptObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A54CF2F7184EAEDA00237F19 /* ScriptObject.cpp */; };
+                A54CF2FA184EAEDA00237F19 /* ScriptObject.h in Headers */ = {isa = PBXBuildFile; fileRef = A54CF2F8184EAEDA00237F19 /* ScriptObject.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                A55D93A5185012A800400DED /* ScriptFunctionCall.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A55D93A3185012A800400DED /* ScriptFunctionCall.cpp */; };
+                A55D93A6185012A800400DED /* ScriptFunctionCall.h in Headers */ = {isa = PBXBuildFile; fileRef = A55D93A4185012A800400DED /* ScriptFunctionCall.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                A55D93AC18514F7900400DED /* InspectorTypeBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = A55D93AB18514F7900400DED /* InspectorTypeBuilder.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                A593CF7C1840360300BFCE27 /* InspectorBackendDispatcher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A593CF7A1840360300BFCE27 /* InspectorBackendDispatcher.cpp */; };
+                A593CF7D1840360300BFCE27 /* InspectorBackendDispatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = A593CF7B1840360300BFCE27 /* InspectorBackendDispatcher.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                A593CF7F1840362C00BFCE27 /* InspectorAgentBase.h in Headers */ = {isa = PBXBuildFile; fileRef = A593CF7E1840362C00BFCE27 /* InspectorAgentBase.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                A593CF821840377100BFCE27 /* InspectorValues.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A593CF801840377100BFCE27 /* InspectorValues.cpp */; };
+                A593CF831840377100BFCE27 /* InspectorValues.h in Headers */ = {isa = PBXBuildFile; fileRef = A593CF811840377100BFCE27 /* InspectorValues.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                A593CF86184038CA00BFCE27 /* InspectorAgentRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A593CF84184038CA00BFCE27 /* InspectorAgentRegistry.cpp */; };
+                A593CF87184038CA00BFCE27 /* InspectorAgentRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = A593CF85184038CA00BFCE27 /* InspectorAgentRegistry.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 A594558F18245EFD00CC3843 /* RemoteInspectorDebuggable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A594558E18245EDE00CC3843 /* RemoteInspectorDebuggable.cpp */; };
</span><span class="cx">                 A59455921824744700CC3843 /* JSGlobalObjectDebuggable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A59455901824744700CC3843 /* JSGlobalObjectDebuggable.cpp */; };
</span><span class="cx">                 A59455931824744700CC3843 /* JSGlobalObjectDebuggable.h in Headers */ = {isa = PBXBuildFile; fileRef = A59455911824744700CC3843 /* JSGlobalObjectDebuggable.h */; };
</span><span class="lines">@@ -2041,6 +2056,7 @@
</span><span class="cx">                 2A2825CF18341F2D0087FBA9 /* DelayedReleaseScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DelayedReleaseScope.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2A6F462517E959CE00C45C98 /* HeapOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HeapOperation.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2A7A58EE1808A4C40020BDF7 /* DeferGC.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DeferGC.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                2AAD964918569417001F93BE /* RecursiveAllocationScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RecursiveAllocationScope.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 2AD8932917E3868F00668276 /* HeapIterationScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HeapIterationScope.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 371D842C17C98B6E00ECF994 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = &quot;compiled.mach-o.dylib&quot;; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; };
</span><span class="cx">                 449097EE0F8F81B50076A327 /* FeatureDefines.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = FeatureDefines.xcconfig; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -2268,6 +2284,20 @@
</span><span class="cx">                 A1712B3A11C7B212007A5315 /* RegExpCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RegExpCache.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A1712B3E11C7B228007A5315 /* RegExpCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegExpCache.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A1712B4011C7B235007A5315 /* RegExpKey.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegExpKey.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                A54CF2F2184EAB2400237F19 /* ScriptValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptValue.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                A54CF2F3184EAB2400237F19 /* ScriptValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptValue.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                A54CF2F7184EAEDA00237F19 /* ScriptObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptObject.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                A54CF2F8184EAEDA00237F19 /* ScriptObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptObject.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                A55D93A3185012A800400DED /* ScriptFunctionCall.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptFunctionCall.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                A55D93A4185012A800400DED /* ScriptFunctionCall.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptFunctionCall.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                A55D93AB18514F7900400DED /* InspectorTypeBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = InspectorTypeBuilder.h; path = inspector/InspectorTypeBuilder.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                A593CF7A1840360300BFCE27 /* InspectorBackendDispatcher.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = InspectorBackendDispatcher.cpp; path = inspector/InspectorBackendDispatcher.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                A593CF7B1840360300BFCE27 /* InspectorBackendDispatcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = InspectorBackendDispatcher.h; path = inspector/InspectorBackendDispatcher.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                A593CF7E1840362C00BFCE27 /* InspectorAgentBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = InspectorAgentBase.h; path = inspector/InspectorAgentBase.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                A593CF801840377100BFCE27 /* InspectorValues.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = InspectorValues.cpp; path = inspector/InspectorValues.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                A593CF811840377100BFCE27 /* InspectorValues.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = InspectorValues.h; path = inspector/InspectorValues.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                A593CF84184038CA00BFCE27 /* InspectorAgentRegistry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = InspectorAgentRegistry.cpp; path = inspector/InspectorAgentRegistry.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                A593CF85184038CA00BFCE27 /* InspectorAgentRegistry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = InspectorAgentRegistry.h; path = inspector/InspectorAgentRegistry.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 A594558E18245EDE00CC3843 /* RemoteInspectorDebuggable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RemoteInspectorDebuggable.cpp; path = inspector/remote/RemoteInspectorDebuggable.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A59455901824744700CC3843 /* JSGlobalObjectDebuggable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSGlobalObjectDebuggable.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A59455911824744700CC3843 /* JSGlobalObjectDebuggable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSGlobalObjectDebuggable.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -2770,6 +2800,7 @@
</span><span class="cx">                                 A7C225CC139981F100FF1662 /* KeywordLookupGenerator.py */,
</span><span class="cx">                                 1432EBD70A34CAD400717B9F /* API */,
</span><span class="cx">                                 9688CB120ED12B4E001D649F /* assembler */,
</span><ins>+                                A54CF2EA184EA73900237F19 /* bindings */,
</ins><span class="cx">                                 969A078F0ED1D3AE00F1F681 /* bytecode */,
</span><span class="cx">                                 7E39D81D0EC38EFA003AF11A /* bytecompiler */,
</span><span class="cx">                                 1C90513E0BA9E8830081E9D0 /* Configurations */,
</span><span class="lines">@@ -3210,6 +3241,7 @@
</span><span class="cx">                                 0FC8150814043BCA00CFA603 /* WriteBarrierSupport.cpp */,
</span><span class="cx">                                 0FC8150914043BD200CFA603 /* WriteBarrierSupport.h */,
</span><span class="cx">                                 2A2825CF18341F2D0087FBA9 /* DelayedReleaseScope.h */,
</span><ins>+                                2AAD964918569417001F93BE /* RecursiveAllocationScope.h */,
</ins><span class="cx">                         );
</span><span class="cx">                         path = heap;
</span><span class="cx">                         sourceTree = &quot;&lt;group&gt;&quot;;
</span><span class="lines">@@ -4266,11 +4298,32 @@
</span><span class="cx">                         path = bytecode;
</span><span class="cx">                         sourceTree = &quot;&lt;group&gt;&quot;;
</span><span class="cx">                 };
</span><ins>+                A54CF2EA184EA73900237F19 /* bindings */ = {
+                        isa = PBXGroup;
+                        children = (
+                                A55D93A3185012A800400DED /* ScriptFunctionCall.cpp */,
+                                A55D93A4185012A800400DED /* ScriptFunctionCall.h */,
+                                A54CF2F7184EAEDA00237F19 /* ScriptObject.cpp */,
+                                A54CF2F8184EAEDA00237F19 /* ScriptObject.h */,
+                                A54CF2F2184EAB2400237F19 /* ScriptValue.cpp */,
+                                A54CF2F3184EAB2400237F19 /* ScriptValue.h */,
+                        );
+                        path = bindings;
+                        sourceTree = &quot;&lt;group&gt;&quot;;
+                };
</ins><span class="cx">                 A5BA15DF1823409200A82E69 /* inspector */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><span class="cx">                                 A5BA15E01823409D00A82E69 /* remote */,
</span><ins>+                                A593CF7E1840362C00BFCE27 /* InspectorAgentBase.h */,
+                                A593CF84184038CA00BFCE27 /* InspectorAgentRegistry.cpp */,
+                                A593CF85184038CA00BFCE27 /* InspectorAgentRegistry.h */,
+                                A593CF7A1840360300BFCE27 /* InspectorBackendDispatcher.cpp */,
+                                A593CF7B1840360300BFCE27 /* InspectorBackendDispatcher.h */,
</ins><span class="cx">                                 A5945594182479EB00CC3843 /* InspectorFrontendChannel.h */,
</span><ins>+                                A55D93AB18514F7900400DED /* InspectorTypeBuilder.h */,
+                                A593CF801840377100BFCE27 /* InspectorValues.cpp */,
+                                A593CF811840377100BFCE27 /* InspectorValues.h */,
</ins><span class="cx">                         );
</span><span class="cx">                         name = inspector;
</span><span class="cx">                         sourceTree = &quot;&lt;group&gt;&quot;;
</span><span class="lines">@@ -4413,6 +4466,7 @@
</span><span class="cx">                                 0F2B66DF17B6B5AB00A7AE3F /* DataView.h in Headers */,
</span><span class="cx">                                 BCD2034A0E17135E002C7E82 /* DateConstructor.h in Headers */,
</span><span class="cx">                                 41359CF30FDD89AD00206180 /* DateConversion.h in Headers */,
</span><ins>+                                A593CF7F1840362C00BFCE27 /* InspectorAgentBase.h in Headers */,
</ins><span class="cx">                                 BC1166020E1997B4008066DD /* DateInstance.h in Headers */,
</span><span class="cx">                                 14A1563210966365006FA260 /* DateInstanceCache.h in Headers */,
</span><span class="cx">                                 BCD2034C0E17135E002C7E82 /* DatePrototype.h in Headers */,
</span><span class="lines">@@ -4445,6 +4499,7 @@
</span><span class="cx">                                 A1A009C01831A22D00CF8711 /* MacroAssemblerARM64.h in Headers */,
</span><span class="cx">                                 86EC9DC51328DF82002B2AD7 /* DFGByteCodeParser.h in Headers */,
</span><span class="cx">                                 0F485328187DFDEC0083B687 /* FTLAvailableRecovery.h in Headers */,
</span><ins>+                A593CF87184038CA00BFCE27 /* InspectorAgentRegistry.h in Headers */,
</ins><span class="cx">                                 0F256C361627B0AD007F2783 /* DFGCallArrayAllocatorSlowPathGenerator.h in Headers */,
</span><span class="cx">                                 0F7B294B14C3CD2F007C3DB1 /* DFGCapabilities.h in Headers */,
</span><span class="cx">                                 0FFFC95814EF90A200C72532 /* DFGCFAPhase.h in Headers */,
</span><span class="lines">@@ -4534,6 +4589,7 @@
</span><span class="cx">                                 86EC9DD31328DF82002B2AD7 /* DFGSpeculativeJIT.h in Headers */,
</span><span class="cx">                                 A7D89D0017A0B8CC00773AD8 /* DFGSSAConversionPhase.h in Headers */,
</span><span class="cx">                                 0F9FB4F517FCB91700CB67F8 /* DFGStackLayoutPhase.h in Headers */,
</span><ins>+                                A593CF831840377100BFCE27 /* InspectorValues.h in Headers */,
</ins><span class="cx">                                 0F63947815DCE34B006A597C /* DFGStructureAbstractValue.h in Headers */,
</span><span class="cx">                                 0FC097A2146B28CC00CF2442 /* DFGThunks.h in Headers */,
</span><span class="cx">                                 0FD8A32817D51F5700CA2C40 /* DFGTierUpCheckInjectionPhase.h in Headers */,
</span><span class="lines">@@ -4568,6 +4624,7 @@
</span><span class="cx">                                 0FB105861675481200F8AB6E /* ExitKind.h in Headers */,
</span><span class="cx">                                 0F0B83AB14BCF5BB00885B4F /* ExpressionRangeInfo.h in Headers */,
</span><span class="cx">                                 A7A8AF3817ADB5F3005AB174 /* Float32Array.h in Headers */,
</span><ins>+                                A54CF2F6184EAB2400237F19 /* ScriptValue.h in Headers */,
</ins><span class="cx">                                 A7A8AF3917ADB5F3005AB174 /* Float64Array.h in Headers */,
</span><span class="cx">                                 0F24E54317EA9F5900ABB217 /* FPRInfo.h in Headers */,
</span><span class="cx">                                 0FFC99D5184EE318009C10AB /* ArrayBufferNeuteringWatchpoint.h in Headers */,
</span><span class="lines">@@ -4703,6 +4760,7 @@
</span><span class="cx">                                 0F2B66EA17B6B5AB00A7AE3F /* JSArrayBufferViewInlines.h in Headers */,
</span><span class="cx">                                 A7BDAECB17F4EA1400F6140C /* JSArrayIterator.h in Headers */,
</span><span class="cx">                                 BC18C4180E16F5CD00B34460 /* JSBase.h in Headers */,
</span><ins>+                                2AAD964A18569417001F93BE /* RecursiveAllocationScope.h in Headers */,
</ins><span class="cx">                                 140D17D70E8AD4A9000CD17D /* JSBasePrivate.h in Headers */,
</span><span class="cx">                                 86FA9E92142BBB2E001773B7 /* JSBoundFunction.h in Headers */,
</span><span class="cx">                                 BC18C4190E16F5CD00B34460 /* JSCallbackConstructor.h in Headers */,
</span><span class="lines">@@ -4919,6 +4977,7 @@
</span><span class="cx">                                 0F0CD4C215F1A6070032F1C0 /* PutDirectIndexMode.h in Headers */,
</span><span class="cx">                                 0F9FC8C514E1B60400D52AE0 /* PutKind.h in Headers */,
</span><span class="cx">                                 147B84630E6DE6B1004775A4 /* PutPropertySlot.h in Headers */,
</span><ins>+                                A593CF7D1840360300BFCE27 /* InspectorBackendDispatcher.h in Headers */,
</ins><span class="cx">                                 0FF60AC216740F8300029779 /* ReduceWhitespace.h in Headers */,
</span><span class="cx">                                 BC18C45A0E16F5CD00B34460 /* RegExp.h in Headers */,
</span><span class="cx">                                 A1712B3F11C7B228007A5315 /* RegExpCache.h in Headers */,
</span><span class="lines">@@ -4960,6 +5019,7 @@
</span><span class="cx">                                 0FD82E54141DAEEE00179C94 /* SpeculatedType.h in Headers */,
</span><span class="cx">                                 A7C1EAF217987AB600299DB2 /* StackVisitor.h in Headers */,
</span><span class="cx">                                 14DF04DA16B3996D0016A513 /* StaticPropertyAnalysis.h in Headers */,
</span><ins>+                                A54CF2FA184EAEDA00237F19 /* ScriptObject.h in Headers */,
</ins><span class="cx">                                 14CA958B16AB50DE00938A06 /* StaticPropertyAnalyzer.h in Headers */,
</span><span class="cx">                                 A730B6121250068F009D25B1 /* StrictEvalActivation.h in Headers */,
</span><span class="cx">                                 BC18C4660E16F5CD00B34460 /* StringConstructor.h in Headers */,
</span><span class="lines">@@ -5022,6 +5082,7 @@
</span><span class="cx">                                 14BE7D3317135CF400D1807A /* WeakInlines.h in Headers */,
</span><span class="cx">                                 A7CA3AE417DA41AE006538AF /* WeakMapConstructor.h in Headers */,
</span><span class="cx">                                 A7CA3AEC17DA5168006538AF /* WeakMapData.h in Headers */,
</span><ins>+                                A55D93AC18514F7900400DED /* InspectorTypeBuilder.h in Headers */,
</ins><span class="cx">                                 A7CA3AE617DA41AE006538AF /* WeakMapPrototype.h in Headers */,
</span><span class="cx">                                 1420BE7B10AA6DDB00F455D2 /* WeakRandom.h in Headers */,
</span><span class="cx">                                 0F242DA713F3B1E8007ADD4C /* WeakReferenceHarvester.h in Headers */,
</span><span class="lines">@@ -5036,6 +5097,7 @@
</span><span class="cx">                                 0F666ECD1836B37E00D017F1 /* DFGResurrectionForValidationPhase.h in Headers */,
</span><span class="cx">                                 0F6B1CCA18641DF800845D97 /* ArityCheckFailReturnThunks.h in Headers */,
</span><span class="cx">                                 86704B8512DBA33700A9FE7B /* YarrInterpreter.h in Headers */,
</span><ins>+                                A55D93A6185012A800400DED /* ScriptFunctionCall.h in Headers */,
</ins><span class="cx">                                 86704B8712DBA33700A9FE7B /* YarrJIT.h in Headers */,
</span><span class="cx">                                 86704B8812DBA33700A9FE7B /* YarrParser.h in Headers */,
</span><span class="cx">                                 86704B8A12DBA33700A9FE7B /* YarrPattern.h in Headers */,
</span><span class="lines">@@ -5374,7 +5436,7 @@
</span><span class="cx">                         );
</span><span class="cx">                         runOnlyForDeploymentPostprocessing = 0;
</span><span class="cx">                         shellPath = /bin/sh;
</span><del>-                        shellScript = &quot;mkdir -p \&quot;${BUILT_PRODUCTS_DIR}/DerivedSources/JavaScriptCore/docs\&quot;\ncd \&quot;${BUILT_PRODUCTS_DIR}/DerivedSources/JavaScriptCore\&quot;\n\n/bin/ln -sfh \&quot;${SRCROOT}\&quot; JavaScriptCore\nexport JavaScriptCore=\&quot;JavaScriptCore\&quot;\nexport BUILT_PRODUCTS_DIR=\&quot;../..\&quot;\n\nmake --no-builtin-rules -f \&quot;JavaScriptCore/DerivedSources.make\&quot; -j `/usr/sbin/sysctl -n hw.ncpu` || exit 1\n\n/usr/bin/env ruby JavaScriptCore/offlineasm/asm.rb JavaScriptCore/llint/LowLevelInterpreter.asm ${BUILT_PRODUCTS_DIR}/JSCLLIntOffsetsExtractor LLIntAssembly.h || exit 1\n&quot;;
</del><ins>+                        shellScript = &quot;mkdir -p \&quot;${BUILT_PRODUCTS_DIR}/DerivedSources/JavaScriptCore\&quot;\ncd \&quot;${BUILT_PRODUCTS_DIR}/DerivedSources/JavaScriptCore\&quot;\n\n/bin/ln -sfh \&quot;${SRCROOT}\&quot; JavaScriptCore\nexport JavaScriptCore=\&quot;JavaScriptCore\&quot;\nexport BUILT_PRODUCTS_DIR=\&quot;../..\&quot;\n\nmake --no-builtin-rules -f \&quot;JavaScriptCore/DerivedSources.make\&quot; -j `/usr/sbin/sysctl -n hw.ncpu` || exit 1\n\n/usr/bin/env ruby JavaScriptCore/offlineasm/asm.rb JavaScriptCore/llint/LowLevelInterpreter.asm ${BUILT_PRODUCTS_DIR}/JSCLLIntOffsetsExtractor LLIntAssembly.h || exit 1\n&quot;;
</ins><span class="cx">                 };
</span><span class="cx">                 A55DEAA416703DF7003DB841 /* Check For Inappropriate Macros in External Headers */ = {
</span><span class="cx">                         isa = PBXShellScriptBuildPhase;
</span><span class="lines">@@ -5544,6 +5606,7 @@
</span><span class="cx">                                 0FF427641591A1CC004CB9FF /* DFGDisassembler.cpp in Sources */,
</span><span class="cx">                                 0FD81AD2154FB4EE00983E72 /* DFGDominators.cpp in Sources */,
</span><span class="cx">                                 0FD3C82614115D4000FD81CB /* DFGDriver.cpp in Sources */,
</span><ins>+                                A593CF821840377100BFCE27 /* InspectorValues.cpp in Sources */,
</ins><span class="cx">                                 0FF0F19E16B72A0B005DF95B /* DFGEdge.cpp in Sources */,
</span><span class="cx">                                 A74DEF93182D991400522C22 /* MapIteratorPrototype.cpp in Sources */,
</span><span class="cx">                                 0FBC0AE71496C7C400D4FBDD /* DFGExitProfile.cpp in Sources */,
</span><span class="lines">@@ -5601,6 +5664,7 @@
</span><span class="cx">                                 0FBE0F7616C1DB0F0082C5E8 /* DFGUnificationPhase.cpp in Sources */,
</span><span class="cx">                                 0F34B14916D42010001CDA5A /* DFGUseKind.cpp in Sources */,
</span><span class="cx">                                 0F3B3A2B15475000003ED0FF /* DFGValidate.cpp in Sources */,
</span><ins>+                                A55D93A5185012A800400DED /* ScriptFunctionCall.cpp in Sources */,
</ins><span class="cx">                                 0F2BDC4F15228BF300CD8910 /* DFGValueSource.cpp in Sources */,
</span><span class="cx">                                 0FDDBFB51666EED800C55FEF /* DFGVariableAccessDataDump.cpp in Sources */,
</span><span class="cx">                                 0F2BDC5115228FFD00CD8910 /* DFGVariableEvent.cpp in Sources */,
</span><span class="lines">@@ -5621,6 +5685,7 @@
</span><span class="cx">                                 0F56A1D515001CF4002992B1 /* ExecutionCounter.cpp in Sources */,
</span><span class="cx">                                 A59455921824744700CC3843 /* JSGlobalObjectDebuggable.cpp in Sources */,
</span><span class="cx">                                 0FB105851675480F00F8AB6E /* ExitKind.cpp in Sources */,
</span><ins>+                                A54CF2F5184EAB2400237F19 /* ScriptValue.cpp in Sources */,
</ins><span class="cx">                                 0FEA0A1C1708B00700BB722C /* FTLAbstractHeap.cpp in Sources */,
</span><span class="cx">                                 0FEA0A1E1708B00700BB722C /* FTLAbstractHeapRepository.cpp in Sources */,
</span><span class="cx">                                 0FEA0A09170513DB00BB722C /* FTLCapabilities.cpp in Sources */,
</span><span class="lines">@@ -5652,6 +5717,7 @@
</span><span class="cx">                                 0FEA0A161706BB9000BB722C /* FTLState.cpp in Sources */,
</span><span class="cx">                                 0F6B1CB5185FC9E900845D97 /* FTLJSCall.cpp in Sources */,
</span><span class="cx">                                 0F235BE117178E1C00690C7F /* FTLThunks.cpp in Sources */,
</span><ins>+                                A593CF7C1840360300BFCE27 /* InspectorBackendDispatcher.cpp in Sources */,
</ins><span class="cx">                                 0F235BE317178E1C00690C7F /* FTLValueFormat.cpp in Sources */,
</span><span class="cx">                                 147F39CB107EC37600427A48 /* FunctionConstructor.cpp in Sources */,
</span><span class="cx">                                 0FF0F19F16B72A17005DF95B /* FunctionExecutableDump.cpp in Sources */,
</span><span class="lines">@@ -5803,6 +5869,7 @@
</span><span class="cx">                                 86EBF2FF1560F06A008E9222 /* NameConstructor.cpp in Sources */,
</span><span class="cx">                                 86EBF3011560F06A008E9222 /* NameInstance.cpp in Sources */,
</span><span class="cx">                                 86EBF3031560F06A008E9222 /* NamePrototype.cpp in Sources */,
</span><ins>+                                A54CF2F9184EAEDA00237F19 /* ScriptObject.cpp in Sources */,
</ins><span class="cx">                                 14469DE0107EC7E700650446 /* NativeErrorConstructor.cpp in Sources */,
</span><span class="cx">                                 14469DE1107EC7E700650446 /* NativeErrorPrototype.cpp in Sources */,
</span><span class="cx">                                 148F21B7107EC5470042EC2C /* Nodes.cpp in Sources */,
</span><span class="lines">@@ -5924,6 +5991,7 @@
</span><span class="cx">                                 86704B8412DBA33700A9FE7B /* YarrInterpreter.cpp in Sources */,
</span><span class="cx">                                 86704B8612DBA33700A9FE7B /* YarrJIT.cpp in Sources */,
</span><span class="cx">                                 86704B8912DBA33700A9FE7B /* YarrPattern.cpp in Sources */,
</span><ins>+                                A593CF86184038CA00BFCE27 /* InspectorAgentRegistry.cpp in Sources */,
</ins><span class="cx">                                 86704B4212DB8A8100A9FE7B /* YarrSyntaxChecker.cpp in Sources */,
</span><span class="cx">                         );
</span><span class="cx">                         runOnlyForDeploymentPostprocessing = 0;
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCorebindingsScriptFunctionCallcpp"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/JavaScriptCore/bindings/ScriptFunctionCall.cpp (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/bindings/ScriptFunctionCall.cpp                                (rev 0)
+++ branches/jsCStack/Source/JavaScriptCore/bindings/ScriptFunctionCall.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,154 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ * Copyright (C) 2009 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;ScriptFunctionCall.h&quot;
+
+#include &quot;JSLock.h&quot;
+#include &quot;ScriptValue.h&quot;
+#include &lt;wtf/text/WTFString.h&gt;
+
+using namespace JSC;
+
+namespace Deprecated {
+
+void ScriptCallArgumentHandler::appendArgument(const Deprecated::ScriptObject&amp; argument)
+{
+    if (argument.scriptState() != m_exec) {
+        ASSERT_NOT_REACHED();
+        return;
+    }
+    m_arguments.append(argument.jsObject());
+}
+
+void ScriptCallArgumentHandler::appendArgument(const Deprecated::ScriptValue&amp; argument)
+{
+    m_arguments.append(argument.jsValue());
+}
+
+void ScriptCallArgumentHandler::appendArgument(const String&amp; argument)
+{
+    JSLockHolder lock(m_exec);
+    m_arguments.append(jsString(m_exec, argument));
+}
+
+void ScriptCallArgumentHandler::appendArgument(const char* argument)
+{
+    JSLockHolder lock(m_exec);
+    m_arguments.append(jsString(m_exec, String(argument)));
+}
+
+void ScriptCallArgumentHandler::appendArgument(JSValue argument)
+{
+    m_arguments.append(argument);
+}
+
+void ScriptCallArgumentHandler::appendArgument(long argument)
+{
+    JSLockHolder lock(m_exec);
+    m_arguments.append(jsNumber(argument));
+}
+
+void ScriptCallArgumentHandler::appendArgument(long long argument)
+{
+    JSLockHolder lock(m_exec);
+    m_arguments.append(jsNumber(argument));
+}
+
+void ScriptCallArgumentHandler::appendArgument(unsigned int argument)
+{
+    JSLockHolder lock(m_exec);
+    m_arguments.append(jsNumber(argument));
+}
+
+void ScriptCallArgumentHandler::appendArgument(unsigned long argument)
+{
+    JSLockHolder lock(m_exec);
+    m_arguments.append(jsNumber(argument));
+}
+
+void ScriptCallArgumentHandler::appendArgument(int argument)
+{
+    JSLockHolder lock(m_exec);
+    m_arguments.append(jsNumber(argument));
+}
+
+void ScriptCallArgumentHandler::appendArgument(bool argument)
+{
+    m_arguments.append(jsBoolean(argument));
+}
+
+ScriptFunctionCall::ScriptFunctionCall(const Deprecated::ScriptObject&amp; thisObject, const String&amp; name, ScriptFunctionCallHandler callHandler)
+    : ScriptCallArgumentHandler(thisObject.scriptState())
+    , m_callHandler(callHandler)
+    , m_thisObject(thisObject)
+    , m_name(name)
+{
+}
+
+Deprecated::ScriptValue ScriptFunctionCall::call(bool&amp; hadException)
+{
+    JSObject* thisObject = m_thisObject.jsObject();
+
+    JSLockHolder lock(m_exec);
+
+    JSValue function = thisObject-&gt;get(m_exec, Identifier(m_exec, m_name));
+    if (m_exec-&gt;hadException()) {
+        hadException = true;
+        return Deprecated::ScriptValue();
+    }
+
+    CallData callData;
+    CallType callType = getCallData(function, callData);
+    if (callType == CallTypeNone)
+        return Deprecated::ScriptValue();
+
+    JSValue result;
+    if (m_callHandler)
+        result = m_callHandler(m_exec, function, callType, callData, thisObject, m_arguments);
+    else
+        result = JSC::call(m_exec, function, callType, callData, thisObject, m_arguments);
+
+    if (m_exec-&gt;hadException()) {
+        hadException = true;
+        return Deprecated::ScriptValue();
+    }
+
+    return Deprecated::ScriptValue(m_exec-&gt;vm(), result);
+}
+
+Deprecated::ScriptValue ScriptFunctionCall::call()
+{
+    bool hadException = false;
+    return call(hadException);
+}
+
+} // namespace Deprecated
</ins></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCorebindingsScriptFunctionCallh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/JavaScriptCore/bindings/ScriptFunctionCall.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/bindings/ScriptFunctionCall.h                                (rev 0)
+++ branches/jsCStack/Source/JavaScriptCore/bindings/ScriptFunctionCall.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,87 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ * Copyright (C) 2009 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef ScriptFunctionCall_h
+#define ScriptFunctionCall_h
+
+#include &quot;ArgList.h&quot;
+#include &quot;ScriptObject.h&quot;
+#include &lt;wtf/text/WTFString.h&gt;
+
+namespace JSC {
+class JSValue;
+}
+
+namespace Deprecated {
+
+class JS_EXPORT_PRIVATE ScriptCallArgumentHandler {
+public:
+    ScriptCallArgumentHandler(JSC::ExecState* state) : m_exec(state) { }
+
+    void appendArgument(const ScriptObject&amp;);
+    void appendArgument(const ScriptValue&amp;);
+    void appendArgument(const char*);
+    void appendArgument(const String&amp;);
+    void appendArgument(JSC::JSValue);
+    void appendArgument(long);
+    void appendArgument(long long);
+    void appendArgument(unsigned int);
+    void appendArgument(unsigned long);
+    void appendArgument(int);
+    void appendArgument(bool);
+
+protected:
+    JSC::MarkedArgumentBuffer m_arguments;
+    JSC::ExecState* m_exec;
+
+private:
+    // MarkedArgumentBuffer must be stack allocated, so prevent heap
+    // alloc of ScriptFunctionCall as well.
+    void* operator new(size_t) { ASSERT_NOT_REACHED(); return reinterpret_cast&lt;void*&gt;(0xbadbeef); }
+    void* operator new[](size_t) { ASSERT_NOT_REACHED(); return reinterpret_cast&lt;void*&gt;(0xbadbeef); }
+};
+
+class JS_EXPORT_PRIVATE ScriptFunctionCall : public ScriptCallArgumentHandler {
+public:
+    typedef JSC::JSValue (*ScriptFunctionCallHandler)(JSC::ExecState* exec, JSC::JSValue functionObject, JSC::CallType callType, const JSC::CallData&amp; callData, JSC::JSValue thisValue, const JSC::ArgList&amp; args);
+    ScriptFunctionCall(const ScriptObject&amp; thisObject, const String&amp; name, ScriptFunctionCallHandler handler = nullptr);
+    ScriptValue call(bool&amp; hadException);
+    ScriptValue call();
+
+protected:
+    ScriptFunctionCallHandler m_callHandler;
+    ScriptObject m_thisObject;
+    String m_name;
+};
+
+} // namespace Deprecated
+
+#endif // ScriptFunctionCall
</ins></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCorebindingsScriptObjectcpp"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/JavaScriptCore/bindings/ScriptObject.cpp (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/bindings/ScriptObject.cpp                                (rev 0)
+++ branches/jsCStack/Source/JavaScriptCore/bindings/ScriptObject.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,51 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ * Copyright (C) 2009 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;ScriptObject.h&quot;
+
+using namespace JSC;
+
+namespace Deprecated {
+
+ScriptObject::ScriptObject(ExecState* scriptState, JSObject* object)
+    : ScriptValue(scriptState-&gt;vm(), object)
+    , m_scriptState(scriptState)
+{
+}
+
+ScriptObject::ScriptObject(ExecState* scriptState, const ScriptValue&amp; scriptValue)
+    : ScriptValue(scriptState-&gt;vm(), scriptValue.jsValue())
+    , m_scriptState(scriptState)
+{
+}
+
+} // namespace Deprecated
</ins></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCorebindingsScriptObjecth"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/JavaScriptCore/bindings/ScriptObject.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/bindings/ScriptObject.h                                (rev 0)
+++ branches/jsCStack/Source/JavaScriptCore/bindings/ScriptObject.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,55 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ * Copyright (C) 2009 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef ScriptObject_h
+#define ScriptObject_h
+
+#include &quot;JSObject.h&quot;
+#include &quot;ScriptValue.h&quot;
+
+namespace Deprecated {
+
+class ScriptObject : public ScriptValue {
+public:
+    JS_EXPORT_PRIVATE ScriptObject(JSC::ExecState*, JSC::JSObject*);
+    JS_EXPORT_PRIVATE ScriptObject(JSC::ExecState*, const ScriptValue&amp;);
+    ScriptObject() : m_scriptState(nullptr) { }
+
+    JSC::JSObject* jsObject() const { return asObject(jsValue()); }
+    JSC::ExecState* scriptState() const { return m_scriptState; }
+
+protected:
+    JSC::ExecState* m_scriptState;
+};
+
+} // namespace Deprecated
+
+#endif // ScriptObject_h
</ins></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCorebindingsScriptValuecpp"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/JavaScriptCore/bindings/ScriptValue.cpp (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/bindings/ScriptValue.cpp                                (rev 0)
+++ branches/jsCStack/Source/JavaScriptCore/bindings/ScriptValue.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,163 @@
</span><ins>+/*
+ * Copyright (C) 2006, 2007, 2008, 2013 Apple Inc. All rights reserved.
+ * Copyright (c) 2011 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution.
+ * 3.  Neither the name of Apple Computer, Inc. (&quot;Apple&quot;) nor the names of
+ *     its contributors may be used to endorse or promote products derived
+ *     from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;ScriptValue.h&quot;
+
+#include &quot;APICast.h&quot;
+#include &quot;InspectorValues.h&quot;
+#include &quot;JSLock.h&quot;
+
+using namespace JSC;
+using namespace Inspector;
+
+namespace Deprecated {
+
+ScriptValue::~ScriptValue()
+{
+}
+
+bool ScriptValue::getString(ExecState* scriptState, String&amp; result) const
+{
+    if (!m_value)
+        return false;
+    JSLockHolder lock(scriptState);
+    if (!m_value.get().getString(scriptState, result))
+        return false;
+    return true;
+}
+
+String ScriptValue::toString(ExecState* scriptState) const
+{
+    String result = m_value.get().toString(scriptState)-&gt;value(scriptState);
+    // Handle the case where an exception is thrown as part of invoking toString on the object.
+    if (scriptState-&gt;hadException())
+        scriptState-&gt;clearException();
+    return result;
+}
+
+bool ScriptValue::isEqual(ExecState* scriptState, const ScriptValue&amp; anotherValue) const
+{
+    if (hasNoValue())
+        return anotherValue.hasNoValue();
+    return JSValueIsEqual(toRef(scriptState), toRef(scriptState, jsValue()), toRef(scriptState, anotherValue.jsValue()), nullptr);
+}
+
+bool ScriptValue::isNull() const
+{
+    if (!m_value)
+        return false;
+    return m_value.get().isNull();
+}
+
+bool ScriptValue::isUndefined() const
+{
+    if (!m_value)
+        return false;
+    return m_value.get().isUndefined();
+}
+
+bool ScriptValue::isObject() const
+{
+    if (!m_value)
+        return false;
+    return m_value.get().isObject();
+}
+
+bool ScriptValue::isFunction() const
+{
+    CallData callData;
+    return getCallData(m_value.get(), callData) != CallTypeNone;
+}
+
+#if ENABLE(INSPECTOR)
+static PassRefPtr&lt;InspectorValue&gt; jsToInspectorValue(ExecState* scriptState, JSValue value, int maxDepth)
+{
+    if (!value) {
+        ASSERT_NOT_REACHED();
+        return nullptr;
+    }
+
+    if (!maxDepth)
+        return nullptr;
+
+    maxDepth--;
+
+    if (value.isNull() || value.isUndefined())
+        return InspectorValue::null();
+    if (value.isBoolean())
+        return InspectorBasicValue::create(value.asBoolean());
+    if (value.isNumber())
+        return InspectorBasicValue::create(value.asNumber());
+    if (value.isString()) {
+        String s = value.getString(scriptState);
+        return InspectorString::create(String(s.characters(), s.length()));
+    }
+
+    if (value.isObject()) {
+        if (isJSArray(value)) {
+            RefPtr&lt;InspectorArray&gt; inspectorArray = InspectorArray::create();
+            JSArray* array = asArray(value);
+            unsigned length = array-&gt;length();
+            for (unsigned i = 0; i &lt; length; i++) {
+                JSValue element = array-&gt;getIndex(scriptState, i);
+                RefPtr&lt;InspectorValue&gt; elementValue = jsToInspectorValue(scriptState, element, maxDepth);
+                if (!elementValue)
+                    return nullptr;
+                inspectorArray-&gt;pushValue(elementValue);
+            }
+            return inspectorArray;
+        }
+        RefPtr&lt;InspectorObject&gt; inspectorObject = InspectorObject::create();
+        JSObject* object = value.getObject();
+        PropertyNameArray propertyNames(scriptState);
+        object-&gt;methodTable()-&gt;getOwnPropertyNames(object, scriptState, propertyNames, ExcludeDontEnumProperties);
+        for (size_t i = 0; i &lt; propertyNames.size(); i++) {
+            const Identifier&amp; name =  propertyNames[i];
+            JSValue propertyValue = object-&gt;get(scriptState, name);
+            RefPtr&lt;InspectorValue&gt; inspectorValue = jsToInspectorValue(scriptState, propertyValue, maxDepth);
+            if (!inspectorValue)
+                return nullptr;
+            inspectorObject-&gt;setValue(String(name.characters(), name.length()), inspectorValue);
+        }
+        return inspectorObject;
+    }
+
+    ASSERT_NOT_REACHED();
+    return nullptr;
+}
+
+PassRefPtr&lt;InspectorValue&gt; ScriptValue::toInspectorValue(ExecState* scriptState) const
+{
+    JSLockHolder holder(scriptState);
+    return jsToInspectorValue(scriptState, m_value.get(), InspectorValue::maxDepth);
+}
+#endif // ENABLE(INSPECTOR)
+
+} // namespace Deprecated
</ins></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCorebindingsScriptValueh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/JavaScriptCore/bindings/ScriptValue.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/bindings/ScriptValue.h                                (rev 0)
+++ branches/jsCStack/Source/JavaScriptCore/bindings/ScriptValue.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,78 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ * Copyright (c) 2008, 2011 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef ScriptValue_h
+#define ScriptValue_h
+
+#include &quot;JSCJSValue.h&quot;
+#include &quot;Operations.h&quot;
+#include &quot;Strong.h&quot;
+#include &quot;StrongInlines.h&quot;
+#include &lt;wtf/PassRefPtr.h&gt;
+#include &lt;wtf/text/WTFString.h&gt;
+
+namespace Inspector {
+class InspectorValue;
+}
+
+namespace Deprecated {
+
+class JS_EXPORT_PRIVATE ScriptValue {
+public:
+    ScriptValue() { }
+    ScriptValue(JSC::VM&amp; vm, JSC::JSValue value) : m_value(vm, value) { }
+    virtual ~ScriptValue();
+
+    JSC::JSValue jsValue() const { return m_value.get(); }
+    bool getString(JSC::ExecState*, String&amp; result) const;
+    String toString(JSC::ExecState*) const;
+    bool isEqual(JSC::ExecState*, const ScriptValue&amp;) const;
+    bool isNull() const;
+    bool isUndefined() const;
+    bool isObject() const;
+    bool isFunction() const;
+    bool hasNoValue() const { return !m_value; }
+
+    void clear() { m_value.clear(); }
+
+    bool operator==(const ScriptValue&amp; other) const { return m_value == other.m_value; }
+
+#if ENABLE(INSPECTOR)
+    PassRefPtr&lt;Inspector::InspectorValue&gt; toInspectorValue(JSC::ExecState*) const;
+#endif
+
+private:
+    JSC::Strong&lt;JSC::Unknown&gt; m_value;
+};
+
+} // namespace Deprecated
+
+#endif // ScriptValue_h
</ins></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCorebytecodeCodeBlockHashcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/bytecode/CodeBlockHash.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/bytecode/CodeBlockHash.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/bytecode/CodeBlockHash.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -42,7 +42,7 @@
</span><span class="cx"> {
</span><span class="cx">     SHA1 sha1;
</span><span class="cx">     sha1.addBytes(sourceCode.toUTF8());
</span><del>-    Vector&lt;uint8_t, SHA1::hashSize&gt; digest;
</del><ins>+    SHA1::Digest digest;
</ins><span class="cx">     sha1.computeHash(digest);
</span><span class="cx">     m_hash += digest[0] | (digest[1] &lt;&lt; 8) | (digest[2] &lt;&lt; 16) | (digest[3] &lt;&lt; 24);
</span><span class="cx">     m_hash ^= static_cast&lt;unsigned&gt;(kind);
</span><span class="lines">@@ -54,7 +54,7 @@
</span><span class="cx"> 
</span><span class="cx"> void CodeBlockHash::dump(PrintStream&amp; out) const
</span><span class="cx"> {
</span><del>-    FixedArray&lt;char, 7&gt; buffer = integerToSixCharacterHashString(m_hash);
</del><ins>+    std::array&lt;char, 7&gt; buffer = integerToSixCharacterHashString(m_hash);
</ins><span class="cx">     
</span><span class="cx"> #if !ASSERT_DISABLED
</span><span class="cx">     CodeBlockHash recompute(buffer.data());
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCorebytecodeOpcodecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/bytecode/Opcode.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/bytecode/Opcode.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/bytecode/Opcode.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -31,8 +31,8 @@
</span><span class="cx"> #include &quot;Opcode.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(OPCODE_STATS)
</span><ins>+#include &lt;array&gt;
</ins><span class="cx"> #include &lt;wtf/DataLog.h&gt;
</span><del>-#include &lt;wtf/FixedArray.h&gt;
</del><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> using namespace std;
</span><span class="lines">@@ -102,7 +102,7 @@
</span><span class="cx">         for (int j = 0; j &lt; numOpcodeIDs; ++j)
</span><span class="cx">             totalInstructionPairs += opcodePairCounts[i][j];
</span><span class="cx"> 
</span><del>-    FixedArray&lt;int, numOpcodeIDs&gt; sortedIndices;
</del><ins>+    std::array&lt;int, numOpcodeIDs&gt; sortedIndices;
</ins><span class="cx">     for (int i = 0; i &lt; numOpcodeIDs; ++i)
</span><span class="cx">         sortedIndices[i] = i;
</span><span class="cx">     qsort(sortedIndices.data(), numOpcodeIDs, sizeof(int), compareOpcodeIndices);
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoredfgDFGCSEPhasecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/dfg/DFGCSEPhase.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/dfg/DFGCSEPhase.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/dfg/DFGCSEPhase.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -34,6 +34,7 @@
</span><span class="cx"> #include &quot;DFGGraph.h&quot;
</span><span class="cx"> #include &quot;DFGPhase.h&quot;
</span><span class="cx"> #include &quot;JSCellInlines.h&quot;
</span><ins>+#include &lt;array&gt;
</ins><span class="cx"> #include &lt;wtf/FastBitVector.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace JSC { namespace DFG {
</span><span class="lines">@@ -1442,7 +1443,7 @@
</span><span class="cx">     BasicBlock* m_currentBlock;
</span><span class="cx">     Node* m_currentNode;
</span><span class="cx">     unsigned m_indexInBlock;
</span><del>-    FixedArray&lt;unsigned, LastNodeType&gt; m_lastSeen;
</del><ins>+    std::array&lt;unsigned, LastNodeType&gt; m_lastSeen;
</ins><span class="cx">     bool m_changed; // Only tracks changes that have a substantive effect on other optimizations.
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoredocsmakebytecodedocspl"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/docs/make-bytecode-docs.pl (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/docs/make-bytecode-docs.pl        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/docs/make-bytecode-docs.pl        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,43 +0,0 @@
</span><del>-#!/usr/bin/perl -w
-
-use strict;
-
-open MACHINE, &quot;&lt;&quot; . $ARGV[0];
-open OUTPUT, &quot;&gt;&quot; . $ARGV[1];
-
-my @undocumented = ();
-
-print OUTPUT &quot;&lt;!-- Generated from Interpreter.cpp by make-bytecode-docs.pl. --&gt;\n&quot;;
-print OUTPUT &quot;&lt;style&gt;p code \{ font-size: 14px; \}&lt;/style&gt;\n&quot;;
-
-while (&lt;MACHINE&gt;) {
-    if (/^ *DEFINE_OPCODE/) {
-        chomp;
-        s/^ *DEFINE_OPCODE\(op_//;
-        s/\).*$//;
-        my $opcode = $_;
-        $_ = &lt;MACHINE&gt;;
-        chomp;
-        if (m|/\* |) {
-            my $format = $_;
-            $format =~ s|.* /\* ||;
-            my $doc = &quot;&quot;;
-            while (&lt;MACHINE&gt;) {
-                if (m|\*/|) {
-                    last;
-                }
-                $doc .= $_ . &quot; &quot;;
-            }
-
-            print OUTPUT &quot;&lt;h2&gt;&lt;code&gt;${opcode}&lt;/code&gt;&lt;/h2&gt;\n&lt;p&gt;&lt;b&gt;Format: &lt;/b&gt;&lt;code&gt;\n${format}\n&lt;/code&gt;&lt;/p&gt;\n&lt;p&gt;\n${doc}\n&lt;/p&gt;\n&quot;;
-        } else {
-            push @undocumented, $opcode;
-        }
-    }
-}
-
-close OUTPUT;
-
-for my $undoc (@undocumented) {
-    print &quot;UNDOCUMENTED: ${undoc}\n&quot;;
-}
</del></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreftlFTLAbstractHeaph"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/ftl/FTLAbstractHeap.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/ftl/FTLAbstractHeap.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/ftl/FTLAbstractHeap.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -32,8 +32,8 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;FTLAbbreviations.h&quot;
</span><span class="cx"> #include &quot;JSCJSValue.h&quot;
</span><ins>+#include &lt;array&gt;
</ins><span class="cx"> #include &lt;wtf/FastMalloc.h&gt;
</span><del>-#include &lt;wtf/FixedArray.h&gt;
</del><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="cx"> #include &lt;wtf/Noncopyable.h&gt;
</span><span class="cx"> #include &lt;wtf/OwnPtr.h&gt;
</span><span class="lines">@@ -172,7 +172,7 @@
</span><span class="cx">     size_t m_elementSize;
</span><span class="cx">     LValue m_scaleTerm;
</span><span class="cx">     bool m_canShift;
</span><del>-    FixedArray&lt;AbstractField, 16&gt; m_smallIndices;
</del><ins>+    std::array&lt;AbstractField, 16&gt; m_smallIndices;
</ins><span class="cx">     
</span><span class="cx">     struct WithoutZeroOrOneHashTraits : WTF::GenericHashTraits&lt;ptrdiff_t&gt; {
</span><span class="cx">         static void constructDeletedValue(ptrdiff_t&amp; slot) { slot = 1; }
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreheapHeapcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/heap/Heap.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/heap/Heap.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/heap/Heap.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -35,13 +35,14 @@
</span><span class="cx"> #include &quot;HeapStatistics.h&quot;
</span><span class="cx"> #include &quot;IncrementalSweeper.h&quot;
</span><span class="cx"> #include &quot;Interpreter.h&quot;
</span><del>-#include &quot;VM.h&quot;
</del><span class="cx"> #include &quot;JSGlobalObject.h&quot;
</span><span class="cx"> #include &quot;JSLock.h&quot;
</span><span class="cx"> #include &quot;JSONObject.h&quot;
</span><span class="cx"> #include &quot;Operations.h&quot;
</span><ins>+#include &quot;RecursiveAllocationScope.h&quot;
</ins><span class="cx"> #include &quot;Tracing.h&quot;
</span><span class="cx"> #include &quot;UnlinkedCodeBlock.h&quot;
</span><ins>+#include &quot;VM.h&quot;
</ins><span class="cx"> #include &quot;WeakSetInlines.h&quot;
</span><span class="cx"> #include &lt;algorithm&gt;
</span><span class="cx"> #include &lt;wtf/RAMSize.h&gt;
</span><span class="lines">@@ -759,9 +760,10 @@
</span><span class="cx">     JAVASCRIPTCORE_GC_BEGIN();
</span><span class="cx">     RELEASE_ASSERT(m_operationInProgress == NoOperation);
</span><span class="cx">     
</span><del>-    m_deferralDepth++; // Make sure that we don't GC in this call.
-    m_vm-&gt;prepareToDiscardCode();
-    m_deferralDepth--; // Decrement deferal manually, so we don't GC when we do so, since we are already GCing!.
</del><ins>+    {
+        RecursiveAllocationScope scope(*this);
+        m_vm-&gt;prepareToDiscardCode();
+    }
</ins><span class="cx">     
</span><span class="cx">     m_operationInProgress = Collection;
</span><span class="cx">     m_extraMemoryUsage = 0;
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreheapHeaph"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/heap/Heap.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/heap/Heap.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/heap/Heap.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -204,6 +204,7 @@
</span><span class="cx">         friend class MarkedBlock;
</span><span class="cx">         friend class CopiedSpace;
</span><span class="cx">         friend class CopyVisitor;
</span><ins>+        friend class RecursiveAllocationScope;
</ins><span class="cx">         friend class SlotVisitor;
</span><span class="cx">         friend class SuperRegion;
</span><span class="cx">         friend class IncrementalSweeper;
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreheapMarkedSpaceh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/heap/MarkedSpace.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/heap/MarkedSpace.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/heap/MarkedSpace.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -26,10 +26,10 @@
</span><span class="cx"> #include &quot;MarkedAllocator.h&quot;
</span><span class="cx"> #include &quot;MarkedBlock.h&quot;
</span><span class="cx"> #include &quot;MarkedBlockSet.h&quot;
</span><ins>+#include &lt;array&gt;
</ins><span class="cx"> #include &lt;wtf/PageAllocationAligned.h&gt;
</span><span class="cx"> #include &lt;wtf/Bitmap.h&gt;
</span><span class="cx"> #include &lt;wtf/DoublyLinkedList.h&gt;
</span><del>-#include &lt;wtf/FixedArray.h&gt;
</del><span class="cx"> #include &lt;wtf/HashSet.h&gt;
</span><span class="cx"> #include &lt;wtf/Noncopyable.h&gt;
</span><span class="cx"> #include &lt;wtf/Vector.h&gt;
</span><span class="lines">@@ -137,8 +137,8 @@
</span><span class="cx">     static const size_t impreciseCount = impreciseCutoff / impreciseStep;
</span><span class="cx"> 
</span><span class="cx">     struct Subspace {
</span><del>-        FixedArray&lt;MarkedAllocator, preciseCount&gt; preciseAllocators;
-        FixedArray&lt;MarkedAllocator, impreciseCount&gt; impreciseAllocators;
</del><ins>+        std::array&lt;MarkedAllocator, preciseCount&gt; preciseAllocators;
+        std::array&lt;MarkedAllocator, impreciseCount&gt; impreciseAllocators;
</ins><span class="cx">         MarkedAllocator largeAllocator;
</span><span class="cx">     };
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreheapRecursiveAllocationScopeh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/JavaScriptCore/heap/RecursiveAllocationScope.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/heap/RecursiveAllocationScope.h                                (rev 0)
+++ branches/jsCStack/Source/JavaScriptCore/heap/RecursiveAllocationScope.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,65 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef RecursiveAllocationScope_h
+#define RecursiveAllocationScope_h
+
+#include &quot;Heap.h&quot;
+#include &quot;VM.h&quot;
+
+namespace JSC {
+
+class RecursiveAllocationScope {
+public:
+    RecursiveAllocationScope(Heap&amp; heap)
+        : m_heap(heap)
+#ifndef NDEBUG
+        , m_savedObjectClass(heap.vm()-&gt;m_initializingObjectClass)
+#endif
+    {
+#ifndef NDEBUG
+        m_heap.vm()-&gt;m_initializingObjectClass = nullptr;
+#endif
+        m_heap.m_deferralDepth++; // Make sure that we don't GC.
+    }
+    
+    ~RecursiveAllocationScope()
+    {
+        m_heap.m_deferralDepth--; // Decrement deferal manually so we don't GC when we do so since we are already GCing!.
+#ifndef NDEBUG
+        m_heap.vm()-&gt;m_initializingObjectClass = m_savedObjectClass;
+#endif
+    }
+
+private:
+    Heap&amp; m_heap;
+#ifndef NDEBUG
+    const ClassInfo* m_savedObjectClass;
+#endif
+};
+
+}
+
+#endif // RecursiveAllocationScope_h
</ins></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreinspectorInspectorAgentBaseh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/JavaScriptCore/inspector/InspectorAgentBase.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/inspector/InspectorAgentBase.h                                (rev 0)
+++ branches/jsCStack/Source/JavaScriptCore/inspector/InspectorAgentBase.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,56 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All Rights Reserved.
+ * Copyright (C) 2011 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef InspectorAgentBase_h
+#define InspectorAgentBase_h
+
+#include &lt;wtf/text/WTFString.h&gt;
+
+namespace Inspector {
+
+class InspectorBackendDispatcher;
+class InspectorFrontendChannel;
+
+class InspectorAgentBase {
+public:
+    virtual ~InspectorAgentBase() { }
+
+    virtual void didCreateFrontendAndBackend(InspectorFrontendChannel*, InspectorBackendDispatcher*) = 0;
+    virtual void willDestroyFrontendAndBackend() = 0;
+    virtual void discardAgent() { }
+
+protected:
+    InspectorAgentBase(const String&amp; name)
+        : m_name(name)
+    {
+    }
+
+    String m_name;
+};
+    
+} // namespace Inspector
+
+#endif // !defined(InspectorAgentBase_h)
</ins></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreinspectorInspectorAgentRegistrycpp"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/JavaScriptCore/inspector/InspectorAgentRegistry.cpp (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/inspector/InspectorAgentRegistry.cpp                                (rev 0)
+++ branches/jsCStack/Source/JavaScriptCore/inspector/InspectorAgentRegistry.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,59 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ * Copyright (C) 2011 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;InspectorAgentRegistry.h&quot;
+
+#if ENABLE(INSPECTOR)
+
+namespace Inspector {
+
+void InspectorAgentRegistry::append(PassOwnPtr&lt;InspectorAgentBase&gt; agent)
+{
+    m_agents.append(agent);
+}
+
+void InspectorAgentRegistry::didCreateFrontendAndBackend(InspectorFrontendChannel* frontendChannel, InspectorBackendDispatcher* backendDispatcher)
+{
+    for (size_t i = 0; i &lt; m_agents.size(); i++)
+        m_agents[i]-&gt;didCreateFrontendAndBackend(frontendChannel, backendDispatcher);
+}
+
+void InspectorAgentRegistry::willDestroyFrontendAndBackend()
+{
+    for (size_t i = 0; i &lt; m_agents.size(); i++)
+        m_agents[i]-&gt;willDestroyFrontendAndBackend();
+}
+
+void InspectorAgentRegistry::discardAgents()
+{
+    for (size_t i = 0; i &lt; m_agents.size(); i++)
+        m_agents[i]-&gt;discardAgent();
+}
+
+} // namespace Inspector
+
+#endif // ENABLE(INSPECTOR)
</ins></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreinspectorInspectorAgentRegistryh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/JavaScriptCore/inspector/InspectorAgentRegistry.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/inspector/InspectorAgentRegistry.h                                (rev 0)
+++ branches/jsCStack/Source/JavaScriptCore/inspector/InspectorAgentRegistry.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,53 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ * Copyright (C) 2011 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef InspectorAgentRegistry_h
+#define InspectorAgentRegistry_h
+
+#include &quot;InspectorAgentBase.h&quot;
+#include &lt;wtf/PassOwnPtr.h&gt;
+#include &lt;wtf/Vector.h&gt;
+
+namespace Inspector {
+
+class InspectorBackendDispatcher;
+class InspectorFrontendChannel;
+
+class JS_EXPORT_PRIVATE InspectorAgentRegistry {
+public:
+    void append(PassOwnPtr&lt;InspectorAgentBase&gt;);
+
+    void didCreateFrontendAndBackend(InspectorFrontendChannel*, InspectorBackendDispatcher*);
+    void willDestroyFrontendAndBackend();
+    void discardAgents();
+
+private:
+    Vector&lt;OwnPtr&lt;InspectorAgentBase&gt;&gt; m_agents;
+};
+
+} // namespace Inspector
+
+#endif // !defined(InspectorAgentRegistry_h)
</ins></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreinspectorInspectorBackendDispatchercpp"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/JavaScriptCore/inspector/InspectorBackendDispatcher.cpp (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/inspector/InspectorBackendDispatcher.cpp                                (rev 0)
+++ branches/jsCStack/Source/JavaScriptCore/inspector/InspectorBackendDispatcher.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,264 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All Rights Reserved.
+ * Copyright (C) 2011 The Chromium Authors. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;InspectorBackendDispatcher.h&quot;
+
+#if ENABLE(INSPECTOR)
+
+#include &quot;InspectorFrontendChannel.h&quot;
+#include &quot;InspectorValues.h&quot;
+#include &lt;wtf/text/CString.h&gt;
+#include &lt;wtf/text/WTFString.h&gt;
+
+namespace Inspector {
+
+InspectorBackendDispatcher::CallbackBase::CallbackBase(PassRefPtr&lt;InspectorBackendDispatcher&gt; backendDispatcher, int id)
+    : m_backendDispatcher(backendDispatcher)
+    , m_id(id)
+    , m_alreadySent(false)
+{
+}
+
+bool InspectorBackendDispatcher::CallbackBase::isActive() const
+{
+    return !m_alreadySent &amp;&amp; m_backendDispatcher-&gt;isActive();
+}
+
+void InspectorBackendDispatcher::CallbackBase::sendFailure(const ErrorString&amp; error)
+{
+    ASSERT(error.length());
+    sendIfActive(nullptr, error);
+}
+
+void InspectorBackendDispatcher::CallbackBase::sendIfActive(PassRefPtr&lt;InspectorObject&gt; partialMessage, const ErrorString&amp; invocationError)
+{
+    if (m_alreadySent)
+        return;
+
+    m_backendDispatcher-&gt;sendResponse(m_id, partialMessage, invocationError);
+    m_alreadySent = true;
+}
+
+PassRefPtr&lt;InspectorBackendDispatcher&gt; InspectorBackendDispatcher::create(InspectorFrontendChannel* inspectorFrontendChannel)
+{
+    return adoptRef(new InspectorBackendDispatcher(inspectorFrontendChannel));
+}
+
+void InspectorBackendDispatcher::registerDispatcherForDomain(const String&amp; domain, InspectorSupplementalBackendDispatcher* dispatcher)
+{
+    auto result = m_dispatchers.add(domain, dispatcher);
+    ASSERT_UNUSED(result, result.isNewEntry);
+}
+
+void InspectorBackendDispatcher::dispatch(const String&amp; message)
+{
+    Ref&lt;InspectorBackendDispatcher&gt; protect(*this);
+
+    RefPtr&lt;InspectorValue&gt; parsedMessage = InspectorValue::parseJSON(message);
+    if (!parsedMessage) {
+        reportProtocolError(nullptr, ParseError, ASCIILiteral(&quot;Message must be in JSON format&quot;));
+        return;
+    }
+
+    RefPtr&lt;InspectorObject&gt; messageObject = parsedMessage-&gt;asObject();
+    if (!messageObject) {
+        reportProtocolError(nullptr, InvalidRequest, ASCIILiteral(&quot;Message must be a JSONified object&quot;));
+        return;
+    }
+
+    RefPtr&lt;InspectorValue&gt; callIdValue = messageObject-&gt;get(&quot;id&quot;);
+    if (!callIdValue) {
+        reportProtocolError(nullptr, InvalidRequest, ASCIILiteral(&quot;'id' property was not found&quot;));
+        return;
+    }
+
+    long callId = 0;
+    if (!callIdValue-&gt;asNumber(&amp;callId)) {
+        reportProtocolError(nullptr, InvalidRequest, ASCIILiteral(&quot;The type of 'id' property must be number&quot;));
+        return;
+    }
+
+    RefPtr&lt;InspectorValue&gt; methodValue = messageObject-&gt;get(&quot;method&quot;);
+    if (!methodValue) {
+        reportProtocolError(&amp;callId, InvalidRequest, ASCIILiteral(&quot;'method' property wasn't found&quot;));
+        return;
+    }
+
+    String method;
+    if (!methodValue-&gt;asString(&amp;method)) {
+        reportProtocolError(&amp;callId, InvalidRequest, ASCIILiteral(&quot;The type of 'method' property must be string&quot;));
+        return;
+    }
+
+    size_t position = method.find('.');
+    if (position == WTF::notFound) {
+        reportProtocolError(&amp;callId, InvalidRequest, ASCIILiteral(&quot;The 'method' property was formatted incorrectly. It should be 'Domain.method'&quot;));
+        return;
+    }
+
+    String domain = method.substring(0, position);
+    InspectorSupplementalBackendDispatcher* domainDispatcher = m_dispatchers.get(domain);
+    if (!domainDispatcher) {
+        reportProtocolError(&amp;callId, MethodNotFound, &quot;'&quot; + domain + &quot;' domain was not found&quot;);
+        return;
+    }
+
+    String domainMethod = method.substring(position + 1);
+    domainDispatcher-&gt;dispatch(callId, domainMethod, messageObject.release());
+}
+
+void InspectorBackendDispatcher::sendResponse(long callId, PassRefPtr&lt;InspectorObject&gt; result, const ErrorString&amp; invocationError)
+{
+    if (!m_inspectorFrontendChannel)
+        return;
+
+    if (invocationError.length()) {
+        reportProtocolError(&amp;callId, ServerError, invocationError);
+        return;
+    }
+
+    RefPtr&lt;InspectorObject&gt; responseMessage = InspectorObject::create();
+    responseMessage-&gt;setObject(ASCIILiteral(&quot;result&quot;), result);
+    responseMessage-&gt;setNumber(ASCIILiteral(&quot;id&quot;), callId);
+    m_inspectorFrontendChannel-&gt;sendMessageToFrontend(responseMessage-&gt;toJSONString());
+}
+
+void InspectorBackendDispatcher::reportProtocolError(const long* const callId, CommonErrorCode errorCode, const String&amp; errorMessage) const
+{
+    reportProtocolError(callId, errorCode, errorMessage, nullptr);
+}
+
+void InspectorBackendDispatcher::reportProtocolError(const long* const callId, CommonErrorCode errorCode, const String&amp; errorMessage, PassRefPtr&lt;InspectorArray&gt; data) const
+{
+    static const int errorCodes[] = {
+        -32700, // ParseError
+        -32600, // InvalidRequest
+        -32601, // MethodNotFound
+        -32602, // InvalidParams
+        -32603, // InternalError
+        -32000, // ServerError
+    };
+
+    ASSERT(errorCode &gt;= 0);
+    ASSERT((unsigned)errorCode &lt; WTF_ARRAY_LENGTH(errorCodes));
+    ASSERT(errorCodes[errorCode]);
+
+    if (!m_inspectorFrontendChannel)
+        return;
+
+    RefPtr&lt;InspectorObject&gt; error = InspectorObject::create();
+    error-&gt;setNumber(ASCIILiteral(&quot;code&quot;), errorCodes[errorCode]);
+    error-&gt;setString(ASCIILiteral(&quot;message&quot;), errorMessage);
+    if (data)
+        error-&gt;setArray(ASCIILiteral(&quot;data&quot;), data);
+
+    RefPtr&lt;InspectorObject&gt; message = InspectorObject::create();
+    message-&gt;setObject(ASCIILiteral(&quot;error&quot;), error.release());
+    if (callId)
+        message-&gt;setNumber(ASCIILiteral(&quot;id&quot;), *callId);
+    else
+        message-&gt;setValue(ASCIILiteral(&quot;id&quot;), InspectorValue::null());
+
+    m_inspectorFrontendChannel-&gt;sendMessageToFrontend(message-&gt;toJSONString());
+}
+
+template&lt;typename ReturnValueType, typename ValueType, typename DefaultValueType&gt;
+static ReturnValueType getPropertyValue(InspectorObject* object, const String&amp; name, bool* valueFound, InspectorArray* protocolErrors, DefaultValueType defaultValue, bool (*asMethod)(InspectorValue*, ValueType*), const char* typeName)
+{
+    ASSERT(protocolErrors);
+
+    ValueType value = defaultValue;
+    if (valueFound)
+        *valueFound = false;
+
+    if (!object) {
+        if (!valueFound)
+            protocolErrors-&gt;pushString(String::format(&quot;'params' object must contain required parameter '%s' with type '%s'.&quot;, name.utf8().data(), typeName));
+        return value;
+    }
+
+    InspectorObject::const_iterator end = object-&gt;end();
+    InspectorObject::const_iterator valueIterator = object-&gt;find(name);
+    if (valueIterator == end) {
+        if (!valueFound)
+            protocolErrors-&gt;pushString(String::format(&quot;Parameter '%s' with type '%s' was not found.&quot;, name.utf8().data(), typeName));
+        return value;
+    }
+
+    if (!asMethod(valueIterator-&gt;value.get(), &amp;value)) {
+        protocolErrors-&gt;pushString(String::format(&quot;Parameter '%s' has wrong type. It must be '%s'.&quot;, name.utf8().data(), typeName));
+        return value;
+    }
+
+    if (valueFound)
+        *valueFound = true;
+
+    return value;
+}
+
+struct AsMethodBridges {
+    static bool asInt(InspectorValue* value, int* output) { return value-&gt;asNumber(output); }
+    static bool asDouble(InspectorValue* value, double* output) { return value-&gt;asNumber(output); }
+    static bool asString(InspectorValue* value, String* output) { return value-&gt;asString(output); }
+    static bool asBoolean(InspectorValue* value, bool* output) { return value-&gt;asBoolean(output); }
+    static bool asObject(InspectorValue* value, RefPtr&lt;InspectorObject&gt;* output) { return value-&gt;asObject(output); }
+    static bool asArray(InspectorValue* value, RefPtr&lt;InspectorArray&gt;* output) { return value-&gt;asArray(output); }
+};
+
+int InspectorBackendDispatcher::getInt(InspectorObject* object, const String&amp; name, bool* valueFound, InspectorArray* protocolErrors)
+{
+    return getPropertyValue&lt;int, int, int&gt;(object, name, valueFound, protocolErrors, 0, AsMethodBridges::asInt, &quot;Number&quot;);
+}
+
+double InspectorBackendDispatcher::getDouble(InspectorObject* object, const String&amp; name, bool* valueFound, InspectorArray* protocolErrors)
+{
+    return getPropertyValue&lt;double, double, double&gt;(object, name, valueFound, protocolErrors, 0, AsMethodBridges::asDouble, &quot;Number&quot;);
+}
+
+String InspectorBackendDispatcher::getString(InspectorObject* object, const String&amp; name, bool* valueFound, InspectorArray* protocolErrors)
+{
+    return getPropertyValue&lt;String, String, String&gt;(object, name, valueFound, protocolErrors, &quot;&quot;, AsMethodBridges::asString, &quot;String&quot;);
+}
+
+bool InspectorBackendDispatcher::getBoolean(InspectorObject* object, const String&amp; name, bool* valueFound, InspectorArray* protocolErrors)
+{
+    return getPropertyValue&lt;bool, bool, bool&gt;(object, name, valueFound, protocolErrors, false, AsMethodBridges::asBoolean, &quot;Boolean&quot;);
+}
+
+PassRefPtr&lt;InspectorObject&gt; InspectorBackendDispatcher::getObject(InspectorObject* object, const String&amp; name, bool* valueFound, InspectorArray* protocolErrors)
+{
+    return getPropertyValue&lt;PassRefPtr&lt;InspectorObject&gt;, RefPtr&lt;InspectorObject&gt;, InspectorObject*&gt;(object, name, valueFound, protocolErrors, nullptr, AsMethodBridges::asObject, &quot;Object&quot;);
+}
+
+PassRefPtr&lt;InspectorArray&gt; InspectorBackendDispatcher::getArray(InspectorObject* object, const String&amp; name, bool* valueFound, InspectorArray* protocolErrors)
+{
+    return getPropertyValue&lt;PassRefPtr&lt;InspectorArray&gt;, RefPtr&lt;InspectorArray&gt;, InspectorArray*&gt;(object, name, valueFound, protocolErrors, nullptr, AsMethodBridges::asArray, &quot;Array&quot;);
+}
+
+} // namespace Inspector
+
+#endif // ENABLE(INSPECTOR)
</ins></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreinspectorInspectorBackendDispatcherh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/JavaScriptCore/inspector/InspectorBackendDispatcher.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/inspector/InspectorBackendDispatcher.h                                (rev 0)
+++ branches/jsCStack/Source/JavaScriptCore/inspector/InspectorBackendDispatcher.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,105 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All Rights Reserved.
+ * Copyright (C) 2011 The Chromium Authors. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef InspectorBackendDispatcher_h
+#define InspectorBackendDispatcher_h
+
+#include &quot;InspectorValues.h&quot;
+#include &lt;wtf/PassRefPtr.h&gt;
+#include &lt;wtf/RefCounted.h&gt;
+#include &lt;wtf/text/WTFString.h&gt;
+
+namespace Inspector {
+
+class InspectorBackendDispatcher;
+class InspectorFrontendChannel;
+typedef String ErrorString;
+
+class InspectorSupplementalBackendDispatcher : public RefCounted&lt;InspectorSupplementalBackendDispatcher&gt; {
+public:
+    InspectorSupplementalBackendDispatcher(InspectorBackendDispatcher* backendDispatcher) : m_backendDispatcher(backendDispatcher) { }
+    virtual ~InspectorSupplementalBackendDispatcher() { }
+    virtual void dispatch(long callId, const String&amp; method, PassRefPtr&lt;InspectorObject&gt; message) = 0;
+protected:
+    RefPtr&lt;InspectorBackendDispatcher&gt; m_backendDispatcher;
+};
+
+class JS_EXPORT_PRIVATE InspectorBackendDispatcher : public RefCounted&lt;InspectorBackendDispatcher&gt; {
+public:
+    static PassRefPtr&lt;InspectorBackendDispatcher&gt; create(InspectorFrontendChannel*);
+
+    class JS_EXPORT_PRIVATE CallbackBase : public RefCounted&lt;CallbackBase&gt; {
+    public:
+        CallbackBase(PassRefPtr&lt;InspectorBackendDispatcher&gt;, int id);
+
+        bool isActive() const;
+        void sendFailure(const ErrorString&amp;);
+        void disable() { m_alreadySent = true; }
+
+    protected:
+        void sendIfActive(PassRefPtr&lt;InspectorObject&gt; partialMessage, const ErrorString&amp; invocationError);
+
+    private:
+        RefPtr&lt;InspectorBackendDispatcher&gt; m_backendDispatcher;
+        int m_id;
+        bool m_alreadySent;
+    };
+
+    void clearFrontend() { m_inspectorFrontendChannel = nullptr; }
+    bool isActive() const { return !!m_inspectorFrontendChannel; }
+
+    enum CommonErrorCode {
+        ParseError = 0,
+        InvalidRequest,
+        MethodNotFound,
+        InvalidParams,
+        InternalError,
+        ServerError
+    };
+
+    void registerDispatcherForDomain(const String&amp; domain, InspectorSupplementalBackendDispatcher*);
+    void dispatch(const String&amp; message);
+    void sendResponse(long callId, PassRefPtr&lt;InspectorObject&gt; result, const ErrorString&amp; invocationError);
+    void reportProtocolError(const long* const callId, CommonErrorCode, const String&amp; errorMessage) const;
+    void reportProtocolError(const long* const callId, CommonErrorCode, const String&amp; errorMessage, PassRefPtr&lt;InspectorArray&gt; data) const;
+
+    static int getInt(InspectorObject*, const String&amp; name, bool* valueFound, InspectorArray* protocolErrors);
+    static double getDouble(InspectorObject*, const String&amp; name, bool* valueFound, InspectorArray* protocolErrors);
+    static String getString(InspectorObject*, const String&amp; name, bool* valueFound, InspectorArray* protocolErrors);
+    static bool getBoolean(InspectorObject*, const String&amp; name, bool* valueFound, InspectorArray* protocolErrors);
+    static PassRefPtr&lt;InspectorObject&gt; getObject(InspectorObject*, const String&amp; name, bool* valueFound, InspectorArray* protocolErrors);
+    static PassRefPtr&lt;InspectorArray&gt; getArray(InspectorObject*, const String&amp; name, bool* valueFound, InspectorArray* protocolErrors);
+
+private:
+    InspectorBackendDispatcher(InspectorFrontendChannel* inspectorFrontendChannel) : m_inspectorFrontendChannel(inspectorFrontendChannel) { }
+
+    InspectorFrontendChannel* m_inspectorFrontendChannel;
+    HashMap&lt;String, InspectorSupplementalBackendDispatcher*&gt; m_dispatchers;
+};
+
+} // namespace Inspector
+
+#endif // !defined(InspectorBackendDispatcher_h)
</ins></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreinspectorInspectorTypeBuilderh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/JavaScriptCore/inspector/InspectorTypeBuilder.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/inspector/InspectorTypeBuilder.h                                (rev 0)
+++ branches/jsCStack/Source/JavaScriptCore/inspector/InspectorTypeBuilder.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,337 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All Rights Reserved.
+ * Copyright (C) 2011 The Chromium Authors. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef InspectorTypeBuilder_h
+#define InspectorTypeBuilder_h
+
+#if ENABLE(INSPECTOR)
+
+#include &quot;InspectorValues.h&quot;
+#include &lt;wtf/Assertions.h&gt;
+#include &lt;wtf/PassRefPtr.h&gt;
+
+namespace Inspector {
+
+namespace TypeBuilder {
+
+template&lt;typename T&gt;
+class OptOutput {
+public:
+    OptOutput() : m_assigned(false) { }
+
+    void operator=(T value)
+    {
+        m_value = value;
+        m_assigned = true;
+    }
+
+    bool isAssigned() const { return m_assigned; }
+
+    T getValue()
+    {
+        ASSERT(isAssigned());
+        return m_value;
+    }
+
+private:
+    T m_value;
+    bool m_assigned;
+
+    WTF_MAKE_NONCOPYABLE(OptOutput);
+};
+
+
+// A small transient wrapper around int type, that can be used as a funciton parameter type
+// cleverly disallowing C++ implicit casts from float or double.
+class ExactlyInt {
+public:
+    template&lt;typename T&gt;
+    ExactlyInt(T t) : m_value(cast_to_int&lt;T&gt;(t)) { }
+    ExactlyInt() { }
+
+    operator int() { return m_value; }
+
+private:
+    int m_value;
+
+    template&lt;typename T&gt;
+    static int cast_to_int(T) { return T::default_case_cast_is_not_supported(); }
+};
+
+template&lt;&gt;
+inline int ExactlyInt::cast_to_int&lt;int&gt;(int i) { return i; }
+
+template&lt;&gt;
+inline int ExactlyInt::cast_to_int&lt;unsigned int&gt;(unsigned int i) { return i; }
+
+#if !ASSERT_DISABLED
+class RuntimeCastHelper {
+public:
+    template&lt;InspectorValue::Type TYPE&gt;
+    static void assertType(InspectorValue* value)
+    {
+        ASSERT(value-&gt;type() == TYPE);
+    }
+
+    static void assertAny(InspectorValue*)
+    {
+    }
+
+    static void assertInt(InspectorValue* value)
+    {
+        double v;
+        bool castRes = value-&gt;asNumber(&amp;v);
+        ASSERT_UNUSED(castRes, castRes);
+        ASSERT(static_cast&lt;double&gt;(static_cast&lt;int&gt;(v)) == v);
+    }
+};
+#endif
+
+
+// This class provides &quot;Traits&quot; type for the input type T. It is programmed using C++ template specialization
+// technique. By default it simply takes &quot;ItemTraits&quot; type from T, but it doesn't work with the base types.
+template&lt;typename T&gt;
+struct ArrayItemHelper {
+    typedef typename T::ItemTraits Traits;
+};
+
+template&lt;typename T&gt;
+class Array : public InspectorArrayBase {
+private:
+    Array() { }
+
+    InspectorArray* openAccessors()
+    {
+        COMPILE_ASSERT(sizeof(InspectorArray) == sizeof(Array&lt;T&gt;), cannot_cast);
+        return static_cast&lt;InspectorArray*&gt;(static_cast&lt;InspectorArrayBase*&gt;(this));
+    }
+
+public:
+    void addItem(PassRefPtr&lt;T&gt; value)
+    {
+        ArrayItemHelper&lt;T&gt;::Traits::pushRefPtr(this-&gt;openAccessors(), value);
+    }
+
+    void addItem(T value)
+    {
+        ArrayItemHelper&lt;T&gt;::Traits::pushRaw(this-&gt;openAccessors(), value);
+    }
+
+    static PassRefPtr&lt;Array&lt;T&gt;&gt; create()
+    {
+        return adoptRef(new Array&lt;T&gt;());
+    }
+
+    static PassRefPtr&lt;Array&lt;T&gt;&gt; runtimeCast(PassRefPtr&lt;InspectorValue&gt; value)
+    {
+        RefPtr&lt;InspectorArray&gt; array;
+        bool castRes = value-&gt;asArray(&amp;array);
+        ASSERT_UNUSED(castRes, castRes);
+#if !ASSERT_DISABLED
+        assertCorrectValue(array.get());
+#endif // !ASSERT_DISABLED
+        COMPILE_ASSERT(sizeof(Array&lt;T&gt;) == sizeof(InspectorArray), type_cast_problem);
+        return static_cast&lt;Array&lt;T&gt;*&gt;(static_cast&lt;InspectorArrayBase*&gt;(array.get()));
+    }
+
+#if !ASSERT_DISABLED
+    static void assertCorrectValue(InspectorValue* value)
+    {
+        RefPtr&lt;InspectorArray&gt; array;
+        bool castRes = value-&gt;asArray(&amp;array);
+        ASSERT_UNUSED(castRes, castRes);
+        for (unsigned i = 0; i &lt; array-&gt;length(); i++)
+            ArrayItemHelper&lt;T&gt;::Traits::template assertCorrectValue&lt;T&gt;(array-&gt;get(i).get());
+    }
+#endif // !ASSERT_DISABLED
+};
+
+struct StructItemTraits {
+    static void pushRefPtr(InspectorArray* array, PassRefPtr&lt;InspectorValue&gt; value)
+    {
+        array-&gt;pushValue(value);
+    }
+
+#if !ASSERT_DISABLED
+    template&lt;typename T&gt;
+    static void assertCorrectValue(InspectorValue* value)
+    {
+        T::assertCorrectValue(value);
+    }
+#endif // !ASSERT_DISABLED
+};
+
+template&lt;&gt;
+struct ArrayItemHelper&lt;String&gt; {
+    struct Traits {
+        static void pushRaw(InspectorArray* array, const String&amp; value)
+        {
+            array-&gt;pushString(value);
+        }
+
+#if !ASSERT_DISABLED
+        template&lt;typename T&gt;
+        static void assertCorrectValue(InspectorValue* value)
+        {
+            RuntimeCastHelper::assertType&lt;InspectorValue::TypeString&gt;(value);
+        }
+#endif // !ASSERT_DISABLED
+    };
+};
+
+template&lt;&gt;
+struct ArrayItemHelper&lt;int&gt; {
+    struct Traits {
+        static void pushRaw(InspectorArray* array, int value)
+        {
+            array-&gt;pushInt(value);
+        }
+
+#if !ASSERT_DISABLED
+        template&lt;typename T&gt;
+        static void assertCorrectValue(InspectorValue* value)
+        {
+            RuntimeCastHelper::assertInt(value);
+        }
+#endif // !ASSERT_DISABLED
+    };
+};
+
+template&lt;&gt;
+struct ArrayItemHelper&lt;double&gt; {
+    struct Traits {
+        static void pushRaw(InspectorArray* array, double value)
+        {
+            array-&gt;pushNumber(value);
+        }
+
+#if !ASSERT_DISABLED
+        template&lt;typename T&gt;
+        static void assertCorrectValue(InspectorValue* value)
+        {
+            RuntimeCastHelper::assertType&lt;InspectorValue::TypeNumber&gt;(value);
+        }
+#endif // !ASSERT_DISABLED
+    };
+};
+
+template&lt;&gt;
+struct ArrayItemHelper&lt;bool&gt; {
+    struct Traits {
+        static void pushRaw(InspectorArray* array, bool value)
+        {
+            array-&gt;pushBoolean(value);
+        }
+
+#if !ASSERT_DISABLED
+        template&lt;typename T&gt;
+        static void assertCorrectValue(InspectorValue* value)
+        {
+            RuntimeCastHelper::assertType&lt;InspectorValue::TypeBoolean&gt;(value);
+        }
+#endif // !ASSERT_DISABLED
+    };
+};
+
+template&lt;&gt;
+struct ArrayItemHelper&lt;InspectorValue&gt; {
+    struct Traits {
+        static void pushRefPtr(InspectorArray* array, PassRefPtr&lt;InspectorValue&gt; value)
+        {
+            array-&gt;pushValue(value);
+        }
+
+#if !ASSERT_DISABLED
+        template&lt;typename T&gt;
+        static void assertCorrectValue(InspectorValue* value)
+        {
+            RuntimeCastHelper::assertAny(value);
+        }
+#endif // !ASSERT_DISABLED
+    };
+};
+
+template&lt;&gt;
+struct ArrayItemHelper&lt;InspectorObject&gt; {
+    struct Traits {
+        static void pushRefPtr(InspectorArray* array, PassRefPtr&lt;InspectorValue&gt; value)
+        {
+            array-&gt;pushValue(value);
+        }
+
+#if !ASSERT_DISABLED
+        template&lt;typename T&gt;
+        static void assertCorrectValue(InspectorValue* value)
+        {
+            RuntimeCastHelper::assertType&lt;InspectorValue::TypeObject&gt;(value);
+        }
+#endif // !ASSERT_DISABLED
+    };
+};
+
+template&lt;&gt;
+struct ArrayItemHelper&lt;InspectorArray&gt; {
+    struct Traits {
+        static void pushRefPtr(InspectorArray* array, PassRefPtr&lt;InspectorArray&gt; value)
+        {
+            array-&gt;pushArray(value);
+        }
+
+#if !ASSERT_DISABLED
+        template&lt;typename T&gt;
+        static void assertCorrectValue(InspectorValue* value)
+        {
+            RuntimeCastHelper::assertType&lt;InspectorValue::TypeArray&gt;(value);
+        }
+#endif // !ASSERT_DISABLED
+    };
+};
+
+template&lt;typename T&gt;
+struct ArrayItemHelper&lt;TypeBuilder::Array&lt;T&gt;&gt; {
+    struct Traits {
+        static void pushRefPtr(InspectorArray* array, PassRefPtr&lt;TypeBuilder::Array&lt;T&gt;&gt; value)
+        {
+            array-&gt;pushValue(value);
+        }
+
+#if !ASSERT_DISABLED
+        template&lt;typename S&gt;
+        static void assertCorrectValue(InspectorValue* value)
+        {
+            S::assertCorrectValue(value);
+        }
+#endif // !ASSERT_DISABLED
+    };
+};
+
+} // namespace TypeBuilder
+
+} // namespace Inspector
+
+#endif // ENABLE(INSPECTOR)
+
+#endif // !defined(InspectorTypeBuilder_h)
</ins></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreinspectorInspectorValuescpp"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/JavaScriptCore/inspector/InspectorValues.cpp (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/inspector/InspectorValues.cpp                                (rev 0)
+++ branches/jsCStack/Source/JavaScriptCore/inspector/InspectorValues.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,836 @@
</span><ins>+/*
+ * Copyright (C) 2010 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;InspectorValues.h&quot;
+
+#include &lt;wtf/DecimalNumber.h&gt;
+#include &lt;wtf/dtoa.h&gt;
+#include &lt;wtf/text/StringBuilder.h&gt;
+
+namespace Inspector {
+
+namespace {
+
+static const int stackLimit = 1000;
+
+enum Token {
+    OBJECT_BEGIN,
+    OBJECT_END,
+    ARRAY_BEGIN,
+    ARRAY_END,
+    STRING,
+    NUMBER,
+    BOOL_TRUE,
+    BOOL_FALSE,
+    NULL_TOKEN,
+    LIST_SEPARATOR,
+    OBJECT_PAIR_SEPARATOR,
+    INVALID_TOKEN,
+};
+
+const char* const nullString = &quot;null&quot;;
+const char* const trueString = &quot;true&quot;;
+const char* const falseString = &quot;false&quot;;
+
+bool parseConstToken(const UChar* start, const UChar* end, const UChar** tokenEnd, const char* token)
+{
+    while (start &lt; end &amp;&amp; *token != '\0' &amp;&amp; *start++ == *token++) { }
+    if (*token != '\0')
+        return false;
+    *tokenEnd = start;
+    return true;
+}
+
+bool readInt(const UChar* start, const UChar* end, const UChar** tokenEnd, bool canHaveLeadingZeros)
+{
+    if (start == end)
+        return false;
+    bool haveLeadingZero = '0' == *start;
+    int length = 0;
+    while (start &lt; end &amp;&amp; '0' &lt;= *start &amp;&amp; *start &lt;= '9') {
+        ++start;
+        ++length;
+    }
+    if (!length)
+        return false;
+    if (!canHaveLeadingZeros &amp;&amp; length &gt; 1 &amp;&amp; haveLeadingZero)
+        return false;
+    *tokenEnd = start;
+    return true;
+}
+
+bool parseNumberToken(const UChar* start, const UChar* end, const UChar** tokenEnd)
+{
+    // We just grab the number here.  We validate the size in DecodeNumber.
+    // According   to RFC4627, a valid number is: [minus] int [frac] [exp]
+    if (start == end)
+        return false;
+    UChar c = *start;
+    if ('-' == c)
+        ++start;
+
+    if (!readInt(start, end, &amp;start, false))
+        return false;
+    if (start == end) {
+        *tokenEnd = start;
+        return true;
+    }
+
+    // Optional fraction part
+    c = *start;
+    if ('.' == c) {
+        ++start;
+        if (!readInt(start, end, &amp;start, true))
+            return false;
+        if (start == end) {
+            *tokenEnd = start;
+            return true;
+        }
+        c = *start;
+    }
+
+    // Optional exponent part
+    if ('e' == c || 'E' == c) {
+        ++start;
+        if (start == end)
+            return false;
+        c = *start;
+        if ('-' == c || '+' == c) {
+            ++start;
+            if (start == end)
+                return false;
+        }
+        if (!readInt(start, end, &amp;start, true))
+            return false;
+    }
+
+    *tokenEnd = start;
+    return true;
+}
+
+bool readHexDigits(const UChar* start, const UChar* end, const UChar** tokenEnd, int digits)
+{
+    if (end - start &lt; digits)
+        return false;
+    for (int i = 0; i &lt; digits; ++i) {
+        UChar c = *start++;
+        if (!(('0' &lt;= c &amp;&amp; c &lt;= '9') || ('a' &lt;= c &amp;&amp; c &lt;= 'f') || ('A' &lt;= c &amp;&amp; c &lt;= 'F')))
+            return false;
+    }
+    *tokenEnd = start;
+    return true;
+}
+
+bool parseStringToken(const UChar* start, const UChar* end, const UChar** tokenEnd)
+{
+    while (start &lt; end) {
+        UChar c = *start++;
+        if ('\\' == c) {
+            c = *start++;
+            // Make sure the escaped char is valid.
+            switch (c) {
+            case 'x':
+                if (!readHexDigits(start, end, &amp;start, 2))
+                    return false;
+                break;
+            case 'u':
+                if (!readHexDigits(start, end, &amp;start, 4))
+                    return false;
+                break;
+            case '\\':
+            case '/':
+            case 'b':
+            case 'f':
+            case 'n':
+            case 'r':
+            case 't':
+            case 'v':
+            case '&quot;':
+                break;
+            default:
+                return false;
+            }
+        } else if ('&quot;' == c) {
+            *tokenEnd = start;
+            return true;
+        }
+    }
+    return false;
+}
+
+Token parseToken(const UChar* start, const UChar* end, const UChar** tokenStart, const UChar** tokenEnd)
+{
+    while (start &lt; end &amp;&amp; isSpaceOrNewline(*start))
+        ++start;
+
+    if (start == end)
+        return INVALID_TOKEN;
+
+    *tokenStart = start;
+
+    switch (*start) {
+    case 'n':
+        if (parseConstToken(start, end, tokenEnd, nullString))
+            return NULL_TOKEN;
+        break;
+    case 't':
+        if (parseConstToken(start, end, tokenEnd, trueString))
+            return BOOL_TRUE;
+        break;
+    case 'f':
+        if (parseConstToken(start, end, tokenEnd, falseString))
+            return BOOL_FALSE;
+        break;
+    case '[':
+        *tokenEnd = start + 1;
+        return ARRAY_BEGIN;
+    case ']':
+        *tokenEnd = start + 1;
+        return ARRAY_END;
+    case ',':
+        *tokenEnd = start + 1;
+        return LIST_SEPARATOR;
+    case '{':
+        *tokenEnd = start + 1;
+        return OBJECT_BEGIN;
+    case '}':
+        *tokenEnd = start + 1;
+        return OBJECT_END;
+    case ':':
+        *tokenEnd = start + 1;
+        return OBJECT_PAIR_SEPARATOR;
+    case '0':
+    case '1':
+    case '2':
+    case '3':
+    case '4':
+    case '5':
+    case '6':
+    case '7':
+    case '8':
+    case '9':
+    case '-':
+        if (parseNumberToken(start, end, tokenEnd))
+            return NUMBER;
+        break;
+    case '&quot;':
+        if (parseStringToken(start + 1, end, tokenEnd))
+            return STRING;
+        break;
+    }
+    return INVALID_TOKEN;
+}
+
+inline int hexToInt(UChar c)
+{
+    if ('0' &lt;= c &amp;&amp; c &lt;= '9')
+        return c - '0';
+    if ('A' &lt;= c &amp;&amp; c &lt;= 'F')
+        return c - 'A' + 10;
+    if ('a' &lt;= c &amp;&amp; c &lt;= 'f')
+        return c - 'a' + 10;
+    ASSERT_NOT_REACHED();
+    return 0;
+}
+
+bool decodeString(const UChar* start, const UChar* end, StringBuilder* output)
+{
+    while (start &lt; end) {
+        UChar c = *start++;
+        if ('\\' != c) {
+            output-&gt;append(c);
+            continue;
+        }
+        c = *start++;
+        switch (c) {
+        case '&quot;':
+        case '/':
+        case '\\':
+            break;
+        case 'b':
+            c = '\b';
+            break;
+        case 'f':
+            c = '\f';
+            break;
+        case 'n':
+            c = '\n';
+            break;
+        case 'r':
+            c = '\r';
+            break;
+        case 't':
+            c = '\t';
+            break;
+        case 'v':
+            c = '\v';
+            break;
+        case 'x':
+            c = (hexToInt(*start) &lt;&lt; 4) +
+                hexToInt(*(start + 1));
+            start += 2;
+            break;
+        case 'u':
+            c = (hexToInt(*start) &lt;&lt; 12) +
+                (hexToInt(*(start + 1)) &lt;&lt; 8) +
+                (hexToInt(*(start + 2)) &lt;&lt; 4) +
+                hexToInt(*(start + 3));
+            start += 4;
+            break;
+        default:
+            return false;
+        }
+        output-&gt;append(c);
+    }
+    return true;
+}
+
+bool decodeString(const UChar* start, const UChar* end, String* output)
+{
+    if (start == end) {
+        *output = &quot;&quot;;
+        return true;
+    }
+    if (start &gt; end)
+        return false;
+    StringBuilder buffer;
+    buffer.reserveCapacity(end - start);
+    if (!decodeString(start, end, &amp;buffer))
+        return false;
+    *output = buffer.toString();
+    return true;
+}
+
+PassRefPtr&lt;InspectorValue&gt; buildValue(const UChar* start, const UChar* end, const UChar** valueTokenEnd, int depth)
+{
+    if (depth &gt; stackLimit)
+        return 0;
+
+    RefPtr&lt;InspectorValue&gt; result;
+    const UChar* tokenStart;
+    const UChar* tokenEnd;
+    Token token = parseToken(start, end, &amp;tokenStart, &amp;tokenEnd);
+    switch (token) {
+    case INVALID_TOKEN:
+        return 0;
+    case NULL_TOKEN:
+        result = InspectorValue::null();
+        break;
+    case BOOL_TRUE:
+        result = InspectorBasicValue::create(true);
+        break;
+    case BOOL_FALSE:
+        result = InspectorBasicValue::create(false);
+        break;
+    case NUMBER: {
+        bool ok;
+        double value = charactersToDouble(tokenStart, tokenEnd - tokenStart, &amp;ok);
+        if (!ok)
+            return 0;
+        result = InspectorBasicValue::create(value);
+        break;
+    }
+    case STRING: {
+        String value;
+        bool ok = decodeString(tokenStart + 1, tokenEnd - 1, &amp;value);
+        if (!ok)
+            return 0;
+        result = InspectorString::create(value);
+        break;
+    }
+    case ARRAY_BEGIN: {
+        RefPtr&lt;InspectorArray&gt; array = InspectorArray::create();
+        start = tokenEnd;
+        token = parseToken(start, end, &amp;tokenStart, &amp;tokenEnd);
+        while (token != ARRAY_END) {
+            RefPtr&lt;InspectorValue&gt; arrayNode = buildValue(start, end, &amp;tokenEnd, depth + 1);
+            if (!arrayNode)
+                return 0;
+            array-&gt;pushValue(arrayNode);
+
+            // After a list value, we expect a comma or the end of the list.
+            start = tokenEnd;
+            token = parseToken(start, end, &amp;tokenStart, &amp;tokenEnd);
+            if (token == LIST_SEPARATOR) {
+                start = tokenEnd;
+                token = parseToken(start, end, &amp;tokenStart, &amp;tokenEnd);
+                if (token == ARRAY_END)
+                    return 0;
+            } else if (token != ARRAY_END) {
+                // Unexpected value after list value.  Bail out.
+                return 0;
+            }
+        }
+        if (token != ARRAY_END)
+            return 0;
+        result = array.release();
+        break;
+    }
+    case OBJECT_BEGIN: {
+        RefPtr&lt;InspectorObject&gt; object = InspectorObject::create();
+        start = tokenEnd;
+        token = parseToken(start, end, &amp;tokenStart, &amp;tokenEnd);
+        while (token != OBJECT_END) {
+            if (token != STRING)
+                return 0;
+            String key;
+            if (!decodeString(tokenStart + 1, tokenEnd - 1, &amp;key))
+                return 0;
+            start = tokenEnd;
+
+            token = parseToken(start, end, &amp;tokenStart, &amp;tokenEnd);
+            if (token != OBJECT_PAIR_SEPARATOR)
+                return 0;
+            start = tokenEnd;
+
+            RefPtr&lt;InspectorValue&gt; value = buildValue(start, end, &amp;tokenEnd, depth + 1);
+            if (!value)
+                return 0;
+            object-&gt;setValue(key, value);
+            start = tokenEnd;
+
+            // After a key/value pair, we expect a comma or the end of the
+            // object.
+            token = parseToken(start, end, &amp;tokenStart, &amp;tokenEnd);
+            if (token == LIST_SEPARATOR) {
+                start = tokenEnd;
+                token = parseToken(start, end, &amp;tokenStart, &amp;tokenEnd);
+                 if (token == OBJECT_END)
+                    return 0;
+            } else if (token != OBJECT_END) {
+                // Unexpected value after last object value.  Bail out.
+                return 0;
+            }
+        }
+        if (token != OBJECT_END)
+            return 0;
+        result = object.release();
+        break;
+    }
+
+    default:
+        // We got a token that's not a value.
+        return 0;
+    }
+    *valueTokenEnd = tokenEnd;
+    return result.release();
+}
+
+inline bool escapeChar(UChar c, StringBuilder* dst)
+{
+    switch (c) {
+    case '\b': dst-&gt;append(&quot;\\b&quot;, 2); break;
+    case '\f': dst-&gt;append(&quot;\\f&quot;, 2); break;
+    case '\n': dst-&gt;append(&quot;\\n&quot;, 2); break;
+    case '\r': dst-&gt;append(&quot;\\r&quot;, 2); break;
+    case '\t': dst-&gt;append(&quot;\\t&quot;, 2); break;
+    case '\\': dst-&gt;append(&quot;\\\\&quot;, 2); break;
+    case '&quot;': dst-&gt;append(&quot;\\\&quot;&quot;, 2); break;
+    default:
+        return false;
+    }
+    return true;
+}
+
+inline void doubleQuoteString(const String&amp; str, StringBuilder* dst)
+{
+    dst-&gt;append('&quot;');
+    for (unsigned i = 0; i &lt; str.length(); ++i) {
+        UChar c = str[i];
+        if (!escapeChar(c, dst)) {
+            if (c &lt; 32 || c &gt; 126 || c == '&lt;' || c == '&gt;') {
+                // 1. Escaping &lt;, &gt; to prevent script execution.
+                // 2. Technically, we could also pass through c &gt; 126 as UTF8, but this
+                //    is also optional.  It would also be a pain to implement here.
+                unsigned int symbol = static_cast&lt;unsigned int&gt;(c);
+                String symbolCode = String::format(&quot;\\u%04X&quot;, symbol);
+                dst-&gt;append(symbolCode.characters(), symbolCode.length());
+            } else
+                dst-&gt;append(c);
+        }
+    }
+    dst-&gt;append('&quot;');
+}
+
+} // anonymous namespace
+
+bool InspectorValue::asBoolean(bool*) const
+{
+    return false;
+}
+
+bool InspectorValue::asNumber(double*) const
+{
+    return false;
+}
+
+bool InspectorValue::asNumber(long*) const
+{
+    return false;
+}
+
+bool InspectorValue::asNumber(int*) const
+{
+    return false;
+}
+
+bool InspectorValue::asNumber(unsigned long*) const
+{
+    return false;
+}
+
+bool InspectorValue::asNumber(unsigned int*) const
+{
+    return false;
+}
+
+bool InspectorValue::asString(String*) const
+{
+    return false;
+}
+
+bool InspectorValue::asValue(RefPtr&lt;InspectorValue&gt;* output)
+{
+    *output = this;
+    return true;
+}
+
+bool InspectorValue::asObject(RefPtr&lt;InspectorObject&gt;*)
+{
+    return false;
+}
+
+bool InspectorValue::asArray(RefPtr&lt;InspectorArray&gt;*)
+{
+    return false;
+}
+
+PassRefPtr&lt;InspectorObject&gt; InspectorValue::asObject()
+{
+    return 0;
+}
+
+PassRefPtr&lt;InspectorArray&gt; InspectorValue::asArray()
+{
+    return 0;
+}
+
+PassRefPtr&lt;InspectorValue&gt; InspectorValue::parseJSON(const String&amp; json)
+{
+    const UChar* start = json.characters();
+    const UChar* end = json.characters() + json.length();
+    const UChar *tokenEnd;
+    RefPtr&lt;InspectorValue&gt; value = buildValue(start, end, &amp;tokenEnd, 0);
+    if (!value || tokenEnd != end)
+        return 0;
+    return value.release();
+}
+
+String InspectorValue::toJSONString() const
+{
+    StringBuilder result;
+    result.reserveCapacity(512);
+    writeJSON(&amp;result);
+    return result.toString();
+}
+
+void InspectorValue::writeJSON(StringBuilder* output) const
+{
+    ASSERT(m_type == TypeNull);
+    output-&gt;append(nullString, 4);
+}
+
+bool InspectorBasicValue::asBoolean(bool* output) const
+{
+    if (type() != TypeBoolean)
+        return false;
+    *output = m_boolValue;
+    return true;
+}
+
+bool InspectorBasicValue::asNumber(double* output) const
+{
+    if (type() != TypeNumber)
+        return false;
+    *output = m_doubleValue;
+    return true;
+}
+
+bool InspectorBasicValue::asNumber(long* output) const
+{
+    if (type() != TypeNumber)
+        return false;
+    *output = static_cast&lt;long&gt;(m_doubleValue);
+    return true;
+}
+
+bool InspectorBasicValue::asNumber(int* output) const
+{
+    if (type() != TypeNumber)
+        return false;
+    *output = static_cast&lt;int&gt;(m_doubleValue);
+    return true;
+}
+
+bool InspectorBasicValue::asNumber(unsigned long* output) const
+{
+    if (type() != TypeNumber)
+        return false;
+    *output = static_cast&lt;unsigned long&gt;(m_doubleValue);
+    return true;
+}
+
+bool InspectorBasicValue::asNumber(unsigned int* output) const
+{
+    if (type() != TypeNumber)
+        return false;
+    *output = static_cast&lt;unsigned int&gt;(m_doubleValue);
+    return true;
+}
+
+void InspectorBasicValue::writeJSON(StringBuilder* output) const
+{
+    ASSERT(type() == TypeBoolean || type() == TypeNumber);
+    if (type() == TypeBoolean) {
+        if (m_boolValue)
+            output-&gt;append(trueString, 4);
+        else
+            output-&gt;append(falseString, 5);
+    } else if (type() == TypeNumber) {
+        NumberToLStringBuffer buffer;
+        if (!std::isfinite(m_doubleValue)) {
+            output-&gt;append(nullString, 4);
+            return;
+        }
+        DecimalNumber decimal = m_doubleValue;
+        unsigned length = 0;
+        if (decimal.bufferLengthForStringDecimal() &gt; WTF::NumberToStringBufferLength) {
+            // Not enough room for decimal. Use exponential format.
+            if (decimal.bufferLengthForStringExponential() &gt; WTF::NumberToStringBufferLength) {
+                // Fallback for an abnormal case if it's too little even for exponential.
+                output-&gt;append(&quot;NaN&quot;, 3);
+                return;
+            }
+            length = decimal.toStringExponential(buffer, WTF::NumberToStringBufferLength);
+        } else
+            length = decimal.toStringDecimal(buffer, WTF::NumberToStringBufferLength);
+        output-&gt;append(buffer, length);
+    }
+}
+
+bool InspectorString::asString(String* output) const
+{
+    *output = m_stringValue;
+    return true;
+}
+
+void InspectorString::writeJSON(StringBuilder* output) const
+{
+    ASSERT(type() == TypeString);
+    doubleQuoteString(m_stringValue, output);
+}
+
+InspectorObjectBase::~InspectorObjectBase()
+{
+}
+
+bool InspectorObjectBase::asObject(RefPtr&lt;InspectorObject&gt;* output)
+{
+    COMPILE_ASSERT(sizeof(InspectorObject) == sizeof(InspectorObjectBase), cannot_cast);
+    *output = static_cast&lt;InspectorObject*&gt;(this);
+    return true;
+}
+
+PassRefPtr&lt;InspectorObject&gt; InspectorObjectBase::asObject()
+{
+    return openAccessors();
+}
+
+InspectorObject* InspectorObjectBase::openAccessors()
+{
+    COMPILE_ASSERT(sizeof(InspectorObject) == sizeof(InspectorObjectBase), cannot_cast);
+    return static_cast&lt;InspectorObject*&gt;(this);
+}
+
+bool InspectorObjectBase::getBoolean(const String&amp; name, bool* output) const
+{
+    RefPtr&lt;InspectorValue&gt; value = get(name);
+    if (!value)
+        return false;
+    return value-&gt;asBoolean(output);
+}
+
+bool InspectorObjectBase::getString(const String&amp; name, String* output) const
+{
+    RefPtr&lt;InspectorValue&gt; value = get(name);
+    if (!value)
+        return false;
+    return value-&gt;asString(output);
+}
+
+PassRefPtr&lt;InspectorObject&gt; InspectorObjectBase::getObject(const String&amp; name) const
+{
+    PassRefPtr&lt;InspectorValue&gt; value = get(name);
+    if (!value)
+        return 0;
+    return value-&gt;asObject();
+}
+
+PassRefPtr&lt;InspectorArray&gt; InspectorObjectBase::getArray(const String&amp; name) const
+{
+    PassRefPtr&lt;InspectorValue&gt; value = get(name);
+    if (!value)
+        return 0;
+    return value-&gt;asArray();
+}
+
+PassRefPtr&lt;InspectorValue&gt; InspectorObjectBase::get(const String&amp; name) const
+{
+    Dictionary::const_iterator it = m_data.find(name);
+    if (it == m_data.end())
+        return 0;
+    return it-&gt;value;
+}
+
+void InspectorObjectBase::remove(const String&amp; name)
+{
+    m_data.remove(name);
+    for (size_t i = 0; i &lt; m_order.size(); ++i) {
+        if (m_order[i] == name) {
+            m_order.remove(i);
+            break;
+        }
+    }
+}
+
+void InspectorObjectBase::writeJSON(StringBuilder* output) const
+{
+    output-&gt;append('{');
+    for (size_t i = 0; i &lt; m_order.size(); ++i) {
+        Dictionary::const_iterator it = m_data.find(m_order[i]);
+        ASSERT(it != m_data.end());
+        if (i)
+            output-&gt;append(',');
+        doubleQuoteString(it-&gt;key, output);
+        output-&gt;append(':');
+        it-&gt;value-&gt;writeJSON(output);
+    }
+    output-&gt;append('}');
+}
+
+InspectorObjectBase::InspectorObjectBase()
+    : InspectorValue(TypeObject)
+    , m_data()
+    , m_order()
+{
+}
+
+InspectorArrayBase::~InspectorArrayBase()
+{
+}
+
+bool InspectorArrayBase::asArray(RefPtr&lt;InspectorArray&gt;* output)
+{
+    COMPILE_ASSERT(sizeof(InspectorArrayBase) == sizeof(InspectorArray), cannot_cast);
+    *output = static_cast&lt;InspectorArray*&gt;(this);
+    return true;
+}
+
+PassRefPtr&lt;InspectorArray&gt; InspectorArrayBase::asArray()
+{
+    COMPILE_ASSERT(sizeof(InspectorArrayBase) == sizeof(InspectorArray), cannot_cast);
+    return static_cast&lt;InspectorArray*&gt;(this);
+}
+
+void InspectorArrayBase::writeJSON(StringBuilder* output) const
+{
+    output-&gt;append('[');
+    for (Vector&lt;RefPtr&lt;InspectorValue&gt;&gt;::const_iterator it = m_data.begin(); it != m_data.end(); ++it) {
+        if (it != m_data.begin())
+            output-&gt;append(',');
+        (*it)-&gt;writeJSON(output);
+    }
+    output-&gt;append(']');
+}
+
+InspectorArrayBase::InspectorArrayBase()
+    : InspectorValue(TypeArray)
+    , m_data()
+{
+}
+
+PassRefPtr&lt;InspectorValue&gt; InspectorArrayBase::get(size_t index)
+{
+    ASSERT_WITH_SECURITY_IMPLICATION(index &lt; m_data.size());
+    return m_data[index];
+}
+
+PassRefPtr&lt;InspectorObject&gt; InspectorObject::create()
+{
+    return adoptRef(new InspectorObject);
+}
+
+PassRefPtr&lt;InspectorArray&gt; InspectorArray::create()
+{
+    return adoptRef(new InspectorArray);
+}
+
+PassRefPtr&lt;InspectorValue&gt; InspectorValue::null()
+{
+    return adoptRef(new InspectorValue);
+}
+
+PassRefPtr&lt;InspectorString&gt; InspectorString::create(const String&amp; value)
+{
+    return adoptRef(new InspectorString(value));
+}
+
+PassRefPtr&lt;InspectorString&gt; InspectorString::create(const char* value)
+{
+    return adoptRef(new InspectorString(value));
+}
+
+PassRefPtr&lt;InspectorBasicValue&gt; InspectorBasicValue::create(bool value)
+{
+    return adoptRef(new InspectorBasicValue(value));
+}
+
+PassRefPtr&lt;InspectorBasicValue&gt; InspectorBasicValue::create(int value)
+{
+    return adoptRef(new InspectorBasicValue(value));
+}
+
+PassRefPtr&lt;InspectorBasicValue&gt; InspectorBasicValue::create(double value)
+{
+    return adoptRef(new InspectorBasicValue(value));
+}
+
+} // namespace Inspector
</ins></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreinspectorInspectorValuesh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/JavaScriptCore/inspector/InspectorValues.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/inspector/InspectorValues.h                                (rev 0)
+++ branches/jsCStack/Source/JavaScriptCore/inspector/InspectorValues.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,368 @@
</span><ins>+/*
+ * Copyright (C) 2009 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef InspectorValues_h
+#define InspectorValues_h
+
+#include &lt;wtf/Forward.h&gt;
+#include &lt;wtf/HashMap.h&gt;
+#include &lt;wtf/RefCounted.h&gt;
+#include &lt;wtf/Vector.h&gt;
+#include &lt;wtf/text/StringHash.h&gt;
+#include &lt;wtf/text/WTFString.h&gt;
+
+namespace Inspector {
+
+class InspectorArray;
+class InspectorObject;
+
+class JS_EXPORT_PRIVATE InspectorValue : public RefCounted&lt;InspectorValue&gt; {
+public:
+    static const int maxDepth = 1000;
+
+    InspectorValue() : m_type(TypeNull) { }
+    virtual ~InspectorValue() { }
+
+    static PassRefPtr&lt;InspectorValue&gt; null();
+
+    typedef enum {
+        TypeNull = 0,
+        TypeBoolean,
+        TypeNumber,
+        TypeString,
+        TypeObject,
+        TypeArray
+    } Type;
+
+    Type type() const { return m_type; }
+
+    bool isNull() const { return m_type == TypeNull; }
+
+    virtual bool asBoolean(bool* output) const;
+    virtual bool asNumber(double* output) const;
+    virtual bool asNumber(long* output) const;
+    virtual bool asNumber(int* output) const;
+    virtual bool asNumber(unsigned long* output) const;
+    virtual bool asNumber(unsigned int* output) const;
+    virtual bool asString(String* output) const;
+    virtual bool asValue(RefPtr&lt;InspectorValue&gt;* output);
+    virtual bool asObject(RefPtr&lt;InspectorObject&gt;* output);
+    virtual bool asArray(RefPtr&lt;InspectorArray&gt;* output);
+    virtual PassRefPtr&lt;InspectorObject&gt; asObject();
+    virtual PassRefPtr&lt;InspectorArray&gt; asArray();
+
+    static PassRefPtr&lt;InspectorValue&gt; parseJSON(const String&amp; json);
+
+    String toJSONString() const;
+    virtual void writeJSON(StringBuilder* output) const;
+
+protected:
+    explicit InspectorValue(Type type) : m_type(type) { }
+
+private:
+    Type m_type;
+};
+
+class JS_EXPORT_PRIVATE InspectorBasicValue : public InspectorValue {
+public:
+
+    static PassRefPtr&lt;InspectorBasicValue&gt; create(bool);
+    static PassRefPtr&lt;InspectorBasicValue&gt; create(int);
+    static PassRefPtr&lt;InspectorBasicValue&gt; create(double);
+
+    virtual bool asBoolean(bool* output) const OVERRIDE;
+    virtual bool asNumber(double* output) const OVERRIDE;
+    virtual bool asNumber(long* output) const OVERRIDE;
+    virtual bool asNumber(int* output) const OVERRIDE;
+    virtual bool asNumber(unsigned long* output) const OVERRIDE;
+    virtual bool asNumber(unsigned* output) const OVERRIDE;
+
+    virtual void writeJSON(StringBuilder* output) const OVERRIDE;
+
+private:
+    explicit InspectorBasicValue(bool value) : InspectorValue(TypeBoolean), m_boolValue(value) { }
+    explicit InspectorBasicValue(int value) : InspectorValue(TypeNumber), m_doubleValue((double)value) { }
+    explicit InspectorBasicValue(double value) : InspectorValue(TypeNumber), m_doubleValue(value) { }
+
+    union {
+        bool m_boolValue;
+        double m_doubleValue;
+    };
+};
+
+class JS_EXPORT_PRIVATE InspectorString : public InspectorValue {
+public:
+    static PassRefPtr&lt;InspectorString&gt; create(const String&amp;);
+    static PassRefPtr&lt;InspectorString&gt; create(const char*);
+
+    virtual bool asString(String* output) const OVERRIDE;
+
+    virtual void writeJSON(StringBuilder* output) const OVERRIDE;
+
+private:
+    explicit InspectorString(const String&amp; value) : InspectorValue(TypeString), m_stringValue(value) { }
+    explicit InspectorString(const char* value) : InspectorValue(TypeString), m_stringValue(value) { }
+
+    String m_stringValue;
+};
+
+class JS_EXPORT_PRIVATE InspectorObjectBase : public InspectorValue {
+private:
+    typedef HashMap&lt;String, RefPtr&lt;InspectorValue&gt;&gt; Dictionary;
+
+public:
+    typedef Dictionary::iterator iterator;
+    typedef Dictionary::const_iterator const_iterator;
+
+    virtual PassRefPtr&lt;InspectorObject&gt; asObject() OVERRIDE;
+    InspectorObject* openAccessors();
+
+protected:
+    virtual ~InspectorObjectBase();
+
+    virtual bool asObject(RefPtr&lt;InspectorObject&gt;* output) OVERRIDE;
+
+    void setBoolean(const String&amp; name, bool);
+    void setNumber(const String&amp; name, double);
+    void setString(const String&amp; name, const String&amp;);
+    void setValue(const String&amp; name, PassRefPtr&lt;InspectorValue&gt;);
+    void setObject(const String&amp; name, PassRefPtr&lt;InspectorObject&gt;);
+    void setArray(const String&amp; name, PassRefPtr&lt;InspectorArray&gt;);
+
+    iterator find(const String&amp; name);
+    const_iterator find(const String&amp; name) const;
+    bool getBoolean(const String&amp; name, bool* output) const;
+    template&lt;class T&gt; bool getNumber(const String&amp; name, T* output) const
+    {
+        RefPtr&lt;InspectorValue&gt; value = get(name);
+        if (!value)
+            return false;
+        return value-&gt;asNumber(output);
+    }
+    bool getString(const String&amp; name, String* output) const;
+    PassRefPtr&lt;InspectorObject&gt; getObject(const String&amp; name) const;
+    PassRefPtr&lt;InspectorArray&gt; getArray(const String&amp; name) const;
+    PassRefPtr&lt;InspectorValue&gt; get(const String&amp; name) const;
+
+    void remove(const String&amp; name);
+
+    virtual void writeJSON(StringBuilder* output) const OVERRIDE;
+
+    iterator begin() { return m_data.begin(); }
+    iterator end() { return m_data.end(); }
+    const_iterator begin() const { return m_data.begin(); }
+    const_iterator end() const { return m_data.end(); }
+
+    int size() const { return m_data.size(); }
+
+protected:
+    InspectorObjectBase();
+
+private:
+    Dictionary m_data;
+    Vector&lt;String&gt; m_order;
+};
+
+class InspectorObject : public InspectorObjectBase {
+public:
+    static JS_EXPORT_PRIVATE PassRefPtr&lt;InspectorObject&gt; create();
+
+    using InspectorObjectBase::asObject;
+
+    using InspectorObjectBase::setBoolean;
+    using InspectorObjectBase::setNumber;
+    using InspectorObjectBase::setString;
+    using InspectorObjectBase::setValue;
+    using InspectorObjectBase::setObject;
+    using InspectorObjectBase::setArray;
+
+    using InspectorObjectBase::find;
+    using InspectorObjectBase::getBoolean;
+    using InspectorObjectBase::getNumber;
+    using InspectorObjectBase::getString;
+    using InspectorObjectBase::getObject;
+    using InspectorObjectBase::getArray;
+    using InspectorObjectBase::get;
+
+    using InspectorObjectBase::remove;
+
+    using InspectorObjectBase::begin;
+    using InspectorObjectBase::end;
+
+    using InspectorObjectBase::size;
+};
+
+
+class JS_EXPORT_PRIVATE InspectorArrayBase : public InspectorValue {
+public:
+    typedef Vector&lt;RefPtr&lt;InspectorValue&gt;&gt;::iterator iterator;
+    typedef Vector&lt;RefPtr&lt;InspectorValue&gt;&gt;::const_iterator const_iterator;
+
+    virtual PassRefPtr&lt;InspectorArray&gt; asArray() OVERRIDE;
+
+    unsigned length() const { return m_data.size(); }
+
+protected:
+    virtual ~InspectorArrayBase();
+
+    virtual bool asArray(RefPtr&lt;InspectorArray&gt;* output) OVERRIDE;
+
+    void pushBoolean(bool);
+    void pushInt(int);
+    void pushNumber(double);
+    void pushString(const String&amp;);
+    void pushValue(PassRefPtr&lt;InspectorValue&gt;);
+    void pushObject(PassRefPtr&lt;InspectorObject&gt;);
+    void pushArray(PassRefPtr&lt;InspectorArray&gt;);
+
+    PassRefPtr&lt;InspectorValue&gt; get(size_t index);
+
+    virtual void writeJSON(StringBuilder* output) const OVERRIDE;
+
+    iterator begin() { return m_data.begin(); }
+    iterator end() { return m_data.end(); }
+    const_iterator begin() const { return m_data.begin(); }
+    const_iterator end() const { return m_data.end(); }
+
+protected:
+    InspectorArrayBase();
+
+private:
+    Vector&lt;RefPtr&lt;InspectorValue&gt;&gt; m_data;
+};
+
+class InspectorArray : public InspectorArrayBase {
+public:
+    static JS_EXPORT_PRIVATE PassRefPtr&lt;InspectorArray&gt; create();
+
+    using InspectorArrayBase::asArray;
+
+    using InspectorArrayBase::pushBoolean;
+    using InspectorArrayBase::pushInt;
+    using InspectorArrayBase::pushNumber;
+    using InspectorArrayBase::pushString;
+    using InspectorArrayBase::pushValue;
+    using InspectorArrayBase::pushObject;
+    using InspectorArrayBase::pushArray;
+
+    using InspectorArrayBase::get;
+
+    using InspectorArrayBase::begin;
+    using InspectorArrayBase::end;
+};
+
+
+inline InspectorObjectBase::iterator InspectorObjectBase::find(const String&amp; name)
+{
+    return m_data.find(name);
+}
+
+inline InspectorObjectBase::const_iterator InspectorObjectBase::find(const String&amp; name) const
+{
+    return m_data.find(name);
+}
+
+inline void InspectorObjectBase::setBoolean(const String&amp; name, bool value)
+{
+    setValue(name, InspectorBasicValue::create(value));
+}
+
+inline void InspectorObjectBase::setNumber(const String&amp; name, double value)
+{
+    setValue(name, InspectorBasicValue::create(value));
+}
+
+inline void InspectorObjectBase::setString(const String&amp; name, const String&amp; value)
+{
+    setValue(name, InspectorString::create(value));
+}
+
+inline void InspectorObjectBase::setValue(const String&amp; name, PassRefPtr&lt;InspectorValue&gt; value)
+{
+    ASSERT(value);
+    if (m_data.set(name, value).isNewEntry)
+        m_order.append(name);
+}
+
+inline void InspectorObjectBase::setObject(const String&amp; name, PassRefPtr&lt;InspectorObject&gt; value)
+{
+    ASSERT(value);
+    if (m_data.set(name, value).isNewEntry)
+        m_order.append(name);
+}
+
+inline void InspectorObjectBase::setArray(const String&amp; name, PassRefPtr&lt;InspectorArray&gt; value)
+{
+    ASSERT(value);
+    if (m_data.set(name, value).isNewEntry)
+        m_order.append(name);
+}
+
+inline void InspectorArrayBase::pushBoolean(bool value)
+{
+    m_data.append(InspectorBasicValue::create(value));
+}
+
+inline void InspectorArrayBase::pushInt(int value)
+{
+    m_data.append(InspectorBasicValue::create(value));
+}
+
+inline void InspectorArrayBase::pushNumber(double value)
+{
+    m_data.append(InspectorBasicValue::create(value));
+}
+
+inline void InspectorArrayBase::pushString(const String&amp; value)
+{
+    m_data.append(InspectorString::create(value));
+}
+
+inline void InspectorArrayBase::pushValue(PassRefPtr&lt;InspectorValue&gt; value)
+{
+    ASSERT(value);
+    m_data.append(value);
+}
+
+inline void InspectorArrayBase::pushObject(PassRefPtr&lt;InspectorObject&gt; value)
+{
+    ASSERT(value);
+    m_data.append(value);
+}
+
+inline void InspectorArrayBase::pushArray(PassRefPtr&lt;InspectorArray&gt; value)
+{
+    ASSERT(value);
+    m_data.append(value);
+}
+
+} // namespace Inspector
+
+#endif // !defined(InspectorValues_h)
</ins></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCorejitJITOperationscpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/jit/JITOperations.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/jit/JITOperations.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/jit/JITOperations.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1402,6 +1402,8 @@
</span><span class="cx">     return JSValue::encode(baseValue.get(exec, ident, slot));
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+}
+
</ins><span class="cx"> static JSValue getByVal(ExecState* exec, JSValue baseValue, JSValue subscript, ReturnAddressPtr returnAddress)
</span><span class="cx"> {
</span><span class="cx">     if (LIKELY(baseValue.isCell() &amp;&amp; subscript.isString())) {
</span><span class="lines">@@ -1425,6 +1427,8 @@
</span><span class="cx">     return baseValue.get(exec, property);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+extern &quot;C&quot; {
+    
</ins><span class="cx"> EncodedJSValue JIT_OPERATION operationGetByValGeneric(ExecState* exec, EncodedJSValue encodedBase, EncodedJSValue encodedSubscript)
</span><span class="cx"> {
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCorejsccpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/jsc.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/jsc.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/jsc.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -538,7 +538,7 @@
</span><span class="cx"> // be in a separate main function because the jscmain function requires object
</span><span class="cx"> // unwinding.
</span><span class="cx"> 
</span><del>-#if COMPILER(MSVC) &amp;&amp; !COMPILER(INTEL) &amp;&amp; !defined(_DEBUG) &amp;&amp; !OS(WINCE)
</del><ins>+#if COMPILER(MSVC) &amp;&amp; !defined(_DEBUG) &amp;&amp; !OS(WINCE)
</ins><span class="cx"> #define TRY       __try {
</span><span class="cx"> #define EXCEPT(x) } __except (EXCEPTION_EXECUTE_HANDLER) { x; }
</span><span class="cx"> #else
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoremakegeneratedsourcessh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/make-generated-sources.sh (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/make-generated-sources.sh        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/make-generated-sources.sh        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,7 +1,6 @@
</span><span class="cx"> #!/bin/sh
</span><span class="cx"> 
</span><span class="cx"> export SRCROOT=$PWD
</span><del>-export WebCore=$PWD
</del><span class="cx"> export CREATE_HASH_TABLE=&quot;$SRCROOT/create_hash_table&quot;
</span><span class="cx"> export CREATE_REGEXP_TABLES=&quot;$SRCROOT/create_regex_tables&quot;
</span><span class="cx"> export CREATE_KEYWORD_LOOKUP=&quot;$SRCROOT/KeywordLookupGenerator.py&quot;
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreofflineasmmipsrb"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/offlineasm/mips.rb (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/offlineasm/mips.rb        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/offlineasm/mips.rb        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -311,47 +311,94 @@
</span><span class="cx"> #
</span><span class="cx"> 
</span><span class="cx"> class Node
</span><del>-    def mipsLowerMalformedAddressesRecurse(list, topLevelNode, &amp;block)
</del><ins>+    def mipsLowerMalformedAddressesRecurse(list)
</ins><span class="cx">         mapChildren {
</span><span class="cx">             | subNode |
</span><del>-            subNode.mipsLowerMalformedAddressesRecurse(list, topLevelNode, &amp;block)
</del><ins>+            subNode.mipsLowerMalformedAddressesRecurse(list)
</ins><span class="cx">         }
</span><span class="cx">     end
</span><del>-end
</del><span class="cx"> 
</span><del>-class Address
-    def mipsLowerMalformedAddressesRecurse(list, node, &amp;block)
-        riscLowerMalformedAddressesRecurse(list, node, &amp;block)
</del><ins>+    def mipsLowerShiftedAddressesRecurse(list, isFirst, tmp)
+        mapChildren {
+            | subNode |
+            subNode.mipsLowerShiftedAddressesRecurse(list, isFirst, tmp)
+        }
</ins><span class="cx">     end
</span><span class="cx"> end
</span><span class="cx"> 
</span><span class="cx"> class BaseIndex
</span><del>-    def mipsLowerMalformedAddressesRecurse(list, node, &amp;block)
</del><ins>+    def mipsLowerMalformedAddressesRecurse(list)
+        tmp = Tmp.new(codeOrigin, :gpr)
</ins><span class="cx">         if scaleShift == 0
</span><del>-            tmp0 = Tmp.new(codeOrigin, :gpr)
-            list &lt;&lt; Instruction.new(codeOrigin, &quot;addp&quot;, [base, index, tmp0])
-            Address.new(codeOrigin, tmp0, Immediate.new(codeOrigin, offset.value));
-        else
-            tmp0 = Tmp.new(codeOrigin, :gpr)
-            list &lt;&lt; Instruction.new(codeOrigin, &quot;lshifti&quot;, [index, Immediate.new(codeOrigin, scaleShift), tmp0]);
-            list &lt;&lt; Instruction.new(codeOrigin, &quot;addp&quot;, [base, tmp0])
-            Address.new(codeOrigin, tmp0, Immediate.new(codeOrigin, offset.value));
</del><ins>+            list &lt;&lt; Instruction.new(codeOrigin, &quot;addp&quot;, [base, index, tmp])
+            Address.new(codeOrigin, tmp, Immediate.new(codeOrigin, offset.value));
</ins><span class="cx">         end
</span><span class="cx">     end
</span><del>-end
</del><span class="cx"> 
</span><del>-class AbsoluteAddress
-    def mipsLowerMalformedAddressesRecurse(list, node, &amp;block)
-        riscLowerMalformedAddressesRecurse(list, node, &amp;block)
</del><ins>+    def mipsLowerShiftedAddressesRecurse(list, isFirst, tmp)
+        if isFirst
+            list &lt;&lt; Instruction.new(codeOrigin, &quot;lshifti&quot;, [index, Immediate.new(codeOrigin, scaleShift), tmp]);
+            list &lt;&lt; Instruction.new(codeOrigin, &quot;addp&quot;, [base, tmp])
+        end
+        Address.new(codeOrigin, tmp, Immediate.new(codeOrigin, offset.value));
</ins><span class="cx">     end
</span><span class="cx"> end
</span><span class="cx"> 
</span><del>-def mipsLowerMalformedAddresses(list, &amp;block)
-    newList = []
-    list.each {
-        | node |
-        newList &lt;&lt; node.mipsLowerMalformedAddressesRecurse(newList, node, &amp;block)
</del><ins>+#
+# Lowering of BaseIndex addresses with optimization for MIPS.
+#
+# offline asm instruction pair:
+#   loadi 4[cfr, t0, 8], t2
+#   loadi 0[cfr, t0, 8], t0
+#
+# lowered instructions: 
+#   lshifti t0, 3, tmp
+#   addp    cfr, tmp
+#   loadi   4[tmp], t2
+#   loadi   0[tmp], t0
+#
+
+def mipsHasShiftedBaseIndexAddress(instruction)
+    instruction.operands.each_with_index {
+        | operand, index |
+        if operand.is_a? BaseIndex and operand.scaleShift != 0
+            return index
+        end
</ins><span class="cx">     }
</span><ins>+    -1
+end
+
+def mipsScaleOfBaseIndexMatches(baseIndex0, baseIndex1)
+    baseIndex0.base == baseIndex1.base and
+    baseIndex0.index == baseIndex1.index and
+    baseIndex0.scale == baseIndex1.scale
+end
+
+def mipsLowerBaseIndexAddresses(list)
+    newList = [ list[0] ]
+    tmp = nil
+    list.each_cons(2) {
+        | nodes |
+        if nodes[1].is_a? Instruction
+            ind = mipsHasShiftedBaseIndexAddress(nodes[1])
+            if ind != -1
+                if nodes[0].is_a? Instruction and
+                    nodes[0].opcode == nodes[1].opcode and
+                    ind == mipsHasShiftedBaseIndexAddress(nodes[0]) and
+                    mipsScaleOfBaseIndexMatches(nodes[0].operands[ind], nodes[1].operands[ind])
+
+                    newList &lt;&lt; nodes[1].mipsLowerShiftedAddressesRecurse(newList, false, tmp)
+                else
+                    tmp = Tmp.new(codeOrigin, :gpr)
+                    newList &lt;&lt; nodes[1].mipsLowerShiftedAddressesRecurse(newList, true, tmp)
+                end
+            else
+                newList &lt;&lt; nodes[1].mipsLowerMalformedAddressesRecurse(newList)
+            end
+        else
+            newList &lt;&lt; nodes[1]
+        end
+    }
</ins><span class="cx">     newList
</span><span class="cx"> end
</span><span class="cx"> 
</span><span class="lines">@@ -563,7 +610,8 @@
</span><span class="cx">         result = riscLowerSimpleBranchOps(result)
</span><span class="cx">         result = riscLowerHardBranchOps(result)
</span><span class="cx">         result = riscLowerShiftOps(result)
</span><del>-        result = mipsLowerMalformedAddresses(result) {
</del><ins>+        result = mipsLowerBaseIndexAddresses(result)
+        result = riscLowerMalformedAddresses(result) {
</ins><span class="cx">             | node, address |
</span><span class="cx">             if address.is_a? Address
</span><span class="cx">                 (-0xffff..0xffff).include? address.offset.value
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreofflineasmsh4rb"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/offlineasm/sh4.rb (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/offlineasm/sh4.rb        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/offlineasm/sh4.rb        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -452,18 +452,19 @@
</span><span class="cx">     list.each {
</span><span class="cx">         | node |
</span><span class="cx">         if node.is_a? Instruction
</span><del>-            case node.opcode
-            when &quot;jmp&quot;, &quot;call&quot;
-                if node.operands[0].is_a? LabelReference
-                    tmp = Tmp.new(codeOrigin, :gpr)
-                    newList &lt;&lt; Instruction.new(codeOrigin, &quot;move&quot;, [node.operands[0], tmp])
-                    newList &lt;&lt; Instruction.new(codeOrigin, node.opcode, [tmp])
</del><ins>+            operands = node.operands
+            newOperands = []
+            operands.each {
+                | operand |
+                if operand.is_a? LabelReference
+                    tmp = Tmp.new(operand.codeOrigin, :gpr)
+                    newList &lt;&lt; Instruction.new(operand.codeOrigin, &quot;move&quot;, [operand, tmp])
+                    newOperands &lt;&lt; tmp
</ins><span class="cx">                 else
</span><del>-                    newList &lt;&lt; node
</del><ins>+                    newOperands &lt;&lt; operand
</ins><span class="cx">                 end
</span><del>-            else
-                newList &lt;&lt; node
-            end
</del><ins>+            }
+            newList &lt;&lt; Instruction.new(node.codeOrigin, node.opcode, newOperands, node.annotation)
</ins><span class="cx">         else
</span><span class="cx">             newList &lt;&lt; node
</span><span class="cx">         end
</span><span class="lines">@@ -730,8 +731,8 @@
</span><span class="cx">             &quot;bbeq&quot;, &quot;bbneq&quot;, &quot;bbb&quot;, &quot;bieq&quot;, &quot;bpeq&quot;, &quot;bineq&quot;, &quot;bpneq&quot;, &quot;bia&quot;, &quot;bpa&quot;, &quot;biaeq&quot;, &quot;bpaeq&quot;, &quot;bib&quot;, &quot;bpb&quot;,
</span><span class="cx">             &quot;bigteq&quot;, &quot;bpgteq&quot;, &quot;bilt&quot;, &quot;bplt&quot;, &quot;bigt&quot;, &quot;bpgt&quot;, &quot;bilteq&quot;, &quot;bplteq&quot;, &quot;btiz&quot;, &quot;btpz&quot;, &quot;btinz&quot;, &quot;btpnz&quot;, &quot;btbz&quot;, &quot;btbnz&quot;])
</span><span class="cx">         result = riscLowerMalformedImmediates(result, -128..127)
</span><ins>+        result = riscLowerMisplacedAddresses(result)
</ins><span class="cx">         result = sh4LowerMisplacedLabels(result)
</span><del>-        result = riscLowerMisplacedAddresses(result)
</del><span class="cx">         result = sh4LowerMisplacedSpecialRegisters(result)
</span><span class="cx"> 
</span><span class="cx">         result = assignRegistersToTemporaries(result, :gpr, SH4_TMP_GPRS)
</span><span class="lines">@@ -749,6 +750,7 @@
</span><span class="cx"> end
</span><span class="cx"> 
</span><span class="cx"> def emitSH4Branch(sh4opcode, operand)
</span><ins>+    raise &quot;Invalid operand #{operand}&quot; unless operand.is_a? RegisterID or operand.is_a? SpecialRegister
</ins><span class="cx">     $asm.puts &quot;#{sh4opcode} @#{operand.sh4Operand}&quot;
</span><span class="cx">     $asm.puts &quot;nop&quot;
</span><span class="cx"> end
</span><span class="lines">@@ -772,12 +774,16 @@
</span><span class="cx">     end
</span><span class="cx"> end
</span><span class="cx"> 
</span><del>-def emitSH4BranchIfT(label, neg)
</del><ins>+def emitSH4BranchIfT(dest, neg)
</ins><span class="cx">     outlabel = LocalLabel.unique(&quot;branchIfT&quot;)
</span><span class="cx">     sh4opcode = neg ? &quot;bt&quot; : &quot;bf&quot;
</span><span class="cx">     $asm.puts &quot;#{sh4opcode} #{LocalLabelReference.new(codeOrigin, outlabel).asmLabel}&quot;
</span><del>-    $asm.puts &quot;bra #{label.asmLabel}&quot;
-    $asm.puts &quot;nop&quot;
</del><ins>+    if dest.is_a? LocalLabelReference
+        $asm.puts &quot;bra #{dest.asmLabel}&quot;
+        $asm.puts &quot;nop&quot;
+    else
+        emitSH4Branch(&quot;jmp&quot;, dest)
+    end
</ins><span class="cx">     outlabel.lower(&quot;SH4&quot;)
</span><span class="cx"> end
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreparserASTBuilderh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/parser/ASTBuilder.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/parser/ASTBuilder.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/parser/ASTBuilder.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -293,7 +293,7 @@
</span><span class="cx">         body-&gt;setFunctionNameStart(functionNameStart);
</span><span class="cx">     }
</span><span class="cx">     
</span><del>-    template &lt;bool&gt; PropertyNode* createGetterOrSetterProperty(const JSTokenLocation&amp; location, PropertyNode::Type type, const Identifier* name, ParameterNode* params, FunctionBodyNode* body, unsigned openBraceOffset, unsigned closeBraceOffset, int bodyStartLine, int bodyEndLine, unsigned bodyStartColumn)
</del><ins>+    NEVER_INLINE PropertyNode* createGetterOrSetterProperty(const JSTokenLocation&amp; location, PropertyNode::Type type, bool, const Identifier* name, ParameterNode* params, FunctionBodyNode* body, unsigned openBraceOffset, unsigned closeBraceOffset, int bodyStartLine, int bodyEndLine, unsigned bodyStartColumn)
</ins><span class="cx">     {
</span><span class="cx">         ASSERT(name);
</span><span class="cx">         body-&gt;setLoc(bodyStartLine, bodyEndLine, location.startOffset, location.lineStartOffset);
</span><span class="lines">@@ -301,7 +301,7 @@
</span><span class="cx">         return new (m_vm) PropertyNode(m_vm, *name, new (m_vm) FuncExprNode(location, m_vm-&gt;propertyNames-&gt;nullIdentifier, body, m_sourceCode-&gt;subExpression(openBraceOffset, closeBraceOffset, bodyStartLine, bodyStartColumn), params), type);
</span><span class="cx">     }
</span><span class="cx">     
</span><del>-    template &lt;bool&gt; PropertyNode* createGetterOrSetterProperty(VM*, const JSTokenLocation&amp; location, PropertyNode::Type type, double name, ParameterNode* params, FunctionBodyNode* body, unsigned openBraceOffset, unsigned closeBraceOffset, int bodyStartLine, int bodyEndLine, unsigned bodyStartColumn)
</del><ins>+    NEVER_INLINE PropertyNode* createGetterOrSetterProperty(VM*, const JSTokenLocation&amp; location, PropertyNode::Type type, bool, double name, ParameterNode* params, FunctionBodyNode* body, unsigned openBraceOffset, unsigned closeBraceOffset, int bodyStartLine, int bodyEndLine, unsigned bodyStartColumn)
</ins><span class="cx">     {
</span><span class="cx">         body-&gt;setLoc(bodyStartLine, bodyEndLine, location.startOffset, location.lineStartOffset);
</span><span class="cx">         return new (m_vm) PropertyNode(m_vm, name, new (m_vm) FuncExprNode(location, m_vm-&gt;propertyNames-&gt;nullIdentifier, body, m_sourceCode-&gt;subExpression(openBraceOffset, closeBraceOffset, bodyStartLine, bodyStartColumn), params), type);
</span><span class="lines">@@ -312,14 +312,14 @@
</span><span class="cx">     ArgumentListNode* createArgumentsList(const JSTokenLocation&amp; location, ExpressionNode* arg) { return new (m_vm) ArgumentListNode(location, arg); }
</span><span class="cx">     ArgumentListNode* createArgumentsList(const JSTokenLocation&amp; location, ArgumentListNode* args, ExpressionNode* arg) { return new (m_vm) ArgumentListNode(location, args, arg); }
</span><span class="cx"> 
</span><del>-    template &lt;bool&gt; PropertyNode* createProperty(const Identifier* propertyName, ExpressionNode* node, PropertyNode::Type type)
</del><ins>+    PropertyNode* createProperty(const Identifier* propertyName, ExpressionNode* node, PropertyNode::Type type, bool)
</ins><span class="cx">     {
</span><span class="cx">         if (node-&gt;isFuncExprNode())
</span><span class="cx">             static_cast&lt;FuncExprNode*&gt;(node)-&gt;body()-&gt;setInferredName(*propertyName);
</span><span class="cx">         return new (m_vm) PropertyNode(m_vm, *propertyName, node, type);
</span><span class="cx">     }
</span><del>-    template &lt;bool&gt; PropertyNode* createProperty(VM*, double propertyName, ExpressionNode* node, PropertyNode::Type type) { return new (m_vm) PropertyNode(m_vm, propertyName, node, type); }
-    template &lt;bool&gt; PropertyNode* createProperty(VM*, ExpressionNode* propertyName, ExpressionNode* node, PropertyNode::Type type) { return new (m_vm) PropertyNode(m_vm, propertyName, node, type); }
</del><ins>+    PropertyNode* createProperty(VM*, double propertyName, ExpressionNode* node, PropertyNode::Type type, bool) { return new (m_vm) PropertyNode(m_vm, propertyName, node, type); }
+    PropertyNode* createProperty(VM*, ExpressionNode* propertyName, ExpressionNode* node, PropertyNode::Type type, bool) { return new (m_vm) PropertyNode(m_vm, propertyName, node, type); }
</ins><span class="cx">     PropertyListNode* createPropertyList(const JSTokenLocation&amp; location, PropertyNode* property) { return new (m_vm) PropertyListNode(location, property); }
</span><span class="cx">     PropertyListNode* createPropertyList(const JSTokenLocation&amp; location, PropertyNode* property, PropertyListNode* tail) { return new (m_vm) PropertyListNode(location, property, tail); }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreparserParsercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/parser/Parser.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/parser/Parser.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/parser/Parser.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -245,7 +245,7 @@
</span><span class="cx">     if (m_lexer-&gt;isReparsing())
</span><span class="cx">         m_statementDepth--;
</span><span class="cx">     ScopeRef scope = currentScope();
</span><del>-    SourceElements* sourceElements = parseSourceElements&lt;CheckForStrictMode&gt;(context);
</del><ins>+    SourceElements* sourceElements = parseSourceElements(context, CheckForStrictMode);
</ins><span class="cx">     if (!sourceElements || !consume(EOFTOK)) {
</span><span class="cx">         if (hasError())
</span><span class="cx">             parseError = m_errorMessage;
</span><span class="lines">@@ -289,7 +289,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename LexerType&gt;
</span><del>-template &lt;SourceElementsMode mode, class TreeBuilder&gt; TreeSourceElements Parser&lt;LexerType&gt;::parseSourceElements(TreeBuilder&amp; context)
</del><ins>+template &lt;class TreeBuilder&gt; TreeSourceElements Parser&lt;LexerType&gt;::parseSourceElements(TreeBuilder&amp; context, SourceElementsMode mode)
</ins><span class="cx"> {
</span><span class="cx">     const unsigned lengthOfUseStrictLiteral = 12; // &quot;use strict&quot;.length
</span><span class="cx">     TreeSourceElements sourceElements = context.createSourceElements();
</span><span class="lines">@@ -446,7 +446,7 @@
</span><span class="cx">             }
</span><span class="cx">         } else {
</span><span class="cx">             lastIdent = 0;
</span><del>-            auto pattern = parseDeconstructionPattern&lt;DeconstructToVariables&gt;(context);
</del><ins>+            auto pattern = parseDeconstructionPattern(context, DeconstructToVariables);
</ins><span class="cx">             failIfFalse(pattern, &quot;Cannot parse this deconstruction pattern&quot;);
</span><span class="cx">             hasInitializer = match(EQUAL);
</span><span class="cx">             lastPattern = pattern;
</span><span class="lines">@@ -465,12 +465,12 @@
</span><span class="cx">         }
</span><span class="cx">     } while (match(COMMA));
</span><span class="cx">     if (lastIdent)
</span><del>-        lastPattern = createBindingPattern&lt;DeconstructToVariables&gt;(context, *lastIdent, 0);
</del><ins>+        lastPattern = createBindingPattern(context, DeconstructToVariables, *lastIdent, 0);
</ins><span class="cx">     return varDecls;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename LexerType&gt;
</span><del>-template &lt;DeconstructionKind kind, class TreeBuilder&gt; TreeDeconstructionPattern Parser&lt;LexerType&gt;::createBindingPattern(TreeBuilder&amp; context, const Identifier&amp; name, int depth)
</del><ins>+template &lt;class TreeBuilder&gt; TreeDeconstructionPattern Parser&lt;LexerType&gt;::createBindingPattern(TreeBuilder&amp; context, DeconstructionKind kind, const Identifier&amp; name, int depth)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(!name.isEmpty());
</span><span class="cx">     ASSERT(!name.isNull());
</span><span class="lines">@@ -524,11 +524,11 @@
</span><span class="cx"> template &lt;typename LexerType&gt;
</span><span class="cx"> template &lt;class TreeBuilder&gt; TreeDeconstructionPattern Parser&lt;LexerType&gt;::tryParseDeconstructionPatternExpression(TreeBuilder&amp; context)
</span><span class="cx"> {
</span><del>-    return parseDeconstructionPattern&lt;DeconstructToExpressions&gt;(context);
</del><ins>+    return parseDeconstructionPattern(context, DeconstructToExpressions);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename LexerType&gt;
</span><del>-template &lt;DeconstructionKind kind, class TreeBuilder&gt; TreeDeconstructionPattern Parser&lt;LexerType&gt;::parseDeconstructionPattern(TreeBuilder&amp; context, int depth)
</del><ins>+template &lt;class TreeBuilder&gt; TreeDeconstructionPattern Parser&lt;LexerType&gt;::parseDeconstructionPattern(TreeBuilder&amp; context, DeconstructionKind kind, int depth)
</ins><span class="cx"> {
</span><span class="cx">     failIfStackOverflow();
</span><span class="cx">     int nonLHSCount = m_nonLHSCount;
</span><span class="lines">@@ -547,7 +547,7 @@
</span><span class="cx">             }
</span><span class="cx">             propagateError();
</span><span class="cx">             JSTokenLocation location = m_token.m_location;
</span><del>-            auto innerPattern = parseDeconstructionPattern&lt;kind&gt;(context, depth + 1);
</del><ins>+            auto innerPattern = parseDeconstructionPattern(context, kind, depth + 1);
</ins><span class="cx">             if (kind == DeconstructToExpressions &amp;&amp; !innerPattern)
</span><span class="cx">                 return 0;
</span><span class="cx">             failIfFalse(innerPattern, &quot;Cannot parse this deconstruction pattern&quot;);
</span><span class="lines">@@ -578,9 +578,9 @@
</span><span class="cx">                 propertyName = *m_token.m_data.ident;
</span><span class="cx">                 next();
</span><span class="cx">                 if (consume(COLON))
</span><del>-                    innerPattern = parseDeconstructionPattern&lt;kind&gt;(context, depth + 1);
</del><ins>+                    innerPattern = parseDeconstructionPattern(context, kind, depth + 1);
</ins><span class="cx">                 else
</span><del>-                    innerPattern = createBindingPattern&lt;kind&gt;(context, propertyName, depth);
</del><ins>+                    innerPattern = createBindingPattern(context, kind, propertyName, depth);
</ins><span class="cx">             } else {
</span><span class="cx">                 JSTokenType tokenType = m_token.m_type;
</span><span class="cx">                 switch (m_token.m_type) {
</span><span class="lines">@@ -610,7 +610,7 @@
</span><span class="cx">                     
</span><span class="cx">                     failWithMessage(&quot;Expected a ':' prior to named property deconstruction&quot;);
</span><span class="cx">                 }
</span><del>-                innerPattern = parseDeconstructionPattern&lt;kind&gt;(context, depth + 1);
</del><ins>+                innerPattern = parseDeconstructionPattern(context, kind, depth + 1);
</ins><span class="cx">             }
</span><span class="cx">             if (kind == DeconstructToExpressions &amp;&amp; !innerPattern)
</span><span class="cx">                 return 0;
</span><span class="lines">@@ -631,7 +631,7 @@
</span><span class="cx">             semanticFailureDueToKeyword(&quot;variable name&quot;);
</span><span class="cx">             failWithMessage(&quot;Expected a parameter pattern or a ')' in parameter list&quot;);
</span><span class="cx">         }
</span><del>-        pattern = createBindingPattern&lt;kind&gt;(context, *m_token.m_data.ident, depth);
</del><ins>+        pattern = createBindingPattern(context, kind, *m_token.m_data.ident, depth);
</ins><span class="cx">         next();
</span><span class="cx">         break;
</span><span class="cx">     }
</span><span class="lines">@@ -961,7 +961,7 @@
</span><span class="cx">     TreeExpression condition = parseExpression(context);
</span><span class="cx">     failIfFalse(condition, &quot;Cannot parse switch clause&quot;);
</span><span class="cx">     consumeOrFail(COLON, &quot;Expected a ':' after switch clause expression&quot;);
</span><del>-    TreeSourceElements statements = parseSourceElements&lt;DontCheckForStrictMode&gt;(context);
</del><ins>+    TreeSourceElements statements = parseSourceElements(context, DontCheckForStrictMode);
</ins><span class="cx">     failIfFalse(statements, &quot;Cannot parse the body of a switch clause&quot;);
</span><span class="cx">     TreeClause clause = context.createClause(condition, statements);
</span><span class="cx">     TreeClauseList clauseList = context.createClauseList(clause);
</span><span class="lines">@@ -972,7 +972,7 @@
</span><span class="cx">         TreeExpression condition = parseExpression(context);
</span><span class="cx">         failIfFalse(condition, &quot;Cannot parse switch case expression&quot;);
</span><span class="cx">         consumeOrFail(COLON, &quot;Expected a ':' after switch clause expression&quot;);
</span><del>-        TreeSourceElements statements = parseSourceElements&lt;DontCheckForStrictMode&gt;(context);
</del><ins>+        TreeSourceElements statements = parseSourceElements(context, DontCheckForStrictMode);
</ins><span class="cx">         failIfFalse(statements, &quot;Cannot parse the body of a switch clause&quot;);
</span><span class="cx">         clause = context.createClause(condition, statements);
</span><span class="cx">         tail = context.createClauseList(tail, clause);
</span><span class="lines">@@ -987,7 +987,7 @@
</span><span class="cx">         return 0;
</span><span class="cx">     next();
</span><span class="cx">     consumeOrFail(COLON, &quot;Expected a ':' after switch default clause&quot;);
</span><del>-    TreeSourceElements statements = parseSourceElements&lt;DontCheckForStrictMode&gt;(context);
</del><ins>+    TreeSourceElements statements = parseSourceElements(context, DontCheckForStrictMode);
</ins><span class="cx">     failIfFalse(statements, &quot;Cannot parse the body of a switch default clause&quot;);
</span><span class="cx">     return context.createClause(0, statements);
</span><span class="cx"> }
</span><span class="lines">@@ -1065,7 +1065,7 @@
</span><span class="cx">         next();
</span><span class="cx">         return context.createBlockStatement(location, 0, start, m_lastTokenEndPosition.line);
</span><span class="cx">     }
</span><del>-    TreeSourceElements subtree = parseSourceElements&lt;DontCheckForStrictMode&gt;(context);
</del><ins>+    TreeSourceElements subtree = parseSourceElements(context, DontCheckForStrictMode);
</ins><span class="cx">     failIfFalse(subtree, &quot;Cannot parse the body of the block statement&quot;);
</span><span class="cx">     matchOrFail(CLOSEBRACE, &quot;Expected a closing '}' at the end of a block statement&quot;);
</span><span class="cx">     next();
</span><span class="lines">@@ -1143,12 +1143,12 @@
</span><span class="cx"> template &lt;typename LexerType&gt;
</span><span class="cx"> template &lt;class TreeBuilder&gt; TreeFormalParameterList Parser&lt;LexerType&gt;::parseFormalParameters(TreeBuilder&amp; context)
</span><span class="cx"> {
</span><del>-    auto parameter = parseDeconstructionPattern&lt;DeconstructToParameters&gt;(context);
</del><ins>+    auto parameter = parseDeconstructionPattern(context, DeconstructToParameters);
</ins><span class="cx">     failIfFalse(parameter, &quot;Cannot parse parameter pattern&quot;);
</span><span class="cx">     TreeFormalParameterList list = context.createFormalParameterList(parameter);
</span><span class="cx">     TreeFormalParameterList tail = list;
</span><span class="cx">     while (consume(COMMA)) {
</span><del>-        parameter = parseDeconstructionPattern&lt;DeconstructToParameters&gt;(context);
</del><ins>+        parameter = parseDeconstructionPattern(context, DeconstructToParameters);
</ins><span class="cx">         failIfFalse(parameter, &quot;Cannot parse parameter pattern&quot;);
</span><span class="cx">         tail = context.createFormalParameterList(tail, parameter);
</span><span class="cx">     }
</span><span class="lines">@@ -1169,7 +1169,7 @@
</span><span class="cx">     DepthManager statementDepth(&amp;m_statementDepth);
</span><span class="cx">     m_statementDepth = 0;
</span><span class="cx">     typename TreeBuilder::FunctionBodyBuilder bodyBuilder(const_cast&lt;VM*&gt;(m_vm), m_lexer.get());
</span><del>-    failIfFalse(parseSourceElements&lt;CheckForStrictMode&gt;(bodyBuilder), &quot;Cannot parse body of this function&quot;);
</del><ins>+    failIfFalse(parseSourceElements(bodyBuilder, CheckForStrictMode), &quot;Cannot parse body of this function&quot;);
</ins><span class="cx">     unsigned endColumn = tokenColumn();
</span><span class="cx">     return context.createFunctionBody(startLocation, tokenLocation(), startColumn, endColumn, strictMode());
</span><span class="cx"> }
</span><span class="lines">@@ -1189,7 +1189,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename LexerType&gt;
</span><del>-template &lt;FunctionRequirements requirements, FunctionParseMode mode, bool nameIsInContainingScope, class TreeBuilder&gt; bool Parser&lt;LexerType&gt;::parseFunctionInfo(TreeBuilder&amp; context, const Identifier*&amp; name, TreeFormalParameterList&amp; parameters, TreeFunctionBody&amp; body, unsigned&amp; openBraceOffset, unsigned&amp; closeBraceOffset, int&amp; bodyStartLine, unsigned&amp; bodyStartColumn)
</del><ins>+template &lt;class TreeBuilder&gt; bool Parser&lt;LexerType&gt;::parseFunctionInfo(TreeBuilder&amp; context, FunctionRequirements requirements, FunctionParseMode mode, bool nameIsInContainingScope, const Identifier*&amp; name, TreeFormalParameterList&amp; parameters, TreeFunctionBody&amp; body, unsigned&amp; openBraceOffset, unsigned&amp; closeBraceOffset, int&amp; bodyStartLine, unsigned&amp; bodyStartColumn)
</ins><span class="cx"> {
</span><span class="cx">     AutoPopScopeRef functionScope(this, pushScope());
</span><span class="cx">     functionScope-&gt;setIsFunction();
</span><span class="lines">@@ -1311,7 +1311,7 @@
</span><span class="cx">     unsigned closeBraceOffset = 0;
</span><span class="cx">     int bodyStartLine = 0;
</span><span class="cx">     unsigned bodyStartColumn = 0;
</span><del>-    failIfFalse((parseFunctionInfo&lt;FunctionNeedsName, FunctionMode, true&gt;(context, name, parameters, body, openBraceOffset, closeBraceOffset, bodyStartLine, bodyStartColumn)), &quot;Cannot parse this function&quot;);
</del><ins>+    failIfFalse((parseFunctionInfo(context, FunctionNeedsName, FunctionMode, true, name, parameters, body, openBraceOffset, closeBraceOffset, bodyStartLine, bodyStartColumn)), &quot;Cannot parse this function&quot;);
</ins><span class="cx">     failIfFalse(name, &quot;Function statements must have a name&quot;);
</span><span class="cx">     failIfFalseIfStrict(declareVariable(name), &quot;Cannot declare a function named '&quot;, name-&gt;impl(), &quot;' in strict mode&quot;);
</span><span class="cx">     return context.createFuncDeclStatement(location, name, body, parameters, openBraceOffset, closeBraceOffset, bodyStartLine, m_lastTokenEndPosition.line, bodyStartColumn);
</span><span class="lines">@@ -1673,7 +1673,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename LexerType&gt;
</span><del>-template &lt;bool complete, class TreeBuilder&gt; TreeProperty Parser&lt;LexerType&gt;::parseProperty(TreeBuilder&amp; context)
</del><ins>+template &lt;class TreeBuilder&gt; TreeProperty Parser&lt;LexerType&gt;::parseProperty(TreeBuilder&amp; context, bool complete)
</ins><span class="cx"> {
</span><span class="cx">     bool wasIdent = false;
</span><span class="cx">     switch (m_token.m_type) {
</span><span class="lines">@@ -1691,7 +1691,7 @@
</span><span class="cx">             next();
</span><span class="cx">             TreeExpression node = parseAssignmentExpression(context);
</span><span class="cx">             failIfFalse(node, &quot;Cannot parse expression for property declaration&quot;);
</span><del>-            return context.template createProperty&lt;complete&gt;(ident, node, PropertyNode::Constant);
</del><ins>+            return context.createProperty(ident, node, PropertyNode::Constant, complete);
</ins><span class="cx">         }
</span><span class="cx">         failIfFalse(wasIdent, &quot;Expected an identifier as property name&quot;);
</span><span class="cx">         const Identifier* accessorName = 0;
</span><span class="lines">@@ -1720,14 +1720,14 @@
</span><span class="cx">         next();
</span><span class="cx">         if (type == PropertyNode::Getter) {
</span><span class="cx">             failIfFalse(match(OPENPAREN), &quot;Expected a parameter list for getter definition&quot;);
</span><del>-            failIfFalse((parseFunctionInfo&lt;FunctionNoRequirements, GetterMode, false&gt;(context, accessorName, parameters, body, openBraceOffset, closeBraceOffset, bodyStartLine, bodyStartColumn)), &quot;Cannot parse getter definition&quot;);
</del><ins>+            failIfFalse((parseFunctionInfo(context, FunctionNoRequirements, GetterMode, false, accessorName, parameters, body, openBraceOffset, closeBraceOffset, bodyStartLine, bodyStartColumn)), &quot;Cannot parse getter definition&quot;);
</ins><span class="cx">         } else {
</span><span class="cx">             failIfFalse(match(OPENPAREN), &quot;Expected a parameter list for setter definition&quot;);
</span><del>-            failIfFalse((parseFunctionInfo&lt;FunctionNoRequirements, SetterMode, false&gt;(context, accessorName, parameters, body, openBraceOffset, closeBraceOffset, bodyStartLine, bodyStartColumn)), &quot;Cannot parse setter definition&quot;);
</del><ins>+            failIfFalse((parseFunctionInfo(context, FunctionNoRequirements, SetterMode, false, accessorName, parameters, body, openBraceOffset, closeBraceOffset, bodyStartLine, bodyStartColumn)), &quot;Cannot parse setter definition&quot;);
</ins><span class="cx">         }
</span><span class="cx">         if (stringPropertyName)
</span><del>-            return context.template createGetterOrSetterProperty&lt;complete&gt;(location, type, stringPropertyName, parameters, body, openBraceOffset, closeBraceOffset, bodyStartLine, m_lastTokenEndPosition.line, bodyStartColumn);
-        return context.template createGetterOrSetterProperty&lt;complete&gt;(const_cast&lt;VM*&gt;(m_vm), location, type, numericPropertyName, parameters, body, openBraceOffset, closeBraceOffset, bodyStartLine, m_lastTokenEndPosition.line, bodyStartColumn);
</del><ins>+            return context.createGetterOrSetterProperty(location, type, complete, stringPropertyName, parameters, body, openBraceOffset, closeBraceOffset, bodyStartLine, m_lastTokenEndPosition.line, bodyStartColumn);
+        return context.createGetterOrSetterProperty(const_cast&lt;VM*&gt;(m_vm), location, type, complete, numericPropertyName, parameters, body, openBraceOffset, closeBraceOffset, bodyStartLine, m_lastTokenEndPosition.line, bodyStartColumn);
</ins><span class="cx">     }
</span><span class="cx">     case NUMBER: {
</span><span class="cx">         double propertyName = m_token.m_data.doubleValue;
</span><span class="lines">@@ -1735,7 +1735,7 @@
</span><span class="cx">         consumeOrFail(COLON, &quot;Expected ':' after property name&quot;);
</span><span class="cx">         TreeExpression node = parseAssignmentExpression(context);
</span><span class="cx">         failIfFalse(node, &quot;Cannot parse expression for property declaration&quot;);
</span><del>-        return context.template createProperty&lt;complete&gt;(const_cast&lt;VM*&gt;(m_vm), propertyName, node, PropertyNode::Constant);
</del><ins>+        return context.createProperty(const_cast&lt;VM*&gt;(m_vm), propertyName, node, PropertyNode::Constant, complete);
</ins><span class="cx">     }
</span><span class="cx">     case OPENBRACKET: {
</span><span class="cx">         next();
</span><span class="lines">@@ -1746,7 +1746,7 @@
</span><span class="cx">         consumeOrFail(COLON, &quot;Expected ':' after property name&quot;);
</span><span class="cx">         TreeExpression node = parseAssignmentExpression(context);
</span><span class="cx">         failIfFalse(node, &quot;Cannot parse expression for property declaration&quot;);
</span><del>-        return context.template createProperty&lt;complete&gt;(const_cast&lt;VM*&gt;(m_vm), propertyName, node, PropertyNode::Constant);
</del><ins>+        return context.createProperty(const_cast&lt;VM*&gt;(m_vm), propertyName, node, PropertyNode::Constant, complete);
</ins><span class="cx">     }
</span><span class="cx">     default:
</span><span class="cx">         failIfFalse(m_token.m_type &amp; KeywordTokenFlag, &quot;Expected a property name&quot;);
</span><span class="lines">@@ -1768,7 +1768,7 @@
</span><span class="cx">         return context.createObjectLiteral(location);
</span><span class="cx">     }
</span><span class="cx">     
</span><del>-    TreeProperty property = parseProperty&lt;false&gt;(context);
</del><ins>+    TreeProperty property = parseProperty(context, false);
</ins><span class="cx">     failIfFalse(property, &quot;Cannot parse object literal property&quot;);
</span><span class="cx">     if (!m_syntaxAlreadyValidated &amp;&amp; context.getType(property) != PropertyNode::Constant) {
</span><span class="cx">         restoreSavePoint(savePoint);
</span><span class="lines">@@ -1782,7 +1782,7 @@
</span><span class="cx">         if (match(CLOSEBRACE))
</span><span class="cx">             break;
</span><span class="cx">         JSTokenLocation propertyLocation(tokenLocation());
</span><del>-        property = parseProperty&lt;false&gt;(context);
</del><ins>+        property = parseProperty(context, false);
</ins><span class="cx">         failIfFalse(property, &quot;Cannot parse object literal property&quot;);
</span><span class="cx">         if (!m_syntaxAlreadyValidated &amp;&amp; context.getType(property) != PropertyNode::Constant) {
</span><span class="cx">             restoreSavePoint(savePoint);
</span><span class="lines">@@ -1812,7 +1812,7 @@
</span><span class="cx">         return context.createObjectLiteral(location);
</span><span class="cx">     }
</span><span class="cx">     
</span><del>-    TreeProperty property = parseProperty&lt;true&gt;(context);
</del><ins>+    TreeProperty property = parseProperty(context, true);
</ins><span class="cx">     failIfFalse(property, &quot;Cannot parse object literal property&quot;);
</span><span class="cx">     
</span><span class="cx">     typedef HashMap&lt;RefPtr&lt;StringImpl&gt;, unsigned, IdentifierRepHash&gt; ObjectValidationMap;
</span><span class="lines">@@ -1829,7 +1829,7 @@
</span><span class="cx">         if (match(CLOSEBRACE))
</span><span class="cx">             break;
</span><span class="cx">         JSTokenLocation propertyLocation(tokenLocation());
</span><del>-        property = parseProperty&lt;true&gt;(context);
</del><ins>+        property = parseProperty(context, true);
</ins><span class="cx">         failIfFalse(property, &quot;Cannot parse object literal property&quot;);
</span><span class="cx">         if (!m_syntaxAlreadyValidated &amp;&amp; context.getName(property)) {
</span><span class="cx">             ObjectValidationMap::AddResult propertyEntry = objectValidator.add(context.getName(property)-&gt;impl(), context.getType(property));
</span><span class="lines">@@ -2076,7 +2076,7 @@
</span><span class="cx">         unsigned bodyStartColumn = 0;
</span><span class="cx">         location = tokenLocation();
</span><span class="cx">         next();
</span><del>-        failIfFalse((parseFunctionInfo&lt;FunctionNoRequirements, FunctionMode, false&gt;(context, name, parameters, body, openBraceOffset, closeBraceOffset, bodyStartLine, bodyStartColumn)), &quot;Cannot parse function expression&quot;);
</del><ins>+        failIfFalse((parseFunctionInfo(context, FunctionNoRequirements, FunctionMode, false, name, parameters, body, openBraceOffset, closeBraceOffset, bodyStartLine, bodyStartColumn)), &quot;Cannot parse function expression&quot;);
</ins><span class="cx">         base = context.createFunctionExpr(location, name, body, parameters, openBraceOffset, closeBraceOffset, bodyStartLine, m_lastTokenEndPosition.line, bodyStartColumn);
</span><span class="cx">     } else
</span><span class="cx">         base = parsePrimaryExpression(context);
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreparserParserh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/parser/Parser.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/parser/Parser.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/parser/Parser.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -699,7 +699,7 @@
</span><span class="cx">         return result;
</span><span class="cx">     }
</span><span class="cx">     
</span><del>-    template &lt;SourceElementsMode mode, class TreeBuilder&gt; TreeSourceElements parseSourceElements(TreeBuilder&amp;);
</del><ins>+    template &lt;class TreeBuilder&gt; TreeSourceElements parseSourceElements(TreeBuilder&amp;, SourceElementsMode);
</ins><span class="cx">     template &lt;class TreeBuilder&gt; TreeStatement parseStatement(TreeBuilder&amp;, const Identifier*&amp; directive, unsigned* directiveLiteralLength = 0);
</span><span class="cx">     template &lt;class TreeBuilder&gt; TreeStatement parseFunctionDeclaration(TreeBuilder&amp;);
</span><span class="cx">     template &lt;class TreeBuilder&gt; TreeStatement parseVarDeclaration(TreeBuilder&amp;);
</span><span class="lines">@@ -720,7 +720,7 @@
</span><span class="cx">     template &lt;class TreeBuilder&gt; TreeStatement parseExpressionStatement(TreeBuilder&amp;);
</span><span class="cx">     template &lt;class TreeBuilder&gt; TreeStatement parseExpressionOrLabelStatement(TreeBuilder&amp;);
</span><span class="cx">     template &lt;class TreeBuilder&gt; TreeStatement parseIfStatement(TreeBuilder&amp;);
</span><del>-    template &lt;class TreeBuilder&gt; ALWAYS_INLINE TreeStatement parseBlockStatement(TreeBuilder&amp;);
</del><ins>+    template &lt;class TreeBuilder&gt; TreeStatement parseBlockStatement(TreeBuilder&amp;);
</ins><span class="cx">     template &lt;class TreeBuilder&gt; TreeExpression parseExpression(TreeBuilder&amp;);
</span><span class="cx">     template &lt;class TreeBuilder&gt; TreeExpression parseAssignmentExpression(TreeBuilder&amp;);
</span><span class="cx">     template &lt;class TreeBuilder&gt; ALWAYS_INLINE TreeExpression parseConditionalExpression(TreeBuilder&amp;);
</span><span class="lines">@@ -730,19 +730,19 @@
</span><span class="cx">     template &lt;class TreeBuilder&gt; ALWAYS_INLINE TreeExpression parsePrimaryExpression(TreeBuilder&amp;);
</span><span class="cx">     template &lt;class TreeBuilder&gt; ALWAYS_INLINE TreeExpression parseArrayLiteral(TreeBuilder&amp;);
</span><span class="cx">     template &lt;class TreeBuilder&gt; ALWAYS_INLINE TreeExpression parseObjectLiteral(TreeBuilder&amp;);
</span><del>-    template &lt;class TreeBuilder&gt; ALWAYS_INLINE TreeExpression parseStrictObjectLiteral(TreeBuilder&amp;);
</del><ins>+    template &lt;class TreeBuilder&gt; NEVER_INLINE TreeExpression parseStrictObjectLiteral(TreeBuilder&amp;);
</ins><span class="cx">     enum SpreadMode { AllowSpread, DontAllowSpread };
</span><span class="cx">     template &lt;class TreeBuilder&gt; ALWAYS_INLINE TreeArguments parseArguments(TreeBuilder&amp;, SpreadMode);
</span><del>-    template &lt;bool strict, class TreeBuilder&gt; ALWAYS_INLINE TreeProperty parseProperty(TreeBuilder&amp;);
</del><ins>+    template &lt;class TreeBuilder&gt; TreeProperty parseProperty(TreeBuilder&amp;, bool strict);
</ins><span class="cx">     template &lt;class TreeBuilder&gt; ALWAYS_INLINE TreeFunctionBody parseFunctionBody(TreeBuilder&amp;);
</span><span class="cx">     template &lt;class TreeBuilder&gt; ALWAYS_INLINE TreeFormalParameterList parseFormalParameters(TreeBuilder&amp;);
</span><del>-    template &lt;class TreeBuilder&gt; ALWAYS_INLINE TreeExpression parseVarDeclarationList(TreeBuilder&amp;, int&amp; declarations, TreeDeconstructionPattern&amp; lastPattern, TreeExpression&amp; lastInitializer, JSTextPosition&amp; identStart, JSTextPosition&amp; initStart, JSTextPosition&amp; initEnd);
-    template &lt;class TreeBuilder&gt; ALWAYS_INLINE TreeConstDeclList parseConstDeclarationList(TreeBuilder&amp;);
</del><ins>+    template &lt;class TreeBuilder&gt; TreeExpression parseVarDeclarationList(TreeBuilder&amp;, int&amp; declarations, TreeDeconstructionPattern&amp; lastPattern, TreeExpression&amp; lastInitializer, JSTextPosition&amp; identStart, JSTextPosition&amp; initStart, JSTextPosition&amp; initEnd);
+    template &lt;class TreeBuilder&gt; NEVER_INLINE TreeConstDeclList parseConstDeclarationList(TreeBuilder&amp;);
</ins><span class="cx"> 
</span><del>-    template &lt;DeconstructionKind, class TreeBuilder&gt; ALWAYS_INLINE TreeDeconstructionPattern createBindingPattern(TreeBuilder&amp;, const Identifier&amp;, int depth);
-    template &lt;DeconstructionKind, class TreeBuilder&gt; TreeDeconstructionPattern parseDeconstructionPattern(TreeBuilder&amp;, int depth = 0);
</del><ins>+    template &lt;class TreeBuilder&gt; NEVER_INLINE TreeDeconstructionPattern createBindingPattern(TreeBuilder&amp;, DeconstructionKind, const Identifier&amp;, int depth);
+    template &lt;class TreeBuilder&gt; NEVER_INLINE TreeDeconstructionPattern parseDeconstructionPattern(TreeBuilder&amp;, DeconstructionKind, int depth = 0);
</ins><span class="cx">     template &lt;class TreeBuilder&gt; NEVER_INLINE TreeDeconstructionPattern tryParseDeconstructionPatternExpression(TreeBuilder&amp;);
</span><del>-    template &lt;FunctionRequirements, FunctionParseMode, bool nameIsInContainingScope, class TreeBuilder&gt; bool parseFunctionInfo(TreeBuilder&amp;, const Identifier*&amp;, TreeFormalParameterList&amp;, TreeFunctionBody&amp;, unsigned&amp; openBraceOffset, unsigned&amp; closeBraceOffset, int&amp; bodyStartLine, unsigned&amp; bodyStartColumn);
</del><ins>+    template &lt;class TreeBuilder&gt; NEVER_INLINE bool parseFunctionInfo(TreeBuilder&amp;, FunctionRequirements, FunctionParseMode, bool nameIsInContainingScope, const Identifier*&amp;, TreeFormalParameterList&amp;, TreeFunctionBody&amp;, unsigned&amp; openBraceOffset, unsigned&amp; closeBraceOffset, int&amp; bodyStartLine, unsigned&amp; bodyStartColumn);
</ins><span class="cx">     ALWAYS_INLINE int isBinaryOperator(JSTokenType);
</span><span class="cx">     bool allowAutomaticSemicolon();
</span><span class="cx">     
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreparserParserArenah"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/parser/ParserArena.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/parser/ParserArena.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/parser/ParserArena.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -27,6 +27,7 @@
</span><span class="cx"> #define ParserArena_h
</span><span class="cx"> 
</span><span class="cx"> #include &quot;Identifier.h&quot;
</span><ins>+#include &lt;array&gt;
</ins><span class="cx"> #include &lt;wtf/SegmentedVector.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span><span class="lines">@@ -64,8 +65,8 @@
</span><span class="cx"> 
</span><span class="cx">     private:
</span><span class="cx">         IdentifierVector m_identifiers;
</span><del>-        FixedArray&lt;Identifier*, MaximumCachableCharacter&gt; m_shortIdentifiers;
-        FixedArray&lt;Identifier*, MaximumCachableCharacter&gt; m_recentIdentifiers;
</del><ins>+        std::array&lt;Identifier*, MaximumCachableCharacter&gt; m_shortIdentifiers;
+        std::array&lt;Identifier*, MaximumCachableCharacter&gt; m_recentIdentifiers;
</ins><span class="cx">     };
</span><span class="cx"> 
</span><span class="cx">     template &lt;typename T&gt;
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreparserSyntaxCheckerh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/parser/SyntaxChecker.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/parser/SyntaxChecker.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/parser/SyntaxChecker.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -160,20 +160,20 @@
</span><span class="cx">     ExpressionType createSpreadExpression(const JSTokenLocation&amp;, ExpressionType, int, int, int) { return 1; }
</span><span class="cx">     int createArgumentsList(const JSTokenLocation&amp;, int) { return 1; }
</span><span class="cx">     int createArgumentsList(const JSTokenLocation&amp;, int, int) { return 1; }
</span><del>-    template &lt;bool complete&gt; Property createProperty(const Identifier* name, int, PropertyNode::Type type)
</del><ins>+    Property createProperty(const Identifier* name, int, PropertyNode::Type type, bool complete)
</ins><span class="cx">     {
</span><span class="cx">         if (!complete)
</span><span class="cx">             return Property(type);
</span><span class="cx">         ASSERT(name);
</span><span class="cx">         return Property(name, type);
</span><span class="cx">     }
</span><del>-    template &lt;bool complete&gt; Property createProperty(VM* vm, double name, int, PropertyNode::Type type)
</del><ins>+    Property createProperty(VM* vm, double name, int, PropertyNode::Type type, bool complete)
</ins><span class="cx">     {
</span><span class="cx">         if (!complete)
</span><span class="cx">             return Property(type);
</span><span class="cx">         return Property(&amp;vm-&gt;parserArena-&gt;identifierArena().makeNumericIdentifier(vm, name), type);
</span><span class="cx">     }
</span><del>-    template &lt;bool complete&gt; Property createProperty(VM*, ExpressionNode*, int, PropertyNode::Type type)
</del><ins>+    Property createProperty(VM*, ExpressionNode*, int, PropertyNode::Type type, bool)
</ins><span class="cx">     {
</span><span class="cx">         return Property(type);
</span><span class="cx">     }
</span><span class="lines">@@ -212,14 +212,14 @@
</span><span class="cx">     int createDebugger(const JSTokenLocation&amp;, int, int) { return 1; }
</span><span class="cx">     int createConstStatement(const JSTokenLocation&amp;, int, int, int) { return 1; }
</span><span class="cx">     int appendConstDecl(const JSTokenLocation&amp;, int, const Identifier*, int) { return 1; }
</span><del>-    template &lt;bool strict&gt; Property createGetterOrSetterProperty(const JSTokenLocation&amp;, PropertyNode::Type type, const Identifier* name, int, int, int, int, int, int, int)
</del><ins>+    Property createGetterOrSetterProperty(const JSTokenLocation&amp;, PropertyNode::Type type, bool strict, const Identifier* name, int, int, int, int, int, int, int)
</ins><span class="cx">     {
</span><span class="cx">         ASSERT(name);
</span><span class="cx">         if (!strict)
</span><span class="cx">             return Property(type);
</span><span class="cx">         return Property(name, type);
</span><span class="cx">     }
</span><del>-    template &lt;bool strict&gt; Property createGetterOrSetterProperty(VM* vm, const JSTokenLocation&amp;, PropertyNode::Type type, double name, int, int, int, int, int, int, int)
</del><ins>+    Property createGetterOrSetterProperty(VM* vm, const JSTokenLocation&amp;, PropertyNode::Type type, bool strict, double name, int, int, int, int, int, int, int)
</ins><span class="cx">     {
</span><span class="cx">         if (!strict)
</span><span class="cx">             return Property(type);
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreruntimeCodeCacheh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/runtime/CodeCache.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/runtime/CodeCache.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/runtime/CodeCache.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -32,7 +32,6 @@
</span><span class="cx"> #include &quot;Strong.h&quot;
</span><span class="cx"> #include &quot;WeakRandom.h&quot;
</span><span class="cx"> #include &lt;wtf/CurrentTime.h&gt;
</span><del>-#include &lt;wtf/FixedArray.h&gt;
</del><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><span class="cx"> #include &lt;wtf/PassOwnPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/RandomNumber.h&gt;
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreruntimeDateInstanceCacheh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/runtime/DateInstanceCache.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/runtime/DateInstanceCache.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/runtime/DateInstanceCache.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -28,7 +28,7 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSCJSValue.h&quot;
</span><span class="cx"> #include &quot;JSDateMath.h&quot;
</span><del>-#include &lt;wtf/FixedArray.h&gt;
</del><ins>+#include &lt;array&gt;
</ins><span class="cx"> #include &lt;wtf/HashFunctions.h&gt;
</span><span class="cx"> #include &lt;wtf/PassRefPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/RefCounted.h&gt;
</span><span class="lines">@@ -86,7 +86,7 @@
</span><span class="cx"> 
</span><span class="cx">         CacheEntry&amp; lookup(double d) { return m_cache[WTF::FloatHash&lt;double&gt;::hash(d) &amp; (cacheSize - 1)]; }
</span><span class="cx"> 
</span><del>-        FixedArray&lt;CacheEntry, cacheSize&gt; m_cache;
</del><ins>+        std::array&lt;CacheEntry, cacheSize&gt; m_cache;
</ins><span class="cx">     };
</span><span class="cx"> 
</span><span class="cx"> } // namespace JSC
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreruntimeJSGlobalObjectcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/runtime/JSGlobalObject.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/runtime/JSGlobalObject.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/runtime/JSGlobalObject.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -428,7 +428,7 @@
</span><span class="cx">     putDirectWithoutTransition(vm, vm.propertyNames-&gt;JSON, JSONObject::create(vm, JSONObject::createStructure(vm, this, m_objectPrototype.get())), DontEnum);
</span><span class="cx">     putDirectWithoutTransition(vm, vm.propertyNames-&gt;Math, MathObject::create(vm, this, MathObject::createStructure(vm, this, m_objectPrototype.get())), DontEnum);
</span><span class="cx">     
</span><del>-    FixedArray&lt;InternalFunction*, NUMBER_OF_TYPED_ARRAY_TYPES&gt; typedArrayConstructors;
</del><ins>+    std::array&lt;InternalFunction*, NUMBER_OF_TYPED_ARRAY_TYPES&gt; typedArrayConstructors;
</ins><span class="cx">     typedArrayConstructors[toIndex(TypeInt8)] = JSInt8ArrayConstructor::create(vm, JSInt8ArrayConstructor::createStructure(vm, this, m_functionPrototype.get()), m_typedArrays[toIndex(TypeInt8)].prototype.get(), &quot;Int8Array&quot;);
</span><span class="cx">     typedArrayConstructors[toIndex(TypeInt16)] = JSInt16ArrayConstructor::create(vm, JSInt16ArrayConstructor::createStructure(vm, this, m_functionPrototype.get()), m_typedArrays[toIndex(TypeInt16)].prototype.get(), &quot;Int16Array&quot;);
</span><span class="cx">     typedArrayConstructors[toIndex(TypeInt32)] = JSInt32ArrayConstructor::create(vm, JSInt32ArrayConstructor::createStructure(vm, this, m_functionPrototype.get()), m_typedArrays[toIndex(TypeInt32)].prototype.get(), &quot;Int32Array&quot;);
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreruntimeJSGlobalObjecth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/runtime/JSGlobalObject.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/runtime/JSGlobalObject.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/runtime/JSGlobalObject.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -37,6 +37,7 @@
</span><span class="cx"> #include &quot;VM.h&quot;
</span><span class="cx"> #include &quot;Watchpoint.h&quot;
</span><span class="cx"> #include &lt;JavaScriptCore/JSBase.h&gt;
</span><ins>+#include &lt;array&gt;
</ins><span class="cx"> #include &lt;wtf/HashSet.h&gt;
</span><span class="cx"> #include &lt;wtf/OwnPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/PassRefPtr.h&gt;
</span><span class="lines">@@ -227,7 +228,7 @@
</span><span class="cx">         WriteBarrier&lt;Structure&gt; structure;
</span><span class="cx">     };
</span><span class="cx">     
</span><del>-    FixedArray&lt;TypedArrayData, NUMBER_OF_TYPED_ARRAY_TYPES&gt; m_typedArrays;
</del><ins>+    std::array&lt;TypedArrayData, NUMBER_OF_TYPED_ARRAY_TYPES&gt; m_typedArrays;
</ins><span class="cx">         
</span><span class="cx">     void* m_specialPointers[Special::TableSize]; // Special pointers used by the LLInt and JIT.
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreruntimeJSStringh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/runtime/JSString.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/runtime/JSString.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/runtime/JSString.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -22,12 +22,14 @@
</span><span class="cx"> 
</span><span class="cx"> #ifndef JSString_h
</span><span class="cx"> #define JSString_h
</span><ins>+
</ins><span class="cx"> #include &quot;CallFrame.h&quot;
</span><span class="cx"> #include &quot;CommonIdentifiers.h&quot;
</span><span class="cx"> #include &quot;Identifier.h&quot;
</span><span class="cx"> #include &quot;PropertyDescriptor.h&quot;
</span><span class="cx"> #include &quot;PropertySlot.h&quot;
</span><span class="cx"> #include &quot;Structure.h&quot;
</span><ins>+#include &lt;array&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span><span class="cx"> 
</span><span class="lines">@@ -322,7 +324,7 @@
</span><span class="cx">             
</span><span class="cx">         JS_EXPORT_PRIVATE JSString* getIndexSlowCase(ExecState*, unsigned);
</span><span class="cx"> 
</span><del>-        mutable FixedArray&lt;WriteBarrier&lt;JSString&gt;, s_maxInternalRopeLength&gt; m_fibers;
</del><ins>+        mutable std::array&lt;WriteBarrier&lt;JSString&gt;, s_maxInternalRopeLength&gt; m_fibers;
</ins><span class="cx">     };
</span><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreruntimeLiteralParserh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/runtime/LiteralParser.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/runtime/LiteralParser.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/runtime/LiteralParser.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -29,6 +29,7 @@
</span><span class="cx"> #include &quot;Identifier.h&quot;
</span><span class="cx"> #include &quot;JSCJSValue.h&quot;
</span><span class="cx"> #include &quot;JSGlobalObjectFunctions.h&quot;
</span><ins>+#include &lt;array&gt;
</ins><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span><span class="lines">@@ -155,8 +156,8 @@
</span><span class="cx">     ParserMode m_mode;
</span><span class="cx">     String m_parseErrorMessage;
</span><span class="cx">     static unsigned const MaximumCachableCharacter = 128;
</span><del>-    FixedArray&lt;Identifier, MaximumCachableCharacter&gt; m_shortIdentifiers;
-    FixedArray&lt;Identifier, MaximumCachableCharacter&gt; m_recentIdentifiers;
</del><ins>+    std::array&lt;Identifier, MaximumCachableCharacter&gt; m_shortIdentifiers;
+    std::array&lt;Identifier, MaximumCachableCharacter&gt; m_recentIdentifiers;
</ins><span class="cx">     ALWAYS_INLINE const Identifier makeIdentifier(const LChar* characters, size_t length);
</span><span class="cx">     ALWAYS_INLINE const Identifier makeIdentifier(const UChar* characters, size_t length);
</span><span class="cx">     };
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreruntimeNumericStringsh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/runtime/NumericStrings.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/runtime/NumericStrings.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/runtime/NumericStrings.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -26,7 +26,7 @@
</span><span class="cx"> #ifndef NumericStrings_h
</span><span class="cx"> #define NumericStrings_h
</span><span class="cx"> 
</span><del>-#include &lt;wtf/FixedArray.h&gt;
</del><ins>+#include &lt;array&gt;
</ins><span class="cx"> #include &lt;wtf/HashFunctions.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -87,10 +87,10 @@
</span><span class="cx">             return smallIntCache[i];
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        FixedArray&lt;CacheEntry&lt;double&gt;, cacheSize&gt; doubleCache;
-        FixedArray&lt;CacheEntry&lt;int&gt;, cacheSize&gt; intCache;
-        FixedArray&lt;CacheEntry&lt;unsigned&gt;, cacheSize&gt; unsignedCache;
-        FixedArray&lt;String, cacheSize&gt; smallIntCache;
</del><ins>+        std::array&lt;CacheEntry&lt;double&gt;, cacheSize&gt; doubleCache;
+        std::array&lt;CacheEntry&lt;int&gt;, cacheSize&gt; intCache;
+        std::array&lt;CacheEntry&lt;unsigned&gt;, cacheSize&gt; unsignedCache;
+        std::array&lt;String, cacheSize&gt; smallIntCache;
</ins><span class="cx">     };
</span><span class="cx"> 
</span><span class="cx"> } // namespace JSC
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreruntimeRegExpCacheh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/runtime/RegExpCache.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/runtime/RegExpCache.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/runtime/RegExpCache.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -30,7 +30,7 @@
</span><span class="cx"> #include &quot;Strong.h&quot;
</span><span class="cx"> #include &quot;Weak.h&quot;
</span><span class="cx"> #include &quot;WeakInlines.h&quot;
</span><del>-#include &lt;wtf/FixedArray.h&gt;
</del><ins>+#include &lt;array&gt;
</ins><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="cx"> 
</span><span class="cx"> #ifndef RegExpCache_h
</span><span class="lines">@@ -58,7 +58,7 @@
</span><span class="cx">     void addToStrongCache(RegExp*);
</span><span class="cx">     RegExpCacheMap m_weakCache; // Holds all regular expressions currently live.
</span><span class="cx">     int m_nextEntryInStrongCache;
</span><del>-    WTF::FixedArray&lt;Strong&lt;RegExp&gt;, maxStrongCacheableEntries&gt; m_strongCache; // Holds a select few regular expressions that have compiled and executed
</del><ins>+    std::array&lt;Strong&lt;RegExp&gt;, maxStrongCacheableEntries&gt; m_strongCache; // Holds a select few regular expressions that have compiled and executed
</ins><span class="cx">     VM* m_vm;
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreruntimeSmallStringsh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/runtime/SmallStrings.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/runtime/SmallStrings.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/runtime/SmallStrings.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -27,8 +27,6 @@
</span><span class="cx"> #define SmallStrings_h
</span><span class="cx"> 
</span><span class="cx"> #include &quot;WriteBarrier.h&quot;
</span><del>-
-#include &lt;wtf/FixedArray.h&gt;
</del><span class="cx"> #include &lt;wtf/Noncopyable.h&gt;
</span><span class="cx"> #include &lt;wtf/OwnPtr.h&gt;
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreruntimeVMh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/runtime/VM.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/runtime/VM.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/runtime/VM.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -488,6 +488,7 @@
</span><span class="cx">     private:
</span><span class="cx">         friend class LLIntOffsetsExtractor;
</span><span class="cx">         friend class ClearExceptionScope;
</span><ins>+        friend class RecursiveAllocationScope;
</ins><span class="cx">         
</span><span class="cx">         VM(VMType, HeapType);
</span><span class="cx">         static VM*&amp; sharedInstanceInternal();
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoretestRegExpcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/testRegExp.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/testRegExp.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/JavaScriptCore/testRegExp.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -147,7 +147,7 @@
</span><span class="cx"> // be in a separate main function because the realMain function requires object
</span><span class="cx"> // unwinding.
</span><span class="cx"> 
</span><del>-#if COMPILER(MSVC) &amp;&amp; !COMPILER(INTEL) &amp;&amp; !defined(_DEBUG) &amp;&amp; !OS(WINCE)
</del><ins>+#if COMPILER(MSVC) &amp;&amp; !defined(_DEBUG) &amp;&amp; !OS(WINCE)
</ins><span class="cx"> #define TRY       __try {
</span><span class="cx"> #define EXCEPT(x) } __except (EXCEPTION_EXECUTE_HANDLER) { x; }
</span><span class="cx"> #else
</span></span></pre></div>
<a id="branchesjsCStackSourcePlatformChangeLog"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/Platform/ChangeLog (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/Platform/ChangeLog        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/Platform/ChangeLog        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,3 +1,9 @@
</span><ins>+2014-01-23  Mark Hahnenberg  &lt;mhahnenberg@apple.com&gt;
+
+        Merge branch up to ToT r160556.
+
+        * GNUmakefile.am:
+
</ins><span class="cx"> 2013-12-02  Thiago de Barros Lacerda  &lt;thiago.lacerda@openbossa.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Nix Upstream: Updating Platform files
</span></span></pre></div>
<a id="branchesjsCStackSourcePlatformGNUmakefileam"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/Platform/GNUmakefile.am (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/Platform/GNUmakefile.am        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/Platform/GNUmakefile.am        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -28,6 +28,7 @@
</span><span class="cx">         -I$(srcdir)/Source/WebCore/platform/audio \
</span><span class="cx">         -I$(srcdir)/Source/WebCore/platform/cairo \
</span><span class="cx">         -I$(srcdir)/Source/WebCore/platform/geoclue \
</span><ins>+        -I$(srcdir)/Source/WebCore/platform/glib \
</ins><span class="cx">         -I$(srcdir)/Source/WebCore/platform/graphics \
</span><span class="cx">         -I$(srcdir)/Source/WebCore/platform/graphics/cairo \
</span><span class="cx">         -I$(srcdir)/Source/WebCore/platform/graphics/cpu/arm \
</span><span class="lines">@@ -95,7 +96,8 @@
</span><span class="cx">         $(FREETYPE_CFLAGS) \
</span><span class="cx">         $(GEOCLUE_CFLAGS) \
</span><span class="cx">         $(GSTREAMER_CFLAGS) \
</span><del>-        $(LIBSOUP_CFLAGS)
</del><ins>+        $(LIBSOUP_CFLAGS) \
+        $(UPOWER_GLIB_CFLAGS)
</ins><span class="cx"> 
</span><span class="cx"> libPlatformGtk_la_SOURCES = \
</span><span class="cx">         $(platformgtk_sources)
</span></span></pre></div>
<a id="branchesjsCStackSourceThirdPartyANGLEANGLExcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/ThirdParty/ANGLE/ANGLE.xcodeproj/project.pbxproj (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/ThirdParty/ANGLE/ANGLE.xcodeproj/project.pbxproj        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/ThirdParty/ANGLE/ANGLE.xcodeproj/project.pbxproj        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -188,7 +188,7 @@
</span><span class="cx">                 72309A55183C27DB00370B93 /* Tokenizer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Tokenizer.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 72309A57183C27F100370B93 /* ExpressionParser.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ExpressionParser.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 72309A59183C284E00370B93 /* glslang_lex.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = glslang_lex.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                72309A5A183C284E00370B93 /* glslang_tab.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = glslang_tab.cpp; sourceTree = &quot;&lt;group&gt;&quot;; usesTabs = 1; };
</del><ins>+                72309A5A183C284E00370B93 /* glslang_tab.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = glslang_tab.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 72309A5B183C284E00370B93 /* glslang_tab.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glslang_tab.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 72309A5F183C2A6400370B93 /* TranslatorHLSL.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TranslatorHLSL.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 72309A60183C2A6400370B93 /* TranslatorHLSL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TranslatorHLSL.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span></span></pre></div>
<a id="branchesjsCStackSourceThirdPartyANGLEChangeLog"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/ThirdParty/ANGLE/ChangeLog (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/ThirdParty/ANGLE/ChangeLog        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/ThirdParty/ANGLE/ChangeLog        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,3 +1,23 @@
</span><ins>+2014-01-23  Mark Hahnenberg  &lt;mhahnenberg@apple.com&gt;
+
+        Merge branch up to ToT r160556.
+
+        * ANGLE.xcodeproj/project.pbxproj:
+        * src/compiler/glslang_tab.cpp:
+        (yysyntax_error):
+        (glslang_parse):
+        * src/compiler/glslang_tab.h:
+        * src/compiler/preprocessor/ExpressionParser.cpp:
+        (yy_symbol_print):
+        (yy_stack_print):
+        (yy_reduce_print):
+        (yystrlen):
+        (yystpcpy):
+        (yytnamerr):
+        (yysyntax_error):
+        (yydestruct):
+        (yyparse):
+
</ins><span class="cx"> 2013-12-05  Roger Fong  &lt;roger_fong@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [WebGL] Make sure we satisfy uniform and varying packing restrictions.
</span></span></pre></div>
<a id="branchesjsCStackSourceThirdPartyANGLEsrccompilerglslang_tabcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/ThirdParty/ANGLE/src/compiler/glslang_tab.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/ThirdParty/ANGLE/src/compiler/glslang_tab.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/ThirdParty/ANGLE/src/compiler/glslang_tab.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,24 +1,23 @@
</span><del>-/* A Bison parser, made by GNU Bison 2.3.  */
</del><ins>+/* Apple Note: For the avoidance of doubt, Apple elects to distribute this file under the terms of the BSD license. */
</ins><span class="cx"> 
</span><del>-/* Skeleton implementation for Bison's Yacc-like parsers in C
</del><ins>+/* A Bison parser, made by GNU Bison 2.7.  */
</ins><span class="cx"> 
</span><del>-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-   Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
</del><ins>+/* Bison implementation for Yacc-like parsers in C
+   
+      Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
+   
+   This program is free software: you can redistribute it and/or modify
</ins><span class="cx">    it under the terms of the GNU General Public License as published by
</span><del>-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
</del><ins>+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+   
</ins><span class="cx">    This program is distributed in the hope that it will be useful,
</span><span class="cx">    but WITHOUT ANY WARRANTY; without even the implied warranty of
</span><span class="cx">    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
</span><span class="cx">    GNU General Public License for more details.
</span><del>-
</del><ins>+   
</ins><span class="cx">    You should have received a copy of the GNU General Public License
</span><del>-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
</del><ins>+   along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.  */
</ins><span class="cx"> 
</span><span class="cx"> /* As a special exception, you may create a larger work that contains
</span><span class="cx">    part or all of the Bison parser skeleton and distribute that work
</span><span class="lines">@@ -29,7 +28,7 @@
</span><span class="cx">    special exception, which will cause the skeleton and the resulting
</span><span class="cx">    Bison output files to be licensed under the GNU General Public
</span><span class="cx">    License without this special exception.
</span><del>-
</del><ins>+   
</ins><span class="cx">    This special exception was added by the Free Software Foundation in
</span><span class="cx">    version 2.2 of Bison.  */
</span><span class="cx"> 
</span><span class="lines">@@ -47,7 +46,7 @@
</span><span class="cx"> #define YYBISON 1
</span><span class="cx"> 
</span><span class="cx"> /* Bison version.  */
</span><del>-#define YYBISON_VERSION &quot;2.3&quot;
</del><ins>+#define YYBISON_VERSION &quot;2.7&quot;
</ins><span class="cx"> 
</span><span class="cx"> /* Skeleton name.  */
</span><span class="cx"> #define YYSKELETON_NAME &quot;yacc.c&quot;
</span><span class="lines">@@ -55,11 +54,85 @@
</span><span class="cx"> /* Pure parsers.  */
</span><span class="cx"> #define YYPURE 1
</span><span class="cx"> 
</span><del>-/* Using locations.  */
-#define YYLSP_NEEDED 1
</del><ins>+/* Push parsers.  */
+#define YYPUSH 0
</ins><span class="cx"> 
</span><ins>+/* Pull parsers.  */
+#define YYPULL 1
</ins><span class="cx"> 
</span><span class="cx"> 
</span><ins>+
+
+/* Copy the first part of user declarations.  */
+
+
+//
+// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+
+// This file is auto-generated by generate_parser.sh. DO NOT EDIT!
+
+// Ignore errors in auto-generated code.
+#if defined(__GNUC__)
+#pragma GCC diagnostic ignored &quot;-Wunused-function&quot;
+#pragma GCC diagnostic ignored &quot;-Wunused-variable&quot;
+#pragma GCC diagnostic ignored &quot;-Wswitch-enum&quot;
+#elif defined(_MSC_VER)
+#pragma warning(disable: 4065)
+#pragma warning(disable: 4189)
+#pragma warning(disable: 4505)
+#pragma warning(disable: 4701)
+#endif
+
+#include &quot;compiler/SymbolTable.h&quot;
+#include &quot;compiler/ParseContext.h&quot;
+#include &quot;GLSLANG/ShaderLang.h&quot;
+
+#define YYENABLE_NLS 0
+
+#define YYLEX_PARAM context-&gt;scanner
+
+
+
+# ifndef YY_NULL
+#  if defined __cplusplus &amp;&amp; 201103L &lt;= __cplusplus
+#   define YY_NULL nullptr
+#  else
+#   define YY_NULL 0
+#  endif
+# endif
+
+/* Enabling verbose error messages.  */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+/* In a future release of Bison, this section will be replaced
+   by #include &quot;glslang_tab.h&quot;.  */
+#ifndef YY_YY_GLSLANG_TAB_H_INCLUDED
+# define YY_YY_GLSLANG_TAB_H_INCLUDED
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+#if YYDEBUG
+extern int yydebug;
+#endif
+/* &quot;%code requires&quot; blocks.  */
+
+
+#define YYLTYPE TSourceLoc
+#define YYLTYPE_IS_DECLARED 1
+#define SH_MAX_TOKEN_LENGTH 256  // WebGL spec.
+
+
+
+
</ins><span class="cx"> /* Tokens.  */
</span><span class="cx"> #ifndef YYTOKENTYPE
</span><span class="cx"> # define YYTOKENTYPE
</span><span class="lines">@@ -160,159 +233,13 @@
</span><span class="cx">      QUESTION = 349
</span><span class="cx">    };
</span><span class="cx"> #endif
</span><del>-/* Tokens.  */
-#define INVARIANT 258
-#define HIGH_PRECISION 259
-#define MEDIUM_PRECISION 260
-#define LOW_PRECISION 261
-#define PRECISION 262
-#define ATTRIBUTE 263
-#define CONST_QUAL 264
-#define BOOL_TYPE 265
-#define FLOAT_TYPE 266
-#define INT_TYPE 267
-#define BREAK 268
-#define CONTINUE 269
-#define DO 270
-#define ELSE 271
-#define FOR 272
-#define IF 273
-#define DISCARD 274
-#define RETURN 275
-#define BVEC2 276
-#define BVEC3 277
-#define BVEC4 278
-#define IVEC2 279
-#define IVEC3 280
-#define IVEC4 281
-#define VEC2 282
-#define VEC3 283
-#define VEC4 284
-#define MATRIX2 285
-#define MATRIX3 286
-#define MATRIX4 287
-#define IN_QUAL 288
-#define OUT_QUAL 289
-#define INOUT_QUAL 290
-#define UNIFORM 291
-#define VARYING 292
-#define STRUCT 293
-#define VOID_TYPE 294
-#define WHILE 295
-#define SAMPLER2D 296
-#define SAMPLERCUBE 297
-#define SAMPLER_EXTERNAL_OES 298
-#define SAMPLER2DRECT 299
-#define IDENTIFIER 300
-#define TYPE_NAME 301
-#define FLOATCONSTANT 302
-#define INTCONSTANT 303
-#define BOOLCONSTANT 304
-#define LEFT_OP 305
-#define RIGHT_OP 306
-#define INC_OP 307
-#define DEC_OP 308
-#define LE_OP 309
-#define GE_OP 310
-#define EQ_OP 311
-#define NE_OP 312
-#define AND_OP 313
-#define OR_OP 314
-#define XOR_OP 315
-#define MUL_ASSIGN 316
-#define DIV_ASSIGN 317
-#define ADD_ASSIGN 318
-#define MOD_ASSIGN 319
-#define LEFT_ASSIGN 320
-#define RIGHT_ASSIGN 321
-#define AND_ASSIGN 322
-#define XOR_ASSIGN 323
-#define OR_ASSIGN 324
-#define SUB_ASSIGN 325
-#define LEFT_PAREN 326
-#define RIGHT_PAREN 327
-#define LEFT_BRACKET 328
-#define RIGHT_BRACKET 329
-#define LEFT_BRACE 330
-#define RIGHT_BRACE 331
-#define DOT 332
-#define COMMA 333
-#define COLON 334
-#define EQUAL 335
-#define SEMICOLON 336
-#define BANG 337
-#define DASH 338
-#define TILDE 339
-#define PLUS 340
-#define STAR 341
-#define SLASH 342
-#define PERCENT 343
-#define LEFT_ANGLE 344
-#define RIGHT_ANGLE 345
-#define VERTICAL_BAR 346
-#define CARET 347
-#define AMPERSAND 348
-#define QUESTION 349
</del><span class="cx"> 
</span><span class="cx"> 
</span><del>-
-
-/* Copy the first part of user declarations.  */
-
-
-//
-// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-//
-
-// This file is auto-generated by generate_parser.sh. DO NOT EDIT!
-
-// Ignore errors in auto-generated code.
-#if defined(__GNUC__)
-#pragma GCC diagnostic ignored &quot;-Wunused-function&quot;
-#pragma GCC diagnostic ignored &quot;-Wunused-variable&quot;
-#pragma GCC diagnostic ignored &quot;-Wswitch-enum&quot;
-#elif defined(_MSC_VER)
-#pragma warning(disable: 4065)
-#pragma warning(disable: 4189)
-#pragma warning(disable: 4505)
-#pragma warning(disable: 4701)
-#endif
-
-#include &quot;compiler/SymbolTable.h&quot;
-#include &quot;compiler/ParseContext.h&quot;
-#include &quot;GLSLANG/ShaderLang.h&quot;
-
-#define YYENABLE_NLS 0
-
-#define YYLEX_PARAM context-&gt;scanner
-
-
-/* Enabling traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
-
-/* Enabling verbose error messages.  */
-#ifdef YYERROR_VERBOSE
-# undef YYERROR_VERBOSE
-# define YYERROR_VERBOSE 1
-#else
-# define YYERROR_VERBOSE 0
-#endif
-
-/* Enabling the token table.  */
-#ifndef YYTOKEN_TABLE
-# define YYTOKEN_TABLE 0
-#endif
-
</del><span class="cx"> #if ! defined YYSTYPE &amp;&amp; ! defined YYSTYPE_IS_DECLARED
</span><span class="cx"> typedef union YYSTYPE
</span><ins>+{
</ins><span class="cx"> 
</span><del>-{
-#define YYLTYPE TSourceLoc
-#define YYLTYPE_IS_DECLARED 1
</del><ins>+
</ins><span class="cx">     struct {
</span><span class="cx">         union {
</span><span class="cx">             TString *string;
</span><span class="lines">@@ -340,13 +267,13 @@
</span><span class="cx">             TFieldList* fieldList;
</span><span class="cx">         };
</span><span class="cx">     } interm;
</span><del>-}
-/* Line 193 of yacc.c.  */
</del><span class="cx"> 
</span><del>-    YYSTYPE;
</del><ins>+
+
+} YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
</ins><span class="cx"> # define yystype YYSTYPE /* obsolescent; will be withdrawn */
</span><span class="cx"> # define YYSTYPE_IS_DECLARED 1
</span><del>-# define YYSTYPE_IS_TRIVIAL 1
</del><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ! defined YYLTYPE &amp;&amp; ! defined YYLTYPE_IS_DECLARED
</span><span class="lines">@@ -363,11 +290,27 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> 
</span><ins>+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void *YYPARSE_PARAM);
+#else
+int yyparse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
+int yyparse (TParseContext* context);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+
+#endif /* !YY_YY_GLSLANG_TAB_H_INCLUDED  */
+
</ins><span class="cx"> /* Copy the second part of user declarations.  */
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> extern int yylex(YYSTYPE* yylval, YYLTYPE* yylloc, void* yyscanner);
</span><del>-static void yyerror(YYLTYPE* yylloc, TParseContext* context, const char* reason);
</del><ins>+extern void yyerror(YYLTYPE* yylloc, TParseContext* context, const char* reason);
</ins><span class="cx"> 
</span><span class="cx"> #define YYLLOC_DEFAULT(Current, Rhs, N)                      \
</span><span class="cx">   do {                                                       \
</span><span class="lines">@@ -400,9 +343,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-/* Line 216 of yacc.c.  */
</del><span class="cx"> 
</span><del>-
</del><span class="cx"> #ifdef short
</span><span class="cx"> # undef short
</span><span class="cx"> #endif
</span><span class="lines">@@ -454,36 +395,36 @@
</span><span class="cx"> # if defined YYENABLE_NLS &amp;&amp; YYENABLE_NLS
</span><span class="cx"> #  if ENABLE_NLS
</span><span class="cx"> #   include &lt;libintl.h&gt; /* INFRINGES ON USER NAME SPACE */
</span><del>-#   define YY_(msgid) dgettext (&quot;bison-runtime&quot;, msgid)
</del><ins>+#   define YY_(Msgid) dgettext (&quot;bison-runtime&quot;, Msgid)
</ins><span class="cx"> #  endif
</span><span class="cx"> # endif
</span><span class="cx"> # ifndef YY_
</span><del>-#  define YY_(msgid) msgid
</del><ins>+#  define YY_(Msgid) Msgid
</ins><span class="cx"> # endif
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> /* Suppress unused-variable warnings by &quot;using&quot; E.  */
</span><span class="cx"> #if ! defined lint || defined __GNUC__
</span><del>-# define YYUSE(e) ((void) (e))
</del><ins>+# define YYUSE(E) ((void) (E))
</ins><span class="cx"> #else
</span><del>-# define YYUSE(e) /* empty */
</del><ins>+# define YYUSE(E) /* empty */
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> /* Identity function, used to suppress warnings about constant conditions.  */
</span><span class="cx"> #ifndef lint
</span><del>-# define YYID(n) (n)
</del><ins>+# define YYID(N) (N)
</ins><span class="cx"> #else
</span><span class="cx"> #if (defined __STDC__ || defined __C99__FUNC__ \
</span><span class="cx">      || defined __cplusplus || defined _MSC_VER)
</span><span class="cx"> static int
</span><del>-YYID (int i)
</del><ins>+YYID (int yyi)
</ins><span class="cx"> #else
</span><span class="cx"> static int
</span><del>-YYID (i)
-    int i;
</del><ins>+YYID (yyi)
+    int yyi;
</ins><span class="cx"> #endif
</span><span class="cx"> {
</span><del>-  return i;
</del><ins>+  return yyi;
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -504,11 +445,12 @@
</span><span class="cx"> #    define alloca _alloca
</span><span class="cx"> #   else
</span><span class="cx"> #    define YYSTACK_ALLOC alloca
</span><del>-#    if ! defined _ALLOCA_H &amp;&amp; ! defined _STDLIB_H &amp;&amp; (defined __STDC__ || defined __C99__FUNC__ \
</del><ins>+#    if ! defined _ALLOCA_H &amp;&amp; ! defined EXIT_SUCCESS &amp;&amp; (defined __STDC__ || defined __C99__FUNC__ \
</ins><span class="cx">      || defined __cplusplus || defined _MSC_VER)
</span><span class="cx"> #     include &lt;stdlib.h&gt; /* INFRINGES ON USER NAME SPACE */
</span><del>-#     ifndef _STDLIB_H
-#      define _STDLIB_H 1
</del><ins>+      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
+#     ifndef EXIT_SUCCESS
+#      define EXIT_SUCCESS 0
</ins><span class="cx"> #     endif
</span><span class="cx"> #    endif
</span><span class="cx"> #   endif
</span><span class="lines">@@ -531,24 +473,24 @@
</span><span class="cx"> #  ifndef YYSTACK_ALLOC_MAXIMUM
</span><span class="cx"> #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
</span><span class="cx"> #  endif
</span><del>-#  if (defined __cplusplus &amp;&amp; ! defined _STDLIB_H \
</del><ins>+#  if (defined __cplusplus &amp;&amp; ! defined EXIT_SUCCESS \
</ins><span class="cx">        &amp;&amp; ! ((defined YYMALLOC || defined malloc) \
</span><del>-         &amp;&amp; (defined YYFREE || defined free)))
</del><ins>+             &amp;&amp; (defined YYFREE || defined free)))
</ins><span class="cx"> #   include &lt;stdlib.h&gt; /* INFRINGES ON USER NAME SPACE */
</span><del>-#   ifndef _STDLIB_H
-#    define _STDLIB_H 1
</del><ins>+#   ifndef EXIT_SUCCESS
+#    define EXIT_SUCCESS 0
</ins><span class="cx"> #   endif
</span><span class="cx"> #  endif
</span><span class="cx"> #  ifndef YYMALLOC
</span><span class="cx"> #   define YYMALLOC malloc
</span><del>-#   if ! defined malloc &amp;&amp; ! defined _STDLIB_H &amp;&amp; (defined __STDC__ || defined __C99__FUNC__ \
</del><ins>+#   if ! defined malloc &amp;&amp; ! defined EXIT_SUCCESS &amp;&amp; (defined __STDC__ || defined __C99__FUNC__ \
</ins><span class="cx">      || defined __cplusplus || defined _MSC_VER)
</span><span class="cx"> void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
</span><span class="cx"> #   endif
</span><span class="cx"> #  endif
</span><span class="cx"> #  ifndef YYFREE
</span><span class="cx"> #   define YYFREE free
</span><del>-#   if ! defined free &amp;&amp; ! defined _STDLIB_H &amp;&amp; (defined __STDC__ || defined __C99__FUNC__ \
</del><ins>+#   if ! defined free &amp;&amp; ! defined EXIT_SUCCESS &amp;&amp; (defined __STDC__ || defined __C99__FUNC__ \
</ins><span class="cx">      || defined __cplusplus || defined _MSC_VER)
</span><span class="cx"> void free (void *); /* INFRINGES ON USER NAME SPACE */
</span><span class="cx"> #   endif
</span><span class="lines">@@ -559,15 +501,15 @@
</span><span class="cx"> 
</span><span class="cx"> #if (! defined yyoverflow \
</span><span class="cx">      &amp;&amp; (! defined __cplusplus \
</span><del>-     || (defined YYLTYPE_IS_TRIVIAL &amp;&amp; YYLTYPE_IS_TRIVIAL \
-         &amp;&amp; defined YYSTYPE_IS_TRIVIAL &amp;&amp; YYSTYPE_IS_TRIVIAL)))
</del><ins>+         || (defined YYLTYPE_IS_TRIVIAL &amp;&amp; YYLTYPE_IS_TRIVIAL \
+             &amp;&amp; defined YYSTYPE_IS_TRIVIAL &amp;&amp; YYSTYPE_IS_TRIVIAL)))
</ins><span class="cx"> 
</span><span class="cx"> /* A type that is properly aligned for any stack member.  */
</span><span class="cx"> union yyalloc
</span><span class="cx"> {
</span><del>-  yytype_int16 yyss;
-  YYSTYPE yyvs;
-    YYLTYPE yyls;
</del><ins>+  yytype_int16 yyss_alloc;
+  YYSTYPE yyvs_alloc;
+  YYLTYPE yyls_alloc;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> /* The size of the maximum gap between one aligned stack and the next.  */
</span><span class="lines">@@ -579,42 +521,46 @@
</span><span class="cx">      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
</span><span class="cx">       + 2 * YYSTACK_GAP_MAXIMUM)
</span><span class="cx"> 
</span><del>-/* Copy COUNT objects from FROM to TO.  The source and destination do
-   not overlap.  */
-# ifndef YYCOPY
-#  if defined __GNUC__ &amp;&amp; 1 &lt; __GNUC__
-#   define YYCOPY(To, From, Count) \
-      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-#  else
-#   define YYCOPY(To, From, Count)        \
-      do                    \
-    {                    \
-      YYSIZE_T yyi;                \
-      for (yyi = 0; yyi &lt; (Count); yyi++)    \
-        (To)[yyi] = (From)[yyi];        \
-    }                    \
-      while (YYID (0))
-#  endif
-# endif
</del><ins>+# define YYCOPY_NEEDED 1
</ins><span class="cx"> 
</span><span class="cx"> /* Relocate STACK from its old location to the new one.  The
</span><span class="cx">    local variables YYSIZE and YYSTACKSIZE give the old and new number of
</span><span class="cx">    elements in the stack, and YYPTR gives the new location of the
</span><span class="cx">    stack.  Advance YYPTR to a properly aligned location for the next
</span><span class="cx">    stack.  */
</span><del>-# define YYSTACK_RELOCATE(Stack)                    \
-    do                                    \
-      {                                    \
-    YYSIZE_T yynewbytes;                        \
-    YYCOPY (&amp;yyptr-&gt;Stack, Stack, yysize);                \
-    Stack = &amp;yyptr-&gt;Stack;                        \
-    yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
-    yyptr += yynewbytes / sizeof (*yyptr);                \
-      }                                    \
</del><ins>+# define YYSTACK_RELOCATE(Stack_alloc, Stack)                                \
+    do                                                                        \
+      {                                                                        \
+        YYSIZE_T yynewbytes;                                                \
+        YYCOPY (&amp;yyptr-&gt;Stack_alloc, Stack, yysize);                        \
+        Stack = &amp;yyptr-&gt;Stack_alloc;                                        \
+        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+        yyptr += yynewbytes / sizeof (*yyptr);                                \
+      }                                                                        \
</ins><span class="cx">     while (YYID (0))
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if defined YYCOPY_NEEDED &amp;&amp; YYCOPY_NEEDED
+/* Copy COUNT objects from SRC to DST.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if defined __GNUC__ &amp;&amp; 1 &lt; __GNUC__
+#   define YYCOPY(Dst, Src, Count) \
+      __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
+#  else
+#   define YYCOPY(Dst, Src, Count)              \
+      do                                        \
+        {                                       \
+          YYSIZE_T yyi;                         \
+          for (yyi = 0; yyi &lt; (Count); yyi++)   \
+            (Dst)[yyi] = (Src)[yyi];            \
+        }                                       \
+      while (YYID (0))
+#  endif
+# endif
+#endif /* !YYCOPY_NEEDED */
+
</ins><span class="cx"> /* YYFINAL -- State number of the termination state.  */
</span><span class="cx"> #define YYFINAL  74
</span><span class="cx"> /* YYLAST -- Last index in YYTABLE.  */
</span><span class="lines">@@ -633,7 +579,7 @@
</span><span class="cx"> #define YYUNDEFTOK  2
</span><span class="cx"> #define YYMAXUTOK   349
</span><span class="cx"> 
</span><del>-#define YYTRANSLATE(YYX)                        \
</del><ins>+#define YYTRANSLATE(YYX)                                                \
</ins><span class="cx">   ((unsigned int) (YYX) &lt;= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
</span><span class="cx"> 
</span><span class="cx"> /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
</span><span class="lines">@@ -770,31 +716,31 @@
</span><span class="cx"> /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
</span><span class="cx"> static const yytype_uint16 yyrline[] =
</span><span class="cx"> {
</span><del>-       0,   176,   176,   177,   180,   223,   226,   239,   244,   249,
-     255,   258,   261,   264,   359,   369,   382,   390,   490,   493,
-     501,   504,   510,   514,   521,   527,   536,   544,   599,   609,
-     612,   622,   632,   653,   654,   655,   660,   661,   669,   680,
-     681,   689,   700,   704,   705,   715,   725,   735,   748,   749,
-     759,   772,   776,   780,   784,   785,   798,   799,   812,   813,
-     826,   827,   844,   845,   858,   859,   860,   861,   862,   866,
-     869,   880,   888,   915,   920,   934,   989,   992,   999,  1007,
-    1028,  1049,  1059,  1087,  1092,  1102,  1107,  1117,  1120,  1123,
-    1126,  1132,  1139,  1142,  1164,  1182,  1206,  1229,  1233,  1251,
-    1259,  1291,  1311,  1332,  1341,  1364,  1367,  1373,  1381,  1389,
-    1397,  1407,  1414,  1417,  1420,  1426,  1429,  1444,  1448,  1452,
-    1456,  1460,  1465,  1470,  1475,  1480,  1485,  1490,  1495,  1500,
-    1505,  1510,  1515,  1520,  1524,  1528,  1536,  1544,  1548,  1561,
-    1561,  1575,  1575,  1584,  1587,  1603,  1636,  1640,  1646,  1653,
-    1668,  1672,  1676,  1677,  1683,  1684,  1685,  1686,  1687,  1691,
-    1692,  1692,  1692,  1702,  1703,  1707,  1707,  1708,  1708,  1713,
-    1716,  1726,  1729,  1735,  1736,  1740,  1748,  1752,  1762,  1767,
-    1784,  1784,  1789,  1789,  1796,  1796,  1804,  1807,  1813,  1816,
-    1822,  1826,  1833,  1840,  1847,  1854,  1865,  1874,  1878,  1885,
-    1888,  1894,  1894
</del><ins>+       0,   180,   180,   181,   184,   227,   230,   243,   248,   253,
+     259,   262,   265,   268,   363,   373,   386,   394,   494,   497,
+     505,   508,   514,   518,   525,   531,   540,   548,   603,   613,
+     616,   626,   636,   657,   658,   659,   664,   665,   673,   684,
+     685,   693,   704,   708,   709,   719,   729,   739,   752,   753,
+     763,   776,   780,   784,   788,   789,   802,   803,   816,   817,
+     830,   831,   848,   849,   862,   863,   864,   865,   866,   870,
+     873,   884,   892,   919,   924,   938,   993,   996,  1003,  1011,
+    1032,  1053,  1063,  1091,  1096,  1106,  1111,  1121,  1124,  1127,
+    1130,  1136,  1143,  1146,  1168,  1186,  1210,  1233,  1237,  1255,
+    1263,  1295,  1315,  1336,  1345,  1368,  1371,  1377,  1385,  1393,
+    1401,  1411,  1418,  1421,  1424,  1430,  1433,  1448,  1452,  1456,
+    1460,  1464,  1469,  1474,  1479,  1484,  1489,  1494,  1499,  1504,
+    1509,  1514,  1519,  1524,  1528,  1532,  1540,  1548,  1552,  1565,
+    1565,  1579,  1579,  1588,  1591,  1607,  1640,  1644,  1650,  1657,
+    1672,  1676,  1680,  1681,  1687,  1688,  1689,  1690,  1691,  1695,
+    1696,  1696,  1696,  1706,  1707,  1711,  1711,  1712,  1712,  1717,
+    1720,  1730,  1733,  1739,  1740,  1744,  1752,  1756,  1766,  1771,
+    1788,  1788,  1793,  1793,  1800,  1800,  1808,  1811,  1817,  1820,
+    1826,  1830,  1837,  1844,  1851,  1858,  1869,  1878,  1882,  1889,
+    1892,  1898,  1898
</ins><span class="cx"> };
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
</del><ins>+#if YYDEBUG || YYERROR_VERBOSE || 0
</ins><span class="cx"> /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
</span><span class="cx">    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
</span><span class="cx"> static const char *const yytname[] =
</span><span class="lines">@@ -834,16 +780,16 @@
</span><span class="cx">   &quot;init_declarator_list&quot;, &quot;single_declaration&quot;, &quot;fully_specified_type&quot;,
</span><span class="cx">   &quot;type_qualifier&quot;, &quot;type_specifier&quot;, &quot;precision_qualifier&quot;,
</span><span class="cx">   &quot;type_specifier_no_prec&quot;, &quot;type_specifier_nonarray&quot;, &quot;struct_specifier&quot;,
</span><del>-  &quot;@1&quot;, &quot;@2&quot;, &quot;struct_declaration_list&quot;, &quot;struct_declaration&quot;,
</del><ins>+  &quot;$@1&quot;, &quot;$@2&quot;, &quot;struct_declaration_list&quot;, &quot;struct_declaration&quot;,
</ins><span class="cx">   &quot;struct_declarator_list&quot;, &quot;struct_declarator&quot;, &quot;initializer&quot;,
</span><span class="cx">   &quot;declaration_statement&quot;, &quot;statement&quot;, &quot;simple_statement&quot;,
</span><del>-  &quot;compound_statement&quot;, &quot;@3&quot;, &quot;@4&quot;, &quot;statement_no_new_scope&quot;,
-  &quot;statement_with_scope&quot;, &quot;@5&quot;, &quot;@6&quot;, &quot;compound_statement_no_new_scope&quot;,
</del><ins>+  &quot;compound_statement&quot;, &quot;$@3&quot;, &quot;$@4&quot;, &quot;statement_no_new_scope&quot;,
+  &quot;statement_with_scope&quot;, &quot;$@5&quot;, &quot;$@6&quot;, &quot;compound_statement_no_new_scope&quot;,
</ins><span class="cx">   &quot;statement_list&quot;, &quot;expression_statement&quot;, &quot;selection_statement&quot;,
</span><del>-  &quot;selection_rest_statement&quot;, &quot;condition&quot;, &quot;iteration_statement&quot;, &quot;@7&quot;,
-  &quot;@8&quot;, &quot;@9&quot;, &quot;for_init_statement&quot;, &quot;conditionopt&quot;, &quot;for_rest_statement&quot;,
</del><ins>+  &quot;selection_rest_statement&quot;, &quot;condition&quot;, &quot;iteration_statement&quot;, &quot;$@7&quot;,
+  &quot;$@8&quot;, &quot;$@9&quot;, &quot;for_init_statement&quot;, &quot;conditionopt&quot;, &quot;for_rest_statement&quot;,
</ins><span class="cx">   &quot;jump_statement&quot;, &quot;translation_unit&quot;, &quot;external_declaration&quot;,
</span><del>-  &quot;function_definition&quot;, &quot;@10&quot;, 0
</del><ins>+  &quot;function_definition&quot;, &quot;$@10&quot;, YY_NULL
</ins><span class="cx"> };
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -917,8 +863,8 @@
</span><span class="cx">        1,     0,     3
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
-   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
</del><ins>+/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
+   Performed when YYTABLE doesn't specify something else to do.  Zero
</ins><span class="cx">    means the default is an error.  */
</span><span class="cx"> static const yytype_uint8 yydefact[] =
</span><span class="cx"> {
</span><span class="lines">@@ -1023,8 +969,7 @@
</span><span class="cx"> 
</span><span class="cx"> /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
</span><span class="cx">    positive, shift that token.  If negative, reduce the rule which
</span><del>-   number is the opposite.  If zero, do what YYDEFACT says.
-   If YYTABLE_NINF, syntax error.  */
</del><ins>+   number is the opposite.  If YYTABLE_NINF, syntax error.  */
</ins><span class="cx"> #define YYTABLE_NINF -166
</span><span class="cx"> static const yytype_int16 yytable[] =
</span><span class="cx"> {
</span><span class="lines">@@ -1180,6 +1125,12 @@
</span><span class="cx">       31
</span><span class="cx"> };
</span><span class="cx"> 
</span><ins>+#define yypact_value_is_default(Yystate) \
+  (!!((Yystate) == (-261)))
+
+#define yytable_value_is_error(Yytable_value) \
+  YYID (0)
+
</ins><span class="cx"> static const yytype_int16 yycheck[] =
</span><span class="cx"> {
</span><span class="cx">        0,    25,    89,    88,    96,    57,   162,    73,   153,   128,
</span><span class="lines">@@ -1371,82 +1322,128 @@
</span><span class="cx">      161,    72,   124,   157,   158,   150,    81
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-#define yyerrok        (yyerrstatus = 0)
-#define yyclearin    (yychar = YYEMPTY)
-#define YYEMPTY        (-2)
-#define YYEOF        0
</del><ins>+#define yyerrok                (yyerrstatus = 0)
+#define yyclearin        (yychar = YYEMPTY)
+#define YYEMPTY                (-2)
+#define YYEOF                0
</ins><span class="cx"> 
</span><del>-#define YYACCEPT    goto yyacceptlab
-#define YYABORT        goto yyabortlab
-#define YYERROR        goto yyerrorlab
</del><ins>+#define YYACCEPT        goto yyacceptlab
+#define YYABORT                goto yyabortlab
+#define YYERROR                goto yyerrorlab
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> /* Like YYERROR except do call yyerror.  This remains here temporarily
</span><span class="cx">    to ease the transition to the new meaning of YYERROR, for GCC.
</span><del>-   Once GCC version 2 has supplanted version 1, this can go.  */
</del><ins>+   Once GCC version 2 has supplanted version 1, this can go.  However,
+   YYFAIL appears to be in use.  Nevertheless, it is formally deprecated
+   in Bison 2.4.2's NEWS entry, where a plan to phase it out is
+   discussed.  */
</ins><span class="cx"> 
</span><del>-#define YYFAIL        goto yyerrlab
</del><ins>+#define YYFAIL                goto yyerrlab
+#if defined YYFAIL
+  /* This is here to suppress warnings from the GCC cpp's
+     -Wunused-macros.  Normally we don't worry about that warning, but
+     some users do, and we want to make it easy for users to remove
+     YYFAIL uses, which will produce warnings from Bison 2.5.  */
+#endif
</ins><span class="cx"> 
</span><span class="cx"> #define YYRECOVERING()  (!!yyerrstatus)
</span><span class="cx"> 
</span><del>-#define YYBACKUP(Token, Value)                    \
-do                                \
-  if (yychar == YYEMPTY &amp;&amp; yylen == 1)                \
-    {                                \
-      yychar = (Token);                        \
-      yylval = (Value);                        \
-      yytoken = YYTRANSLATE (yychar);                \
-      YYPOPSTACK (1);                        \
-      goto yybackup;                        \
-    }                                \
-  else                                \
-    {                                \
</del><ins>+#define YYBACKUP(Token, Value)                                  \
+do                                                              \
+  if (yychar == YYEMPTY)                                        \
+    {                                                           \
+      yychar = (Token);                                         \
+      yylval = (Value);                                         \
+      YYPOPSTACK (yylen);                                       \
+      yystate = *yyssp;                                         \
+      goto yybackup;                                            \
+    }                                                           \
+  else                                                          \
+    {                                                           \
</ins><span class="cx">       yyerror (&amp;yylloc, context, YY_(&quot;syntax error: cannot back up&quot;)); \
</span><del>-      YYERROR;                            \
-    }                                \
</del><ins>+      YYERROR;                                                        \
+    }                                                                \
</ins><span class="cx"> while (YYID (0))
</span><span class="cx"> 
</span><ins>+/* Error token number */
+#define YYTERROR        1
+#define YYERRCODE        256
</ins><span class="cx"> 
</span><del>-#define YYTERROR    1
-#define YYERRCODE    256
</del><span class="cx"> 
</span><del>-
</del><span class="cx"> /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
</span><span class="cx">    If N is 0, then set CURRENT to the empty location which ends
</span><span class="cx">    the previous symbol: RHS[0] (always defined).  */
</span><span class="cx"> 
</span><del>-#define YYRHSLOC(Rhs, K) ((Rhs)[K])
</del><span class="cx"> #ifndef YYLLOC_DEFAULT
</span><del>-# define YYLLOC_DEFAULT(Current, Rhs, N)                \
-    do                                    \
-      if (YYID (N))                                                    \
-    {                                \
-      (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;    \
-      (Current).first_column = YYRHSLOC (Rhs, 1).first_column;    \
-      (Current).last_line    = YYRHSLOC (Rhs, N).last_line;        \
-      (Current).last_column  = YYRHSLOC (Rhs, N).last_column;    \
-    }                                \
-      else                                \
-    {                                \
-      (Current).first_line   = (Current).last_line   =        \
-        YYRHSLOC (Rhs, 0).last_line;                \
-      (Current).first_column = (Current).last_column =        \
-        YYRHSLOC (Rhs, 0).last_column;                \
-    }                                \
</del><ins>+# define YYLLOC_DEFAULT(Current, Rhs, N)                                \
+    do                                                                  \
+      if (YYID (N))                                                     \
+        {                                                               \
+          (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
+          (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
+          (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
+          (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
+        }                                                               \
+      else                                                              \
+        {                                                               \
+          (Current).first_line   = (Current).last_line   =              \
+            YYRHSLOC (Rhs, 0).last_line;                                \
+          (Current).first_column = (Current).last_column =              \
+            YYRHSLOC (Rhs, 0).last_column;                              \
+        }                                                               \
</ins><span class="cx">     while (YYID (0))
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
</ins><span class="cx"> 
</span><ins>+
</ins><span class="cx"> /* YY_LOCATION_PRINT -- Print the location on the stream.
</span><span class="cx">    This macro was not mandated originally: define only if we know
</span><span class="cx">    we won't break user code: when these are the locations we know.  */
</span><span class="cx"> 
</span><span class="cx"> #ifndef YY_LOCATION_PRINT
</span><span class="cx"> # if defined YYLTYPE_IS_TRIVIAL &amp;&amp; YYLTYPE_IS_TRIVIAL
</span><del>-#  define YY_LOCATION_PRINT(File, Loc)            \
-     fprintf (File, &quot;%d.%d-%d.%d&quot;,            \
-          (Loc).first_line, (Loc).first_column,    \
-          (Loc).last_line,  (Loc).last_column)
</del><ins>+
+/* Print *YYLOCP on YYO.  Private, do not rely on its existence. */
+
+__attribute__((__unused__))
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static unsigned
+yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp)
+#else
+static unsigned
+yy_location_print_ (yyo, yylocp)
+    FILE *yyo;
+    YYLTYPE const * const yylocp;
+#endif
+{
+  unsigned res = 0;
+  int end_col = 0 != yylocp-&gt;last_column ? yylocp-&gt;last_column - 1 : 0;
+  if (0 &lt;= yylocp-&gt;first_line)
+    {
+      res += fprintf (yyo, &quot;%d&quot;, yylocp-&gt;first_line);
+      if (0 &lt;= yylocp-&gt;first_column)
+        res += fprintf (yyo, &quot;.%d&quot;, yylocp-&gt;first_column);
+    }
+  if (0 &lt;= yylocp-&gt;last_line)
+    {
+      if (yylocp-&gt;first_line &lt; yylocp-&gt;last_line)
+        {
+          res += fprintf (yyo, &quot;-%d&quot;, yylocp-&gt;last_line);
+          if (0 &lt;= end_col)
+            res += fprintf (yyo, &quot;.%d&quot;, end_col);
+        }
+      else if (0 &lt;= end_col &amp;&amp; yylocp-&gt;first_column &lt; end_col)
+        res += fprintf (yyo, &quot;-%d&quot;, end_col);
+    }
+  return res;
+ }
+
+#  define YY_LOCATION_PRINT(File, Loc)          \
+  yy_location_print_ (File, &amp;(Loc))
+
</ins><span class="cx"> # else
</span><span class="cx"> #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
</span><span class="cx"> # endif
</span><span class="lines">@@ -1454,7 +1451,6 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> /* YYLEX -- calling `yylex' with the right arguments.  */
</span><del>-
</del><span class="cx"> #ifdef YYLEX_PARAM
</span><span class="cx"> # define YYLEX yylex (&amp;yylval, &amp;yylloc, YYLEX_PARAM)
</span><span class="cx"> #else
</span><span class="lines">@@ -1469,21 +1465,21 @@
</span><span class="cx"> #  define YYFPRINTF fprintf
</span><span class="cx"> # endif
</span><span class="cx"> 
</span><del>-# define YYDPRINTF(Args)            \
-do {                        \
-  if (yydebug)                    \
-    YYFPRINTF Args;                \
</del><ins>+# define YYDPRINTF(Args)                        \
+do {                                                \
+  if (yydebug)                                        \
+    YYFPRINTF Args;                                \
</ins><span class="cx"> } while (YYID (0))
</span><span class="cx"> 
</span><del>-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)              \
-do {                                      \
-  if (yydebug)                                  \
-    {                                      \
-      YYFPRINTF (stderr, &quot;%s &quot;, Title);                      \
-      yy_symbol_print (stderr,                          \
-          Type, Value, Location, context); \
-      YYFPRINTF (stderr, &quot;\n&quot;);                          \
-    }                                      \
</del><ins>+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                          \
+do {                                                                          \
+  if (yydebug)                                                                  \
+    {                                                                          \
+      YYFPRINTF (stderr, &quot;%s &quot;, Title);                                          \
+      yy_symbol_print (stderr,                                                  \
+                  Type, Value, Location, context); \
+      YYFPRINTF (stderr, &quot;\n&quot;);                                                  \
+    }                                                                          \
</ins><span class="cx"> } while (YYID (0))
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="lines">@@ -1506,6 +1502,8 @@
</span><span class="cx">     TParseContext* context;
</span><span class="cx"> #endif
</span><span class="cx"> {
</span><ins>+  FILE *yyo = yyoutput;
+  YYUSE (yyo);
</ins><span class="cx">   if (!yyvaluep)
</span><span class="cx">     return;
</span><span class="cx">   YYUSE (yylocationp);
</span><span class="lines">@@ -1519,7 +1517,7 @@
</span><span class="cx">   switch (yytype)
</span><span class="cx">     {
</span><span class="cx">       default:
</span><del>-    break;
</del><ins>+        break;
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1561,24 +1559,27 @@
</span><span class="cx"> #if (defined __STDC__ || defined __C99__FUNC__ \
</span><span class="cx">      || defined __cplusplus || defined _MSC_VER)
</span><span class="cx"> static void
</span><del>-yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
</del><ins>+yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
</ins><span class="cx"> #else
</span><span class="cx"> static void
</span><del>-yy_stack_print (bottom, top)
-    yytype_int16 *bottom;
-    yytype_int16 *top;
</del><ins>+yy_stack_print (yybottom, yytop)
+    yytype_int16 *yybottom;
+    yytype_int16 *yytop;
</ins><span class="cx"> #endif
</span><span class="cx"> {
</span><span class="cx">   YYFPRINTF (stderr, &quot;Stack now&quot;);
</span><del>-  for (; bottom &lt;= top; ++bottom)
-    YYFPRINTF (stderr, &quot; %d&quot;, *bottom);
</del><ins>+  for (; yybottom &lt;= yytop; yybottom++)
+    {
+      int yybot = *yybottom;
+      YYFPRINTF (stderr, &quot; %d&quot;, yybot);
+    }
</ins><span class="cx">   YYFPRINTF (stderr, &quot;\n&quot;);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-# define YY_STACK_PRINT(Bottom, Top)                \
-do {                                \
-  if (yydebug)                            \
-    yy_stack_print ((Bottom), (Top));                \
</del><ins>+# define YY_STACK_PRINT(Bottom, Top)                                \
+do {                                                                \
+  if (yydebug)                                                        \
+    yy_stack_print ((Bottom), (Top));                                \
</ins><span class="cx"> } while (YYID (0))
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="lines">@@ -1603,21 +1604,21 @@
</span><span class="cx">   int yyi;
</span><span class="cx">   unsigned long int yylno = yyrline[yyrule];
</span><span class="cx">   YYFPRINTF (stderr, &quot;Reducing stack by rule %d (line %lu):\n&quot;,
</span><del>-         yyrule - 1, yylno);
</del><ins>+             yyrule - 1, yylno);
</ins><span class="cx">   /* The symbols being reduced.  */
</span><span class="cx">   for (yyi = 0; yyi &lt; yynrhs; yyi++)
</span><span class="cx">     {
</span><del>-      fprintf (stderr, &quot;   $%d = &quot;, yyi + 1);
</del><ins>+      YYFPRINTF (stderr, &quot;   $%d = &quot;, yyi + 1);
</ins><span class="cx">       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
</span><del>-               &amp;(yyvsp[(yyi + 1) - (yynrhs)])
-               , &amp;(yylsp[(yyi + 1) - (yynrhs)])               , context);
-      fprintf (stderr, &quot;\n&quot;);
</del><ins>+                       &amp;(yyvsp[(yyi + 1) - (yynrhs)])
+                       , &amp;(yylsp[(yyi + 1) - (yynrhs)])                       , context);
+      YYFPRINTF (stderr, &quot;\n&quot;);
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-# define YY_REDUCE_PRINT(Rule)        \
-do {                    \
-  if (yydebug)                \
</del><ins>+# define YY_REDUCE_PRINT(Rule)                \
+do {                                        \
+  if (yydebug)                                \
</ins><span class="cx">     yy_reduce_print (yyvsp, yylsp, Rule, context); \
</span><span class="cx"> } while (YYID (0))
</span><span class="cx"> 
</span><span class="lines">@@ -1633,7 +1634,7 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> /* YYINITDEPTH -- initial size of the parser's stacks.  */
</span><del>-#ifndef    YYINITDEPTH
</del><ins>+#ifndef        YYINITDEPTH
</ins><span class="cx"> # define YYINITDEPTH 200
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -1648,7 +1649,6 @@
</span><span class="cx"> # define YYMAXDEPTH 10000
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-
</del><span class="cx"> 
</span><span class="cx"> #if YYERROR_VERBOSE
</span><span class="cx"> 
</span><span class="lines">@@ -1720,27 +1720,27 @@
</span><span class="cx">       char const *yyp = yystr;
</span><span class="cx"> 
</span><span class="cx">       for (;;)
</span><del>-    switch (*++yyp)
-      {
-      case '\'':
-      case ',':
-        goto do_not_strip_quotes;
</del><ins>+        switch (*++yyp)
+          {
+          case '\'':
+          case ',':
+            goto do_not_strip_quotes;
</ins><span class="cx"> 
</span><del>-      case '\\':
-        if (*++yyp != '\\')
-          goto do_not_strip_quotes;
-        /* Fall through.  */
-      default:
-        if (yyres)
-          yyres[yyn] = *yyp;
-        yyn++;
-        break;
</del><ins>+          case '\\':
+            if (*++yyp != '\\')
+              goto do_not_strip_quotes;
+            /* Fall through.  */
+          default:
+            if (yyres)
+              yyres[yyn] = *yyp;
+            yyn++;
+            break;
</ins><span class="cx"> 
</span><del>-      case '&quot;':
-        if (yyres)
-          yyres[yyn] = '\0';
-        return yyn;
-      }
</del><ins>+          case '&quot;':
+            if (yyres)
+              yyres[yyn] = '\0';
+            return yyn;
+          }
</ins><span class="cx">     do_not_strip_quotes: ;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -1751,115 +1751,145 @@
</span><span class="cx"> }
</span><span class="cx"> # endif
</span><span class="cx"> 
</span><del>-/* Copy into YYRESULT an error message about the unexpected token
-   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
-   including the terminating null byte.  If YYRESULT is null, do not
-   copy anything; just return the number of bytes that would be
-   copied.  As a special case, return 0 if an ordinary &quot;syntax error&quot;
-   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
-   size calculation.  */
-static YYSIZE_T
-yysyntax_error (char *yyresult, int yystate, int yychar)
</del><ins>+/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
+   about the unexpected token YYTOKEN for the state stack whose top is
+   YYSSP.
+
+   Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
+   not large enough to hold the message.  In that case, also set
+   *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
+   required number of bytes is too large to store.  */
+static int
+yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
+                yytype_int16 *yyssp, int yytoken)
</ins><span class="cx"> {
</span><del>-  int yyn = yypact[yystate];
</del><ins>+  YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
+  YYSIZE_T yysize = yysize0;
+  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+  /* Internationalized format string. */
+  const char *yyformat = YY_NULL;
+  /* Arguments of yyformat. */
+  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+  /* Number of reported tokens (one for the &quot;unexpected&quot;, one per
+     &quot;expected&quot;). */
+  int yycount = 0;
</ins><span class="cx"> 
</span><del>-  if (! (YYPACT_NINF &lt; yyn &amp;&amp; yyn &lt;= YYLAST))
-    return 0;
-  else
</del><ins>+  /* There are many possibilities here to consider:
+     - Assume YYFAIL is not used.  It's too flawed to consider.  See
+       &lt;http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html&gt;
+       for details.  YYERROR is fine as it does not invoke this
+       function.
+     - If this state is a consistent state with a default action, then
+       the only way this function was invoked is if the default action
+       is an error action.  In that case, don't check for expected
+       tokens because there are none.
+     - The only way there can be no lookahead present (in yychar) is if
+       this state is a consistent state with a default action.  Thus,
+       detecting the absence of a lookahead is sufficient to determine
+       that there is no unexpected or expected token to report.  In that
+       case, just report a simple &quot;syntax error&quot;.
+     - Don't assume there isn't a lookahead just because this state is a
+       consistent state with a default action.  There might have been a
+       previous inconsistent state, consistent state with a non-default
+       action, or user semantic action that manipulated yychar.
+     - Of course, the expected token list depends on states to have
+       correct lookahead information, and it depends on the parser not
+       to perform extra reductions after fetching a lookahead from the
+       scanner and before detecting a syntax error.  Thus, state merging
+       (from LALR or IELR) and default reductions corrupt the expected
+       token list.  However, the list is correct for canonical LR with
+       one exception: it will still contain any token that will not be
+       accepted due to an error action in a later state.
+  */
+  if (yytoken != YYEMPTY)
</ins><span class="cx">     {
</span><del>-      int yytype = YYTRANSLATE (yychar);
-      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
-      YYSIZE_T yysize = yysize0;
-      YYSIZE_T yysize1;
-      int yysize_overflow = 0;
-      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
-      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-      int yyx;
</del><ins>+      int yyn = yypact[*yyssp];
+      yyarg[yycount++] = yytname[yytoken];
+      if (!yypact_value_is_default (yyn))
+        {
+          /* Start YYX at -YYN if negative to avoid negative indexes in
+             YYCHECK.  In other words, skip the first -YYN actions for
+             this state because they are default actions.  */
+          int yyxbegin = yyn &lt; 0 ? -yyn : 0;
+          /* Stay within bounds of both yycheck and yytname.  */
+          int yychecklim = YYLAST - yyn + 1;
+          int yyxend = yychecklim &lt; YYNTOKENS ? yychecklim : YYNTOKENS;
+          int yyx;
</ins><span class="cx"> 
</span><del>-# if 0
-      /* This is so xgettext sees the translatable formats that are
-     constructed on the fly.  */
-      YY_(&quot;syntax error, unexpected %s&quot;);
-      YY_(&quot;syntax error, unexpected %s, expecting %s&quot;);
-      YY_(&quot;syntax error, unexpected %s, expecting %s or %s&quot;);
-      YY_(&quot;syntax error, unexpected %s, expecting %s or %s or %s&quot;);
-      YY_(&quot;syntax error, unexpected %s, expecting %s or %s or %s or %s&quot;);
-# endif
-      char *yyfmt;
-      char const *yyf;
-      static char const yyunexpected[] = &quot;syntax error, unexpected %s&quot;;
-      static char const yyexpecting[] = &quot;, expecting %s&quot;;
-      static char const yyor[] = &quot; or %s&quot;;
-      char yyformat[sizeof yyunexpected
-            + sizeof yyexpecting - 1
-            + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
-               * (sizeof yyor - 1))];
-      char const *yyprefix = yyexpecting;
</del><ins>+          for (yyx = yyxbegin; yyx &lt; yyxend; ++yyx)
+            if (yycheck[yyx + yyn] == yyx &amp;&amp; yyx != YYTERROR
+                &amp;&amp; !yytable_value_is_error (yytable[yyx + yyn]))
+              {
+                if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+                  {
+                    yycount = 1;
+                    yysize = yysize0;
+                    break;
+                  }
+                yyarg[yycount++] = yytname[yyx];
+                {
+                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
+                  if (! (yysize &lt;= yysize1
+                         &amp;&amp; yysize1 &lt;= YYSTACK_ALLOC_MAXIMUM))
+                    return 2;
+                  yysize = yysize1;
+                }
+              }
+        }
+    }
</ins><span class="cx"> 
</span><del>-      /* Start YYX at -YYN if negative to avoid negative indexes in
-     YYCHECK.  */
-      int yyxbegin = yyn &lt; 0 ? -yyn : 0;
</del><ins>+  switch (yycount)
+    {
+# define YYCASE_(N, S)                      \
+      case N:                               \
+        yyformat = S;                       \
+      break
+      YYCASE_(0, YY_(&quot;syntax error&quot;));
+      YYCASE_(1, YY_(&quot;syntax error, unexpected %s&quot;));
+      YYCASE_(2, YY_(&quot;syntax error, unexpected %s, expecting %s&quot;));
+      YYCASE_(3, YY_(&quot;syntax error, unexpected %s, expecting %s or %s&quot;));
+      YYCASE_(4, YY_(&quot;syntax error, unexpected %s, expecting %s or %s or %s&quot;));
+      YYCASE_(5, YY_(&quot;syntax error, unexpected %s, expecting %s or %s or %s or %s&quot;));
+# undef YYCASE_
+    }
</ins><span class="cx"> 
</span><del>-      /* Stay within bounds of both yycheck and yytname.  */
-      int yychecklim = YYLAST - yyn + 1;
-      int yyxend = yychecklim &lt; YYNTOKENS ? yychecklim : YYNTOKENS;
-      int yycount = 1;
</del><ins>+  {
+    YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
+    if (! (yysize &lt;= yysize1 &amp;&amp; yysize1 &lt;= YYSTACK_ALLOC_MAXIMUM))
+      return 2;
+    yysize = yysize1;
+  }
</ins><span class="cx"> 
</span><del>-      yyarg[0] = yytname[yytype];
-      yyfmt = yystpcpy (yyformat, yyunexpected);
</del><ins>+  if (*yymsg_alloc &lt; yysize)
+    {
+      *yymsg_alloc = 2 * yysize;
+      if (! (yysize &lt;= *yymsg_alloc
+             &amp;&amp; *yymsg_alloc &lt;= YYSTACK_ALLOC_MAXIMUM))
+        *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
+      return 1;
+    }
</ins><span class="cx"> 
</span><del>-      for (yyx = yyxbegin; yyx &lt; yyxend; ++yyx)
-    if (yycheck[yyx + yyn] == yyx &amp;&amp; yyx != YYTERROR)
-      {
-        if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-          {
-        yycount = 1;
-        yysize = yysize0;
-        yyformat[sizeof yyunexpected - 1] = '\0';
-        break;
-          }
-        yyarg[yycount++] = yytname[yyx];
-        yysize1 = yysize + yytnamerr (0, yytname[yyx]);
-        yysize_overflow |= (yysize1 &lt; yysize);
-        yysize = yysize1;
-        yyfmt = yystpcpy (yyfmt, yyprefix);
-        yyprefix = yyor;
-      }
-
-      yyf = YY_(yyformat);
-      yysize1 = yysize + yystrlen (yyf);
-      yysize_overflow |= (yysize1 &lt; yysize);
-      yysize = yysize1;
-
-      if (yysize_overflow)
-    return YYSIZE_MAXIMUM;
-
-      if (yyresult)
-    {
-      /* Avoid sprintf, as that infringes on the user's name space.
-         Don't have undefined behavior even if the translation
-         produced a string with the wrong number of &quot;%s&quot;s.  */
-      char *yyp = yyresult;
-      int yyi = 0;
-      while ((*yyp = *yyf) != '\0')
</del><ins>+  /* Avoid sprintf, as that infringes on the user's name space.
+     Don't have undefined behavior even if the translation
+     produced a string with the wrong number of &quot;%s&quot;s.  */
+  {
+    char *yyp = *yymsg;
+    int yyi = 0;
+    while ((*yyp = *yyformat) != '\0')
+      if (*yyp == '%' &amp;&amp; yyformat[1] == 's' &amp;&amp; yyi &lt; yycount)
</ins><span class="cx">         {
</span><del>-          if (*yyp == '%' &amp;&amp; yyf[1] == 's' &amp;&amp; yyi &lt; yycount)
-        {
</del><span class="cx">           yyp += yytnamerr (yyp, yyarg[yyi++]);
</span><del>-          yyf += 2;
</del><ins>+          yyformat += 2;
</ins><span class="cx">         }
</span><del>-          else
</del><ins>+      else
</ins><span class="cx">         {
</span><span class="cx">           yyp++;
</span><del>-          yyf++;
</del><ins>+          yyformat++;
</ins><span class="cx">         }
</span><del>-        }
-    }
-      return yysize;
-    }
</del><ins>+  }
+  return 0;
</ins><span class="cx"> }
</span><span class="cx"> #endif /* YYERROR_VERBOSE */
</span><del>-
</del><span class="cx"> 
</span><span class="cx"> /*-----------------------------------------------.
</span><span class="cx"> | Release the memory associated to this symbol.  |
</span><span class="lines">@@ -1892,32 +1922,13 @@
</span><span class="cx">     {
</span><span class="cx"> 
</span><span class="cx">       default:
</span><del>-    break;
</del><ins>+        break;
</ins><span class="cx">     }
</span><span class="cx"> }
</span><del>-
</del><span class="cx"> 
</span><del>-/* Prevent warnings from -Wmissing-prototypes.  */
</del><span class="cx"> 
</span><del>-#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void *YYPARSE_PARAM);
-#else
-int yyparse ();
-#endif
-#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
-int yyparse (TParseContext* context);
-#else
-int yyparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
</del><span class="cx"> 
</span><span class="cx"> 
</span><del>-
-
-
-
</del><span class="cx"> /*----------.
</span><span class="cx"> | yyparse.  |
</span><span class="cx"> `----------*/
</span><span class="lines">@@ -1944,90 +1955,113 @@
</span><span class="cx"> #endif
</span><span class="cx"> #endif
</span><span class="cx"> {
</span><del>-  /* The look-ahead symbol.  */
</del><ins>+/* The lookahead symbol.  */
</ins><span class="cx"> int yychar;
</span><span class="cx"> 
</span><del>-/* The semantic value of the look-ahead symbol.  */
-YYSTYPE yylval;
</del><span class="cx"> 
</span><del>-/* Number of syntax errors so far.  */
-int yynerrs;
-/* Location data for the look-ahead symbol.  */
-YYLTYPE yylloc;
-
-  int yystate;
-  int yyn;
-  int yyresult;
-  /* Number of tokens to shift before error messages enabled.  */
-  int yyerrstatus;
-  /* Look-ahead token as an internal (translated) token number.  */
-  int yytoken = 0;
-#if YYERROR_VERBOSE
-  /* Buffer for error messages, and its allocated size.  */
-  char yymsgbuf[128];
-  char *yymsg = yymsgbuf;
-  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
</del><ins>+#if defined __GNUC__ &amp;&amp; 407 &lt;= __GNUC__ * 100 + __GNUC_MINOR__
+/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
+    _Pragma (&quot;GCC diagnostic push&quot;) \
+    _Pragma (&quot;GCC diagnostic ignored \&quot;-Wuninitialized\&quot;&quot;)\
+    _Pragma (&quot;GCC diagnostic ignored \&quot;-Wmaybe-uninitialized\&quot;&quot;)
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
+    _Pragma (&quot;GCC diagnostic pop&quot;)
+#else
+/* Default value used for initialization, for pacifying older GCCs
+   or non-GCC compilers.  */
+static YYSTYPE yyval_default;
+# define YY_INITIAL_VALUE(Value) = Value
</ins><span class="cx"> #endif
</span><ins>+static YYLTYPE yyloc_default
+# if defined YYLTYPE_IS_TRIVIAL &amp;&amp; YYLTYPE_IS_TRIVIAL
+  = { 1, 1, 1, 1 }
+# endif
+;
+#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END
+#endif
+#ifndef YY_INITIAL_VALUE
+# define YY_INITIAL_VALUE(Value) /* Nothing. */
+#endif
</ins><span class="cx"> 
</span><del>-  /* Three stacks and their tools:
-     `yyss': related to states,
-     `yyvs': related to semantic values,
-     `yyls': related to locations.
</del><ins>+/* The semantic value of the lookahead symbol.  */
+YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
</ins><span class="cx"> 
</span><del>-     Refer to the stacks thru separate pointers, to allow yyoverflow
-     to reallocate them elsewhere.  */
</del><ins>+/* Location data for the lookahead symbol.  */
+YYLTYPE yylloc = yyloc_default;
</ins><span class="cx"> 
</span><del>-  /* The state stack.  */
-  yytype_int16 yyssa[YYINITDEPTH];
-  yytype_int16 *yyss = yyssa;
-  yytype_int16 *yyssp;
</del><span class="cx"> 
</span><del>-  /* The semantic value stack.  */
-  YYSTYPE yyvsa[YYINITDEPTH];
-  YYSTYPE *yyvs = yyvsa;
-  YYSTYPE *yyvsp;
</del><ins>+    /* Number of syntax errors so far.  */
+    int yynerrs;
</ins><span class="cx"> 
</span><del>-  /* The location stack.  */
-  YYLTYPE yylsa[YYINITDEPTH];
-  YYLTYPE *yyls = yylsa;
-  YYLTYPE *yylsp;
-  /* The locations where the error started and ended.  */
-  YYLTYPE yyerror_range[2];
</del><ins>+    int yystate;
+    /* Number of tokens to shift before error messages enabled.  */
+    int yyerrstatus;
</ins><span class="cx"> 
</span><del>-#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
</del><ins>+    /* The stacks and their tools:
+       `yyss': related to states.
+       `yyvs': related to semantic values.
+       `yyls': related to locations.
</ins><span class="cx"> 
</span><del>-  YYSIZE_T yystacksize = YYINITDEPTH;
</del><ins>+       Refer to the stacks through separate pointers, to allow yyoverflow
+       to reallocate them elsewhere.  */
</ins><span class="cx"> 
</span><ins>+    /* The state stack.  */
+    yytype_int16 yyssa[YYINITDEPTH];
+    yytype_int16 *yyss;
+    yytype_int16 *yyssp;
+
+    /* The semantic value stack.  */
+    YYSTYPE yyvsa[YYINITDEPTH];
+    YYSTYPE *yyvs;
+    YYSTYPE *yyvsp;
+
+    /* The location stack.  */
+    YYLTYPE yylsa[YYINITDEPTH];
+    YYLTYPE *yyls;
+    YYLTYPE *yylsp;
+
+    /* The locations where the error started and ended.  */
+    YYLTYPE yyerror_range[3];
+
+    YYSIZE_T yystacksize;
+
+  int yyn;
+  int yyresult;
+  /* Lookahead token as an internal (translated) token number.  */
+  int yytoken = 0;
</ins><span class="cx">   /* The variables used to return semantic value and location from the
</span><span class="cx">      action routines.  */
</span><span class="cx">   YYSTYPE yyval;
</span><span class="cx">   YYLTYPE yyloc;
</span><span class="cx"> 
</span><ins>+#if YYERROR_VERBOSE
+  /* Buffer for error messages, and its allocated size.  */
+  char yymsgbuf[128];
+  char *yymsg = yymsgbuf;
+  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
+#endif
+
+#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
+
</ins><span class="cx">   /* The number of symbols on the RHS of the reduced rule.
</span><span class="cx">      Keep to zero when no symbol should be popped.  */
</span><span class="cx">   int yylen = 0;
</span><span class="cx"> 
</span><ins>+  yyssp = yyss = yyssa;
+  yyvsp = yyvs = yyvsa;
+  yylsp = yyls = yylsa;
+  yystacksize = YYINITDEPTH;
+
</ins><span class="cx">   YYDPRINTF ((stderr, &quot;Starting parse\n&quot;));
</span><span class="cx"> 
</span><span class="cx">   yystate = 0;
</span><span class="cx">   yyerrstatus = 0;
</span><span class="cx">   yynerrs = 0;
</span><del>-  yychar = YYEMPTY;        /* Cause a token to be read.  */
-
-  /* Initialize stack pointers.
-     Waste one element of value and location stack
-     so that they stay on the same level as the state stack.
-     The wasted elements are never initialized.  */
-
-  yyssp = yyss;
-  yyvsp = yyvs;
-  yylsp = yyls;
-#if defined YYLTYPE_IS_TRIVIAL &amp;&amp; YYLTYPE_IS_TRIVIAL
-  /* Initialize the default location before parsing starts.  */
-  yylloc.first_line   = yylloc.last_line   = 1;
-  yylloc.first_column = yylloc.last_column = 0;
-#endif
-
</del><ins>+  yychar = YYEMPTY; /* Cause a token to be read.  */
+  yylsp[0] = yylloc;
</ins><span class="cx">   goto yysetstate;
</span><span class="cx"> 
</span><span class="cx"> /*------------------------------------------------------------.
</span><span class="lines">@@ -2048,25 +2082,26 @@
</span><span class="cx"> 
</span><span class="cx"> #ifdef yyoverflow
</span><span class="cx">       {
</span><del>-    /* Give user a chance to reallocate the stack.  Use copies of
-       these so that the &amp;'s don't force the real ones into
-       memory.  */
-    YYSTYPE *yyvs1 = yyvs;
-    yytype_int16 *yyss1 = yyss;
-    YYLTYPE *yyls1 = yyls;
</del><ins>+        /* Give user a chance to reallocate the stack.  Use copies of
+           these so that the &amp;'s don't force the real ones into
+           memory.  */
+        YYSTYPE *yyvs1 = yyvs;
+        yytype_int16 *yyss1 = yyss;
+        YYLTYPE *yyls1 = yyls;
</ins><span class="cx"> 
</span><del>-    /* Each stack pointer address is followed by the size of the
-       data in use in that stack, in bytes.  This used to be a
-       conditional around just the two extra args, but that might
-       be undefined if yyoverflow is a macro.  */
-    yyoverflow (YY_(&quot;memory exhausted&quot;),
-            &amp;yyss1, yysize * sizeof (*yyssp),
-            &amp;yyvs1, yysize * sizeof (*yyvsp),
-            &amp;yyls1, yysize * sizeof (*yylsp),
-            &amp;yystacksize);
-    yyls = yyls1;
-    yyss = yyss1;
-    yyvs = yyvs1;
</del><ins>+        /* Each stack pointer address is followed by the size of the
+           data in use in that stack, in bytes.  This used to be a
+           conditional around just the two extra args, but that might
+           be undefined if yyoverflow is a macro.  */
+        yyoverflow (YY_(&quot;memory exhausted&quot;),
+                    &amp;yyss1, yysize * sizeof (*yyssp),
+                    &amp;yyvs1, yysize * sizeof (*yyvsp),
+                    &amp;yyls1, yysize * sizeof (*yylsp),
+                    &amp;yystacksize);
+
+        yyls = yyls1;
+        yyss = yyss1;
+        yyvs = yyvs1;
</ins><span class="cx">       }
</span><span class="cx"> #else /* no yyoverflow */
</span><span class="cx"> # ifndef YYSTACK_RELOCATE
</span><span class="lines">@@ -2074,23 +2109,23 @@
</span><span class="cx"> # else
</span><span class="cx">       /* Extend the stack our own way.  */
</span><span class="cx">       if (YYMAXDEPTH &lt;= yystacksize)
</span><del>-    goto yyexhaustedlab;
</del><ins>+        goto yyexhaustedlab;
</ins><span class="cx">       yystacksize *= 2;
</span><span class="cx">       if (YYMAXDEPTH &lt; yystacksize)
</span><del>-    yystacksize = YYMAXDEPTH;
</del><ins>+        yystacksize = YYMAXDEPTH;
</ins><span class="cx"> 
</span><span class="cx">       {
</span><del>-    yytype_int16 *yyss1 = yyss;
-    union yyalloc *yyptr =
-      (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
-    if (! yyptr)
-      goto yyexhaustedlab;
-    YYSTACK_RELOCATE (yyss);
-    YYSTACK_RELOCATE (yyvs);
-    YYSTACK_RELOCATE (yyls);
</del><ins>+        yytype_int16 *yyss1 = yyss;
+        union yyalloc *yyptr =
+          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+        if (! yyptr)
+          goto yyexhaustedlab;
+        YYSTACK_RELOCATE (yyss_alloc, yyss);
+        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
+        YYSTACK_RELOCATE (yyls_alloc, yyls);
</ins><span class="cx"> #  undef YYSTACK_RELOCATE
</span><del>-    if (yyss1 != yyssa)
-      YYSTACK_FREE (yyss1);
</del><ins>+        if (yyss1 != yyssa)
+          YYSTACK_FREE (yyss1);
</ins><span class="cx">       }
</span><span class="cx"> # endif
</span><span class="cx"> #endif /* no yyoverflow */
</span><span class="lines">@@ -2100,14 +2135,17 @@
</span><span class="cx">       yylsp = yyls + yysize - 1;
</span><span class="cx"> 
</span><span class="cx">       YYDPRINTF ((stderr, &quot;Stack size increased to %lu\n&quot;,
</span><del>-          (unsigned long int) yystacksize));
</del><ins>+                  (unsigned long int) yystacksize));
</ins><span class="cx"> 
</span><span class="cx">       if (yyss + yystacksize - 1 &lt;= yyssp)
</span><del>-    YYABORT;
</del><ins>+        YYABORT;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">   YYDPRINTF ((stderr, &quot;Entering state %d\n&quot;, yystate));
</span><span class="cx"> 
</span><ins>+  if (yystate == YYFINAL)
+    YYACCEPT;
+
</ins><span class="cx">   goto yybackup;
</span><span class="cx"> 
</span><span class="cx"> /*-----------.
</span><span class="lines">@@ -2116,16 +2154,16 @@
</span><span class="cx"> yybackup:
</span><span class="cx"> 
</span><span class="cx">   /* Do appropriate processing given the current state.  Read a
</span><del>-     look-ahead token if we need one and don't already have one.  */
</del><ins>+     lookahead token if we need one and don't already have one.  */
</ins><span class="cx"> 
</span><del>-  /* First try to decide what to do without reference to look-ahead token.  */
</del><ins>+  /* First try to decide what to do without reference to lookahead token.  */
</ins><span class="cx">   yyn = yypact[yystate];
</span><del>-  if (yyn == YYPACT_NINF)
</del><ins>+  if (yypact_value_is_default (yyn))
</ins><span class="cx">     goto yydefault;
</span><span class="cx"> 
</span><del>-  /* Not known =&gt; get a look-ahead token if don't already have one.  */
</del><ins>+  /* Not known =&gt; get a lookahead token if don't already have one.  */
</ins><span class="cx"> 
</span><del>-  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
</del><ins>+  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
</ins><span class="cx">   if (yychar == YYEMPTY)
</span><span class="cx">     {
</span><span class="cx">       YYDPRINTF ((stderr, &quot;Reading a token: &quot;));
</span><span class="lines">@@ -2151,29 +2189,27 @@
</span><span class="cx">   yyn = yytable[yyn];
</span><span class="cx">   if (yyn &lt;= 0)
</span><span class="cx">     {
</span><del>-      if (yyn == 0 || yyn == YYTABLE_NINF)
-    goto yyerrlab;
</del><ins>+      if (yytable_value_is_error (yyn))
+        goto yyerrlab;
</ins><span class="cx">       yyn = -yyn;
</span><span class="cx">       goto yyreduce;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-  if (yyn == YYFINAL)
-    YYACCEPT;
-
</del><span class="cx">   /* Count tokens shifted since error; after three, turn off error
</span><span class="cx">      status.  */
</span><span class="cx">   if (yyerrstatus)
</span><span class="cx">     yyerrstatus--;
</span><span class="cx"> 
</span><del>-  /* Shift the look-ahead token.  */
</del><ins>+  /* Shift the lookahead token.  */
</ins><span class="cx">   YY_SYMBOL_PRINT (&quot;Shifting&quot;, yytoken, &amp;yylval, &amp;yylloc);
</span><span class="cx"> 
</span><del>-  /* Discard the shifted token unless it is eof.  */
-  if (yychar != YYEOF)
-    yychar = YYEMPTY;
</del><ins>+  /* Discard the shifted token.  */
+  yychar = YYEMPTY;
</ins><span class="cx"> 
</span><span class="cx">   yystate = yyn;
</span><ins>+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
</ins><span class="cx">   *++yyvsp = yylval;
</span><ins>+  YY_IGNORE_MAYBE_UNINITIALIZED_END
</ins><span class="cx">   *++yylsp = yylloc;
</span><span class="cx">   goto yynewstate;
</span><span class="cx"> 
</span><span class="lines">@@ -2251,31 +2287,23 @@
</span><span class="cx">                                                  variable-&gt;getName(),
</span><span class="cx">                                                  variable-&gt;getType(),
</span><span class="cx">                                                  (yylsp[(1) - (1)]));
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 5:
</span><span class="cx"> 
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 6:
</span><span class="cx"> 
</span><span class="cx">     {
</span><del>-        //
-        // INT_TYPE is only 16-bit plus sign bit for vertex/fragment shaders,
-        // check for overflow for constants
-        //
-        if (abs((yyvsp[(1) - (1)].lex).i) &gt;= (1 &lt;&lt; 16)) {
-            context-&gt;error((yylsp[(1) - (1)]), &quot; integer constant overflow&quot;, &quot;&quot;);
-            context-&gt;recover();
-        }
</del><span class="cx">         ConstantUnion *unionArray = new ConstantUnion[1];
</span><span class="cx">         unionArray-&gt;setIConst((yyvsp[(1) - (1)].lex).i);
</span><span class="cx">         (yyval.interm.intermTypedNode) = context-&gt;intermediate.addConstantUnion(unionArray, TType(EbtInt, EbpUndefined, EvqConst), (yylsp[(1) - (1)]));
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 7:
</span><span class="lines">@@ -2284,7 +2312,7 @@
</span><span class="cx">         ConstantUnion *unionArray = new ConstantUnion[1];
</span><span class="cx">         unionArray-&gt;setFConst((yyvsp[(1) - (1)].lex).f);
</span><span class="cx">         (yyval.interm.intermTypedNode) = context-&gt;intermediate.addConstantUnion(unionArray, TType(EbtFloat, EbpUndefined, EvqConst), (yylsp[(1) - (1)]));
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 8:
</span><span class="lines">@@ -2293,35 +2321,35 @@
</span><span class="cx">         ConstantUnion *unionArray = new ConstantUnion[1];
</span><span class="cx">         unionArray-&gt;setBConst((yyvsp[(1) - (1)].lex).b);
</span><span class="cx">         (yyval.interm.intermTypedNode) = context-&gt;intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yylsp[(1) - (1)]));
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 9:
</span><span class="cx"> 
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm.intermTypedNode) = (yyvsp[(2) - (3)].interm.intermTypedNode);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 10:
</span><span class="cx"> 
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 11:
</span><span class="cx"> 
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm.intermTypedNode) = context-&gt;addIndexExpression((yyvsp[(1) - (4)].interm.intermTypedNode), (yylsp[(2) - (4)]), (yyvsp[(3) - (4)].interm.intermTypedNode));
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 12:
</span><span class="cx"> 
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 13:
</span><span class="lines">@@ -2420,7 +2448,7 @@
</span><span class="cx">             (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
</span><span class="cx">         }
</span><span class="cx">         // don't delete $3.string, it's from the pool
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 14:
</span><span class="lines">@@ -2434,7 +2462,7 @@
</span><span class="cx">             context-&gt;recover();
</span><span class="cx">             (yyval.interm.intermTypedNode) = (yyvsp[(1) - (2)].interm.intermTypedNode);
</span><span class="cx">         }
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 15:
</span><span class="lines">@@ -2448,7 +2476,7 @@
</span><span class="cx">             context-&gt;recover();
</span><span class="cx">             (yyval.interm.intermTypedNode) = (yyvsp[(1) - (2)].interm.intermTypedNode);
</span><span class="cx">         }
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 16:
</span><span class="lines">@@ -2457,7 +2485,7 @@
</span><span class="cx">         if (context-&gt;integerErrorCheck((yyvsp[(1) - (1)].interm.intermTypedNode), &quot;[]&quot;))
</span><span class="cx">             context-&gt;recover();
</span><span class="cx">         (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 17:
</span><span class="lines">@@ -2558,14 +2586,14 @@
</span><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx">         delete fnCall;
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 18:
</span><span class="cx"> 
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm) = (yyvsp[(1) - (1)].interm);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 19:
</span><span class="lines">@@ -2574,21 +2602,21 @@
</span><span class="cx">         context-&gt;error((yylsp[(3) - (3)]), &quot;methods are not supported&quot;, &quot;&quot;);
</span><span class="cx">         context-&gt;recover();
</span><span class="cx">         (yyval.interm) = (yyvsp[(3) - (3)].interm);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 20:
</span><span class="cx"> 
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm) = (yyvsp[(1) - (2)].interm);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 21:
</span><span class="cx"> 
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm) = (yyvsp[(1) - (2)].interm);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 22:
</span><span class="lines">@@ -2596,7 +2624,7 @@
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm).function = (yyvsp[(1) - (2)].interm.function);
</span><span class="cx">         (yyval.interm).intermNode = 0;
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 23:
</span><span class="lines">@@ -2604,7 +2632,7 @@
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm).function = (yyvsp[(1) - (1)].interm.function);
</span><span class="cx">         (yyval.interm).intermNode = 0;
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 24:
</span><span class="lines">@@ -2614,7 +2642,7 @@
</span><span class="cx">         (yyvsp[(1) - (2)].interm.function)-&gt;addParameter(param);
</span><span class="cx">         (yyval.interm).function = (yyvsp[(1) - (2)].interm.function);
</span><span class="cx">         (yyval.interm).intermNode = (yyvsp[(2) - (2)].interm.intermTypedNode);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 25:
</span><span class="lines">@@ -2624,14 +2652,14 @@
</span><span class="cx">         (yyvsp[(1) - (3)].interm).function-&gt;addParameter(param);
</span><span class="cx">         (yyval.interm).function = (yyvsp[(1) - (3)].interm).function;
</span><span class="cx">         (yyval.interm).intermNode = context-&gt;intermediate.growAggregate((yyvsp[(1) - (3)].interm).intermNode, (yyvsp[(3) - (3)].interm.intermTypedNode), (yylsp[(2) - (3)]));
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 26:
</span><span class="cx"> 
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm.function) = (yyvsp[(1) - (2)].interm.function);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 27:
</span><span class="lines">@@ -2690,7 +2718,7 @@
</span><span class="cx">         TType type((yyvsp[(1) - (1)].interm.type));
</span><span class="cx">         TFunction *function = new TFunction(&amp;tempString, type, op);
</span><span class="cx">         (yyval.interm.function) = function;
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 28:
</span><span class="lines">@@ -2701,14 +2729,14 @@
</span><span class="cx">         TType type(EbtVoid, EbpUndefined);
</span><span class="cx">         TFunction *function = new TFunction((yyvsp[(1) - (1)].lex).string, type);
</span><span class="cx">         (yyval.interm.function) = function;
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 29:
</span><span class="cx"> 
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 30:
</span><span class="lines">@@ -2722,7 +2750,7 @@
</span><span class="cx">             context-&gt;recover();
</span><span class="cx">             (yyval.interm.intermTypedNode) = (yyvsp[(2) - (2)].interm.intermTypedNode);
</span><span class="cx">         }
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 31:
</span><span class="lines">@@ -2736,7 +2764,7 @@
</span><span class="cx">             context-&gt;recover();
</span><span class="cx">             (yyval.interm.intermTypedNode) = (yyvsp[(2) - (2)].interm.intermTypedNode);
</span><span class="cx">         }
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 32:
</span><span class="lines">@@ -2757,27 +2785,27 @@
</span><span class="cx">             }
</span><span class="cx">         } else
</span><span class="cx">             (yyval.interm.intermTypedNode) = (yyvsp[(2) - (2)].interm.intermTypedNode);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 33:
</span><span class="cx"> 
</span><del>-    { (yyval.interm).op = EOpNull; ;}
</del><ins>+    { (yyval.interm).op = EOpNull; }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 34:
</span><span class="cx"> 
</span><del>-    { (yyval.interm).op = EOpNegative; ;}
</del><ins>+    { (yyval.interm).op = EOpNegative; }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 35:
</span><span class="cx"> 
</span><del>-    { (yyval.interm).op = EOpLogicalNot; ;}
</del><ins>+    { (yyval.interm).op = EOpLogicalNot; }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 36:
</span><span class="cx"> 
</span><del>-    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
</del><ins>+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 37:
</span><span class="lines">@@ -2789,7 +2817,7 @@
</span><span class="cx">             context-&gt;recover();
</span><span class="cx">             (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
</span><span class="cx">         }
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 38:
</span><span class="lines">@@ -2801,12 +2829,12 @@
</span><span class="cx">             context-&gt;recover();
</span><span class="cx">             (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
</span><span class="cx">         }
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 39:
</span><span class="cx"> 
</span><del>-    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
</del><ins>+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 40:
</span><span class="lines">@@ -2818,7 +2846,7 @@
</span><span class="cx">             context-&gt;recover();
</span><span class="cx">             (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
</span><span class="cx">         }
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 41:
</span><span class="lines">@@ -2830,17 +2858,17 @@
</span><span class="cx">             context-&gt;recover();
</span><span class="cx">             (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
</span><span class="cx">         }
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 42:
</span><span class="cx"> 
</span><del>-    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
</del><ins>+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 43:
</span><span class="cx"> 
</span><del>-    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
</del><ins>+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 44:
</span><span class="lines">@@ -2854,7 +2882,7 @@
</span><span class="cx">             unionArray-&gt;setBConst(false);
</span><span class="cx">             (yyval.interm.intermTypedNode) = context-&gt;intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yylsp[(2) - (3)]));
</span><span class="cx">         }
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 45:
</span><span class="lines">@@ -2868,7 +2896,7 @@
</span><span class="cx">             unionArray-&gt;setBConst(false);
</span><span class="cx">             (yyval.interm.intermTypedNode) = context-&gt;intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yylsp[(2) - (3)]));
</span><span class="cx">         }
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 46:
</span><span class="lines">@@ -2882,7 +2910,7 @@
</span><span class="cx">             unionArray-&gt;setBConst(false);
</span><span class="cx">             (yyval.interm.intermTypedNode) = context-&gt;intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yylsp[(2) - (3)]));
</span><span class="cx">         }
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 47:
</span><span class="lines">@@ -2896,12 +2924,12 @@
</span><span class="cx">             unionArray-&gt;setBConst(false);
</span><span class="cx">             (yyval.interm.intermTypedNode) = context-&gt;intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yylsp[(2) - (3)]));
</span><span class="cx">         }
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 48:
</span><span class="cx"> 
</span><del>-    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
</del><ins>+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 49:
</span><span class="lines">@@ -2915,7 +2943,7 @@
</span><span class="cx">             unionArray-&gt;setBConst(false);
</span><span class="cx">             (yyval.interm.intermTypedNode) = context-&gt;intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yylsp[(2) - (3)]));
</span><span class="cx">         }
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 50:
</span><span class="lines">@@ -2929,27 +2957,27 @@
</span><span class="cx">             unionArray-&gt;setBConst(false);
</span><span class="cx">             (yyval.interm.intermTypedNode) = context-&gt;intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yylsp[(2) - (3)]));
</span><span class="cx">         }
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 51:
</span><span class="cx"> 
</span><del>-    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
</del><ins>+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 52:
</span><span class="cx"> 
</span><del>-    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
</del><ins>+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 53:
</span><span class="cx"> 
</span><del>-    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
</del><ins>+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 54:
</span><span class="cx"> 
</span><del>-    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
</del><ins>+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 55:
</span><span class="lines">@@ -2963,12 +2991,12 @@
</span><span class="cx">             unionArray-&gt;setBConst(false);
</span><span class="cx">             (yyval.interm.intermTypedNode) = context-&gt;intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yylsp[(2) - (3)]));
</span><span class="cx">         }
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 56:
</span><span class="cx"> 
</span><del>-    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
</del><ins>+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 57:
</span><span class="lines">@@ -2982,12 +3010,12 @@
</span><span class="cx">             unionArray-&gt;setBConst(false);
</span><span class="cx">             (yyval.interm.intermTypedNode) = context-&gt;intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yylsp[(2) - (3)]));
</span><span class="cx">         }
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 58:
</span><span class="cx"> 
</span><del>-    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
</del><ins>+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 59:
</span><span class="lines">@@ -3001,12 +3029,12 @@
</span><span class="cx">             unionArray-&gt;setBConst(false);
</span><span class="cx">             (yyval.interm.intermTypedNode) = context-&gt;intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yylsp[(2) - (3)]));
</span><span class="cx">         }
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 60:
</span><span class="cx"> 
</span><del>-    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
</del><ins>+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 61:
</span><span class="lines">@@ -3024,12 +3052,12 @@
</span><span class="cx">             context-&gt;recover();
</span><span class="cx">             (yyval.interm.intermTypedNode) = (yyvsp[(5) - (5)].interm.intermTypedNode);
</span><span class="cx">         }
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 62:
</span><span class="cx"> 
</span><del>-    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
</del><ins>+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 63:
</span><span class="lines">@@ -3043,39 +3071,39 @@
</span><span class="cx">             context-&gt;recover();
</span><span class="cx">             (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
</span><span class="cx">         }
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 64:
</span><span class="cx"> 
</span><del>-    { (yyval.interm).op = EOpAssign; ;}
</del><ins>+    { (yyval.interm).op = EOpAssign; }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 65:
</span><span class="cx"> 
</span><del>-    { (yyval.interm).op = EOpMulAssign; ;}
</del><ins>+    { (yyval.interm).op = EOpMulAssign; }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 66:
</span><span class="cx"> 
</span><del>-    { (yyval.interm).op = EOpDivAssign; ;}
</del><ins>+    { (yyval.interm).op = EOpDivAssign; }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 67:
</span><span class="cx"> 
</span><del>-    { (yyval.interm).op = EOpAddAssign; ;}
</del><ins>+    { (yyval.interm).op = EOpAddAssign; }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 68:
</span><span class="cx"> 
</span><del>-    { (yyval.interm).op = EOpSubAssign; ;}
</del><ins>+    { (yyval.interm).op = EOpSubAssign; }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 69:
</span><span class="cx"> 
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 70:
</span><span class="lines">@@ -3087,7 +3115,7 @@
</span><span class="cx">             context-&gt;recover();
</span><span class="cx">             (yyval.interm.intermTypedNode) = (yyvsp[(3) - (3)].interm.intermTypedNode);
</span><span class="cx">         }
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 71:
</span><span class="lines">@@ -3096,7 +3124,7 @@
</span><span class="cx">         if (context-&gt;constErrorCheck((yyvsp[(1) - (1)].interm.intermTypedNode)))
</span><span class="cx">             context-&gt;recover();
</span><span class="cx">         (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 72:
</span><span class="lines">@@ -3127,7 +3155,7 @@
</span><span class="cx">         (yyval.interm.intermNode) = prototype;
</span><span class="cx"> 
</span><span class="cx">         context-&gt;symbolTable.pop();
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 73:
</span><span class="lines">@@ -3136,7 +3164,7 @@
</span><span class="cx">         if ((yyvsp[(1) - (2)].interm).intermAggregate)
</span><span class="cx">             (yyvsp[(1) - (2)].interm).intermAggregate-&gt;setOp(EOpDeclaration);
</span><span class="cx">         (yyval.interm.intermNode) = (yyvsp[(1) - (2)].interm).intermAggregate;
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 74:
</span><span class="lines">@@ -3151,7 +3179,7 @@
</span><span class="cx">             context-&gt;recover();
</span><span class="cx">         }
</span><span class="cx">         (yyval.interm.intermNode) = 0;
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 75:
</span><span class="lines">@@ -3207,21 +3235,21 @@
</span><span class="cx">         // We're at the inner scope level of the function's arguments and body statement.
</span><span class="cx">         // Add the function prototype to the surrounding scope instead.
</span><span class="cx">         context-&gt;symbolTable.getOuterLevel()-&gt;insert(*(yyval.interm).function);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 76:
</span><span class="cx"> 
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm.function) = (yyvsp[(1) - (1)].interm.function);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 77:
</span><span class="cx"> 
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm.function) = (yyvsp[(1) - (1)].interm.function);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 78:
</span><span class="lines">@@ -3233,7 +3261,7 @@
</span><span class="cx">             (yyvsp[(1) - (2)].interm.function)-&gt;addParameter((yyvsp[(2) - (2)].interm).param);
</span><span class="cx">         else
</span><span class="cx">             delete (yyvsp[(2) - (2)].interm).param.type;
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 79:
</span><span class="lines">@@ -3255,7 +3283,7 @@
</span><span class="cx">             (yyval.interm.function) = (yyvsp[(1) - (3)].interm.function);
</span><span class="cx">             (yyvsp[(1) - (3)].interm.function)-&gt;addParameter((yyvsp[(3) - (3)].interm).param);
</span><span class="cx">         }
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 80:
</span><span class="lines">@@ -3276,7 +3304,7 @@
</span><span class="cx">         (yyval.interm.function) = function;
</span><span class="cx">         
</span><span class="cx">         context-&gt;symbolTable.push();
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 81:
</span><span class="lines">@@ -3290,7 +3318,7 @@
</span><span class="cx">             context-&gt;recover();
</span><span class="cx">         TParameter param = {(yyvsp[(2) - (2)].lex).string, new TType((yyvsp[(1) - (2)].interm.type))};
</span><span class="cx">         (yyval.interm).param = param;
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 82:
</span><span class="lines">@@ -3311,7 +3339,7 @@
</span><span class="cx">         TType* type = new TType((yyvsp[(1) - (5)].interm.type));
</span><span class="cx">         TParameter param = { (yyvsp[(2) - (5)].lex).string, type };
</span><span class="cx">         (yyval.interm).param = param;
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 83:
</span><span class="lines">@@ -3320,7 +3348,7 @@
</span><span class="cx">         (yyval.interm) = (yyvsp[(3) - (3)].interm);
</span><span class="cx">         if (context-&gt;paramErrorCheck((yylsp[(3) - (3)]), (yyvsp[(1) - (3)].interm.type).qualifier, (yyvsp[(2) - (3)].interm.qualifier), (yyval.interm).param.type))
</span><span class="cx">             context-&gt;recover();
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 84:
</span><span class="lines">@@ -3331,7 +3359,7 @@
</span><span class="cx">             context-&gt;recover();
</span><span class="cx">         if (context-&gt;paramErrorCheck((yylsp[(2) - (2)]), EvqTemporary, (yyvsp[(1) - (2)].interm.qualifier), (yyval.interm).param.type))
</span><span class="cx">             context-&gt;recover();
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 85:
</span><span class="lines">@@ -3340,7 +3368,7 @@
</span><span class="cx">         (yyval.interm) = (yyvsp[(3) - (3)].interm);
</span><span class="cx">         if (context-&gt;paramErrorCheck((yylsp[(3) - (3)]), (yyvsp[(1) - (3)].interm.type).qualifier, (yyvsp[(2) - (3)].interm.qualifier), (yyval.interm).param.type))
</span><span class="cx">             context-&gt;recover();
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 86:
</span><span class="lines">@@ -3351,35 +3379,35 @@
</span><span class="cx">             context-&gt;recover();
</span><span class="cx">         if (context-&gt;paramErrorCheck((yylsp[(2) - (2)]), EvqTemporary, (yyvsp[(1) - (2)].interm.qualifier), (yyval.interm).param.type))
</span><span class="cx">             context-&gt;recover();
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 87:
</span><span class="cx"> 
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm.qualifier) = EvqIn;
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 88:
</span><span class="cx"> 
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm.qualifier) = EvqIn;
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 89:
</span><span class="cx"> 
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm.qualifier) = EvqOut;
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 90:
</span><span class="cx"> 
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm.qualifier) = EvqInOut;
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 91:
</span><span class="lines">@@ -3387,14 +3415,14 @@
</span><span class="cx">     {
</span><span class="cx">         TParameter param = { 0, new TType((yyvsp[(1) - (1)].interm.type)) };
</span><span class="cx">         (yyval.interm).param = param;
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 92:
</span><span class="cx"> 
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm) = (yyvsp[(1) - (1)].interm);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 93:
</span><span class="lines">@@ -3420,7 +3448,7 @@
</span><span class="cx">             context-&gt;recover();
</span><span class="cx">         if (symbol &amp;&amp; variable)
</span><span class="cx">             symbol-&gt;setId(variable-&gt;getUniqueId());
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 94:
</span><span class="lines">@@ -3442,7 +3470,7 @@
</span><span class="cx">             if (context-&gt;arrayErrorCheck((yylsp[(4) - (5)]), *(yyvsp[(3) - (5)].lex).string, (yyvsp[(1) - (5)].interm).type, variable))
</span><span class="cx">                 context-&gt;recover();
</span><span class="cx">         }
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 95:
</span><span class="lines">@@ -3470,7 +3498,7 @@
</span><span class="cx">             type.setArraySize(size);
</span><span class="cx">             (yyval.interm).intermAggregate = context-&gt;intermediate.growAggregate((yyvsp[(1) - (6)].interm).intermNode, context-&gt;intermediate.addSymbol(variable ? variable-&gt;getUniqueId() : 0, *(yyvsp[(3) - (6)].lex).string, type, (yylsp[(3) - (6)])), (yylsp[(3) - (6)]));
</span><span class="cx">         }
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 96:
</span><span class="lines">@@ -3494,7 +3522,7 @@
</span><span class="cx">             context-&gt;recover();
</span><span class="cx">             (yyval.interm).intermAggregate = 0;
</span><span class="cx">         }
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 97:
</span><span class="lines">@@ -3502,7 +3530,7 @@
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm).type = (yyvsp[(1) - (1)].interm.type);
</span><span class="cx">         (yyval.interm).intermAggregate = context-&gt;intermediate.makeAggregate(context-&gt;intermediate.addSymbol(0, &quot;&quot;, TType((yyvsp[(1) - (1)].interm.type)), (yylsp[(1) - (1)])), (yylsp[(1) - (1)]));
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 98:
</span><span class="lines">@@ -3524,7 +3552,7 @@
</span><span class="cx">             context-&gt;recover();
</span><span class="cx">         if (variable &amp;&amp; symbol)
</span><span class="cx">             symbol-&gt;setId(variable-&gt;getUniqueId());
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 99:
</span><span class="lines">@@ -3536,7 +3564,7 @@
</span><span class="cx">         TIntermSymbol* symbol = context-&gt;intermediate.addSymbol(0, *(yyvsp[(2) - (4)].lex).string, TType((yyvsp[(1) - (4)].interm.type)), (yylsp[(2) - (4)]));
</span><span class="cx">         (yyval.interm).intermAggregate = context-&gt;intermediate.makeAggregate(symbol, (yylsp[(2) - (4)]));
</span><span class="cx">         (yyval.interm).type = (yyvsp[(1) - (4)].interm.type);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 100:
</span><span class="lines">@@ -3572,7 +3600,7 @@
</span><span class="cx">             if (variable &amp;&amp; symbol)
</span><span class="cx">                 symbol-&gt;setId(variable-&gt;getUniqueId());
</span><span class="cx">         }
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 101:
</span><span class="lines">@@ -3596,7 +3624,7 @@
</span><span class="cx">             context-&gt;recover();
</span><span class="cx">             (yyval.interm).intermAggregate = 0;
</span><span class="cx">         }
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 102:
</span><span class="lines">@@ -3618,7 +3646,7 @@
</span><span class="cx">             TIntermSymbol *symbol = context-&gt;intermediate.addSymbol(0, *(yyvsp[(2) - (2)].lex).string, TType((yyval.interm).type), (yylsp[(2) - (2)]));
</span><span class="cx">             (yyval.interm).intermAggregate = context-&gt;intermediate.makeAggregate(symbol, (yylsp[(2) - (2)]));
</span><span class="cx">         }
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 103:
</span><span class="lines">@@ -3631,7 +3659,7 @@
</span><span class="cx">             context-&gt;recover();
</span><span class="cx">             (yyvsp[(1) - (1)].interm.type).setArray(false);
</span><span class="cx">         }
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 104:
</span><span class="lines">@@ -3655,14 +3683,14 @@
</span><span class="cx">         }
</span><span class="cx">         (yyval.interm.type) = (yyvsp[(2) - (2)].interm.type);
</span><span class="cx">         (yyval.interm.type).qualifier = (yyvsp[(1) - (2)].interm.type).qualifier;
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 105:
</span><span class="cx"> 
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm.type).setBasic(EbtVoid, EvqConst, (yylsp[(1) - (1)]));
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 106:
</span><span class="lines">@@ -3672,7 +3700,7 @@
</span><span class="cx">         if (context-&gt;globalErrorCheck((yylsp[(1) - (1)]), context-&gt;symbolTable.atGlobalLevel(), &quot;attribute&quot;))
</span><span class="cx">             context-&gt;recover();
</span><span class="cx">         (yyval.interm.type).setBasic(EbtVoid, EvqAttribute, (yylsp[(1) - (1)]));
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 107:
</span><span class="lines">@@ -3684,7 +3712,7 @@
</span><span class="cx">             (yyval.interm.type).setBasic(EbtVoid, EvqVaryingOut, (yylsp[(1) - (1)]));
</span><span class="cx">         else
</span><span class="cx">             (yyval.interm.type).setBasic(EbtVoid, EvqVaryingIn, (yylsp[(1) - (1)]));
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 108:
</span><span class="lines">@@ -3696,7 +3724,7 @@
</span><span class="cx">             (yyval.interm.type).setBasic(EbtVoid, EvqInvariantVaryingOut, (yylsp[(1) - (2)]));
</span><span class="cx">         else
</span><span class="cx">             (yyval.interm.type).setBasic(EbtVoid, EvqInvariantVaryingIn, (yylsp[(1) - (2)]));
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 109:
</span><span class="lines">@@ -3705,7 +3733,7 @@
</span><span class="cx">         if (context-&gt;globalErrorCheck((yylsp[(1) - (1)]), context-&gt;symbolTable.atGlobalLevel(), &quot;uniform&quot;))
</span><span class="cx">             context-&gt;recover();
</span><span class="cx">         (yyval.interm.type).setBasic(EbtVoid, EvqUniform, (yylsp[(1) - (1)]));
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 110:
</span><span class="lines">@@ -3719,7 +3747,7 @@
</span><span class="cx">                 context-&gt;recover();
</span><span class="cx">             }
</span><span class="cx">         }
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 111:
</span><span class="lines">@@ -3727,35 +3755,35 @@
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm.type) = (yyvsp[(2) - (2)].interm.type);
</span><span class="cx">         (yyval.interm.type).precision = (yyvsp[(1) - (2)].interm.precision);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 112:
</span><span class="cx"> 
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm.precision) = EbpHigh;
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 113:
</span><span class="cx"> 
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm.precision) = EbpMedium;
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 114:
</span><span class="cx"> 
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm.precision) = EbpLow;
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 115:
</span><span class="cx"> 
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 116:
</span><span class="lines">@@ -3771,7 +3799,7 @@
</span><span class="cx">                 context-&gt;recover();
</span><span class="cx">             (yyval.interm.type).setArray(true, size);
</span><span class="cx">         }
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 117:
</span><span class="lines">@@ -3779,7 +3807,7 @@
</span><span class="cx">     {
</span><span class="cx">         TQualifier qual = context-&gt;symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx">         (yyval.interm.type).setBasic(EbtVoid, qual, (yylsp[(1) - (1)]));
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 118:
</span><span class="lines">@@ -3787,7 +3815,7 @@
</span><span class="cx">     {
</span><span class="cx">         TQualifier qual = context-&gt;symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx">         (yyval.interm.type).setBasic(EbtFloat, qual, (yylsp[(1) - (1)]));
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 119:
</span><span class="lines">@@ -3795,7 +3823,7 @@
</span><span class="cx">     {
</span><span class="cx">         TQualifier qual = context-&gt;symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx">         (yyval.interm.type).setBasic(EbtInt, qual, (yylsp[(1) - (1)]));
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 120:
</span><span class="lines">@@ -3803,7 +3831,7 @@
</span><span class="cx">     {
</span><span class="cx">         TQualifier qual = context-&gt;symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx">         (yyval.interm.type).setBasic(EbtBool, qual, (yylsp[(1) - (1)]));
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 121:
</span><span class="lines">@@ -3812,7 +3840,7 @@
</span><span class="cx">         TQualifier qual = context-&gt;symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx">         (yyval.interm.type).setBasic(EbtFloat, qual, (yylsp[(1) - (1)]));
</span><span class="cx">         (yyval.interm.type).setAggregate(2);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 122:
</span><span class="lines">@@ -3821,7 +3849,7 @@
</span><span class="cx">         TQualifier qual = context-&gt;symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx">         (yyval.interm.type).setBasic(EbtFloat, qual, (yylsp[(1) - (1)]));
</span><span class="cx">         (yyval.interm.type).setAggregate(3);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 123:
</span><span class="lines">@@ -3830,7 +3858,7 @@
</span><span class="cx">         TQualifier qual = context-&gt;symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx">         (yyval.interm.type).setBasic(EbtFloat, qual, (yylsp[(1) - (1)]));
</span><span class="cx">         (yyval.interm.type).setAggregate(4);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 124:
</span><span class="lines">@@ -3839,7 +3867,7 @@
</span><span class="cx">         TQualifier qual = context-&gt;symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx">         (yyval.interm.type).setBasic(EbtBool, qual, (yylsp[(1) - (1)]));
</span><span class="cx">         (yyval.interm.type).setAggregate(2);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 125:
</span><span class="lines">@@ -3848,7 +3876,7 @@
</span><span class="cx">         TQualifier qual = context-&gt;symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx">         (yyval.interm.type).setBasic(EbtBool, qual, (yylsp[(1) - (1)]));
</span><span class="cx">         (yyval.interm.type).setAggregate(3);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 126:
</span><span class="lines">@@ -3857,7 +3885,7 @@
</span><span class="cx">         TQualifier qual = context-&gt;symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx">         (yyval.interm.type).setBasic(EbtBool, qual, (yylsp[(1) - (1)]));
</span><span class="cx">         (yyval.interm.type).setAggregate(4);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 127:
</span><span class="lines">@@ -3866,7 +3894,7 @@
</span><span class="cx">         TQualifier qual = context-&gt;symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx">         (yyval.interm.type).setBasic(EbtInt, qual, (yylsp[(1) - (1)]));
</span><span class="cx">         (yyval.interm.type).setAggregate(2);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 128:
</span><span class="lines">@@ -3875,7 +3903,7 @@
</span><span class="cx">         TQualifier qual = context-&gt;symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx">         (yyval.interm.type).setBasic(EbtInt, qual, (yylsp[(1) - (1)]));
</span><span class="cx">         (yyval.interm.type).setAggregate(3);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 129:
</span><span class="lines">@@ -3884,7 +3912,7 @@
</span><span class="cx">         TQualifier qual = context-&gt;symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx">         (yyval.interm.type).setBasic(EbtInt, qual, (yylsp[(1) - (1)]));
</span><span class="cx">         (yyval.interm.type).setAggregate(4);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 130:
</span><span class="lines">@@ -3893,7 +3921,7 @@
</span><span class="cx">         TQualifier qual = context-&gt;symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx">         (yyval.interm.type).setBasic(EbtFloat, qual, (yylsp[(1) - (1)]));
</span><span class="cx">         (yyval.interm.type).setAggregate(2, true);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 131:
</span><span class="lines">@@ -3902,7 +3930,7 @@
</span><span class="cx">         TQualifier qual = context-&gt;symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx">         (yyval.interm.type).setBasic(EbtFloat, qual, (yylsp[(1) - (1)]));
</span><span class="cx">         (yyval.interm.type).setAggregate(3, true);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 132:
</span><span class="lines">@@ -3911,7 +3939,7 @@
</span><span class="cx">         TQualifier qual = context-&gt;symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx">         (yyval.interm.type).setBasic(EbtFloat, qual, (yylsp[(1) - (1)]));
</span><span class="cx">         (yyval.interm.type).setAggregate(4, true);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 133:
</span><span class="lines">@@ -3919,7 +3947,7 @@
</span><span class="cx">     {
</span><span class="cx">         TQualifier qual = context-&gt;symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx">         (yyval.interm.type).setBasic(EbtSampler2D, qual, (yylsp[(1) - (1)]));
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 134:
</span><span class="lines">@@ -3927,7 +3955,7 @@
</span><span class="cx">     {
</span><span class="cx">         TQualifier qual = context-&gt;symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx">         (yyval.interm.type).setBasic(EbtSamplerCube, qual, (yylsp[(1) - (1)]));
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 135:
</span><span class="lines">@@ -3939,7 +3967,7 @@
</span><span class="cx">         }
</span><span class="cx">         TQualifier qual = context-&gt;symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx">         (yyval.interm.type).setBasic(EbtSamplerExternalOES, qual, (yylsp[(1) - (1)]));
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 136:
</span><span class="lines">@@ -3951,7 +3979,7 @@
</span><span class="cx">         }
</span><span class="cx">         TQualifier qual = context-&gt;symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx">         (yyval.interm.type).setBasic(EbtSampler2DRect, qual, (yylsp[(1) - (1)]));
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 137:
</span><span class="lines">@@ -3959,7 +3987,7 @@
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
</span><span class="cx">         (yyval.interm.type).qualifier = context-&gt;symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 138:
</span><span class="lines">@@ -3973,12 +4001,12 @@
</span><span class="cx">         TQualifier qual = context-&gt;symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx">         (yyval.interm.type).setBasic(EbtStruct, qual, (yylsp[(1) - (1)]));
</span><span class="cx">         (yyval.interm.type).userDef = &amp;structure;
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 139:
</span><span class="cx"> 
</span><del>-    { if (context-&gt;enterStructDeclaration((yylsp[(2) - (3)]), *(yyvsp[(2) - (3)].lex).string)) context-&gt;recover(); ;}
</del><ins>+    { if (context-&gt;enterStructDeclaration((yylsp[(2) - (3)]), *(yyvsp[(2) - (3)].lex).string)) context-&gt;recover(); }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 140:
</span><span class="lines">@@ -3996,12 +4024,12 @@
</span><span class="cx">         (yyval.interm.type).setBasic(EbtStruct, EvqTemporary, (yylsp[(1) - (6)]));
</span><span class="cx">         (yyval.interm.type).userDef = structure;
</span><span class="cx">         context-&gt;exitStructDeclaration();
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 141:
</span><span class="cx"> 
</span><del>-    { if (context-&gt;enterStructDeclaration((yylsp[(2) - (2)]), *(yyvsp[(2) - (2)].lex).string)) context-&gt;recover(); ;}
</del><ins>+    { if (context-&gt;enterStructDeclaration((yylsp[(2) - (2)]), *(yyvsp[(2) - (2)].lex).string)) context-&gt;recover(); }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 142:
</span><span class="lines">@@ -4011,14 +4039,14 @@
</span><span class="cx">         (yyval.interm.type).setBasic(EbtStruct, EvqTemporary, (yylsp[(1) - (5)]));
</span><span class="cx">         (yyval.interm.type).userDef = structure;
</span><span class="cx">         context-&gt;exitStructDeclaration();
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 143:
</span><span class="cx"> 
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm.fieldList) = (yyvsp[(1) - (1)].interm.fieldList);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 144:
</span><span class="lines">@@ -4035,7 +4063,7 @@
</span><span class="cx">             }
</span><span class="cx">             (yyval.interm.fieldList)-&gt;push_back(field);
</span><span class="cx">         }
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 145:
</span><span class="lines">@@ -4069,7 +4097,7 @@
</span><span class="cx">             if (context-&gt;structNestingErrorCheck((yylsp[(1) - (3)]), *(*(yyval.interm.fieldList))[i]))
</span><span class="cx">                 context-&gt;recover();
</span><span class="cx">         }
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 146:
</span><span class="lines">@@ -4077,14 +4105,14 @@
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm.fieldList) = NewPoolTFieldList();
</span><span class="cx">         (yyval.interm.fieldList)-&gt;push_back((yyvsp[(1) - (1)].interm.field));
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 147:
</span><span class="cx"> 
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm.fieldList)-&gt;push_back((yyvsp[(3) - (3)].interm.field));
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 148:
</span><span class="lines">@@ -4095,7 +4123,7 @@
</span><span class="cx"> 
</span><span class="cx">         TType* type = new TType(EbtVoid, EbpUndefined);
</span><span class="cx">         (yyval.interm.field) = new TField(type, (yyvsp[(1) - (1)].lex).string);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 149:
</span><span class="lines">@@ -4111,67 +4139,67 @@
</span><span class="cx">         type-&gt;setArraySize(size);
</span><span class="cx"> 
</span><span class="cx">         (yyval.interm.field) = new TField(type, (yyvsp[(1) - (4)].lex).string);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 150:
</span><span class="cx"> 
</span><del>-    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
</del><ins>+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 151:
</span><span class="cx"> 
</span><del>-    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
</del><ins>+    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 152:
</span><span class="cx"> 
</span><del>-    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermAggregate); ;}
</del><ins>+    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermAggregate); }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 153:
</span><span class="cx"> 
</span><del>-    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
</del><ins>+    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 154:
</span><span class="cx"> 
</span><del>-    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
</del><ins>+    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 155:
</span><span class="cx"> 
</span><del>-    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
</del><ins>+    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 156:
</span><span class="cx"> 
</span><del>-    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
</del><ins>+    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 157:
</span><span class="cx"> 
</span><del>-    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
</del><ins>+    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 158:
</span><span class="cx"> 
</span><del>-    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
</del><ins>+    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 159:
</span><span class="cx"> 
</span><del>-    { (yyval.interm.intermAggregate) = 0; ;}
</del><ins>+    { (yyval.interm.intermAggregate) = 0; }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 160:
</span><span class="cx"> 
</span><del>-    { context-&gt;symbolTable.push(); ;}
</del><ins>+    { context-&gt;symbolTable.push(); }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 161:
</span><span class="cx"> 
</span><del>-    { context-&gt;symbolTable.pop(); ;}
</del><ins>+    { context-&gt;symbolTable.pop(); }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 162:
</span><span class="lines">@@ -4182,44 +4210,44 @@
</span><span class="cx">             (yyvsp[(3) - (5)].interm.intermAggregate)-&gt;setLine((yyloc));
</span><span class="cx">         }
</span><span class="cx">         (yyval.interm.intermAggregate) = (yyvsp[(3) - (5)].interm.intermAggregate);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 163:
</span><span class="cx"> 
</span><del>-    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
</del><ins>+    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 164:
</span><span class="cx"> 
</span><del>-    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
</del><ins>+    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 165:
</span><span class="cx"> 
</span><del>-    { context-&gt;symbolTable.push(); ;}
</del><ins>+    { context-&gt;symbolTable.push(); }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 166:
</span><span class="cx"> 
</span><del>-    { context-&gt;symbolTable.pop(); (yyval.interm.intermNode) = (yyvsp[(2) - (2)].interm.intermNode); ;}
</del><ins>+    { context-&gt;symbolTable.pop(); (yyval.interm.intermNode) = (yyvsp[(2) - (2)].interm.intermNode); }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 167:
</span><span class="cx"> 
</span><del>-    { context-&gt;symbolTable.push(); ;}
</del><ins>+    { context-&gt;symbolTable.push(); }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 168:
</span><span class="cx"> 
</span><del>-    { context-&gt;symbolTable.pop(); (yyval.interm.intermNode) = (yyvsp[(2) - (2)].interm.intermNode); ;}
</del><ins>+    { context-&gt;symbolTable.pop(); (yyval.interm.intermNode) = (yyvsp[(2) - (2)].interm.intermNode); }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 169:
</span><span class="cx"> 
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm.intermNode) = 0;
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 170:
</span><span class="lines">@@ -4230,31 +4258,31 @@
</span><span class="cx">             (yyvsp[(2) - (3)].interm.intermAggregate)-&gt;setLine((yyloc));
</span><span class="cx">         }
</span><span class="cx">         (yyval.interm.intermNode) = (yyvsp[(2) - (3)].interm.intermAggregate);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 171:
</span><span class="cx"> 
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm.intermAggregate) = context-&gt;intermediate.makeAggregate((yyvsp[(1) - (1)].interm.intermNode), (yyloc));
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 172:
</span><span class="cx"> 
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm.intermAggregate) = context-&gt;intermediate.growAggregate((yyvsp[(1) - (2)].interm.intermAggregate), (yyvsp[(2) - (2)].interm.intermNode), (yyloc));
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 173:
</span><span class="cx"> 
</span><del>-    { (yyval.interm.intermNode) = 0; ;}
</del><ins>+    { (yyval.interm.intermNode) = 0; }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 174:
</span><span class="cx"> 
</span><del>-    { (yyval.interm.intermNode) = static_cast&lt;TIntermNode*&gt;((yyvsp[(1) - (2)].interm.intermTypedNode)); ;}
</del><ins>+    { (yyval.interm.intermNode) = static_cast&lt;TIntermNode*&gt;((yyvsp[(1) - (2)].interm.intermTypedNode)); }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 175:
</span><span class="lines">@@ -4263,7 +4291,7 @@
</span><span class="cx">         if (context-&gt;boolErrorCheck((yylsp[(1) - (5)]), (yyvsp[(3) - (5)].interm.intermTypedNode)))
</span><span class="cx">             context-&gt;recover();
</span><span class="cx">         (yyval.interm.intermNode) = context-&gt;intermediate.addSelection((yyvsp[(3) - (5)].interm.intermTypedNode), (yyvsp[(5) - (5)].interm.nodePair), (yylsp[(1) - (5)]));
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 176:
</span><span class="lines">@@ -4271,7 +4299,7 @@
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm.nodePair).node1 = (yyvsp[(1) - (3)].interm.intermNode);
</span><span class="cx">         (yyval.interm.nodePair).node2 = (yyvsp[(3) - (3)].interm.intermNode);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 177:
</span><span class="lines">@@ -4279,7 +4307,7 @@
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm.nodePair).node1 = (yyvsp[(1) - (1)].interm.intermNode);
</span><span class="cx">         (yyval.interm.nodePair).node2 = 0;
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 178:
</span><span class="lines">@@ -4288,7 +4316,7 @@
</span><span class="cx">         (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
</span><span class="cx">         if (context-&gt;boolErrorCheck((yyvsp[(1) - (1)].interm.intermTypedNode)-&gt;getLine(), (yyvsp[(1) - (1)].interm.intermTypedNode)))
</span><span class="cx">             context-&gt;recover();
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 179:
</span><span class="lines">@@ -4306,12 +4334,12 @@
</span><span class="cx">             context-&gt;recover();
</span><span class="cx">             (yyval.interm.intermTypedNode) = 0;
</span><span class="cx">         }
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 180:
</span><span class="cx"> 
</span><del>-    { context-&gt;symbolTable.push(); ++context-&gt;loopNestingLevel; ;}
</del><ins>+    { context-&gt;symbolTable.push(); ++context-&gt;loopNestingLevel; }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 181:
</span><span class="lines">@@ -4320,12 +4348,12 @@
</span><span class="cx">         context-&gt;symbolTable.pop();
</span><span class="cx">         (yyval.interm.intermNode) = context-&gt;intermediate.addLoop(ELoopWhile, 0, (yyvsp[(4) - (6)].interm.intermTypedNode), 0, (yyvsp[(6) - (6)].interm.intermNode), (yylsp[(1) - (6)]));
</span><span class="cx">         --context-&gt;loopNestingLevel;
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 182:
</span><span class="cx"> 
</span><del>-    { ++context-&gt;loopNestingLevel; ;}
</del><ins>+    { ++context-&gt;loopNestingLevel; }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 183:
</span><span class="lines">@@ -4336,12 +4364,12 @@
</span><span class="cx"> 
</span><span class="cx">         (yyval.interm.intermNode) = context-&gt;intermediate.addLoop(ELoopDoWhile, 0, (yyvsp[(6) - (8)].interm.intermTypedNode), 0, (yyvsp[(3) - (8)].interm.intermNode), (yylsp[(4) - (8)]));
</span><span class="cx">         --context-&gt;loopNestingLevel;
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 184:
</span><span class="cx"> 
</span><del>-    { context-&gt;symbolTable.push(); ++context-&gt;loopNestingLevel; ;}
</del><ins>+    { context-&gt;symbolTable.push(); ++context-&gt;loopNestingLevel; }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 185:
</span><span class="lines">@@ -4350,35 +4378,35 @@
</span><span class="cx">         context-&gt;symbolTable.pop();
</span><span class="cx">         (yyval.interm.intermNode) = context-&gt;intermediate.addLoop(ELoopFor, (yyvsp[(4) - (7)].interm.intermNode), reinterpret_cast&lt;TIntermTyped*&gt;((yyvsp[(5) - (7)].interm.nodePair).node1), reinterpret_cast&lt;TIntermTyped*&gt;((yyvsp[(5) - (7)].interm.nodePair).node2), (yyvsp[(7) - (7)].interm.intermNode), (yylsp[(1) - (7)]));
</span><span class="cx">         --context-&gt;loopNestingLevel;
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 186:
</span><span class="cx"> 
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 187:
</span><span class="cx"> 
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 188:
</span><span class="cx"> 
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 189:
</span><span class="cx"> 
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm.intermTypedNode) = 0;
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 190:
</span><span class="lines">@@ -4386,7 +4414,7 @@
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm.nodePair).node1 = (yyvsp[(1) - (2)].interm.intermTypedNode);
</span><span class="cx">         (yyval.interm.nodePair).node2 = 0;
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 191:
</span><span class="lines">@@ -4394,7 +4422,7 @@
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm.nodePair).node1 = (yyvsp[(1) - (3)].interm.intermTypedNode);
</span><span class="cx">         (yyval.interm.nodePair).node2 = (yyvsp[(3) - (3)].interm.intermTypedNode);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 192:
</span><span class="lines">@@ -4405,7 +4433,7 @@
</span><span class="cx">             context-&gt;recover();
</span><span class="cx">         }
</span><span class="cx">         (yyval.interm.intermNode) = context-&gt;intermediate.addBranch(EOpContinue, (yylsp[(1) - (2)]));
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 193:
</span><span class="lines">@@ -4416,7 +4444,7 @@
</span><span class="cx">             context-&gt;recover();
</span><span class="cx">         }
</span><span class="cx">         (yyval.interm.intermNode) = context-&gt;intermediate.addBranch(EOpBreak, (yylsp[(1) - (2)]));
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 194:
</span><span class="lines">@@ -4427,7 +4455,7 @@
</span><span class="cx">             context-&gt;error((yylsp[(1) - (2)]), &quot;non-void function must return a value&quot;, &quot;return&quot;);
</span><span class="cx">             context-&gt;recover();
</span><span class="cx">         }
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 195:
</span><span class="lines">@@ -4442,7 +4470,7 @@
</span><span class="cx">             context-&gt;error((yylsp[(1) - (3)]), &quot;function return is not matching type:&quot;, &quot;return&quot;);
</span><span class="cx">             context-&gt;recover();
</span><span class="cx">         }
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 196:
</span><span class="lines">@@ -4450,7 +4478,7 @@
</span><span class="cx">     {
</span><span class="cx">         FRAG_ONLY(&quot;discard&quot;, (yylsp[(1) - (2)]));
</span><span class="cx">         (yyval.interm.intermNode) = context-&gt;intermediate.addBranch(EOpKill, (yylsp[(1) - (2)]));
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 197:
</span><span class="lines">@@ -4458,7 +4486,7 @@
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
</span><span class="cx">         context-&gt;treeRoot = (yyval.interm.intermNode);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 198:
</span><span class="lines">@@ -4466,21 +4494,21 @@
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm.intermNode) = context-&gt;intermediate.growAggregate((yyvsp[(1) - (2)].interm.intermNode), (yyvsp[(2) - (2)].interm.intermNode), (yyloc));
</span><span class="cx">         context-&gt;treeRoot = (yyval.interm.intermNode);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 199:
</span><span class="cx"> 
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 200:
</span><span class="cx"> 
</span><span class="cx">     {
</span><span class="cx">         (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 201:
</span><span class="lines">@@ -4570,7 +4598,7 @@
</span><span class="cx">         context-&gt;intermediate.setAggregateOperator(paramNodes, EOpParameters, (yylsp[(1) - (1)]));
</span><span class="cx">         (yyvsp[(1) - (1)].interm).intermAggregate = paramNodes;
</span><span class="cx">         context-&gt;loopNestingLevel = 0;
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 202:
</span><span class="lines">@@ -4594,14 +4622,24 @@
</span><span class="cx">         (yyval.interm.intermNode)-&gt;getAsAggregate()-&gt;setDebug(context-&gt;pragma().debug);
</span><span class="cx"> 
</span><span class="cx">         context-&gt;symbolTable.pop();
</span><del>-    ;}
</del><ins>+    }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-/* Line 1267 of yacc.c.  */
</del><span class="cx"> 
</span><span class="cx">       default: break;
</span><span class="cx">     }
</span><ins>+  /* User semantic actions sometimes alter yychar, and that requires
+     that yytoken be updated with the new translation.  We take the
+     approach of translating immediately before every use of yytoken.
+     One alternative is translating here after every semantic action,
+     but that translation would be missed if the semantic action invokes
+     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
+     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
+     incorrect destructor might then be invoked immediately.  In the
+     case of YYERROR or YYBACKUP, subsequent parser actions might lead
+     to an incorrect destructor call or verbose syntax error message
+     before the lookahead is translated.  */
</ins><span class="cx">   YY_SYMBOL_PRINT (&quot;-&gt; $$ =&quot;, yyr1[yyn], &amp;yyval, &amp;yyloc);
</span><span class="cx"> 
</span><span class="cx">   YYPOPSTACK (yylen);
</span><span class="lines">@@ -4630,6 +4668,10 @@
</span><span class="cx"> | yyerrlab -- here on detecting error |
</span><span class="cx"> `------------------------------------*/
</span><span class="cx"> yyerrlab:
</span><ins>+  /* Make sure we have latest lookahead translation.  See comments at
+     user semantic actions for why this is necessary.  */
+  yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
+
</ins><span class="cx">   /* If not already recovering from an error, report this error.  */
</span><span class="cx">   if (!yyerrstatus)
</span><span class="cx">     {
</span><span class="lines">@@ -4637,62 +4679,61 @@
</span><span class="cx"> #if ! YYERROR_VERBOSE
</span><span class="cx">       yyerror (&amp;yylloc, context, YY_(&quot;syntax error&quot;));
</span><span class="cx"> #else
</span><ins>+# define YYSYNTAX_ERROR yysyntax_error (&amp;yymsg_alloc, &amp;yymsg, \
+                                        yyssp, yytoken)
</ins><span class="cx">       {
</span><del>-    YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
-    if (yymsg_alloc &lt; yysize &amp;&amp; yymsg_alloc &lt; YYSTACK_ALLOC_MAXIMUM)
-      {
-        YYSIZE_T yyalloc = 2 * yysize;
-        if (! (yysize &lt;= yyalloc &amp;&amp; yyalloc &lt;= YYSTACK_ALLOC_MAXIMUM))
-          yyalloc = YYSTACK_ALLOC_MAXIMUM;
-        if (yymsg != yymsgbuf)
-          YYSTACK_FREE (yymsg);
-        yymsg = (char *) YYSTACK_ALLOC (yyalloc);
-        if (yymsg)
-          yymsg_alloc = yyalloc;
-        else
</del><ins>+        char const *yymsgp = YY_(&quot;syntax error&quot;);
+        int yysyntax_error_status;
+        yysyntax_error_status = YYSYNTAX_ERROR;
+        if (yysyntax_error_status == 0)
+          yymsgp = yymsg;
+        else if (yysyntax_error_status == 1)
</ins><span class="cx">           {
</span><del>-        yymsg = yymsgbuf;
-        yymsg_alloc = sizeof yymsgbuf;
</del><ins>+            if (yymsg != yymsgbuf)
+              YYSTACK_FREE (yymsg);
+            yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
+            if (!yymsg)
+              {
+                yymsg = yymsgbuf;
+                yymsg_alloc = sizeof yymsgbuf;
+                yysyntax_error_status = 2;
+              }
+            else
+              {
+                yysyntax_error_status = YYSYNTAX_ERROR;
+                yymsgp = yymsg;
+              }
</ins><span class="cx">           }
</span><del>-      }
-
-    if (0 &lt; yysize &amp;&amp; yysize &lt;= yymsg_alloc)
-      {
-        (void) yysyntax_error (yymsg, yystate, yychar);
-        yyerror (&amp;yylloc, context, yymsg);
-      }
-    else
-      {
-        yyerror (&amp;yylloc, context, YY_(&quot;syntax error&quot;));
-        if (yysize != 0)
</del><ins>+        yyerror (&amp;yylloc, context, yymsgp);
+        if (yysyntax_error_status == 2)
</ins><span class="cx">           goto yyexhaustedlab;
</span><span class="cx">       }
</span><del>-      }
</del><ins>+# undef YYSYNTAX_ERROR
</ins><span class="cx"> #endif
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-  yyerror_range[0] = yylloc;
</del><ins>+  yyerror_range[1] = yylloc;
</ins><span class="cx"> 
</span><span class="cx">   if (yyerrstatus == 3)
</span><span class="cx">     {
</span><del>-      /* If just tried and failed to reuse look-ahead token after an
-     error, discard it.  */
</del><ins>+      /* If just tried and failed to reuse lookahead token after an
+         error, discard it.  */
</ins><span class="cx"> 
</span><span class="cx">       if (yychar &lt;= YYEOF)
</span><del>-    {
-      /* Return failure if at end of input.  */
-      if (yychar == YYEOF)
-        YYABORT;
-    }
</del><ins>+        {
+          /* Return failure if at end of input.  */
+          if (yychar == YYEOF)
+            YYABORT;
+        }
</ins><span class="cx">       else
</span><del>-    {
-      yydestruct (&quot;Error: discarding&quot;,
-              yytoken, &amp;yylval, &amp;yylloc, context);
-      yychar = YYEMPTY;
</del><ins>+        {
+          yydestruct (&quot;Error: discarding&quot;,
+                      yytoken, &amp;yylval, &amp;yylloc, context);
+          yychar = YYEMPTY;
+        }
</ins><span class="cx">     }
</span><del>-    }
</del><span class="cx"> 
</span><del>-  /* Else will try to reuse look-ahead token after shifting the error
</del><ins>+  /* Else will try to reuse lookahead token after shifting the error
</ins><span class="cx">      token.  */
</span><span class="cx">   goto yyerrlab1;
</span><span class="cx"> 
</span><span class="lines">@@ -4708,7 +4749,7 @@
</span><span class="cx">   if (/*CONSTCOND*/ 0)
</span><span class="cx">      goto yyerrorlab;
</span><span class="cx"> 
</span><del>-  yyerror_range[0] = yylsp[1-yylen];
</del><ins>+  yyerror_range[1] = yylsp[1-yylen];
</ins><span class="cx">   /* Do not reclaim the symbols of the rule which action triggered
</span><span class="cx">      this YYERROR.  */
</span><span class="cx">   YYPOPSTACK (yylen);
</span><span class="lines">@@ -4722,43 +4763,42 @@
</span><span class="cx"> | yyerrlab1 -- common code for both syntax error and YYERROR.  |
</span><span class="cx"> `-------------------------------------------------------------*/
</span><span class="cx"> yyerrlab1:
</span><del>-  yyerrstatus = 3;    /* Each real token shifted decrements this.  */
</del><ins>+  yyerrstatus = 3;        /* Each real token shifted decrements this.  */
</ins><span class="cx"> 
</span><span class="cx">   for (;;)
</span><span class="cx">     {
</span><span class="cx">       yyn = yypact[yystate];
</span><del>-      if (yyn != YYPACT_NINF)
-    {
-      yyn += YYTERROR;
-      if (0 &lt;= yyn &amp;&amp; yyn &lt;= YYLAST &amp;&amp; yycheck[yyn] == YYTERROR)
-        {
-          yyn = yytable[yyn];
-          if (0 &lt; yyn)
-        break;
-        }
-    }
</del><ins>+      if (!yypact_value_is_default (yyn))
+        {
+          yyn += YYTERROR;
+          if (0 &lt;= yyn &amp;&amp; yyn &lt;= YYLAST &amp;&amp; yycheck[yyn] == YYTERROR)
+            {
+              yyn = yytable[yyn];
+              if (0 &lt; yyn)
+                break;
+            }
+        }
</ins><span class="cx"> 
</span><span class="cx">       /* Pop the current state because it cannot handle the error token.  */
</span><span class="cx">       if (yyssp == yyss)
</span><del>-    YYABORT;
</del><ins>+        YYABORT;
</ins><span class="cx"> 
</span><del>-      yyerror_range[0] = *yylsp;
</del><ins>+      yyerror_range[1] = *yylsp;
</ins><span class="cx">       yydestruct (&quot;Error: popping&quot;,
</span><del>-          yystos[yystate], yyvsp, yylsp, context);
</del><ins>+                  yystos[yystate], yyvsp, yylsp, context);
</ins><span class="cx">       YYPOPSTACK (1);
</span><span class="cx">       yystate = *yyssp;
</span><span class="cx">       YY_STACK_PRINT (yyss, yyssp);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-  if (yyn == YYFINAL)
-    YYACCEPT;
-
</del><ins>+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
</ins><span class="cx">   *++yyvsp = yylval;
</span><ins>+  YY_IGNORE_MAYBE_UNINITIALIZED_END
</ins><span class="cx"> 
</span><del>-  yyerror_range[1] = yylloc;
</del><ins>+  yyerror_range[2] = yylloc;
</ins><span class="cx">   /* Using YYLLOC is tempting, but would change the location of
</span><del>-     the look-ahead.  YYLOC is available though.  */
-  YYLLOC_DEFAULT (yyloc, (yyerror_range - 1), 2);
</del><ins>+     the lookahead.  YYLOC is available though.  */
+  YYLLOC_DEFAULT (yyloc, yyerror_range, 2);
</ins><span class="cx">   *++yylsp = yyloc;
</span><span class="cx"> 
</span><span class="cx">   /* Shift the error token.  */
</span><span class="lines">@@ -4782,7 +4822,7 @@
</span><span class="cx">   yyresult = 1;
</span><span class="cx">   goto yyreturn;
</span><span class="cx"> 
</span><del>-#ifndef yyoverflow
</del><ins>+#if !defined yyoverflow || YYERROR_VERBOSE
</ins><span class="cx"> /*-------------------------------------------------.
</span><span class="cx"> | yyexhaustedlab -- memory exhaustion comes here.  |
</span><span class="cx"> `-------------------------------------------------*/
</span><span class="lines">@@ -4793,9 +4833,14 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> yyreturn:
</span><del>-  if (yychar != YYEOF &amp;&amp; yychar != YYEMPTY)
-     yydestruct (&quot;Cleanup: discarding lookahead&quot;,
-         yytoken, &amp;yylval, &amp;yylloc, context);
</del><ins>+  if (yychar != YYEMPTY)
+    {
+      /* Make sure we have latest lookahead translation.  See comments at
+         user semantic actions for why this is necessary.  */
+      yytoken = YYTRANSLATE (yychar);
+      yydestruct (&quot;Cleanup: discarding lookahead&quot;,
+                  yytoken, &amp;yylval, &amp;yylloc, context);
+    }
</ins><span class="cx">   /* Do not reclaim the symbols of the rule which action triggered
</span><span class="cx">      this YYABORT or YYACCEPT.  */
</span><span class="cx">   YYPOPSTACK (yylen);
</span><span class="lines">@@ -4803,7 +4848,7 @@
</span><span class="cx">   while (yyssp != yyss)
</span><span class="cx">     {
</span><span class="cx">       yydestruct (&quot;Cleanup: popping&quot;,
</span><del>-          yystos[*yyssp], yyvsp, yylsp, context);
</del><ins>+                  yystos[*yyssp], yyvsp, yylsp, context);
</ins><span class="cx">       YYPOPSTACK (1);
</span><span class="cx">     }
</span><span class="cx"> #ifndef yyoverflow
</span><span class="lines">@@ -4822,12 +4867,6 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void yyerror(YYLTYPE* yylloc, TParseContext* context, const char* reason) {
-    context-&gt;error(*yylloc, reason, &quot;&quot;);
-    context-&gt;recover();
-}
-
</del><span class="cx"> int glslang_parse(TParseContext* context) {
</span><span class="cx">     return yyparse(context);
</span><span class="cx"> }
</span><del>-
</del></span></pre></div>
<a id="branchesjsCStackSourceThirdPartyANGLEsrccompilerglslang_tabh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/ThirdParty/ANGLE/src/compiler/glslang_tab.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/ThirdParty/ANGLE/src/compiler/glslang_tab.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/ThirdParty/ANGLE/src/compiler/glslang_tab.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,24 +1,23 @@
</span><del>-/* A Bison parser, made by GNU Bison 2.3.  */
</del><ins>+/* Apple Note: For the avoidance of doubt, Apple elects to distribute this file under the terms of the BSD license. */
</ins><span class="cx"> 
</span><del>-/* Skeleton interface for Bison's Yacc-like parsers in C
</del><ins>+/* A Bison parser, made by GNU Bison 2.7.  */
</ins><span class="cx"> 
</span><del>-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-   Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
</del><ins>+/* Bison interface for Yacc-like parsers in C
+   
+      Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
+   
+   This program is free software: you can redistribute it and/or modify
</ins><span class="cx">    it under the terms of the GNU General Public License as published by
</span><del>-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
</del><ins>+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+   
</ins><span class="cx">    This program is distributed in the hope that it will be useful,
</span><span class="cx">    but WITHOUT ANY WARRANTY; without even the implied warranty of
</span><span class="cx">    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
</span><span class="cx">    GNU General Public License for more details.
</span><del>-
</del><ins>+   
</ins><span class="cx">    You should have received a copy of the GNU General Public License
</span><del>-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
</del><ins>+   along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.  */
</ins><span class="cx"> 
</span><span class="cx"> /* As a special exception, you may create a larger work that contains
</span><span class="cx">    part or all of the Bison parser skeleton and distribute that work
</span><span class="lines">@@ -29,14 +28,29 @@
</span><span class="cx">    special exception, which will cause the skeleton and the resulting
</span><span class="cx">    Bison output files to be licensed under the GNU General Public
</span><span class="cx">    License without this special exception.
</span><del>-
</del><ins>+   
</ins><span class="cx">    This special exception was added by the Free Software Foundation in
</span><span class="cx">    version 2.2 of Bison.  */
</span><span class="cx"> 
</span><ins>+#ifndef YY_YY_GLSLANG_TAB_H_INCLUDED
+# define YY_YY_GLSLANG_TAB_H_INCLUDED
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+#if YYDEBUG
+extern int yydebug;
+#endif
+/* &quot;%code requires&quot; blocks.  */
+
+
</ins><span class="cx"> #define YYLTYPE TSourceLoc
</span><span class="cx"> #define YYLTYPE_IS_DECLARED 1
</span><span class="cx"> #define SH_MAX_TOKEN_LENGTH 256  // WebGL spec.
</span><span class="cx"> 
</span><ins>+
+
+
</ins><span class="cx"> /* Tokens.  */
</span><span class="cx"> #ifndef YYTOKENTYPE
</span><span class="cx"> # define YYTOKENTYPE
</span><span class="lines">@@ -137,109 +151,13 @@
</span><span class="cx">      QUESTION = 349
</span><span class="cx">    };
</span><span class="cx"> #endif
</span><del>-/* Tokens.  */
-#define INVARIANT 258
-#define HIGH_PRECISION 259
-#define MEDIUM_PRECISION 260
-#define LOW_PRECISION 261
-#define PRECISION 262
-#define ATTRIBUTE 263
-#define CONST_QUAL 264
-#define BOOL_TYPE 265
-#define FLOAT_TYPE 266
-#define INT_TYPE 267
-#define BREAK 268
-#define CONTINUE 269
-#define DO 270
-#define ELSE 271
-#define FOR 272
-#define IF 273
-#define DISCARD 274
-#define RETURN 275
-#define BVEC2 276
-#define BVEC3 277
-#define BVEC4 278
-#define IVEC2 279
-#define IVEC3 280
-#define IVEC4 281
-#define VEC2 282
-#define VEC3 283
-#define VEC4 284
-#define MATRIX2 285
-#define MATRIX3 286
-#define MATRIX4 287
-#define IN_QUAL 288
-#define OUT_QUAL 289
-#define INOUT_QUAL 290
-#define UNIFORM 291
-#define VARYING 292
-#define STRUCT 293
-#define VOID_TYPE 294
-#define WHILE 295
-#define SAMPLER2D 296
-#define SAMPLERCUBE 297
-#define SAMPLER_EXTERNAL_OES 298
-#define SAMPLER2DRECT 299
-#define IDENTIFIER 300
-#define TYPE_NAME 301
-#define FLOATCONSTANT 302
-#define INTCONSTANT 303
-#define BOOLCONSTANT 304
-#define LEFT_OP 305
-#define RIGHT_OP 306
-#define INC_OP 307
-#define DEC_OP 308
-#define LE_OP 309
-#define GE_OP 310
-#define EQ_OP 311
-#define NE_OP 312
-#define AND_OP 313
-#define OR_OP 314
-#define XOR_OP 315
-#define MUL_ASSIGN 316
-#define DIV_ASSIGN 317
-#define ADD_ASSIGN 318
-#define MOD_ASSIGN 319
-#define LEFT_ASSIGN 320
-#define RIGHT_ASSIGN 321
-#define AND_ASSIGN 322
-#define XOR_ASSIGN 323
-#define OR_ASSIGN 324
-#define SUB_ASSIGN 325
-#define LEFT_PAREN 326
-#define RIGHT_PAREN 327
-#define LEFT_BRACKET 328
-#define RIGHT_BRACKET 329
-#define LEFT_BRACE 330
-#define RIGHT_BRACE 331
-#define DOT 332
-#define COMMA 333
-#define COLON 334
-#define EQUAL 335
-#define SEMICOLON 336
-#define BANG 337
-#define DASH 338
-#define TILDE 339
-#define PLUS 340
-#define STAR 341
-#define SLASH 342
-#define PERCENT 343
-#define LEFT_ANGLE 344
-#define RIGHT_ANGLE 345
-#define VERTICAL_BAR 346
-#define CARET 347
-#define AMPERSAND 348
-#define QUESTION 349
</del><span class="cx"> 
</span><span class="cx"> 
</span><del>-
-
</del><span class="cx"> #if ! defined YYSTYPE &amp;&amp; ! defined YYSTYPE_IS_DECLARED
</span><span class="cx"> typedef union YYSTYPE
</span><del>-
</del><span class="cx"> {
</span><del>-#define YYLTYPE TSourceLoc
-#define YYLTYPE_IS_DECLARED 1
</del><ins>+
+
</ins><span class="cx">     struct {
</span><span class="cx">         union {
</span><span class="cx">             TString *string;
</span><span class="lines">@@ -267,18 +185,15 @@
</span><span class="cx">             TFieldList* fieldList;
</span><span class="cx">         };
</span><span class="cx">     } interm;
</span><del>-}
-/* Line 1529 of yacc.c.  */
</del><span class="cx"> 
</span><del>-    YYSTYPE;
</del><ins>+
+
+} YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
</ins><span class="cx"> # define yystype YYSTYPE /* obsolescent; will be withdrawn */
</span><span class="cx"> # define YYSTYPE_IS_DECLARED 1
</span><del>-# define YYSTYPE_IS_TRIVIAL 1
-
</del><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-
-
</del><span class="cx"> #if ! defined YYLTYPE &amp;&amp; ! defined YYLTYPE_IS_DECLARED
</span><span class="cx"> typedef struct YYLTYPE
</span><span class="cx"> {
</span><span class="lines">@@ -293,3 +208,18 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> 
</span><ins>+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void *YYPARSE_PARAM);
+#else
+int yyparse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
+int yyparse (TParseContext* context);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+
+#endif /* !YY_YY_GLSLANG_TAB_H_INCLUDED  */
</ins></span></pre></div>
<a id="branchesjsCStackSourceThirdPartyANGLEsrccompilerpreprocessorExpressionParsercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,14 +1,15 @@
</span><del>-/* A Bison parser, made by GNU Bison 2.3.  */
</del><ins>+/* Apple Note: For the avoidance of doubt, Apple elects to distribute this file under the terms of the BSD license. */
</ins><span class="cx"> 
</span><del>-/* Skeleton implementation for Bison's Yacc-like parsers in C
</del><ins>+/* A Bison parser, made by GNU Bison 3.0.1.  */
</ins><span class="cx"> 
</span><del>-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-   Free Software Foundation, Inc.
</del><ins>+/* Bison implementation for Yacc-like parsers in C
</ins><span class="cx"> 
</span><del>-   This program is free software; you can redistribute it and/or modify
</del><ins>+   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
</ins><span class="cx">    it under the terms of the GNU General Public License as published by
</span><del>-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
</del><ins>+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
</ins><span class="cx"> 
</span><span class="cx">    This program is distributed in the hope that it will be useful,
</span><span class="cx">    but WITHOUT ANY WARRANTY; without even the implied warranty of
</span><span class="lines">@@ -16,9 +17,7 @@
</span><span class="cx">    GNU General Public License for more details.
</span><span class="cx"> 
</span><span class="cx">    You should have received a copy of the GNU General Public License
</span><del>-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
</del><ins>+   along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.  */
</ins><span class="cx"> 
</span><span class="cx"> /* As a special exception, you may create a larger work that contains
</span><span class="cx">    part or all of the Bison parser skeleton and distribute that work
</span><span class="lines">@@ -47,7 +46,7 @@
</span><span class="cx"> #define YYBISON 1
</span><span class="cx"> 
</span><span class="cx"> /* Bison version.  */
</span><del>-#define YYBISON_VERSION &quot;2.3&quot;
</del><ins>+#define YYBISON_VERSION &quot;3.0.1&quot;
</ins><span class="cx"> 
</span><span class="cx"> /* Skeleton name.  */
</span><span class="cx"> #define YYSKELETON_NAME &quot;yacc.c&quot;
</span><span class="lines">@@ -55,52 +54,21 @@
</span><span class="cx"> /* Pure parsers.  */
</span><span class="cx"> #define YYPURE 1
</span><span class="cx"> 
</span><del>-/* Using locations.  */
-#define YYLSP_NEEDED 0
</del><ins>+/* Push parsers.  */
+#define YYPUSH 0
</ins><span class="cx"> 
</span><del>-/* Substitute the variable and function names.  */
-#define yyparse ppparse
-#define yylex   pplex
-#define yyerror pperror
-#define yylval  pplval
-#define yychar  ppchar
-#define yydebug ppdebug
-#define yynerrs ppnerrs
</del><ins>+/* Pull parsers.  */
+#define YYPULL 1
</ins><span class="cx"> 
</span><span class="cx"> 
</span><del>-/* Tokens.  */
-#ifndef YYTOKENTYPE
-# define YYTOKENTYPE
-   /* Put the tokens into the symbol table, so that GDB and other debuggers
-      know about them.  */
-   enum yytokentype {
-     TOK_CONST_INT = 258,
-     TOK_OP_OR = 259,
-     TOK_OP_AND = 260,
-     TOK_OP_NE = 261,
-     TOK_OP_EQ = 262,
-     TOK_OP_GE = 263,
-     TOK_OP_LE = 264,
-     TOK_OP_RIGHT = 265,
-     TOK_OP_LEFT = 266,
-     TOK_UNARY = 267
-   };
-#endif
-/* Tokens.  */
-#define TOK_CONST_INT 258
-#define TOK_OP_OR 259
-#define TOK_OP_AND 260
-#define TOK_OP_NE 261
-#define TOK_OP_EQ 262
-#define TOK_OP_GE 263
-#define TOK_OP_LE 264
-#define TOK_OP_RIGHT 265
-#define TOK_OP_LEFT 266
-#define TOK_UNARY 267
</del><ins>+/* Substitute the variable and function names.  */
+#define yyparse         ppparse
+#define yylex           pplex
+#define yyerror         pperror
+#define yydebug         ppdebug
+#define yynerrs         ppnerrs
</ins><span class="cx"> 
</span><span class="cx"> 
</span><del>-
-
</del><span class="cx"> /* Copy the first part of user declarations.  */
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="lines">@@ -125,6 +93,12 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;ExpressionParser.h&quot;
</span><span class="cx"> 
</span><ins>+#if defined(_MSC_VER)
+#include &lt;malloc.h&gt;
+#else
+#include &lt;stdlib.h&gt;
+#endif
+
</ins><span class="cx"> #include &lt;cassert&gt;
</span><span class="cx"> #include &lt;sstream&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -158,11 +132,15 @@
</span><span class="cx"> static void yyerror(Context* context, const char* reason);
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-/* Enabling traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
</del><span class="cx"> 
</span><ins>+# ifndef YY_NULLPTR
+#  if defined __cplusplus &amp;&amp; 201103L &lt;= __cplusplus
+#   define YY_NULLPTR nullptr
+#  else
+#   define YY_NULLPTR 0
+#  endif
+# endif
+
</ins><span class="cx"> /* Enabling verbose error messages.  */
</span><span class="cx"> #ifdef YYERROR_VERBOSE
</span><span class="cx"> # undef YYERROR_VERBOSE
</span><span class="lines">@@ -171,26 +149,50 @@
</span><span class="cx"> # define YYERROR_VERBOSE 0
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-/* Enabling the token table.  */
-#ifndef YYTOKEN_TABLE
-# define YYTOKEN_TABLE 0
</del><ins>+
+/* Debug traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
</ins><span class="cx"> #endif
</span><ins>+#if YYDEBUG
+extern int ppdebug;
+#endif
</ins><span class="cx"> 
</span><ins>+/* Token type.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+  enum yytokentype
+  {
+    TOK_CONST_INT = 258,
+    TOK_OP_OR = 259,
+    TOK_OP_AND = 260,
+    TOK_OP_EQ = 261,
+    TOK_OP_NE = 262,
+    TOK_OP_LE = 263,
+    TOK_OP_GE = 264,
+    TOK_OP_LEFT = 265,
+    TOK_OP_RIGHT = 266,
+    TOK_UNARY = 267
+  };
+#endif
+
+/* Value type.  */
</ins><span class="cx"> #if ! defined YYSTYPE &amp;&amp; ! defined YYSTYPE_IS_DECLARED
</span><span class="cx"> typedef int YYSTYPE;
</span><del>-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
-# define YYSTYPE_IS_DECLARED 1
</del><span class="cx"> # define YYSTYPE_IS_TRIVIAL 1
</span><ins>+# define YYSTYPE_IS_DECLARED 1
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-/* Copy the second part of user declarations.  */
</del><ins>+int ppparse (Context *context);
</ins><span class="cx"> 
</span><span class="cx"> 
</span><del>-/* Line 216 of yacc.c.  */
</del><span class="cx"> 
</span><ins>+/* Copy the second part of user declarations.  */
</ins><span class="cx"> 
</span><ins>+
+
</ins><span class="cx"> #ifdef short
</span><span class="cx"> # undef short
</span><span class="cx"> #endif
</span><span class="lines">@@ -203,11 +205,8 @@
</span><span class="cx"> 
</span><span class="cx"> #ifdef YYTYPE_INT8
</span><span class="cx"> typedef YYTYPE_INT8 yytype_int8;
</span><del>-#elif (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-typedef signed char yytype_int8;
</del><span class="cx"> #else
</span><del>-typedef short int yytype_int8;
</del><ins>+typedef signed char yytype_int8;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #ifdef YYTYPE_UINT16
</span><span class="lines">@@ -227,8 +226,7 @@
</span><span class="cx"> #  define YYSIZE_T __SIZE_TYPE__
</span><span class="cx"> # elif defined size_t
</span><span class="cx"> #  define YYSIZE_T size_t
</span><del>-# elif ! defined YYSIZE_T &amp;&amp; (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
</del><ins>+# elif ! defined YYSIZE_T
</ins><span class="cx"> #  include &lt;stddef.h&gt; /* INFRINGES ON USER NAME SPACE */
</span><span class="cx"> #  define YYSIZE_T size_t
</span><span class="cx"> # else
</span><span class="lines">@@ -242,39 +240,68 @@
</span><span class="cx"> # if defined YYENABLE_NLS &amp;&amp; YYENABLE_NLS
</span><span class="cx"> #  if ENABLE_NLS
</span><span class="cx"> #   include &lt;libintl.h&gt; /* INFRINGES ON USER NAME SPACE */
</span><del>-#   define YY_(msgid) dgettext (&quot;bison-runtime&quot;, msgid)
</del><ins>+#   define YY_(Msgid) dgettext (&quot;bison-runtime&quot;, Msgid)
</ins><span class="cx"> #  endif
</span><span class="cx"> # endif
</span><span class="cx"> # ifndef YY_
</span><del>-#  define YY_(msgid) msgid
</del><ins>+#  define YY_(Msgid) Msgid
</ins><span class="cx"> # endif
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#ifndef YY_ATTRIBUTE
+# if (defined __GNUC__                                               \
+      &amp;&amp; (2 &lt; __GNUC__ || (__GNUC__ == 2 &amp;&amp; 96 &lt;= __GNUC_MINOR__)))  \
+     || defined __SUNPRO_C &amp;&amp; 0x5110 &lt;= __SUNPRO_C
+#  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
+# else
+#  define YY_ATTRIBUTE(Spec) /* empty */
+# endif
+#endif
+
+#ifndef YY_ATTRIBUTE_PURE
+# define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
+#endif
+
+#ifndef YY_ATTRIBUTE_UNUSED
+# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
+#endif
+
+#if !defined _Noreturn \
+     &amp;&amp; (!defined __STDC_VERSION__ || __STDC_VERSION__ &lt; 201112)
+# if defined _MSC_VER &amp;&amp; 1200 &lt;= _MSC_VER
+#  define _Noreturn __declspec (noreturn)
+# else
+#  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
+# endif
+#endif
+
</ins><span class="cx"> /* Suppress unused-variable warnings by &quot;using&quot; E.  */
</span><span class="cx"> #if ! defined lint || defined __GNUC__
</span><del>-# define YYUSE(e) ((void) (e))
</del><ins>+# define YYUSE(E) ((void) (E))
</ins><span class="cx"> #else
</span><del>-# define YYUSE(e) /* empty */
</del><ins>+# define YYUSE(E) /* empty */
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-/* Identity function, used to suppress warnings about constant conditions.  */
-#ifndef lint
-# define YYID(n) (n)
</del><ins>+#if defined __GNUC__ &amp;&amp; 407 &lt;= __GNUC__ * 100 + __GNUC_MINOR__
+/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
+    _Pragma (&quot;GCC diagnostic push&quot;) \
+    _Pragma (&quot;GCC diagnostic ignored \&quot;-Wuninitialized\&quot;&quot;)\
+    _Pragma (&quot;GCC diagnostic ignored \&quot;-Wmaybe-uninitialized\&quot;&quot;)
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
+    _Pragma (&quot;GCC diagnostic pop&quot;)
</ins><span class="cx"> #else
</span><del>-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static int
-YYID (int i)
-#else
-static int
-YYID (i)
-    int i;
</del><ins>+# define YY_INITIAL_VALUE(Value) Value
</ins><span class="cx"> #endif
</span><del>-{
-  return i;
-}
</del><ins>+#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END
</ins><span class="cx"> #endif
</span><ins>+#ifndef YY_INITIAL_VALUE
+# define YY_INITIAL_VALUE(Value) /* Nothing. */
+#endif
</ins><span class="cx"> 
</span><ins>+
</ins><span class="cx"> #if ! defined yyoverflow || YYERROR_VERBOSE
</span><span class="cx"> 
</span><span class="cx"> /* The parser invokes alloca or malloc; define the necessary symbols.  */
</span><span class="lines">@@ -292,11 +319,11 @@
</span><span class="cx"> #    define alloca _alloca
</span><span class="cx"> #   else
</span><span class="cx"> #    define YYSTACK_ALLOC alloca
</span><del>-#    if ! defined _ALLOCA_H &amp;&amp; ! defined _STDLIB_H &amp;&amp; (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
</del><ins>+#    if ! defined _ALLOCA_H &amp;&amp; ! defined EXIT_SUCCESS
</ins><span class="cx"> #     include &lt;stdlib.h&gt; /* INFRINGES ON USER NAME SPACE */
</span><del>-#     ifndef _STDLIB_H
-#      define _STDLIB_H 1
</del><ins>+      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
+#     ifndef EXIT_SUCCESS
+#      define EXIT_SUCCESS 0
</ins><span class="cx"> #     endif
</span><span class="cx"> #    endif
</span><span class="cx"> #   endif
</span><span class="lines">@@ -304,8 +331,8 @@
</span><span class="cx"> # endif
</span><span class="cx"> 
</span><span class="cx"> # ifdef YYSTACK_ALLOC
</span><del>-   /* Pacify GCC's `empty if-body' warning.  */
-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
</del><ins>+   /* Pacify GCC's 'empty if-body' warning.  */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
</ins><span class="cx"> #  ifndef YYSTACK_ALLOC_MAXIMUM
</span><span class="cx">     /* The OS might guarantee only one guard page at the bottom of the stack,
</span><span class="cx">        and a page size can be as small as 4096 bytes.  So we cannot safely
</span><span class="lines">@@ -319,25 +346,23 @@
</span><span class="cx"> #  ifndef YYSTACK_ALLOC_MAXIMUM
</span><span class="cx"> #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
</span><span class="cx"> #  endif
</span><del>-#  if (defined __cplusplus &amp;&amp; ! defined _STDLIB_H \
</del><ins>+#  if (defined __cplusplus &amp;&amp; ! defined EXIT_SUCCESS \
</ins><span class="cx">        &amp;&amp; ! ((defined YYMALLOC || defined malloc) \
</span><del>-         &amp;&amp; (defined YYFREE || defined free)))
</del><ins>+             &amp;&amp; (defined YYFREE || defined free)))
</ins><span class="cx"> #   include &lt;stdlib.h&gt; /* INFRINGES ON USER NAME SPACE */
</span><del>-#   ifndef _STDLIB_H
-#    define _STDLIB_H 1
</del><ins>+#   ifndef EXIT_SUCCESS
+#    define EXIT_SUCCESS 0
</ins><span class="cx"> #   endif
</span><span class="cx"> #  endif
</span><span class="cx"> #  ifndef YYMALLOC
</span><span class="cx"> #   define YYMALLOC malloc
</span><del>-#   if ! defined malloc &amp;&amp; ! defined _STDLIB_H &amp;&amp; (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
</del><ins>+#   if ! defined malloc &amp;&amp; ! defined EXIT_SUCCESS
</ins><span class="cx"> void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
</span><span class="cx"> #   endif
</span><span class="cx"> #  endif
</span><span class="cx"> #  ifndef YYFREE
</span><span class="cx"> #   define YYFREE free
</span><del>-#   if ! defined free &amp;&amp; ! defined _STDLIB_H &amp;&amp; (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
</del><ins>+#   if ! defined free &amp;&amp; ! defined EXIT_SUCCESS
</ins><span class="cx"> void free (void *); /* INFRINGES ON USER NAME SPACE */
</span><span class="cx"> #   endif
</span><span class="cx"> #  endif
</span><span class="lines">@@ -347,14 +372,14 @@
</span><span class="cx"> 
</span><span class="cx"> #if (! defined yyoverflow \
</span><span class="cx">      &amp;&amp; (! defined __cplusplus \
</span><del>-     || (defined YYSTYPE_IS_TRIVIAL &amp;&amp; YYSTYPE_IS_TRIVIAL)))
</del><ins>+         || (defined YYSTYPE_IS_TRIVIAL &amp;&amp; YYSTYPE_IS_TRIVIAL)))
</ins><span class="cx"> 
</span><span class="cx"> /* A type that is properly aligned for any stack member.  */
</span><span class="cx"> union yyalloc
</span><span class="cx"> {
</span><del>-  yytype_int16 yyss;
-  YYSTYPE yyvs;
-  };
</del><ins>+  yytype_int16 yyss_alloc;
+  YYSTYPE yyvs_alloc;
+};
</ins><span class="cx"> 
</span><span class="cx"> /* The size of the maximum gap between one aligned stack and the next.  */
</span><span class="cx"> # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
</span><span class="lines">@@ -365,42 +390,46 @@
</span><span class="cx">      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
</span><span class="cx">       + YYSTACK_GAP_MAXIMUM)
</span><span class="cx"> 
</span><del>-/* Copy COUNT objects from FROM to TO.  The source and destination do
-   not overlap.  */
-# ifndef YYCOPY
-#  if defined __GNUC__ &amp;&amp; 1 &lt; __GNUC__
-#   define YYCOPY(To, From, Count) \
-      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-#  else
-#   define YYCOPY(To, From, Count)        \
-      do                    \
-    {                    \
-      YYSIZE_T yyi;                \
-      for (yyi = 0; yyi &lt; (Count); yyi++)    \
-        (To)[yyi] = (From)[yyi];        \
-    }                    \
-      while (YYID (0))
-#  endif
-# endif
</del><ins>+# define YYCOPY_NEEDED 1
</ins><span class="cx"> 
</span><span class="cx"> /* Relocate STACK from its old location to the new one.  The
</span><span class="cx">    local variables YYSIZE and YYSTACKSIZE give the old and new number of
</span><span class="cx">    elements in the stack, and YYPTR gives the new location of the
</span><span class="cx">    stack.  Advance YYPTR to a properly aligned location for the next
</span><span class="cx">    stack.  */
</span><del>-# define YYSTACK_RELOCATE(Stack)                    \
-    do                                    \
-      {                                    \
-    YYSIZE_T yynewbytes;                        \
-    YYCOPY (&amp;yyptr-&gt;Stack, Stack, yysize);                \
-    Stack = &amp;yyptr-&gt;Stack;                        \
-    yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
-    yyptr += yynewbytes / sizeof (*yyptr);                \
-      }                                    \
-    while (YYID (0))
</del><ins>+# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
+    do                                                                  \
+      {                                                                 \
+        YYSIZE_T yynewbytes;                                            \
+        YYCOPY (&amp;yyptr-&gt;Stack_alloc, Stack, yysize);                    \
+        Stack = &amp;yyptr-&gt;Stack_alloc;                                    \
+        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+        yyptr += yynewbytes / sizeof (*yyptr);                          \
+      }                                                                 \
+    while (0)
</ins><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if defined YYCOPY_NEEDED &amp;&amp; YYCOPY_NEEDED
+/* Copy COUNT objects from SRC to DST.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if defined __GNUC__ &amp;&amp; 1 &lt; __GNUC__
+#   define YYCOPY(Dst, Src, Count) \
+      __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
+#  else
+#   define YYCOPY(Dst, Src, Count)              \
+      do                                        \
+        {                                       \
+          YYSIZE_T yyi;                         \
+          for (yyi = 0; yyi &lt; (Count); yyi++)   \
+            (Dst)[yyi] = (Src)[yyi];            \
+        }                                       \
+      while (0)
+#  endif
+# endif
+#endif /* !YYCOPY_NEEDED */
+
</ins><span class="cx"> /* YYFINAL -- State number of the termination state.  */
</span><span class="cx"> #define YYFINAL  14
</span><span class="cx"> /* YYLAST -- Last index in YYTABLE.  */
</span><span class="lines">@@ -412,17 +441,19 @@
</span><span class="cx"> #define YYNNTS  3
</span><span class="cx"> /* YYNRULES -- Number of rules.  */
</span><span class="cx"> #define YYNRULES  26
</span><del>-/* YYNRULES -- Number of states.  */
</del><ins>+/* YYNSTATES -- Number of states.  */
</ins><span class="cx"> #define YYNSTATES  52
</span><span class="cx"> 
</span><del>-/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
</del><ins>+/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
+   by yylex, with out-of-bounds checking.  */
</ins><span class="cx"> #define YYUNDEFTOK  2
</span><span class="cx"> #define YYMAXUTOK   267
</span><span class="cx"> 
</span><del>-#define YYTRANSLATE(YYX)                        \
</del><ins>+#define YYTRANSLATE(YYX)                                                \
</ins><span class="cx">   ((unsigned int) (YYX) &lt;= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
</span><span class="cx"> 
</span><del>-/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
</del><ins>+/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
+   as returned by yylex, without out-of-bounds checking.  */
</ins><span class="cx"> static const yytype_uint8 yytranslate[] =
</span><span class="cx"> {
</span><span class="cx">        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
</span><span class="lines">@@ -455,55 +486,31 @@
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> #if YYDEBUG
</span><del>-/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
-   YYRHS.  */
-static const yytype_uint8 yyprhs[] =
-{
-       0,     0,     3,     5,     7,    11,    15,    19,    23,    27,
-      31,    35,    39,    43,    47,    51,    55,    59,    63,    67,
-      71,    75,    79,    82,    85,    88,    91
-};
-
-/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
-static const yytype_int8 yyrhs[] =
-{
-      28,     0,    -1,    29,    -1,     3,    -1,    29,     4,    29,
-      -1,    29,     5,    29,    -1,    29,     6,    29,    -1,    29,
-       7,    29,    -1,    29,     8,    29,    -1,    29,     9,    29,
-      -1,    29,    10,    29,    -1,    29,    13,    29,    -1,    29,
-      14,    29,    -1,    29,    12,    29,    -1,    29,    11,    29,
-      -1,    29,    15,    29,    -1,    29,    16,    29,    -1,    29,
-      18,    29,    -1,    29,    17,    29,    -1,    29,    21,    29,
-      -1,    29,    20,    29,    -1,    29,    19,    29,    -1,    23,
-      29,    -1,    24,    29,    -1,    18,    29,    -1,    17,    29,
-      -1,    25,    29,    26,    -1
-};
-
-/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
</del><ins>+  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
</ins><span class="cx"> static const yytype_uint8 yyrline[] =
</span><span class="cx"> {
</span><del>-       0,    91,    91,    98,    99,   102,   105,   108,   111,   114,
-     117,   120,   123,   126,   129,   132,   135,   138,   141,   144,
-     157,   170,   173,   176,   179,   182,   185
</del><ins>+       0,    97,    97,   104,   105,   108,   111,   114,   117,   120,
+     123,   126,   129,   132,   135,   138,   141,   144,   147,   150,
+     163,   176,   179,   182,   185,   188,   191
</ins><span class="cx"> };
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
</del><ins>+#if YYDEBUG || YYERROR_VERBOSE || 0
</ins><span class="cx"> /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
</span><span class="cx">    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
</span><span class="cx"> static const char *const yytname[] =
</span><span class="cx"> {
</span><span class="cx">   &quot;$end&quot;, &quot;error&quot;, &quot;$undefined&quot;, &quot;TOK_CONST_INT&quot;, &quot;TOK_OP_OR&quot;,
</span><del>-  &quot;TOK_OP_AND&quot;, &quot;'|'&quot;, &quot;'^'&quot;, &quot;'&amp;'&quot;, &quot;TOK_OP_NE&quot;, &quot;TOK_OP_EQ&quot;, &quot;'&lt;'&quot;,
-  &quot;'&gt;'&quot;, &quot;TOK_OP_GE&quot;, &quot;TOK_OP_LE&quot;, &quot;TOK_OP_RIGHT&quot;, &quot;TOK_OP_LEFT&quot;, &quot;'+'&quot;,
</del><ins>+  &quot;TOK_OP_AND&quot;, &quot;'|'&quot;, &quot;'^'&quot;, &quot;'&amp;'&quot;, &quot;TOK_OP_EQ&quot;, &quot;TOK_OP_NE&quot;, &quot;'&lt;'&quot;,
+  &quot;'&gt;'&quot;, &quot;TOK_OP_LE&quot;, &quot;TOK_OP_GE&quot;, &quot;TOK_OP_LEFT&quot;, &quot;TOK_OP_RIGHT&quot;, &quot;'+'&quot;,
</ins><span class="cx">   &quot;'-'&quot;, &quot;'*'&quot;, &quot;'/'&quot;, &quot;'%'&quot;, &quot;TOK_UNARY&quot;, &quot;'!'&quot;, &quot;'~'&quot;, &quot;'('&quot;, &quot;')'&quot;,
</span><del>-  &quot;$accept&quot;, &quot;input&quot;, &quot;expression&quot;, 0
</del><ins>+  &quot;$accept&quot;, &quot;input&quot;, &quot;expression&quot;, YY_NULLPTR
</ins><span class="cx"> };
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> # ifdef YYPRINT
</span><del>-/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
-   token YYLEX-NUM.  */
</del><ins>+/* YYTOKNUM[NUM] -- (External) token number corresponding to the
+   (internal) symbol number NUM (which must be that of a token).  */
</ins><span class="cx"> static const yytype_uint16 yytoknum[] =
</span><span class="cx"> {
</span><span class="cx">        0,   256,   257,   258,   259,   260,   124,    94,    38,   261,
</span><span class="lines">@@ -512,44 +519,18 @@
</span><span class="cx"> };
</span><span class="cx"> # endif
</span><span class="cx"> 
</span><del>-/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-static const yytype_uint8 yyr1[] =
-{
-       0,    27,    28,    29,    29,    29,    29,    29,    29,    29,
-      29,    29,    29,    29,    29,    29,    29,    29,    29,    29,
-      29,    29,    29,    29,    29,    29,    29
-};
</del><ins>+#define YYPACT_NINF -11
</ins><span class="cx"> 
</span><del>-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
-static const yytype_uint8 yyr2[] =
-{
-       0,     2,     1,     1,     3,     3,     3,     3,     3,     3,
-       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     2,     2,     2,     2,     3
-};
</del><ins>+#define yypact_value_is_default(Yystate) \
+  (!!((Yystate) == (-11)))
</ins><span class="cx"> 
</span><del>-/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
-   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
-   means the default is an error.  */
-static const yytype_uint8 yydefact[] =
-{
-       0,     3,     0,     0,     0,     0,     0,     0,     2,    25,
-      24,    22,    23,     0,     1,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    26,     4,     5,     6,     7,     8,     9,
-      10,    14,    13,    11,    12,    15,    16,    18,    17,    21,
-      20,    19
-};
</del><ins>+#define YYTABLE_NINF -1
</ins><span class="cx"> 
</span><del>-/* YYDEFGOTO[NTERM-NUM].  */
-static const yytype_int8 yydefgoto[] =
-{
-      -1,     7,     8
-};
</del><ins>+#define yytable_value_is_error(Yytable_value) \
+  0
</ins><span class="cx"> 
</span><del>-/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-   STATE-NUM.  */
-#define YYPACT_NINF -11
</del><ins>+  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+     STATE-NUM.  */
</ins><span class="cx"> static const yytype_int16 yypact[] =
</span><span class="cx"> {
</span><span class="cx">       46,   -11,    46,    46,    46,    46,    46,    12,    68,   -11,
</span><span class="lines">@@ -560,17 +541,34 @@
</span><span class="cx">      -11,   -11
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-/* YYPGOTO[NTERM-NUM].  */
</del><ins>+  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
+     Performed when YYTABLE does not specify something else to do.  Zero
+     means the default is an error.  */
+static const yytype_uint8 yydefact[] =
+{
+       0,     3,     0,     0,     0,     0,     0,     0,     2,    25,
+      24,    22,    23,     0,     1,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    26,     4,     5,     6,     7,     8,    10,
+       9,    14,    13,    12,    11,    16,    15,    18,    17,    21,
+      20,    19
+};
+
+  /* YYPGOTO[NTERM-NUM].  */
</ins><span class="cx"> static const yytype_int8 yypgoto[] =
</span><span class="cx"> {
</span><span class="cx">      -11,   -11,    -2
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
-   positive, shift that token.  If negative, reduce the rule which
-   number is the opposite.  If zero, do what YYDEFACT says.
-   If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -1
</del><ins>+  /* YYDEFGOTO[NTERM-NUM].  */
+static const yytype_int8 yydefgoto[] =
+{
+      -1,     7,     8
+};
+
+  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
+     positive, shift that token.  If negative, reduce the rule whose
+     number is the opposite.  If YYTABLE_NINF, syntax error.  */
</ins><span class="cx"> static const yytype_uint8 yytable[] =
</span><span class="cx"> {
</span><span class="cx">        9,    10,    11,    12,    13,    26,    27,    28,    29,    30,
</span><span class="lines">@@ -615,8 +613,8 @@
</span><span class="cx">       16,    17,    18,    19,    20,    21
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-   symbol of state STATE-NUM.  */
</del><ins>+  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+     symbol of state STATE-NUM.  */
</ins><span class="cx"> static const yytype_uint8 yystos[] =
</span><span class="cx"> {
</span><span class="cx">        0,     3,    17,    18,    23,    24,    25,    28,    29,    29,
</span><span class="lines">@@ -627,96 +625,58 @@
</span><span class="cx">       29,    29
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-#define yyerrok        (yyerrstatus = 0)
-#define yyclearin    (yychar = YYEMPTY)
-#define YYEMPTY        (-2)
-#define YYEOF        0
</del><ins>+  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+static const yytype_uint8 yyr1[] =
+{
+       0,    27,    28,    29,    29,    29,    29,    29,    29,    29,
+      29,    29,    29,    29,    29,    29,    29,    29,    29,    29,
+      29,    29,    29,    29,    29,    29,    29
+};
</ins><span class="cx"> 
</span><del>-#define YYACCEPT    goto yyacceptlab
-#define YYABORT        goto yyabortlab
-#define YYERROR        goto yyerrorlab
</del><ins>+  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
+static const yytype_uint8 yyr2[] =
+{
+       0,     2,     1,     1,     3,     3,     3,     3,     3,     3,
+       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+       3,     3,     2,     2,     2,     2,     3
+};
</ins><span class="cx"> 
</span><span class="cx"> 
</span><del>-/* Like YYERROR except do call yyerror.  This remains here temporarily
-   to ease the transition to the new meaning of YYERROR, for GCC.
-   Once GCC version 2 has supplanted version 1, this can go.  */
</del><ins>+#define yyerrok         (yyerrstatus = 0)
+#define yyclearin       (yychar = YYEMPTY)
+#define YYEMPTY         (-2)
+#define YYEOF           0
</ins><span class="cx"> 
</span><del>-#define YYFAIL        goto yyerrlab
</del><ins>+#define YYACCEPT        goto yyacceptlab
+#define YYABORT         goto yyabortlab
+#define YYERROR         goto yyerrorlab
</ins><span class="cx"> 
</span><ins>+
</ins><span class="cx"> #define YYRECOVERING()  (!!yyerrstatus)
</span><span class="cx"> 
</span><del>-#define YYBACKUP(Token, Value)                    \
-do                                \
-  if (yychar == YYEMPTY &amp;&amp; yylen == 1)                \
-    {                                \
-      yychar = (Token);                        \
-      yylval = (Value);                        \
-      yytoken = YYTRANSLATE (yychar);                \
-      YYPOPSTACK (1);                        \
-      goto yybackup;                        \
-    }                                \
-  else                                \
-    {                                \
</del><ins>+#define YYBACKUP(Token, Value)                                  \
+do                                                              \
+  if (yychar == YYEMPTY)                                        \
+    {                                                           \
+      yychar = (Token);                                         \
+      yylval = (Value);                                         \
+      YYPOPSTACK (yylen);                                       \
+      yystate = *yyssp;                                         \
+      goto yybackup;                                            \
+    }                                                           \
+  else                                                          \
+    {                                                           \
</ins><span class="cx">       yyerror (context, YY_(&quot;syntax error: cannot back up&quot;)); \
</span><del>-      YYERROR;                            \
-    }                                \
-while (YYID (0))
</del><ins>+      YYERROR;                                                  \
+    }                                                           \
+while (0)
</ins><span class="cx"> 
</span><ins>+/* Error token number */
+#define YYTERROR        1
+#define YYERRCODE       256
</ins><span class="cx"> 
</span><del>-#define YYTERROR    1
-#define YYERRCODE    256
</del><span class="cx"> 
</span><span class="cx"> 
</span><del>-/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
-   If N is 0, then set CURRENT to the empty location which ends
-   the previous symbol: RHS[0] (always defined).  */
-
-#define YYRHSLOC(Rhs, K) ((Rhs)[K])
-#ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N)                \
-    do                                    \
-      if (YYID (N))                                                    \
-    {                                \
-      (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;    \
-      (Current).first_column = YYRHSLOC (Rhs, 1).first_column;    \
-      (Current).last_line    = YYRHSLOC (Rhs, N).last_line;        \
-      (Current).last_column  = YYRHSLOC (Rhs, N).last_column;    \
-    }                                \
-      else                                \
-    {                                \
-      (Current).first_line   = (Current).last_line   =        \
-        YYRHSLOC (Rhs, 0).last_line;                \
-      (Current).first_column = (Current).last_column =        \
-        YYRHSLOC (Rhs, 0).last_column;                \
-    }                                \
-    while (YYID (0))
-#endif
-
-
-/* YY_LOCATION_PRINT -- Print the location on the stream.
-   This macro was not mandated originally: define only if we know
-   we won't break user code: when these are the locations we know.  */
-
-#ifndef YY_LOCATION_PRINT
-# if defined YYLTYPE_IS_TRIVIAL &amp;&amp; YYLTYPE_IS_TRIVIAL
-#  define YY_LOCATION_PRINT(File, Loc)            \
-     fprintf (File, &quot;%d.%d-%d.%d&quot;,            \
-          (Loc).first_line, (Loc).first_column,    \
-          (Loc).last_line,  (Loc).last_column)
-# else
-#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-# endif
-#endif
-
-
-/* YYLEX -- calling `yylex' with the right arguments.  */
-
-#ifdef YYLEX_PARAM
-# define YYLEX yylex (&amp;yylval, YYLEX_PARAM)
-#else
-# define YYLEX yylex (&amp;yylval, context)
-#endif
-
</del><span class="cx"> /* Enable debugging if requested.  */
</span><span class="cx"> #if YYDEBUG
</span><span class="cx"> 
</span><span class="lines">@@ -725,56 +685,47 @@
</span><span class="cx"> #  define YYFPRINTF fprintf
</span><span class="cx"> # endif
</span><span class="cx"> 
</span><del>-# define YYDPRINTF(Args)            \
-do {                        \
-  if (yydebug)                    \
-    YYFPRINTF Args;                \
-} while (YYID (0))
-
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)              \
-do {                                      \
</del><ins>+# define YYDPRINTF(Args)                        \
+do {                                            \
</ins><span class="cx">   if (yydebug)                                  \
</span><del>-    {                                      \
-      YYFPRINTF (stderr, &quot;%s &quot;, Title);                      \
-      yy_symbol_print (stderr,                          \
-          Type, Value, context); \
-      YYFPRINTF (stderr, &quot;\n&quot;);                          \
-    }                                      \
-} while (YYID (0))
</del><ins>+    YYFPRINTF Args;                             \
+} while (0)
</ins><span class="cx"> 
</span><ins>+/* This macro is provided for backward compatibility. */
+#ifndef YY_LOCATION_PRINT
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+#endif
</ins><span class="cx"> 
</span><del>-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
</del><span class="cx"> 
</span><del>-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
</del><ins>+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
+do {                                                                      \
+  if (yydebug)                                                            \
+    {                                                                     \
+      YYFPRINTF (stderr, &quot;%s &quot;, Title);                                   \
+      yy_symbol_print (stderr,                                            \
+                  Type, Value, context); \
+      YYFPRINTF (stderr, &quot;\n&quot;);                                           \
+    }                                                                     \
+} while (0)
+
+
+/*----------------------------------------.
+| Print this symbol's value on YYOUTPUT.  |
+`----------------------------------------*/
+
</ins><span class="cx"> static void
</span><span class="cx"> yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, Context *context)
</span><del>-#else
-static void
-yy_symbol_value_print (yyoutput, yytype, yyvaluep, context)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE const * const yyvaluep;
-    Context *context;
-#endif
</del><span class="cx"> {
</span><ins>+  FILE *yyo = yyoutput;
+  YYUSE (yyo);
+  YYUSE (context);
</ins><span class="cx">   if (!yyvaluep)
</span><span class="cx">     return;
</span><del>-  YYUSE (context);
</del><span class="cx"> # ifdef YYPRINT
</span><span class="cx">   if (yytype &lt; YYNTOKENS)
</span><span class="cx">     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
</span><del>-# else
-  YYUSE (yyoutput);
</del><span class="cx"> # endif
</span><del>-  switch (yytype)
-    {
-      default:
-    break;
-    }
</del><ins>+  YYUSE (yytype);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="lines">@@ -782,23 +733,11 @@
</span><span class="cx"> | Print this symbol on YYOUTPUT.  |
</span><span class="cx"> `--------------------------------*/
</span><span class="cx"> 
</span><del>-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
</del><span class="cx"> static void
</span><span class="cx"> yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, Context *context)
</span><del>-#else
-static void
-yy_symbol_print (yyoutput, yytype, yyvaluep, context)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE const * const yyvaluep;
-    Context *context;
-#endif
</del><span class="cx"> {
</span><del>-  if (yytype &lt; YYNTOKENS)
-    YYFPRINTF (yyoutput, &quot;token %s (&quot;, yytname[yytype]);
-  else
-    YYFPRINTF (yyoutput, &quot;nterm %s (&quot;, yytname[yytype]);
</del><ins>+  YYFPRINTF (yyoutput, &quot;%s %s (&quot;,
+             yytype &lt; YYNTOKENS ? &quot;token&quot; : &quot;nterm&quot;, yytname[yytype]);
</ins><span class="cx"> 
</span><span class="cx">   yy_symbol_value_print (yyoutput, yytype, yyvaluep, context);
</span><span class="cx">   YYFPRINTF (yyoutput, &quot;)&quot;);
</span><span class="lines">@@ -809,67 +748,54 @@
</span><span class="cx"> | TOP (included).                                                   |
</span><span class="cx"> `------------------------------------------------------------------*/
</span><span class="cx"> 
</span><del>-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
</del><span class="cx"> static void
</span><del>-yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
-#else
-static void
-yy_stack_print (bottom, top)
-    yytype_int16 *bottom;
-    yytype_int16 *top;
-#endif
</del><ins>+yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
</ins><span class="cx"> {
</span><span class="cx">   YYFPRINTF (stderr, &quot;Stack now&quot;);
</span><del>-  for (; bottom &lt;= top; ++bottom)
-    YYFPRINTF (stderr, &quot; %d&quot;, *bottom);
</del><ins>+  for (; yybottom &lt;= yytop; yybottom++)
+    {
+      int yybot = *yybottom;
+      YYFPRINTF (stderr, &quot; %d&quot;, yybot);
+    }
</ins><span class="cx">   YYFPRINTF (stderr, &quot;\n&quot;);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-# define YY_STACK_PRINT(Bottom, Top)                \
-do {                                \
-  if (yydebug)                            \
-    yy_stack_print ((Bottom), (Top));                \
-} while (YYID (0))
</del><ins>+# define YY_STACK_PRINT(Bottom, Top)                            \
+do {                                                            \
+  if (yydebug)                                                  \
+    yy_stack_print ((Bottom), (Top));                           \
+} while (0)
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> /*------------------------------------------------.
</span><span class="cx"> | Report that the YYRULE is going to be reduced.  |
</span><span class="cx"> `------------------------------------------------*/
</span><span class="cx"> 
</span><del>-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
</del><span class="cx"> static void
</span><del>-yy_reduce_print (YYSTYPE *yyvsp, int yyrule, Context *context)
-#else
-static void
-yy_reduce_print (yyvsp, yyrule, context)
-    YYSTYPE *yyvsp;
-    int yyrule;
-    Context *context;
-#endif
</del><ins>+yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule, Context *context)
</ins><span class="cx"> {
</span><ins>+  unsigned long int yylno = yyrline[yyrule];
</ins><span class="cx">   int yynrhs = yyr2[yyrule];
</span><span class="cx">   int yyi;
</span><del>-  unsigned long int yylno = yyrline[yyrule];
</del><span class="cx">   YYFPRINTF (stderr, &quot;Reducing stack by rule %d (line %lu):\n&quot;,
</span><del>-         yyrule - 1, yylno);
</del><ins>+             yyrule - 1, yylno);
</ins><span class="cx">   /* The symbols being reduced.  */
</span><span class="cx">   for (yyi = 0; yyi &lt; yynrhs; yyi++)
</span><span class="cx">     {
</span><del>-      fprintf (stderr, &quot;   $%d = &quot;, yyi + 1);
-      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
-               &amp;(yyvsp[(yyi + 1) - (yynrhs)])
-                              , context);
-      fprintf (stderr, &quot;\n&quot;);
</del><ins>+      YYFPRINTF (stderr, &quot;   $%d = &quot;, yyi + 1);
+      yy_symbol_print (stderr,
+                       yystos[yyssp[yyi + 1 - yynrhs]],
+                       &amp;(yyvsp[(yyi + 1) - (yynrhs)])
+                                              , context);
+      YYFPRINTF (stderr, &quot;\n&quot;);
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-# define YY_REDUCE_PRINT(Rule)        \
-do {                    \
-  if (yydebug)                \
-    yy_reduce_print (yyvsp, Rule, context); \
-} while (YYID (0))
</del><ins>+# define YY_REDUCE_PRINT(Rule)          \
+do {                                    \
+  if (yydebug)                          \
+    yy_reduce_print (yyssp, yyvsp, Rule, context); \
+} while (0)
</ins><span class="cx"> 
</span><span class="cx"> /* Nonzero means print parse trace.  It is left uninitialized so that
</span><span class="cx">    multiple parsers can coexist.  */
</span><span class="lines">@@ -883,7 +809,7 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> /* YYINITDEPTH -- initial size of the parser's stacks.  */
</span><del>-#ifndef    YYINITDEPTH
</del><ins>+#ifndef YYINITDEPTH
</ins><span class="cx"> # define YYINITDEPTH 200
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -898,7 +824,6 @@
</span><span class="cx"> # define YYMAXDEPTH 10000
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-
</del><span class="cx"> 
</span><span class="cx"> #if YYERROR_VERBOSE
</span><span class="cx"> 
</span><span class="lines">@@ -907,15 +832,8 @@
</span><span class="cx"> #   define yystrlen strlen
</span><span class="cx"> #  else
</span><span class="cx"> /* Return the length of YYSTR.  */
</span><del>-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
</del><span class="cx"> static YYSIZE_T
</span><span class="cx"> yystrlen (const char *yystr)
</span><del>-#else
-static YYSIZE_T
-yystrlen (yystr)
-    const char *yystr;
-#endif
</del><span class="cx"> {
</span><span class="cx">   YYSIZE_T yylen;
</span><span class="cx">   for (yylen = 0; yystr[yylen]; yylen++)
</span><span class="lines">@@ -931,16 +849,8 @@
</span><span class="cx"> #  else
</span><span class="cx"> /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
</span><span class="cx">    YYDEST.  */
</span><del>-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
</del><span class="cx"> static char *
</span><span class="cx"> yystpcpy (char *yydest, const char *yysrc)
</span><del>-#else
-static char *
-yystpcpy (yydest, yysrc)
-    char *yydest;
-    const char *yysrc;
-#endif
</del><span class="cx"> {
</span><span class="cx">   char *yyd = yydest;
</span><span class="cx">   const char *yys = yysrc;
</span><span class="lines">@@ -970,27 +880,27 @@
</span><span class="cx">       char const *yyp = yystr;
</span><span class="cx"> 
</span><span class="cx">       for (;;)
</span><del>-    switch (*++yyp)
-      {
-      case '\'':
-      case ',':
-        goto do_not_strip_quotes;
</del><ins>+        switch (*++yyp)
+          {
+          case '\'':
+          case ',':
+            goto do_not_strip_quotes;
</ins><span class="cx"> 
</span><del>-      case '\\':
-        if (*++yyp != '\\')
-          goto do_not_strip_quotes;
-        /* Fall through.  */
-      default:
-        if (yyres)
-          yyres[yyn] = *yyp;
-        yyn++;
-        break;
</del><ins>+          case '\\':
+            if (*++yyp != '\\')
+              goto do_not_strip_quotes;
+            /* Fall through.  */
+          default:
+            if (yyres)
+              yyres[yyn] = *yyp;
+            yyn++;
+            break;
</ins><span class="cx"> 
</span><del>-      case '&quot;':
-        if (yyres)
-          yyres[yyn] = '\0';
-        return yyn;
-      }
</del><ins>+          case '&quot;':
+            if (yyres)
+              yyres[yyn] = '\0';
+            return yyn;
+          }
</ins><span class="cx">     do_not_strip_quotes: ;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -1001,268 +911,237 @@
</span><span class="cx"> }
</span><span class="cx"> # endif
</span><span class="cx"> 
</span><del>-/* Copy into YYRESULT an error message about the unexpected token
-   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
-   including the terminating null byte.  If YYRESULT is null, do not
-   copy anything; just return the number of bytes that would be
-   copied.  As a special case, return 0 if an ordinary &quot;syntax error&quot;
-   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
-   size calculation.  */
-static YYSIZE_T
-yysyntax_error (char *yyresult, int yystate, int yychar)
</del><ins>+/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
+   about the unexpected token YYTOKEN for the state stack whose top is
+   YYSSP.
+
+   Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
+   not large enough to hold the message.  In that case, also set
+   *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
+   required number of bytes is too large to store.  */
+static int
+yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
+                yytype_int16 *yyssp, int yytoken)
</ins><span class="cx"> {
</span><del>-  int yyn = yypact[yystate];
</del><ins>+  YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
+  YYSIZE_T yysize = yysize0;
+  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+  /* Internationalized format string. */
+  const char *yyformat = YY_NULLPTR;
+  /* Arguments of yyformat. */
+  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+  /* Number of reported tokens (one for the &quot;unexpected&quot;, one per
+     &quot;expected&quot;). */
+  int yycount = 0;
</ins><span class="cx"> 
</span><del>-  if (! (YYPACT_NINF &lt; yyn &amp;&amp; yyn &lt;= YYLAST))
-    return 0;
-  else
</del><ins>+  /* There are many possibilities here to consider:
+     - If this state is a consistent state with a default action, then
+       the only way this function was invoked is if the default action
+       is an error action.  In that case, don't check for expected
+       tokens because there are none.
+     - The only way there can be no lookahead present (in yychar) is if
+       this state is a consistent state with a default action.  Thus,
+       detecting the absence of a lookahead is sufficient to determine
+       that there is no unexpected or expected token to report.  In that
+       case, just report a simple &quot;syntax error&quot;.
+     - Don't assume there isn't a lookahead just because this state is a
+       consistent state with a default action.  There might have been a
+       previous inconsistent state, consistent state with a non-default
+       action, or user semantic action that manipulated yychar.
+     - Of course, the expected token list depends on states to have
+       correct lookahead information, and it depends on the parser not
+       to perform extra reductions after fetching a lookahead from the
+       scanner and before detecting a syntax error.  Thus, state merging
+       (from LALR or IELR) and default reductions corrupt the expected
+       token list.  However, the list is correct for canonical LR with
+       one exception: it will still contain any token that will not be
+       accepted due to an error action in a later state.
+  */
+  if (yytoken != YYEMPTY)
</ins><span class="cx">     {
</span><del>-      int yytype = YYTRANSLATE (yychar);
-      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
-      YYSIZE_T yysize = yysize0;
-      YYSIZE_T yysize1;
-      int yysize_overflow = 0;
-      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
-      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-      int yyx;
</del><ins>+      int yyn = yypact[*yyssp];
+      yyarg[yycount++] = yytname[yytoken];
+      if (!yypact_value_is_default (yyn))
+        {
+          /* Start YYX at -YYN if negative to avoid negative indexes in
+             YYCHECK.  In other words, skip the first -YYN actions for
+             this state because they are default actions.  */
+          int yyxbegin = yyn &lt; 0 ? -yyn : 0;
+          /* Stay within bounds of both yycheck and yytname.  */
+          int yychecklim = YYLAST - yyn + 1;
+          int yyxend = yychecklim &lt; YYNTOKENS ? yychecklim : YYNTOKENS;
+          int yyx;
</ins><span class="cx"> 
</span><del>-# if 0
-      /* This is so xgettext sees the translatable formats that are
-     constructed on the fly.  */
-      YY_(&quot;syntax error, unexpected %s&quot;);
-      YY_(&quot;syntax error, unexpected %s, expecting %s&quot;);
-      YY_(&quot;syntax error, unexpected %s, expecting %s or %s&quot;);
-      YY_(&quot;syntax error, unexpected %s, expecting %s or %s or %s&quot;);
-      YY_(&quot;syntax error, unexpected %s, expecting %s or %s or %s or %s&quot;);
-# endif
-      char *yyfmt;
-      char const *yyf;
-      static char const yyunexpected[] = &quot;syntax error, unexpected %s&quot;;
-      static char const yyexpecting[] = &quot;, expecting %s&quot;;
-      static char const yyor[] = &quot; or %s&quot;;
-      char yyformat[sizeof yyunexpected
-            + sizeof yyexpecting - 1
-            + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
-               * (sizeof yyor - 1))];
-      char const *yyprefix = yyexpecting;
</del><ins>+          for (yyx = yyxbegin; yyx &lt; yyxend; ++yyx)
+            if (yycheck[yyx + yyn] == yyx &amp;&amp; yyx != YYTERROR
+                &amp;&amp; !yytable_value_is_error (yytable[yyx + yyn]))
+              {
+                if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+                  {
+                    yycount = 1;
+                    yysize = yysize0;
+                    break;
+                  }
+                yyarg[yycount++] = yytname[yyx];
+                {
+                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
+                  if (! (yysize &lt;= yysize1
+                         &amp;&amp; yysize1 &lt;= YYSTACK_ALLOC_MAXIMUM))
+                    return 2;
+                  yysize = yysize1;
+                }
+              }
+        }
+    }
</ins><span class="cx"> 
</span><del>-      /* Start YYX at -YYN if negative to avoid negative indexes in
-     YYCHECK.  */
-      int yyxbegin = yyn &lt; 0 ? -yyn : 0;
</del><ins>+  switch (yycount)
+    {
+# define YYCASE_(N, S)                      \
+      case N:                               \
+        yyformat = S;                       \
+      break
+      YYCASE_(0, YY_(&quot;syntax error&quot;));
+      YYCASE_(1, YY_(&quot;syntax error, unexpected %s&quot;));
+      YYCASE_(2, YY_(&quot;syntax error, unexpected %s, expecting %s&quot;));
+      YYCASE_(3, YY_(&quot;syntax error, unexpected %s, expecting %s or %s&quot;));
+      YYCASE_(4, YY_(&quot;syntax error, unexpected %s, expecting %s or %s or %s&quot;));
+      YYCASE_(5, YY_(&quot;syntax error, unexpected %s, expecting %s or %s or %s or %s&quot;));
+# undef YYCASE_
+    }
</ins><span class="cx"> 
</span><del>-      /* Stay within bounds of both yycheck and yytname.  */
-      int yychecklim = YYLAST - yyn + 1;
-      int yyxend = yychecklim &lt; YYNTOKENS ? yychecklim : YYNTOKENS;
-      int yycount = 1;
</del><ins>+  {
+    YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
+    if (! (yysize &lt;= yysize1 &amp;&amp; yysize1 &lt;= YYSTACK_ALLOC_MAXIMUM))
+      return 2;
+    yysize = yysize1;
+  }
</ins><span class="cx"> 
</span><del>-      yyarg[0] = yytname[yytype];
-      yyfmt = yystpcpy (yyformat, yyunexpected);
-
-      for (yyx = yyxbegin; yyx &lt; yyxend; ++yyx)
-    if (yycheck[yyx + yyn] == yyx &amp;&amp; yyx != YYTERROR)
-      {
-        if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-          {
-        yycount = 1;
-        yysize = yysize0;
-        yyformat[sizeof yyunexpected - 1] = '\0';
-        break;
-          }
-        yyarg[yycount++] = yytname[yyx];
-        yysize1 = yysize + yytnamerr (0, yytname[yyx]);
-        yysize_overflow |= (yysize1 &lt; yysize);
-        yysize = yysize1;
-        yyfmt = yystpcpy (yyfmt, yyprefix);
-        yyprefix = yyor;
-      }
-
-      yyf = YY_(yyformat);
-      yysize1 = yysize + yystrlen (yyf);
-      yysize_overflow |= (yysize1 &lt; yysize);
-      yysize = yysize1;
-
-      if (yysize_overflow)
-    return YYSIZE_MAXIMUM;
-
-      if (yyresult)
</del><ins>+  if (*yymsg_alloc &lt; yysize)
</ins><span class="cx">     {
</span><del>-      /* Avoid sprintf, as that infringes on the user's name space.
-         Don't have undefined behavior even if the translation
-         produced a string with the wrong number of &quot;%s&quot;s.  */
-      char *yyp = yyresult;
-      int yyi = 0;
-      while ((*yyp = *yyf) != '\0')
</del><ins>+      *yymsg_alloc = 2 * yysize;
+      if (! (yysize &lt;= *yymsg_alloc
+             &amp;&amp; *yymsg_alloc &lt;= YYSTACK_ALLOC_MAXIMUM))
+        *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
+      return 1;
+    }
+
+  /* Avoid sprintf, as that infringes on the user's name space.
+     Don't have undefined behavior even if the translation
+     produced a string with the wrong number of &quot;%s&quot;s.  */
+  {
+    char *yyp = *yymsg;
+    int yyi = 0;
+    while ((*yyp = *yyformat) != '\0')
+      if (*yyp == '%' &amp;&amp; yyformat[1] == 's' &amp;&amp; yyi &lt; yycount)
</ins><span class="cx">         {
</span><del>-          if (*yyp == '%' &amp;&amp; yyf[1] == 's' &amp;&amp; yyi &lt; yycount)
-        {
</del><span class="cx">           yyp += yytnamerr (yyp, yyarg[yyi++]);
</span><del>-          yyf += 2;
</del><ins>+          yyformat += 2;
</ins><span class="cx">         }
</span><del>-          else
</del><ins>+      else
</ins><span class="cx">         {
</span><span class="cx">           yyp++;
</span><del>-          yyf++;
</del><ins>+          yyformat++;
</ins><span class="cx">         }
</span><del>-        }
-    }
-      return yysize;
-    }
</del><ins>+  }
+  return 0;
</ins><span class="cx"> }
</span><span class="cx"> #endif /* YYERROR_VERBOSE */
</span><del>-
</del><span class="cx"> 
</span><span class="cx"> /*-----------------------------------------------.
</span><span class="cx"> | Release the memory associated to this symbol.  |
</span><span class="cx"> `-----------------------------------------------*/
</span><span class="cx"> 
</span><del>-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
</del><span class="cx"> static void
</span><span class="cx"> yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, Context *context)
</span><del>-#else
-static void
-yydestruct (yymsg, yytype, yyvaluep, context)
-    const char *yymsg;
-    int yytype;
-    YYSTYPE *yyvaluep;
-    Context *context;
-#endif
</del><span class="cx"> {
</span><span class="cx">   YYUSE (yyvaluep);
</span><span class="cx">   YYUSE (context);
</span><del>-
</del><span class="cx">   if (!yymsg)
</span><span class="cx">     yymsg = &quot;Deleting&quot;;
</span><span class="cx">   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
</span><span class="cx"> 
</span><del>-  switch (yytype)
-    {
-
-      default:
-    break;
-    }
</del><ins>+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+  YYUSE (yytype);
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
</ins><span class="cx"> }
</span><del>-
</del><span class="cx"> 
</span><del>-/* Prevent warnings from -Wmissing-prototypes.  */
</del><span class="cx"> 
</span><del>-#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void *YYPARSE_PARAM);
-#else
-int yyparse ();
-#endif
-#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
-int yyparse (Context *context);
-#else
-int yyparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
</del><span class="cx"> 
</span><span class="cx"> 
</span><del>-
-
-
-
</del><span class="cx"> /*----------.
</span><span class="cx"> | yyparse.  |
</span><span class="cx"> `----------*/
</span><span class="cx"> 
</span><del>-#ifdef YYPARSE_PARAM
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
</del><span class="cx"> int
</span><del>-yyparse (void *YYPARSE_PARAM)
-#else
-int
-yyparse (YYPARSE_PARAM)
-    void *YYPARSE_PARAM;
-#endif
-#else /* ! YYPARSE_PARAM */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-int
</del><span class="cx"> yyparse (Context *context)
</span><del>-#else
-int
-yyparse (context)
-    Context *context;
-#endif
-#endif
</del><span class="cx"> {
</span><del>-  /* The look-ahead symbol.  */
</del><ins>+/* The lookahead symbol.  */
</ins><span class="cx"> int yychar;
</span><span class="cx"> 
</span><del>-/* The semantic value of the look-ahead symbol.  */
-YYSTYPE yylval;
</del><span class="cx"> 
</span><del>-/* Number of syntax errors so far.  */
-int yynerrs;
</del><ins>+/* The semantic value of the lookahead symbol.  */
+/* Default value used for initialization, for pacifying older GCCs
+   or non-GCC compilers.  */
+YY_INITIAL_VALUE (static YYSTYPE yyval_default;)
+YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
</ins><span class="cx"> 
</span><del>-  int yystate;
-  int yyn;
-  int yyresult;
-  /* Number of tokens to shift before error messages enabled.  */
-  int yyerrstatus;
-  /* Look-ahead token as an internal (translated) token number.  */
-  int yytoken = 0;
-#if YYERROR_VERBOSE
-  /* Buffer for error messages, and its allocated size.  */
-  char yymsgbuf[128];
-  char *yymsg = yymsgbuf;
-  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-#endif
</del><ins>+    /* Number of syntax errors so far.  */
+    int yynerrs;
</ins><span class="cx"> 
</span><del>-  /* Three stacks and their tools:
-     `yyss': related to states,
-     `yyvs': related to semantic values,
-     `yyls': related to locations.
</del><ins>+    int yystate;
+    /* Number of tokens to shift before error messages enabled.  */
+    int yyerrstatus;
</ins><span class="cx"> 
</span><del>-     Refer to the stacks thru separate pointers, to allow yyoverflow
-     to reallocate them elsewhere.  */
</del><ins>+    /* The stacks and their tools:
+       'yyss': related to states.
+       'yyvs': related to semantic values.
</ins><span class="cx"> 
</span><del>-  /* The state stack.  */
-  yytype_int16 yyssa[YYINITDEPTH];
-  yytype_int16 *yyss = yyssa;
-  yytype_int16 *yyssp;
</del><ins>+       Refer to the stacks through separate pointers, to allow yyoverflow
+       to reallocate them elsewhere.  */
</ins><span class="cx"> 
</span><del>-  /* The semantic value stack.  */
-  YYSTYPE yyvsa[YYINITDEPTH];
-  YYSTYPE *yyvs = yyvsa;
-  YYSTYPE *yyvsp;
</del><ins>+    /* The state stack.  */
+    yytype_int16 yyssa[YYINITDEPTH];
+    yytype_int16 *yyss;
+    yytype_int16 *yyssp;
</ins><span class="cx"> 
</span><ins>+    /* The semantic value stack.  */
+    YYSTYPE yyvsa[YYINITDEPTH];
+    YYSTYPE *yyvs;
+    YYSTYPE *yyvsp;
</ins><span class="cx"> 
</span><ins>+    YYSIZE_T yystacksize;
</ins><span class="cx"> 
</span><del>-#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
-
-  YYSIZE_T yystacksize = YYINITDEPTH;
-
</del><ins>+  int yyn;
+  int yyresult;
+  /* Lookahead token as an internal (translated) token number.  */
+  int yytoken = 0;
</ins><span class="cx">   /* The variables used to return semantic value and location from the
</span><span class="cx">      action routines.  */
</span><span class="cx">   YYSTYPE yyval;
</span><span class="cx"> 
</span><ins>+#if YYERROR_VERBOSE
+  /* Buffer for error messages, and its allocated size.  */
+  char yymsgbuf[128];
+  char *yymsg = yymsgbuf;
+  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
+#endif
</ins><span class="cx"> 
</span><ins>+#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
+
</ins><span class="cx">   /* The number of symbols on the RHS of the reduced rule.
</span><span class="cx">      Keep to zero when no symbol should be popped.  */
</span><span class="cx">   int yylen = 0;
</span><span class="cx"> 
</span><ins>+  yyssp = yyss = yyssa;
+  yyvsp = yyvs = yyvsa;
+  yystacksize = YYINITDEPTH;
+
</ins><span class="cx">   YYDPRINTF ((stderr, &quot;Starting parse\n&quot;));
</span><span class="cx"> 
</span><span class="cx">   yystate = 0;
</span><span class="cx">   yyerrstatus = 0;
</span><span class="cx">   yynerrs = 0;
</span><del>-  yychar = YYEMPTY;        /* Cause a token to be read.  */
-
-  /* Initialize stack pointers.
-     Waste one element of value and location stack
-     so that they stay on the same level as the state stack.
-     The wasted elements are never initialized.  */
-
-  yyssp = yyss;
-  yyvsp = yyvs;
-
</del><ins>+  yychar = YYEMPTY; /* Cause a token to be read.  */
</ins><span class="cx">   goto yysetstate;
</span><span class="cx"> 
</span><span class="cx"> /*------------------------------------------------------------.
</span><span class="lines">@@ -1283,25 +1162,23 @@
</span><span class="cx"> 
</span><span class="cx"> #ifdef yyoverflow
</span><span class="cx">       {
</span><del>-    /* Give user a chance to reallocate the stack.  Use copies of
-       these so that the &amp;'s don't force the real ones into
-       memory.  */
-    YYSTYPE *yyvs1 = yyvs;
-    yytype_int16 *yyss1 = yyss;
</del><ins>+        /* Give user a chance to reallocate the stack.  Use copies of
+           these so that the &amp;'s don't force the real ones into
+           memory.  */
+        YYSTYPE *yyvs1 = yyvs;
+        yytype_int16 *yyss1 = yyss;
</ins><span class="cx"> 
</span><ins>+        /* Each stack pointer address is followed by the size of the
+           data in use in that stack, in bytes.  This used to be a
+           conditional around just the two extra args, but that might
+           be undefined if yyoverflow is a macro.  */
+        yyoverflow (YY_(&quot;memory exhausted&quot;),
+                    &amp;yyss1, yysize * sizeof (*yyssp),
+                    &amp;yyvs1, yysize * sizeof (*yyvsp),
+                    &amp;yystacksize);
</ins><span class="cx"> 
</span><del>-    /* Each stack pointer address is followed by the size of the
-       data in use in that stack, in bytes.  This used to be a
-       conditional around just the two extra args, but that might
-       be undefined if yyoverflow is a macro.  */
-    yyoverflow (YY_(&quot;memory exhausted&quot;),
-            &amp;yyss1, yysize * sizeof (*yyssp),
-            &amp;yyvs1, yysize * sizeof (*yyvsp),
-
-            &amp;yystacksize);
-
-    yyss = yyss1;
-    yyvs = yyvs1;
</del><ins>+        yyss = yyss1;
+        yyvs = yyvs1;
</ins><span class="cx">       }
</span><span class="cx"> #else /* no yyoverflow */
</span><span class="cx"> # ifndef YYSTACK_RELOCATE
</span><span class="lines">@@ -1309,23 +1186,22 @@
</span><span class="cx"> # else
</span><span class="cx">       /* Extend the stack our own way.  */
</span><span class="cx">       if (YYMAXDEPTH &lt;= yystacksize)
</span><del>-    goto yyexhaustedlab;
</del><ins>+        goto yyexhaustedlab;
</ins><span class="cx">       yystacksize *= 2;
</span><span class="cx">       if (YYMAXDEPTH &lt; yystacksize)
</span><del>-    yystacksize = YYMAXDEPTH;
</del><ins>+        yystacksize = YYMAXDEPTH;
</ins><span class="cx"> 
</span><span class="cx">       {
</span><del>-    yytype_int16 *yyss1 = yyss;
-    union yyalloc *yyptr =
-      (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
-    if (! yyptr)
-      goto yyexhaustedlab;
-    YYSTACK_RELOCATE (yyss);
-    YYSTACK_RELOCATE (yyvs);
-
</del><ins>+        yytype_int16 *yyss1 = yyss;
+        union yyalloc *yyptr =
+          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+        if (! yyptr)
+          goto yyexhaustedlab;
+        YYSTACK_RELOCATE (yyss_alloc, yyss);
+        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
</ins><span class="cx"> #  undef YYSTACK_RELOCATE
</span><del>-    if (yyss1 != yyssa)
-      YYSTACK_FREE (yyss1);
</del><ins>+        if (yyss1 != yyssa)
+          YYSTACK_FREE (yyss1);
</ins><span class="cx">       }
</span><span class="cx"> # endif
</span><span class="cx"> #endif /* no yyoverflow */
</span><span class="lines">@@ -1333,16 +1209,18 @@
</span><span class="cx">       yyssp = yyss + yysize - 1;
</span><span class="cx">       yyvsp = yyvs + yysize - 1;
</span><span class="cx"> 
</span><del>-
</del><span class="cx">       YYDPRINTF ((stderr, &quot;Stack size increased to %lu\n&quot;,
</span><del>-          (unsigned long int) yystacksize));
</del><ins>+                  (unsigned long int) yystacksize));
</ins><span class="cx"> 
</span><span class="cx">       if (yyss + yystacksize - 1 &lt;= yyssp)
</span><del>-    YYABORT;
</del><ins>+        YYABORT;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">   YYDPRINTF ((stderr, &quot;Entering state %d\n&quot;, yystate));
</span><span class="cx"> 
</span><ins>+  if (yystate == YYFINAL)
+    YYACCEPT;
+
</ins><span class="cx">   goto yybackup;
</span><span class="cx"> 
</span><span class="cx"> /*-----------.
</span><span class="lines">@@ -1351,20 +1229,20 @@
</span><span class="cx"> yybackup:
</span><span class="cx"> 
</span><span class="cx">   /* Do appropriate processing given the current state.  Read a
</span><del>-     look-ahead token if we need one and don't already have one.  */
</del><ins>+     lookahead token if we need one and don't already have one.  */
</ins><span class="cx"> 
</span><del>-  /* First try to decide what to do without reference to look-ahead token.  */
</del><ins>+  /* First try to decide what to do without reference to lookahead token.  */
</ins><span class="cx">   yyn = yypact[yystate];
</span><del>-  if (yyn == YYPACT_NINF)
</del><ins>+  if (yypact_value_is_default (yyn))
</ins><span class="cx">     goto yydefault;
</span><span class="cx"> 
</span><del>-  /* Not known =&gt; get a look-ahead token if don't already have one.  */
</del><ins>+  /* Not known =&gt; get a lookahead token if don't already have one.  */
</ins><span class="cx"> 
</span><del>-  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
</del><ins>+  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
</ins><span class="cx">   if (yychar == YYEMPTY)
</span><span class="cx">     {
</span><span class="cx">       YYDPRINTF ((stderr, &quot;Reading a token: &quot;));
</span><del>-      yychar = YYLEX;
</del><ins>+      yychar = yylex (&amp;yylval, context);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">   if (yychar &lt;= YYEOF)
</span><span class="lines">@@ -1386,29 +1264,27 @@
</span><span class="cx">   yyn = yytable[yyn];
</span><span class="cx">   if (yyn &lt;= 0)
</span><span class="cx">     {
</span><del>-      if (yyn == 0 || yyn == YYTABLE_NINF)
-    goto yyerrlab;
</del><ins>+      if (yytable_value_is_error (yyn))
+        goto yyerrlab;
</ins><span class="cx">       yyn = -yyn;
</span><span class="cx">       goto yyreduce;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-  if (yyn == YYFINAL)
-    YYACCEPT;
-
</del><span class="cx">   /* Count tokens shifted since error; after three, turn off error
</span><span class="cx">      status.  */
</span><span class="cx">   if (yyerrstatus)
</span><span class="cx">     yyerrstatus--;
</span><span class="cx"> 
</span><del>-  /* Shift the look-ahead token.  */
</del><ins>+  /* Shift the lookahead token.  */
</ins><span class="cx">   YY_SYMBOL_PRINT (&quot;Shifting&quot;, yytoken, &amp;yylval, &amp;yylloc);
</span><span class="cx"> 
</span><del>-  /* Discard the shifted token unless it is eof.  */
-  if (yychar != YYEOF)
-    yychar = YYEMPTY;
</del><ins>+  /* Discard the shifted token.  */
+  yychar = YYEMPTY;
</ins><span class="cx"> 
</span><span class="cx">   yystate = yyn;
</span><ins>+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
</ins><span class="cx">   *++yyvsp = yylval;
</span><ins>+  YY_IGNORE_MAYBE_UNINITIALIZED_END
</ins><span class="cx"> 
</span><span class="cx">   goto yynewstate;
</span><span class="cx"> 
</span><span class="lines">@@ -1431,7 +1307,7 @@
</span><span class="cx">   yylen = yyr2[yyn];
</span><span class="cx"> 
</span><span class="cx">   /* If YYLEN is nonzero, implement the default value of the action:
</span><del>-     `$$ = $1'.
</del><ins>+     '$$ = $1'.
</ins><span class="cx"> 
</span><span class="cx">      Otherwise, the following line sets YYVAL to garbage.
</span><span class="cx">      This behavior is undocumented and Bison
</span><span class="lines">@@ -1447,197 +1323,231 @@
</span><span class="cx">         case 2:
</span><span class="cx"> 
</span><span class="cx">     {
</span><del>-        *(context-&gt;result) = static_cast&lt;int&gt;((yyvsp[(1) - (1)]));
</del><ins>+        *(context-&gt;result) = static_cast&lt;int&gt;((yyvsp[0]));
</ins><span class="cx">         YYACCEPT;
</span><del>-    ;}
</del><ins>+    }
+
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 4:
</span><span class="cx"> 
</span><span class="cx">     {
</span><del>-        (yyval) = (yyvsp[(1) - (3)]) || (yyvsp[(3) - (3)]);
-    ;}
</del><ins>+        (yyval) = (yyvsp[-2]) || (yyvsp[0]);
+    }
+
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 5:
</span><span class="cx"> 
</span><span class="cx">     {
</span><del>-        (yyval) = (yyvsp[(1) - (3)]) &amp;&amp; (yyvsp[(3) - (3)]);
-    ;}
</del><ins>+        (yyval) = (yyvsp[-2]) &amp;&amp; (yyvsp[0]);
+    }
+
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 6:
</span><span class="cx"> 
</span><span class="cx">     {
</span><del>-        (yyval) = (yyvsp[(1) - (3)]) | (yyvsp[(3) - (3)]);
-    ;}
</del><ins>+        (yyval) = (yyvsp[-2]) | (yyvsp[0]);
+    }
+
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 7:
</span><span class="cx"> 
</span><span class="cx">     {
</span><del>-        (yyval) = (yyvsp[(1) - (3)]) ^ (yyvsp[(3) - (3)]);
-    ;}
</del><ins>+        (yyval) = (yyvsp[-2]) ^ (yyvsp[0]);
+    }
+
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 8:
</span><span class="cx"> 
</span><span class="cx">     {
</span><del>-        (yyval) = (yyvsp[(1) - (3)]) &amp; (yyvsp[(3) - (3)]);
-    ;}
</del><ins>+        (yyval) = (yyvsp[-2]) &amp; (yyvsp[0]);
+    }
+
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 9:
</span><span class="cx"> 
</span><span class="cx">     {
</span><del>-        (yyval) = (yyvsp[(1) - (3)]) != (yyvsp[(3) - (3)]);
-    ;}
</del><ins>+        (yyval) = (yyvsp[-2]) != (yyvsp[0]);
+    }
+
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 10:
</span><span class="cx"> 
</span><span class="cx">     {
</span><del>-        (yyval) = (yyvsp[(1) - (3)]) == (yyvsp[(3) - (3)]);
-    ;}
</del><ins>+        (yyval) = (yyvsp[-2]) == (yyvsp[0]);
+    }
+
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 11:
</span><span class="cx"> 
</span><span class="cx">     {
</span><del>-        (yyval) = (yyvsp[(1) - (3)]) &gt;= (yyvsp[(3) - (3)]);
-    ;}
</del><ins>+        (yyval) = (yyvsp[-2]) &gt;= (yyvsp[0]);
+    }
+
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 12:
</span><span class="cx"> 
</span><span class="cx">     {
</span><del>-        (yyval) = (yyvsp[(1) - (3)]) &lt;= (yyvsp[(3) - (3)]);
-    ;}
</del><ins>+        (yyval) = (yyvsp[-2]) &lt;= (yyvsp[0]);
+    }
+
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 13:
</span><span class="cx"> 
</span><span class="cx">     {
</span><del>-        (yyval) = (yyvsp[(1) - (3)]) &gt; (yyvsp[(3) - (3)]);
-    ;}
</del><ins>+        (yyval) = (yyvsp[-2]) &gt; (yyvsp[0]);
+    }
+
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 14:
</span><span class="cx"> 
</span><span class="cx">     {
</span><del>-        (yyval) = (yyvsp[(1) - (3)]) &lt; (yyvsp[(3) - (3)]);
-    ;}
</del><ins>+        (yyval) = (yyvsp[-2]) &lt; (yyvsp[0]);
+    }
+
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 15:
</span><span class="cx"> 
</span><span class="cx">     {
</span><del>-        (yyval) = (yyvsp[(1) - (3)]) &gt;&gt; (yyvsp[(3) - (3)]);
-    ;}
</del><ins>+        (yyval) = (yyvsp[-2]) &gt;&gt; (yyvsp[0]);
+    }
+
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 16:
</span><span class="cx"> 
</span><span class="cx">     {
</span><del>-        (yyval) = (yyvsp[(1) - (3)]) &lt;&lt; (yyvsp[(3) - (3)]);
-    ;}
</del><ins>+        (yyval) = (yyvsp[-2]) &lt;&lt; (yyvsp[0]);
+    }
+
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 17:
</span><span class="cx"> 
</span><span class="cx">     {
</span><del>-        (yyval) = (yyvsp[(1) - (3)]) - (yyvsp[(3) - (3)]);
-    ;}
</del><ins>+        (yyval) = (yyvsp[-2]) - (yyvsp[0]);
+    }
+
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 18:
</span><span class="cx"> 
</span><span class="cx">     {
</span><del>-        (yyval) = (yyvsp[(1) - (3)]) + (yyvsp[(3) - (3)]);
-    ;}
</del><ins>+        (yyval) = (yyvsp[-2]) + (yyvsp[0]);
+    }
+
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 19:
</span><span class="cx"> 
</span><span class="cx">     {
</span><del>-        if ((yyvsp[(3) - (3)]) == 0) {
</del><ins>+        if ((yyvsp[0]) == 0) {
</ins><span class="cx">             std::ostringstream stream;
</span><del>-            stream &lt;&lt; (yyvsp[(1) - (3)]) &lt;&lt; &quot; % &quot; &lt;&lt; (yyvsp[(3) - (3)]);
</del><ins>+            stream &lt;&lt; (yyvsp[-2]) &lt;&lt; &quot; % &quot; &lt;&lt; (yyvsp[0]);
</ins><span class="cx">             std::string text = stream.str();
</span><span class="cx">             context-&gt;diagnostics-&gt;report(pp::Diagnostics::DIVISION_BY_ZERO,
</span><span class="cx">                                          context-&gt;token-&gt;location,
</span><span class="cx">                                          text.c_str());
</span><span class="cx">             YYABORT;
</span><span class="cx">         } else {
</span><del>-            (yyval) = (yyvsp[(1) - (3)]) % (yyvsp[(3) - (3)]);
</del><ins>+            (yyval) = (yyvsp[-2]) % (yyvsp[0]);
</ins><span class="cx">         }
</span><del>-    ;}
</del><ins>+    }
+
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 20:
</span><span class="cx"> 
</span><span class="cx">     {
</span><del>-        if ((yyvsp[(3) - (3)]) == 0) {
</del><ins>+        if ((yyvsp[0]) == 0) {
</ins><span class="cx">             std::ostringstream stream;
</span><del>-            stream &lt;&lt; (yyvsp[(1) - (3)]) &lt;&lt; &quot; / &quot; &lt;&lt; (yyvsp[(3) - (3)]);
</del><ins>+            stream &lt;&lt; (yyvsp[-2]) &lt;&lt; &quot; / &quot; &lt;&lt; (yyvsp[0]);
</ins><span class="cx">             std::string text = stream.str();
</span><span class="cx">             context-&gt;diagnostics-&gt;report(pp::Diagnostics::DIVISION_BY_ZERO,
</span><span class="cx">                                          context-&gt;token-&gt;location,
</span><span class="cx">                                          text.c_str());
</span><span class="cx">             YYABORT;
</span><span class="cx">         } else {
</span><del>-            (yyval) = (yyvsp[(1) - (3)]) / (yyvsp[(3) - (3)]);
</del><ins>+            (yyval) = (yyvsp[-2]) / (yyvsp[0]);
</ins><span class="cx">         }
</span><del>-    ;}
</del><ins>+    }
+
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 21:
</span><span class="cx"> 
</span><span class="cx">     {
</span><del>-        (yyval) = (yyvsp[(1) - (3)]) * (yyvsp[(3) - (3)]);
-    ;}
</del><ins>+        (yyval) = (yyvsp[-2]) * (yyvsp[0]);
+    }
+
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 22:
</span><span class="cx"> 
</span><span class="cx">     {
</span><del>-        (yyval) = ! (yyvsp[(2) - (2)]);
-    ;}
</del><ins>+        (yyval) = ! (yyvsp[0]);
+    }
+
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 23:
</span><span class="cx"> 
</span><span class="cx">     {
</span><del>-        (yyval) = ~ (yyvsp[(2) - (2)]);
-    ;}
</del><ins>+        (yyval) = ~ (yyvsp[0]);
+    }
+
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 24:
</span><span class="cx"> 
</span><span class="cx">     {
</span><del>-        (yyval) = - (yyvsp[(2) - (2)]);
-    ;}
</del><ins>+        (yyval) = - (yyvsp[0]);
+    }
+
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 25:
</span><span class="cx"> 
</span><span class="cx">     {
</span><del>-        (yyval) = + (yyvsp[(2) - (2)]);
-    ;}
</del><ins>+        (yyval) = + (yyvsp[0]);
+    }
+
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 26:
</span><span class="cx"> 
</span><span class="cx">     {
</span><del>-        (yyval) = (yyvsp[(2) - (3)]);
-    ;}
</del><ins>+        (yyval) = (yyvsp[-1]);
+    }
+
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-/* Line 1267 of yacc.c.  */
</del><span class="cx"> 
</span><span class="cx">       default: break;
</span><span class="cx">     }
</span><ins>+  /* User semantic actions sometimes alter yychar, and that requires
+     that yytoken be updated with the new translation.  We take the
+     approach of translating immediately before every use of yytoken.
+     One alternative is translating here after every semantic action,
+     but that translation would be missed if the semantic action invokes
+     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
+     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
+     incorrect destructor might then be invoked immediately.  In the
+     case of YYERROR or YYBACKUP, subsequent parser actions might lead
+     to an incorrect destructor call or verbose syntax error message
+     before the lookahead is translated.  */
</ins><span class="cx">   YY_SYMBOL_PRINT (&quot;-&gt; $$ =&quot;, yyr1[yyn], &amp;yyval, &amp;yyloc);
</span><span class="cx"> 
</span><span class="cx">   YYPOPSTACK (yylen);
</span><span class="lines">@@ -1646,8 +1556,7 @@
</span><span class="cx"> 
</span><span class="cx">   *++yyvsp = yyval;
</span><span class="cx"> 
</span><del>-
-  /* Now `shift' the result of the reduction.  Determine what state
</del><ins>+  /* Now 'shift' the result of the reduction.  Determine what state
</ins><span class="cx">      that goes to, based on the state we popped back to and the rule
</span><span class="cx">      number reduced by.  */
</span><span class="cx"> 
</span><span class="lines">@@ -1662,10 +1571,14 @@
</span><span class="cx">   goto yynewstate;
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-/*------------------------------------.
-| yyerrlab -- here on detecting error |
-`------------------------------------*/
</del><ins>+/*--------------------------------------.
+| yyerrlab -- here on detecting error.  |
+`--------------------------------------*/
</ins><span class="cx"> yyerrlab:
</span><ins>+  /* Make sure we have latest lookahead translation.  See comments at
+     user semantic actions for why this is necessary.  */
+  yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
+
</ins><span class="cx">   /* If not already recovering from an error, report this error.  */
</span><span class="cx">   if (!yyerrstatus)
</span><span class="cx">     {
</span><span class="lines">@@ -1673,37 +1586,36 @@
</span><span class="cx"> #if ! YYERROR_VERBOSE
</span><span class="cx">       yyerror (context, YY_(&quot;syntax error&quot;));
</span><span class="cx"> #else
</span><ins>+# define YYSYNTAX_ERROR yysyntax_error (&amp;yymsg_alloc, &amp;yymsg, \
+                                        yyssp, yytoken)
</ins><span class="cx">       {
</span><del>-    YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
-    if (yymsg_alloc &lt; yysize &amp;&amp; yymsg_alloc &lt; YYSTACK_ALLOC_MAXIMUM)
-      {
-        YYSIZE_T yyalloc = 2 * yysize;
-        if (! (yysize &lt;= yyalloc &amp;&amp; yyalloc &lt;= YYSTACK_ALLOC_MAXIMUM))
-          yyalloc = YYSTACK_ALLOC_MAXIMUM;
-        if (yymsg != yymsgbuf)
-          YYSTACK_FREE (yymsg);
-        yymsg = (char *) YYSTACK_ALLOC (yyalloc);
-        if (yymsg)
-          yymsg_alloc = yyalloc;
-        else
</del><ins>+        char const *yymsgp = YY_(&quot;syntax error&quot;);
+        int yysyntax_error_status;
+        yysyntax_error_status = YYSYNTAX_ERROR;
+        if (yysyntax_error_status == 0)
+          yymsgp = yymsg;
+        else if (yysyntax_error_status == 1)
</ins><span class="cx">           {
</span><del>-        yymsg = yymsgbuf;
-        yymsg_alloc = sizeof yymsgbuf;
</del><ins>+            if (yymsg != yymsgbuf)
+              YYSTACK_FREE (yymsg);
+            yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
+            if (!yymsg)
+              {
+                yymsg = yymsgbuf;
+                yymsg_alloc = sizeof yymsgbuf;
+                yysyntax_error_status = 2;
+              }
+            else
+              {
+                yysyntax_error_status = YYSYNTAX_ERROR;
+                yymsgp = yymsg;
+              }
</ins><span class="cx">           }
</span><del>-      }
-
-    if (0 &lt; yysize &amp;&amp; yysize &lt;= yymsg_alloc)
-      {
-        (void) yysyntax_error (yymsg, yystate, yychar);
-        yyerror (context, yymsg);
-      }
-    else
-      {
-        yyerror (context, YY_(&quot;syntax error&quot;));
-        if (yysize != 0)
</del><ins>+        yyerror (context, yymsgp);
+        if (yysyntax_error_status == 2)
</ins><span class="cx">           goto yyexhaustedlab;
</span><span class="cx">       }
</span><del>-      }
</del><ins>+# undef YYSYNTAX_ERROR
</ins><span class="cx"> #endif
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -1711,24 +1623,24 @@
</span><span class="cx"> 
</span><span class="cx">   if (yyerrstatus == 3)
</span><span class="cx">     {
</span><del>-      /* If just tried and failed to reuse look-ahead token after an
-     error, discard it.  */
</del><ins>+      /* If just tried and failed to reuse lookahead token after an
+         error, discard it.  */
</ins><span class="cx"> 
</span><span class="cx">       if (yychar &lt;= YYEOF)
</span><del>-    {
-      /* Return failure if at end of input.  */
-      if (yychar == YYEOF)
-        YYABORT;
-    }
</del><ins>+        {
+          /* Return failure if at end of input.  */
+          if (yychar == YYEOF)
+            YYABORT;
+        }
</ins><span class="cx">       else
</span><del>-    {
-      yydestruct (&quot;Error: discarding&quot;,
-              yytoken, &amp;yylval, context);
-      yychar = YYEMPTY;
</del><ins>+        {
+          yydestruct (&quot;Error: discarding&quot;,
+                      yytoken, &amp;yylval, context);
+          yychar = YYEMPTY;
+        }
</ins><span class="cx">     }
</span><del>-    }
</del><span class="cx"> 
</span><del>-  /* Else will try to reuse look-ahead token after shifting the error
</del><ins>+  /* Else will try to reuse lookahead token after shifting the error
</ins><span class="cx">      token.  */
</span><span class="cx">   goto yyerrlab1;
</span><span class="cx"> 
</span><span class="lines">@@ -1744,7 +1656,7 @@
</span><span class="cx">   if (/*CONSTCOND*/ 0)
</span><span class="cx">      goto yyerrorlab;
</span><span class="cx"> 
</span><del>-  /* Do not reclaim the symbols of the rule which action triggered
</del><ins>+  /* Do not reclaim the symbols of the rule whose action triggered
</ins><span class="cx">      this YYERROR.  */
</span><span class="cx">   YYPOPSTACK (yylen);
</span><span class="cx">   yylen = 0;
</span><span class="lines">@@ -1757,38 +1669,37 @@
</span><span class="cx"> | yyerrlab1 -- common code for both syntax error and YYERROR.  |
</span><span class="cx"> `-------------------------------------------------------------*/
</span><span class="cx"> yyerrlab1:
</span><del>-  yyerrstatus = 3;    /* Each real token shifted decrements this.  */
</del><ins>+  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
</ins><span class="cx"> 
</span><span class="cx">   for (;;)
</span><span class="cx">     {
</span><span class="cx">       yyn = yypact[yystate];
</span><del>-      if (yyn != YYPACT_NINF)
-    {
-      yyn += YYTERROR;
-      if (0 &lt;= yyn &amp;&amp; yyn &lt;= YYLAST &amp;&amp; yycheck[yyn] == YYTERROR)
</del><ins>+      if (!yypact_value_is_default (yyn))
</ins><span class="cx">         {
</span><del>-          yyn = yytable[yyn];
-          if (0 &lt; yyn)
-        break;
</del><ins>+          yyn += YYTERROR;
+          if (0 &lt;= yyn &amp;&amp; yyn &lt;= YYLAST &amp;&amp; yycheck[yyn] == YYTERROR)
+            {
+              yyn = yytable[yyn];
+              if (0 &lt; yyn)
+                break;
+            }
</ins><span class="cx">         }
</span><del>-    }
</del><span class="cx"> 
</span><span class="cx">       /* Pop the current state because it cannot handle the error token.  */
</span><span class="cx">       if (yyssp == yyss)
</span><del>-    YYABORT;
</del><ins>+        YYABORT;
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx">       yydestruct (&quot;Error: popping&quot;,
</span><del>-          yystos[yystate], yyvsp, context);
</del><ins>+                  yystos[yystate], yyvsp, context);
</ins><span class="cx">       YYPOPSTACK (1);
</span><span class="cx">       yystate = *yyssp;
</span><span class="cx">       YY_STACK_PRINT (yyss, yyssp);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-  if (yyn == YYFINAL)
-    YYACCEPT;
-
</del><ins>+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
</ins><span class="cx">   *++yyvsp = yylval;
</span><ins>+  YY_IGNORE_MAYBE_UNINITIALIZED_END
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx">   /* Shift the error token.  */
</span><span class="lines">@@ -1812,7 +1723,7 @@
</span><span class="cx">   yyresult = 1;
</span><span class="cx">   goto yyreturn;
</span><span class="cx"> 
</span><del>-#ifndef yyoverflow
</del><ins>+#if !defined yyoverflow || YYERROR_VERBOSE
</ins><span class="cx"> /*-------------------------------------------------.
</span><span class="cx"> | yyexhaustedlab -- memory exhaustion comes here.  |
</span><span class="cx"> `-------------------------------------------------*/
</span><span class="lines">@@ -1823,17 +1734,22 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> yyreturn:
</span><del>-  if (yychar != YYEOF &amp;&amp; yychar != YYEMPTY)
-     yydestruct (&quot;Cleanup: discarding lookahead&quot;,
-         yytoken, &amp;yylval, context);
-  /* Do not reclaim the symbols of the rule which action triggered
</del><ins>+  if (yychar != YYEMPTY)
+    {
+      /* Make sure we have latest lookahead translation.  See comments at
+         user semantic actions for why this is necessary.  */
+      yytoken = YYTRANSLATE (yychar);
+      yydestruct (&quot;Cleanup: discarding lookahead&quot;,
+                  yytoken, &amp;yylval, context);
+    }
+  /* Do not reclaim the symbols of the rule whose action triggered
</ins><span class="cx">      this YYABORT or YYACCEPT.  */
</span><span class="cx">   YYPOPSTACK (yylen);
</span><span class="cx">   YY_STACK_PRINT (yyss, yyssp);
</span><span class="cx">   while (yyssp != yyss)
</span><span class="cx">     {
</span><span class="cx">       yydestruct (&quot;Cleanup: popping&quot;,
</span><del>-          yystos[*yyssp], yyvsp, context);
</del><ins>+                  yystos[*yyssp], yyvsp, context);
</ins><span class="cx">       YYPOPSTACK (1);
</span><span class="cx">     }
</span><span class="cx"> #ifndef yyoverflow
</span><span class="lines">@@ -1844,14 +1760,11 @@
</span><span class="cx">   if (yymsg != yymsgbuf)
</span><span class="cx">     YYSTACK_FREE (yymsg);
</span><span class="cx"> #endif
</span><del>-  /* Make sure YYID is used.  */
-  return YYID (yyresult);
</del><ins>+  return yyresult;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-
-
</del><span class="cx"> int yylex(YYSTYPE* lvalp, Context* context)
</span><span class="cx"> {
</span><span class="cx">     int type = 0;
</span><span class="lines">@@ -1946,4 +1859,3 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }  // namespace pp
</span><del>-
</del></span></pre></div>
<a id="branchesjsCStackSourceThirdPartyChangeLog"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/ThirdParty/ChangeLog (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/ThirdParty/ChangeLog        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/ThirdParty/ChangeLog        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,3 +1,9 @@
</span><ins>+2014-01-23  Mark Hahnenberg  &lt;mhahnenberg@apple.com&gt;
+
+        Merge branch up to ToT r160556.
+
+        * gtest/msvc/gtest-md.vcxproj:
+
</ins><span class="cx"> 2013-11-15  Roger Fong  &lt;roger_fong@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Unreviewed, gtest project file cleanup.
</span></span></pre></div>
<a id="branchesjsCStackSourceThirdPartygtestmsvcgtestmdvcxproj"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/ThirdParty/gtest/msvc/gtest-md.vcxproj (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/ThirdParty/gtest/msvc/gtest-md.vcxproj        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/ThirdParty/gtest/msvc/gtest-md.vcxproj        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -59,6 +59,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;MultiByte&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -67,6 +68,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;MultiByte&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -75,6 +77,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Production|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;MultiByte&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -83,6 +86,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;MultiByte&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -91,6 +95,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;MultiByte&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -99,6 +104,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;MultiByte&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span></span></pre></div>
<a id="branchesjsCStackSourceWTFChangeLog"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WTF/ChangeLog (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WTF/ChangeLog        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WTF/ChangeLog        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,3 +1,42 @@
</span><ins>+2014-01-23  Mark Hahnenberg  &lt;mhahnenberg@apple.com&gt;
+
+        Merge branch up to ToT r160556.
+
+        * GNUmakefile.list.am:
+        * WTF.vcxproj/WTF.vcxproj:
+        * WTF.vcxproj/WTF.vcxproj.filters:
+        * WTF.xcodeproj/project.pbxproj:
+        * wtf/AVLTree.h:
+        * wtf/Assertions.h:
+        * wtf/BitArray.h:
+        * wtf/Bitmap.h:
+        * wtf/CMakeLists.txt:
+        * wtf/Compiler.h:
+        * wtf/FixedArray.h:
+        * wtf/HashMap.h:
+        (WTF::HashMap::HashMap):
+        * wtf/MD5.cpp:
+        (WTF::toLittleEndian):
+        (WTF::MD5::addBytes):
+        (WTF::MD5::checksum):
+        * wtf/MD5.h:
+        * wtf/MathExtras.h:
+        * wtf/PlatformGTK.cmake:
+        * wtf/RetainPtr.h:
+        (WTF::RetainPtr::operator bool):
+        * wtf/SHA1.cpp:
+        (WTF::SHA1::computeHash):
+        (WTF::SHA1::hexDigest):
+        (WTF::SHA1::computeHexDigest):
+        * wtf/SHA1.h:
+        * wtf/SixCharacterHash.cpp:
+        (WTF::integerToSixCharacterHashString):
+        * wtf/SixCharacterHash.h:
+        * wtf/StdLibExtras.h:
+        * wtf/text/StringImpl.h:
+        (WTF::StringImpl::StringImpl):
+        * wtf/text/WTFString.h:
+
</ins><span class="cx"> 2014-01-22  Mark Lam  &lt;mark.lam@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Switching Windows port to using the C Loop LLINT.
</span></span></pre></div>
<a id="branchesjsCStackSourceWTFGNUmakefilelistam"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WTF/GNUmakefile.list.am (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WTF/GNUmakefile.list.am        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WTF/GNUmakefile.list.am        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -10,7 +10,6 @@
</span><span class="cx">     Source/WTF/wtf/AutodrainedPool.h \
</span><span class="cx">     Source/WTF/wtf/Bag.h \
</span><span class="cx">     Source/WTF/wtf/BagToHashMap.h \
</span><del>-    Source/WTF/wtf/BitArray.h \
</del><span class="cx">     Source/WTF/wtf/BitVector.cpp \
</span><span class="cx">     Source/WTF/wtf/BitVector.h \
</span><span class="cx">     Source/WTF/wtf/Bitmap.h \
</span><span class="lines">@@ -55,7 +54,6 @@
</span><span class="cx">     Source/WTF/wtf/FeatureDefines.h \
</span><span class="cx">     Source/WTF/wtf/FilePrintStream.cpp \
</span><span class="cx">     Source/WTF/wtf/FilePrintStream.h \
</span><del>-    Source/WTF/wtf/FixedArray.h \
</del><span class="cx">     Source/WTF/wtf/FlipBytes.h \
</span><span class="cx">     Source/WTF/wtf/Forward.h \
</span><span class="cx">     Source/WTF/wtf/FunctionDispatcher.cpp \
</span></span></pre></div>
<a id="branchesjsCStackSourceWTFWTFvcxprojWTFvcxproj"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WTF/WTF.vcxproj/WTF.vcxproj (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WTF/WTF.vcxproj/WTF.vcxproj        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WTF/WTF.vcxproj/WTF.vcxproj        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -160,7 +160,6 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\wtf\AVLTree.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\wtf\Bag.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\wtf\BagToHashMap.h&quot; /&gt;
</span><del>-    &lt;ClInclude Include=&quot;..\wtf\BitArray.h&quot; /&gt;
</del><span class="cx">     &lt;ClInclude Include=&quot;..\wtf\Bitmap.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\wtf\BitVector.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\wtf\BlockStack.h&quot; /&gt;
</span><span class="lines">@@ -199,7 +198,6 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\wtf\FastMalloc.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\wtf\FeatureDefines.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\wtf\FilePrintStream.h&quot; /&gt;
</span><del>-    &lt;ClInclude Include=&quot;..\wtf\FixedArray.h&quot; /&gt;
</del><span class="cx">     &lt;ClInclude Include=&quot;..\wtf\FlipBytes.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\wtf\Forward.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\wtf\FunctionDispatcher.h&quot; /&gt;
</span><span class="lines">@@ -331,6 +329,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;true&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -341,6 +340,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;true&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -351,6 +351,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;true&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -361,6 +362,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;false&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -371,6 +373,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;false&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -381,6 +384,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;false&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -764,4 +768,4 @@
</span><span class="cx">   &lt;Import Project=&quot;$(VCTargetsPath)\Microsoft.Cpp.targets&quot; /&gt;
</span><span class="cx">   &lt;ImportGroup Label=&quot;ExtensionTargets&quot;&gt;
</span><span class="cx">   &lt;/ImportGroup&gt;
</span><del>-&lt;/Project&gt;
</del><ins>+&lt;/Project&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="branchesjsCStackSourceWTFWTFvcxprojWTFvcxprojfilters"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WTF/WTF.vcxproj/WTF.vcxproj.filters (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WTF/WTF.vcxproj/WTF.vcxproj.filters        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WTF/WTF.vcxproj/WTF.vcxproj.filters        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -240,6 +240,7 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\wtf\text\cf\StringImplCF.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;text&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><ins>+    &lt;ClCompile Include=&quot;..\wtf\FastBitVector.cpp&quot; /&gt;
</ins><span class="cx">   &lt;/ItemGroup&gt;
</span><span class="cx">   &lt;ItemGroup&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\wtf\dtoa\utils.h&quot;&gt;
</span><span class="lines">@@ -362,9 +363,6 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\wtf\AVLTree.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;wtf&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><del>-    &lt;ClInclude Include=&quot;..\wtf\BitArray.h&quot;&gt;
-      &lt;Filter&gt;wtf&lt;/Filter&gt;
-    &lt;/ClInclude&gt;
</del><span class="cx">     &lt;ClInclude Include=&quot;..\wtf\Bitmap.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;wtf&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><span class="lines">@@ -437,9 +435,6 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\wtf\FilePrintStream.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;wtf&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><del>-    &lt;ClInclude Include=&quot;..\wtf\FixedArray.h&quot;&gt;
-      &lt;Filter&gt;wtf&lt;/Filter&gt;
-    &lt;/ClInclude&gt;
</del><span class="cx">     &lt;ClInclude Include=&quot;..\wtf\Forward.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;wtf&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span></span></pre></div>
<a id="branchesjsCStackSourceWTFWTFxcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WTF/WTF.xcodeproj/project.pbxproj (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WTF/WTF.xcodeproj/project.pbxproj        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WTF/WTF.xcodeproj/project.pbxproj        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -65,7 +65,6 @@
</span><span class="cx">                 2CDED0F318115C85004DBA70 /* RunLoop.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2CDED0F118115C85004DBA70 /* RunLoop.cpp */; };
</span><span class="cx">                 2CDED0F418115C85004DBA70 /* RunLoop.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CDED0F218115C85004DBA70 /* RunLoop.h */; };
</span><span class="cx">                 44F66008171AFAE600E4AD19 /* EnumClass.h in Headers */ = {isa = PBXBuildFile; fileRef = 44F66007171AFAA900E4AD19 /* EnumClass.h */; };
</span><del>-                4F0321BC156AA8D1006EBAF6 /* BitArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F0321BB156AA8D1006EBAF6 /* BitArray.h */; };
</del><span class="cx">                 7E29C33E15FFD79B00516D61 /* ObjcRuntimeExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E29C33D15FFD79B00516D61 /* ObjcRuntimeExtras.h */; };
</span><span class="cx">                 8134013815B092FD001FF0B8 /* Base64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8134013615B092FD001FF0B8 /* Base64.cpp */; };
</span><span class="cx">                 8134013915B092FD001FF0B8 /* Base64.h in Headers */ = {isa = PBXBuildFile; fileRef = 8134013715B092FD001FF0B8 /* Base64.h */; };
</span><span class="lines">@@ -141,7 +140,6 @@
</span><span class="cx">                 A8A473C1151A825B004123FF /* ExportMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4729F151A825A004123FF /* ExportMacros.h */; };
</span><span class="cx">                 A8A473C3151A825B004123FF /* FastMalloc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A472A1151A825A004123FF /* FastMalloc.cpp */; };
</span><span class="cx">                 A8A473C4151A825B004123FF /* FastMalloc.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472A2151A825A004123FF /* FastMalloc.h */; };
</span><del>-                A8A473C5151A825B004123FF /* FixedArray.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472A3151A825A004123FF /* FixedArray.h */; };
</del><span class="cx">                 A8A473C8151A825B004123FF /* Forward.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472A6151A825A004123FF /* Forward.h */; };
</span><span class="cx">                 A8A473C9151A825B004123FF /* Functional.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472A7151A825A004123FF /* Functional.h */; };
</span><span class="cx">                 A8A473CA151A825B004123FF /* GetPtr.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472A8151A825A004123FF /* GetPtr.h */; };
</span><span class="lines">@@ -334,7 +332,6 @@
</span><span class="cx">                 2CDED0F218115C85004DBA70 /* RunLoop.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RunLoop.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 44DEE74A152274BB00C6EC37 /* iOS.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = iOS.xcconfig; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 44F66007171AFAA900E4AD19 /* EnumClass.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EnumClass.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                4F0321BB156AA8D1006EBAF6 /* BitArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BitArray.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 5D247B6214689B8600E78B76 /* libWTF.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libWTF.a; sourceTree = BUILT_PRODUCTS_DIR; };
</span><span class="cx">                 5D247B6E14689C4700E78B76 /* Base.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Base.xcconfig; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 5D247B7014689C4700E78B76 /* DebugRelease.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = DebugRelease.xcconfig; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -418,7 +415,6 @@
</span><span class="cx">                 A8A4729F151A825A004123FF /* ExportMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExportMacros.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A8A472A1151A825A004123FF /* FastMalloc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FastMalloc.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A8A472A2151A825A004123FF /* FastMalloc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FastMalloc.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                A8A472A3151A825A004123FF /* FixedArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FixedArray.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 A8A472A6151A825A004123FF /* Forward.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Forward.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A8A472A7151A825A004123FF /* Functional.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Functional.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A8A472A8151A825A004123FF /* GetPtr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GetPtr.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -657,7 +653,6 @@
</span><span class="cx">                                 A8A4725E151A825A004123FF /* AVLTree.h */,
</span><span class="cx">                                 0FB14E18180FA218009B6B4D /* Bag.h */,
</span><span class="cx">                                 0FB14E1A1810E1DA009B6B4D /* BagToHashMap.h */,
</span><del>-                                4F0321BB156AA8D1006EBAF6 /* BitArray.h */,
</del><span class="cx">                                 A8A4725F151A825A004123FF /* Bitmap.h */,
</span><span class="cx">                                 A8A47260151A825A004123FF /* BitVector.cpp */,
</span><span class="cx">                                 A8A47261151A825A004123FF /* BitVector.h */,
</span><span class="lines">@@ -704,7 +699,6 @@
</span><span class="cx">                                 B38FD7BC168953E80065C969 /* FeatureDefines.h */,
</span><span class="cx">                                 0F9D335B165DBA73005AD387 /* FilePrintStream.cpp */,
</span><span class="cx">                                 0F9D335C165DBA73005AD387 /* FilePrintStream.h */,
</span><del>-                                A8A472A3151A825A004123FF /* FixedArray.h */,
</del><span class="cx">                                 0F2B66A517B6B4F700A7AE3F /* FlipBytes.h */,
</span><span class="cx">                                 A8A472A6151A825A004123FF /* Forward.h */,
</span><span class="cx">                                 A8A472A7151A825A004123FF /* Functional.h */,
</span><span class="lines">@@ -967,7 +961,6 @@
</span><span class="cx">                                 A8A473A9151A825B004123FF /* bignum-dtoa.h in Headers */,
</span><span class="cx">                                 A8A473AB151A825B004123FF /* bignum.h in Headers */,
</span><span class="cx">                                 A8A47452151A825B004123FF /* BinarySemaphore.h in Headers */,
</span><del>-                                4F0321BC156AA8D1006EBAF6 /* BitArray.h in Headers */,
</del><span class="cx">                                 A8A4738A151A825B004123FF /* Bitmap.h in Headers */,
</span><span class="cx">                                 A8A4738C151A825B004123FF /* BitVector.h in Headers */,
</span><span class="cx">                                 A8A4738E151A825B004123FF /* BlockStack.h in Headers */,
</span><span class="lines">@@ -1011,7 +1004,6 @@
</span><span class="cx">                                 B38FD7BD168953E80065C969 /* FeatureDefines.h in Headers */,
</span><span class="cx">                                 0F9D3361165DBA73005AD387 /* FilePrintStream.h in Headers */,
</span><span class="cx">                                 A8A473B6151A825B004123FF /* fixed-dtoa.h in Headers */,
</span><del>-                                A8A473C5151A825B004123FF /* FixedArray.h in Headers */,
</del><span class="cx">                                 0F2B66A717B6B4FD00A7AE3F /* FlipBytes.h in Headers */,
</span><span class="cx">                                 A8A473C8151A825B004123FF /* Forward.h in Headers */,
</span><span class="cx">                                 A8A473C9151A825B004123FF /* Functional.h in Headers */,
</span></span></pre></div>
<a id="branchesjsCStackSourceWTFwtfAVLTreeh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WTF/wtf/AVLTree.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WTF/wtf/AVLTree.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WTF/wtf/AVLTree.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -32,8 +32,8 @@
</span><span class="cx"> #ifndef AVL_TREE_H_
</span><span class="cx"> #define AVL_TREE_H_
</span><span class="cx"> 
</span><ins>+#include &lt;array&gt;
</ins><span class="cx"> #include &lt;wtf/Assertions.h&gt;
</span><del>-#include &lt;wtf/FixedArray.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WTF {
</span><span class="cx"> 
</span><span class="lines">@@ -71,7 +71,7 @@
</span><span class="cx">     void reset() { for (unsigned i = 0; i &lt; maxDepth; ++i) m_data[i] = false; }
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    FixedArray&lt;bool, maxDepth&gt; m_data;
</del><ins>+    std::array&lt;bool, maxDepth&gt; m_data;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> // How to determine maxDepth:
</span></span></pre></div>
<a id="branchesjsCStackSourceWTFwtfAssertionsh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WTF/wtf/Assertions.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WTF/wtf/Assertions.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WTF/wtf/Assertions.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -223,7 +223,7 @@
</span><span class="cx"> #define ASSERT_NOT_REACHED() ((void)0)
</span><span class="cx"> #define NO_RETURN_DUE_TO_ASSERT
</span><span class="cx"> 
</span><del>-#if COMPILER(INTEL) &amp;&amp; !OS(WINDOWS) || COMPILER(RVCT)
</del><ins>+#if COMPILER(RVCT)
</ins><span class="cx"> template&lt;typename T&gt;
</span><span class="cx"> inline void assertUnused(T&amp; x) { (void)x; }
</span><span class="cx"> #define ASSERT_UNUSED(variable, assertion) (assertUnused(variable))
</span><span class="lines">@@ -238,8 +238,10 @@
</span><span class="cx">          CRASH_WITH_SECURITY_IMPLICATION()) : \
</span><span class="cx">         (void)0)
</span><span class="cx"> 
</span><ins>+#define ASSERT_WITH_SECURITY_IMPLICATION_DISABLED 0
</ins><span class="cx"> #else
</span><span class="cx"> #define ASSERT_WITH_SECURITY_IMPLICATION(assertion) ((void)0)
</span><ins>+#define ASSERT_WITH_SECURITY_IMPLICATION_DISABLED 1
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #else
</span><span class="lines">@@ -278,6 +280,7 @@
</span><span class="cx">         (WTFReportAssertionFailure(__FILE__, __LINE__, WTF_PRETTY_FUNCTION, #assertion), \
</span><span class="cx">          CRASH_WITH_SECURITY_IMPLICATION()) : \
</span><span class="cx">         (void)0)
</span><ins>+#define ASSERT_WITH_SECURITY_IMPLICATION_DISABLED 0
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> /* ASSERT_WITH_MESSAGE */
</span><span class="lines">@@ -296,7 +299,7 @@
</span><span class="cx"> /* ASSERT_WITH_MESSAGE_UNUSED */
</span><span class="cx"> 
</span><span class="cx"> #if ASSERT_MSG_DISABLED
</span><del>-#if COMPILER(INTEL) &amp;&amp; !OS(WINDOWS) || COMPILER(RVCT)
</del><ins>+#if COMPILER(RVCT)
</ins><span class="cx"> template&lt;typename T&gt;
</span><span class="cx"> inline void assertWithMessageUnused(T&amp; x) { (void)x; }
</span><span class="cx"> #define ASSERT_WITH_MESSAGE_UNUSED(variable, assertion, ...) (assertWithMessageUnused(variable))
</span></span></pre></div>
<a id="branchesjsCStackSourceWTFwtfBitArrayh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WTF/wtf/BitArray.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WTF/wtf/BitArray.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WTF/wtf/BitArray.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,62 +0,0 @@
</span><del>-/*
- * Copyright (C) 2012 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- */
-
-#ifndef BitArray_h
-#define BitArray_h
-
-#include &lt;string.h&gt;
-#include &lt;wtf/Assertions.h&gt;
-
-namespace WTF {
-
-template&lt;unsigned arraySize&gt;
-class BitArray {
-public:
-    BitArray()
-    {
-        memset(m_data, 0, sizeof(m_data));
-    }
-
-    void set(unsigned index)
-    {
-        ASSERT_WITH_SECURITY_IMPLICATION(index &lt; arraySize);
-        m_data[index / 8] |= 1 &lt;&lt; (index &amp; 7);
-    }
-
-    bool get(unsigned index) const
-    {
-        ASSERT_WITH_SECURITY_IMPLICATION(index &lt; arraySize);
-        return !!(m_data[index / 8] &amp; (1 &lt;&lt; (index &amp; 7)));
-    }
-
-private:
-    unsigned char m_data[arraySize / 8 + 1];
-};
-
-} // namespace WTF
-
-using WTF::BitArray;
-
-#endif // BitArray_h
</del></span></pre></div>
<a id="branchesjsCStackSourceWTFwtfBitmaph"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WTF/wtf/Bitmap.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WTF/wtf/Bitmap.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WTF/wtf/Bitmap.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -19,8 +19,8 @@
</span><span class="cx"> #ifndef Bitmap_h
</span><span class="cx"> #define Bitmap_h
</span><span class="cx"> 
</span><ins>+#include &lt;array&gt;
</ins><span class="cx"> #include &lt;wtf/Atomics.h&gt;
</span><del>-#include &lt;wtf/FixedArray.h&gt;
</del><span class="cx"> #include &lt;wtf/StdLibExtras.h&gt;
</span><span class="cx"> #include &lt;stdint.h&gt;
</span><span class="cx"> #include &lt;string.h&gt;
</span><span class="lines">@@ -66,7 +66,7 @@
</span><span class="cx">     // a 64 bit unsigned int would give 0xffff8000
</span><span class="cx">     static const WordType one = 1;
</span><span class="cx"> 
</span><del>-    FixedArray&lt;WordType, words&gt; bits;
</del><ins>+    std::array&lt;WordType, words&gt; bits;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> template&lt;size_t size, BitmapAtomicMode atomicMode, typename WordType&gt;
</span></span></pre></div>
<a id="branchesjsCStackSourceWTFwtfCMakeListstxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WTF/wtf/CMakeLists.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WTF/wtf/CMakeLists.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WTF/wtf/CMakeLists.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -5,7 +5,6 @@
</span><span class="cx">     Atomics.h
</span><span class="cx">     Bag.h
</span><span class="cx">     BagToHashMap.h
</span><del>-    BitArray.h
</del><span class="cx">     BitVector.h
</span><span class="cx">     Bitmap.h
</span><span class="cx">     BoundsCheckedPointer.h
</span><span class="lines">@@ -29,7 +28,6 @@
</span><span class="cx">     FastMalloc.h
</span><span class="cx">     FeatureDefines.h
</span><span class="cx">     FilePrintStream.h
</span><del>-    FixedArray.h
</del><span class="cx">     FlipBytes.h
</span><span class="cx">     Forward.h
</span><span class="cx">     FunctionDispatcher.h
</span></span></pre></div>
<a id="branchesjsCStackSourceWTFwtfCompilerh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WTF/wtf/Compiler.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WTF/wtf/Compiler.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WTF/wtf/Compiler.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -79,8 +79,10 @@
</span><span class="cx"> 
</span><span class="cx"> #if !COMPILER(CLANG)
</span><span class="cx"> #define WTF_COMPILER_SUPPORTS_CXX_OVERRIDE_CONTROL 1
</span><ins>+#if !defined(_MSC_VER) || _MSC_VER &lt; 1800
</ins><span class="cx"> #define WTF_COMPILER_QUIRK_FINAL_IS_CALLED_SEALED 1
</span><span class="cx"> #endif
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx"> /* Check for VS2010 or newer */
</span><span class="cx"> #if _MSC_VER &gt;= 1600
</span><span class="lines">@@ -89,6 +91,18 @@
</span><span class="cx"> #define WTF_COMPILER_SUPPORTS_CXX_AUTO_TYPE 1
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if _MSC_VER &gt;= 1700
+#define WTF_COMPILER_SUPPORTS_CXX_STRONG_ENUMS 1
+#define WTF_COMPILER_SUPPORTS_CXX_OVERRIDE_CONTROL 1
+#endif
+
+#if _MSC_VER &gt;= 1800
+#define WTF_COMPILER_SUPPORTS_CXX_DELETED_FUNCTIONS 1
+#define WTF_COMPILER_SUPPORTS_CXX_EXPLICIT_CONVERSIONS 1
+#define WTF_COMPILER_SUPPORTS_CXX_GENERALIZED_INITIALIZERS 1
+#define WTF_COMPILER_SUPPORTS_CXX_VARIADIC_TEMPLATES 1
+#endif
+
</ins><span class="cx"> #endif /* defined(_MSC_VER) */
</span><span class="cx"> 
</span><span class="cx"> /* COMPILER(RVCT) - ARM RealView Compilation Tools */
</span><span class="lines">@@ -163,11 +177,6 @@
</span><span class="cx">     #endif /* __MINGW64_VERSION_MAJOR */
</span><span class="cx"> #endif /* __MINGW32__ */
</span><span class="cx"> 
</span><del>-/* COMPILER(INTEL) - Intel C++ Compiler */
-#if defined(__INTEL_COMPILER)
-#define WTF_COMPILER_INTEL 1
-#endif
-
</del><span class="cx"> /* COMPILER(SUNCC) */
</span><span class="cx"> #if defined(__SUNPRO_CC) || defined(__SUNPRO_C)
</span><span class="cx"> #define WTF_COMPILER_SUNCC 1
</span><span class="lines">@@ -330,7 +339,7 @@
</span><span class="cx"> 
</span><span class="cx"> /* UNUSED_PARAM */
</span><span class="cx"> 
</span><del>-#if COMPILER(INTEL) &amp;&amp; !(defined(WIN32) || defined(_WIN32)) || COMPILER(RVCT)
</del><ins>+#if COMPILER(RVCT)
</ins><span class="cx"> template&lt;typename T&gt;
</span><span class="cx"> inline void unusedParam(T&amp; x) { (void)x; }
</span><span class="cx"> #define UNUSED_PARAM(variable) unusedParam(variable)
</span></span></pre></div>
<a id="branchesjsCStackSourceWTFwtfFixedArrayh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WTF/wtf/FixedArray.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WTF/wtf/FixedArray.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WTF/wtf/FixedArray.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,59 +0,0 @@
</span><del>-/*
- * Copyright (C) 2010 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef FixedArray_h
-#define FixedArray_h
-
-#include &lt;wtf/Assertions.h&gt;
-
-namespace WTF {
-
-template &lt;typename T, size_t Size&gt; class FixedArray {
-public:
-    T&amp; operator[](size_t i)
-    {
-        ASSERT_WITH_SECURITY_IMPLICATION(i &lt; Size);
-        return m_data[i];
-    }
-
-    const T&amp; operator[](size_t i) const
-    {
-        ASSERT_WITH_SECURITY_IMPLICATION(i &lt; Size);
-        return m_data[i];
-    }
-
-    T* data() { return m_data; }
-    const T* data() const { return m_data; }
-    size_t size() const { return Size; }
-
-private:
-    T m_data[Size];
-};
-
-} // namespace WTF
-
-using WTF::FixedArray;
-
-#endif // FixedArray_h
</del></span></pre></div>
<a id="branchesjsCStackSourceWTFwtfHashMaph"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WTF/wtf/HashMap.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WTF/wtf/HashMap.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WTF/wtf/HashMap.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -67,6 +67,18 @@
</span><span class="cx">     typedef typename HashTableType::AddResult AddResult;
</span><span class="cx"> 
</span><span class="cx"> public:
</span><ins>+    HashMap()
+    {
+    }
+
+#if COMPILER_SUPPORTS(CXX_GENERALIZED_INITIALIZERS)
+    HashMap(std::initializer_list&lt;KeyValuePairType&gt; initializerList)
+    {
+        for (const auto&amp; keyValuePair : initializerList)
+            add(keyValuePair.key, keyValuePair.value);
+    }
+#endif
+
</ins><span class="cx">     void swap(HashMap&amp;);
</span><span class="cx"> 
</span><span class="cx">     int size() const;
</span></span></pre></div>
<a id="branchesjsCStackSourceWTFwtfMD5cpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WTF/wtf/MD5.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WTF/wtf/MD5.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WTF/wtf/MD5.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -60,14 +60,14 @@
</span><span class="cx"> 
</span><span class="cx"> // Note: this code is harmless on little-endian machines.
</span><span class="cx"> 
</span><del>-static void reverseBytes(uint8_t* buf, unsigned longs)
</del><ins>+static void toLittleEndian(uint8_t* buf, unsigned longs)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(longs &gt; 0);
</span><span class="cx">     do {
</span><span class="cx">         uint32_t t = static_cast&lt;uint32_t&gt;(buf[3] &lt;&lt; 8 | buf[2]) &lt;&lt; 16 | buf[1] &lt;&lt; 8 | buf[0];
</span><span class="cx">         ASSERT_WITH_MESSAGE(!(reinterpret_cast&lt;uintptr_t&gt;(buf) % sizeof(t)), &quot;alignment error of buf&quot;);
</span><del>-        *reinterpret_cast_ptr&lt;uint32_t *&gt;(buf) = t;
-        buf += 4;
</del><ins>+        memcpy(buf, &amp;t, sizeof(t));
+        buf += sizeof(t);
</ins><span class="cx">     } while (--longs);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -199,7 +199,7 @@
</span><span class="cx">             return;
</span><span class="cx">         }
</span><span class="cx">         memcpy(p, buf, t);
</span><del>-        reverseBytes(m_in, 16);
</del><ins>+        toLittleEndian(m_in, 16);
</ins><span class="cx">         MD5Transform(m_buf, reinterpret_cast_ptr&lt;uint32_t*&gt;(m_in)); // m_in is 4-byte aligned.
</span><span class="cx">         buf += t;
</span><span class="cx">         length -= t;
</span><span class="lines">@@ -209,7 +209,7 @@
</span><span class="cx"> 
</span><span class="cx">     while (length &gt;= 64) {
</span><span class="cx">         memcpy(m_in, buf, 64);
</span><del>-        reverseBytes(m_in, 16);
</del><ins>+        toLittleEndian(m_in, 16);
</ins><span class="cx">         MD5Transform(m_buf, reinterpret_cast_ptr&lt;uint32_t*&gt;(m_in)); // m_in is 4-byte aligned.
</span><span class="cx">         buf += 64;
</span><span class="cx">         length -= 64;
</span><span class="lines">@@ -219,7 +219,7 @@
</span><span class="cx">     memcpy(m_in, buf, length);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void MD5::checksum(Vector&lt;uint8_t, 16&gt;&amp; digest)
</del><ins>+void MD5::checksum(Digest&amp; digest)
</ins><span class="cx"> {
</span><span class="cx">     // Compute number of bytes mod 64
</span><span class="cx">     unsigned count = (m_bits[0] &gt;&gt; 3) &amp; 0x3F;
</span><span class="lines">@@ -236,7 +236,7 @@
</span><span class="cx">     if (count &lt; 8) {
</span><span class="cx">         // Two lots of padding:  Pad the first block to 64 bytes
</span><span class="cx">         memset(p, 0, count);
</span><del>-        reverseBytes(m_in, 16);
</del><ins>+        toLittleEndian(m_in, 16);
</ins><span class="cx">         MD5Transform(m_buf, reinterpret_cast_ptr&lt;uint32_t *&gt;(m_in)); // m_in is 4-byte aligned.
</span><span class="cx"> 
</span><span class="cx">         // Now fill the next block with 56 bytes
</span><span class="lines">@@ -245,20 +245,18 @@
</span><span class="cx">         // Pad block to 56 bytes
</span><span class="cx">         memset(p, 0, count - 8);
</span><span class="cx">     }
</span><del>-    reverseBytes(m_in, 14);
</del><ins>+    toLittleEndian(m_in, 14);
</ins><span class="cx"> 
</span><span class="cx">     // Append length in bits and transform
</span><del>-    // m_in is 4-byte aligned.
-    (reinterpret_cast_ptr&lt;uint32_t*&gt;(m_in))[14] = m_bits[0];
-    (reinterpret_cast_ptr&lt;uint32_t*&gt;(m_in))[15] = m_bits[1];
</del><ins>+    memcpy(m_in + 56, m_bits, sizeof(m_bits));
</ins><span class="cx"> 
</span><span class="cx">     MD5Transform(m_buf, reinterpret_cast_ptr&lt;uint32_t*&gt;(m_in));
</span><del>-    reverseBytes(reinterpret_cast&lt;uint8_t*&gt;(m_buf), 4);
</del><ins>+    toLittleEndian(reinterpret_cast&lt;uint8_t*&gt;(m_buf), 4);
</ins><span class="cx"> 
</span><span class="cx">     // Now, m_buf contains checksum result.
</span><del>-    if (!digest.isEmpty())
-        digest.clear();
-    digest.append(reinterpret_cast&lt;uint8_t*&gt;(m_buf), 16);
</del><ins>+    uint8_t* mBufUInt8 = reinterpret_cast&lt;uint8_t*&gt;(m_buf);
+    for (size_t i = 0; i &lt; hashSize; ++i)
+        digest[i] = mBufUInt8[i];
</ins><span class="cx"> 
</span><span class="cx">     // In case it's sensitive
</span><span class="cx">     memset(m_buf, 0, sizeof(m_buf));
</span></span></pre></div>
<a id="branchesjsCStackSourceWTFwtfMD5h"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WTF/wtf/MD5.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WTF/wtf/MD5.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WTF/wtf/MD5.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -31,6 +31,7 @@
</span><span class="cx"> #ifndef WTF_MD5_h
</span><span class="cx"> #define WTF_MD5_h
</span><span class="cx"> 
</span><ins>+#include &lt;array&gt;
</ins><span class="cx"> #include &lt;wtf/Vector.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace WTF {
</span><span class="lines">@@ -45,8 +46,14 @@
</span><span class="cx">     }
</span><span class="cx">     WTF_EXPORT_PRIVATE void addBytes(const uint8_t* input, size_t length);
</span><span class="cx"> 
</span><ins>+    // Size of the SHA1 hash
+    WTF_EXPORT_PRIVATE static const size_t hashSize = 16;
+
+    // type for computing MD5 hash
+    typedef std::array&lt;uint8_t, hashSize&gt; Digest;
+
</ins><span class="cx">     // checksum has a side effect of resetting the state of the object.
</span><del>-    WTF_EXPORT_PRIVATE void checksum(Vector&lt;uint8_t, 16&gt;&amp;);
</del><ins>+    WTF_EXPORT_PRIVATE void checksum(Digest&amp;);
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     uint32_t m_buf[4];
</span></span></pre></div>
<a id="branchesjsCStackSourceWTFwtfMathExtrash"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WTF/wtf/MathExtras.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WTF/wtf/MathExtras.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WTF/wtf/MathExtras.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -123,6 +123,7 @@
</span><span class="cx"> 
</span><span class="cx"> #if COMPILER(MSVC)
</span><span class="cx"> 
</span><ins>+#if _MSC_VER &lt; 1800
</ins><span class="cx"> // We must not do 'num + 0.5' or 'num - 0.5' because they can cause precision loss.
</span><span class="cx"> static double round(double num)
</span><span class="cx"> {
</span><span class="lines">@@ -138,14 +139,13 @@
</span><span class="cx">         return integer - num &gt; 0.5f ? integer - 1.0f : integer;
</span><span class="cx">     return integer - num &gt;= 0.5f ? integer - 1.0f : integer;
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> inline long long llround(double num) { return static_cast&lt;long long&gt;(round(num)); }
</span><span class="cx"> inline long long llroundf(float num) { return static_cast&lt;long long&gt;(roundf(num)); }
</span><span class="cx"> inline long lround(double num) { return static_cast&lt;long&gt;(round(num)); }
</span><span class="cx"> inline long lroundf(float num) { return static_cast&lt;long&gt;(roundf(num)); }
</span><span class="cx"> inline double trunc(double num) { return num &gt; 0 ? floor(num) : ceil(num); }
</span><span class="cx"> 
</span><del>-#if _MSC_VER &lt; 1800
-
</del><span class="cx"> inline double remainder(double numerator, double denominator)
</span><span class="cx"> {
</span><span class="cx">     double result = fmod(numerator, denominator);
</span><span class="lines">@@ -155,8 +155,6 @@
</span><span class="cx">     return result;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-#endif
-
</del><span class="cx"> inline double asinh(double d)
</span><span class="cx"> {
</span><span class="cx">     return log(d + sqrt(d * d + 1.0));
</span><span class="lines">@@ -189,6 +187,8 @@
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#endif
+
</ins><span class="cx"> #if COMPILER(GCC) &amp;&amp; OS(QNX)
</span><span class="cx"> // The stdlib on QNX doesn't contain long abs(long). See PR #104666.
</span><span class="cx"> inline long long abs(long num) { return labs(num); }
</span><span class="lines">@@ -215,6 +215,8 @@
</span><span class="cx"> inline long long abs(long long num) { return _abs64(num); }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if _MSC_VER &lt; 1800
+
</ins><span class="cx"> namespace std {
</span><span class="cx"> 
</span><span class="cx"> inline bool isinf(double num) { return !_finite(num) &amp;&amp; !_isnan(num); }
</span><span class="lines">@@ -224,6 +226,8 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace std
</span><span class="cx"> 
</span><ins>+#endif
+
</ins><span class="cx"> inline double nextafter(double x, double y) { return _nextafter(x, y); }
</span><span class="cx"> inline float nextafterf(float x, float y) { return x &gt; y ? x - FLT_EPSILON : x + FLT_EPSILON; }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWTFwtfPlatformGTKcmake"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WTF/wtf/PlatformGTK.cmake (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WTF/wtf/PlatformGTK.cmake        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WTF/wtf/PlatformGTK.cmake        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -12,6 +12,7 @@
</span><span class="cx">     ${GLIB_GOBJECT_LIBRARIES}
</span><span class="cx">     ${GLIB_LIBRARIES}
</span><span class="cx">     pthread
</span><ins>+    ${ZLIB_LIBRARIES}
</ins><span class="cx"> )
</span><span class="cx"> 
</span><span class="cx"> list(APPEND WTF_INCLUDE_DIRECTORIES
</span></span></pre></div>
<a id="branchesjsCStackSourceWTFwtfRetainPtrh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WTF/wtf/RetainPtr.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WTF/wtf/RetainPtr.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WTF/wtf/RetainPtr.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -119,6 +119,7 @@
</span><span class="cx">         PtrType operator-&gt;() const { return fromStorageType(m_ptr); }
</span><span class="cx"> #if COMPILER_SUPPORTS(CXX_EXPLICIT_CONVERSIONS)
</span><span class="cx">         explicit operator PtrType() const { return fromStorageType(m_ptr); }
</span><ins>+        explicit operator bool() const { return m_ptr; }
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">         bool operator!() const { return !m_ptr; }
</span></span></pre></div>
<a id="branchesjsCStackSourceWTFwtfSHA1cpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WTF/wtf/SHA1.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WTF/wtf/SHA1.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WTF/wtf/SHA1.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -88,12 +88,10 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void SHA1::computeHash(Vector&lt;uint8_t, 20&gt;&amp; digest)
</del><ins>+void SHA1::computeHash(Digest&amp; digest)
</ins><span class="cx"> {
</span><span class="cx">     finalize();
</span><span class="cx"> 
</span><del>-    digest.clear();
-    digest.resize(20);
</del><span class="cx">     for (size_t i = 0; i &lt; 5; ++i) {
</span><span class="cx">         // Treat hashValue as a big-endian value.
</span><span class="cx">         uint32_t hashValue = m_hash[i];
</span><span class="lines">@@ -106,12 +104,12 @@
</span><span class="cx">     reset();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-CString SHA1::hexDigest(const Vector&lt;uint8_t, 20&gt;&amp; digest)
</del><ins>+CString SHA1::hexDigest(const Digest&amp; digest)
</ins><span class="cx"> {
</span><span class="cx">     char* start = 0;
</span><span class="cx">     CString result = CString::newUninitialized(40, start);
</span><span class="cx">     char* buffer = start;
</span><del>-    for (size_t i = 0; i &lt; 20; ++i) {
</del><ins>+    for (size_t i = 0; i &lt; hashSize; ++i) {
</ins><span class="cx">         snprintf(buffer, 3, &quot;%02X&quot;, digest.at(i));
</span><span class="cx">         buffer += 2;
</span><span class="cx">     }
</span><span class="lines">@@ -120,7 +118,7 @@
</span><span class="cx"> 
</span><span class="cx"> CString SHA1::computeHexDigest()
</span><span class="cx"> {
</span><del>-    Vector&lt;uint8_t, 20&gt; digest;
</del><ins>+    Digest digest;
</ins><span class="cx">     computeHash(digest);
</span><span class="cx">     return hexDigest(digest);
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWTFwtfSHA1h"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WTF/wtf/SHA1.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WTF/wtf/SHA1.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WTF/wtf/SHA1.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -31,6 +31,7 @@
</span><span class="cx"> #ifndef WTF_SHA1_h
</span><span class="cx"> #define WTF_SHA1_h
</span><span class="cx"> 
</span><ins>+#include &lt;array&gt;
</ins><span class="cx"> #include &lt;wtf/Vector.h&gt;
</span><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -56,18 +57,21 @@
</span><span class="cx">     }
</span><span class="cx">     WTF_EXPORT_PRIVATE void addBytes(const uint8_t* input, size_t length);
</span><span class="cx"> 
</span><ins>+    // Size of the SHA1 hash
+    WTF_EXPORT_PRIVATE static const size_t hashSize = 20;
+
+    // type for computing SHA1 hash
+    typedef std::array&lt;uint8_t, hashSize&gt; Digest;
+
</ins><span class="cx">     // computeHash has a side effect of resetting the state of the object.
</span><del>-    WTF_EXPORT_PRIVATE void computeHash(Vector&lt;uint8_t, 20&gt;&amp;);
</del><ins>+    WTF_EXPORT_PRIVATE void computeHash(Digest&amp;);
</ins><span class="cx">     
</span><del>-    // Get a hex hash from the digest. Pass a limit less than 40 if you want a shorter digest.
-    WTF_EXPORT_PRIVATE static CString hexDigest(const Vector&lt;uint8_t, 20&gt;&amp;);
</del><ins>+    // Get a hex hash from the digest.
+    WTF_EXPORT_PRIVATE static CString hexDigest(const Digest&amp;);
</ins><span class="cx">     
</span><del>-    // Compute the hex digest directly. Pass a limit less than 40 if you want a shorter digest.
</del><ins>+    // Compute the hex digest directly.
</ins><span class="cx">     WTF_EXPORT_PRIVATE CString computeHexDigest();
</span><span class="cx"> 
</span><del>-    // Size of the SHA1 hash
-    WTF_EXPORT_PRIVATE static const size_t hashSize = 20;
-
</del><span class="cx"> private:
</span><span class="cx">     void finalize();
</span><span class="cx">     void processBlock();
</span></span></pre></div>
<a id="branchesjsCStackSourceWTFwtfSixCharacterHashcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WTF/wtf/SixCharacterHash.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WTF/wtf/SixCharacterHash.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WTF/wtf/SixCharacterHash.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -58,11 +58,11 @@
</span><span class="cx">     return hash;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-FixedArray&lt;char, 7&gt; integerToSixCharacterHashString(unsigned hash)
</del><ins>+std::array&lt;char, 7&gt; integerToSixCharacterHashString(unsigned hash)
</ins><span class="cx"> {
</span><del>-    ASSERT(strlen(TABLE) == 62);
-    
-    FixedArray&lt;char, 7&gt; buffer;
</del><ins>+    static_assert(WTF_ARRAY_LENGTH(TABLE) - 1 == 62, &quot;Six character hash table is not 62 characters long.&quot;);
+
+    std::array&lt;char, 7&gt; buffer;
</ins><span class="cx">     unsigned accumulator = hash;
</span><span class="cx">     for (unsigned i = 6; i--;) {
</span><span class="cx">         buffer[i] = TABLE[accumulator % 62];
</span></span></pre></div>
<a id="branchesjsCStackSourceWTFwtfSixCharacterHashh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WTF/wtf/SixCharacterHash.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WTF/wtf/SixCharacterHash.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WTF/wtf/SixCharacterHash.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -26,7 +26,7 @@
</span><span class="cx"> #ifndef SixCharacterHash_h
</span><span class="cx"> #define SixCharacterHash_h
</span><span class="cx"> 
</span><del>-#include &lt;wtf/FixedArray.h&gt;
</del><ins>+#include &lt;array&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WTF {
</span><span class="cx"> 
</span><span class="lines">@@ -37,7 +37,7 @@
</span><span class="cx"> 
</span><span class="cx"> // Takes a 32-bit integer and constructs a six-character string that contains
</span><span class="cx"> // the character hash.
</span><del>-WTF_EXPORT_PRIVATE FixedArray&lt;char, 7&gt; integerToSixCharacterHashString(unsigned);
</del><ins>+WTF_EXPORT_PRIVATE std::array&lt;char, 7&gt; integerToSixCharacterHashString(unsigned);
</ins><span class="cx"> 
</span><span class="cx"> } // namespace WTF
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWTFwtfStdLibExtrash"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WTF/wtf/StdLibExtras.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WTF/wtf/StdLibExtras.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WTF/wtf/StdLibExtras.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -335,11 +335,13 @@
</span><span class="cx">     };
</span><span class="cx"> 
</span><span class="cx"> #if COMPILER_SUPPORTS(CXX_VARIADIC_TEMPLATES)
</span><ins>+#if !defined(_MSC_VER) || _MSC_VER &lt; 1800
</ins><span class="cx">     template&lt;class T, class... Args&gt; inline typename _Unique_if&lt;T&gt;::_Single_object
</span><span class="cx">     make_unique(Args&amp;&amp;... args)
</span><span class="cx">     {
</span><span class="cx">         return unique_ptr&lt;T&gt;(new T(std::forward&lt;Args&gt;(args)...));
</span><span class="cx">     }
</span><ins>+#endif
</ins><span class="cx"> #else
</span><span class="cx">     template&lt;class T&gt; inline typename _Unique_if&lt;T&gt;::_Single_object
</span><span class="cx">     make_unique()
</span><span class="lines">@@ -408,12 +410,14 @@
</span><span class="cx">     }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if !defined(_MSC_VER) || _MSC_VER &lt; 1800
</ins><span class="cx">     template&lt;class T&gt; inline typename _Unique_if&lt;T&gt;::_Unknown_bound
</span><span class="cx">     make_unique(size_t n)
</span><span class="cx">     {
</span><span class="cx">         typedef typename remove_extent&lt;T&gt;::type U;
</span><span class="cx">         return unique_ptr&lt;T&gt;(new U[n]());
</span><span class="cx">     }
</span><ins>+#endif
</ins><span class="cx">     
</span><span class="cx"> #if COMPILER_SUPPORTS(CXX_VARIADIC_TEMPLATES)
</span><span class="cx">     template&lt;class T, class... Args&gt; typename _Unique_if&lt;T&gt;::_Known_bound
</span></span></pre></div>
<a id="branchesjsCStackSourceWTFwtftextStringImplh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WTF/wtf/text/StringImpl.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WTF/wtf/text/StringImpl.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WTF/wtf/text/StringImpl.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -315,7 +315,9 @@
</span><span class="cx">     StringImpl(CreateEmptyUnique_T)
</span><span class="cx">         : m_refCount(s_refCountIncrement)
</span><span class="cx">         , m_length(0)
</span><del>-        , m_data16(reinterpret_cast&lt;const UChar*&gt;(1))
</del><ins>+        // We expect m_buffer to be initialized to 0 as we use it
+        // to represent a null terminated buffer.
+        , m_data16(reinterpret_cast&lt;const UChar*&gt;(&amp;m_buffer))
</ins><span class="cx">         , m_buffer(0)
</span><span class="cx">     {
</span><span class="cx">         ASSERT(m_data16);
</span></span></pre></div>
<a id="branchesjsCStackSourceWTFwtftextWTFStringh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WTF/wtf/text/WTFString.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WTF/wtf/text/WTFString.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WTF/wtf/text/WTFString.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -368,7 +368,7 @@
</span><span class="cx">     WTF_EXPORT_STRING_API int toIntStrict(bool* ok = 0, int base = 10) const;
</span><span class="cx">     WTF_EXPORT_STRING_API unsigned toUIntStrict(bool* ok = 0, int base = 10) const;
</span><span class="cx">     WTF_EXPORT_STRING_API int64_t toInt64Strict(bool* ok = 0, int base = 10) const;
</span><del>-    uint64_t toUInt64Strict(bool* ok = 0, int base = 10) const;
</del><ins>+    WTF_EXPORT_STRING_API uint64_t toUInt64Strict(bool* ok = 0, int base = 10) const;
</ins><span class="cx">     intptr_t toIntPtrStrict(bool* ok = 0, int base = 10) const;
</span><span class="cx"> 
</span><span class="cx">     WTF_EXPORT_STRING_API int toInt(bool* ok = 0) const;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/CMakeLists.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/CMakeLists.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/CMakeLists.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -24,6 +24,7 @@
</span><span class="cx">     &quot;${WEBCORE_DIR}/bridge&quot;
</span><span class="cx">     &quot;${WEBCORE_DIR}/bridge/c&quot;
</span><span class="cx">     &quot;${WEBCORE_DIR}/crypto&quot;
</span><ins>+    &quot;${WEBCORE_DIR}/crypto/keys&quot;
</ins><span class="cx">     &quot;${WEBCORE_DIR}/css&quot;
</span><span class="cx">     &quot;${WEBCORE_DIR}/dom&quot;
</span><span class="cx">     &quot;${WEBCORE_DIR}/dom/default&quot;
</span><span class="lines">@@ -185,6 +186,7 @@
</span><span class="cx">     Modules/mediasource/MediaSource.idl
</span><span class="cx">     Modules/mediasource/SourceBuffer.idl
</span><span class="cx">     Modules/mediasource/SourceBufferList.idl
</span><ins>+    Modules/mediasource/VideoPlaybackQuality.idl
</ins><span class="cx"> 
</span><span class="cx">     Modules/mediastream/AllAudioCapabilities.idl
</span><span class="cx">     Modules/mediastream/AllVideoCapabilities.idl
</span><span class="lines">@@ -209,7 +211,7 @@
</span><span class="cx">     Modules/mediastream/RTCDTMFToneChangeEvent.idl
</span><span class="cx">     Modules/mediastream/RTCDataChannel.idl
</span><span class="cx">     Modules/mediastream/RTCDataChannelEvent.idl
</span><del>-    Modules/mediastream/RTCErrorCallback.idl
</del><ins>+    Modules/mediastream/RTCPeerConnectionErrorCallback.idl
</ins><span class="cx">     Modules/mediastream/RTCIceCandidate.idl
</span><span class="cx">     Modules/mediastream/RTCIceCandidateEvent.idl
</span><span class="cx">     Modules/mediastream/RTCPeerConnection.idl
</span><span class="lines">@@ -798,6 +800,7 @@
</span><span class="cx">     Modules/indexeddb/IDBDatabaseBackend.cpp
</span><span class="cx">     Modules/indexeddb/IDBDatabaseCallbacksImpl.cpp
</span><span class="cx">     Modules/indexeddb/IDBDatabaseException.cpp
</span><ins>+    Modules/indexeddb/IDBDatabaseMetadata.cpp
</ins><span class="cx">     Modules/indexeddb/IDBEventDispatcher.cpp
</span><span class="cx">     Modules/indexeddb/IDBFactory.cpp
</span><span class="cx">     Modules/indexeddb/IDBFactoryBackendInterface.cpp
</span><span class="lines">@@ -829,6 +832,7 @@
</span><span class="cx">     Modules/mediasource/MediaSourceRegistry.cpp
</span><span class="cx">     Modules/mediasource/SourceBuffer.cpp
</span><span class="cx">     Modules/mediasource/SourceBufferList.cpp
</span><ins>+    Modules/mediasource/VideoPlaybackQuality.cpp
</ins><span class="cx"> 
</span><span class="cx">     Modules/mediastream/AudioStreamTrack.cpp
</span><span class="cx">     Modules/mediastream/CapabilityRange.cpp
</span><span class="lines">@@ -1576,9 +1580,7 @@
</span><span class="cx">     inspector/InjectedScriptManager.cpp
</span><span class="cx">     inspector/InjectedScriptModule.cpp
</span><span class="cx">     inspector/InspectorAgent.cpp
</span><del>-    inspector/InspectorAgentRegistry.cpp
</del><span class="cx">     inspector/InspectorApplicationCacheAgent.cpp
</span><del>-    inspector/InspectorBackendDispatcher.cpp
</del><span class="cx">     inspector/InspectorCSSAgent.cpp
</span><span class="cx">     inspector/InspectorCanvasAgent.cpp
</span><span class="cx">     inspector/InspectorClient.cpp
</span><span class="lines">@@ -1609,7 +1611,6 @@
</span><span class="cx">     inspector/InspectorStyleSheet.cpp
</span><span class="cx">     inspector/InspectorStyleTextEditor.cpp
</span><span class="cx">     inspector/InspectorTimelineAgent.cpp
</span><del>-    inspector/InspectorValues.cpp
</del><span class="cx">     inspector/InspectorWorkerAgent.cpp
</span><span class="cx">     inspector/InstrumentingAgents.cpp
</span><span class="cx">     inspector/NetworkResourcesData.cpp
</span><span class="lines">@@ -3047,12 +3048,12 @@
</span><span class="cx"> 
</span><span class="cx"> # All Web Inspector generated files are created with this one call to CodeGeneratorInspector.pm
</span><span class="cx"> add_custom_command(
</span><del>-    OUTPUT ${DERIVED_SOURCES_WEBCORE_DIR}/InspectorBackendDispatchers.cpp ${DERIVED_SOURCES_WEBCORE_DIR}/InspectorBackendDispatchers.h ${DERIVED_SOURCES_WEBCORE_DIR}/InspectorFrontend.cpp ${DERIVED_SOURCES_WEBCORE_DIR}/InspectorFrontend.h ${DERIVED_SOURCES_WEBCORE_DIR}/InspectorTypeBuilder.cpp ${DERIVED_SOURCES_WEBCORE_DIR}/InspectorTypeBuilder.h
</del><ins>+    OUTPUT ${DERIVED_SOURCES_WEBCORE_DIR}/InspectorBackendDispatchers.cpp ${DERIVED_SOURCES_WEBCORE_DIR}/InspectorBackendDispatchers.h ${DERIVED_SOURCES_WEBCORE_DIR}/InspectorFrontend.cpp ${DERIVED_SOURCES_WEBCORE_DIR}/InspectorFrontend.h ${DERIVED_SOURCES_WEBCORE_DIR}/InspectorWebTypeBuilders.cpp ${DERIVED_SOURCES_WEBCORE_DIR}/InspectorWebTypeBuilders.h
</ins><span class="cx">     MAIN_DEPENDENCY ${DERIVED_SOURCES_WEBCORE_DIR}/Inspector.json
</span><span class="cx">     DEPENDS ${WEBCORE_DIR}/inspector/CodeGeneratorInspector.py ${WEBCORE_DIR}/inspector/CodeGeneratorInspectorStrings.py
</span><span class="cx">     COMMAND ${PYTHON_EXECUTABLE} ${WEBCORE_DIR}/inspector/CodeGeneratorInspector.py ${DERIVED_SOURCES_WEBCORE_DIR}/Inspector.json --output_h_dir &quot;${DERIVED_SOURCES_WEBCORE_DIR}&quot; --output_cpp_dir &quot;${DERIVED_SOURCES_WEBCORE_DIR}&quot; --output_js_dir &quot;${DERIVED_SOURCES_WEBCORE_DIR}&quot; --write_always
</span><span class="cx">     VERBATIM)
</span><del>-list(APPEND WebCore_SOURCES ${DERIVED_SOURCES_WEBCORE_DIR}/InspectorBackendDispatchers.cpp ${DERIVED_SOURCES_WEBCORE_DIR}/InspectorFrontend.cpp ${DERIVED_SOURCES_WEBCORE_DIR}/InspectorTypeBuilder.cpp)
</del><ins>+list(APPEND WebCore_SOURCES ${DERIVED_SOURCES_WEBCORE_DIR}/InspectorBackendDispatchers.cpp ${DERIVED_SOURCES_WEBCORE_DIR}/InspectorFrontend.cpp ${DERIVED_SOURCES_WEBCORE_DIR}/InspectorWebTypeBuilders.cpp)
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> # Generate InspectorOverlayPage.h
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/ChangeLog (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/ChangeLog        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/ChangeLog        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,3 +1,1699 @@
</span><ins>+2014-01-23  Mark Hahnenberg  &lt;mhahnenberg@apple.com&gt;
+
+        Merge branch up to ToT r160556.
+
+        Tests: accessibility/alt-tag-on-image-with-nonimage-role.html
+               accessibility/children-changed-sends-notification.html
+               crypto/subtle/aes-postMessage.html
+               crypto/subtle/hmac-postMessage.html
+               crypto/subtle/postMessage-worker.html
+               crypto/subtle/rsa-oaep-generate-non-extractable-key.html
+               crypto/subtle/rsa-postMessage.html
+               crypto/subtle/rsaes-pkcs1-v1_5-decrypt.html
+               crypto/subtle/rsaes-pkcs1-v1_5-wrap-unwrap-aes.html
+               crypto/subtle/unwrapKey-check-usage.html
+               crypto/subtle/wrapKey-check-usage.html
+               fast/css/nth-last-child-recalc.html
+               fast/css/pending-image-crash.xhtml
+               fast/css/style-sharing-grand-parent-invalidate.html
+               fast/dom/Document/clone-node.html
+               fast/dom/HTMLDocument/clone-node-quirks-mode.html
+               fast/dom/HTMLTableElement/empy-table-cell-with-background-color.html
+               fast/dom/Window/postMessage-clone-port-error.html
+               inspector-protocol/model/highlight-shape-outside-margin.html
+               inspector-protocol/page/deny-X-FrameOption.html
+               media/media-source/media-source-end-of-stream.html
+               media/media-source/media-source-video-playback-quality.html
+               platform/gtk/accessibility/text-at-offset-embedded-objects.html
+               platform/gtk/accessibility/text-at-offset-newlines.html
+               platform/gtk/accessibility/text-at-offset-preformatted.html
+               platform/gtk/accessibility/text-at-offset-simple.html
+               platform/gtk/accessibility/text-at-offset-special-chars.html
+               platform/gtk/accessibility/text-at-offset-textarea.html
+               platform/gtk/accessibility/text-at-offset-textinput.html
+               platform/gtk/accessibility/text-at-offset-wrapped-lines.html
+               platform/gtk/accessibility/text-for-range-combo-box.html
+               platform/gtk/accessibility/text-for-range-embedded-objects.html
+               platform/gtk/accessibility/text-for-range-entry-and-password.html
+               platform/gtk/accessibility/text-for-range-extraneous-whitespace.html
+               platform/gtk/accessibility/text-for-range-formatted.html
+               platform/gtk/accessibility/text-for-range-heading.html
+               platform/gtk/accessibility/text-for-range-list-items.html
+               platform/gtk/accessibility/text-for-range-simple.html
+               platform/gtk/accessibility/text-for-range-table-cells.html
+               platform/gtk/accessibility/text-for-range-with-link.html
+               platform/gtk/accessibility/text-for-table.html
+               svg/custom/clone-node.html
+               svg/dom/SVGScriptElement/script-type-attribute.svg
+
+        * CMakeLists.txt:
+        * Configurations/Version.xcconfig:
+        * DerivedSources.make:
+        * ForwardingHeaders/bindings: Added.
+        * ForwardingHeaders/bindings/ScriptFunctionCall.h: Added.
+        * ForwardingHeaders/bindings/ScriptObject.h: Added.
+        * ForwardingHeaders/bindings/ScriptValue.h: Added.
+        * ForwardingHeaders/inspector/InspectorAgentBase.h: Added.
+        * ForwardingHeaders/inspector/InspectorAgentRegistry.h: Added.
+        * ForwardingHeaders/inspector/InspectorBackendDispatcher.h: Added.
+        * ForwardingHeaders/inspector/InspectorTypeBuilder.h: Added.
+        * ForwardingHeaders/inspector/InspectorValues.h: Added.
+        * GNUmakefile.am:
+        * GNUmakefile.list.am:
+        * Modules/battery/BatteryManager.idl:
+        * Modules/battery/NavigatorBattery.idl:
+        * Modules/indexeddb/IDBAny.cpp:
+        (WebCore::IDBAny::scriptValue):
+        (WebCore::IDBAny::IDBAny):
+        * Modules/indexeddb/IDBAny.h:
+        * Modules/indexeddb/IDBCursor.cpp:
+        (WebCore::IDBCursor::key):
+        (WebCore::IDBCursor::primaryKey):
+        (WebCore::IDBCursor::value):
+        (WebCore::IDBCursor::update):
+        (WebCore::IDBCursor::continueFunction):
+        (WebCore::IDBCursor::setValueReady):
+        * Modules/indexeddb/IDBCursor.h:
+        * Modules/indexeddb/IDBDatabaseMetadata.cpp: Added.
+        (WebCore::IDBDatabaseMetadata::isolatedCopy):
+        (WebCore::IDBObjectStoreMetadata::isolatedCopy):
+        (WebCore::IDBIndexMetadata::isolatedCopy):
+        * Modules/indexeddb/IDBDatabaseMetadata.h:
+        * Modules/indexeddb/IDBFactory.cpp:
+        (WebCore::IDBFactory::cmp):
+        * Modules/indexeddb/IDBFactory.h:
+        * Modules/indexeddb/IDBIndex.cpp:
+        (WebCore::IDBIndex::openCursor):
+        (WebCore::IDBIndex::count):
+        (WebCore::IDBIndex::openKeyCursor):
+        (WebCore::IDBIndex::get):
+        (WebCore::IDBIndex::getKey):
+        * Modules/indexeddb/IDBIndex.h:
+        (WebCore::IDBIndex::openCursor):
+        (WebCore::IDBIndex::openKeyCursor):
+        * Modules/indexeddb/IDBKeyPath.cpp:
+        (WebCore::IDBKeyPath::isolatedCopy):
+        * Modules/indexeddb/IDBKeyPath.h:
+        * Modules/indexeddb/IDBKeyRange.cpp:
+        (WebCore::IDBKeyRange::lowerValue):
+        (WebCore::IDBKeyRange::upperValue):
+        (WebCore::IDBKeyRange::only):
+        (WebCore::IDBKeyRange::lowerBound):
+        (WebCore::IDBKeyRange::upperBound):
+        (WebCore::IDBKeyRange::bound):
+        * Modules/indexeddb/IDBKeyRange.h:
+        (WebCore::IDBKeyRange::lowerBound):
+        (WebCore::IDBKeyRange::upperBound):
+        (WebCore::IDBKeyRange::bound):
+        * Modules/indexeddb/IDBObjectStore.cpp:
+        (WebCore::IDBObjectStore::get):
+        (WebCore::generateIndexKeysForValue):
+        (WebCore::IDBObjectStore::add):
+        (WebCore::IDBObjectStore::put):
+        (WebCore::IDBObjectStore::deleteFunction):
+        (WebCore::IDBObjectStore::openCursor):
+        (WebCore::IDBObjectStore::count):
+        * Modules/indexeddb/IDBObjectStore.h:
+        * Modules/indexeddb/IDBRequest.cpp:
+        (WebCore::IDBRequest::setResultCursor):
+        (WebCore::IDBRequest::onSuccess):
+        (WebCore::IDBRequest::onSuccessInternal):
+        * Modules/indexeddb/IDBRequest.h:
+        * Modules/mediasource/DOMURLMediaSource.cpp:
+        (WebCore::DOMURLMediaSource::createObjectURL):
+        * Modules/mediasource/DOMURLMediaSource.h:
+        * Modules/mediasource/MediaSource.cpp:
+        (WebCore::MediaSource::MediaSource):
+        (WebCore::MediaSource::openKeyword):
+        (WebCore::MediaSource::closedKeyword):
+        (WebCore::MediaSource::endedKeyword):
+        (WebCore::MediaSource::setPrivateAndOpen):
+        (WebCore::MediaSource::addedToRegistry):
+        (WebCore::MediaSource::removedFromRegistry):
+        (WebCore::MediaSource::duration):
+        (WebCore::MediaSource::buffered):
+        (WebCore::SourceBufferBufferedDoesNotContainTime::SourceBufferBufferedDoesNotContainTime):
+        (WebCore::SourceBufferBufferedDoesNotContainTime::operator()):
+        (WebCore::SourceBufferBufferedHasEnough::SourceBufferBufferedHasEnough):
+        (WebCore::SourceBufferBufferedHasEnough::operator()):
+        (WebCore::SourceBufferBufferedHasFuture::SourceBufferBufferedHasFuture):
+        (WebCore::SourceBufferBufferedHasFuture::operator()):
+        (WebCore::MediaSource::monitorSourceBuffers):
+        (WebCore::MediaSource::setDuration):
+        (WebCore::MediaSource::setReadyState):
+        (WebCore::SourceBufferIsUpdating):
+        (WebCore::MediaSource::endOfStream):
+        (WebCore::MediaSource::streamEndedWithError):
+        (WebCore::MediaSource::removeSourceBuffer):
+        (WebCore::MediaSource::isOpen):
+        (WebCore::MediaSource::isClosed):
+        (WebCore::MediaSource::close):
+        (WebCore::MediaSource::attachToElement):
+        (WebCore::MediaSource::openIfInEndedState):
+        (WebCore::MediaSource::hasPendingActivity):
+        (WebCore::MediaSource::stop):
+        (WebCore::MediaSource::onReadyStateChange):
+        (WebCore::MediaSource::activeRanges):
+        (WebCore::MediaSource::createSourceBufferPrivate):
+        (WebCore::MediaSource::scheduleEvent):
+        (WebCore::MediaSource::scriptExecutionContext):
+        (WebCore::MediaSource::eventTargetInterface):
+        (WebCore::MediaSource::registry):
+        * Modules/mediasource/MediaSource.h:
+        (WebCore::MediaSource::readyState):
+        (WebCore::MediaSource::mediaElement):
+        (WebCore::MediaSource::asyncEventQueue):
+        * Modules/mediasource/MediaSource.idl:
+        * Modules/mediasource/MediaSourceBase.cpp:
+        * Modules/mediasource/MediaSourceBase.h:
+        * Modules/mediasource/MediaSourceRegistry.cpp:
+        (WebCore::MediaSourceRegistry::registerURL):
+        (WebCore::MediaSourceRegistry::unregisterURL):
+        * Modules/mediasource/MediaSourceRegistry.h:
+        * Modules/mediasource/SourceBuffer.cpp:
+        (WebCore::SourceBuffer::TrackBuffer::TrackBuffer):
+        (WebCore::SourceBuffer::appendBufferTimerFired):
+        (WebCore::SourceBuffer::sourceBufferPrivateDidReceiveSample):
+        (WebCore::SourceBuffer::sourceBufferPrivateHasAudio):
+        (WebCore::SourceBuffer::sourceBufferPrivateHasVideo):
+        (WebCore::SourceBuffer::didDropSample):
+        * Modules/mediasource/SourceBuffer.h:
+        * Modules/mediasource/VideoPlaybackQuality.cpp: Added.
+        (WebCore::VideoPlaybackQuality::create):
+        (WebCore::VideoPlaybackQuality::VideoPlaybackQuality):
+        * Modules/mediasource/VideoPlaybackQuality.h: Added.
+        (WebCore::VideoPlaybackQuality::creationTime):
+        (WebCore::VideoPlaybackQuality::totalVideoFrames):
+        (WebCore::VideoPlaybackQuality::droppedVideoFrames):
+        (WebCore::VideoPlaybackQuality::corruptedVideoFrames):
+        (WebCore::VideoPlaybackQuality::totalFrameDelay):
+        * Modules/mediasource/VideoPlaybackQuality.idl: Added.
+        * Modules/mediastream/CapabilityRange.cpp:
+        (WebCore::scriptValue):
+        (WebCore::CapabilityRange::min):
+        (WebCore::CapabilityRange::max):
+        * Modules/mediastream/CapabilityRange.h:
+        * Modules/mediastream/HTMLMediaElementMediaStream.idl:
+        * Modules/mediastream/MediaTrackConstraint.h:
+        * Modules/mediastream/RTCErrorCallback.h:
+        * Modules/mediastream/RTCErrorCallback.idl:
+        * Modules/mediastream/RTCIceCandidate.cpp:
+        * Modules/mediastream/RTCPeerConnection.cpp:
+        (WebCore::RTCPeerConnection::createOffer):
+        (WebCore::RTCPeerConnection::createAnswer):
+        (WebCore::RTCPeerConnection::setLocalDescription):
+        (WebCore::RTCPeerConnection::setRemoteDescription):
+        (WebCore::RTCPeerConnection::addIceCandidate):
+        * Modules/mediastream/RTCPeerConnection.h:
+        * Modules/mediastream/RTCPeerConnection.idl:
+        * Modules/mediastream/RTCPeerConnectionErrorCallback.h: Added.
+        (WebCore::RTCPeerConnectionErrorCallback::~RTCPeerConnectionErrorCallback):
+        * Modules/mediastream/RTCPeerConnectionErrorCallback.idl: Added.
+        * Modules/mediastream/RTCSessionDescriptionRequestImpl.cpp:
+        (WebCore::RTCSessionDescriptionRequestImpl::create):
+        (WebCore::RTCSessionDescriptionRequestImpl::RTCSessionDescriptionRequestImpl):
+        (WebCore::RTCSessionDescriptionRequestImpl::requestFailed):
+        * Modules/mediastream/RTCSessionDescriptionRequestImpl.h:
+        * Modules/mediastream/RTCVoidRequestImpl.cpp:
+        (WebCore::RTCVoidRequestImpl::create):
+        (WebCore::RTCVoidRequestImpl::RTCVoidRequestImpl):
+        (WebCore::RTCVoidRequestImpl::requestFailed):
+        * Modules/mediastream/RTCVoidRequestImpl.h:
+        * Modules/networkinfo/NavigatorNetworkInfoConnection.idl:
+        * Modules/networkinfo/NetworkInfoConnection.idl:
+        * Modules/plugins/QuickTimePluginReplacement.cpp:
+        * Modules/plugins/QuickTimePluginReplacement.h:
+        * Modules/websockets/WebSocketHandshake.cpp:
+        (WebCore::WebSocketHandshake::getExpectedWebSocketAccept):
+        * PlatformEfl.cmake:
+        * PlatformGTK.cmake:
+        * PlatformNix.cmake:
+        * UseJSC.cmake:
+        * WebCore.exp.in:
+        * WebCore.vcxproj/WebCore.vcxproj:
+        * WebCore.vcxproj/WebCore.vcxproj.filters:
+        * WebCore.vcxproj/WebCoreCommon.props:
+        * WebCore.vcxproj/WebCoreTestSupport.vcxproj:
+        * WebCore.xcodeproj/project.pbxproj:
+        * accessibility/AccessibilityNodeObject.cpp:
+        (WebCore::AccessibilityNodeObject::usesAltTagForTextComputation):
+        (WebCore::AccessibilityNodeObject::alternativeText):
+        (WebCore::AccessibilityNodeObject::accessibilityDescription):
+        (WebCore::AccessibilityNodeObject::text):
+        * accessibility/AccessibilityNodeObject.h:
+        * accessibility/atk/WebKitAccessibleWrapperAtk.cpp:
+        (webkitAccessibleGetAttributes):
+        (atkRole):
+        * bindings/gobject/GNUmakefile.am:
+        * bindings/gobject/WebKitDOMCustom.cpp:
+        * bindings/gobject/WebKitDOMCustom.h:
+        * bindings/gobject/WebKitDOMCustom.symbols:
+        * bindings/gobject/WebKitDOMDeprecated.cpp:
+        * bindings/gobject/WebKitDOMDeprecated.h:
+        * bindings/gobject/WebKitDOMDeprecated.symbols:
+        * bindings/gobject/webkitdom.symbols:
+        * bindings/js/Dictionary.h:
+        (WebCore::Dictionary::getEventListener):
+        * bindings/js/IDBBindingUtilities.cpp:
+        (WebCore::createIDBKeyFromScriptValueAndKeyPath):
+        (WebCore::injectIDBKeyIntoScriptValue):
+        (WebCore::canInjectIDBKeyIntoScriptValue):
+        (WebCore::deserializeIDBValue):
+        (WebCore::deserializeIDBValueBuffer):
+        (WebCore::idbKeyToScriptValue):
+        (WebCore::scriptValueToIDBKey):
+        * bindings/js/IDBBindingUtilities.h:
+        * bindings/js/JSBindingsAllInOne.cpp:
+        * bindings/js/JSCryptoAlgorithmDictionary.cpp:
+        (WebCore::JSCryptoAlgorithmDictionary::createParametersForEncrypt):
+        (WebCore::JSCryptoAlgorithmDictionary::createParametersForDecrypt):
+        (WebCore::JSCryptoAlgorithmDictionary::createParametersForSign):
+        (WebCore::JSCryptoAlgorithmDictionary::createParametersForVerify):
+        (WebCore::JSCryptoAlgorithmDictionary::createParametersForDigest):
+        (WebCore::JSCryptoAlgorithmDictionary::createParametersForGenerateKey):
+        (WebCore::JSCryptoAlgorithmDictionary::createParametersForDeriveKey):
+        (WebCore::JSCryptoAlgorithmDictionary::createParametersForDeriveBits):
+        (WebCore::JSCryptoAlgorithmDictionary::createParametersForImportKey):
+        (WebCore::JSCryptoAlgorithmDictionary::createParametersForExportKey):
+        * bindings/js/JSCryptoKeySerializationJWK.cpp:
+        (WebCore::JSCryptoKeySerializationJWK::reconcileAlgorithm):
+        (WebCore::JSCryptoKeySerializationJWK::keySizeIsValid):
+        (WebCore::JSCryptoKeySerializationJWK::addJWKAlgorithmToJSON):
+        * bindings/js/JSDOMBinding.h:
+        (WebCore::toJS):
+        (WebCore::toRefPtrNativeArray):
+        (WebCore::toNativeArray):
+        (WebCore::toNativeArguments):
+        * bindings/js/JSDictionary.cpp:
+        (WebCore::JSDictionary::convertValue):
+        * bindings/js/JSDictionary.h:
+        * bindings/js/JSHTMLCanvasElementCustom.cpp:
+        (WebCore::JSHTMLCanvasElement::getContext):
+        * bindings/js/JSInjectedScriptHostCustom.cpp:
+        (WebCore::InjectedScriptHost::scriptValueAsNode):
+        (WebCore::InjectedScriptHost::nodeAsScriptValue):
+        (WebCore::JSInjectedScriptHost::inspectedObject):
+        (WebCore::JSInjectedScriptHost::inspect):
+        * bindings/js/JSInjectedScriptManager.cpp:
+        (WebCore::InjectedScriptManager::createInjectedScript):
+        * bindings/js/JSMainThreadExecState.cpp:
+        (WebCore::functionCallHandlerFromAnyThread):
+        * bindings/js/JSMainThreadExecState.h:
+        (WebCore::JSMainThreadExecState::currentState):
+        * bindings/js/JSMessageEventCustom.cpp:
+        (WebCore::JSMessageEvent::data):
+        (WebCore::handleInitMessageEvent):
+        * bindings/js/JSSubtleCryptoCustom.cpp:
+        (WebCore::JSSubtleCrypto::wrapKey):
+        * bindings/js/ScheduledAction.cpp:
+        * bindings/js/ScriptCallStackFactory.cpp:
+        (WebCore::createScriptArguments):
+        * bindings/js/ScriptController.cpp:
+        (WebCore::ScriptController::evaluateInWorld):
+        (WebCore::ScriptController::evaluate):
+        (WebCore::ScriptController::executeScriptInWorld):
+        (WebCore::ScriptController::executeScript):
+        (WebCore::ScriptController::executeIfJavaScriptURL):
+        * bindings/js/ScriptController.h:
+        * bindings/js/ScriptDebugServer.cpp:
+        (WebCore::ScriptDebugServer::setScriptSource):
+        (WebCore::ScriptDebugServer::updateCallStack):
+        (WebCore::ScriptDebugServer::dispatchDidPause):
+        (WebCore::ScriptDebugServer::runScript):
+        * bindings/js/ScriptDebugServer.h:
+        * bindings/js/ScriptFunctionCall.cpp:
+        * bindings/js/ScriptFunctionCall.h:
+        * bindings/js/ScriptGlobalObject.cpp: Added.
+        (WebCore::handleException):
+        (WebCore::ScriptGlobalObject::set):
+        (WebCore::ScriptGlobalObject::get):
+        (WebCore::ScriptGlobalObject::remove):
+        * bindings/js/ScriptGlobalObject.h: Added.
+        (WebCore::ScriptGlobalObject::ScriptGlobalObject):
+        * bindings/js/ScriptObject.cpp:
+        * bindings/js/ScriptObject.h:
+        * bindings/js/ScriptProfile.cpp:
+        (WebCore::buildInspectorObjectFor):
+        (WebCore::ScriptProfile::buildInspectorObjectForHead):
+        (WebCore::ScriptProfile::buildInspectorObjectForBottomUpHead):
+        * bindings/js/ScriptProfile.h:
+        * bindings/js/ScriptProfiler.cpp:
+        (WebCore::ScriptProfiler::objectByHeapObjectId):
+        (WebCore::ScriptProfiler::getHeapObjectId):
+        * bindings/js/ScriptProfiler.h:
+        * bindings/js/ScriptState.h:
+        * bindings/js/ScriptValue.cpp:
+        * bindings/js/ScriptValue.h:
+        * bindings/js/SerializedScriptValue.cpp:
+        (WebCore::ENUM_CLASS):
+        (WebCore::countUsages):
+        (WebCore::CloneSerializer::dumpIfTerminal):
+        (WebCore::CloneSerializer::write):
+        (WebCore::CloneDeserializer::read):
+        (WebCore::CloneDeserializer::readHMACKey):
+        (WebCore::CloneDeserializer::readAESKey):
+        (WebCore::CloneDeserializer::readRSAKey):
+        (WebCore::CloneDeserializer::readCryptoKey):
+        (WebCore::CloneDeserializer::readTerminal):
+        (WebCore::SerializedScriptValue::deserializeForInspector):
+        (WebCore::SerializedScriptValue::serialize):
+        (WebCore::SerializedScriptValue::deserialize):
+        * bindings/js/SerializedScriptValue.h:
+        * bindings/js/WorkerScriptController.cpp:
+        (WebCore::WorkerScriptController::evaluate):
+        (WebCore::WorkerScriptController::setException):
+        * bindings/js/WorkerScriptController.h:
+        * bindings/scripts/CodeGeneratorGObject.pm:
+        (SkipAttribute):
+        (SkipFunction):
+        (GetWriteableProperties):
+        (GenerateProperty):
+        (GenerateFunction):
+        (GenerateFunctions):
+        * bindings/scripts/CodeGeneratorJS.pm:
+        * bindings/scripts/test/JS/JSTestObj.cpp:
+        (WebCore::setJSTestObjAnyAttribute):
+        * crypto/CommonCryptoUtilities.h:
+        * crypto/CryptoAlgorithmIdentifier.h:
+        (WebCore::ENUM_CLASS):
+        * crypto/CryptoAlgorithmRegistry.cpp:
+        (WebCore::CryptoAlgorithmRegistry::shared):
+        (WebCore::registryMutex):
+        (WebCore::CryptoAlgorithmRegistry::getIdentifierForName):
+        (WebCore::CryptoAlgorithmRegistry::nameForIdentifier):
+        (WebCore::CryptoAlgorithmRegistry::create):
+        (WebCore::CryptoAlgorithmRegistry::registerAlgorithm):
+        * crypto/CryptoAlgorithmRegistry.h:
+        * crypto/CryptoKey.cpp:
+        (WebCore::CryptoKey::usages):
+        * crypto/CryptoKey.idl:
+        * crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:
+        * crypto/algorithms/CryptoAlgorithmAES_KW.cpp:
+        (WebCore::CryptoAlgorithmAES_KW::keyAlgorithmMatches):
+        (WebCore::CryptoAlgorithmAES_KW::encryptForWrapKey):
+        (WebCore::CryptoAlgorithmAES_KW::decryptForUnwrapKey):
+        * crypto/algorithms/CryptoAlgorithmAES_KW.h:
+        * crypto/algorithms/CryptoAlgorithmHMAC.cpp:
+        * crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp: Added.
+        (WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::CryptoAlgorithmRSAES_PKCS1_v1_5):
+        (WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::~CryptoAlgorithmRSAES_PKCS1_v1_5):
+        (WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::create):
+        (WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::identifier):
+        (WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::keyAlgorithmMatches):
+        (WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::encrypt):
+        (WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::decrypt):
+        (WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::generateKey):
+        (WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::importKey):
+        * crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.h: Added.
+        * crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:
+        * crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:
+        * crypto/algorithms/CryptoAlgorithmSHA1.cpp:
+        * crypto/algorithms/CryptoAlgorithmSHA224.cpp:
+        * crypto/algorithms/CryptoAlgorithmSHA256.cpp:
+        * crypto/algorithms/CryptoAlgorithmSHA384.cpp:
+        * crypto/algorithms/CryptoAlgorithmSHA512.cpp:
+        * crypto/keys/CryptoKeyAES.cpp:
+        (WebCore::CryptoKeyAES::CryptoKeyAES):
+        (WebCore::CryptoKeyAES::isValidAESAlgorithm):
+        * crypto/keys/CryptoKeyAES.h:
+        * crypto/mac/CryptoAlgorithmRSAES_PKCS1_v1_5Mac.cpp: Added.
+        (WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::platformEncrypt):
+        (WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::platformDecrypt):
+        * crypto/mac/CryptoAlgorithmRegistryMac.cpp:
+        (WebCore::CryptoAlgorithmRegistry::platformRegisterAlgorithms):
+        * crypto/mac/CryptoKeyRSAMac.cpp:
+        (WebCore::CryptoKeyRSA::generatePair):
+        * crypto/parameters/CryptoAlgorithmAesCbcParams.h:
+        * css/CSSComputedStyleDeclaration.cpp:
+        (WebCore::getBorderRadiusShorthandValue):
+        (WebCore::ComputedStyleExtractor::valueForFilter):
+        * css/CSSComputedStyleDeclaration.h:
+        * css/CSSCrossfadeValue.cpp:
+        (WebCore::subimageKnownToBeOpaque):
+        (WebCore::CSSCrossfadeValue::knownToBeOpaque):
+        * css/CSSCursorImageValue.cpp:
+        (WebCore::CSSCursorImageValue::detachPendingImage):
+        (WebCore::CSSCursorImageValue::~CSSCursorImageValue):
+        (WebCore::CSSCursorImageValue::cachedImage):
+        (WebCore::CSSCursorImageValue::clearCachedImage):
+        * css/CSSCursorImageValue.h:
+        * css/CSSFilterImageValue.h:
+        (WebCore::CSSFilterImageValue::create):
+        * css/CSSImageGeneratorValue.cpp:
+        (WebCore::CSSImageGeneratorValue::saveCachedImageForSize):
+        (WebCore::CSSImageGeneratorValue::subimageIsPending):
+        (WebCore::CSSImageGeneratorValue::cachedImageForCSSValue):
+        * css/CSSImageGeneratorValue.h:
+        * css/CSSImageSetValue.cpp:
+        (WebCore::CSSImageSetValue::detachPendingImage):
+        (WebCore::CSSImageSetValue::~CSSImageSetValue):
+        (WebCore::CSSImageSetValue::cachedImageSet):
+        * css/CSSImageSetValue.h:
+        * css/CSSImageValue.cpp:
+        (WebCore::CSSImageValue::detachPendingImage):
+        (WebCore::CSSImageValue::~CSSImageValue):
+        (WebCore::CSSImageValue::cachedImage):
+        * css/CSSImageValue.h:
+        * css/CSSParser.cpp:
+        (WebCore::filterProperties):
+        (WebCore::CSSParser::createStyleProperties):
+        (WebCore::CSSParser::parseFilterImage):
+        (WebCore::CSSParser::parseFilter):
+        * css/CSSValue.cpp:
+        * css/StyleProperties.cpp:
+        (WebCore::StyleProperties::asText):
+        * css/StyleResolver.cpp:
+        (WebCore::StyleResolver::State::clear):
+        (WebCore::StyleResolver::styleForElement):
+        (WebCore::StyleResolver::pseudoStyleForElement):
+        (WebCore::addIntrinsicMargins):
+        (WebCore::doesNotInheritTextDecoration):
+        (WebCore::StyleResolver::adjustRenderStyle):
+        (WebCore::StyleResolver::adjustGridItemPosition):
+        (WebCore::StyleResolver::applyProperty):
+        (WebCore::StyleResolver::styleImage):
+        (WebCore::StyleResolver::generatedOrPendingFromValue):
+        (WebCore::StyleResolver::loadPendingImage):
+        (WebCore::StyleResolver::loadPendingImages):
+        * css/StyleResolver.h:
+        * dom/CustomEvent.cpp:
+        (WebCore::CustomEvent::initCustomEvent):
+        * dom/CustomEvent.h:
+        (WebCore::CustomEvent::detail):
+        * dom/Document.cpp:
+        (WebCore::Document::cloneNode):
+        (WebCore::Document::cloneDocumentWithoutChildren):
+        (WebCore::Document::cloneDataFromDocument):
+        * dom/Document.h:
+        * dom/Document.idl:
+        * dom/Element.cpp:
+        (WebCore::Element::computedStyle):
+        * dom/Element.h:
+        * dom/InlineStyleSheetOwner.cpp:
+        (WebCore::InlineStyleSheetOwner::InlineStyleSheetOwner):
+        * dom/MessageEvent.cpp:
+        (WebCore::MessageEvent::MessageEvent):
+        (WebCore::MessageEvent::initMessageEvent):
+        * dom/MessageEvent.h:
+        (WebCore::MessageEvent::create):
+        (WebCore::MessageEvent::dataAsScriptValue):
+        * dom/MessagePort.cpp:
+        (WebCore::MessagePort::postMessage):
+        * dom/Node.cpp:
+        (WebCore::Node::computedStyle):
+        * dom/Node.h:
+        (WebCore::Node::nonRendererStyle):
+        * dom/PopStateEvent.h:
+        (WebCore::PopStateEvent::state):
+        * dom/ScriptElement.cpp:
+        (WebCore::ScriptElement::ScriptElement):
+        * dom/ScriptableDocumentParser.h:
+        * dom/StyledElement.cpp:
+        (WebCore::StyledElement::styleAttributeChanged):
+        * editing/VisibleUnits.cpp:
+        (WebCore::endWordBoundary):
+        * html/HTMLDocument.cpp:
+        (WebCore::HTMLDocument::cloneDocumentWithoutChildren):
+        * html/HTMLDocument.h:
+        * html/HTMLInputElement.cpp:
+        * html/HTMLMediaElement.cpp:
+        (WebCore::HTMLMediaElement::HTMLMediaElement):
+        (HTMLMediaElement::mediaLoadingFailedFatally):
+        (HTMLMediaElement::mediaLoadingFailed):
+        (HTMLMediaElement::mediaPlayerEngineUpdated):
+        (HTMLMediaElement::getVideoPlaybackQuality):
+        * html/HTMLMediaElement.h:
+        (WebCore::HTMLMediaElement::incrementDroppedFrameCount):
+        * html/HTMLMediaElement.idl:
+        * html/HTMLPlugInImageElement.cpp:
+        (WebCore::HTMLPlugInImageElement::didAddUserAgentShadowRoot):
+        * html/HTMLTextAreaElement.cpp:
+        * html/ImageInputType.cpp:
+        (WebCore::ImageInputType::handleDOMActivateEvent):
+        * html/TextFieldInputType.cpp:
+        * html/TextInputType.cpp:
+        * html/parser/HTMLDocumentParser.cpp:
+        (WebCore::HTMLDocumentParser::didReceiveParsedChunkFromBackgroundParser):
+        (WebCore::HTMLDocumentParser::pumpPendingSpeculations):
+        * html/parser/HTMLDocumentParser.h:
+        * html/parser/XSSAuditor.cpp:
+        * html/parser/XSSAuditorDelegate.cpp:
+        * inspector/CodeGeneratorInspector.py:
+        (RawTypes.BaseType.get_raw_validator_call_text):
+        (RawTypes.Object.get_array_item_raw_c_type_text):
+        (RawTypes.Any.get_array_item_raw_c_type_text):
+        (RawTypes.Array.get_array_item_raw_c_type_text):
+        (CommandReturnPassModel.OptOutput.get_return_var_type):
+        (CommandReturnPassModel.OptOutput.get_output_parameter_type):
+        (TypeModel.ExactlyInt.get_input_param_type_text):
+        (TypeModel.ExactlyInt.get_opt_output_type_):
+        (TypeModel.init_class):
+        (TypeBindings.create_named_type_declaration.Helper):
+        (TypeBindings.create_type_declaration_.EnumBinding.get_code_generator.CodeGenerator.generate_type_builder):
+        (TypeBindings.create_type_declaration_.EnumBinding.get_setter_value_expression_pattern):
+        (TypeBindings.create_type_declaration_.ClassBinding.get_code_generator.CodeGenerator.generate_type_builder):
+        (Inspector):
+        (ArrayBinding.get_array_item_c_type_text):
+        (Generator.go):
+        (Generator.EventMethodStructTemplate.append_epilog):
+        (Generator.process_command):
+        * inspector/CodeGeneratorInspectorStrings.py:
+        (void):
+        (InspectorFrontend_h):
+        (InspectorBackendDispatchers_h):
+        * inspector/ConsoleMessage.cpp:
+        (WebCore::messageSourceValue):
+        (WebCore::messageTypeValue):
+        (WebCore::messageLevelValue):
+        (WebCore::ConsoleMessage::addToFrontend):
+        * inspector/ConsoleMessage.h:
+        * inspector/ContentSearchUtils.cpp:
+        (WebCore::ContentSearchUtils::buildObjectForSearchMatch):
+        (WebCore::ContentSearchUtils::searchInTextByLines):
+        * inspector/ContentSearchUtils.h:
+        * inspector/DOMPatchSupport.cpp:
+        (WebCore::DOMPatchSupport::createDigest):
+        * inspector/InjectedScript.cpp:
+        (WebCore::InjectedScript::InjectedScript):
+        (WebCore::InjectedScript::evaluate):
+        (WebCore::InjectedScript::callFunctionOn):
+        (WebCore::InjectedScript::evaluateOnCallFrame):
+        (WebCore::InjectedScript::getFunctionDetails):
+        (WebCore::InjectedScript::getProperties):
+        (WebCore::InjectedScript::getInternalProperties):
+        (WebCore::InjectedScript::nodeForObjectId):
+        (WebCore::InjectedScript::releaseObject):
+        (WebCore::InjectedScript::wrapCallFrames):
+        (WebCore::InjectedScript::wrapObject):
+        (WebCore::InjectedScript::wrapTable):
+        (WebCore::InjectedScript::wrapNode):
+        (WebCore::InjectedScript::findObjectById):
+        (WebCore::InjectedScript::inspectNode):
+        (WebCore::InjectedScript::releaseObjectGroup):
+        (WebCore::InjectedScript::nodeAsScriptValue):
+        * inspector/InjectedScript.h:
+        * inspector/InjectedScriptBase.cpp:
+        (WebCore::InjectedScriptBase::InjectedScriptBase):
+        (WebCore::InjectedScriptBase::initialize):
+        (WebCore::InjectedScriptBase::injectedScriptObject):
+        (WebCore::InjectedScriptBase::callFunctionWithEvalEnabled):
+        (WebCore::InjectedScriptBase::makeCall):
+        (WebCore::InjectedScriptBase::makeEvalCall):
+        * inspector/InjectedScriptBase.h:
+        * inspector/InjectedScriptCanvasModule.cpp:
+        (WebCore::InjectedScriptCanvasModule::wrapCanvas2DContext):
+        (WebCore::InjectedScriptCanvasModule::wrapWebGLContext):
+        (WebCore::InjectedScriptCanvasModule::callWrapContextFunction):
+        (WebCore::InjectedScriptCanvasModule::markFrameEnd):
+        (WebCore::InjectedScriptCanvasModule::callStartCapturingFunction):
+        (WebCore::InjectedScriptCanvasModule::callVoidFunctionWithTraceLogIdArgument):
+        (WebCore::InjectedScriptCanvasModule::traceLog):
+        (WebCore::InjectedScriptCanvasModule::replayTraceLog):
+        (WebCore::InjectedScriptCanvasModule::resourceInfo):
+        (WebCore::InjectedScriptCanvasModule::resourceState):
+        * inspector/InjectedScriptCanvasModule.h:
+        * inspector/InjectedScriptHost.cpp:
+        (WebCore::InjectedScriptHost::inspectImpl):
+        (WebCore::InjectedScriptHost::InspectableObject::get):
+        * inspector/InjectedScriptHost.h:
+        * inspector/InjectedScriptManager.cpp:
+        (WebCore::InjectedScriptManager::injectedScriptFor):
+        * inspector/InjectedScriptManager.h:
+        * inspector/InjectedScriptModule.cpp:
+        (WebCore::InjectedScriptModule::ensureInjected):
+        * inspector/InspectorAgent.cpp:
+        (WebCore::InspectorAgent::InspectorAgent):
+        (WebCore::InspectorAgent::didCreateFrontendAndBackend):
+        (WebCore::InspectorAgent::inspect):
+        * inspector/InspectorAgent.h:
+        * inspector/InspectorAgentRegistry.cpp:
+        * inspector/InspectorAgentRegistry.h:
+        * inspector/InspectorAllInOne.cpp:
+        * inspector/InspectorApplicationCacheAgent.cpp:
+        (WebCore::InspectorApplicationCacheAgent::InspectorApplicationCacheAgent):
+        (WebCore::InspectorApplicationCacheAgent::didCreateFrontendAndBackend):
+        (WebCore::InspectorApplicationCacheAgent::getFramesWithManifests):
+        (WebCore::InspectorApplicationCacheAgent::getApplicationCacheForFrame):
+        (WebCore::InspectorApplicationCacheAgent::buildObjectForApplicationCache):
+        (WebCore::InspectorApplicationCacheAgent::buildArrayForApplicationCacheResources):
+        (WebCore::InspectorApplicationCacheAgent::buildObjectForApplicationCacheResource):
+        * inspector/InspectorApplicationCacheAgent.h:
+        * inspector/InspectorBackendDispatcher.cpp:
+        * inspector/InspectorBackendDispatcher.h:
+        * inspector/InspectorBaseAgent.h:
+        * inspector/InspectorCSSAgent.cpp:
+        (WebCore::SelectorProfile::toInspectorObject):
+        (WebCore::InspectorCSSAgent::InspectorCSSAgent):
+        (WebCore::InspectorCSSAgent::didCreateFrontendAndBackend):
+        (WebCore::InspectorCSSAgent::getMatchedStylesForNode):
+        (WebCore::InspectorCSSAgent::getInlineStylesForNode):
+        (WebCore::InspectorCSSAgent::getComputedStyleForNode):
+        (WebCore::InspectorCSSAgent::getAllStyleSheets):
+        (WebCore::InspectorCSSAgent::getStyleSheet):
+        (WebCore::InspectorCSSAgent::setStyleText):
+        (WebCore::InspectorCSSAgent::setPropertyText):
+        (WebCore::InspectorCSSAgent::toggleProperty):
+        (WebCore::InspectorCSSAgent::setRuleSelector):
+        (WebCore::InspectorCSSAgent::addRule):
+        (WebCore::InspectorCSSAgent::getSupportedCSSProperties):
+        (WebCore::InspectorCSSAgent::getNamedFlowCollection):
+        (WebCore::InspectorCSSAgent::stopSelectorProfiler):
+        (WebCore::InspectorCSSAgent::stopSelectorProfilerImpl):
+        (WebCore::InspectorCSSAgent::asInspectorStyleSheet):
+        (WebCore::InspectorCSSAgent::collectStyleSheets):
+        (WebCore::InspectorCSSAgent::viaInspectorStyleSheet):
+        (WebCore::InspectorCSSAgent::detectOrigin):
+        (WebCore::InspectorCSSAgent::buildObjectForRule):
+        (WebCore::InspectorCSSAgent::buildArrayForRuleList):
+        (WebCore::InspectorCSSAgent::buildArrayForMatchedRuleList):
+        (WebCore::InspectorCSSAgent::buildObjectForAttributesStyle):
+        (WebCore::InspectorCSSAgent::buildArrayForRegions):
+        (WebCore::InspectorCSSAgent::buildObjectForNamedFlow):
+        * inspector/InspectorCSSAgent.h:
+        * inspector/InspectorCanvasAgent.cpp:
+        (WebCore::InspectorCanvasAgent::InspectorCanvasAgent):
+        (WebCore::InspectorCanvasAgent::didCreateFrontendAndBackend):
+        (WebCore::InspectorCanvasAgent::wrapCanvas2DRenderingContextForInstrumentation):
+        (WebCore::InspectorCanvasAgent::wrapWebGLRenderingContextForInstrumentation):
+        (WebCore::InspectorCanvasAgent::notifyRenderingContextWasWrapped):
+        (WebCore::InspectorCanvasAgent::injectedScriptCanvasModule):
+        * inspector/InspectorCanvasAgent.h:
+        * inspector/InspectorCanvasInstrumentation.h:
+        (WebCore::InspectorInstrumentation::wrapCanvas2DRenderingContextForInstrumentation):
+        (WebCore::InspectorInstrumentation::wrapWebGLRenderingContextForInstrumentation):
+        * inspector/InspectorClient.cpp:
+        * inspector/InspectorClient.h:
+        * inspector/InspectorConsoleAgent.cpp:
+        (WebCore::InspectorConsoleAgent::InspectorConsoleAgent):
+        (WebCore::InspectorConsoleAgent::didCreateFrontendAndBackend):
+        (WebCore::InspectableHeapObject::get):
+        * inspector/InspectorConsoleAgent.h:
+        * inspector/InspectorController.cpp:
+        * inspector/InspectorController.h:
+        * inspector/InspectorDOMAgent.cpp:
+        (WebCore::InspectorDOMAgent::InspectorDOMAgent):
+        (WebCore::InspectorDOMAgent::didCreateFrontendAndBackend):
+        (WebCore::InspectorDOMAgent::getDocument):
+        (WebCore::InspectorDOMAgent::pushChildNodesToFrontend):
+        (WebCore::InspectorDOMAgent::querySelectorAll):
+        (WebCore::InspectorDOMAgent::pushNodePathToFrontend):
+        (WebCore::InspectorDOMAgent::getEventListenersForNode):
+        (WebCore::InspectorDOMAgent::getSearchResults):
+        (WebCore::InspectorDOMAgent::resolveNode):
+        (WebCore::InspectorDOMAgent::getAttributes):
+        (WebCore::InspectorDOMAgent::buildObjectForNode):
+        (WebCore::InspectorDOMAgent::buildArrayForElementAttributes):
+        (WebCore::InspectorDOMAgent::buildArrayForContainerChildren):
+        (WebCore::InspectorDOMAgent::buildObjectForEventListener):
+        (WebCore::InspectorDOMAgent::didCommitLoad):
+        (WebCore::InspectorDOMAgent::didInsertDOMNode):
+        (WebCore::InspectorDOMAgent::styleAttributeInvalidated):
+        * inspector/InspectorDOMAgent.h:
+        * inspector/InspectorDOMDebuggerAgent.cpp:
+        (WebCore::InspectorDOMDebuggerAgent::InspectorDOMDebuggerAgent):
+        (WebCore::InspectorDOMDebuggerAgent::didCreateFrontendAndBackend):
+        (WebCore::InspectorDOMDebuggerAgent::descriptionForDOMEvent):
+        * inspector/InspectorDOMDebuggerAgent.h:
+        * inspector/InspectorDOMStorageAgent.cpp:
+        (WebCore::InspectorDOMStorageAgent::InspectorDOMStorageAgent):
+        (WebCore::InspectorDOMStorageAgent::didCreateFrontendAndBackend):
+        (WebCore::InspectorDOMStorageAgent::getDOMStorageItems):
+        (WebCore::InspectorDOMStorageAgent::storageId):
+        (WebCore::InspectorDOMStorageAgent::didDispatchDOMStorageEvent):
+        * inspector/InspectorDOMStorageAgent.h:
+        * inspector/InspectorDatabaseAgent.cpp:
+        (WebCore::InspectorDatabaseAgent::InspectorDatabaseAgent):
+        (WebCore::InspectorDatabaseAgent::didCreateFrontendAndBackend):
+        (WebCore::InspectorDatabaseAgent::getDatabaseTableNames):
+        * inspector/InspectorDatabaseAgent.h:
+        * inspector/InspectorDatabaseResource.cpp:
+        (WebCore::InspectorDatabaseResource::bind):
+        * inspector/InspectorDebuggerAgent.cpp:
+        (WebCore::InspectorDebuggerAgent::InspectorDebuggerAgent):
+        (WebCore::InspectorDebuggerAgent::didCreateFrontendAndBackend):
+        (WebCore::breakpointActionTypeForString):
+        (WebCore::InspectorDebuggerAgent::setBreakpointByUrl):
+        (WebCore::InspectorDebuggerAgent::setBreakpoint):
+        (WebCore::InspectorDebuggerAgent::resolveBreakpoint):
+        (WebCore::scriptToInspectorObject):
+        (WebCore::InspectorDebuggerAgent::searchInContent):
+        (WebCore::InspectorDebuggerAgent::setScriptSource):
+        (WebCore::InspectorDebuggerAgent::getFunctionDetails):
+        (WebCore::InspectorDebuggerAgent::evaluateOnCallFrame):
+        (WebCore::InspectorDebuggerAgent::compileScript):
+        (WebCore::InspectorDebuggerAgent::runScript):
+        (WebCore::InspectorDebuggerAgent::currentCallFrames):
+        (WebCore::InspectorDebuggerAgent::didParseSource):
+        (WebCore::InspectorDebuggerAgent::didPause):
+        (WebCore::InspectorDebuggerAgent::didContinue):
+        (WebCore::InspectorDebuggerAgent::clear):
+        * inspector/InspectorDebuggerAgent.h:
+        * inspector/InspectorForwarding.h:
+        * inspector/InspectorFrontendClientLocal.cpp:
+        (WebCore::InspectorFrontendClientLocal::evaluateAsBoolean):
+        * inspector/InspectorFrontendHost.cpp:
+        (WebCore::FrontendMenuProvider::create):
+        (WebCore::FrontendMenuProvider::disconnect):
+        (WebCore::FrontendMenuProvider::FrontendMenuProvider):
+        (WebCore::FrontendMenuProvider::contextMenuItemSelected):
+        (WebCore::FrontendMenuProvider::contextMenuCleared):
+        (WebCore::InspectorFrontendHost::showContextMenu):
+        (WebCore::InspectorFrontendHost::dispatchEventAsContextMenuEvent):
+        * inspector/InspectorHeapProfilerAgent.cpp:
+        (WebCore::InspectorHeapProfilerAgent::InspectorHeapProfilerAgent):
+        (WebCore::InspectorHeapProfilerAgent::didCreateFrontendAndBackend):
+        (WebCore::InspectorHeapProfilerAgent::createSnapshotHeader):
+        (WebCore::InspectorHeapProfilerAgent::getProfileHeaders):
+        (WebCore::InspectorHeapProfilerAgent::getObjectByHeapObjectId):
+        (WebCore::InspectorHeapProfilerAgent::getHeapObjectId):
+        * inspector/InspectorHeapProfilerAgent.h:
+        * inspector/InspectorIndexedDBAgent.cpp:
+        (WebCore::InspectorIndexedDBAgent::InspectorIndexedDBAgent):
+        (WebCore::InspectorIndexedDBAgent::didCreateFrontendAndBackend):
+        * inspector/InspectorIndexedDBAgent.h:
+        * inspector/InspectorInputAgent.cpp:
+        (WebCore::InspectorInputAgent::InspectorInputAgent):
+        (WebCore::InspectorInputAgent::didCreateFrontendAndBackend):
+        * inspector/InspectorInputAgent.h:
+        * inspector/InspectorInstrumentation.cpp:
+        * inspector/InspectorInstrumentation.h:
+        * inspector/InspectorLayerTreeAgent.cpp:
+        (WebCore::InspectorLayerTreeAgent::InspectorLayerTreeAgent):
+        (WebCore::InspectorLayerTreeAgent::didCreateFrontendAndBackend):
+        (WebCore::InspectorLayerTreeAgent::layersForNode):
+        (WebCore::InspectorLayerTreeAgent::gatherLayersUsingRenderObjectHierarchy):
+        (WebCore::InspectorLayerTreeAgent::gatherLayersUsingRenderLayerHierarchy):
+        (WebCore::InspectorLayerTreeAgent::buildObjectForLayer):
+        (WebCore::InspectorLayerTreeAgent::buildObjectForIntRect):
+        (WebCore::InspectorLayerTreeAgent::reasonsForCompositingLayer):
+        * inspector/InspectorLayerTreeAgent.h:
+        * inspector/InspectorMemoryAgent.cpp:
+        (WebCore::InspectorMemoryAgent::didCreateFrontendAndBackend):
+        (WebCore::InspectorMemoryAgent::InspectorMemoryAgent):
+        * inspector/InspectorMemoryAgent.h:
+        * inspector/InspectorOverlay.cpp:
+        (WebCore::buildObjectForShapeOutside):
+        * inspector/InspectorOverlay.h:
+        * inspector/InspectorOverlayPage.js:
+        (_drawShapeHighlight):
+        * inspector/InspectorPageAgent.cpp:
+        (WebCore::InspectorPageAgent::resourceTypeJson):
+        (WebCore::InspectorPageAgent::cachedResourceTypeJson):
+        (WebCore::InspectorPageAgent::InspectorPageAgent):
+        (WebCore::InspectorPageAgent::didCreateFrontendAndBackend):
+        (WebCore::buildObjectForCookie):
+        (WebCore::buildArrayForCookies):
+        (WebCore::InspectorPageAgent::getCookies):
+        (WebCore::InspectorPageAgent::getResourceTree):
+        (WebCore::InspectorPageAgent::searchInResource):
+        (WebCore::buildObjectForSearchResult):
+        (WebCore::InspectorPageAgent::searchInResources):
+        (WebCore::InspectorPageAgent::buildObjectForFrame):
+        (WebCore::InspectorPageAgent::buildObjectForFrameTree):
+        * inspector/InspectorPageAgent.h:
+        * inspector/InspectorProfilerAgent.cpp:
+        (WebCore::InspectorProfilerAgent::InspectorProfilerAgent):
+        (WebCore::InspectorProfilerAgent::createProfileHeader):
+        (WebCore::InspectorProfilerAgent::createSnapshotHeader):
+        (WebCore::InspectorProfilerAgent::getProfileHeaders):
+        (WebCore::InspectorProfilerAgent::getCPUProfile):
+        (WebCore::InspectorProfilerAgent::didCreateFrontendAndBackend):
+        (WebCore::InspectorProfilerAgent::getObjectByHeapObjectId):
+        (WebCore::InspectorProfilerAgent::getHeapObjectId):
+        * inspector/InspectorProfilerAgent.h:
+        * inspector/InspectorResourceAgent.cpp:
+        (WebCore::InspectorResourceAgent::didCreateFrontendAndBackend):
+        (WebCore::buildObjectForTiming):
+        (WebCore::buildObjectForResourceRequest):
+        (WebCore::buildObjectForResourceResponse):
+        (WebCore::buildObjectForCachedResource):
+        (WebCore::InspectorResourceAgent::willSendRequest):
+        (WebCore::InspectorResourceAgent::didReceiveResponse):
+        (WebCore::InspectorResourceAgent::didLoadResourceFromMemoryCache):
+        (WebCore::InspectorResourceAgent::buildInitiatorObject):
+        (WebCore::InspectorResourceAgent::willSendWebSocketHandshakeRequest):
+        (WebCore::InspectorResourceAgent::didReceiveWebSocketHandshakeResponse):
+        (WebCore::InspectorResourceAgent::didReceiveWebSocketFrame):
+        (WebCore::InspectorResourceAgent::didSendWebSocketFrame):
+        (WebCore::InspectorResourceAgent::InspectorResourceAgent):
+        * inspector/InspectorResourceAgent.h:
+        * inspector/InspectorRuntimeAgent.cpp:
+        (WebCore::InspectorRuntimeAgent::InspectorRuntimeAgent):
+        (WebCore::buildErrorRangeObject):
+        (WebCore::InspectorRuntimeAgent::parse):
+        (WebCore::InspectorRuntimeAgent::evaluate):
+        (WebCore::InspectorRuntimeAgent::callFunctionOn):
+        (WebCore::InspectorRuntimeAgent::getProperties):
+        * inspector/InspectorRuntimeAgent.h:
+        * inspector/InspectorStyleSheet.cpp:
+        (WebCore::buildSourceRangeObject):
+        (WebCore::buildMediaObject):
+        (WebCore::fillMediaListChain):
+        (WebCore::InspectorStyle::buildObjectForStyle):
+        (WebCore::InspectorStyle::buildArrayForComputedStyle):
+        (WebCore::InspectorStyle::styleWithProperties):
+        (WebCore::InspectorStyleSheet::create):
+        (WebCore::InspectorStyleSheet::InspectorStyleSheet):
+        (WebCore::InspectorStyleSheet::buildObjectForStyleSheet):
+        (WebCore::InspectorStyleSheet::buildObjectForStyleSheetInfo):
+        (WebCore::selectorsFromSource):
+        (WebCore::InspectorStyleSheet::buildObjectForSelectorList):
+        (WebCore::InspectorStyleSheet::buildObjectForRule):
+        (WebCore::InspectorStyleSheet::buildObjectForStyle):
+        (WebCore::InspectorStyleSheet::resourceStyleSheetText):
+        (WebCore::InspectorStyleSheet::buildArrayForRuleList):
+        (WebCore::InspectorStyleSheetForInlineStyle::create):
+        (WebCore::InspectorStyleSheetForInlineStyle::InspectorStyleSheetForInlineStyle):
+        * inspector/InspectorStyleSheet.h:
+        (WebCore::InspectorCSSId::InspectorCSSId):
+        (WebCore::InspectorStyleSheet::canBind):
+        * inspector/InspectorStyleTextEditor.cpp:
+        * inspector/InspectorTimelineAgent.cpp:
+        (WebCore::InspectorTimelineAgent::didCreateFrontendAndBackend):
+        (WebCore::toProtocol):
+        (WebCore::InspectorTimelineAgent::innerAddRecordToTimeline):
+        (WebCore::InspectorTimelineAgent::setDOMCounters):
+        (WebCore::InspectorTimelineAgent::InspectorTimelineAgent):
+        (WebCore::InspectorTimelineAgent::sendEvent):
+        * inspector/InspectorTimelineAgent.h:
+        (WebCore::InspectorTimelineAgent::TimelineRecordEntry::TimelineRecordEntry):
+        * inspector/InspectorValues.cpp:
+        * inspector/InspectorValues.h:
+        * inspector/InspectorWebAgentBase.h: Added.
+        (WebCore::InspectorAgentBase::InspectorAgentBase):
+        * inspector/InspectorWorkerAgent.cpp:
+        (WebCore::InspectorWorkerAgent::InspectorWorkerAgent):
+        (WebCore::InspectorWorkerAgent::didCreateFrontendAndBackend):
+        * inspector/InspectorWorkerAgent.h:
+        * inspector/InstrumentingAgents.cpp:
+        * inspector/NetworkResourcesData.cpp:
+        * inspector/PageConsoleAgent.cpp:
+        (WebCore::InspectableNode::get):
+        * inspector/PageDebuggerAgent.cpp:
+        * inspector/PageDebuggerAgent.h:
+        * inspector/PageRuntimeAgent.cpp:
+        (WebCore::PageRuntimeAgent::didCreateFrontendAndBackend):
+        * inspector/PageRuntimeAgent.h:
+        * inspector/ScriptArguments.cpp:
+        (WebCore::ScriptArguments::create):
+        (WebCore::ScriptArguments::ScriptArguments):
+        (WebCore::ScriptArguments::argumentAt):
+        (WebCore::ScriptArguments::getFirstArgumentAsString):
+        * inspector/ScriptArguments.h:
+        * inspector/ScriptCallFrame.cpp:
+        (WebCore::ScriptCallFrame::buildInspectorObject):
+        * inspector/ScriptCallFrame.h:
+        * inspector/ScriptCallStack.cpp:
+        (WebCore::ScriptCallStack::buildInspectorArray):
+        * inspector/ScriptCallStack.h:
+        * inspector/ScriptDebugListener.h:
+        * inspector/TimelineRecordFactory.cpp:
+        * inspector/TimelineRecordFactory.h:
+        (WebCore::TimelineRecordFactory::createWebSocketCreateData):
+        (WebCore::TimelineRecordFactory::createGenericWebSocketData):
+        * inspector/WorkerConsoleAgent.cpp:
+        * inspector/WorkerDebuggerAgent.cpp:
+        * inspector/WorkerInspectorController.cpp:
+        * inspector/WorkerInspectorController.h:
+        * inspector/WorkerRuntimeAgent.cpp:
+        (WebCore::WorkerRuntimeAgent::didCreateFrontendAndBackend):
+        * inspector/WorkerRuntimeAgent.h:
+        * inspector/protocol/Runtime.json:
+        * loader/archive/cf/LegacyWebArchive.cpp:
+        (WebCore::LegacyWebArchive::create):
+        (WebCore::LegacyWebArchive::createFromSelection):
+        * loader/cache/CachedImage.h:
+        * loader/cache/CachedResource.h:
+        (WebCore::CachedResource::decodedDataIsPurgeable):
+        * loader/cache/MemoryCache.cpp:
+        (WebCore::MemoryCache::pruneLiveResourcesToSize):
+        * page/Console.cpp:
+        (WebCore::internalAddMessage):
+        * page/ContentSecurityPolicy.cpp:
+        * page/Frame.cpp:
+        * page/FrameView.cpp:
+        (WebCore::paginationModeForRenderStyle):
+        (WebCore::FrameView::FrameView):
+        (WebCore::FrameView::applyPaginationToViewport):
+        * page/FrameView.h:
+        * page/Page.cpp:
+        (WebCore::Page::jettisonStyleResolversInAllDocuments):
+        * page/Page.h:
+        * page/PageConsole.cpp:
+        (WebCore::PageConsole::printSourceURLAndPosition):
+        (WebCore::PageConsole::addMessage):
+        * page/PageConsole.h:
+        * page/Settings.in:
+        * page/animation/CSSPropertyAnimation.cpp:
+        (WebCore::blendFilter):
+        (WebCore::crossfadeBlend):
+        (WebCore::blendFunc):
+        * platform/CrossThreadCopier.cpp:
+        (WebCore::::copy):
+        * platform/CrossThreadCopier.h:
+        * platform/MediaSample.h:
+        (WebCore::MediaSample::isSync):
+        (WebCore::MediaSample::isNonDisplaying):
+        * platform/SharedBuffer.cpp:
+        (WebCore::SharedBuffer::createPurgeableBuffer):
+        * platform/SharedBuffer.h:
+        * platform/glib: Added.
+        * platform/glib/BatteryProviderUPower.cpp: Added.
+        (powerDeviceAlterationCallback):
+        (BatteryProviderUPower::BatteryProviderUPower):
+        (BatteryProviderUPower::startUpdating):
+        (BatteryProviderUPower::stopUpdating):
+        (BatteryProviderUPower::updateBatteryStatus):
+        * platform/glib/BatteryProviderUPower.h: Added.
+        * platform/glib/BatteryProviderUPowerClient.h: Added.
+        * platform/graphics/BitmapImage.cpp:
+        (WebCore::BitmapImage::destroyDecodedDataIfNecessary):
+        * platform/graphics/BitmapImage.h:
+        * platform/graphics/Font.cpp:
+        (WebCore::clearWidthCaches):
+        * platform/graphics/Font.h:
+        * platform/graphics/GlyphMetricsMap.h:
+        * platform/graphics/Image.h:
+        (WebCore::Image::decodedDataIsPurgeable):
+        * platform/graphics/MediaPlayer.cpp:
+        (WebCore::installedMediaEngines):
+        (WebCore::MediaPlayer::totalVideoFrames):
+        (WebCore::MediaPlayer::droppedVideoFrames):
+        (WebCore::MediaPlayer::corruptedVideoFrames):
+        (WebCore::MediaPlayer::totalFrameDelay):
+        * platform/graphics/MediaPlayer.h:
+        * platform/graphics/MediaPlayerPrivate.h:
+        (WebCore::MediaPlayerPrivateInterface::seekWithTolerance):
+        (WebCore::MediaPlayerPrivateInterface::totalVideoFrames):
+        (WebCore::MediaPlayerPrivateInterface::droppedVideoFrames):
+        (WebCore::MediaPlayerPrivateInterface::corruptedVideoFrames):
+        (WebCore::MediaPlayerPrivateInterface::totalFrameDelay):
+        * platform/graphics/avfoundation/objc/AudioTrackPrivateMediaSourceAVFObjC.cpp: Added.
+        (WebCore::AudioTrackPrivateMediaSourceAVFObjC::AudioTrackPrivateMediaSourceAVFObjC):
+        (WebCore::AudioTrackPrivateMediaSourceAVFObjC::resetPropertiesFromTrack):
+        (WebCore::AudioTrackPrivateMediaSourceAVFObjC::setAssetTrack):
+        (WebCore::AudioTrackPrivateMediaSourceAVFObjC::assetTrack):
+        (WebCore::AudioTrackPrivateMediaSourceAVFObjC::enabled):
+        (WebCore::AudioTrackPrivateMediaSourceAVFObjC::setEnabled):
+        * platform/graphics/avfoundation/objc/AudioTrackPrivateMediaSourceAVFObjC.h: Added.
+        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h: Added.
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setLoadingProgresssed):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setHasAvailableVideoFrame):
+        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm: Added.
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::MediaPlayerPrivateMediaSourceAVFObjC):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::~MediaPlayerPrivateMediaSourceAVFObjC):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::registerMediaEngine):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::create):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::isAvailable):
+        (WebCore::mimeTypeCache):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::getSupportedTypes):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::supportsType):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::load):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::cancelLoad):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::prepareToPlay):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::platformMedia):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::platformLayer):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::play):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::playInternal):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::pause):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::pauseInternal):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::paused):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::supportsScanning):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::naturalSize):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::hasVideo):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::hasAudio):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setVisible):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::durationDouble):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::currentTimeDouble):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::startTimeDouble):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::initialTime):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::seekWithTolerance):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::seekInternal):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::seeking):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setRateDouble):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::networkState):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::readyState):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::seekable):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::maxTimeSeekableDouble):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::minTimeSeekable):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::buffered):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::didLoadingProgress):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setSize):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::paint):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::paintCurrentFrameInContext):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::hasAvailableVideoFrame):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::supportsAcceleratedRendering):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::acceleratedRenderingStateChanged):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::movieLoadType):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::prepareForRendering):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::engineDescription):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::languageOfPrimaryAudioTrack):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::extraMemoryCost):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::totalVideoFrames):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::droppedVideoFrames):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::corruptedVideoFrames):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::totalFrameDelay):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::ensureLayer):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::destroyLayer):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::durationChanged):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setReadyState):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setNetworkState):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::addDisplayLayer):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::removeDisplayLayer):
+        * platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.h: Added.
+        * platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.mm: Added.
+        (WebCore::MediaSourcePrivateAVFObjC::create):
+        (WebCore::MediaSourcePrivateAVFObjC::MediaSourcePrivateAVFObjC):
+        (WebCore::MediaSourcePrivateAVFObjC::~MediaSourcePrivateAVFObjC):
+        (WebCore::MediaSourcePrivateAVFObjC::addSourceBuffer):
+        (WebCore::MediaSourcePrivateAVFObjC::removeSourceBuffer):
+        (WebCore::MediaSourcePrivateAVFObjC::duration):
+        (WebCore::MediaSourcePrivateAVFObjC::setDuration):
+        (WebCore::MediaSourcePrivateAVFObjC::markEndOfStream):
+        (WebCore::MediaSourcePrivateAVFObjC::unmarkEndOfStream):
+        (WebCore::MediaSourcePrivateAVFObjC::readyState):
+        (WebCore::MediaSourcePrivateAVFObjC::setReadyState):
+        (WebCore::MediaSourcePrivateAVFObjC::sourceBufferPrivateDidChangeActiveState):
+        (WebCore::MediaSourcePrivateAVFObjCHasAudio):
+        (WebCore::MediaSourcePrivateAVFObjC::hasAudio):
+        (WebCore::MediaSourcePrivateAVFObjCHasVideo):
+        (WebCore::MediaSourcePrivateAVFObjC::hasVideo):
+        (WebCore::MediaSourcePrivateAVFObjC::seekToTime):
+        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h: Added.
+        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm: Added.
+        (-[WebAVStreamDataParserListener initWithParser:parent:WebCore::]):
+        (-[WebAVStreamDataParserListener dealloc]):
+        (-[WebAVStreamDataParserListener streamDataParser:didParseStreamDataAsAsset:]):
+        (-[WebAVStreamDataParserListener streamDataParser:didFailToParseStreamDataWithError:]):
+        (-[WebAVStreamDataParserListener streamDataParser:didProvideMediaData:forTrackID:mediaType:flags:]):
+        (-[WebAVStreamDataParserListener streamDataParser:didReachEndOfTrackWithTrackID:mediaType:]):
+        (WebCore::MediaSampleAVFObjC::platformSample):
+        (WebCore::CMSampleBufferIsRandomAccess):
+        (WebCore::MediaSampleAVFObjC::flags):
+        (WebCore::SourceBufferPrivateAVFObjC::create):
+        (WebCore::SourceBufferPrivateAVFObjC::SourceBufferPrivateAVFObjC):
+        (WebCore::SourceBufferPrivateAVFObjC::~SourceBufferPrivateAVFObjC):
+        (WebCore::SourceBufferPrivateAVFObjC::didParseStreamDataAsAsset):
+        (WebCore::SourceBufferPrivateAVFObjC::didFailToParseStreamDataWithError):
+        (WebCore::callProcessCodedFrameForEachSample):
+        (WebCore::SourceBufferPrivateAVFObjC::didProvideMediaDataForTrackID):
+        (WebCore::SourceBufferPrivateAVFObjC::processCodedFrame):
+        (WebCore::SourceBufferPrivateAVFObjC::didReachEndOfTrackWithTrackID):
+        (WebCore::SourceBufferPrivateAVFObjC::setClient):
+        (WebCore::SourceBufferPrivateAVFObjC::append):
+        (WebCore::SourceBufferPrivateAVFObjC::abort):
+        (WebCore::SourceBufferPrivateAVFObjC::removedFromMediaSource):
+        (WebCore::SourceBufferPrivateAVFObjC::readyState):
+        (WebCore::SourceBufferPrivateAVFObjC::setReadyState):
+        (WebCore::SourceBufferPrivateAVFObjC::evictCodedFrames):
+        (WebCore::SourceBufferPrivateAVFObjC::isFull):
+        (WebCore::SourceBufferPrivateAVFObjC::hasVideo):
+        (WebCore::SourceBufferPrivateAVFObjC::hasAudio):
+        (WebCore::SourceBufferPrivateAVFObjC::trackDidChangeEnabled):
+        (WebCore::createNonDisplayingCopy):
+        (WebCore::SourceBufferPrivateAVFObjC::flushAndEnqueueNonDisplayingSamples):
+        (WebCore::SourceBufferPrivateAVFObjC::enqueueSample):
+        (WebCore::SourceBufferPrivateAVFObjC::isReadyForMoreSamples):
+        (WebCore::SourceBufferPrivateAVFObjC::setActive):
+        (WebCore::SourceBufferPrivateAVFObjC::fastSeekTimeForMediaTime):
+        (WebCore::SourceBufferPrivateAVFObjC::seekToTime):
+        * platform/graphics/avfoundation/objc/VideoTrackPrivateMediaSourceAVFObjC.h: Added.
+        * platform/graphics/gstreamer/TextCombinerGStreamer.cpp:
+        (webkitTextCombinerPadGetProperty):
+        (webkitTextCombinerPadEvent):
+        * platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp:
+        (WebCore::TrackPrivateBaseGStreamer::TrackPrivateBaseGStreamer):
+        (WebCore::TrackPrivateBaseGStreamer::disconnect):
+        (WebCore::TrackPrivateBaseGStreamer::tagsChanged):
+        (WebCore::TrackPrivateBaseGStreamer::notifyTrackOfTagsChanged):
+        * platform/graphics/gstreamer/TrackPrivateBaseGStreamer.h:
+        * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
+        (ResourceHandleStreamingClient::didReceiveData):
+        (ResourceHandleStreamingClient::didReceiveBuffer):
+        * platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
+        (WebCore::GraphicsContext3D::texSubImage2D):
+        * platform/gtk/UserAgentGtk.cpp:
+        (WebCore::cpuDescriptionForUAString):
+        (WebCore::platformVersionForUAString):
+        (WebCore::standardUserAgent):
+        * platform/gtk/WidgetBackingStoreGtkX11.cpp:
+        (WebCore::WidgetBackingStoreGtkX11::~WidgetBackingStoreGtkX11):
+        * platform/mac/MemoryPressureHandlerMac.mm:
+        (WebCore::MemoryPressureHandler::releaseMemory):
+        * platform/mac/PlatformClockCM.h:
+        * platform/mac/ScrollbarThemeMac.mm:
+        (WebCore::ScrollbarThemeMac::scrollbarThickness):
+        (WebCore::ScrollbarThemeMac::updateScrollbarOverlayStyle):
+        (WebCore::ScrollbarThemeMac::minimumThumbLength):
+        (WebCore::ScrollbarThemeMac::updateEnabledState):
+        (WebCore::ScrollbarThemeMac::setPaintCharacteristicsForScrollbar):
+        (WebCore::scrollbarPainterPaint):
+        * platform/mac/SoftLinking.h:
+        * platform/mediastream/RTCPeerConnectionHandler.cpp:
+        (WebCore::RTCPeerConnectionHandler::incompatibleConstraintsErrorName):
+        (WebCore::RTCPeerConnectionHandler::invalidSessionDescriptionErrorName):
+        (WebCore::RTCPeerConnectionHandler::incompatibleSessionDescriptionErrorName):
+        (WebCore::RTCPeerConnectionHandler::internalErrorName):
+        * platform/mediastream/RTCPeerConnectionHandler.h:
+        * platform/mock/RTCNotifiersMock.cpp:
+        (WebCore::SessionRequestNotifier::SessionRequestNotifier):
+        (WebCore::SessionRequestNotifier::fire):
+        (WebCore::VoidRequestNotifier::VoidRequestNotifier):
+        (WebCore::VoidRequestNotifier::fire):
+        * platform/mock/RTCNotifiersMock.h:
+        * platform/mock/RTCPeerConnectionHandlerMock.cpp:
+        (WebCore::RTCPeerConnectionHandlerMock::createOffer):
+        (WebCore::RTCPeerConnectionHandlerMock::createAnswer):
+        * platform/mock/mediasource/MockBox.h:
+        * platform/mock/mediasource/MockMediaPlayerMediaSource.cpp:
+        (WebCore::MockMediaPlayerMediaSource::setNetworkState):
+        (WebCore::MockMediaPlayerMediaSource::totalVideoFrames):
+        (WebCore::MockMediaPlayerMediaSource::droppedVideoFrames):
+        (WebCore::MockMediaPlayerMediaSource::corruptedVideoFrames):
+        (WebCore::MockMediaPlayerMediaSource::totalFrameDelay):
+        * platform/mock/mediasource/MockMediaPlayerMediaSource.h:
+        * platform/mock/mediasource/MockMediaSourcePrivate.cpp:
+        (WebCore::MockMediaSourcePrivate::MockMediaSourcePrivate):
+        (WebCore::MockMediaSourcePrivate::~MockMediaSourcePrivate):
+        (WebCore::MockMediaSourcePrivate::markEndOfStream):
+        * platform/mock/mediasource/MockMediaSourcePrivate.h:
+        * platform/mock/mediasource/MockSourceBufferPrivate.cpp:
+        (WebCore::MockSourceBufferPrivate::MockSourceBufferPrivate):
+        (WebCore::MockSourceBufferPrivate::removedFromMediaSource):
+        (WebCore::MockSourceBufferPrivate::readyState):
+        (WebCore::MockSourceBufferPrivate::setReadyState):
+        (WebCore::MockSourceBufferPrivate::setActive):
+        (WebCore::MockSourceBufferPrivate::enqueueSample):
+        * platform/mock/mediasource/MockSourceBufferPrivate.h:
+        (WebCore::MockSourceBufferPrivate::clearMediaSource):
+        * platform/network/ResourceHandle.cpp:
+        * platform/network/ResourceHandle.h:
+        * platform/network/ResourceHandleClient.cpp:
+        (WebCore::ResourceHandleClient::willCacheResponseAsync):
+        * platform/network/ResourceHandleClient.h:
+        * platform/network/ResourceHandleInternal.h:
+        (WebCore::ResourceHandleInternal::ResourceHandleInternal):
+        * platform/network/cf/ResourceHandleCFNet.cpp:
+        (WebCore::ResourceHandleInternal::~ResourceHandleInternal):
+        (WebCore::ResourceHandle::createCFURLConnection):
+        (WebCore::ResourceHandle::start):
+        (WebCore::ResourceHandle::shouldUseCredentialStorage):
+        (WebCore::ResourceHandle::canAuthenticateAgainstProtectionSpace):
+        (WebCore::ResourceHandle::continueWillSendRequest):
+        (WebCore::ResourceHandle::continueDidReceiveResponse):
+        (WebCore::ResourceHandle::continueShouldUseCredentialStorage):
+        (WebCore::ResourceHandle::continueCanAuthenticateAgainstProtectionSpace):
+        (WebCore::ResourceHandle::continueWillCacheResponse):
+        * platform/network/cf/ResourceHandleCFURLConnectionDelegate.cpp: Added.
+        (WebCore::ResourceHandleCFURLConnectionDelegate::ResourceHandleCFURLConnectionDelegate):
+        (WebCore::ResourceHandleCFURLConnectionDelegate::~ResourceHandleCFURLConnectionDelegate):
+        (WebCore::ResourceHandleCFURLConnectionDelegate::releaseHandle):
+        (WebCore::ResourceHandleCFURLConnectionDelegate::willSendRequestCallback):
+        (WebCore::ResourceHandleCFURLConnectionDelegate::didReceiveResponseCallback):
+        (WebCore::ResourceHandleCFURLConnectionDelegate::didReceiveDataCallback):
+        (WebCore::ResourceHandleCFURLConnectionDelegate::didFinishLoadingCallback):
+        (WebCore::ResourceHandleCFURLConnectionDelegate::didFailCallback):
+        (WebCore::ResourceHandleCFURLConnectionDelegate::willCacheResponseCallback):
+        (WebCore::ResourceHandleCFURLConnectionDelegate::didReceiveChallengeCallback):
+        (WebCore::ResourceHandleCFURLConnectionDelegate::didSendBodyDataCallback):
+        (WebCore::ResourceHandleCFURLConnectionDelegate::shouldUseCredentialStorageCallback):
+        (WebCore::ResourceHandleCFURLConnectionDelegate::canRespondToProtectionSpaceCallback):
+        (WebCore::ResourceHandleCFURLConnectionDelegate::didReceiveDataArrayCallback):
+        (WebCore::ResourceHandleCFURLConnectionDelegate::synthesizeRedirectResponseIfNecessary):
+        (WebCore::ResourceHandleCFURLConnectionDelegate::createResourceRequest):
+        (WebCore::ResourceHandleCFURLConnectionDelegate::makeConnectionClient):
+        * platform/network/cf/ResourceHandleCFURLConnectionDelegate.h: Added.
+        * platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp: Added.
+        (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::ResourceHandleCFURLConnectionDelegateWithOperationQueue):
+        (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::~ResourceHandleCFURLConnectionDelegateWithOperationQueue):
+        (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::hasHandle):
+        (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::setupRequest):
+        (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::setupConnectionScheduling):
+        (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::willSendRequest):
+        (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveResponse):
+        (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveData):
+        (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didFinishLoading):
+        (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didFail):
+        (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::willCacheResponse):
+        (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveChallenge):
+        (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didSendBodyData):
+        (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::shouldUseCredentialStorage):
+        (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::canRespondToProtectionSpace):
+        (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveDataArray):
+        (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::continueWillSendRequest):
+        (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::continueDidReceiveResponse):
+        (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::continueShouldUseCredentialStorage):
+        (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::continueWillCacheResponse):
+        (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::continueCanAuthenticateAgainstProtectionSpace):
+        * platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.h: Added.
+        * platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.cpp: Added.
+        (WebCore::SynchronousResourceHandleCFURLConnectionDelegate::SynchronousResourceHandleCFURLConnectionDelegate):
+        (WebCore::SynchronousResourceHandleCFURLConnectionDelegate::setupRequest):
+        (WebCore::SynchronousResourceHandleCFURLConnectionDelegate::setupConnectionScheduling):
+        (WebCore::SynchronousResourceHandleCFURLConnectionDelegate::willSendRequest):
+        (WebCore::setDefaultMIMEType):
+        (WebCore::SynchronousResourceHandleCFURLConnectionDelegate::didReceiveResponse):
+        (WebCore::SynchronousResourceHandleCFURLConnectionDelegate::didReceiveData):
+        (WebCore::SynchronousResourceHandleCFURLConnectionDelegate::didFinishLoading):
+        (WebCore::SynchronousResourceHandleCFURLConnectionDelegate::didFail):
+        (WebCore::SynchronousResourceHandleCFURLConnectionDelegate::willCacheResponse):
+        (WebCore::SynchronousResourceHandleCFURLConnectionDelegate::didReceiveChallenge):
+        (WebCore::SynchronousResourceHandleCFURLConnectionDelegate::didSendBodyData):
+        (WebCore::SynchronousResourceHandleCFURLConnectionDelegate::shouldUseCredentialStorage):
+        (WebCore::SynchronousResourceHandleCFURLConnectionDelegate::canRespondToProtectionSpace):
+        (WebCore::SynchronousResourceHandleCFURLConnectionDelegate::didReceiveDataArray):
+        (WebCore::SynchronousResourceHandleCFURLConnectionDelegate::continueWillSendRequest):
+        (WebCore::SynchronousResourceHandleCFURLConnectionDelegate::continueDidReceiveResponse):
+        (WebCore::SynchronousResourceHandleCFURLConnectionDelegate::continueShouldUseCredentialStorage):
+        (WebCore::SynchronousResourceHandleCFURLConnectionDelegate::continueWillCacheResponse):
+        (WebCore::SynchronousResourceHandleCFURLConnectionDelegate::continueCanAuthenticateAgainstProtectionSpace):
+        * platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.h: Added.
+        * platform/network/curl/CurlCacheEntry.cpp:
+        (WebCore::CurlCacheEntry::generateBaseFilename):
+        * platform/network/mac/CertificateInfo.h: Added.
+        (WebCore::CertificateInfo::setCertificateChain):
+        (WebCore::CertificateInfo::certificateChain):
+        * platform/network/mac/CertificateInfoMac.mm: Added.
+        (WebCore::CertificateInfo::CertificateInfo):
+        (WebCore::CertificateInfo::dump):
+        * platform/network/mac/WebCoreResourceHandleAsDelegate.mm:
+        (-[WebCoreResourceHandleAsDelegate connection:willCacheResponse:]):
+        * platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:
+        (-[WebCoreResourceHandleAsOperationQueueDelegate connection:willCacheResponse:]):
+        * platform/network/soup/CertificateInfo.cpp: Added.
+        (WebCore::CertificateInfo::CertificateInfo):
+        (WebCore::CertificateInfo::~CertificateInfo):
+        * platform/network/soup/CertificateInfo.h: Added.
+        (WebCore::CertificateInfo::certificate):
+        (WebCore::CertificateInfo::setCertificate):
+        (WebCore::CertificateInfo::tlsErrors):
+        (WebCore::CertificateInfo::setTLSErrors):
+        * platform/network/soup/GOwnPtrSoup.cpp:
+        (WTF::SoupBuffer):
+        * platform/network/soup/GOwnPtrSoup.h:
+        * platform/network/soup/ResourceHandleSoup.cpp:
+        (WebCore::WebCoreSynchronousLoader::didReceiveData):
+        (WebCore::WebCoreSynchronousLoader::didReceiveBuffer):
+        (WebCore::HostTLSCertificateSet::computeCertificateHash):
+        (WebCore::ResourceHandle::ensureReadBuffer):
+        (WebCore::redirectSkipCallback):
+        (WebCore::cleanupSoupRequestOperation):
+        (WebCore::ResourceHandle::currentStreamPosition):
+        (WebCore::nextMultipartResponsePartCallback):
+        (WebCore::sendRequestCallback):
+        (WebCore::readCallback):
+        * platform/soup: Added.
+        * platform/soup/SharedBufferSoup.cpp: Added.
+        (WebCore::SharedBuffer::SharedBuffer):
+        (WebCore::SharedBuffer::wrapSoupBuffer):
+        (WebCore::SharedBuffer::clearPlatformData):
+        (WebCore::SharedBuffer::tryReplaceContentsWithPlatformBuffer):
+        (WebCore::SharedBuffer::maybeTransferPlatformData):
+        (WebCore::SharedBuffer::hasPlatformData):
+        (WebCore::SharedBuffer::platformData):
+        (WebCore::SharedBuffer::platformDataSize):
+        * platform/text/TextBoundaries.cpp:
+        (WebCore::findEndWordBoundary):
+        * platform/text/TextBoundaries.h:
+        * platform/text/mac/TextBoundaries.mm:
+        (WebCore::findEndWordBoundary):
+        * plugins/PluginView.cpp:
+        (WebCore::PluginView::performRequest):
+        * rendering/AutoTableLayout.cpp:
+        (WebCore::AutoTableLayout::recalcColumn):
+        * rendering/InlineBox.cpp:
+        (WebCore::InlineBox::previousOnLineExists):
+        * rendering/InlineBox.h:
+        (WebCore::InlineBox::InlineBox):
+        * rendering/InlineElementBox.cpp:
+        * rendering/InlineFlowBox.cpp:
+        (WebCore::InlineFlowBox::~InlineFlowBox):
+        (WebCore::InlineFlowBox::checkConsistency):
+        * rendering/InlineFlowBox.h:
+        (WebCore::InlineFlowBox::InlineFlowBox):
+        (WebCore::InlineFlowBox::setHasBadChildList):
+        * rendering/InlineIterator.h:
+        (WebCore::InlineIterator::InlineIterator):
+        (WebCore::InlineIterator::nextBreakablePosition):
+        (WebCore::InlineIterator::setNextBreakablePosition):
+        * rendering/InlineTextBox.cpp:
+        (WebCore::InlineTextBox::paintCompositionBackground):
+        (WebCore::InlineTextBox::paintDecoration):
+        (WebCore::lineStyleForMarkerType):
+        (WebCore::InlineTextBox::paintDocumentMarkers):
+        * rendering/RenderBlock.cpp:
+        (WebCore::RenderBlock::paint):
+        (WebCore::positionForPointRespectingEditingBoundaries):
+        * rendering/RenderBlock.h:
+        * rendering/RenderBlockFlow.cpp:
+        * rendering/RenderBlockLineLayout.cpp:
+        (WebCore::constructBidiRunsForSegment):
+        * rendering/RenderBox.cpp:
+        (WebCore::RenderBox::borderRadii):
+        (WebCore::RenderBox::paintBoxDecorations):
+        (WebCore::RenderBox::computeRectForRepaint):
+        (WebCore::customContainingBlockWidth):
+        (WebCore::customContainingBlockHeight):
+        (WebCore::customContainingBlockLogicalWidth):
+        (WebCore::customContainingBlockLogicalHeight):
+        (WebCore::customContainingBlockAvailableLogicalHeight):
+        (WebCore::RenderBox::availableLogicalHeightUsing):
+        (WebCore::RenderBox::containingBlockLogicalWidthForPositioned):
+        (WebCore::RenderBox::containingBlockLogicalHeightForPositioned):
+        (WebCore::RenderBox::layoutOverflowRectForPropagation):
+        * rendering/RenderBox.h:
+        * rendering/RenderBoxModelObject.cpp:
+        (WebCore::RenderBoxModelObject::stickyPositionOffset):
+        * rendering/RenderButton.cpp:
+        (WebCore::RenderButton::layout):
+        * rendering/RenderElement.cpp:
+        (WebCore::RenderElement::styleWillChange):
+        (WebCore::RenderElement::styleDidChange):
+        * rendering/RenderEmbeddedObject.cpp:
+        (WebCore::RenderEmbeddedObject::allowsAcceleratedCompositing):
+        (WebCore::RenderEmbeddedObject::setPluginUnavailabilityReason):
+        (WebCore::RenderEmbeddedObject::setPluginUnavailabilityReasonWithDescription):
+        * rendering/RenderFileUploadControl.cpp:
+        (WebCore::nodeHeight):
+        (WebCore::RenderFileUploadControl::maxFilenameWidth):
+        (WebCore::RenderFileUploadControl::paintObject):
+        (WebCore::RenderFileUploadControl::fileTextValue):
+        * rendering/RenderFrameSet.cpp:
+        (WebCore::RenderFrameSet::positionFrames):
+        * rendering/RenderIFrame.h:
+        * rendering/RenderImage.cpp:
+        (WebCore::RenderImage::collectSelectionRects):
+        (WebCore::RenderImage::paintAreaElementFocusRing):
+        * rendering/RenderImage.h:
+        * rendering/RenderImageResource.cpp:
+        (WebCore::RenderImageResource::image):
+        * rendering/RenderImageResource.h:
+        * rendering/RenderImageResourceStyleImage.h:
+        * rendering/RenderInline.cpp:
+        (WebCore::RenderInline::absoluteQuadsForSelection):
+        * rendering/RenderInline.h:
+        * rendering/RenderLayer.cpp:
+        (WebCore::RenderLayer::RenderLayer):
+        (WebCore::RenderLayer::~RenderLayer):
+        (WebCore::RenderLayer::willBeDestroyed):
+        (WebCore::RenderLayer::hasAcceleratedTouchScrolling):
+        (WebCore::RenderLayer::handleTouchEvent):
+        (WebCore::RenderLayer::registerAsTouchEventListenerForScrolling):
+        (WebCore::RenderLayer::unregisterAsTouchEventListenerForScrolling):
+        (WebCore::RenderLayer::updateNeedsCompositedScrolling):
+        (WebCore::RenderLayer::scrollTo):
+        (WebCore::RenderLayer::scrollRectToVisible):
+        (WebCore::RenderLayer::visibleContentRect):
+        (WebCore::RenderLayer::didStartScroll):
+        (WebCore::RenderLayer::didEndScroll):
+        (WebCore::RenderLayer::didUpdateScroll):
+        (WebCore::RenderLayer::invalidateScrollbarRect):
+        (WebCore::RenderLayer::invalidateScrollCornerRect):
+        (WebCore::RenderLayer::verticalScrollbarWidth):
+        (WebCore::RenderLayer::horizontalScrollbarHeight):
+        (WebCore::RenderLayer::updateScrollInfoAfterLayout):
+        (WebCore::RenderLayer::paintOverflowControls):
+        (WebCore::RenderLayer::calculateClipRects):
+        * rendering/RenderLayer.h:
+        * rendering/RenderLayerBacking.cpp:
+        (WebCore::RenderLayerBacking::createPrimaryGraphicsLayer):
+        (WebCore::RenderLayerBacking::layerWillBeDestroyed):
+        (WebCore::layerOrAncestorIsTransformedOrScrolling):
+        (WebCore::layerOrAncestorIsTransformedOrUsingCompositedScrolling):
+        (WebCore::RenderLayerBacking::shouldClipCompositedBounds):
+        (WebCore::RenderLayerBacking::updateGraphicsLayerConfiguration):
+        (WebCore::RenderLayerBacking::updateGraphicsLayerGeometry):
+        (WebCore::RenderLayerBacking::registerScrollingLayers):
+        (WebCore::RenderLayerBacking::updateScrollingLayers):
+        (WebCore::RenderLayerBacking::containsPaintedContent):
+        (WebCore::RenderLayerBacking::parentForSublayers):
+        (WebCore::RenderLayerBacking::paintsIntoWindow):
+        (WebCore::RenderLayerBacking::setContentsNeedDisplayInRect):
+        (WebCore::RenderLayerBacking::paintIntoLayer):
+        * rendering/RenderLayerBacking.h:
+        * rendering/RenderLayerCompositor.cpp:
+        (WebCore::RenderLayerCompositor::scheduleLayerFlush):
+        (WebCore::RenderLayerCompositor::chromeClient):
+        (WebCore::RenderLayerCompositor::flushPendingLayerChanges):
+        (WebCore::scrollbarHasDisplayNone):
+        (WebCore::updateScrollingLayerWithClient):
+        (WebCore::RenderLayerCompositor::updateCustomLayersAfterFlush):
+        (WebCore::RenderLayerCompositor::didFlushChangesForLayer):
+        (WebCore::RenderLayerCompositor::didChangeVisibleRect):
+        (WebCore::RenderLayerCompositor::addToOverlapMap):
+        (WebCore::RenderLayerCompositor::computeCompositingRequirements):
+        (WebCore::RenderLayerCompositor::setIsInWindow):
+        (WebCore::RenderLayerCompositor::allowsIndependentlyCompositedFrames):
+        (WebCore::RenderLayerCompositor::requiresCompositingLayer):
+        (WebCore::RenderLayerCompositor::requiresOwnBackingStore):
+        (WebCore::RenderLayerCompositor::reasonsForCompositing):
+        (WebCore::RenderLayerCompositor::requiresCompositingForAnimation):
+        (WebCore::RenderLayerCompositor::requiresCompositingForScrolling):
+        (WebCore::isStickyInAcceleratedScrollingLayerOrViewport):
+        (WebCore::isViewportConstrainedFixedOrStickyLayer):
+        (WebCore::RenderLayerCompositor::requiresCompositingForPosition):
+        (WebCore::RenderLayerCompositor::contentsScaleMultiplierForNewTiles):
+        (WebCore::RenderLayerCompositor::ensureRootLayer):
+        (WebCore::RenderLayerCompositor::computeFixedViewportConstraints):
+        (WebCore::RenderLayerCompositor::computeStickyViewportConstraints):
+        (WebCore::RenderLayerCompositor::registerOrUpdateViewportConstrainedLayer):
+        (WebCore::RenderLayerCompositor::unregisterViewportConstrainedLayer):
+        (WebCore::RenderLayerCompositor::registerAllViewportConstrainedLayers):
+        (WebCore::RenderLayerCompositor::unregisterAllViewportConstrainedLayers):
+        (WebCore::RenderLayerCompositor::registerAllScrollingLayers):
+        (WebCore::RenderLayerCompositor::unregisterAllScrollingLayers):
+        (WebCore::RenderLayerCompositor::scrollingLayerAddedOrUpdated):
+        (WebCore::RenderLayerCompositor::scrollingLayerRemoved):
+        (WebCore::RenderLayerCompositor::startInitialLayerFlushTimerIfNeeded):
+        * rendering/RenderLayerCompositor.h:
+        (WebCore::RenderLayerCompositor::layerForContentShadow):
+        * rendering/RenderLayerFilterInfo.h:
+        * rendering/RenderMenuList.cpp:
+        (WebCore::selectedOptionCount):
+        (WebCore::RenderMenuList::RenderMenuList):
+        (WebCore::RenderMenuList::~RenderMenuList):
+        (WebCore::RenderMenuList::adjustInnerStyle):
+        (RenderMenuList::updateFromElement):
+        (RenderMenuList::setTextFromOption):
+        (RenderMenuList::showPopup):
+        (RenderMenuList::hidePopup):
+        (RenderMenuList::popupDidHide):
+        * rendering/RenderMenuList.h:
+        * rendering/RenderObject.cpp:
+        (WebCore::RenderObject::columnNumberForOffset):
+        (WebCore::RenderObject::collectSelectionRects):
+        (WebCore::RenderObject::destroy):
+        (WebCore::RenderObject::innerLineHeight):
+        (WebCore::RenderObject::willRenderImage):
+        * rendering/RenderObject.h:
+        (WebCore::RenderObject::absoluteQuadsForSelection):
+        * rendering/RenderQuote.cpp:
+        (WebCore::RenderQuote::styleDidChange):
+        (WebCore::RenderQuote::updateDepth):
+        * rendering/RenderScrollbar.h:
+        * rendering/RenderSearchField.cpp:
+        (WebCore::RenderSearchField::itemText):
+        * rendering/RenderText.cpp:
+        (WebCore::originalTextMap):
+        (WebCore::RenderText::RenderText):
+        (WebCore::RenderText::~RenderText):
+        (WebCore::RenderText::styleDidChange):
+        (WebCore::RenderText::originalText):
+        (WebCore::RenderText::collectSelectionRects):
+        (WebCore::RenderText::setTextInternal):
+        (WebCore::RenderText::setText):
+        * rendering/RenderText.h:
+        * rendering/RenderTextControl.cpp:
+        (WebCore::RenderTextControl::adjustInnerTextStyle):
+        (WebCore::RenderTextControl::canScroll):
+        (WebCore::RenderTextControl::innerLineHeight):
+        * rendering/RenderTextControl.h:
+        * rendering/RenderTextControlMultiLine.cpp:
+        (WebCore::RenderTextControlMultiLine::getAvgCharWidth):
+        (WebCore::RenderTextControlMultiLine::createInnerTextStyle):
+        * rendering/RenderTextControlSingleLine.cpp:
+        (WebCore::RenderTextControlSingleLine::layout):
+        (WebCore::RenderTextControlSingleLine::getAvgCharWidth):
+        (WebCore::RenderTextControlSingleLine::preferredContentLogicalWidth):
+        * rendering/RenderTextFragment.cpp:
+        * rendering/RenderTextFragment.h:
+        * rendering/RenderTextLineBoxes.cpp:
+        (WebCore::lineDirectionPointFitsInBox):
+        (WebCore::RenderTextLineBoxes::positionForPoint):
+        * rendering/RenderTheme.cpp:
+        (WebCore::RenderTheme::adjustStyle):
+        (WebCore::RenderTheme::paintBorderOnly):
+        (WebCore::RenderTheme::paintDecorations):
+        * rendering/RenderTheme.h:
+        (WebCore::RenderTheme::paintCheckboxDecorations):
+        (WebCore::RenderTheme::paintRadioDecorations):
+        (WebCore::RenderTheme::paintButtonDecorations):
+        (WebCore::RenderTheme::paintTextFieldDecorations):
+        (WebCore::RenderTheme::paintTextAreaDecorations):
+        (WebCore::RenderTheme::paintMenuListDecorations):
+        (WebCore::RenderTheme::paintPushButtonDecorations):
+        (WebCore::RenderTheme::paintSquareButtonDecorations):
+        (WebCore::RenderTheme::paintFileUploadIconDecorations):
+        (WebCore::RenderTheme::paintSliderThumbDecorations):
+        (WebCore::RenderTheme::paintSearchFieldDecorations):
+        * rendering/RenderThemeIOS.h: Added.
+        (WebCore::RenderThemeIOS::~RenderThemeIOS):
+        * rendering/RenderThemeIOS.mm: Added.
+        (WebCore::IOSGradient::IOSGradient):
+        (WebCore::interpolateLinearGradient):
+        (WebCore::interpolateExponentialGradient):
+        (WebCore::getSharedFunctionRef):
+        (WebCore::drawAxialGradient):
+        (WebCore::drawRadialGradient):
+        (WebCore::getInsetGradient):
+        (WebCore::getShineGradient):
+        (WebCore::getShadeGradient):
+        (WebCore::getConvexGradient):
+        (WebCore::getConcaveGradient):
+        (WebCore::getSliderTrackGradient):
+        (WebCore::getReadonlySliderTrackGradient):
+        (WebCore::getSliderThumbOpaquePressedGradient):
+        (WebCore::gradientWithName):
+        (WebCore::contentSizeCategoryDidChange):
+        (WebCore::RenderThemeIOS::RenderThemeIOS):
+        (WebCore::RenderTheme::themeForPage):
+        (WebCore::RenderThemeIOS::create):
+        (WebCore::RenderThemeIOS::contentSizeCategory):
+        (WebCore::RenderThemeIOS::shadowColor):
+        (WebCore::RenderThemeIOS::addRoundedBorderClip):
+        (WebCore::RenderThemeIOS::adjustCheckboxStyle):
+        (WebCore::shortened):
+        (WebCore::RenderThemeIOS::paintCheckboxDecorations):
+        (WebCore::RenderThemeIOS::baselinePosition):
+        (WebCore::RenderThemeIOS::isControlStyled):
+        (WebCore::RenderThemeIOS::adjustRadioStyle):
+        (WebCore::RenderThemeIOS::paintRadioDecorations):
+        (WebCore::RenderThemeIOS::paintTextFieldDecorations):
+        (WebCore::RenderThemeIOS::paintTextAreaDecorations):
+        (WebCore::RenderThemeIOS::popupInternalPaddingRight):
+        (WebCore::RenderThemeIOS::adjustRoundBorderRadius):
+        (WebCore::applyCommonButtonPaddingToStyle):
+        (WebCore::adjustSelectListButtonStyle):
+        (WebCore::adjustInputElementButtonStyle):
+        (WebCore::RenderThemeIOS::adjustMenuListButtonStyle):
+        (WebCore::RenderThemeIOS::paintMenuListButtonDecorations):
+        (WebCore::RenderThemeIOS::adjustSliderTrackStyle):
+        (WebCore::RenderThemeIOS::paintSliderTrack):
+        (WebCore::RenderThemeIOS::adjustSliderThumbSize):
+        (WebCore::RenderThemeIOS::paintSliderThumbDecorations):
+        (WebCore::RenderThemeIOS::animationRepeatIntervalForProgressBar):
+        (WebCore::RenderThemeIOS::animationDurationForProgressBar):
+        (WebCore::RenderThemeIOS::paintProgressBar):
+        (WebCore::RenderThemeIOS::sliderTickSize):
+        (WebCore::RenderThemeIOS::sliderTickOffsetFromTrackCenter):
+        (WebCore::RenderThemeIOS::adjustSearchFieldStyle):
+        (WebCore::RenderThemeIOS::paintSearchFieldDecorations):
+        (WebCore::RenderThemeIOS::adjustButtonStyle):
+        (WebCore::RenderThemeIOS::paintButtonDecorations):
+        (WebCore::RenderThemeIOS::paintPushButtonDecorations):
+        (WebCore::RenderThemeIOS::setButtonSize):
+        (WebCore::RenderThemeIOS::paintFileUploadIconDecorations):
+        (WebCore::RenderThemeIOS::platformActiveSelectionBackgroundColor):
+        (WebCore::RenderThemeIOS::platformInactiveSelectionBackgroundColor):
+        (WebCore::RenderThemeIOS::shouldShowPlaceholderWhenFocused):
+        (WebCore::RenderThemeIOS::shouldHaveSpinButton):
+        (WebCore::fromCTFontWeight):
+        (WebCore::RenderThemeIOS::systemFont):
+        (WebCore::RenderThemeIOS::mediaControlsStyleSheet):
+        (WebCore::RenderThemeIOS::mediaControlsScript):
+        * rendering/RenderThemeMac.h:
+        * rendering/RenderThemeMac.mm:
+        * rendering/RenderVideo.cpp:
+        (WebCore::RenderVideo::calculateIntrinsicSize):
+        * rendering/RenderView.cpp:
+        (WebCore::RenderView::availableLogicalHeight):
+        (WebCore::fixedPositionOffset):
+        (WebCore::RenderView::mapLocalToContainer):
+        (WebCore::RenderView::pushMappingToContainer):
+        (WebCore::RenderView::mapAbsoluteToLocalPoint):
+        (WebCore::RenderView::repaintViewRectangle):
+        (WebCore::RenderView::computeRectForRepaint):
+        (WebCore::isFixedPositionInViewport):
+        (WebCore::RenderView::hasCustomFixedPosition):
+        * rendering/RenderView.h:
+        * rendering/RenderWidget.cpp:
+        (WebCore::RenderWidget::willBeDestroyed):
+        * rendering/RootInlineBox.cpp:
+        (WebCore::RootInlineBox::ascentAndDescentForBox):
+        * rendering/break_lines.cpp:
+        * rendering/line/BreakingContextInlineHeaders.h:
+        (WebCore::BreakingContext::handleText):
+        * rendering/line/LineBreaker.h:
+        * rendering/line/LineWidth.cpp:
+        * rendering/shapes/BoxShape.cpp:
+        (WebCore::addRoundedRect):
+        (WebCore::BoxShape::buildDisplayPaths):
+        * rendering/shapes/BoxShape.h:
+        * rendering/shapes/PolygonShape.cpp:
+        (WebCore::addPolygon):
+        (WebCore::PolygonShape::buildDisplayPaths):
+        * rendering/shapes/PolygonShape.h:
+        * rendering/shapes/RasterShape.h:
+        * rendering/shapes/RectangleShape.cpp:
+        (WebCore::RectangleShape::buildDisplayPaths):
+        * rendering/shapes/RectangleShape.h:
+        * rendering/shapes/Shape.h:
+        * rendering/shapes/ShapeInfo.cpp:
+        (WebCore::::computedShape):
+        * rendering/shapes/ShapeInfo.h:
+        (WebCore::ShapeInfo::writingMode):
+        * rendering/shapes/ShapeOutsideInfo.cpp:
+        (WebCore::ShapeOutsideInfo::writingMode):
+        * rendering/shapes/ShapeOutsideInfo.h:
+        * rendering/style/BasicShapes.cpp:
+        (WebCore::BasicShape::canBlend):
+        * rendering/style/RenderStyle.h:
+        * rendering/style/StyleGeneratedImage.cpp:
+        (WebCore::StyleGeneratedImage::StyleGeneratedImage):
+        (WebCore::StyleGeneratedImage::cssValue):
+        (WebCore::StyleGeneratedImage::imageSize):
+        (WebCore::StyleGeneratedImage::image):
+        * rendering/style/StyleGeneratedImage.h:
+        * rendering/style/StyleGridItemData.cpp:
+        (WebCore::StyleGridItemData::StyleGridItemData):
+        * rendering/style/StyleImage.h:
+        * rendering/style/StylePendingImage.h:
+        (WebCore::StylePendingImage::cssImageValue):
+        (WebCore::StylePendingImage::cssImageGeneratorValue):
+        (WebCore::StylePendingImage::cssCursorImageValue):
+        (WebCore::StylePendingImage::cssImageSetValue):
+        (WebCore::StylePendingImage::detachFromCSSValue):
+        * rendering/svg/RenderSVGInlineText.cpp:
+        (WebCore::RenderSVGInlineText::originalText):
+        * rendering/svg/RenderSVGInlineText.h:
+        * svg/SVGDocument.cpp:
+        (WebCore::SVGDocument::cloneDocumentWithoutChildren):
+        * svg/SVGDocument.h:
+        * svg/SVGElement.cpp:
+        (WebCore::SVGElement::computedStyle):
+        * svg/SVGElement.h:
+        * svg/SVGScriptElement.cpp:
+        (WebCore::SVGScriptElement::parseAttribute):
+        (WebCore::SVGScriptElement::typeAttributeValue):
+        (WebCore::SVGScriptElement::isAnimatableAttribute):
+        * svg/SVGScriptElement.h:
+        * svg/SVGScriptElement.idl:
+        * svg/graphics/SVGImage.h:
+        * testing/Internals.cpp:
+        (WebCore::Internals::parserMetaData):
+        (WebCore::Internals::initializeMockMediaSource):
+        * testing/Internals.h:
+        * workers/SharedWorkerGlobalScope.cpp:
+        (WebCore::createConnectEvent):
+        * workers/WorkerGlobalScope.cpp:
+        (WebCore::WorkerGlobalScope::importScripts):
+        * workers/WorkerThread.cpp:
+        * xml/XMLTreeViewer.cpp:
+        * xml/parser/XMLDocumentParser.cpp:
+        * xml/parser/XMLDocumentParser.h:
+        * xml/parser/XMLDocumentParserLibxml2.cpp:
+        (WebCore::XMLDocumentParser::error):
+
</ins><span class="cx"> 2014-01-09  Mark Lam  &lt;mark.lam@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         CStack: Need a separate stack limit for the JS stack and the C stack.
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreConfigurationsVersionxcconfig"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Configurations/Version.xcconfig (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Configurations/Version.xcconfig        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Configurations/Version.xcconfig        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -22,7 +22,7 @@
</span><span class="cx"> // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
</span><span class="cx"> 
</span><span class="cx"> MAJOR_VERSION = 538;
</span><del>-MINOR_VERSION = 9;
</del><ins>+MINOR_VERSION = 10;
</ins><span class="cx"> TINY_VERSION = 0;
</span><span class="cx"> FULL_VERSION = $(MAJOR_VERSION).$(MINOR_VERSION);
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreDerivedSourcesmake"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/DerivedSources.make (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/DerivedSources.make        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/DerivedSources.make        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -103,6 +103,7 @@
</span><span class="cx">     $(WebCore)/Modules/mediasource/SourceBufferList.idl \
</span><span class="cx">         $(WebCore)/Modules/mediasource/TextTrackMediaSource.idl \
</span><span class="cx">         $(WebCore)/Modules/mediasource/VideoTrackMediaSource.idl \
</span><ins>+        $(WebCore)/Modules/mediasource/VideoPlaybackQuality.idl \
</ins><span class="cx">         $(WebCore)/Modules/mediastream/AllVideoCapabilities.idl \
</span><span class="cx">         $(WebCore)/Modules/mediastream/AllAudioCapabilities.idl \
</span><span class="cx">         $(WebCore)/Modules/mediastream/AudioStreamTrack.idl \
</span><span class="lines">@@ -126,10 +127,10 @@
</span><span class="cx">     $(WebCore)/Modules/mediastream/RTCDTMFToneChangeEvent.idl \
</span><span class="cx">     $(WebCore)/Modules/mediastream/RTCDataChannel.idl \
</span><span class="cx">     $(WebCore)/Modules/mediastream/RTCDataChannelEvent.idl \
</span><del>-    $(WebCore)/Modules/mediastream/RTCErrorCallback.idl \
</del><span class="cx">     $(WebCore)/Modules/mediastream/RTCIceCandidate.idl \
</span><span class="cx">     $(WebCore)/Modules/mediastream/RTCIceCandidateEvent.idl \
</span><span class="cx">     $(WebCore)/Modules/mediastream/RTCPeerConnection.idl \
</span><ins>+    $(WebCore)/Modules/mediastream/RTCPeerConnectionErrorCallback.idl \
</ins><span class="cx">     $(WebCore)/Modules/mediastream/RTCSessionDescription.idl \
</span><span class="cx">     $(WebCore)/Modules/mediastream/RTCSessionDescriptionCallback.idl \
</span><span class="cx">     $(WebCore)/Modules/mediastream/RTCStatsCallback.idl \
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreForwardingHeadersbindingsScriptFunctionCallh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/ForwardingHeaders/bindings/ScriptFunctionCall.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/ForwardingHeaders/bindings/ScriptFunctionCall.h                                (rev 0)
+++ branches/jsCStack/Source/WebCore/ForwardingHeaders/bindings/ScriptFunctionCall.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+#ifndef WebCore_FWD_ScriptFunctionCall_h
+#define WebCore_FWD_ScriptFunctionCall_h
+#include &lt;JavaScriptCore/ScriptFunctionCall.h&gt;
+#endif
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreForwardingHeadersbindingsScriptObjecth"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/ForwardingHeaders/bindings/ScriptObject.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/ForwardingHeaders/bindings/ScriptObject.h                                (rev 0)
+++ branches/jsCStack/Source/WebCore/ForwardingHeaders/bindings/ScriptObject.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+#ifndef WebCore_FWD_ScriptObject_h
+#define WebCore_FWD_ScriptObject_h
+#include &lt;JavaScriptCore/ScriptObject.h&gt;
+#endif
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreForwardingHeadersbindingsScriptValueh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/ForwardingHeaders/bindings/ScriptValue.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/ForwardingHeaders/bindings/ScriptValue.h                                (rev 0)
+++ branches/jsCStack/Source/WebCore/ForwardingHeaders/bindings/ScriptValue.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+#ifndef WebCore_FWD_ScriptValue_h
+#define WebCore_FWD_ScriptValue_h
+#include &lt;JavaScriptCore/ScriptValue.h&gt;
+#endif
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreForwardingHeadersinspectorInspectorAgentBaseh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/ForwardingHeaders/inspector/InspectorAgentBase.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/ForwardingHeaders/inspector/InspectorAgentBase.h                                (rev 0)
+++ branches/jsCStack/Source/WebCore/ForwardingHeaders/inspector/InspectorAgentBase.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+#ifndef WebCore_FWD_InspectorAgentBase_h
+#define WebCore_FWD_InspectorAgentBase_h
+#include &lt;JavaScriptCore/InspectorAgentBase.h&gt;
+#endif
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreForwardingHeadersinspectorInspectorAgentRegistryh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/ForwardingHeaders/inspector/InspectorAgentRegistry.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/ForwardingHeaders/inspector/InspectorAgentRegistry.h                                (rev 0)
+++ branches/jsCStack/Source/WebCore/ForwardingHeaders/inspector/InspectorAgentRegistry.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+#ifndef WebCore_FWD_InspectorAgentRegistry_h
+#define WebCore_FWD_InspectorAgentRegistry_h
+#include &lt;JavaScriptCore/InspectorAgentRegistry.h&gt;
+#endif
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreForwardingHeadersinspectorInspectorBackendDispatcherh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/ForwardingHeaders/inspector/InspectorBackendDispatcher.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/ForwardingHeaders/inspector/InspectorBackendDispatcher.h                                (rev 0)
+++ branches/jsCStack/Source/WebCore/ForwardingHeaders/inspector/InspectorBackendDispatcher.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+#ifndef WebCore_FWD_InspectorBackendDispatcher_h
+#define WebCore_FWD_InspectorBackendDispatcher_h
+#include &lt;JavaScriptCore/InspectorBackendDispatcher.h&gt;
+#endif
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreForwardingHeadersinspectorInspectorTypeBuilderh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/ForwardingHeaders/inspector/InspectorTypeBuilder.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/ForwardingHeaders/inspector/InspectorTypeBuilder.h                                (rev 0)
+++ branches/jsCStack/Source/WebCore/ForwardingHeaders/inspector/InspectorTypeBuilder.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+#ifndef WebCore_FWD_InspectorTypeBuilder_h
+#define WebCore_FWD_InspectorTypeBuilder_h
+#include &lt;JavaScriptCore/InspectorTypeBuilder.h&gt;
+#endif
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreForwardingHeadersinspectorInspectorValuesh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/ForwardingHeaders/inspector/InspectorValues.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/ForwardingHeaders/inspector/InspectorValues.h                                (rev 0)
+++ branches/jsCStack/Source/WebCore/ForwardingHeaders/inspector/InspectorValues.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+#ifndef WebCore_FWD_InspectorValues_h
+#define WebCore_FWD_InspectorValues_h
+#include &lt;JavaScriptCore/InspectorValues.h&gt;
+#endif
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreGNUmakefileam"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/GNUmakefile.am (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/GNUmakefile.am        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/GNUmakefile.am        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -33,6 +33,7 @@
</span><span class="cx">         -I$(srcdir)/Source/WebCore/bridge/c \
</span><span class="cx">         -I$(srcdir)/Source/WebCore/bridge/jsc \
</span><span class="cx">         -I$(srcdir)/Source/WebCore/crypto \
</span><ins>+        -I$(srcdir)/Source/WebCore/crypto/keys \
</ins><span class="cx">         -I$(srcdir)/Source/WebCore/css \
</span><span class="cx">         -I$(srcdir)/Source/WebCore/dom \
</span><span class="cx">         -I$(srcdir)/Source/WebCore/dom/default \
</span><span class="lines">@@ -362,8 +363,8 @@
</span><span class="cx"> # All Web Inspector generated files are created with this one call to CodeGeneratorInspector.py
</span><span class="cx"> DerivedSources/WebCore/InspectorBackendDispatchers.cpp: DerivedSources/WebCore/Inspector.json $(WebCore)/inspector/CodeGeneratorInspector.py $(WebCore)/inspector/CodeGeneratorInspectorStrings.py
</span><span class="cx">         $(AM_V_GEN)$(PYTHON) $(WebCore)/inspector/CodeGeneratorInspector.py $&lt; --output_h_dir $(GENSOURCES_WEBCORE) --output_cpp_dir $(GENSOURCES_WEBCORE) --output_js_dir $(GENSOURCES_WEBCORE)
</span><del>-DerivedSources/WebCore/InspectorTypeBuilder.h: DerivedSources/WebCore/InspectorTypeBuilder.cpp
-DerivedSources/WebCore/InspectorTypeBuilder.cpp: DerivedSources/WebCore/InspectorFrontend.h
</del><ins>+DerivedSources/WebCore/InspectorWebTypeBuilders.h: DerivedSources/WebCore/InspectorWebTypeBuilders.cpp
+DerivedSources/WebCore/InspectorWebTypeBuilders.cpp: DerivedSources/WebCore/InspectorFrontend.h
</ins><span class="cx"> DerivedSources/WebCore/InspectorFrontend.h: DerivedSources/WebCore/InspectorFrontend.cpp
</span><span class="cx"> DerivedSources/WebCore/InspectorFrontend.cpp: DerivedSources/WebCore/InspectorBackendCommands.js
</span><span class="cx"> DerivedSources/WebCore/InspectorBackendCommands.js: DerivedSources/WebCore/InspectorBackendDispatchers.h
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreGNUmakefilelistam"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/GNUmakefile.list.am (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/GNUmakefile.list.am        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/GNUmakefile.list.am        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -26,8 +26,8 @@
</span><span class="cx">         DerivedSources/WebCore/InspectorFrontend.cpp \
</span><span class="cx">         DerivedSources/WebCore/InspectorFrontend.h \
</span><span class="cx">         DerivedSources/WebCore/InspectorOverlayPage.h \
</span><del>-        DerivedSources/WebCore/InspectorTypeBuilder.cpp \
-        DerivedSources/WebCore/InspectorTypeBuilder.h \
</del><ins>+        DerivedSources/WebCore/InspectorWebTypeBuilders.cpp \
+        DerivedSources/WebCore/InspectorWebTypeBuilders.h \
</ins><span class="cx">         DerivedSources/WebCore/JSAbstractWorker.cpp \
</span><span class="cx">         DerivedSources/WebCore/JSAbstractWorker.h \
</span><span class="cx">         DerivedSources/WebCore/JSAllAudioCapabilities.cpp \
</span><span class="lines">@@ -611,8 +611,8 @@
</span><span class="cx">         DerivedSources/WebCore/JSRTCDataChannel.h \
</span><span class="cx">         DerivedSources/WebCore/JSRTCDataChannelEvent.cpp \
</span><span class="cx">         DerivedSources/WebCore/JSRTCDataChannelEvent.h \
</span><del>-        DerivedSources/WebCore/JSRTCErrorCallback.cpp \
-        DerivedSources/WebCore/JSRTCErrorCallback.h \
</del><ins>+        DerivedSources/WebCore/JSRTCPeerConnectionErrorCallback.cpp \
+        DerivedSources/WebCore/JSRTCPeerConnectionErrorCallback.h \
</ins><span class="cx">         DerivedSources/WebCore/JSRTCIceCandidate.cpp \
</span><span class="cx">         DerivedSources/WebCore/JSRTCIceCandidate.h \
</span><span class="cx">         DerivedSources/WebCore/JSRTCIceCandidateEvent.cpp \
</span><span class="lines">@@ -735,6 +735,8 @@
</span><span class="cx">         DerivedSources/WebCore/JSValidityState.h \
</span><span class="cx">         DerivedSources/WebCore/JSVoidCallback.cpp \
</span><span class="cx">         DerivedSources/WebCore/JSVoidCallback.h \
</span><ins>+        DerivedSources/WebCore/JSVideoPlaybackQuality.h \
+        DerivedSources/WebCore/JSVideoPlaybackQuality.cpp \
</ins><span class="cx">         DerivedSources/WebCore/JSVideoStreamTrack.h \
</span><span class="cx">         DerivedSources/WebCore/JSVideoStreamTrack.cpp \
</span><span class="cx">         DerivedSources/WebCore/JSVideoTrack.cpp \
</span><span class="lines">@@ -1202,6 +1204,7 @@
</span><span class="cx">         $(WebCore)/Modules/mediasource/MediaSource.idl \
</span><span class="cx">         $(WebCore)/Modules/mediasource/SourceBuffer.idl \
</span><span class="cx">         $(WebCore)/Modules/mediasource/SourceBufferList.idl \
</span><ins>+        $(WebCore)/Modules/mediasource/VideoPlaybackQuality.idl \
</ins><span class="cx">         $(WebCore)/Modules/mediastream/AllVideoCapabilities.idl \
</span><span class="cx">         $(WebCore)/Modules/mediastream/AllAudioCapabilities.idl \
</span><span class="cx">         $(WebCore)/Modules/mediastream/AudioStreamTrack.idl \
</span><span class="lines">@@ -1224,7 +1227,7 @@
</span><span class="cx">         $(WebCore)/Modules/mediastream/RTCDTMFToneChangeEvent.idl \
</span><span class="cx">         $(WebCore)/Modules/mediastream/RTCDataChannel.idl \
</span><span class="cx">         $(WebCore)/Modules/mediastream/RTCDataChannelEvent.idl \
</span><del>-        $(WebCore)/Modules/mediastream/RTCErrorCallback.idl \
</del><ins>+        $(WebCore)/Modules/mediastream/RTCPeerConnectionErrorCallback.idl \
</ins><span class="cx">         $(WebCore)/Modules/mediastream/RTCIceCandidate.idl \
</span><span class="cx">         $(WebCore)/Modules/mediastream/RTCIceCandidateEvent.idl \
</span><span class="cx">         $(WebCore)/Modules/mediastream/RTCPeerConnection.idl \
</span><span class="lines">@@ -1824,6 +1827,7 @@
</span><span class="cx">         Source/WebCore/Modules/indexeddb/IDBDatabaseError.h \
</span><span class="cx">         Source/WebCore/Modules/indexeddb/IDBDatabaseException.cpp \
</span><span class="cx">         Source/WebCore/Modules/indexeddb/IDBDatabaseException.h \
</span><ins>+        Source/WebCore/Modules/indexeddb/IDBDatabaseMetadata.cpp \
</ins><span class="cx">         Source/WebCore/Modules/indexeddb/IDBDatabaseMetadata.h \
</span><span class="cx">         Source/WebCore/Modules/indexeddb/IDBEventDispatcher.cpp \
</span><span class="cx">         Source/WebCore/Modules/indexeddb/IDBEventDispatcher.h \
</span><span class="lines">@@ -1874,8 +1878,6 @@
</span><span class="cx">         Source/WebCore/Modules/indexeddb/WorkerGlobalScopeIndexedDatabase.h \
</span><span class="cx">         Source/WebCore/Modules/mediasource/MediaSource.cpp \
</span><span class="cx">         Source/WebCore/Modules/mediasource/MediaSource.h \
</span><del>-        Source/WebCore/Modules/mediasource/MediaSourceBase.cpp \
-        Source/WebCore/Modules/mediasource/MediaSourceBase.h \
</del><span class="cx">         Source/WebCore/Modules/mediasource/MediaSourceRegistry.cpp \
</span><span class="cx">         Source/WebCore/Modules/mediasource/MediaSourceRegistry.h \
</span><span class="cx">         Source/WebCore/Modules/mediasource/SourceBuffer.cpp \
</span><span class="lines">@@ -1886,6 +1888,8 @@
</span><span class="cx">         Source/WebCore/Modules/mediasource/DOMURLMediaSource.h \
</span><span class="cx">         Source/WebCore/Modules/mediasource/SampleMap.cpp \
</span><span class="cx">         Source/WebCore/Modules/mediasource/SampleMap.h \
</span><ins>+        Source/WebCore/Modules/mediasource/VideoPlaybackQuality.cpp \
+        Source/WebCore/Modules/mediasource/VideoPlaybackQuality.h \
</ins><span class="cx">         Source/WebCore/Modules/mediastream/AllAudioCapabilities.h \
</span><span class="cx">         Source/WebCore/Modules/mediastream/AllVideoCapabilities.h \
</span><span class="cx">         Source/WebCore/Modules/mediastream/AudioStreamTrack.cpp \
</span><span class="lines">@@ -1933,7 +1937,7 @@
</span><span class="cx">         Source/WebCore/Modules/mediastream/RTCDataChannel.h \
</span><span class="cx">         Source/WebCore/Modules/mediastream/RTCDataChannelEvent.cpp \
</span><span class="cx">         Source/WebCore/Modules/mediastream/RTCDataChannelEvent.h \
</span><del>-        Source/WebCore/Modules/mediastream/RTCErrorCallback.h \
</del><ins>+        Source/WebCore/Modules/mediastream/RTCPeerConnectionErrorCallback.h \
</ins><span class="cx">         Source/WebCore/Modules/mediastream/RTCIceCandidate.cpp \
</span><span class="cx">         Source/WebCore/Modules/mediastream/RTCIceCandidate.h \
</span><span class="cx">         Source/WebCore/Modules/mediastream/RTCIceCandidateEvent.cpp \
</span><span class="lines">@@ -2446,11 +2450,9 @@
</span><span class="cx">         Source/WebCore/bindings/js/ScriptController.h \
</span><span class="cx">         Source/WebCore/bindings/js/ScriptDebugServer.cpp \
</span><span class="cx">         Source/WebCore/bindings/js/ScriptDebugServer.h \
</span><del>-        Source/WebCore/bindings/js/ScriptFunctionCall.cpp \
-        Source/WebCore/bindings/js/ScriptFunctionCall.h \
</del><span class="cx">         Source/WebCore/bindings/js/ScriptHeapSnapshot.h \
</span><del>-        Source/WebCore/bindings/js/ScriptObject.cpp \
-        Source/WebCore/bindings/js/ScriptObject.h \
</del><ins>+        Source/WebCore/bindings/js/ScriptGlobalObject.cpp \
+        Source/WebCore/bindings/js/ScriptGlobalObject.h \
</ins><span class="cx">         Source/WebCore/bindings/js/ScriptProfile.cpp \
</span><span class="cx">         Source/WebCore/bindings/js/ScriptProfile.h \
</span><span class="cx">         Source/WebCore/bindings/js/ScriptProfileNode.h \
</span><span class="lines">@@ -2459,8 +2461,6 @@
</span><span class="cx">         Source/WebCore/bindings/js/ScriptSourceCode.h \
</span><span class="cx">         Source/WebCore/bindings/js/ScriptState.cpp \
</span><span class="cx">         Source/WebCore/bindings/js/ScriptState.h \
</span><del>-        Source/WebCore/bindings/js/ScriptValue.cpp \
-        Source/WebCore/bindings/js/ScriptValue.h \
</del><span class="cx">         Source/WebCore/bindings/js/ScriptWrappable.h \
</span><span class="cx">         Source/WebCore/bindings/js/ScriptWrappableInlines.h \
</span><span class="cx">         Source/WebCore/bindings/js/SerializedScriptValue.cpp \
</span><span class="lines">@@ -3781,13 +3781,8 @@
</span><span class="cx">         Source/WebCore/inspector/InjectedScriptModule.h \
</span><span class="cx">         Source/WebCore/inspector/InspectorAgent.cpp \
</span><span class="cx">         Source/WebCore/inspector/InspectorAgent.h \
</span><del>-        Source/WebCore/inspector/InspectorAgentRegistry.cpp \
-        Source/WebCore/inspector/InspectorAgentRegistry.h \
</del><span class="cx">         Source/WebCore/inspector/InspectorApplicationCacheAgent.cpp \
</span><span class="cx">         Source/WebCore/inspector/InspectorApplicationCacheAgent.h \
</span><del>-        Source/WebCore/inspector/InspectorBackendDispatcher.cpp \
-        Source/WebCore/inspector/InspectorBackendDispatcher.h \
-        Source/WebCore/inspector/InspectorBaseAgent.h \
</del><span class="cx">         Source/WebCore/inspector/InspectorCanvasAgent.cpp \
</span><span class="cx">         Source/WebCore/inspector/InspectorCanvasAgent.h \
</span><span class="cx">         Source/WebCore/inspector/InspectorCanvasInstrumentation.h \
</span><span class="lines">@@ -3853,8 +3848,7 @@
</span><span class="cx">         Source/WebCore/inspector/InspectorStyleTextEditor.h \
</span><span class="cx">         Source/WebCore/inspector/InspectorTimelineAgent.cpp \
</span><span class="cx">         Source/WebCore/inspector/InspectorTimelineAgent.h \
</span><del>-        Source/WebCore/inspector/InspectorValues.cpp \
-        Source/WebCore/inspector/InspectorValues.h \
</del><ins>+        Source/WebCore/inspector/InspectorWebAgentBase.h \
</ins><span class="cx">         Source/WebCore/inspector/InspectorWorkerAgent.cpp \
</span><span class="cx">         Source/WebCore/inspector/InspectorWorkerAgent.h \
</span><span class="cx">         Source/WebCore/inspector/InspectorWorkerResource.h \
</span><span class="lines">@@ -5450,6 +5444,7 @@
</span><span class="cx">         Source/WebCore/platform/network/BlobRegistryImpl.h \
</span><span class="cx">         Source/WebCore/platform/network/BlobResourceHandle.cpp \
</span><span class="cx">         Source/WebCore/platform/network/BlobResourceHandle.h \
</span><ins>+        Source/WebCore/platform/network/soup/CertificateInfo.h \
</ins><span class="cx">         Source/WebCore/platform/network/BlobStorageData.h \
</span><span class="cx">         Source/WebCore/platform/network/FormDataBuilder.cpp \
</span><span class="cx">         Source/WebCore/platform/network/FormDataBuilder.h \
</span><span class="lines">@@ -5469,6 +5464,7 @@
</span><span class="cx">         Source/WebCore/platform/network/ResourceResponseBase.h \
</span><span class="cx">         Source/WebCore/platform/network/soup/AuthenticationChallenge.h \
</span><span class="cx">         Source/WebCore/platform/network/soup/AuthenticationChallengeSoup.cpp \
</span><ins>+        Source/WebCore/platform/network/soup/CertificateInfo.cpp \
</ins><span class="cx">         Source/WebCore/platform/network/soup/CookieJarSoup.cpp \
</span><span class="cx">         Source/WebCore/platform/network/soup/CookieJarSoup.h \
</span><span class="cx">         Source/WebCore/platform/network/soup/CookieStorageSoup.cpp \
</span><span class="lines">@@ -5480,6 +5476,7 @@
</span><span class="cx">         Source/WebCore/platform/network/soup/ResourceRequestSoup.cpp \
</span><span class="cx">         Source/WebCore/platform/network/soup/ResourceResponse.h \
</span><span class="cx">         Source/WebCore/platform/network/soup/ResourceResponseSoup.cpp \
</span><ins>+        Source/WebCore/platform/network/soup/SynchronousLoaderClientSoup.cpp \
</ins><span class="cx">         Source/WebCore/platform/ScrollableArea.cpp \
</span><span class="cx">         Source/WebCore/platform/ScrollableArea.h \
</span><span class="cx">         Source/WebCore/platform/ScrollbarThemeClient.h \
</span><span class="lines">@@ -5581,6 +5578,9 @@
</span><span class="cx">         Source/WebCore/platform/geoclue/GeolocationProviderGeoclue.h \
</span><span class="cx">         Source/WebCore/platform/geoclue/GeolocationProviderGeoclue.cpp \
</span><span class="cx">         Source/WebCore/platform/geoclue/GeolocationProviderGeoclueClient.h \
</span><ins>+        Source/WebCore/platform/glib/BatteryProviderUPowerClient.h \
+        Source/WebCore/platform/glib/BatteryProviderUPower.cpp \
+        Source/WebCore/platform/glib/BatteryProviderUPower.h \
</ins><span class="cx">         Source/WebCore/platform/graphics/cairo/BitmapImageCairo.cpp \
</span><span class="cx">         Source/WebCore/platform/graphics/cairo/CairoUtilities.cpp \
</span><span class="cx">         Source/WebCore/platform/graphics/cairo/CairoUtilities.h \
</span><span class="lines">@@ -5940,6 +5940,7 @@
</span><span class="cx">         Source/WebCore/platform/network/SocketStreamHandleBase.cpp \
</span><span class="cx">         Source/WebCore/platform/network/SocketStreamHandleBase.h \
</span><span class="cx">         Source/WebCore/platform/network/SocketStreamHandleClient.h \
</span><ins>+        Source/WebCore/platform/soup/SharedBufferSoup.cpp \
</ins><span class="cx">         Source/WebCore/platform/text/enchant/TextCheckerEnchant.h \
</span><span class="cx">         Source/WebCore/platform/text/enchant/TextCheckerEnchant.cpp \
</span><span class="cx">         Source/WebCore/platform/text/BidiContext.cpp \
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesbatteryBatteryManageridl"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/battery/BatteryManager.idl (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/battery/BatteryManager.idl        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/battery/BatteryManager.idl        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -43,4 +43,3 @@
</span><span class="cx">                              optional boolean useCapture);
</span><span class="cx">     [RaisesException] boolean dispatchEvent(Event event);
</span><span class="cx"> };
</span><del>-
</del></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesbatteryNavigatorBatteryidl"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/battery/NavigatorBattery.idl (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/battery/NavigatorBattery.idl        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/battery/NavigatorBattery.idl        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -17,9 +17,10 @@
</span><span class="cx">  *  Boston, MA 02110-1301, USA.
</span><span class="cx">  */
</span><span class="cx"> 
</span><ins>+#if !defined(LANGUAGE_GOBJECT) || !LANGUAGE_GOBJECT
</ins><span class="cx"> [
</span><span class="cx">     Conditional=BATTERY_STATUS,
</span><span class="cx"> ] partial interface Navigator {
</span><span class="cx">     readonly attribute BatteryManager webkitBattery;
</span><span class="cx"> };
</span><del>-
</del><ins>+#endif
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesindexeddbIDBAnycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBAny.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBAny.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBAny.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -112,7 +112,7 @@
</span><span class="cx">     return m_idbTransaction;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-const ScriptValue&amp; IDBAny::scriptValue()
</del><ins>+const Deprecated::ScriptValue&amp; IDBAny::scriptValue()
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(m_type == ScriptValueType);
</span><span class="cx">     return m_scriptValue;
</span><span class="lines">@@ -186,7 +186,7 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-IDBAny::IDBAny(const ScriptValue&amp; value)
</del><ins>+IDBAny::IDBAny(const Deprecated::ScriptValue&amp; value)
</ins><span class="cx">     : m_type(ScriptValueType)
</span><span class="cx">     , m_scriptValue(value)
</span><span class="cx">     , m_integer(0)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesindexeddbIDBAnyh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBAny.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBAny.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBAny.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -29,8 +29,8 @@
</span><span class="cx"> #if ENABLE(INDEXED_DATABASE)
</span><span class="cx"> 
</span><span class="cx"> #include &quot;IDBKeyPath.h&quot;
</span><del>-#include &quot;ScriptValue.h&quot;
</del><span class="cx"> #include &quot;ScriptWrappable.h&quot;
</span><ins>+#include &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> #include &lt;wtf/PassRefPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/RefCounted.h&gt;
</span><span class="cx"> #include &lt;wtf/RefPtr.h&gt;
</span><span class="lines">@@ -101,7 +101,7 @@
</span><span class="cx">     PassRefPtr&lt;IDBIndex&gt; idbIndex();
</span><span class="cx">     PassRefPtr&lt;IDBObjectStore&gt; idbObjectStore();
</span><span class="cx">     PassRefPtr&lt;IDBTransaction&gt; idbTransaction();
</span><del>-    const ScriptValue&amp; scriptValue();
</del><ins>+    const Deprecated::ScriptValue&amp; scriptValue();
</ins><span class="cx">     int64_t integer();
</span><span class="cx">     const String&amp; string();
</span><span class="cx">     const IDBKeyPath&amp; keyPath() { return m_idbKeyPath; };
</span><span class="lines">@@ -118,7 +118,7 @@
</span><span class="cx">     explicit IDBAny(PassRefPtr&lt;IDBTransaction&gt;);
</span><span class="cx">     explicit IDBAny(const IDBKeyPath&amp;);
</span><span class="cx">     explicit IDBAny(const String&amp;);
</span><del>-    explicit IDBAny(const ScriptValue&amp;);
</del><ins>+    explicit IDBAny(const Deprecated::ScriptValue&amp;);
</ins><span class="cx">     explicit IDBAny(int64_t);
</span><span class="cx"> 
</span><span class="cx">     const Type m_type;
</span><span class="lines">@@ -133,7 +133,7 @@
</span><span class="cx">     const RefPtr&lt;IDBObjectStore&gt; m_idbObjectStore;
</span><span class="cx">     const RefPtr&lt;IDBTransaction&gt; m_idbTransaction;
</span><span class="cx">     const IDBKeyPath m_idbKeyPath;
</span><del>-    const ScriptValue m_scriptValue;
</del><ins>+    const Deprecated::ScriptValue m_scriptValue;
</ins><span class="cx">     const String m_string;
</span><span class="cx">     const int64_t m_integer;
</span><span class="cx"> };
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesindexeddbIDBCursorcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBCursor.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBCursor.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBCursor.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -98,19 +98,19 @@
</span><span class="cx">     return directionToString(m_direction);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-const ScriptValue&amp; IDBCursor::key() const
</del><ins>+const Deprecated::ScriptValue&amp; IDBCursor::key() const
</ins><span class="cx"> {
</span><span class="cx">     LOG(StorageAPI, &quot;IDBCursor::key&quot;);
</span><span class="cx">     return m_currentKeyValue;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-const ScriptValue&amp; IDBCursor::primaryKey() const
</del><ins>+const Deprecated::ScriptValue&amp; IDBCursor::primaryKey() const
</ins><span class="cx"> {
</span><span class="cx">     LOG(StorageAPI, &quot;IDBCursor::primaryKey&quot;);
</span><span class="cx">     return m_currentPrimaryKeyValue;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-const ScriptValue&amp; IDBCursor::value() const
</del><ins>+const Deprecated::ScriptValue&amp; IDBCursor::value() const
</ins><span class="cx"> {
</span><span class="cx">     LOG(StorageAPI, &quot;IDBCursor::value&quot;);
</span><span class="cx">     return m_currentValue;
</span><span class="lines">@@ -121,7 +121,7 @@
</span><span class="cx">     return m_source.get();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;IDBRequest&gt; IDBCursor::update(JSC::ExecState* state, ScriptValue&amp; value, ExceptionCode&amp; ec)
</del><ins>+PassRefPtr&lt;IDBRequest&gt; IDBCursor::update(JSC::ExecState* state, Deprecated::ScriptValue&amp; value, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     LOG(StorageAPI, &quot;IDBCursor::update&quot;);
</span><span class="cx"> 
</span><span class="lines">@@ -177,7 +177,7 @@
</span><span class="cx">     ASSERT(!ec);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void IDBCursor::continueFunction(ScriptExecutionContext* context, const ScriptValue&amp; keyValue, ExceptionCode&amp; ec)
</del><ins>+void IDBCursor::continueFunction(ScriptExecutionContext* context, const Deprecated::ScriptValue&amp; keyValue, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     DOMRequestState requestState(context);
</span><span class="cx">     RefPtr&lt;IDBKey&gt; key = scriptValueToIDBKey(&amp;requestState, keyValue);
</span><span class="lines">@@ -263,7 +263,7 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void IDBCursor::setValueReady(DOMRequestState* state, PassRefPtr&lt;IDBKey&gt; key, PassRefPtr&lt;IDBKey&gt; primaryKey, ScriptValue&amp; value)
</del><ins>+void IDBCursor::setValueReady(DOMRequestState* state, PassRefPtr&lt;IDBKey&gt; key, PassRefPtr&lt;IDBKey&gt; primaryKey, Deprecated::ScriptValue&amp; value)
</ins><span class="cx"> {
</span><span class="cx">     m_currentKey = key;
</span><span class="cx">     m_currentKeyValue = idbKeyToScriptValue(state, m_currentKey);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesindexeddbIDBCursorh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBCursor.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBCursor.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBCursor.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -31,8 +31,8 @@
</span><span class="cx"> #include &quot;IDBKey.h&quot;
</span><span class="cx"> #include &quot;IDBTransaction.h&quot;
</span><span class="cx"> #include &quot;IndexedDB.h&quot;
</span><del>-#include &quot;ScriptValue.h&quot;
</del><span class="cx"> #include &quot;ScriptWrappable.h&quot;
</span><ins>+#include &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> #include &lt;wtf/PassRefPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/RefCounted.h&gt;
</span><span class="cx"> #include &lt;wtf/RefPtr.h&gt;
</span><span class="lines">@@ -63,22 +63,22 @@
</span><span class="cx"> 
</span><span class="cx">     // Implement the IDL
</span><span class="cx">     const String&amp; direction() const;
</span><del>-    const ScriptValue&amp; key() const;
-    const ScriptValue&amp; primaryKey() const;
-    const ScriptValue&amp; value() const;
</del><ins>+    const Deprecated::ScriptValue&amp; key() const;
+    const Deprecated::ScriptValue&amp; primaryKey() const;
+    const Deprecated::ScriptValue&amp; value() const;
</ins><span class="cx">     IDBAny* source() const;
</span><span class="cx"> 
</span><del>-    PassRefPtr&lt;IDBRequest&gt; update(JSC::ExecState*, ScriptValue&amp;, ExceptionCode&amp;);
</del><ins>+    PassRefPtr&lt;IDBRequest&gt; update(JSC::ExecState*, Deprecated::ScriptValue&amp;, ExceptionCode&amp;);
</ins><span class="cx">     void advance(unsigned long, ExceptionCode&amp;);
</span><span class="cx">     // FIXME: Try to modify the code generator so this overload is unneeded.
</span><span class="cx">     void continueFunction(ScriptExecutionContext*, ExceptionCode&amp; ec) { continueFunction(static_cast&lt;IDBKey*&gt;(0), ec); }
</span><del>-    void continueFunction(ScriptExecutionContext*, const ScriptValue&amp; key, ExceptionCode&amp;);
</del><ins>+    void continueFunction(ScriptExecutionContext*, const Deprecated::ScriptValue&amp; key, ExceptionCode&amp;);
</ins><span class="cx">     PassRefPtr&lt;IDBRequest&gt; deleteFunction(ScriptExecutionContext*, ExceptionCode&amp;);
</span><span class="cx"> 
</span><span class="cx">     void continueFunction(PassRefPtr&lt;IDBKey&gt;, ExceptionCode&amp;);
</span><span class="cx">     void postSuccessHandlerCallback();
</span><span class="cx">     void close();
</span><del>-    void setValueReady(DOMRequestState*, PassRefPtr&lt;IDBKey&gt;, PassRefPtr&lt;IDBKey&gt; primaryKey, ScriptValue&amp;);
</del><ins>+    void setValueReady(DOMRequestState*, PassRefPtr&lt;IDBKey&gt;, PassRefPtr&lt;IDBKey&gt; primaryKey, Deprecated::ScriptValue&amp;);
</ins><span class="cx">     PassRefPtr&lt;IDBKey&gt; idbPrimaryKey() { return m_currentPrimaryKey; }
</span><span class="cx"> 
</span><span class="cx"> protected:
</span><span class="lines">@@ -97,11 +97,11 @@
</span><span class="cx">     bool m_gotValue;
</span><span class="cx">     // These values are held because m_backend may advance while they
</span><span class="cx">     // are still valid for the current success handlers.
</span><del>-    ScriptValue m_currentKeyValue;
-    ScriptValue m_currentPrimaryKeyValue;
</del><ins>+    Deprecated::ScriptValue m_currentKeyValue;
+    Deprecated::ScriptValue m_currentPrimaryKeyValue;
</ins><span class="cx">     RefPtr&lt;IDBKey&gt; m_currentKey;
</span><span class="cx">     RefPtr&lt;IDBKey&gt; m_currentPrimaryKey;
</span><del>-    ScriptValue m_currentValue;
</del><ins>+    Deprecated::ScriptValue m_currentValue;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesindexeddbIDBDatabaseMetadatacpp"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBDatabaseMetadata.cpp (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBDatabaseMetadata.cpp                                (rev 0)
+++ branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBDatabaseMetadata.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,79 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;IDBDatabaseMetadata.h&quot;
+
+#if ENABLE(INDEXED_DATABASE)
+
+namespace WebCore {
+
+IDBDatabaseMetadata IDBDatabaseMetadata::isolatedCopy() const
+{
+    IDBDatabaseMetadata result;
+    result.id = id;
+    result.version = version;
+    result.maxObjectStoreId = maxObjectStoreId;
+
+    result.name = name.isolatedCopy();
+
+    for (auto i = objectStores.begin(), end = objectStores.end(); i != end; ++i)
+        result.objectStores.set(i-&gt;key, i-&gt;value.isolatedCopy());
+
+    return result;
+}
+
+IDBObjectStoreMetadata IDBObjectStoreMetadata::isolatedCopy() const
+{
+    IDBObjectStoreMetadata result;
+    result.id = id;
+    result.autoIncrement = autoIncrement;
+    result.maxIndexId = maxIndexId;
+
+    result.name = name.isolatedCopy();
+    result.keyPath = keyPath.isolatedCopy();
+
+    for (auto i = indexes.begin(), end = indexes.end(); i != end; ++i)
+        result.indexes.set(i-&gt;key, i-&gt;value.isolatedCopy());
+
+    return result;
+}
+
+IDBIndexMetadata IDBIndexMetadata::isolatedCopy() const
+{
+    IDBIndexMetadata result;
+    result.id = id;
+    result.unique = unique;
+    result.multiEntry = multiEntry;
+
+    result.name = name.isolatedCopy();
+    result.keyPath = keyPath.isolatedCopy();
+
+    return result;
+}
+
+} // namespace WebCore
+
+#endif // ENABLE(INDEXED_DATABASE)
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesindexeddbIDBDatabaseMetadatah"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBDatabaseMetadata.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBDatabaseMetadata.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBDatabaseMetadata.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -53,6 +53,8 @@
</span><span class="cx">     bool unique;
</span><span class="cx">     bool multiEntry;
</span><span class="cx"> 
</span><ins>+    IDBIndexMetadata isolatedCopy() const;
+
</ins><span class="cx">     static const int64_t InvalidId = -1;
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="lines">@@ -77,6 +79,7 @@
</span><span class="cx">     typedef HashMap&lt;int64_t, IDBIndexMetadata&gt; IndexMap;
</span><span class="cx">     IndexMap indexes;
</span><span class="cx"> 
</span><ins>+    IDBObjectStoreMetadata isolatedCopy() const;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> struct IDBDatabaseMetadata {
</span><span class="lines">@@ -120,6 +123,8 @@
</span><span class="cx">     int64_t maxObjectStoreId;
</span><span class="cx"> 
</span><span class="cx">     ObjectStoreMap objectStores;
</span><ins>+
+    IDBDatabaseMetadata isolatedCopy() const;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesindexeddbIDBFactorycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBFactory.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBFactory.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBFactory.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -165,7 +165,7 @@
</span><span class="cx">     return request;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-short IDBFactory::cmp(ScriptExecutionContext* context, const ScriptValue&amp; firstValue, const ScriptValue&amp; secondValue, ExceptionCode&amp; ec)
</del><ins>+short IDBFactory::cmp(ScriptExecutionContext* context, const Deprecated::ScriptValue&amp; firstValue, const Deprecated::ScriptValue&amp; secondValue, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     DOMRequestState requestState(context);
</span><span class="cx">     RefPtr&lt;IDBKey&gt; first = scriptValueToIDBKey(&amp;requestState, firstValue);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesindexeddbIDBFactoryh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBFactory.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBFactory.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBFactory.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -66,7 +66,7 @@
</span><span class="cx">     PassRefPtr&lt;IDBOpenDBRequest&gt; open(ScriptExecutionContext*, const String&amp; name, unsigned long long version, ExceptionCode&amp;);
</span><span class="cx">     PassRefPtr&lt;IDBOpenDBRequest&gt; deleteDatabase(ScriptExecutionContext*, const String&amp; name, ExceptionCode&amp;);
</span><span class="cx"> 
</span><del>-    short cmp(ScriptExecutionContext*, const ScriptValue&amp; first, const ScriptValue&amp; second, ExceptionCode&amp;);
</del><ins>+    short cmp(ScriptExecutionContext*, const Deprecated::ScriptValue&amp; first, const Deprecated::ScriptValue&amp; second, ExceptionCode&amp;);
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     IDBFactory(IDBFactoryBackendInterface*);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesindexeddbIDBIndexcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBIndex.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBIndex.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBIndex.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -75,7 +75,7 @@
</span><span class="cx">     return request;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;IDBRequest&gt; IDBIndex::openCursor(ScriptExecutionContext* context, const ScriptValue&amp; key, const String&amp; direction, ExceptionCode&amp; ec)
</del><ins>+PassRefPtr&lt;IDBRequest&gt; IDBIndex::openCursor(ScriptExecutionContext* context, const Deprecated::ScriptValue&amp; key, const String&amp; direction, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     LOG(StorageAPI, &quot;IDBIndex::openCursor&quot;);
</span><span class="cx">     RefPtr&lt;IDBKeyRange&gt; keyRange = IDBKeyRange::only(context, key, ec);
</span><span class="lines">@@ -100,7 +100,7 @@
</span><span class="cx">     return request;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;IDBRequest&gt; IDBIndex::count(ScriptExecutionContext* context, const ScriptValue&amp; key, ExceptionCode&amp; ec)
</del><ins>+PassRefPtr&lt;IDBRequest&gt; IDBIndex::count(ScriptExecutionContext* context, const Deprecated::ScriptValue&amp; key, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     LOG(StorageAPI, &quot;IDBIndex::count&quot;);
</span><span class="cx">     RefPtr&lt;IDBKeyRange&gt; keyRange = IDBKeyRange::only(context, key, ec);
</span><span class="lines">@@ -130,7 +130,7 @@
</span><span class="cx">     return request;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;IDBRequest&gt; IDBIndex::openKeyCursor(ScriptExecutionContext* context, const ScriptValue&amp; key, const String&amp; direction, ExceptionCode&amp; ec)
</del><ins>+PassRefPtr&lt;IDBRequest&gt; IDBIndex::openKeyCursor(ScriptExecutionContext* context, const Deprecated::ScriptValue&amp; key, const String&amp; direction, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     LOG(StorageAPI, &quot;IDBIndex::openKeyCursor&quot;);
</span><span class="cx">     RefPtr&lt;IDBKeyRange&gt; keyRange = IDBKeyRange::only(context, key, ec);
</span><span class="lines">@@ -139,7 +139,7 @@
</span><span class="cx">     return openKeyCursor(context, keyRange.release(), direction, ec);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;IDBRequest&gt; IDBIndex::get(ScriptExecutionContext* context, const ScriptValue&amp; key, ExceptionCode&amp; ec)
</del><ins>+PassRefPtr&lt;IDBRequest&gt; IDBIndex::get(ScriptExecutionContext* context, const Deprecated::ScriptValue&amp; key, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     LOG(StorageAPI, &quot;IDBIndex::get&quot;);
</span><span class="cx">     RefPtr&lt;IDBKeyRange&gt; keyRange = IDBKeyRange::only(context, key, ec);
</span><span class="lines">@@ -169,7 +169,7 @@
</span><span class="cx">     return request;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;IDBRequest&gt; IDBIndex::getKey(ScriptExecutionContext* context, const ScriptValue&amp; key, ExceptionCode&amp; ec)
</del><ins>+PassRefPtr&lt;IDBRequest&gt; IDBIndex::getKey(ScriptExecutionContext* context, const Deprecated::ScriptValue&amp; key, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     LOG(StorageAPI, &quot;IDBIndex::getKey&quot;);
</span><span class="cx">     RefPtr&lt;IDBKeyRange&gt; keyRange = IDBKeyRange::only(context, key, ec);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesindexeddbIDBIndexh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBIndex.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBIndex.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBIndex.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -63,23 +63,23 @@
</span><span class="cx">     // FIXME: Try to modify the code generator so this is unneeded.
</span><span class="cx">     PassRefPtr&lt;IDBRequest&gt; openCursor(ScriptExecutionContext* context, ExceptionCode&amp; ec) { return openCursor(context, static_cast&lt;IDBKeyRange*&gt;(0), ec); }
</span><span class="cx">     PassRefPtr&lt;IDBRequest&gt; openCursor(ScriptExecutionContext* context, PassRefPtr&lt;IDBKeyRange&gt; keyRange, ExceptionCode&amp; ec) { return openCursor(context, keyRange, IDBCursor::directionNext(), ec); }
</span><del>-    PassRefPtr&lt;IDBRequest&gt; openCursor(ScriptExecutionContext* context, const ScriptValue&amp; key, ExceptionCode&amp; ec) { return openCursor(context, key, IDBCursor::directionNext(), ec); }
</del><ins>+    PassRefPtr&lt;IDBRequest&gt; openCursor(ScriptExecutionContext* context, const Deprecated::ScriptValue&amp; key, ExceptionCode&amp; ec) { return openCursor(context, key, IDBCursor::directionNext(), ec); }
</ins><span class="cx">     PassRefPtr&lt;IDBRequest&gt; openCursor(ScriptExecutionContext*, PassRefPtr&lt;IDBKeyRange&gt;, const String&amp; direction, ExceptionCode&amp;);
</span><del>-    PassRefPtr&lt;IDBRequest&gt; openCursor(ScriptExecutionContext*, const ScriptValue&amp; key, const String&amp; direction, ExceptionCode&amp;);
</del><ins>+    PassRefPtr&lt;IDBRequest&gt; openCursor(ScriptExecutionContext*, const Deprecated::ScriptValue&amp; key, const String&amp; direction, ExceptionCode&amp;);
</ins><span class="cx">     PassRefPtr&lt;IDBRequest&gt; count(ScriptExecutionContext* context, ExceptionCode&amp; ec) { return count(context, static_cast&lt;IDBKeyRange*&gt;(0), ec); }
</span><span class="cx">     PassRefPtr&lt;IDBRequest&gt; count(ScriptExecutionContext*, PassRefPtr&lt;IDBKeyRange&gt;, ExceptionCode&amp;);
</span><del>-    PassRefPtr&lt;IDBRequest&gt; count(ScriptExecutionContext*, const ScriptValue&amp; key, ExceptionCode&amp;);
</del><ins>+    PassRefPtr&lt;IDBRequest&gt; count(ScriptExecutionContext*, const Deprecated::ScriptValue&amp; key, ExceptionCode&amp;);
</ins><span class="cx"> 
</span><span class="cx">     PassRefPtr&lt;IDBRequest&gt; openKeyCursor(ScriptExecutionContext* context, ExceptionCode&amp; ec) { return openKeyCursor(context, static_cast&lt;IDBKeyRange*&gt;(0), ec); }
</span><span class="cx">     PassRefPtr&lt;IDBRequest&gt; openKeyCursor(ScriptExecutionContext* context, PassRefPtr&lt;IDBKeyRange&gt; keyRange, ExceptionCode&amp; ec) { return openKeyCursor(context, keyRange, IDBCursor::directionNext(), ec); }
</span><del>-    PassRefPtr&lt;IDBRequest&gt; openKeyCursor(ScriptExecutionContext* context, const ScriptValue&amp; key, ExceptionCode&amp; ec) { return openKeyCursor(context, key, IDBCursor::directionNext(), ec); }
</del><ins>+    PassRefPtr&lt;IDBRequest&gt; openKeyCursor(ScriptExecutionContext* context, const Deprecated::ScriptValue&amp; key, ExceptionCode&amp; ec) { return openKeyCursor(context, key, IDBCursor::directionNext(), ec); }
</ins><span class="cx">     PassRefPtr&lt;IDBRequest&gt; openKeyCursor(ScriptExecutionContext*, PassRefPtr&lt;IDBKeyRange&gt;, const String&amp; direction, ExceptionCode&amp;);
</span><del>-    PassRefPtr&lt;IDBRequest&gt; openKeyCursor(ScriptExecutionContext*, const ScriptValue&amp; key, const String&amp; direction, ExceptionCode&amp;);
</del><ins>+    PassRefPtr&lt;IDBRequest&gt; openKeyCursor(ScriptExecutionContext*, const Deprecated::ScriptValue&amp; key, const String&amp; direction, ExceptionCode&amp;);
</ins><span class="cx"> 
</span><span class="cx">     PassRefPtr&lt;IDBRequest&gt; get(ScriptExecutionContext*, PassRefPtr&lt;IDBKeyRange&gt;, ExceptionCode&amp;);
</span><del>-    PassRefPtr&lt;IDBRequest&gt; get(ScriptExecutionContext*, const ScriptValue&amp; key, ExceptionCode&amp;);
</del><ins>+    PassRefPtr&lt;IDBRequest&gt; get(ScriptExecutionContext*, const Deprecated::ScriptValue&amp; key, ExceptionCode&amp;);
</ins><span class="cx">     PassRefPtr&lt;IDBRequest&gt; getKey(ScriptExecutionContext*, PassRefPtr&lt;IDBKeyRange&gt;, ExceptionCode&amp;);
</span><del>-    PassRefPtr&lt;IDBRequest&gt; getKey(ScriptExecutionContext*, const ScriptValue&amp; key, ExceptionCode&amp;);
</del><ins>+    PassRefPtr&lt;IDBRequest&gt; getKey(ScriptExecutionContext*, const Deprecated::ScriptValue&amp; key, ExceptionCode&amp;);
</ins><span class="cx"> 
</span><span class="cx">     void markDeleted() { m_deleted = true; }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesindexeddbIDBKeyPathcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBKeyPath.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBKeyPath.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBKeyPath.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -248,7 +248,19 @@
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+IDBKeyPath IDBKeyPath::isolatedCopy() const
+{
+    IDBKeyPath result;
+    result.m_type = m_type;
+    result.m_string = m_string.isolatedCopy();
</ins><span class="cx"> 
</span><ins>+    result.m_array.reserveInitialCapacity(m_array.size());
+    for (size_t i = 0; i &lt; m_array.size(); ++i)
+        result.m_array.uncheckedAppend(m_array[i].isolatedCopy());
+
+    return result;
+}
+
</ins><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(INDEXED_DATABASE)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesindexeddbIDBKeyPathh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBKeyPath.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBKeyPath.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBKeyPath.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -72,6 +72,8 @@
</span><span class="cx">     bool isValid() const;
</span><span class="cx">     bool operator==(const IDBKeyPath&amp; other) const;
</span><span class="cx"> 
</span><ins>+    IDBKeyPath isolatedCopy() const;
+
</ins><span class="cx"> private:
</span><span class="cx">     Type m_type;
</span><span class="cx">     String m_string;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesindexeddbIDBKeyRangecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBKeyRange.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBKeyRange.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBKeyRange.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -49,13 +49,13 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-ScriptValue IDBKeyRange::lowerValue(ScriptExecutionContext* context) const
</del><ins>+Deprecated::ScriptValue IDBKeyRange::lowerValue(ScriptExecutionContext* context) const
</ins><span class="cx"> {
</span><span class="cx">     DOMRequestState requestState(context);
</span><span class="cx">     return idbKeyToScriptValue(&amp;requestState, m_lower);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-ScriptValue IDBKeyRange::upperValue(ScriptExecutionContext* context) const
</del><ins>+Deprecated::ScriptValue IDBKeyRange::upperValue(ScriptExecutionContext* context) const
</ins><span class="cx"> {
</span><span class="cx">     DOMRequestState requestState(context);
</span><span class="cx">     return idbKeyToScriptValue(&amp;requestState, m_upper);
</span><span class="lines">@@ -72,7 +72,7 @@
</span><span class="cx">     return IDBKeyRange::create(key, key, LowerBoundClosed, UpperBoundClosed);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;IDBKeyRange&gt; IDBKeyRange::only(ScriptExecutionContext* context, const ScriptValue&amp; keyValue, ExceptionCode&amp; ec)
</del><ins>+PassRefPtr&lt;IDBKeyRange&gt; IDBKeyRange::only(ScriptExecutionContext* context, const Deprecated::ScriptValue&amp; keyValue, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     DOMRequestState requestState(context);
</span><span class="cx">     RefPtr&lt;IDBKey&gt; key = scriptValueToIDBKey(&amp;requestState, keyValue);
</span><span class="lines">@@ -84,7 +84,7 @@
</span><span class="cx">     return IDBKeyRange::create(key, key, LowerBoundClosed, UpperBoundClosed);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;IDBKeyRange&gt; IDBKeyRange::lowerBound(ScriptExecutionContext* context, const ScriptValue&amp; boundValue, bool open, ExceptionCode&amp; ec)
</del><ins>+PassRefPtr&lt;IDBKeyRange&gt; IDBKeyRange::lowerBound(ScriptExecutionContext* context, const Deprecated::ScriptValue&amp; boundValue, bool open, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     DOMRequestState requestState(context);
</span><span class="cx">     RefPtr&lt;IDBKey&gt; bound = scriptValueToIDBKey(&amp;requestState, boundValue);
</span><span class="lines">@@ -96,7 +96,7 @@
</span><span class="cx">     return IDBKeyRange::create(bound, 0, open ? LowerBoundOpen : LowerBoundClosed, UpperBoundOpen);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;IDBKeyRange&gt; IDBKeyRange::upperBound(ScriptExecutionContext* context, const ScriptValue&amp; boundValue, bool open, ExceptionCode&amp; ec)
</del><ins>+PassRefPtr&lt;IDBKeyRange&gt; IDBKeyRange::upperBound(ScriptExecutionContext* context, const Deprecated::ScriptValue&amp; boundValue, bool open, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     DOMRequestState requestState(context);
</span><span class="cx">     RefPtr&lt;IDBKey&gt; bound = scriptValueToIDBKey(&amp;requestState, boundValue);
</span><span class="lines">@@ -108,7 +108,7 @@
</span><span class="cx">     return IDBKeyRange::create(0, bound, LowerBoundOpen, open ? UpperBoundOpen : UpperBoundClosed);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;IDBKeyRange&gt; IDBKeyRange::bound(ScriptExecutionContext* context, const ScriptValue&amp; lowerValue, const ScriptValue&amp; upperValue, bool lowerOpen, bool upperOpen, ExceptionCode&amp; ec)
</del><ins>+PassRefPtr&lt;IDBKeyRange&gt; IDBKeyRange::bound(ScriptExecutionContext* context, const Deprecated::ScriptValue&amp; lowerValue, const Deprecated::ScriptValue&amp; upperValue, bool lowerOpen, bool upperOpen, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     DOMRequestState requestState(context);
</span><span class="cx">     RefPtr&lt;IDBKey&gt; lower = scriptValueToIDBKey(&amp;requestState, lowerValue);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesindexeddbIDBKeyRangeh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBKeyRange.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBKeyRange.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBKeyRange.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -59,23 +59,23 @@
</span><span class="cx">     PassRefPtr&lt;IDBKey&gt; lower() const { return m_lower; }
</span><span class="cx">     PassRefPtr&lt;IDBKey&gt; upper() const { return m_upper; }
</span><span class="cx"> 
</span><del>-    ScriptValue lowerValue(ScriptExecutionContext*) const;
-    ScriptValue upperValue(ScriptExecutionContext*) const;
</del><ins>+    Deprecated::ScriptValue lowerValue(ScriptExecutionContext*) const;
+    Deprecated::ScriptValue upperValue(ScriptExecutionContext*) const;
</ins><span class="cx">     bool lowerOpen() const { return m_lowerType == LowerBoundOpen; }
</span><span class="cx">     bool upperOpen() const { return m_upperType == UpperBoundOpen; }
</span><span class="cx"> 
</span><span class="cx">     static PassRefPtr&lt;IDBKeyRange&gt; only(PassRefPtr&lt;IDBKey&gt; value, ExceptionCode&amp;);
</span><del>-    static PassRefPtr&lt;IDBKeyRange&gt; only(ScriptExecutionContext*, const ScriptValue&amp; key, ExceptionCode&amp;);
</del><ins>+    static PassRefPtr&lt;IDBKeyRange&gt; only(ScriptExecutionContext*, const Deprecated::ScriptValue&amp; key, ExceptionCode&amp;);
</ins><span class="cx"> 
</span><del>-    static PassRefPtr&lt;IDBKeyRange&gt; lowerBound(ScriptExecutionContext* context, const ScriptValue&amp; bound, ExceptionCode&amp; ec) { return lowerBound(context, bound, false, ec); }
-    static PassRefPtr&lt;IDBKeyRange&gt; lowerBound(ScriptExecutionContext*, const ScriptValue&amp; bound, bool open, ExceptionCode&amp;);
</del><ins>+    static PassRefPtr&lt;IDBKeyRange&gt; lowerBound(ScriptExecutionContext* context, const Deprecated::ScriptValue&amp; bound, ExceptionCode&amp; ec) { return lowerBound(context, bound, false, ec); }
+    static PassRefPtr&lt;IDBKeyRange&gt; lowerBound(ScriptExecutionContext*, const Deprecated::ScriptValue&amp; bound, bool open, ExceptionCode&amp;);
</ins><span class="cx"> 
</span><del>-    static PassRefPtr&lt;IDBKeyRange&gt; upperBound(ScriptExecutionContext* context, const ScriptValue&amp; bound, ExceptionCode&amp; ec) { return upperBound(context, bound, false, ec); }
-    static PassRefPtr&lt;IDBKeyRange&gt; upperBound(ScriptExecutionContext*, const ScriptValue&amp; bound, bool open, ExceptionCode&amp;);
</del><ins>+    static PassRefPtr&lt;IDBKeyRange&gt; upperBound(ScriptExecutionContext* context, const Deprecated::ScriptValue&amp; bound, ExceptionCode&amp; ec) { return upperBound(context, bound, false, ec); }
+    static PassRefPtr&lt;IDBKeyRange&gt; upperBound(ScriptExecutionContext*, const Deprecated::ScriptValue&amp; bound, bool open, ExceptionCode&amp;);
</ins><span class="cx"> 
</span><del>-    static PassRefPtr&lt;IDBKeyRange&gt; bound(ScriptExecutionContext* context, const ScriptValue&amp; lower, const ScriptValue&amp; upper, ExceptionCode&amp; ec) { return bound(context, lower, upper, false, false, ec); }
-    static PassRefPtr&lt;IDBKeyRange&gt; bound(ScriptExecutionContext* context, const ScriptValue&amp; lower, const ScriptValue&amp; upper, bool lowerOpen, ExceptionCode&amp; ec) { return bound(context, lower, upper, lowerOpen, false, ec); }
-    static PassRefPtr&lt;IDBKeyRange&gt; bound(ScriptExecutionContext*, const ScriptValue&amp; lower, const ScriptValue&amp; upper, bool lowerOpen, bool upperOpen, ExceptionCode&amp;);
</del><ins>+    static PassRefPtr&lt;IDBKeyRange&gt; bound(ScriptExecutionContext* context, const Deprecated::ScriptValue&amp; lower, const Deprecated::ScriptValue&amp; upper, ExceptionCode&amp; ec) { return bound(context, lower, upper, false, false, ec); }
+    static PassRefPtr&lt;IDBKeyRange&gt; bound(ScriptExecutionContext* context, const Deprecated::ScriptValue&amp; lower, const Deprecated::ScriptValue&amp; upper, bool lowerOpen, ExceptionCode&amp; ec) { return bound(context, lower, upper, lowerOpen, false, ec); }
+    static PassRefPtr&lt;IDBKeyRange&gt; bound(ScriptExecutionContext*, const Deprecated::ScriptValue&amp; lower, const Deprecated::ScriptValue&amp; upper, bool lowerOpen, bool upperOpen, ExceptionCode&amp;);
</ins><span class="cx"> 
</span><span class="cx">     bool isOnlyKey() const;
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesindexeddbIDBObjectStorecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBObjectStore.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBObjectStore.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBObjectStore.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -86,7 +86,7 @@
</span><span class="cx">     return request.release();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;IDBRequest&gt; IDBObjectStore::get(ScriptExecutionContext* context, const ScriptValue&amp; key, ExceptionCode&amp; ec)
</del><ins>+PassRefPtr&lt;IDBRequest&gt; IDBObjectStore::get(ScriptExecutionContext* context, const Deprecated::ScriptValue&amp; key, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     RefPtr&lt;IDBKeyRange&gt; keyRange = IDBKeyRange::only(context, key, ec);
</span><span class="cx">     if (ec)
</span><span class="lines">@@ -94,7 +94,7 @@
</span><span class="cx">     return get(context, keyRange.release(), ec);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static void generateIndexKeysForValue(DOMRequestState* requestState, const IDBIndexMetadata&amp; indexMetadata, const ScriptValue&amp; objectValue, IDBObjectStore::IndexKeys* indexKeys)
</del><ins>+static void generateIndexKeysForValue(DOMRequestState* requestState, const IDBIndexMetadata&amp; indexMetadata, const Deprecated::ScriptValue&amp; objectValue, IDBObjectStore::IndexKeys* indexKeys)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(indexKeys);
</span><span class="cx">     RefPtr&lt;IDBKey&gt; indexKey = createIDBKeyFromScriptValueAndKeyPath(requestState, objectValue, indexMetadata.keyPath);
</span><span class="lines">@@ -117,31 +117,31 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;IDBRequest&gt; IDBObjectStore::add(JSC::ExecState* state, ScriptValue&amp; value, const ScriptValue&amp; key, ExceptionCode&amp; ec)
</del><ins>+PassRefPtr&lt;IDBRequest&gt; IDBObjectStore::add(JSC::ExecState* state, Deprecated::ScriptValue&amp; value, const Deprecated::ScriptValue&amp; key, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     LOG(StorageAPI, &quot;IDBObjectStore::add&quot;);
</span><span class="cx">     return put(IDBDatabaseBackend::AddOnly, IDBAny::create(this), state, value, key, ec);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;IDBRequest&gt; IDBObjectStore::add(JSC::ExecState* state, ScriptValue&amp; value, ExceptionCode&amp; ec)
</del><ins>+PassRefPtr&lt;IDBRequest&gt; IDBObjectStore::add(JSC::ExecState* state, Deprecated::ScriptValue&amp; value, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     LOG(StorageAPI, &quot;IDBObjectStore::add&quot;);
</span><span class="cx">     return put(IDBDatabaseBackend::AddOnly, IDBAny::create(this), state, value, static_cast&lt;IDBKey*&gt;(0), ec);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;IDBRequest&gt; IDBObjectStore::put(JSC::ExecState* state, ScriptValue&amp; value, const ScriptValue&amp; key, ExceptionCode&amp; ec)
</del><ins>+PassRefPtr&lt;IDBRequest&gt; IDBObjectStore::put(JSC::ExecState* state, Deprecated::ScriptValue&amp; value, const Deprecated::ScriptValue&amp; key, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     LOG(StorageAPI, &quot;IDBObjectStore::put&quot;);
</span><span class="cx">     return put(IDBDatabaseBackend::AddOrUpdate, IDBAny::create(this), state, value, key, ec);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;IDBRequest&gt; IDBObjectStore::put(JSC::ExecState* state, ScriptValue&amp; value, ExceptionCode&amp; ec)
</del><ins>+PassRefPtr&lt;IDBRequest&gt; IDBObjectStore::put(JSC::ExecState* state, Deprecated::ScriptValue&amp; value, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     LOG(StorageAPI, &quot;IDBObjectStore::put&quot;);
</span><span class="cx">     return put(IDBDatabaseBackend::AddOrUpdate, IDBAny::create(this), state, value, static_cast&lt;IDBKey*&gt;(0), ec);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;IDBRequest&gt; IDBObjectStore::put(IDBDatabaseBackend::PutMode putMode, PassRefPtr&lt;IDBAny&gt; source, JSC::ExecState* state, ScriptValue&amp; value, const ScriptValue&amp; keyValue, ExceptionCode&amp; ec)
</del><ins>+PassRefPtr&lt;IDBRequest&gt; IDBObjectStore::put(IDBDatabaseBackend::PutMode putMode, PassRefPtr&lt;IDBAny&gt; source, JSC::ExecState* state, Deprecated::ScriptValue&amp; value, const Deprecated::ScriptValue&amp; keyValue, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     ScriptExecutionContext* context = scriptExecutionContextFromExecState(state);
</span><span class="cx">     DOMRequestState requestState(context);
</span><span class="lines">@@ -149,7 +149,7 @@
</span><span class="cx">     return put(putMode, source, state, value, key.release(), ec);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;IDBRequest&gt; IDBObjectStore::put(IDBDatabaseBackend::PutMode putMode, PassRefPtr&lt;IDBAny&gt; source, JSC::ExecState* state, ScriptValue&amp; value, PassRefPtr&lt;IDBKey&gt; prpKey, ExceptionCode&amp; ec)
</del><ins>+PassRefPtr&lt;IDBRequest&gt; IDBObjectStore::put(IDBDatabaseBackend::PutMode putMode, PassRefPtr&lt;IDBAny&gt; source, JSC::ExecState* state, Deprecated::ScriptValue&amp; value, PassRefPtr&lt;IDBKey&gt; prpKey, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     RefPtr&lt;IDBKey&gt; key = prpKey;
</span><span class="cx">     if (m_deleted) {
</span><span class="lines">@@ -167,7 +167,7 @@
</span><span class="cx"> 
</span><span class="cx">     // FIXME: Expose the JS engine exception state through ScriptState.
</span><span class="cx">     bool didThrow = false;
</span><del>-    RefPtr&lt;SerializedScriptValue&gt; serializedValue = value.serialize(state, 0, 0, didThrow);
</del><ins>+    RefPtr&lt;SerializedScriptValue&gt; serializedValue = SerializedScriptValue::serialize(value, state, nullptr, nullptr, didThrow);
</ins><span class="cx">     if (didThrow) {
</span><span class="cx">         // Setting an explicit ExceptionCode here would defer handling the already thrown exception.
</span><span class="cx">         return 0;
</span><span class="lines">@@ -262,7 +262,7 @@
</span><span class="cx">     return request.release();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;IDBRequest&gt; IDBObjectStore::deleteFunction(ScriptExecutionContext* context, const ScriptValue&amp; key, ExceptionCode&amp; ec)
</del><ins>+PassRefPtr&lt;IDBRequest&gt; IDBObjectStore::deleteFunction(ScriptExecutionContext* context, const Deprecated::ScriptValue&amp; key, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     RefPtr&lt;IDBKeyRange&gt; keyRange = IDBKeyRange::only(context, key, ec);
</span><span class="cx">     if (ec)
</span><span class="lines">@@ -336,7 +336,7 @@
</span><span class="cx">             cursor-&gt;continueFunction(static_cast&lt;IDBKey*&gt;(0), ASSERT_NO_EXCEPTION);
</span><span class="cx"> 
</span><span class="cx">             RefPtr&lt;IDBKey&gt; primaryKey = cursor-&gt;idbPrimaryKey();
</span><del>-            ScriptValue value = cursor-&gt;value();
</del><ins>+            Deprecated::ScriptValue value = cursor-&gt;value();
</ins><span class="cx"> 
</span><span class="cx">             IDBObjectStore::IndexKeys indexKeys;
</span><span class="cx">             generateIndexKeysForValue(request-&gt;requestState(), m_indexMetadata, value, &amp;indexKeys);
</span><span class="lines">@@ -502,7 +502,7 @@
</span><span class="cx">     return openCursor(context, keyRange, IDBCursor::directionNext(), ec);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;IDBRequest&gt; IDBObjectStore::openCursor(ScriptExecutionContext* context, const ScriptValue&amp; key, ExceptionCode&amp; ec)
</del><ins>+PassRefPtr&lt;IDBRequest&gt; IDBObjectStore::openCursor(ScriptExecutionContext* context, const Deprecated::ScriptValue&amp; key, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     return openCursor(context, key, IDBCursor::directionNext(), ec);
</span><span class="cx"> }
</span><span class="lines">@@ -534,7 +534,7 @@
</span><span class="cx">     return request.release();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;IDBRequest&gt; IDBObjectStore::openCursor(ScriptExecutionContext* context, const ScriptValue&amp; key, const String&amp; direction, ExceptionCode&amp; ec)
</del><ins>+PassRefPtr&lt;IDBRequest&gt; IDBObjectStore::openCursor(ScriptExecutionContext* context, const Deprecated::ScriptValue&amp; key, const String&amp; direction, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     RefPtr&lt;IDBKeyRange&gt; keyRange = IDBKeyRange::only(context, key, ec);
</span><span class="cx">     if (ec)
</span><span class="lines">@@ -558,7 +558,7 @@
</span><span class="cx">     return request.release();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;IDBRequest&gt; IDBObjectStore::count(ScriptExecutionContext* context, const ScriptValue&amp; key, ExceptionCode&amp; ec)
</del><ins>+PassRefPtr&lt;IDBRequest&gt; IDBObjectStore::count(ScriptExecutionContext* context, const Deprecated::ScriptValue&amp; key, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     RefPtr&lt;IDBKeyRange&gt; keyRange = IDBKeyRange::only(context, key, ec);
</span><span class="cx">     if (ec)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesindexeddbIDBObjectStoreh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBObjectStore.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBObjectStore.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBObjectStore.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -65,21 +65,21 @@
</span><span class="cx">     PassRefPtr&lt;IDBTransaction&gt; transaction() const { return m_transaction; }
</span><span class="cx">     bool autoIncrement() const { return m_metadata.autoIncrement; }
</span><span class="cx"> 
</span><del>-    PassRefPtr&lt;IDBRequest&gt; add(JSC::ExecState*, ScriptValue&amp;, ExceptionCode&amp;);
-    PassRefPtr&lt;IDBRequest&gt; put(JSC::ExecState*, ScriptValue&amp;, ExceptionCode&amp;);
</del><ins>+    PassRefPtr&lt;IDBRequest&gt; add(JSC::ExecState*, Deprecated::ScriptValue&amp;, ExceptionCode&amp;);
+    PassRefPtr&lt;IDBRequest&gt; put(JSC::ExecState*, Deprecated::ScriptValue&amp;, ExceptionCode&amp;);
</ins><span class="cx">     PassRefPtr&lt;IDBRequest&gt; openCursor(ScriptExecutionContext*, ExceptionCode&amp;);
</span><span class="cx">     PassRefPtr&lt;IDBRequest&gt; openCursor(ScriptExecutionContext*, PassRefPtr&lt;IDBKeyRange&gt;, ExceptionCode&amp;);
</span><del>-    PassRefPtr&lt;IDBRequest&gt; openCursor(ScriptExecutionContext*, const ScriptValue&amp; key, ExceptionCode&amp;);
</del><ins>+    PassRefPtr&lt;IDBRequest&gt; openCursor(ScriptExecutionContext*, const Deprecated::ScriptValue&amp; key, ExceptionCode&amp;);
</ins><span class="cx">     PassRefPtr&lt;IDBRequest&gt; openCursor(ScriptExecutionContext*, PassRefPtr&lt;IDBKeyRange&gt;, const String&amp; direction, ExceptionCode&amp;);
</span><span class="cx">     PassRefPtr&lt;IDBRequest&gt; openCursor(ScriptExecutionContext*, PassRefPtr&lt;IDBKeyRange&gt;, const String&amp; direction, IDBDatabaseBackend::TaskType, ExceptionCode&amp;);
</span><del>-    PassRefPtr&lt;IDBRequest&gt; openCursor(ScriptExecutionContext*, const ScriptValue&amp; key, const String&amp; direction, ExceptionCode&amp;);
</del><ins>+    PassRefPtr&lt;IDBRequest&gt; openCursor(ScriptExecutionContext*, const Deprecated::ScriptValue&amp; key, const String&amp; direction, ExceptionCode&amp;);
</ins><span class="cx"> 
</span><del>-    PassRefPtr&lt;IDBRequest&gt; get(ScriptExecutionContext*, const ScriptValue&amp; key, ExceptionCode&amp;);
</del><ins>+    PassRefPtr&lt;IDBRequest&gt; get(ScriptExecutionContext*, const Deprecated::ScriptValue&amp; key, ExceptionCode&amp;);
</ins><span class="cx">     PassRefPtr&lt;IDBRequest&gt; get(ScriptExecutionContext*, PassRefPtr&lt;IDBKeyRange&gt;, ExceptionCode&amp;);
</span><del>-    PassRefPtr&lt;IDBRequest&gt; add(JSC::ExecState*, ScriptValue&amp;, const ScriptValue&amp; key, ExceptionCode&amp;);
-    PassRefPtr&lt;IDBRequest&gt; put(JSC::ExecState*, ScriptValue&amp;, const ScriptValue&amp; key, ExceptionCode&amp;);
</del><ins>+    PassRefPtr&lt;IDBRequest&gt; add(JSC::ExecState*, Deprecated::ScriptValue&amp;, const Deprecated::ScriptValue&amp; key, ExceptionCode&amp;);
+    PassRefPtr&lt;IDBRequest&gt; put(JSC::ExecState*, Deprecated::ScriptValue&amp;, const Deprecated::ScriptValue&amp; key, ExceptionCode&amp;);
</ins><span class="cx">     PassRefPtr&lt;IDBRequest&gt; deleteFunction(ScriptExecutionContext*, PassRefPtr&lt;IDBKeyRange&gt;, ExceptionCode&amp;);
</span><del>-    PassRefPtr&lt;IDBRequest&gt; deleteFunction(ScriptExecutionContext*, const ScriptValue&amp; key, ExceptionCode&amp;);
</del><ins>+    PassRefPtr&lt;IDBRequest&gt; deleteFunction(ScriptExecutionContext*, const Deprecated::ScriptValue&amp; key, ExceptionCode&amp;);
</ins><span class="cx">     PassRefPtr&lt;IDBRequest&gt; clear(ScriptExecutionContext*, ExceptionCode&amp;);
</span><span class="cx"> 
</span><span class="cx">     PassRefPtr&lt;IDBIndex&gt; createIndex(ScriptExecutionContext* context, const String&amp; name, const String&amp; keyPath, const Dictionary&amp; options, ExceptionCode&amp; ec) { return createIndex(context, name, IDBKeyPath(keyPath), options, ec); }
</span><span class="lines">@@ -92,10 +92,10 @@
</span><span class="cx"> 
</span><span class="cx">     PassRefPtr&lt;IDBRequest&gt; count(ScriptExecutionContext* context, ExceptionCode&amp; ec) { return count(context, static_cast&lt;IDBKeyRange*&gt;(0), ec); }
</span><span class="cx">     PassRefPtr&lt;IDBRequest&gt; count(ScriptExecutionContext*, PassRefPtr&lt;IDBKeyRange&gt;, ExceptionCode&amp;);
</span><del>-    PassRefPtr&lt;IDBRequest&gt; count(ScriptExecutionContext*, const ScriptValue&amp; key, ExceptionCode&amp;);
</del><ins>+    PassRefPtr&lt;IDBRequest&gt; count(ScriptExecutionContext*, const Deprecated::ScriptValue&amp; key, ExceptionCode&amp;);
</ins><span class="cx"> 
</span><del>-    PassRefPtr&lt;IDBRequest&gt; put(IDBDatabaseBackend::PutMode, PassRefPtr&lt;IDBAny&gt; source, JSC::ExecState*, ScriptValue&amp;, const ScriptValue&amp; key, ExceptionCode&amp;);
-    PassRefPtr&lt;IDBRequest&gt; put(IDBDatabaseBackend::PutMode, PassRefPtr&lt;IDBAny&gt; source, JSC::ExecState*, ScriptValue&amp;, PassRefPtr&lt;IDBKey&gt;, ExceptionCode&amp;);
</del><ins>+    PassRefPtr&lt;IDBRequest&gt; put(IDBDatabaseBackend::PutMode, PassRefPtr&lt;IDBAny&gt; source, JSC::ExecState*, Deprecated::ScriptValue&amp;, const Deprecated::ScriptValue&amp; key, ExceptionCode&amp;);
+    PassRefPtr&lt;IDBRequest&gt; put(IDBDatabaseBackend::PutMode, PassRefPtr&lt;IDBAny&gt; source, JSC::ExecState*, Deprecated::ScriptValue&amp;, PassRefPtr&lt;IDBKey&gt;, ExceptionCode&amp;);
</ins><span class="cx">     void markDeleted() { m_deleted = true; }
</span><span class="cx">     void transactionFinished();
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesindexeddbIDBRequestcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBRequest.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBRequest.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBRequest.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -213,7 +213,7 @@
</span><span class="cx">     return 0;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void IDBRequest::setResultCursor(PassRefPtr&lt;IDBCursor&gt; cursor, PassRefPtr&lt;IDBKey&gt; key, PassRefPtr&lt;IDBKey&gt; primaryKey, const ScriptValue&amp; value)
</del><ins>+void IDBRequest::setResultCursor(PassRefPtr&lt;IDBCursor&gt; cursor, PassRefPtr&lt;IDBKey&gt; key, PassRefPtr&lt;IDBKey&gt; primaryKey, const Deprecated::ScriptValue&amp; value)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(m_readyState == PENDING);
</span><span class="cx">     m_cursorKey = key;
</span><span class="lines">@@ -282,7 +282,7 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     DOMRequestState::Scope scope(m_requestState);
</span><del>-    ScriptValue value = deserializeIDBValueBuffer(requestState(), buffer);
</del><ins>+    Deprecated::ScriptValue value = deserializeIDBValueBuffer(requestState(), buffer);
</ins><span class="cx">     ASSERT(!m_pendingCursor);
</span><span class="cx">     RefPtr&lt;IDBCursor&gt; cursor;
</span><span class="cx">     switch (m_cursorType) {
</span><span class="lines">@@ -321,7 +321,7 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     DOMRequestState::Scope scope(m_requestState);
</span><del>-    ScriptValue value = deserializeIDBValueBuffer(requestState(), valueBuffer);
</del><ins>+    Deprecated::ScriptValue value = deserializeIDBValueBuffer(requestState(), valueBuffer);
</ins><span class="cx">     onSuccessInternal(value);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -348,7 +348,7 @@
</span><span class="cx">     ASSERT(keyPath == effectiveObjectStore(m_source)-&gt;keyPath());
</span><span class="cx"> #endif
</span><span class="cx">     DOMRequestState::Scope scope(m_requestState);
</span><del>-    ScriptValue value = deserializeIDBValueBuffer(requestState(), valueBuffer);
</del><ins>+    Deprecated::ScriptValue value = deserializeIDBValueBuffer(requestState(), valueBuffer);
</ins><span class="cx"> 
</span><span class="cx">     RefPtr&lt;IDBKey&gt; primaryKey = prpPrimaryKey;
</span><span class="cx"> #ifndef NDEBUG
</span><span class="lines">@@ -383,7 +383,7 @@
</span><span class="cx">     return onSuccessInternal(deserializeIDBValue(requestState(), value));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void IDBRequest::onSuccessInternal(const ScriptValue&amp; value)
</del><ins>+void IDBRequest::onSuccessInternal(const Deprecated::ScriptValue&amp; value)
</ins><span class="cx"> {
</span><span class="cx">     m_result = IDBAny::create(value);
</span><span class="cx">     if (m_pendingCursor) {
</span><span class="lines">@@ -400,7 +400,7 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     DOMRequestState::Scope scope(m_requestState);
</span><del>-    ScriptValue value = deserializeIDBValueBuffer(requestState(), buffer);
</del><ins>+    Deprecated::ScriptValue value = deserializeIDBValueBuffer(requestState(), buffer);
</ins><span class="cx">     ASSERT(m_pendingCursor);
</span><span class="cx">     setResultCursor(m_pendingCursor.release(), key, primaryKey, value);
</span><span class="cx">     enqueueEvent(createSuccessEvent());
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesindexeddbIDBRequesth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBRequest.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBRequest.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/indexeddb/IDBRequest.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -120,7 +120,7 @@
</span><span class="cx">     void enqueueEvent(PassRefPtr&lt;Event&gt;);
</span><span class="cx">     virtual bool shouldEnqueueEvent() const;
</span><span class="cx">     void onSuccessInternal(PassRefPtr&lt;SerializedScriptValue&gt;);
</span><del>-    void onSuccessInternal(const ScriptValue&amp;);
</del><ins>+    void onSuccessInternal(const Deprecated::ScriptValue&amp;);
</ins><span class="cx"> 
</span><span class="cx">     RefPtr&lt;IDBAny&gt; m_result;
</span><span class="cx">     unsigned short m_errorCode;
</span><span class="lines">@@ -140,7 +140,7 @@
</span><span class="cx">     virtual void derefEventTarget() OVERRIDE FINAL { deref(); }
</span><span class="cx"> 
</span><span class="cx">     PassRefPtr&lt;IDBCursor&gt; getResultCursor();
</span><del>-    void setResultCursor(PassRefPtr&lt;IDBCursor&gt;, PassRefPtr&lt;IDBKey&gt;, PassRefPtr&lt;IDBKey&gt; primaryKey, const ScriptValue&amp;);
</del><ins>+    void setResultCursor(PassRefPtr&lt;IDBCursor&gt;, PassRefPtr&lt;IDBKey&gt;, PassRefPtr&lt;IDBKey&gt; primaryKey, const Deprecated::ScriptValue&amp;);
</ins><span class="cx"> 
</span><span class="cx">     RefPtr&lt;IDBAny&gt; m_source;
</span><span class="cx">     const IDBDatabaseBackend::TaskType m_taskType;
</span><span class="lines">@@ -155,7 +155,7 @@
</span><span class="cx">     RefPtr&lt;IDBCursor&gt; m_pendingCursor;
</span><span class="cx">     RefPtr&lt;IDBKey&gt; m_cursorKey;
</span><span class="cx">     RefPtr&lt;IDBKey&gt; m_cursorPrimaryKey;
</span><del>-    ScriptValue m_cursorValue;
</del><ins>+    Deprecated::ScriptValue m_cursorValue;
</ins><span class="cx">     bool m_didFireUpgradeNeededEvent;
</span><span class="cx">     bool m_preventPropagation;
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesmediasourceDOMURLMediaSourcecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/mediasource/DOMURLMediaSource.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/mediasource/DOMURLMediaSource.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/mediasource/DOMURLMediaSource.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -34,12 +34,12 @@
</span><span class="cx"> #if ENABLE(MEDIA_SOURCE)
</span><span class="cx"> 
</span><span class="cx"> #include &quot;DOMURL.h&quot;
</span><del>-#include &quot;MediaSourceBase.h&quot;
</del><ins>+#include &quot;MediaSource.h&quot;
</ins><span class="cx"> #include &lt;wtf/MainThread.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-String DOMURLMediaSource::createObjectURL(ScriptExecutionContext* scriptExecutionContext, MediaSourceBase* source)
</del><ins>+String DOMURLMediaSource::createObjectURL(ScriptExecutionContext* scriptExecutionContext, MediaSource* source)
</ins><span class="cx"> {
</span><span class="cx">     // Since WebWorkers cannot obtain MediaSource objects, we should be on the main thread.
</span><span class="cx">     ASSERT(isMainThread());
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesmediasourceDOMURLMediaSourceh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/mediasource/DOMURLMediaSource.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/mediasource/DOMURLMediaSource.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/mediasource/DOMURLMediaSource.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -37,12 +37,12 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-class MediaSourceBase;
</del><ins>+class MediaSource;
</ins><span class="cx"> class ScriptExecutionContext;
</span><span class="cx"> 
</span><span class="cx"> class DOMURLMediaSource {
</span><span class="cx"> public:
</span><del>-    static String createObjectURL(ScriptExecutionContext*, MediaSourceBase*);
</del><ins>+    static String createObjectURL(ScriptExecutionContext*, MediaSource*);
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesmediasourceMediaSourcecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/mediasource/MediaSource.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/mediasource/MediaSource.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/mediasource/MediaSource.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -36,11 +36,14 @@
</span><span class="cx"> #include &quot;AudioTrack.h&quot;
</span><span class="cx"> #include &quot;AudioTrackList.h&quot;
</span><span class="cx"> #include &quot;ContentType.h&quot;
</span><ins>+#include &quot;Event.h&quot;
+#include &quot;ExceptionCode.h&quot;
</ins><span class="cx"> #include &quot;ExceptionCodePlaceholder.h&quot;
</span><span class="cx"> #include &quot;GenericEventQueue.h&quot;
</span><span class="cx"> #include &quot;HTMLMediaElement.h&quot;
</span><span class="cx"> #include &quot;Logging.h&quot;
</span><span class="cx"> #include &quot;MIMETypeRegistry.h&quot;
</span><ins>+#include &quot;MediaError.h&quot;
</ins><span class="cx"> #include &quot;MediaPlayer.h&quot;
</span><span class="cx"> #include &quot;MediaSourceRegistry.h&quot;
</span><span class="cx"> #include &quot;SourceBufferPrivate.h&quot;
</span><span class="lines">@@ -51,6 +54,7 @@
</span><span class="cx"> #include &quot;VideoTrackList.h&quot;
</span><span class="cx"> #include &lt;runtime/Uint8Array.h&gt;
</span><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><ins>+#include &lt;wtf/text/WTFString.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -62,7 +66,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> MediaSource::MediaSource(ScriptExecutionContext&amp; context)
</span><del>-    : MediaSourceBase(context)
</del><ins>+    : ActiveDOMObject(&amp;context)
+    , m_mediaElement(0)
+    , m_readyState(closedKeyword())
+    , m_asyncEventQueue(*this)
</ins><span class="cx"> {
</span><span class="cx">     LOG(Media, &quot;MediaSource::MediaSource %p&quot;, this);
</span><span class="cx">     m_sourceBuffers = SourceBufferList::create(scriptExecutionContext());
</span><span class="lines">@@ -75,6 +82,314 @@
</span><span class="cx">     ASSERT(isClosed());
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+const AtomicString&amp; MediaSource::openKeyword()
+{
+    DEFINE_STATIC_LOCAL(const AtomicString, open, (&quot;open&quot;, AtomicString::ConstructFromLiteral));
+    return open;
+}
+
+const AtomicString&amp; MediaSource::closedKeyword()
+{
+    DEFINE_STATIC_LOCAL(const AtomicString, closed, (&quot;closed&quot;, AtomicString::ConstructFromLiteral));
+    return closed;
+}
+
+const AtomicString&amp; MediaSource::endedKeyword()
+{
+    DEFINE_STATIC_LOCAL(const AtomicString, ended, (&quot;ended&quot;, AtomicString::ConstructFromLiteral));
+    return ended;
+}
+
+void MediaSource::setPrivateAndOpen(PassRef&lt;MediaSourcePrivate&gt; mediaSourcePrivate)
+{
+    ASSERT(!m_private);
+    ASSERT(m_mediaElement);
+    m_private = std::move(mediaSourcePrivate);
+    setReadyState(openKeyword());
+}
+
+void MediaSource::addedToRegistry()
+{
+    setPendingActivity(this);
+}
+
+void MediaSource::removedFromRegistry()
+{
+    unsetPendingActivity(this);
+}
+
+double MediaSource::duration() const
+{
+    return isClosed() ? std::numeric_limits&lt;float&gt;::quiet_NaN() : m_private-&gt;duration();
+}
+
+PassRefPtr&lt;TimeRanges&gt; MediaSource::buffered() const
+{
+    // Implements MediaSource algorithm for HTMLMediaElement.buffered.
+    // https://dvcs.w3.org/hg/html-media/raw-file/default/media-source/media-source.html#htmlmediaelement-extensions
+    Vector&lt;RefPtr&lt;TimeRanges&gt;&gt; ranges = activeRanges();
+
+    // 1. If activeSourceBuffers.length equals 0 then return an empty TimeRanges object and abort these steps.
+    if (ranges.isEmpty())
+        return TimeRanges::create();
+
+    // 2. Let active ranges be the ranges returned by buffered for each SourceBuffer object in activeSourceBuffers.
+    // 3. Let highest end time be the largest range end time in the active ranges.
+    double highestEndTime = -1;
+    for (size_t i = 0; i &lt; ranges.size(); ++i) {
+        unsigned length = ranges[i]-&gt;length();
+        if (length)
+            highestEndTime = std::max(highestEndTime, ranges[i]-&gt;end(length - 1, ASSERT_NO_EXCEPTION));
+    }
+
+    // Return an empty range if all ranges are empty.
+    if (highestEndTime &lt; 0)
+        return TimeRanges::create();
+
+    // 4. Let intersection ranges equal a TimeRange object containing a single range from 0 to highest end time.
+    RefPtr&lt;TimeRanges&gt; intersectionRanges = TimeRanges::create(0, highestEndTime);
+
+    // 5. For each SourceBuffer object in activeSourceBuffers run the following steps:
+    bool ended = readyState() == endedKeyword();
+    for (size_t i = 0; i &lt; ranges.size(); ++i) {
+        // 5.1 Let source ranges equal the ranges returned by the buffered attribute on the current SourceBuffer.
+        TimeRanges* sourceRanges = ranges[i].get();
+
+        // 5.2 If readyState is &quot;ended&quot;, then set the end time on the last range in source ranges to highest end time.
+        if (ended &amp;&amp; sourceRanges-&gt;length())
+            sourceRanges-&gt;add(sourceRanges-&gt;start(sourceRanges-&gt;length() - 1, ASSERT_NO_EXCEPTION), highestEndTime);
+
+        // 5.3 Let new intersection ranges equal the the intersection between the intersection ranges and the source ranges.
+        // 5.4 Replace the ranges in intersection ranges with the new intersection ranges.
+        intersectionRanges-&gt;intersectWith(sourceRanges);
+    }
+
+    return intersectionRanges.release();
+}
+
+class SourceBufferBufferedDoesNotContainTime {
+public:
+    SourceBufferBufferedDoesNotContainTime(double time) : m_time(time) { }
+    bool operator()(RefPtr&lt;SourceBuffer&gt; sourceBuffer)
+    {
+        return !sourceBuffer-&gt;buffered()-&gt;contain(m_time);
+    }
+
+    double m_time;
+};
+
+class SourceBufferBufferedHasEnough {
+public:
+    SourceBufferBufferedHasEnough(double time, double duration) : m_time(time), m_duration(duration) { }
+    bool operator()(RefPtr&lt;SourceBuffer&gt; sourceBuffer)
+    {
+        size_t rangePos = sourceBuffer-&gt;buffered()-&gt;find(m_time);
+        if (rangePos == notFound)
+            return false;
+
+        double endTime = sourceBuffer-&gt;buffered()-&gt;end(rangePos, IGNORE_EXCEPTION);
+        return m_duration - endTime &lt; 1;
+    }
+
+    double m_time;
+    double m_duration;
+};
+
+class SourceBufferBufferedHasFuture {
+public:
+    SourceBufferBufferedHasFuture(double time) : m_time(time) { }
+    bool operator()(RefPtr&lt;SourceBuffer&gt; sourceBuffer)
+    {
+        size_t rangePos = sourceBuffer-&gt;buffered()-&gt;find(m_time);
+        if (rangePos == notFound)
+            return false;
+
+        double endTime = sourceBuffer-&gt;buffered()-&gt;end(rangePos, IGNORE_EXCEPTION);
+        return endTime - m_time &gt; 1;
+    }
+
+    double m_time;
+};
+
+void MediaSource::monitorSourceBuffers()
+{
+    double currentTime = mediaElement()-&gt;currentTime();
+
+    // 2.4.4 SourceBuffer Monitoring
+    // https://dvcs.w3.org/hg/html-media/raw-file/default/media-source/media-source.html#buffer-monitoring
+    // ↳ If buffered for all objects in activeSourceBuffers do not contain TimeRanges for the current
+    // playback position:
+    auto begin = m_activeSourceBuffers-&gt;begin();
+    auto end = m_activeSourceBuffers-&gt;end();
+    if (std::all_of(begin, end, SourceBufferBufferedDoesNotContainTime(currentTime))) {
+        // 1. Set the HTMLMediaElement.readyState attribute to HAVE_METADATA.
+        // 2. If this is the first transition to HAVE_METADATA, then queue a task to fire a simple event
+        // named loadedmetadata at the media element.
+        m_private-&gt;setReadyState(MediaPlayer::HaveMetadata);
+
+        // 3. Abort these steps.
+        return;
+    }
+
+    // ↳ If buffered for all objects in activeSourceBuffers contain TimeRanges that include the current
+    // playback position and enough data to ensure uninterrupted playback:
+    if (std::all_of(begin, end, SourceBufferBufferedHasEnough(currentTime, mediaElement()-&gt;duration()))) {
+        // 1. Set the HTMLMediaElement.readyState attribute to HAVE_ENOUGH_DATA.
+        // 2. Queue a task to fire a simple event named canplaythrough at the media element.
+        // 3. Playback may resume at this point if it was previously suspended by a transition to HAVE_CURRENT_DATA.
+        m_private-&gt;setReadyState(MediaPlayer::HaveEnoughData);
+
+        // 4. Abort these steps.
+        return;
+    }
+
+    // ↳ If buffered for at least one object in activeSourceBuffers contains a TimeRange that includes
+    // the current playback position but not enough data to ensure uninterrupted playback:
+    if (std::any_of(begin, end, SourceBufferBufferedHasFuture(currentTime))) {
+        // 1. Set the HTMLMediaElement.readyState attribute to HAVE_FUTURE_DATA.
+        // 2. If the previous value of HTMLMediaElement.readyState was less than HAVE_FUTURE_DATA, then queue a task to fire a simple event named canplay at the media element.
+        // 3. Playback may resume at this point if it was previously suspended by a transition to HAVE_CURRENT_DATA.
+        m_private-&gt;setReadyState(MediaPlayer::HaveFutureData);
+
+        // 4. Abort these steps.
+        return;
+    }
+
+    // ↳ If buffered for at least one object in activeSourceBuffers contains a TimeRange that ends
+    // at the current playback position and does not have a range covering the time immediately
+    // after the current position:
+    // NOTE: Logically, !(all objects do not contain currentTime) == (some objects contain current time)
+
+    // 1. Set the HTMLMediaElement.readyState attribute to HAVE_CURRENT_DATA.
+    // 2. If this is the first transition to HAVE_CURRENT_DATA, then queue a task to fire a simple
+    // event named loadeddata at the media element.
+    // 3. Playback is suspended at this point since the media element doesn't have enough data to
+    // advance the media timeline.
+    m_private-&gt;setReadyState(MediaPlayer::HaveCurrentData);
+    
+    // 4. Abort these steps.
+}
+
+void MediaSource::setDuration(double duration, ExceptionCode&amp; ec)
+{
+    if (duration &lt; 0.0 || std::isnan(duration)) {
+        ec = INVALID_ACCESS_ERR;
+        return;
+    }
+    if (!isOpen()) {
+        ec = INVALID_STATE_ERR;
+        return;
+    }
+    m_private-&gt;setDuration(duration);
+}
+
+
+void MediaSource::setReadyState(const AtomicString&amp; state)
+{
+    ASSERT(state == openKeyword() || state == closedKeyword() || state == endedKeyword());
+
+    AtomicString oldState = readyState();
+    LOG(Media, &quot;MediaSource::setReadyState() %p : %s -&gt; %s&quot;, this, oldState.string().ascii().data(), state.string().ascii().data());
+
+    if (state == closedKeyword()) {
+        m_private.clear();
+        m_mediaElement = 0;
+    }
+
+    if (oldState == state)
+        return;
+
+    m_readyState = state;
+
+    onReadyStateChange(oldState, state);
+}
+
+static bool SourceBufferIsUpdating(RefPtr&lt;SourceBuffer&gt;&amp; sourceBuffer)
+{
+    return sourceBuffer-&gt;updating();
+}
+
+void MediaSource::endOfStream(const AtomicString&amp; error, ExceptionCode&amp; ec)
+{
+    // 2.2 https://dvcs.w3.org/hg/html-media/raw-file/tip/media-source/media-source.html#widl-MediaSource-endOfStream-void-EndOfStreamError-error
+    // 1. If the readyState attribute is not in the &quot;open&quot; state then throw an
+    // INVALID_STATE_ERR exception and abort these steps.
+    if (!isOpen()) {
+        ec = INVALID_STATE_ERR;
+        return;
+    }
+
+    // 2. If the updating attribute equals true on any SourceBuffer in sourceBuffers, then throw an
+    // INVALID_STATE_ERR exception and abort these steps.
+    if (std::any_of(m_sourceBuffers-&gt;begin(), m_sourceBuffers-&gt;end(), SourceBufferIsUpdating)) {
+        ec = INVALID_STATE_ERR;
+        return;
+    }
+
+    // 3. Run the end of stream algorithm with the error parameter set to error.
+    streamEndedWithError(error, ec);
+}
+
+void MediaSource::streamEndedWithError(const AtomicString&amp; error, ExceptionCode&amp; ec)
+{
+    DEFINE_STATIC_LOCAL(const AtomicString, network, (&quot;network&quot;, AtomicString::ConstructFromLiteral));
+    DEFINE_STATIC_LOCAL(const AtomicString, decode, (&quot;decode&quot;, AtomicString::ConstructFromLiteral));
+
+    // 2.4.7 https://dvcs.w3.org/hg/html-media/raw-file/tip/media-source/media-source.html#end-of-stream-algorithm
+    // 1. Change the readyState attribute value to &quot;ended&quot;.
+    // 2. Queue a task to fire a simple event named sourceended at the MediaSource.
+    setReadyState(endedKeyword());
+
+    // 3.
+    if (error.isEmpty()) {
+        // ↳ If error is not set, is null, or is an empty string
+        // 1. Run the duration change algorithm with new duration set to the highest end timestamp
+        // across all SourceBuffer objects in sourceBuffers.
+        MediaTime maxEndTimestamp;
+        for (auto it = m_sourceBuffers-&gt;begin(), end = m_sourceBuffers-&gt;end(); it != end; ++it)
+            maxEndTimestamp = std::max((*it)-&gt;highestPresentationEndTimestamp(), maxEndTimestamp);
+        m_private-&gt;setDuration(maxEndTimestamp.toDouble());
+
+        // 2. Notify the media element that it now has all of the media data.
+        m_private-&gt;markEndOfStream(MediaSourcePrivate::EosNoError);
+    } else if (error == network) {
+        // ↳ If error is set to &quot;network&quot;
+        ASSERT(m_mediaElement);
+        if (m_mediaElement-&gt;readyState() == HTMLMediaElement::HAVE_NOTHING) {
+            //  ↳ If the HTMLMediaElement.readyState attribute equals HAVE_NOTHING
+            //    Run the &quot;If the media data cannot be fetched at all, due to network errors, causing
+            //    the user agent to give up trying to fetch the resource&quot; steps of the resource fetch algorithm.
+            //    NOTE: This step is handled by HTMLMediaElement::mediaLoadingFailed().
+            m_mediaElement-&gt;mediaLoadingFailed(MediaPlayer::NetworkError);
+        } else {
+            //  ↳ If the HTMLMediaElement.readyState attribute is greater than HAVE_NOTHING
+            //    Run the &quot;If the connection is interrupted after some media data has been received, causing the
+            //    user agent to give up trying to fetch the resource&quot; steps of the resource fetch algorithm.
+            //    NOTE: This step is handled by HTMLMediaElement::mediaLoadingFailedFatally().
+            m_mediaElement-&gt;mediaLoadingFailedFatally(MediaPlayer::NetworkError);
+        }
+    } else if (error == decode) {
+        // ↳ If error is set to &quot;decode&quot;
+        ASSERT(m_mediaElement);
+        if (m_mediaElement-&gt;readyState() == HTMLMediaElement::HAVE_NOTHING) {
+            //  ↳ If the HTMLMediaElement.readyState attribute equals HAVE_NOTHING
+            //    Run the &quot;If the media data can be fetched but is found by inspection to be in an unsupported
+            //    format, or can otherwise not be rendered at all&quot; steps of the resource fetch algorithm.
+            //    NOTE: This step is handled by HTMLMediaElement::mediaLoadingFailed().
+            m_mediaElement-&gt;mediaLoadingFailed(MediaPlayer::FormatError);
+        } else {
+            //  ↳ If the HTMLMediaElement.readyState attribute is greater than HAVE_NOTHING
+            //    Run the media data is corrupted steps of the resource fetch algorithm.
+            //    NOTE: This step is handled by HTMLMediaElement::mediaLoadingFailedFatally().
+            m_mediaElement-&gt;mediaLoadingFailedFatally(MediaPlayer::DecodeError);
+        }
+    } else {
+        // ↳ Otherwise
+        //   Throw an INVALID_ACCESS_ERR exception.
+        ec = INVALID_ACCESS_ERR;
+    }
+}
+
</ins><span class="cx"> SourceBuffer* MediaSource::addSourceBuffer(const String&amp; type, ExceptionCode&amp; ec)
</span><span class="cx"> {
</span><span class="cx">     LOG(Media, &quot;MediaSource::addSourceBuffer(%s) %p&quot;, type.ascii().data(), this);
</span><span class="lines">@@ -256,58 +571,25 @@
</span><span class="cx">             // cancelable, and that uses the TrackEvent interface, at the SourceBuffer textTracks list.
</span><span class="cx">             textTracks-&gt;remove(track);
</span><span class="cx">         }
</span><del>-
</del><ins>+        
</ins><span class="cx">         // 9.4 If the removed enabled text track flag equals true, then queue a task to fire a simple event
</span><span class="cx">         // named change at the HTMLMediaElement textTracks list.
</span><span class="cx">         if (removedEnabledTextTrack)
</span><span class="cx">             mediaElement()-&gt;textTracks()-&gt;scheduleChangeEvent();
</span><span class="cx">     }
</span><del>-
-
</del><ins>+    
+    
</ins><span class="cx">     // 10. If sourceBuffer is in activeSourceBuffers, then remove sourceBuffer from activeSourceBuffers ...
</span><span class="cx">     m_activeSourceBuffers-&gt;remove(buffer);
</span><del>-
</del><ins>+    
</ins><span class="cx">     // 11. Remove sourceBuffer from sourceBuffers and fire a removesourcebuffer event
</span><span class="cx">     // on that object.
</span><span class="cx">     m_sourceBuffers-&gt;remove(buffer);
</span><del>-
</del><ins>+    
</ins><span class="cx">     // 12. Destroy all resources for sourceBuffer.
</span><span class="cx">     buffer-&gt;removedFromMediaSource();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void MediaSource::onReadyStateChange(const AtomicString&amp; oldState, const AtomicString&amp; newState)
-{
-    if (isOpen()) {
-        scheduleEvent(eventNames().sourceopenEvent);
-        return;
-    }
-
-    if (oldState == openKeyword() &amp;&amp; newState == endedKeyword()) {
-        scheduleEvent(eventNames().sourceendedEvent);
-        return;
-    }
-
-    ASSERT(isClosed());
-
-    m_activeSourceBuffers-&gt;clear();
-
-    // Clear SourceBuffer references to this object.
-    for (unsigned long i = 0; i &lt; m_sourceBuffers-&gt;length(); ++i)
-        m_sourceBuffers-&gt;item(i)-&gt;removedFromMediaSource();
-    m_sourceBuffers-&gt;clear();
-
-    scheduleEvent(eventNames().sourcecloseEvent);
-}
-
-Vector&lt;RefPtr&lt;TimeRanges&gt;&gt; MediaSource::activeRanges() const
-{
-    Vector&lt;RefPtr&lt;TimeRanges&gt;&gt; activeRanges(m_activeSourceBuffers-&gt;length());
-    for (size_t i = 0; i &lt; m_activeSourceBuffers-&gt;length(); ++i)
-        activeRanges[i] = m_activeSourceBuffers-&gt;item(i)-&gt;buffered(ASSERT_NO_EXCEPTION);
-
-    return activeRanges;
-}
-
</del><span class="cx"> bool MediaSource::isTypeSupported(const String&amp; type)
</span><span class="cx"> {
</span><span class="cx">     LOG(Media, &quot;MediaSource::isTypeSupported(%s)&quot;, type.ascii().data());
</span><span class="lines">@@ -336,11 +618,21 @@
</span><span class="cx">     return MediaPlayer::supportsType(parameters, 0) != MediaPlayer::IsNotSupported;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EventTargetInterface MediaSource::eventTargetInterface() const
</del><ins>+bool MediaSource::isOpen() const
</ins><span class="cx"> {
</span><del>-    return MediaSourceEventTargetInterfaceType;
</del><ins>+    return readyState() == openKeyword();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+bool MediaSource::isClosed() const
+{
+    return readyState() == closedKeyword();
+}
+
+void MediaSource::close()
+{
+    setReadyState(closedKeyword());
+}
+
</ins><span class="cx"> void MediaSource::sourceBufferDidChangeAcitveState(SourceBuffer* sourceBuffer, bool active)
</span><span class="cx"> {
</span><span class="cx">     if (active &amp;&amp; !m_activeSourceBuffers-&gt;contains(sourceBuffer))
</span><span class="lines">@@ -349,109 +641,122 @@
</span><span class="cx">         m_activeSourceBuffers-&gt;remove(sourceBuffer);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-class SourceBufferBufferedDoesNotContainTime {
-public:
-    SourceBufferBufferedDoesNotContainTime(double time) : m_time(time) { }
-    bool operator()(RefPtr&lt;SourceBuffer&gt; sourceBuffer)
-    {
-        return !sourceBuffer-&gt;buffered()-&gt;contain(m_time);
-    }
</del><ins>+bool MediaSource::attachToElement(HTMLMediaElement* element)
+{
+    if (m_mediaElement)
+        return false;
</ins><span class="cx"> 
</span><del>-    double m_time;
-};
</del><ins>+    ASSERT(isClosed());
</ins><span class="cx"> 
</span><del>-class SourceBufferBufferedHasEnough {
-public:
-    SourceBufferBufferedHasEnough(double time, double duration) : m_time(time), m_duration(duration) { }
-    bool operator()(RefPtr&lt;SourceBuffer&gt; sourceBuffer)
-    {
-        size_t rangePos = sourceBuffer-&gt;buffered()-&gt;find(m_time);
-        if (rangePos == notFound)
-            return false;
</del><ins>+    m_mediaElement = element;
+    return true;
+}
</ins><span class="cx"> 
</span><del>-        double endTime = sourceBuffer-&gt;buffered()-&gt;end(rangePos, IGNORE_EXCEPTION);
-        return m_duration - endTime &lt; 1;
-    }
</del><ins>+void MediaSource::openIfInEndedState()
+{
+    if (m_readyState != endedKeyword())
+        return;
</ins><span class="cx"> 
</span><del>-    double m_time;
-    double m_duration;
-};
</del><ins>+    setReadyState(openKeyword());
+    m_private-&gt;unmarkEndOfStream();
+}
</ins><span class="cx"> 
</span><del>-class SourceBufferBufferedHasFuture {
-public:
-    SourceBufferBufferedHasFuture(double time) : m_time(time) { }
-    bool operator()(RefPtr&lt;SourceBuffer&gt; sourceBuffer)
-    {
-        size_t rangePos = sourceBuffer-&gt;buffered()-&gt;find(m_time);
-        if (rangePos == notFound)
-            return false;
</del><ins>+bool MediaSource::hasPendingActivity() const
+{
+    return m_private || m_asyncEventQueue.hasPendingEvents()
+        || ActiveDOMObject::hasPendingActivity();
+}
</ins><span class="cx"> 
</span><del>-        double endTime = sourceBuffer-&gt;buffered()-&gt;end(rangePos, IGNORE_EXCEPTION);
-        return endTime - m_time &gt; 1;
</del><ins>+void MediaSource::stop()
+{
+    m_asyncEventQueue.close();
+    if (!isClosed())
+        setReadyState(closedKeyword());
+    m_private.clear();
+}
+
+void MediaSource::onReadyStateChange(const AtomicString&amp; oldState, const AtomicString&amp; newState)
+{
+    if (isOpen()) {
+        scheduleEvent(eventNames().sourceopenEvent);
+        return;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    double m_time;
-};
</del><ins>+    if (oldState == openKeyword() &amp;&amp; newState == endedKeyword()) {
+        scheduleEvent(eventNames().sourceendedEvent);
+        return;
+    }
</ins><span class="cx"> 
</span><del>-void MediaSource::monitorSourceBuffers()
</del><ins>+    ASSERT(isClosed());
+
+    m_activeSourceBuffers-&gt;clear();
+
+    // Clear SourceBuffer references to this object.
+    for (unsigned long i = 0, length =  m_sourceBuffers-&gt;length(); i &lt; length; ++i)
+        m_sourceBuffers-&gt;item(i)-&gt;removedFromMediaSource();
+    m_sourceBuffers-&gt;clear();
+    
+    scheduleEvent(eventNames().sourcecloseEvent);
+}
+
+Vector&lt;RefPtr&lt;TimeRanges&gt;&gt; MediaSource::activeRanges() const
</ins><span class="cx"> {
</span><del>-    double currentTime = mediaElement()-&gt;currentTime();
</del><ins>+    Vector&lt;RefPtr&lt;TimeRanges&gt;&gt; activeRanges(m_activeSourceBuffers-&gt;length());
+    for (size_t i = 0, length = m_activeSourceBuffers-&gt;length(); i &lt; length; ++i)
+        activeRanges[i] = m_activeSourceBuffers-&gt;item(i)-&gt;buffered(ASSERT_NO_EXCEPTION);
</ins><span class="cx"> 
</span><del>-    // 2.4.4 SourceBuffer Monitoring
-    // https://dvcs.w3.org/hg/html-media/raw-file/default/media-source/media-source.html#buffer-monitoring
-    // ↳ If buffered for all objects in activeSourceBuffers do not contain TimeRanges for the current
-    // playback position:
-    auto begin = m_activeSourceBuffers-&gt;begin();
-    auto end = m_activeSourceBuffers-&gt;end();
-    if (std::all_of(begin, end, SourceBufferBufferedDoesNotContainTime(currentTime))) {
-        // 1. Set the HTMLMediaElement.readyState attribute to HAVE_METADATA.
-        // 2. If this is the first transition to HAVE_METADATA, then queue a task to fire a simple event
-        // named loadedmetadata at the media element.
-        m_private-&gt;setReadyState(MediaPlayer::HaveMetadata);
</del><ins>+    return activeRanges;
+}
</ins><span class="cx"> 
</span><del>-        // 3. Abort these steps.
-        return;
</del><ins>+RefPtr&lt;SourceBufferPrivate&gt; MediaSource::createSourceBufferPrivate(const ContentType&amp; type, ExceptionCode&amp; ec)
+{
+    RefPtr&lt;SourceBufferPrivate&gt; sourceBufferPrivate;
+    switch (m_private-&gt;addSourceBuffer(type, sourceBufferPrivate)) {
+    case MediaSourcePrivate::Ok: {
+        return sourceBufferPrivate;
</ins><span class="cx">     }
</span><ins>+    case MediaSourcePrivate::NotSupported:
+        // 2.2 https://dvcs.w3.org/hg/html-media/raw-file/default/media-source/media-source.html#widl-MediaSource-addSourceBuffer-SourceBuffer-DOMString-type
+        // Step 2: If type contains a MIME type ... that is not supported with the types
+        // specified for the other SourceBuffer objects in sourceBuffers, then throw
+        // a NOT_SUPPORTED_ERR exception and abort these steps.
+        ec = NOT_SUPPORTED_ERR;
+        return nullptr;
+    case MediaSourcePrivate::ReachedIdLimit:
+        // 2.2 https://dvcs.w3.org/hg/html-media/raw-file/default/media-source/media-source.html#widl-MediaSource-addSourceBuffer-SourceBuffer-DOMString-type
+        // Step 3: If the user agent can't handle any more SourceBuffer objects then throw
+        // a QUOTA_EXCEEDED_ERR exception and abort these steps.
+        ec = QUOTA_EXCEEDED_ERR;
+        return nullptr;
+    }
</ins><span class="cx"> 
</span><del>-    // ↳ If buffered for all objects in activeSourceBuffers contain TimeRanges that include the current
-    // playback position and enough data to ensure uninterrupted playback:
-    if (std::all_of(begin, end, SourceBufferBufferedHasEnough(currentTime, mediaElement()-&gt;duration()))) {
-        // 1. Set the HTMLMediaElement.readyState attribute to HAVE_ENOUGH_DATA.
-        // 2. Queue a task to fire a simple event named canplaythrough at the media element.
-        // 3. Playback may resume at this point if it was previously suspended by a transition to HAVE_CURRENT_DATA.
-        m_private-&gt;setReadyState(MediaPlayer::HaveEnoughData);
</del><ins>+    ASSERT_NOT_REACHED();
+    return nullptr;
+}
</ins><span class="cx"> 
</span><del>-        // 4. Abort these steps.
-        return;
-    }
</del><ins>+void MediaSource::scheduleEvent(const AtomicString&amp; eventName)
+{
+    RefPtr&lt;Event&gt; event = Event::create(eventName, false, false);
+    event-&gt;setTarget(this);
</ins><span class="cx"> 
</span><del>-    // ↳ If buffered for at least one object in activeSourceBuffers contains a TimeRange that includes
-    // the current playback position but not enough data to ensure uninterrupted playback:
-    if (std::any_of(begin, end, SourceBufferBufferedHasFuture(currentTime))) {
-        // 1. Set the HTMLMediaElement.readyState attribute to HAVE_FUTURE_DATA.
-        // 2. If the previous value of HTMLMediaElement.readyState was less than HAVE_FUTURE_DATA, then queue a task to fire a simple event named canplay at the media element.
-        // 3. Playback may resume at this point if it was previously suspended by a transition to HAVE_CURRENT_DATA.
-        m_private-&gt;setReadyState(MediaPlayer::HaveFutureData);
</del><ins>+    m_asyncEventQueue.enqueueEvent(event.release());
+}
</ins><span class="cx"> 
</span><del>-        // 4. Abort these steps.
-        return;
-    }
</del><ins>+ScriptExecutionContext* MediaSource::scriptExecutionContext() const
+{
+    return ActiveDOMObject::scriptExecutionContext();
+}
</ins><span class="cx"> 
</span><del>-    // ↳ If buffered for at least one object in activeSourceBuffers contains a TimeRange that ends
-    // at the current playback position and does not have a range covering the time immediately
-    // after the current position:
-    // NOTE: Logically, !(all objects do not contain currentTime) == (some objects contain current time)
</del><ins>+EventTargetInterface MediaSource::eventTargetInterface() const
+{
+    return MediaSourceEventTargetInterfaceType;
+}
</ins><span class="cx"> 
</span><del>-    // 1. Set the HTMLMediaElement.readyState attribute to HAVE_CURRENT_DATA.
-    // 2. If this is the first transition to HAVE_CURRENT_DATA, then queue a task to fire a simple
-    // event named loadeddata at the media element.
-    // 3. Playback is suspended at this point since the media element doesn't have enough data to
-    // advance the media timeline.
-    m_private-&gt;setReadyState(MediaPlayer::HaveCurrentData);
</del><ins>+URLRegistry&amp; MediaSource::registry() const
+{
+    return MediaSourceRegistry::registry();
+}
</ins><span class="cx"> 
</span><del>-    // 4. Abort these steps.
</del><span class="cx"> }
</span><span class="cx"> 
</span><del>-} // namespace WebCore
-
</del><span class="cx"> #endif
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesmediasourceMediaSourceh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/mediasource/MediaSource.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/mediasource/MediaSource.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/mediasource/MediaSource.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -33,19 +33,57 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(MEDIA_SOURCE)
</span><span class="cx"> 
</span><del>-#include &quot;MediaSourceBase.h&quot;
</del><ins>+#include &quot;ActiveDOMObject.h&quot;
+#include &quot;EventTarget.h&quot;
+#include &quot;GenericEventQueue.h&quot;
+#include &quot;HTMLMediaSource.h&quot;
+#include &quot;MediaSourcePrivate.h&quot;
</ins><span class="cx"> #include &quot;ScriptWrappable.h&quot;
</span><span class="cx"> #include &quot;SourceBuffer.h&quot;
</span><span class="cx"> #include &quot;SourceBufferList.h&quot;
</span><ins>+#include &quot;URLRegistry.h&quot;
+#include &lt;wtf/PassOwnPtr.h&gt;
</ins><span class="cx"> #include &lt;wtf/RefCounted.h&gt;
</span><ins>+#include &lt;wtf/Vector.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-class MediaSource : public MediaSourceBase, public ScriptWrappable {
</del><ins>+class GenericEventQueue;
+
+class MediaSource : public RefCounted&lt;MediaSource&gt;, public HTMLMediaSource, public ActiveDOMObject, public EventTargetWithInlineData, public ScriptWrappable {
</ins><span class="cx"> public:
</span><ins>+    static const AtomicString&amp; openKeyword();
+    static const AtomicString&amp; closedKeyword();
+    static const AtomicString&amp; endedKeyword();
+
</ins><span class="cx">     static PassRefPtr&lt;MediaSource&gt; create(ScriptExecutionContext&amp;);
</span><span class="cx">     virtual ~MediaSource();
</span><span class="cx"> 
</span><ins>+    void addedToRegistry();
+    void removedFromRegistry();
+    void openIfInEndedState();
+    bool isOpen() const;
+    void sourceBufferDidChangeAcitveState(SourceBuffer*, bool);
+    void streamEndedWithError(const AtomicString&amp; error, ExceptionCode&amp;);
+
+    // HTMLMediaSource
+    virtual bool attachToElement(HTMLMediaElement*) OVERRIDE;
+    virtual void setPrivateAndOpen(PassRef&lt;MediaSourcePrivate&gt;) OVERRIDE;
+    virtual void close() OVERRIDE;
+    virtual bool isClosed() const OVERRIDE;
+    virtual double duration() const OVERRIDE;
+    virtual PassRefPtr&lt;TimeRanges&gt; buffered() const OVERRIDE;
+    virtual void refHTMLMediaSource() OVERRIDE { ref(); }
+    virtual void derefHTMLMediaSource() OVERRIDE { deref(); }
+    virtual void monitorSourceBuffers() OVERRIDE;
+
+    void setDuration(double, ExceptionCode&amp;);
+    const AtomicString&amp; readyState() const { return m_readyState; }
+    void setReadyState(const AtomicString&amp;);
+    void endOfStream(const AtomicString&amp; error, ExceptionCode&amp;);
+
+    HTMLMediaElement* mediaElement() const { return m_mediaElement; }
+
</ins><span class="cx">     // MediaSource.idl methods
</span><span class="cx">     SourceBufferList* sourceBuffers() { return m_sourceBuffers.get(); }
</span><span class="cx">     SourceBufferList* activeSourceBuffers() { return m_activeSourceBuffers.get(); }
</span><span class="lines">@@ -53,28 +91,41 @@
</span><span class="cx">     void removeSourceBuffer(SourceBuffer*, ExceptionCode&amp;);
</span><span class="cx">     static bool isTypeSupported(const String&amp; type);
</span><span class="cx"> 
</span><ins>+    // ActiveDOMObject interface
+    virtual bool hasPendingActivity() const OVERRIDE;
+    virtual void stop() OVERRIDE;
+
</ins><span class="cx">     // EventTarget interface
</span><ins>+    virtual ScriptExecutionContext* scriptExecutionContext() const OVERRIDE FINAL;
+    virtual void refEventTarget() OVERRIDE FINAL { ref(); }
+    virtual void derefEventTarget() OVERRIDE FINAL { deref(); }
</ins><span class="cx">     virtual EventTargetInterface eventTargetInterface() const OVERRIDE;
</span><span class="cx"> 
</span><del>-    using RefCounted&lt;MediaSourceBase&gt;::ref;
-    using RefCounted&lt;MediaSourceBase&gt;::deref;
</del><ins>+    // URLRegistrable interface
+    virtual URLRegistry&amp; registry() const OVERRIDE;
</ins><span class="cx"> 
</span><del>-    void sourceBufferDidChangeAcitveState(SourceBuffer*, bool);
</del><ins>+    using RefCounted&lt;MediaSource&gt;::ref;
+    using RefCounted&lt;MediaSource&gt;::deref;
</ins><span class="cx"> 
</span><del>-    virtual void monitorSourceBuffers() OVERRIDE;
-
-private:
</del><ins>+protected:
</ins><span class="cx">     explicit MediaSource(ScriptExecutionContext&amp;);
</span><span class="cx"> 
</span><del>-    // MediaSourceBase interface
-    virtual void onReadyStateChange(const AtomicString&amp;, const AtomicString&amp;) OVERRIDE;
-    virtual Vector&lt;RefPtr&lt;TimeRanges&gt;&gt; activeRanges() const OVERRIDE;
</del><ins>+    void onReadyStateChange(const AtomicString&amp; oldState, const AtomicString&amp; newState);
+    Vector&lt;RefPtr&lt;TimeRanges&gt;&gt; activeRanges() const;
</ins><span class="cx"> 
</span><ins>+    RefPtr&lt;SourceBufferPrivate&gt; createSourceBufferPrivate(const ContentType&amp;, ExceptionCode&amp;);
+    void scheduleEvent(const AtomicString&amp; eventName);
+    GenericEventQueue&amp; asyncEventQueue() { return m_asyncEventQueue; }
+
+    RefPtr&lt;MediaSourcePrivate&gt; m_private;
</ins><span class="cx">     RefPtr&lt;SourceBufferList&gt; m_sourceBuffers;
</span><span class="cx">     RefPtr&lt;SourceBufferList&gt; m_activeSourceBuffers;
</span><ins>+    HTMLMediaElement* m_mediaElement;
+    AtomicString m_readyState;
+    GenericEventQueue m_asyncEventQueue;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><del>-} // namespace WebCore
</del><ins>+}
</ins><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesmediasourceMediaSourceidl"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/mediasource/MediaSource.idl (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/mediasource/MediaSource.idl        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/mediasource/MediaSource.idl        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -32,6 +32,7 @@
</span><span class="cx">     Conditional=MEDIA_SOURCE,
</span><span class="cx">     ActiveDOMObject,
</span><span class="cx">     EventTarget,
</span><ins>+    EnabledBySetting=MediaSource,
</ins><span class="cx">     JSGenerateToJSObject,
</span><span class="cx">     JSGenerateToNativeObject,
</span><span class="cx">     Constructor,
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesmediasourceMediaSourceBasecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/mediasource/MediaSourceBase.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/mediasource/MediaSourceBase.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/mediasource/MediaSourceBase.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,305 +0,0 @@
</span><del>-/*
- * Copyright (C) 2013 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include &quot;config.h&quot;
-#include &quot;MediaSourceBase.h&quot;
-
-#if ENABLE(MEDIA_SOURCE)
-
-#include &quot;Event.h&quot;
-#include &quot;ExceptionCode.h&quot;
-#include &quot;ExceptionCodePlaceholder.h&quot;
-#include &quot;GenericEventQueue.h&quot;
-#include &quot;Logging.h&quot;
-#include &quot;MediaSourceRegistry.h&quot;
-#include &quot;SourceBufferPrivate.h&quot;
-#include &lt;wtf/text/CString.h&gt;
-#include &lt;wtf/text/WTFString.h&gt;
-
-namespace WebCore {
-
-MediaSourceBase::MediaSourceBase(ScriptExecutionContext&amp; context)
-    : ActiveDOMObject(&amp;context)
-    , m_mediaElement(0)
-    , m_readyState(closedKeyword())
-    , m_asyncEventQueue(*this)
-{
-}
-
-MediaSourceBase::~MediaSourceBase()
-{
-}
-
-const AtomicString&amp; MediaSourceBase::openKeyword()
-{
-    DEFINE_STATIC_LOCAL(const AtomicString, open, (&quot;open&quot;, AtomicString::ConstructFromLiteral));
-    return open;
-}
-
-const AtomicString&amp; MediaSourceBase::closedKeyword()
-{
-    DEFINE_STATIC_LOCAL(const AtomicString, closed, (&quot;closed&quot;, AtomicString::ConstructFromLiteral));
-    return closed;
-}
-
-const AtomicString&amp; MediaSourceBase::endedKeyword()
-{
-    DEFINE_STATIC_LOCAL(const AtomicString, ended, (&quot;ended&quot;, AtomicString::ConstructFromLiteral));
-    return ended;
-}
-
-void MediaSourceBase::setPrivateAndOpen(PassRef&lt;MediaSourcePrivate&gt; mediaSourcePrivate)
-{
-    ASSERT(!m_private);
-    ASSERT(m_mediaElement);
-    m_private = std::move(mediaSourcePrivate);
-    setReadyState(openKeyword());
-}
-
-void MediaSourceBase::addedToRegistry()
-{
-    setPendingActivity(this);
-}
-
-void MediaSourceBase::removedFromRegistry()
-{
-    unsetPendingActivity(this);
-}
-
-double MediaSourceBase::duration() const
-{
-    return isClosed() ? std::numeric_limits&lt;float&gt;::quiet_NaN() : m_private-&gt;duration();
-}
-
-PassRefPtr&lt;TimeRanges&gt; MediaSourceBase::buffered() const
-{
-    // Implements MediaSource algorithm for HTMLMediaElement.buffered.
-    // https://dvcs.w3.org/hg/html-media/raw-file/default/media-source/media-source.html#htmlmediaelement-extensions
-    Vector&lt;RefPtr&lt;TimeRanges&gt;&gt; ranges = activeRanges();
-
-    // 1. If activeSourceBuffers.length equals 0 then return an empty TimeRanges object and abort these steps.
-    if (ranges.isEmpty())
-        return TimeRanges::create();
-
-    // 2. Let active ranges be the ranges returned by buffered for each SourceBuffer object in activeSourceBuffers.
-    // 3. Let highest end time be the largest range end time in the active ranges.
-    double highestEndTime = -1;
-    for (size_t i = 0; i &lt; ranges.size(); ++i) {
-        unsigned length = ranges[i]-&gt;length();
-        if (length)
-            highestEndTime = std::max(highestEndTime, ranges[i]-&gt;end(length - 1, ASSERT_NO_EXCEPTION));
-    }
-
-    // Return an empty range if all ranges are empty.
-    if (highestEndTime &lt; 0)
-        return TimeRanges::create();
-
-    // 4. Let intersection ranges equal a TimeRange object containing a single range from 0 to highest end time.
-    RefPtr&lt;TimeRanges&gt; intersectionRanges = TimeRanges::create(0, highestEndTime);
-
-    // 5. For each SourceBuffer object in activeSourceBuffers run the following steps:
-    bool ended = readyState() == endedKeyword();
-    for (size_t i = 0; i &lt; ranges.size(); ++i) {
-        // 5.1 Let source ranges equal the ranges returned by the buffered attribute on the current SourceBuffer.
-        TimeRanges* sourceRanges = ranges[i].get();
-
-        // 5.2 If readyState is &quot;ended&quot;, then set the end time on the last range in source ranges to highest end time.
-        if (ended &amp;&amp; sourceRanges-&gt;length())
-            sourceRanges-&gt;add(sourceRanges-&gt;start(sourceRanges-&gt;length() - 1, ASSERT_NO_EXCEPTION), highestEndTime);
-
-        // 5.3 Let new intersection ranges equal the the intersection between the intersection ranges and the source ranges.
-        // 5.4 Replace the ranges in intersection ranges with the new intersection ranges.
-        intersectionRanges-&gt;intersectWith(sourceRanges);
-    }
-
-    return intersectionRanges.release();
-}
-
-void MediaSourceBase::setDuration(double duration, ExceptionCode&amp; ec)
-{
-    if (duration &lt; 0.0 || std::isnan(duration)) {
-        ec = INVALID_ACCESS_ERR;
-        return;
-    }
-    if (!isOpen()) {
-        ec = INVALID_STATE_ERR;
-        return;
-    }
-    m_private-&gt;setDuration(duration);
-}
-
-
-void MediaSourceBase::setReadyState(const AtomicString&amp; state)
-{
-    ASSERT(state == openKeyword() || state == closedKeyword() || state == endedKeyword());
-
-    AtomicString oldState = readyState();
-    LOG(Media, &quot;MediaSourceBase::setReadyState() %p : %s -&gt; %s&quot;, this, oldState.string().ascii().data(), state.string().ascii().data());
-
-    if (state == closedKeyword()) {
-        m_private.clear();
-        m_mediaElement = 0;
-    }
-
-    if (oldState == state)
-        return;
-
-    m_readyState = state;
-
-    onReadyStateChange(oldState, state);
-}
-
-void MediaSourceBase::endOfStream(const AtomicString&amp; error, ExceptionCode&amp; ec)
-{
-    DEFINE_STATIC_LOCAL(const AtomicString, network, (&quot;network&quot;, AtomicString::ConstructFromLiteral));
-    DEFINE_STATIC_LOCAL(const AtomicString, decode, (&quot;decode&quot;, AtomicString::ConstructFromLiteral));
-
-    // 3.1 http://dvcs.w3.org/hg/html-media/raw-file/tip/media-source/media-source.html#dom-endofstream
-    // 1. If the readyState attribute is not in the &quot;open&quot; state then throw an
-    // INVALID_STATE_ERR exception and abort these steps.
-    if (!isOpen()) {
-        ec = INVALID_STATE_ERR;
-        return;
-    }
-
-    MediaSourcePrivate::EndOfStreamStatus eosStatus = MediaSourcePrivate::EosNoError;
-
-    if (error.isNull() || error.isEmpty())
-        eosStatus = MediaSourcePrivate::EosNoError;
-    else if (error == network)
-        eosStatus = MediaSourcePrivate::EosNetworkError;
-    else if (error == decode)
-        eosStatus = MediaSourcePrivate::EosDecodeError;
-    else {
-        ec = INVALID_ACCESS_ERR;
-        return;
-    }
-
-    // 2. Change the readyState attribute value to &quot;ended&quot;.
-    setReadyState(endedKeyword());
-    m_private-&gt;markEndOfStream(eosStatus);
-}
-
-bool MediaSourceBase::isOpen() const
-{
-    return readyState() == openKeyword();
-}
-
-bool MediaSourceBase::isClosed() const
-{
-    return readyState() == closedKeyword();
-}
-
-void MediaSourceBase::close()
-{
-    setReadyState(closedKeyword());
-}
-
-bool MediaSourceBase::attachToElement(HTMLMediaElement* element)
-{
-    if (m_mediaElement)
-        return false;
-
-    ASSERT(isClosed());
-
-    m_mediaElement = element;
-    return true;
-}
-
-void MediaSourceBase::openIfInEndedState()
-{
-    if (m_readyState != endedKeyword())
-        return;
-
-    setReadyState(openKeyword());
-    m_private-&gt;unmarkEndOfStream();
-}
-
-bool MediaSourceBase::hasPendingActivity() const
-{
-    return m_private || m_asyncEventQueue.hasPendingEvents()
-        || ActiveDOMObject::hasPendingActivity();
-}
-
-void MediaSourceBase::stop()
-{
-    m_asyncEventQueue.close();
-    if (!isClosed())
-        setReadyState(closedKeyword());
-    m_private.clear();
-}
-
-RefPtr&lt;SourceBufferPrivate&gt; MediaSourceBase::createSourceBufferPrivate(const ContentType&amp; type, ExceptionCode&amp; ec)
-{
-    RefPtr&lt;SourceBufferPrivate&gt; sourceBufferPrivate;
-    switch (m_private-&gt;addSourceBuffer(type, sourceBufferPrivate)) {
-    case MediaSourcePrivate::Ok: {
-        return sourceBufferPrivate;
-    }
-    case MediaSourcePrivate::NotSupported:
-        // 2.2 https://dvcs.w3.org/hg/html-media/raw-file/default/media-source/media-source.html#widl-MediaSource-addSourceBuffer-SourceBuffer-DOMString-type
-        // Step 2: If type contains a MIME type ... that is not supported with the types
-        // specified for the other SourceBuffer objects in sourceBuffers, then throw
-        // a NOT_SUPPORTED_ERR exception and abort these steps.
-        ec = NOT_SUPPORTED_ERR;
-        return nullptr;
-    case MediaSourcePrivate::ReachedIdLimit:
-        // 2.2 https://dvcs.w3.org/hg/html-media/raw-file/default/media-source/media-source.html#widl-MediaSource-addSourceBuffer-SourceBuffer-DOMString-type
-        // Step 3: If the user agent can't handle any more SourceBuffer objects then throw
-        // a QUOTA_EXCEEDED_ERR exception and abort these steps.
-        ec = QUOTA_EXCEEDED_ERR;
-        return nullptr;
-    }
-
-    ASSERT_NOT_REACHED();
-    return nullptr;
-}
-
-void MediaSourceBase::scheduleEvent(const AtomicString&amp; eventName)
-{
-    RefPtr&lt;Event&gt; event = Event::create(eventName, false, false);
-    event-&gt;setTarget(this);
-
-    m_asyncEventQueue.enqueueEvent(event.release());
-}
-
-ScriptExecutionContext* MediaSourceBase::scriptExecutionContext() const
-{
-    return ActiveDOMObject::scriptExecutionContext();
-}
-
-URLRegistry&amp; MediaSourceBase::registry() const
-{
-    return MediaSourceRegistry::registry();
-}
-
-}
-
-#endif
</del></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesmediasourceMediaSourceBaseh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/mediasource/MediaSourceBase.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/mediasource/MediaSourceBase.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/mediasource/MediaSourceBase.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,115 +0,0 @@
</span><del>-/*
- * Copyright (C) 2013 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef MediaSourceBase_h
-#define MediaSourceBase_h
-
-#if ENABLE(MEDIA_SOURCE)
-
-#include &quot;ActiveDOMObject.h&quot;
-#include &quot;EventTarget.h&quot;
-#include &quot;GenericEventQueue.h&quot;
-#include &quot;HTMLMediaSource.h&quot;
-#include &quot;MediaSourcePrivate.h&quot;
-#include &quot;URLRegistry.h&quot;
-#include &lt;wtf/PassOwnPtr.h&gt;
-#include &lt;wtf/RefCounted.h&gt;
-#include &lt;wtf/Vector.h&gt;
-
-namespace WebCore {
-
-class GenericEventQueue;
-
-class MediaSourceBase : public RefCounted&lt;MediaSourceBase&gt;, public HTMLMediaSource, public ActiveDOMObject, public EventTargetWithInlineData {
-public:
-    static const AtomicString&amp; openKeyword();
-    static const AtomicString&amp; closedKeyword();
-    static const AtomicString&amp; endedKeyword();
-
-    virtual ~MediaSourceBase();
-
-    void addedToRegistry();
-    void removedFromRegistry();
-    void openIfInEndedState();
-    bool isOpen() const;
-
-    // HTMLMediaSource
-    virtual bool attachToElement(HTMLMediaElement*) OVERRIDE;
-    virtual void setPrivateAndOpen(PassRef&lt;MediaSourcePrivate&gt;) OVERRIDE;
-    virtual void close() OVERRIDE;
-    virtual bool isClosed() const OVERRIDE;
-    virtual double duration() const OVERRIDE;
-    virtual PassRefPtr&lt;TimeRanges&gt; buffered() const OVERRIDE;
-    virtual void refHTMLMediaSource() OVERRIDE { ref(); }
-    virtual void derefHTMLMediaSource() OVERRIDE { deref(); }
-
-    void setDuration(double, ExceptionCode&amp;);
-    const AtomicString&amp; readyState() const { return m_readyState; }
-    void setReadyState(const AtomicString&amp;);
-    void endOfStream(const AtomicString&amp; error, ExceptionCode&amp;);
-
-    HTMLMediaElement* mediaElement() const { return m_mediaElement; }
-
-    // ActiveDOMObject interface
-    virtual bool hasPendingActivity() const OVERRIDE;
-    virtual void stop() OVERRIDE;
-
-    // EventTarget interface
-    virtual ScriptExecutionContext* scriptExecutionContext() const OVERRIDE FINAL;
-    virtual void refEventTarget() OVERRIDE FINAL { ref(); }
-    virtual void derefEventTarget() OVERRIDE FINAL { deref(); }
-
-    // URLRegistrable interface
-    virtual URLRegistry&amp; registry() const OVERRIDE;
-
-    using RefCounted&lt;MediaSourceBase&gt;::ref;
-    using RefCounted&lt;MediaSourceBase&gt;::deref;
-
-protected:
-    explicit MediaSourceBase(ScriptExecutionContext&amp;);
-
-    virtual void onReadyStateChange(const AtomicString&amp; oldState, const AtomicString&amp; newState) = 0;
-    virtual Vector&lt;RefPtr&lt;TimeRanges&gt;&gt; activeRanges() const = 0;
-
-    RefPtr&lt;SourceBufferPrivate&gt; createSourceBufferPrivate(const ContentType&amp;, ExceptionCode&amp;);
-    void scheduleEvent(const AtomicString&amp; eventName);
-    GenericEventQueue&amp; asyncEventQueue() { return m_asyncEventQueue; }
-
-    RefPtr&lt;MediaSourcePrivate&gt; m_private;
-    HTMLMediaElement* m_mediaElement;
-    AtomicString m_readyState;
-    GenericEventQueue m_asyncEventQueue;
-};
-
-}
-
-#endif
-
-#endif
</del></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesmediasourceMediaSourceRegistrycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/mediasource/MediaSourceRegistry.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/mediasource/MediaSourceRegistry.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/mediasource/MediaSourceRegistry.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -33,8 +33,8 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(MEDIA_SOURCE)
</span><span class="cx"> 
</span><ins>+#include &quot;MediaSource.h&quot;
</ins><span class="cx"> #include &quot;URL.h&quot;
</span><del>-#include &quot;MediaSourceBase.h&quot;
</del><span class="cx"> #include &lt;wtf/MainThread.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -51,7 +51,7 @@
</span><span class="cx">     ASSERT(&amp;registrable-&gt;registry() == this);
</span><span class="cx">     ASSERT(isMainThread());
</span><span class="cx"> 
</span><del>-    MediaSourceBase* source = static_cast&lt;MediaSourceBase*&gt;(registrable);
</del><ins>+    MediaSource* source = static_cast&lt;MediaSource*&gt;(registrable);
</ins><span class="cx">     source-&gt;addedToRegistry();
</span><span class="cx">     m_mediaSources.set(url.string(), source);
</span><span class="cx"> }
</span><span class="lines">@@ -59,11 +59,11 @@
</span><span class="cx"> void MediaSourceRegistry::unregisterURL(const URL&amp; url)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(isMainThread());
</span><del>-    HashMap&lt;String, RefPtr&lt;MediaSourceBase&gt;&gt;::iterator iter = m_mediaSources.find(url.string());
</del><ins>+    HashMap&lt;String, RefPtr&lt;MediaSource&gt;&gt;::iterator iter = m_mediaSources.find(url.string());
</ins><span class="cx">     if (iter == m_mediaSources.end())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    RefPtr&lt;MediaSourceBase&gt; source = iter-&gt;value;
</del><ins>+    RefPtr&lt;MediaSource&gt; source = iter-&gt;value;
</ins><span class="cx">     m_mediaSources.remove(iter);
</span><span class="cx">     source-&gt;removedFromRegistry();
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesmediasourceMediaSourceRegistryh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/mediasource/MediaSourceRegistry.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/mediasource/MediaSourceRegistry.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/mediasource/MediaSourceRegistry.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -41,7 +41,7 @@
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class URL;
</span><del>-class MediaSourceBase;
</del><ins>+class MediaSource;
</ins><span class="cx"> 
</span><span class="cx"> class MediaSourceRegistry FINAL : public URLRegistry {
</span><span class="cx"> public:
</span><span class="lines">@@ -55,7 +55,7 @@
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     MediaSourceRegistry();
</span><del>-    HashMap&lt;String, RefPtr&lt;MediaSourceBase&gt;&gt; m_mediaSources;
</del><ins>+    HashMap&lt;String, RefPtr&lt;MediaSource&gt;&gt; m_mediaSources;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesmediasourceSourceBuffercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/mediasource/SourceBuffer.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/mediasource/SourceBuffer.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/mediasource/SourceBuffer.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -69,7 +69,7 @@
</span><span class="cx">         , lastFrameDuration(MediaTime::invalidTime())
</span><span class="cx">         , highestPresentationTimestamp(MediaTime::invalidTime())
</span><span class="cx">         , lastEnqueuedPresentationTime(MediaTime::invalidTime())
</span><del>-        , needRandomAccessFlag(false)
</del><ins>+        , needRandomAccessFlag(true)
</ins><span class="cx">         , enabled(false)
</span><span class="cx">     {
</span><span class="cx">     }
</span><span class="lines">@@ -429,7 +429,7 @@
</span><span class="cx">         // 2. If the input buffer contains bytes that violate the SourceBuffer byte stream format specification,
</span><span class="cx">         // then run the end of stream algorithm with the error parameter set to &quot;decode&quot; and abort this algorithm.
</span><span class="cx">         if (result == SourceBufferPrivate::ParsingFailed) {
</span><del>-            m_source-&gt;endOfStream(decodeError(), IgnorableExceptionCode());
</del><ins>+            m_source-&gt;streamEndedWithError(decodeError(), IgnorableExceptionCode());
</ins><span class="cx">             break;
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="lines">@@ -806,7 +806,7 @@
</span><span class="cx">             // abort these steps.
</span><span class="cx">             MediaTime presentationStartTime = MediaTime::zeroTime();
</span><span class="cx">             if (presentationTimestamp &lt; presentationStartTime || decodeTimestamp &lt; presentationStartTime) {
</span><del>-                m_source-&gt;endOfStream(decodeError(), IgnorableExceptionCode());
</del><ins>+                m_source-&gt;streamEndedWithError(decodeError(), IgnorableExceptionCode());
</ins><span class="cx">                 return;
</span><span class="cx">             }
</span><span class="cx">         }
</span><span class="lines">@@ -860,11 +860,18 @@
</span><span class="cx">         // FIXME: implement append windows
</span><span class="cx"> 
</span><span class="cx">         // 1.11 If the need random access point flag on track buffer equals true, then run the following steps:
</span><del>-        // 1.11.1 If the coded frame is not a random access point, then drop the coded frame and jump
-        // to the top of the loop to start processing the next coded frame.
-        // 1.11.2 Set the need random access point flag on track buffer to false.
-        // NOTE: MockSampleBoxes are not decodable.
</del><ins>+        if (trackBuffer.needRandomAccessFlag) {
+            // 1.11.1 If the coded frame is not a random access point, then drop the coded frame and jump
+            // to the top of the loop to start processing the next coded frame.
+            if (!sample-&gt;isSync()) {
+                didDropSample();
+                return;
+            }
</ins><span class="cx"> 
</span><ins>+            // 1.11.2 Set the need random access point flag on track buffer to false.
+            trackBuffer.needRandomAccessFlag = false;
+        }
+
</ins><span class="cx">         // 1.12 Let spliced audio frame be an unset variable for holding audio splice information
</span><span class="cx">         // 1.13 Let spliced timed text frame be an unset variable for holding timed text splice information
</span><span class="cx">         // FIXME: Add support for sample splicing.
</span><span class="lines">@@ -985,6 +992,11 @@
</span><span class="cx">         if (trackBuffer.highestPresentationTimestamp.isInvalid() || frameEndTimestamp &gt; trackBuffer.highestPresentationTimestamp)
</span><span class="cx">             trackBuffer.highestPresentationTimestamp = frameEndTimestamp;
</span><span class="cx"> 
</span><ins>+        // 1.21 If highest presentation end timestamp is unset or frame end timestamp is greater than highest
+        // presentation end timestamp, then set highest presentation end timestamp equal to frame end timestamp.
+        if (m_highestPresentationEndTimestamp.isInvalid() || frameEndTimestamp &gt; m_highestPresentationEndTimestamp)
+            m_highestPresentationEndTimestamp = frameEndTimestamp;
+
</ins><span class="cx">         m_buffered-&gt;add(presentationTimestamp.toDouble(), (presentationTimestamp + frameDuration + microsecond).toDouble());
</span><span class="cx"> 
</span><span class="cx">         break;
</span><span class="lines">@@ -993,12 +1005,12 @@
</span><span class="cx"> 
</span><span class="cx"> bool SourceBuffer::sourceBufferPrivateHasAudio(const SourceBufferPrivate*) const
</span><span class="cx"> {
</span><del>-    return m_audioTracks-&gt;length();
</del><ins>+    return m_audioTracks &amp;&amp; m_audioTracks-&gt;length();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool SourceBuffer::sourceBufferPrivateHasVideo(const SourceBufferPrivate*) const
</span><span class="cx"> {
</span><del>-    return m_videoTracks-&gt;length();
</del><ins>+    return m_videoTracks &amp;&amp; m_videoTracks-&gt;length();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SourceBuffer::videoTrackSelectedChanged(VideoTrack* track)
</span><span class="lines">@@ -1141,6 +1153,12 @@
</span><span class="cx">     LOG(Media, &quot;SourceBuffer::provideMediaData(%p) - Enqueued %u samples&quot;, this, enqueuedSamples);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void SourceBuffer::didDropSample()
+{
+    if (!isRemoved())
+        m_source-&gt;mediaElement()-&gt;incrementDroppedFrameCount();
+}
+
</ins><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesmediasourceSourceBufferh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/mediasource/SourceBuffer.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/mediasource/SourceBuffer.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/mediasource/SourceBuffer.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -75,6 +75,7 @@
</span><span class="cx"> 
</span><span class="cx">     void abortIfUpdating();
</span><span class="cx">     void removedFromMediaSource();
</span><ins>+    const MediaTime&amp; highestPresentationEndTimestamp() const { return m_highestPresentationEndTimestamp; }
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(VIDEO_TRACK)
</span><span class="cx">     VideoTrackList* videoTracks();
</span><span class="lines">@@ -140,6 +141,7 @@
</span><span class="cx">     bool validateInitializationSegment(const InitializationSegment&amp;);
</span><span class="cx"> 
</span><span class="cx">     void provideMediaData();
</span><ins>+    void didDropSample();
</ins><span class="cx"> 
</span><span class="cx">     RefPtr&lt;SourceBufferPrivate&gt; m_private;
</span><span class="cx">     MediaSource* m_source;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesmediasourceVideoPlaybackQualitycpp"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/Modules/mediasource/VideoPlaybackQuality.cpp (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/mediasource/VideoPlaybackQuality.cpp                                (rev 0)
+++ branches/jsCStack/Source/WebCore/Modules/mediasource/VideoPlaybackQuality.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,45 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;VideoPlaybackQuality.h&quot;
+
+namespace WebCore {
+
+RefPtr&lt;VideoPlaybackQuality&gt; VideoPlaybackQuality::create(double creationTime, unsigned long totalVideoFrames, unsigned long droppedVideoFrames, unsigned long corruptedVideoFrames, double totalFrameDelay)
+{
+    return adoptRef(new VideoPlaybackQuality(creationTime, totalVideoFrames, droppedVideoFrames, corruptedVideoFrames, totalFrameDelay));
+}
+
+VideoPlaybackQuality::VideoPlaybackQuality(double creationTime, unsigned long totalVideoFrames, unsigned long droppedVideoFrames, unsigned long corruptedVideoFrames, double totalFrameDelay)
+    : m_creationTime(creationTime)
+    , m_totalVideoFrames(totalVideoFrames)
+    , m_droppedVideoFrames(droppedVideoFrames)
+    , m_corruptedVideoFrames(corruptedVideoFrames)
+    , m_totalFrameDelay(totalFrameDelay)
+{
+}
+
+}
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesmediasourceVideoPlaybackQualityh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/Modules/mediasource/VideoPlaybackQuality.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/mediasource/VideoPlaybackQuality.h                                (rev 0)
+++ branches/jsCStack/Source/WebCore/Modules/mediasource/VideoPlaybackQuality.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,57 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef VideoPlaybackQuality_h
+#define VideoPlaybackQuality_h
+
+#include &lt;wtf/RefCounted.h&gt;
+#include &lt;wtf/RefPtr.h&gt;
+
+namespace WebCore {
+
+class VideoPlaybackQuality : public RefCounted&lt;VideoPlaybackQuality&gt; {
+    WTF_MAKE_NONCOPYABLE(VideoPlaybackQuality)
+public:
+    static RefPtr&lt;VideoPlaybackQuality&gt; create(double creationTime, unsigned long totalVideoFrames, unsigned long droppedVideoFrames, unsigned long corruptedVideoFrames, double totalFrameDelay);
+
+    double creationTime() const { return m_creationTime; }
+    unsigned long totalVideoFrames() const { return m_totalVideoFrames; }
+    unsigned long droppedVideoFrames() const { return m_droppedVideoFrames; }
+    unsigned long corruptedVideoFrames() const { return m_corruptedVideoFrames; }
+    double totalFrameDelay() const { return m_totalFrameDelay; }
+
+protected:
+    VideoPlaybackQuality(double creationTime, unsigned long totalVideoFrames, unsigned long droppedVideoFrames, unsigned long corruptedVideoFrames, double totalFrameDelay);
+
+    double m_creationTime;
+    unsigned long m_totalVideoFrames;
+    unsigned long m_droppedVideoFrames;
+    unsigned long m_corruptedVideoFrames;
+    double m_totalFrameDelay;
+};
+
+}
+
+#endif // VideoPlaybackQuality_h
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesmediasourceVideoPlaybackQualityidl"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/Modules/mediasource/VideoPlaybackQuality.idl (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/mediasource/VideoPlaybackQuality.idl                                (rev 0)
+++ branches/jsCStack/Source/WebCore/Modules/mediasource/VideoPlaybackQuality.idl        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,39 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+[
+    Conditional=MEDIA_SOURCE,
+    NoInterfaceObject,
+    ImplementationLacksVTable,
+] interface VideoPlaybackQuality {
+    readonly attribute double creationTime;
+    readonly attribute unsigned long totalVideoFrames;
+    readonly attribute unsigned long droppedVideoFrames;
+    readonly attribute unsigned long corruptedVideoFrames;
+    readonly attribute double totalFrameDelay;
+};
+
+
+
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesmediastreamCapabilityRangecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/mediastream/CapabilityRange.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/mediastream/CapabilityRange.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/mediastream/CapabilityRange.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -32,7 +32,7 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><span class="cx"> #include &quot;MediaSourceStates.h&quot;
</span><del>-#include &quot;ScriptValue.h&quot;
</del><ins>+#include &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> #include &lt;interpreter/CallFrame.h&gt;
</span><span class="cx"> #include &lt;runtime/JSCJSValue.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -50,7 +50,7 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static ScriptValue scriptValue(ExecState* exec, const MediaStreamSourceCapabilityRange::ValueUnion&amp; value, MediaStreamSourceCapabilityRange::Type type)
</del><ins>+static Deprecated::ScriptValue scriptValue(ExecState* exec, const MediaStreamSourceCapabilityRange::ValueUnion&amp; value, MediaStreamSourceCapabilityRange::Type type)
</ins><span class="cx"> {
</span><span class="cx">     // NOTE: the spec says:
</span><span class="cx">     //      ... an implementation should make a reasonable attempt to translate and scale the hardware's setting
</span><span class="lines">@@ -63,26 +63,26 @@
</span><span class="cx">     
</span><span class="cx">     switch (type) {
</span><span class="cx">     case MediaStreamSourceCapabilityRange::Float:
</span><del>-        return ScriptValue(exec-&gt;vm(), JSValue(value.asFloat));
</del><ins>+        return Deprecated::ScriptValue(exec-&gt;vm(), JSValue(value.asFloat));
</ins><span class="cx">         break;
</span><span class="cx">     case MediaStreamSourceCapabilityRange::ULong:
</span><del>-        return ScriptValue(exec-&gt;vm(), JSValue(value.asULong));
</del><ins>+        return Deprecated::ScriptValue(exec-&gt;vm(), JSValue(value.asULong));
</ins><span class="cx">         break;
</span><span class="cx">     case MediaStreamSourceCapabilityRange::Undefined:
</span><del>-        return ScriptValue(exec-&gt;vm(), jsUndefined());
</del><ins>+        return Deprecated::ScriptValue(exec-&gt;vm(), jsUndefined());
</ins><span class="cx">         break;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     ASSERT_NOT_REACHED();
</span><del>-    return ScriptValue(exec-&gt;vm(), jsUndefined());
</del><ins>+    return Deprecated::ScriptValue(exec-&gt;vm(), jsUndefined());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-ScriptValue CapabilityRange::min(ExecState* exec) const
</del><ins>+Deprecated::ScriptValue CapabilityRange::min(ExecState* exec) const
</ins><span class="cx"> {
</span><span class="cx">     return scriptValue(exec, m_rangeInfo.min(), m_rangeInfo.type());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-ScriptValue CapabilityRange::max(ExecState* exec) const
</del><ins>+Deprecated::ScriptValue CapabilityRange::max(ExecState* exec) const
</ins><span class="cx"> {
</span><span class="cx">     return scriptValue(exec, m_rangeInfo.max(), m_rangeInfo.type());
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesmediastreamCapabilityRangeh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/mediastream/CapabilityRange.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/mediastream/CapabilityRange.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/mediastream/CapabilityRange.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -30,8 +30,8 @@
</span><span class="cx"> #if ENABLE(MEDIA_STREAM)
</span><span class="cx"> 
</span><span class="cx"> #include &quot;MediaStreamSourceCapabilities.h&quot;
</span><del>-#include &quot;ScriptValue.h&quot;
</del><span class="cx"> #include &quot;ScriptWrappable.h&quot;
</span><ins>+#include &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> #include &lt;interpreter/CallFrame.h&gt;
</span><span class="cx"> #include &lt;wtf/RefCounted.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -43,8 +43,8 @@
</span><span class="cx"> 
</span><span class="cx">     static RefPtr&lt;CapabilityRange&gt; create(const MediaStreamSourceCapabilityRange&amp;);
</span><span class="cx"> 
</span><del>-    ScriptValue min(JSC::ExecState*) const;
-    ScriptValue max(JSC::ExecState*) const;
</del><ins>+    Deprecated::ScriptValue min(JSC::ExecState*) const;
+    Deprecated::ScriptValue max(JSC::ExecState*) const;
</ins><span class="cx">     bool supported() const { return m_rangeInfo.supported(); }
</span><span class="cx"> 
</span><span class="cx"> private:
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesmediastreamHTMLMediaElementMediaStreamidl"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/mediastream/HTMLMediaElementMediaStream.idl (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/mediastream/HTMLMediaElementMediaStream.idl        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/mediastream/HTMLMediaElementMediaStream.idl        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -27,5 +27,7 @@
</span><span class="cx">     Conditional=VIDEO&amp;MEDIA_STREAM,
</span><span class="cx"> ] partial interface HTMLMediaElement
</span><span class="cx"> {
</span><ins>+#if !defined(LANGUAGE_GOBJECT) || !LANGUAGE_GOBJECT
</ins><span class="cx">     attribute MediaStream? srcObject;
</span><ins>+#endif
</ins><span class="cx"> };
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesmediastreamMediaTrackConstrainth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/mediastream/MediaTrackConstraint.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/mediastream/MediaTrackConstraint.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/mediastream/MediaTrackConstraint.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -33,10 +33,12 @@
</span><span class="cx"> #include &quot;ScriptWrappable.h&quot;
</span><span class="cx"> #include &lt;wtf/RefCounted.h&gt;
</span><span class="cx"> 
</span><ins>+namespace Deprecated {
+class ScriptValue;
+}
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-class ScriptValue;
-
</del><span class="cx"> class MediaTrackConstraint : public RefCounted&lt;MediaTrackConstraint&gt;, public ScriptWrappable {
</span><span class="cx"> public:
</span><span class="cx">     static RefPtr&lt;MediaTrackConstraint&gt; create(const Dictionary&amp;);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesmediastreamRTCErrorCallbackh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/mediastream/RTCErrorCallback.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/mediastream/RTCErrorCallback.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/mediastream/RTCErrorCallback.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,51 +0,0 @@
</span><del>-/*
- * Copyright (C) 2012 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer
- *    in the documentation and/or other materials provided with the
- *    distribution.
- * 3. Neither the name of Google Inc. nor the names of its contributors
- *    may be used to endorse or promote products derived from this
- *    software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef RTCErrorCallback_h
-#define RTCErrorCallback_h
-
-#if ENABLE(MEDIA_STREAM)
-
-#include &lt;wtf/RefCounted.h&gt;
-#include &lt;wtf/text/WTFString.h&gt;
-
-namespace WebCore {
-
-class RTCErrorCallback : public RefCounted&lt;RTCErrorCallback&gt; {
-public:
-    virtual ~RTCErrorCallback() { }
-    virtual bool handleEvent(const String&amp; errorInformation) = 0;
-};
-
-} // namespace WebCore
-
-#endif // ENABLE(MEDIA_STREAM)
-
-#endif // RTCErrorCallback_h
</del></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesmediastreamRTCErrorCallbackidl"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/mediastream/RTCErrorCallback.idl (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/mediastream/RTCErrorCallback.idl        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/mediastream/RTCErrorCallback.idl        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,36 +0,0 @@
</span><del>-/*
- * Copyright (C) 2012 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer
- *    in the documentation and/or other materials provided with the
- *    distribution.
- * 3. Neither the name of Google Inc. nor the names of its contributors
- *    may be used to endorse or promote products derived from this
- *    software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-[
-    Conditional=MEDIA_STREAM,
-] callback interface RTCErrorCallback {
-    boolean handleEvent(DOMString errorInformation);
-};
-
</del></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesmediastreamRTCIceCandidatecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/mediastream/RTCIceCandidate.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/mediastream/RTCIceCandidate.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/mediastream/RTCIceCandidate.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -37,7 +37,6 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;Dictionary.h&quot;
</span><span class="cx"> #include &quot;ExceptionCode.h&quot;
</span><del>-#include &quot;InspectorValues.h&quot;
</del><span class="cx"> #include &quot;RTCIceCandidateDescriptor.h&quot;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesmediastreamRTCPeerConnectioncpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -49,10 +49,10 @@
</span><span class="cx"> #include &quot;RTCDataChannel.h&quot;
</span><span class="cx"> #include &quot;RTCDataChannelEvent.h&quot;
</span><span class="cx"> #include &quot;RTCDataChannelHandler.h&quot;
</span><del>-#include &quot;RTCErrorCallback.h&quot;
</del><span class="cx"> #include &quot;RTCIceCandidate.h&quot;
</span><span class="cx"> #include &quot;RTCIceCandidateDescriptor.h&quot;
</span><span class="cx"> #include &quot;RTCIceCandidateEvent.h&quot;
</span><ins>+#include &quot;RTCPeerConnectionErrorCallback.h&quot;
</ins><span class="cx"> #include &quot;RTCSessionDescription.h&quot;
</span><span class="cx"> #include &quot;RTCSessionDescriptionCallback.h&quot;
</span><span class="cx"> #include &quot;RTCSessionDescriptionDescriptor.h&quot;
</span><span class="lines">@@ -170,7 +170,7 @@
</span><span class="cx">         (*stream)-&gt;removeObserver(this);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void RTCPeerConnection::createOffer(PassRefPtr&lt;RTCSessionDescriptionCallback&gt; successCallback, PassRefPtr&lt;RTCErrorCallback&gt; errorCallback, const Dictionary&amp; mediaConstraints, ExceptionCode&amp; ec)
</del><ins>+void RTCPeerConnection::createOffer(PassRefPtr&lt;RTCSessionDescriptionCallback&gt; successCallback, PassRefPtr&lt;RTCPeerConnectionErrorCallback&gt; errorCallback, const Dictionary&amp; mediaConstraints, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     if (m_signalingState == SignalingStateClosed) {
</span><span class="cx">         ec = INVALID_STATE_ERR;
</span><span class="lines">@@ -190,7 +190,7 @@
</span><span class="cx">     m_peerHandler-&gt;createOffer(request.release(), constraints);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void RTCPeerConnection::createAnswer(PassRefPtr&lt;RTCSessionDescriptionCallback&gt; successCallback, PassRefPtr&lt;RTCErrorCallback&gt; errorCallback, const Dictionary&amp; mediaConstraints, ExceptionCode&amp; ec)
</del><ins>+void RTCPeerConnection::createAnswer(PassRefPtr&lt;RTCSessionDescriptionCallback&gt; successCallback, PassRefPtr&lt;RTCPeerConnectionErrorCallback&gt; errorCallback, const Dictionary&amp; mediaConstraints, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     if (m_signalingState == SignalingStateClosed) {
</span><span class="cx">         ec = INVALID_STATE_ERR;
</span><span class="lines">@@ -210,7 +210,7 @@
</span><span class="cx">     m_peerHandler-&gt;createAnswer(request.release(), constraints.release());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void RTCPeerConnection::setLocalDescription(PassRefPtr&lt;RTCSessionDescription&gt; prpSessionDescription, PassRefPtr&lt;VoidCallback&gt; successCallback, PassRefPtr&lt;RTCErrorCallback&gt; errorCallback, ExceptionCode&amp; ec)
</del><ins>+void RTCPeerConnection::setLocalDescription(PassRefPtr&lt;RTCSessionDescription&gt; prpSessionDescription, PassRefPtr&lt;VoidCallback&gt; successCallback, PassRefPtr&lt;RTCPeerConnectionErrorCallback&gt; errorCallback, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     if (m_signalingState == SignalingStateClosed) {
</span><span class="cx">         ec = INVALID_STATE_ERR;
</span><span class="lines">@@ -239,7 +239,7 @@
</span><span class="cx">     return sessionDescription.release();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void RTCPeerConnection::setRemoteDescription(PassRefPtr&lt;RTCSessionDescription&gt; prpSessionDescription, PassRefPtr&lt;VoidCallback&gt; successCallback, PassRefPtr&lt;RTCErrorCallback&gt; errorCallback, ExceptionCode&amp; ec)
</del><ins>+void RTCPeerConnection::setRemoteDescription(PassRefPtr&lt;RTCSessionDescription&gt; prpSessionDescription, PassRefPtr&lt;VoidCallback&gt; successCallback, PassRefPtr&lt;RTCPeerConnectionErrorCallback&gt; errorCallback, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     if (m_signalingState == SignalingStateClosed) {
</span><span class="cx">         ec = INVALID_STATE_ERR;
</span><span class="lines">@@ -288,7 +288,7 @@
</span><span class="cx">         ec = SYNTAX_ERR;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void RTCPeerConnection::addIceCandidate(RTCIceCandidate* iceCandidate, PassRefPtr&lt;VoidCallback&gt; successCallback, PassRefPtr&lt;RTCErrorCallback&gt; errorCallback, ExceptionCode&amp; ec)
</del><ins>+void RTCPeerConnection::addIceCandidate(RTCIceCandidate* iceCandidate, PassRefPtr&lt;VoidCallback&gt; successCallback, PassRefPtr&lt;RTCPeerConnectionErrorCallback&gt; errorCallback, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     if (m_signalingState == SignalingStateClosed) {
</span><span class="cx">         ec = INVALID_STATE_ERR;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesmediastreamRTCPeerConnectionh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/mediastream/RTCPeerConnection.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/mediastream/RTCPeerConnection.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/mediastream/RTCPeerConnection.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -53,7 +53,7 @@
</span><span class="cx"> class RTCConfiguration;
</span><span class="cx"> class RTCDTMFSender;
</span><span class="cx"> class RTCDataChannel;
</span><del>-class RTCErrorCallback;
</del><ins>+class RTCPeerConnectionErrorCallback;
</ins><span class="cx"> class RTCSessionDescription;
</span><span class="cx"> class RTCSessionDescriptionCallback;
</span><span class="cx"> class RTCStatsCallback;
</span><span class="lines">@@ -64,21 +64,21 @@
</span><span class="cx">     static PassRefPtr&lt;RTCPeerConnection&gt; create(ScriptExecutionContext&amp;, const Dictionary&amp; rtcConfiguration, const Dictionary&amp; mediaConstraints, ExceptionCode&amp;);
</span><span class="cx">     ~RTCPeerConnection();
</span><span class="cx"> 
</span><del>-    void createOffer(PassRefPtr&lt;RTCSessionDescriptionCallback&gt;, PassRefPtr&lt;RTCErrorCallback&gt;, const Dictionary&amp; mediaConstraints, ExceptionCode&amp;);
</del><ins>+    void createOffer(PassRefPtr&lt;RTCSessionDescriptionCallback&gt;, PassRefPtr&lt;RTCPeerConnectionErrorCallback&gt;, const Dictionary&amp; mediaConstraints, ExceptionCode&amp;);
</ins><span class="cx"> 
</span><del>-    void createAnswer(PassRefPtr&lt;RTCSessionDescriptionCallback&gt;, PassRefPtr&lt;RTCErrorCallback&gt;, const Dictionary&amp; mediaConstraints, ExceptionCode&amp;);
</del><ins>+    void createAnswer(PassRefPtr&lt;RTCSessionDescriptionCallback&gt;, PassRefPtr&lt;RTCPeerConnectionErrorCallback&gt;, const Dictionary&amp; mediaConstraints, ExceptionCode&amp;);
</ins><span class="cx"> 
</span><del>-    void setLocalDescription(PassRefPtr&lt;RTCSessionDescription&gt;, PassRefPtr&lt;VoidCallback&gt;, PassRefPtr&lt;RTCErrorCallback&gt;, ExceptionCode&amp;);
</del><ins>+    void setLocalDescription(PassRefPtr&lt;RTCSessionDescription&gt;, PassRefPtr&lt;VoidCallback&gt;, PassRefPtr&lt;RTCPeerConnectionErrorCallback&gt;, ExceptionCode&amp;);
</ins><span class="cx">     PassRefPtr&lt;RTCSessionDescription&gt; localDescription(ExceptionCode&amp;);
</span><span class="cx"> 
</span><del>-    void setRemoteDescription(PassRefPtr&lt;RTCSessionDescription&gt;, PassRefPtr&lt;VoidCallback&gt;, PassRefPtr&lt;RTCErrorCallback&gt;, ExceptionCode&amp;);
</del><ins>+    void setRemoteDescription(PassRefPtr&lt;RTCSessionDescription&gt;, PassRefPtr&lt;VoidCallback&gt;, PassRefPtr&lt;RTCPeerConnectionErrorCallback&gt;, ExceptionCode&amp;);
</ins><span class="cx">     PassRefPtr&lt;RTCSessionDescription&gt; remoteDescription(ExceptionCode&amp;);
</span><span class="cx"> 
</span><span class="cx">     String signalingState() const;
</span><span class="cx"> 
</span><span class="cx">     void updateIce(const Dictionary&amp; rtcConfiguration, const Dictionary&amp; mediaConstraints, ExceptionCode&amp;);
</span><span class="cx"> 
</span><del>-    void addIceCandidate(RTCIceCandidate*, PassRefPtr&lt;VoidCallback&gt;, PassRefPtr&lt;RTCErrorCallback&gt;, ExceptionCode&amp;);
</del><ins>+    void addIceCandidate(RTCIceCandidate*, PassRefPtr&lt;VoidCallback&gt;, PassRefPtr&lt;RTCPeerConnectionErrorCallback&gt;, ExceptionCode&amp;);
</ins><span class="cx"> 
</span><span class="cx">     String iceGatheringState() const;
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesmediastreamRTCPeerConnectionidl"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/mediastream/RTCPeerConnection.idl (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/mediastream/RTCPeerConnection.idl        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/mediastream/RTCPeerConnection.idl        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -39,21 +39,21 @@
</span><span class="cx">     EventTarget,
</span><span class="cx">     InterfaceName=webkitRTCPeerConnection,
</span><span class="cx"> ] interface RTCPeerConnection {
</span><del>-    [RaisesException] void createOffer(RTCSessionDescriptionCallback successCallback, [Default=Undefined] optional RTCErrorCallback failureCallback, optional Dictionary mediaConstraints);
</del><ins>+    [RaisesException] void createOffer(RTCSessionDescriptionCallback successCallback, [Default=Undefined] optional RTCPeerConnectionErrorCallback failureCallback, optional Dictionary mediaConstraints);
</ins><span class="cx"> 
</span><del>-    [RaisesException] void createAnswer(RTCSessionDescriptionCallback successCallback, [Default=Undefined] optional RTCErrorCallback failureCallback, optional Dictionary mediaConstraints);
</del><ins>+    [RaisesException] void createAnswer(RTCSessionDescriptionCallback successCallback, [Default=Undefined] optional RTCPeerConnectionErrorCallback failureCallback, optional Dictionary mediaConstraints);
</ins><span class="cx"> 
</span><del>-    [RaisesException] void setLocalDescription(RTCSessionDescription description, [Default=Undefined] optional VoidCallback successCallback, [Default=Undefined] optional RTCErrorCallback failureCallback);
</del><ins>+    [RaisesException] void setLocalDescription(RTCSessionDescription description, [Default=Undefined] optional VoidCallback successCallback, [Default=Undefined] optional RTCPeerConnectionErrorCallback failureCallback);
</ins><span class="cx">     [GetterRaisesException] readonly attribute RTCSessionDescription localDescription;
</span><span class="cx"> 
</span><del>-    [RaisesException] void setRemoteDescription(RTCSessionDescription description, [Default=Undefined] optional VoidCallback successCallback, [Default=Undefined] optional RTCErrorCallback failureCallback);
</del><ins>+    [RaisesException] void setRemoteDescription(RTCSessionDescription description, [Default=Undefined] optional VoidCallback successCallback, [Default=Undefined] optional RTCPeerConnectionErrorCallback failureCallback);
</ins><span class="cx">     [GetterRaisesException] readonly attribute RTCSessionDescription remoteDescription;
</span><span class="cx"> 
</span><span class="cx">     readonly attribute DOMString signalingState;
</span><span class="cx"> 
</span><span class="cx">     [RaisesException] void updateIce(optional Dictionary configuration, optional Dictionary mediaConstraints);
</span><span class="cx"> 
</span><del>-    [RaisesException] void addIceCandidate(RTCIceCandidate candidate, VoidCallback successCallback, RTCErrorCallback failureCallback);
</del><ins>+    [RaisesException] void addIceCandidate(RTCIceCandidate candidate, VoidCallback successCallback, RTCPeerConnectionErrorCallback failureCallback);
</ins><span class="cx"> 
</span><span class="cx">     readonly attribute DOMString iceGatheringState;
</span><span class="cx">     readonly attribute DOMString iceConnectionState;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesmediastreamRTCPeerConnectionErrorCallbackh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/Modules/mediastream/RTCPeerConnectionErrorCallback.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/mediastream/RTCPeerConnectionErrorCallback.h                                (rev 0)
+++ branches/jsCStack/Source/WebCore/Modules/mediastream/RTCPeerConnectionErrorCallback.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,46 @@
</span><ins>+/*
+ * Copyright (C) 2013 Nokia Corporation and/or its subsidiary(-ies).
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef RTCPeerConnectionErrorCallback_h
+#define RTCPeerConnectionErrorCallback_h
+
+#if ENABLE(MEDIA_STREAM)
+
+#include &quot;DOMError.h&quot;
+#include &lt;wtf/RefCounted.h&gt;
+
+namespace WebCore {
+
+class RTCPeerConnectionErrorCallback : public RefCounted&lt;RTCPeerConnectionErrorCallback&gt; {
+public:
+    virtual ~RTCPeerConnectionErrorCallback() { }
+    virtual bool handleEvent(DOMError*) = 0;
+};
+
+} // namespace WebCore
+
+#endif // ENABLE(MEDIA_STREAM)
+
+#endif // RTCPeerConnectionErrorCallback_h
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesmediastreamRTCPeerConnectionErrorCallbackidl"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/Modules/mediastream/RTCPeerConnectionErrorCallback.idl (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/mediastream/RTCPeerConnectionErrorCallback.idl                                (rev 0)
+++ branches/jsCStack/Source/WebCore/Modules/mediastream/RTCPeerConnectionErrorCallback.idl        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+/*
+ * Copyright (C) 2013 Nokia Corporation and/or its subsidiary(-ies).
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+[
+    Conditional=MEDIA_STREAM,
+] callback interface RTCPeerConnectionErrorCallback {
+    boolean handleEvent(DOMError error);
+};
+
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesmediastreamRTCSessionDescriptionRequestImplcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/mediastream/RTCSessionDescriptionRequestImpl.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/mediastream/RTCSessionDescriptionRequestImpl.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/mediastream/RTCSessionDescriptionRequestImpl.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,5 +1,6 @@
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2012 Google Inc. All rights reserved.
</span><ins>+ * Copyright (C) 2013 Nokia Corporation and/or its subsidiary(-ies).
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -34,22 +35,22 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;RTCSessionDescriptionRequestImpl.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;RTCErrorCallback.h&quot;
</del><span class="cx"> #include &quot;RTCPeerConnection.h&quot;
</span><ins>+#include &quot;RTCPeerConnectionErrorCallback.h&quot;
</ins><span class="cx"> #include &quot;RTCSessionDescription.h&quot;
</span><span class="cx"> #include &quot;RTCSessionDescriptionCallback.h&quot;
</span><span class="cx"> #include &quot;RTCSessionDescriptionDescriptor.h&quot;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;RTCSessionDescriptionRequestImpl&gt; RTCSessionDescriptionRequestImpl::create(ScriptExecutionContext* context, PassRefPtr&lt;RTCSessionDescriptionCallback&gt; successCallback, PassRefPtr&lt;RTCErrorCallback&gt; errorCallback)
</del><ins>+PassRefPtr&lt;RTCSessionDescriptionRequestImpl&gt; RTCSessionDescriptionRequestImpl::create(ScriptExecutionContext* context, PassRefPtr&lt;RTCSessionDescriptionCallback&gt; successCallback, PassRefPtr&lt;RTCPeerConnectionErrorCallback&gt; errorCallback)
</ins><span class="cx"> {
</span><span class="cx">     RefPtr&lt;RTCSessionDescriptionRequestImpl&gt; request = adoptRef(new RTCSessionDescriptionRequestImpl(context, successCallback, errorCallback));
</span><span class="cx">     request-&gt;suspendIfNeeded();
</span><span class="cx">     return request.release();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RTCSessionDescriptionRequestImpl::RTCSessionDescriptionRequestImpl(ScriptExecutionContext* context, PassRefPtr&lt;RTCSessionDescriptionCallback&gt; successCallback, PassRefPtr&lt;RTCErrorCallback&gt; errorCallback)
</del><ins>+RTCSessionDescriptionRequestImpl::RTCSessionDescriptionRequestImpl(ScriptExecutionContext* context, PassRefPtr&lt;RTCSessionDescriptionCallback&gt; successCallback, PassRefPtr&lt;RTCPeerConnectionErrorCallback&gt; errorCallback)
</ins><span class="cx">     : ActiveDOMObject(context)
</span><span class="cx">     , m_successCallback(successCallback)
</span><span class="cx">     , m_errorCallback(errorCallback)
</span><span class="lines">@@ -73,7 +74,7 @@
</span><span class="cx"> void RTCSessionDescriptionRequestImpl::requestFailed(const String&amp; error)
</span><span class="cx"> {
</span><span class="cx">     if (m_errorCallback)
</span><del>-        m_errorCallback-&gt;handleEvent(error);
</del><ins>+        m_errorCallback-&gt;handleEvent(DOMError::create(error).get());
</ins><span class="cx"> 
</span><span class="cx">     clear();
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesmediastreamRTCSessionDescriptionRequestImplh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/mediastream/RTCSessionDescriptionRequestImpl.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/mediastream/RTCSessionDescriptionRequestImpl.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/mediastream/RTCSessionDescriptionRequestImpl.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,5 +1,6 @@
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2012 Google Inc. All rights reserved.
</span><ins>+ * Copyright (C) 2013 Nokia Corporation and/or its subsidiary(-ies).
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -38,13 +39,13 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-class RTCErrorCallback;
</del><ins>+class RTCPeerConnectionErrorCallback;
</ins><span class="cx"> class RTCPeerConnection;
</span><span class="cx"> class RTCSessionDescriptionCallback;
</span><span class="cx"> 
</span><span class="cx"> class RTCSessionDescriptionRequestImpl : public RTCSessionDescriptionRequest, public ActiveDOMObject {
</span><span class="cx"> public:
</span><del>-    static PassRefPtr&lt;RTCSessionDescriptionRequestImpl&gt; create(ScriptExecutionContext*, PassRefPtr&lt;RTCSessionDescriptionCallback&gt;, PassRefPtr&lt;RTCErrorCallback&gt;);
</del><ins>+    static PassRefPtr&lt;RTCSessionDescriptionRequestImpl&gt; create(ScriptExecutionContext*, PassRefPtr&lt;RTCSessionDescriptionCallback&gt;, PassRefPtr&lt;RTCPeerConnectionErrorCallback&gt;);
</ins><span class="cx">     virtual ~RTCSessionDescriptionRequestImpl();
</span><span class="cx"> 
</span><span class="cx">     virtual void requestSucceeded(PassRefPtr&lt;RTCSessionDescriptionDescriptor&gt;) OVERRIDE;
</span><span class="lines">@@ -54,12 +55,12 @@
</span><span class="cx">     virtual void stop() OVERRIDE;
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    RTCSessionDescriptionRequestImpl(ScriptExecutionContext*, PassRefPtr&lt;RTCSessionDescriptionCallback&gt;, PassRefPtr&lt;RTCErrorCallback&gt;);
</del><ins>+    RTCSessionDescriptionRequestImpl(ScriptExecutionContext*, PassRefPtr&lt;RTCSessionDescriptionCallback&gt;, PassRefPtr&lt;RTCPeerConnectionErrorCallback&gt;);
</ins><span class="cx"> 
</span><span class="cx">     void clear();
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;RTCSessionDescriptionCallback&gt; m_successCallback;
</span><del>-    RefPtr&lt;RTCErrorCallback&gt; m_errorCallback;
</del><ins>+    RefPtr&lt;RTCPeerConnectionErrorCallback&gt; m_errorCallback;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesmediastreamRTCVoidRequestImplcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/mediastream/RTCVoidRequestImpl.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/mediastream/RTCVoidRequestImpl.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/mediastream/RTCVoidRequestImpl.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,5 +1,6 @@
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2012 Google Inc. All rights reserved.
</span><ins>+ * Copyright (C) 2013 Nokia Corporation and/or its subsidiary(-ies).
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -34,20 +35,21 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;RTCVoidRequestImpl.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;RTCErrorCallback.h&quot;
</del><ins>+#include &quot;DOMError.h&quot;
</ins><span class="cx"> #include &quot;RTCPeerConnection.h&quot;
</span><ins>+#include &quot;RTCPeerConnectionErrorCallback.h&quot;
</ins><span class="cx"> #include &quot;VoidCallback.h&quot;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;RTCVoidRequestImpl&gt; RTCVoidRequestImpl::create(ScriptExecutionContext* context, PassRefPtr&lt;VoidCallback&gt; successCallback, PassRefPtr&lt;RTCErrorCallback&gt; errorCallback)
</del><ins>+PassRefPtr&lt;RTCVoidRequestImpl&gt; RTCVoidRequestImpl::create(ScriptExecutionContext* context, PassRefPtr&lt;VoidCallback&gt; successCallback, PassRefPtr&lt;RTCPeerConnectionErrorCallback&gt; errorCallback)
</ins><span class="cx"> {
</span><span class="cx">     RefPtr&lt;RTCVoidRequestImpl&gt; request = adoptRef(new RTCVoidRequestImpl(context, successCallback, errorCallback));
</span><span class="cx">     request-&gt;suspendIfNeeded();
</span><span class="cx">     return request.release();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RTCVoidRequestImpl::RTCVoidRequestImpl(ScriptExecutionContext* context, PassRefPtr&lt;VoidCallback&gt; successCallback, PassRefPtr&lt;RTCErrorCallback&gt; errorCallback)
</del><ins>+RTCVoidRequestImpl::RTCVoidRequestImpl(ScriptExecutionContext* context, PassRefPtr&lt;VoidCallback&gt; successCallback, PassRefPtr&lt;RTCPeerConnectionErrorCallback&gt; errorCallback)
</ins><span class="cx">     : ActiveDOMObject(context)
</span><span class="cx">     , m_successCallback(successCallback)
</span><span class="cx">     , m_errorCallback(errorCallback)
</span><span class="lines">@@ -69,7 +71,7 @@
</span><span class="cx"> void RTCVoidRequestImpl::requestFailed(const String&amp; error)
</span><span class="cx"> {
</span><span class="cx">     if (m_errorCallback.get())
</span><del>-        m_errorCallback-&gt;handleEvent(error);
</del><ins>+        m_errorCallback-&gt;handleEvent(DOMError::create(error).get());
</ins><span class="cx"> 
</span><span class="cx">     clear();
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesmediastreamRTCVoidRequestImplh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/mediastream/RTCVoidRequestImpl.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/mediastream/RTCVoidRequestImpl.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/mediastream/RTCVoidRequestImpl.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,5 +1,6 @@
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2012 Google Inc. All rights reserved.
</span><ins>+ * Copyright (C) 2013 Nokia Corporation and/or its subsidiary(-ies).
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -38,12 +39,12 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-class RTCErrorCallback;
</del><ins>+class RTCPeerConnectionErrorCallback;
</ins><span class="cx"> class VoidCallback;
</span><span class="cx"> 
</span><span class="cx"> class RTCVoidRequestImpl : public RTCVoidRequest, public ActiveDOMObject {
</span><span class="cx"> public:
</span><del>-    static PassRefPtr&lt;RTCVoidRequestImpl&gt; create(ScriptExecutionContext*, PassRefPtr&lt;VoidCallback&gt;, PassRefPtr&lt;RTCErrorCallback&gt;);
</del><ins>+    static PassRefPtr&lt;RTCVoidRequestImpl&gt; create(ScriptExecutionContext*, PassRefPtr&lt;VoidCallback&gt;, PassRefPtr&lt;RTCPeerConnectionErrorCallback&gt;);
</ins><span class="cx">     virtual ~RTCVoidRequestImpl();
</span><span class="cx"> 
</span><span class="cx">     virtual void requestSucceeded();
</span><span class="lines">@@ -53,12 +54,12 @@
</span><span class="cx">     virtual void stop() OVERRIDE;
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    RTCVoidRequestImpl(ScriptExecutionContext*, PassRefPtr&lt;VoidCallback&gt;, PassRefPtr&lt;RTCErrorCallback&gt;);
</del><ins>+    RTCVoidRequestImpl(ScriptExecutionContext*, PassRefPtr&lt;VoidCallback&gt;, PassRefPtr&lt;RTCPeerConnectionErrorCallback&gt;);
</ins><span class="cx"> 
</span><span class="cx">     void clear();
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;VoidCallback&gt; m_successCallback;
</span><del>-    RefPtr&lt;RTCErrorCallback&gt; m_errorCallback;
</del><ins>+    RefPtr&lt;RTCPeerConnectionErrorCallback&gt; m_errorCallback;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesnetworkinfoNavigatorNetworkInfoConnectionidl"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/networkinfo/NavigatorNetworkInfoConnection.idl (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/networkinfo/NavigatorNetworkInfoConnection.idl        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/networkinfo/NavigatorNetworkInfoConnection.idl        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -17,9 +17,10 @@
</span><span class="cx">  * Boston, MA 02110-1301, USA.
</span><span class="cx">  */
</span><span class="cx"> 
</span><ins>+#if !defined(LANGUAGE_GOBJECT) || !LANGUAGE_GOBJECT
</ins><span class="cx"> [
</span><span class="cx">     Conditional=NETWORK_INFO,
</span><span class="cx"> ] partial interface Navigator {
</span><span class="cx">     readonly attribute NetworkInfoConnection webkitConnection;
</span><span class="cx"> };
</span><del>-
</del><ins>+#endif
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulesnetworkinfoNetworkInfoConnectionidl"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/networkinfo/NetworkInfoConnection.idl (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/networkinfo/NetworkInfoConnection.idl        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/networkinfo/NetworkInfoConnection.idl        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -20,6 +20,7 @@
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> // http://dvcs.w3.org/hg/dap/raw-file/tip/network-api/index.html
</span><ins>+#if !defined(LANGUAGE_GOBJECT) || !LANGUAGE_GOBJECT
</ins><span class="cx"> [
</span><span class="cx">     NoInterfaceObject,
</span><span class="cx">     Conditional=NETWORK_INFO,
</span><span class="lines">@@ -40,3 +41,4 @@
</span><span class="cx">                              optional boolean useCapture);
</span><span class="cx">     [RaisesException] boolean dispatchEvent(Event evt);
</span><span class="cx"> };
</span><ins>+#endif
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulespluginsQuickTimePluginReplacementcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/plugins/QuickTimePluginReplacement.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/plugins/QuickTimePluginReplacement.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/plugins/QuickTimePluginReplacement.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -41,7 +41,6 @@
</span><span class="cx"> #include &quot;Page.h&quot;
</span><span class="cx"> #include &quot;RenderElement.h&quot;
</span><span class="cx"> #include &quot;ScriptController.h&quot;
</span><del>-#include &quot;ScriptObject.h&quot;
</del><span class="cx"> #include &quot;ScriptSourceCode.h&quot;
</span><span class="cx"> #include &quot;UserAgentScripts.h&quot;
</span><span class="cx"> #include &lt;JavaScriptCore/APICast.h&gt;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModulespluginsQuickTimePluginReplacementh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/plugins/QuickTimePluginReplacement.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/plugins/QuickTimePluginReplacement.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/plugins/QuickTimePluginReplacement.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -28,7 +28,7 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;PluginReplacement.h&quot;
</span><span class="cx"> #include &quot;ScriptState.h&quot;
</span><del>-#include &quot;ScriptValue.h&quot;
</del><ins>+#include &lt;bindings/ScriptObject.h&gt;
</ins><span class="cx"> #include &lt;wtf/RefCounted.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreModuleswebsocketsWebSocketHandshakecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/Modules/websockets/WebSocketHandshake.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/Modules/websockets/WebSocketHandshake.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/Modules/websockets/WebSocketHandshake.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -113,7 +113,7 @@
</span><span class="cx">     CString keyData = secWebSocketKey.ascii();
</span><span class="cx">     sha1.addBytes(reinterpret_cast&lt;const uint8_t*&gt;(keyData.data()), keyData.length());
</span><span class="cx">     sha1.addBytes(reinterpret_cast&lt;const uint8_t*&gt;(webSocketKeyGUID), strlen(webSocketKeyGUID));
</span><del>-    Vector&lt;uint8_t, SHA1::hashSize&gt; hash;
</del><ins>+    SHA1::Digest hash;
</ins><span class="cx">     sha1.computeHash(hash);
</span><span class="cx">     return base64Encode(hash.data(), SHA1::hashSize);
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorePlatformEflcmake"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/PlatformEfl.cmake (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/PlatformEfl.cmake        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/PlatformEfl.cmake        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -152,6 +152,7 @@
</span><span class="cx">     platform/network/efl/NetworkStateNotifierEfl.cpp
</span><span class="cx"> 
</span><span class="cx">     platform/network/soup/AuthenticationChallengeSoup.cpp
</span><ins>+    platform/network/soup/CertificateInfo.cpp
</ins><span class="cx">     platform/network/soup/CookieJarSoup.cpp
</span><span class="cx">     platform/network/soup/CookieStorageSoup.cpp
</span><span class="cx">     platform/network/soup/CredentialStorageSoup.cpp
</span><span class="lines">@@ -171,6 +172,8 @@
</span><span class="cx">     platform/posix/FileSystemPOSIX.cpp
</span><span class="cx">     platform/posix/SharedBufferPOSIX.cpp
</span><span class="cx"> 
</span><ins>+    platform/soup/SharedBufferSoup.cpp
+
</ins><span class="cx">     platform/text/LocaleICU.cpp
</span><span class="cx"> 
</span><span class="cx">     platform/text/efl/TextBreakIteratorInternalICUEfl.cpp
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorePlatformGTKcmake"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/PlatformGTK.cmake (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/PlatformGTK.cmake        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/PlatformGTK.cmake        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -43,6 +43,8 @@
</span><span class="cx"> 
</span><span class="cx">     editing/atk/FrameSelectionAtk.cpp
</span><span class="cx"> 
</span><ins>+    html/shadow/MediaControlsGtk.cpp
+
</ins><span class="cx">     loader/soup/CachedRawResourceSoup.cpp
</span><span class="cx">     loader/soup/SubresourceLoaderSoup.cpp
</span><span class="cx"> 
</span><span class="lines">@@ -187,6 +189,7 @@
</span><span class="cx">     platform/network/gtk/CredentialBackingStore.cpp
</span><span class="cx"> 
</span><span class="cx">     platform/network/soup/AuthenticationChallengeSoup.cpp
</span><ins>+    platform/network/soup/CertificateInfo.cpp
</ins><span class="cx">     platform/network/soup/CookieJarSoup.cpp
</span><span class="cx">     platform/network/soup/CookieStorageSoup.cpp
</span><span class="cx">     platform/network/soup/CredentialStorageSoup.cpp
</span><span class="lines">@@ -203,6 +206,8 @@
</span><span class="cx">     platform/network/soup/SoupURIUtils.cpp
</span><span class="cx">     platform/network/soup/SynchronousLoaderClientSoup.cpp
</span><span class="cx"> 
</span><ins>+    platform/soup/SharedBufferSoup.cpp
+
</ins><span class="cx">     platform/text/LocaleICU.cpp
</span><span class="cx">     platform/text/TextBreakIteratorICU.cpp
</span><span class="cx">     platform/text/TextCodecICU.cpp
</span><span class="lines">@@ -356,3 +361,257 @@
</span><span class="cx">             DESTINATION
</span><span class="cx">                 &quot;${DATA_INSTALL_DIR}/resources/audio&quot;)
</span><span class="cx"> endif ()
</span><ins>+
+if (ENABLE_WEBKIT2)
+    set(DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR ${DERIVED_SOURCES_DIR}/webkitdom)
+
+    include_directories(
+        &quot;${WebCore_INCLUDE_DIRECTORIES}&quot;
+        &quot;${DERIVED_SOURCES_DIR}&quot;
+        &quot;${DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR}&quot;
+    )
+
+    list(APPEND GObjectDOMBindings_SOURCES
+        bindings/gobject/ConvertToUTF8String.cpp
+        bindings/gobject/ConvertToUTF8String.h
+        bindings/gobject/DOMObjectCache.cpp
+        bindings/gobject/DOMObjectCache.h
+        bindings/gobject/GObjectEventListener.cpp
+        bindings/gobject/GObjectEventListener.h
+        bindings/gobject/WebKitDOMCustom.cpp
+        bindings/gobject/WebKitDOMCustom.h
+        bindings/gobject/WebKitDOMEventTarget.cpp
+        bindings/gobject/WebKitDOMEventTarget.h
+        bindings/gobject/WebKitDOMEventTargetPrivate.h
+        bindings/gobject/WebKitDOMHTMLPrivate.cpp
+        bindings/gobject/WebKitDOMHTMLPrivate.h
+        bindings/gobject/WebKitDOMObject.cpp
+        bindings/gobject/WebKitDOMObject.h
+        bindings/gobject/WebKitDOMPrivate.cpp
+        bindings/gobject/WebKitDOMPrivate.h
+        ${DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR}/webkitdomdefines.h
+        ${DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR}/webkitdom.h
+    )
+
+    list(APPEND GObjectDOMBindings_IDL_FILES
+        Modules/battery/BatteryManager.idl
+        Modules/gamepad/Gamepad.idl
+        Modules/gamepad/GamepadList.idl
+        Modules/geolocation/Geolocation.idl
+        Modules/quota/StorageInfo.idl
+        Modules/quota/StorageQuota.idl
+        Modules/webdatabase/Database.idl
+
+        css/CSSRule.idl
+        css/CSSRuleList.idl
+        css/CSSStyleDeclaration.idl
+        css/CSSStyleSheet.idl
+        css/CSSValue.idl
+        css/DOMWindowCSS.idl
+        css/MediaList.idl
+        css/MediaQueryList.idl
+        css/StyleMedia.idl
+        css/StyleSheet.idl
+        css/StyleSheetList.idl
+
+        dom/Attr.idl
+        dom/CDATASection.idl
+        dom/CharacterData.idl
+        dom/Comment.idl
+        dom/DOMImplementation.idl
+        dom/DOMNamedFlowCollection.idl
+        dom/DOMStringList.idl
+        dom/DOMStringMap.idl
+        dom/Document.idl
+        dom/DocumentFragment.idl
+        dom/DocumentType.idl
+        dom/Element.idl
+        dom/EntityReference.idl
+        dom/Event.idl
+        dom/KeyboardEvent.idl
+        dom/MessagePort.idl
+        dom/MouseEvent.idl
+        dom/NamedNodeMap.idl
+        dom/Node.idl
+        dom/NodeFilter.idl
+        dom/NodeIterator.idl
+        dom/NodeList.idl
+        dom/ProcessingInstruction.idl
+        dom/Range.idl
+        dom/ShadowRoot.idl
+        dom/Text.idl
+        dom/TreeWalker.idl
+        dom/UIEvent.idl
+        dom/WebKitNamedFlow.idl
+        dom/WheelEvent.idl
+
+        fileapi/Blob.idl
+        fileapi/File.idl
+        fileapi/FileList.idl
+
+        html/DOMSettableTokenList.idl
+        html/DOMTokenList.idl
+        html/HTMLAnchorElement.idl
+        html/HTMLAppletElement.idl
+        html/HTMLAreaElement.idl
+        html/HTMLBRElement.idl
+        html/HTMLBaseElement.idl
+        html/HTMLBaseFontElement.idl
+        html/HTMLBodyElement.idl
+        html/HTMLButtonElement.idl
+        html/HTMLCanvasElement.idl
+        html/HTMLCollection.idl
+        html/HTMLDListElement.idl
+        html/HTMLDetailsElement.idl
+        html/HTMLDirectoryElement.idl
+        html/HTMLDivElement.idl
+        html/HTMLDocument.idl
+        html/HTMLElement.idl
+        html/HTMLEmbedElement.idl
+        html/HTMLFieldSetElement.idl
+        html/HTMLFontElement.idl
+        html/HTMLFormElement.idl
+        html/HTMLFrameElement.idl
+        html/HTMLFrameSetElement.idl
+        html/HTMLHRElement.idl
+        html/HTMLHeadElement.idl
+        html/HTMLHeadingElement.idl
+        html/HTMLHtmlElement.idl
+        html/HTMLIFrameElement.idl
+        html/HTMLImageElement.idl
+        html/HTMLInputElement.idl
+        html/HTMLKeygenElement.idl
+        html/HTMLLIElement.idl
+        html/HTMLLabelElement.idl
+        html/HTMLLegendElement.idl
+        html/HTMLLinkElement.idl
+        html/HTMLMapElement.idl
+        html/HTMLMarqueeElement.idl
+        html/HTMLMediaElement.idl
+        html/HTMLMenuElement.idl
+        html/HTMLMetaElement.idl
+        html/HTMLModElement.idl
+        html/HTMLOListElement.idl
+        html/HTMLObjectElement.idl
+        html/HTMLOptGroupElement.idl
+        html/HTMLOptionElement.idl
+        html/HTMLOptionsCollection.idl
+        html/HTMLParagraphElement.idl
+        html/HTMLParamElement.idl
+        html/HTMLPreElement.idl
+        html/HTMLQuoteElement.idl
+        html/HTMLScriptElement.idl
+        html/HTMLSelectElement.idl
+        html/HTMLStyleElement.idl
+        html/HTMLTableCaptionElement.idl
+        html/HTMLTableCellElement.idl
+        html/HTMLTableColElement.idl
+        html/HTMLTableElement.idl
+        html/HTMLTableRowElement.idl
+        html/HTMLTableSectionElement.idl
+        html/HTMLTextAreaElement.idl
+        html/HTMLTitleElement.idl
+        html/HTMLUListElement.idl
+        html/MediaController.idl
+        html/MediaError.idl
+        html/TimeRanges.idl
+        html/ValidityState.idl
+
+        loader/appcache/DOMApplicationCache.idl
+
+        page/BarProp.idl
+        page/Console.idl
+        page/DOMSecurityPolicy.idl
+        page/DOMSelection.idl
+        page/DOMWindow.idl
+        page/History.idl
+        page/Location.idl
+        page/Navigator.idl
+        page/Performance.idl
+        page/PerformanceEntry.idl
+        page/PerformanceEntryList.idl
+        page/PerformanceNavigation.idl
+        page/PerformanceTiming.idl
+        page/Screen.idl
+        page/WebKitPoint.idl
+
+        plugins/DOMMimeType.idl
+        plugins/DOMMimeTypeArray.idl
+        plugins/DOMPlugin.idl
+        plugins/DOMPluginArray.idl
+
+        storage/Storage.idl
+
+        xml/XPathExpression.idl
+        xml/XPathNSResolver.idl
+        xml/XPathResult.idl
+    )
+
+    if (ENABLE_VIDEO OR ENABLE_WEB_AUDIO)
+        list(APPEND GObjectDOMBindings_IDL_FILES
+            html/HTMLAudioElement.idl
+            html/HTMLVideoElement.idl
+
+            html/track/AudioTrack.idl
+            html/track/AudioTrackList.idl
+            html/track/TextTrack.idl
+            html/track/TextTrackCue.idl
+            html/track/TextTrackCueList.idl
+            html/track/TextTrackList.idl
+            html/track/TrackEvent.idl
+            html/track/VideoTrack.idl
+            html/track/VideoTrackList.idl
+        )
+    endif ()
+
+    foreach (file Custom EventTarget Object Deprecated ${GObjectDOMBindings_IDL_FILES})
+        get_filename_component(file ${file} NAME_WE)
+        list(APPEND GObjectDOMBindings_CLASS_LIST ${file})
+    endforeach ()
+
+    set(GOBJECT_DOM_BINDINGS_FEATURES_DEFINES &quot;LANGUAGE_GOBJECT=1 ${FEATURE_DEFINES_WITH_SPACE_SEPARATOR}&quot;)
+    string(REPLACE &quot;ENABLE_INDEXED_DATABASE=1&quot; &quot;&quot; GOBJECT_DOM_BINDINGS_FEATURES_DEFINES ${GOBJECT_DOM_BINDINGS_FEATURES_DEFINES})
+    string(REPLACE REGEX &quot;ENABLE_SVG[A-Z_]+=1&quot; &quot;&quot; GOBJECT_DOM_BINDINGS_FEATURES_DEFINES ${GOBJECT_DOM_BINDINGS_FEATURES_DEFINES})
+
+    file(MAKE_DIRECTORY ${DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR})
+
+    add_custom_command(
+        OUTPUT ${DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR}/webkitdomdefines.h
+        COMMAND echo ${GObjectDOMBindings_CLASS_LIST} | ${PERL_EXECUTABLE} ${WEBCORE_DIR}/bindings/scripts/gobject-generate-headers.pl defines &gt; ${DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR}/webkitdomdefines.h
+    )
+
+    add_custom_command(
+        OUTPUT ${DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR}/webkitdom.h
+        COMMAND echo ${GObjectDOMBindings_CLASS_LIST} | ${PERL_EXECUTABLE} ${WEBCORE_DIR}/bindings/scripts/gobject-generate-headers.pl gdom &gt; ${DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR}/webkitdom.h
+    )
+
+    add_custom_target(fake-installed-webkitdom-headers
+        COMMAND ln -n -s -f ${WEBCORE_DIR}/bindings/gobject/* ${DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR}
+    )
+
+    GENERATE_BINDINGS(GObjectDOMBindings_SOURCES
+        &quot;${GObjectDOMBindings_IDL_FILES}&quot;
+        &quot;${WEBCORE_DIR}&quot;
+        &quot;${IDL_INCLUDES}&quot;
+        &quot;${GOBJECT_DOM_BINDINGS_FEATURES_DEFINES}&quot;
+        ${DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR}
+        WebKitDOM GObject
+        ${IDL_ATTRIBUTES_FILE}
+        ${SUPPLEMENTAL_DEPENDENCY_FILE}
+        ${WINDOW_CONSTRUCTORS_FILE}
+        ${WORKERGLOBALSCOPE_CONSTRUCTORS_FILE}
+        ${SHAREDWORKERGLOBALSCOPE_CONSTRUCTORS_FILE}
+        ${DEDICATEDWORKERGLOBALSCOPE_CONSTRUCTORS_FILE})
+
+    add_definitions(-DBUILDING_WEBKIT)
+
+    add_library(GObjectDOMBindings STATIC ${GObjectDOMBindings_SOURCES})
+
+    WEBKIT_SET_EXTRA_COMPILER_FLAGS(GObjectDOMBindings)
+
+    add_dependencies(GObjectDOMBindings
+        WebCore
+        fake-installed-webkitdom-headers
+    )
+endif ()
+
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCorePlatformNixcmake"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/PlatformNix.cmake (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/PlatformNix.cmake        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/PlatformNix.cmake        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -286,8 +286,7 @@
</span><span class="cx">         platform/network/soup/SoupURIUtils.cpp
</span><span class="cx">         platform/network/soup/SynchronousLoaderClientSoup.cpp
</span><span class="cx"> 
</span><del>-        # Uncomment it after https://bugs.webkit.org/show_bug.cgi?id=118598 is fixed and merged to Nix.
-        # platform/soup/SharedBufferSoup.cpp
</del><ins>+        platform/soup/SharedBufferSoup.cpp
</ins><span class="cx">     )
</span><span class="cx"> 
</span><span class="cx">     list(APPEND WebCore_INCLUDE_DIRECTORIES
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreUseJSCcmake"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/UseJSC.cmake (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/UseJSC.cmake        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/UseJSC.cmake        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -124,12 +124,10 @@
</span><span class="cx">     bindings/js/ScriptCallStackFactory.cpp
</span><span class="cx">     bindings/js/ScriptController.cpp
</span><span class="cx">     bindings/js/ScriptDebugServer.cpp
</span><del>-    bindings/js/ScriptFunctionCall.cpp
-    bindings/js/ScriptObject.cpp
</del><ins>+    bindings/js/ScriptGlobalObject.cpp
</ins><span class="cx">     bindings/js/ScriptProfile.cpp
</span><span class="cx">     bindings/js/ScriptProfiler.cpp
</span><span class="cx">     bindings/js/ScriptState.cpp
</span><del>-    bindings/js/ScriptValue.cpp
</del><span class="cx">     bindings/js/SerializedScriptValue.cpp
</span><span class="cx">     bindings/js/WebCoreTypedArrayController.cpp
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreWebCoreexpin"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/WebCore.exp.in (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/WebCore.exp.in        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/WebCore.exp.in        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -67,6 +67,9 @@
</span><span class="cx"> __ZN3WTF12AtomicString3addEPK10__CFString
</span><span class="cx"> __ZN3WTF6StringC1EP8NSString
</span><span class="cx"> __ZN3WTF6StringC1EPK10__CFString
</span><ins>+__ZN7WebCore15CertificateInfoC1ERKNS_16ResourceResponseE
+__ZN7WebCore15CertificateInfoC1EPK9__CFArray
+__ZN7WebCore15CertificateInfoC1Ev
</ins><span class="cx"> __ZN7WebCore10ClientRectC1ERKNS_7IntRectE
</span><span class="cx"> __ZN7WebCore10ClientRectC1ERKNS_9FloatRectE
</span><span class="cx"> __ZN7WebCore10ClientRectC1Ev
</span><span class="lines">@@ -364,9 +367,11 @@
</span><span class="cx"> __ZN7WebCore14ResourceLoader32didCancelAuthenticationChallengeERKNS_23AuthenticationChallengeE
</span><span class="cx"> __ZN7WebCore14ResourceLoader6cancelEv
</span><span class="cx"> __ZN7WebCore14SQLiteDatabase11tableExistsERKN3WTF6StringE
</span><ins>+__ZN7WebCore14SQLiteDatabase12lastErrorMsgEv
</ins><span class="cx"> __ZN7WebCore14SQLiteDatabase14executeCommandERKN3WTF6StringE
</span><span class="cx"> __ZN7WebCore14SQLiteDatabase4openERKN3WTF6StringEb
</span><span class="cx"> __ZN7WebCore14SQLiteDatabase5closeEv
</span><ins>+__ZN7WebCore14SQLiteDatabase9lastErrorEv
</ins><span class="cx"> __ZN7WebCore14SQLiteDatabaseC1Ev
</span><span class="cx"> __ZN7WebCore14SQLiteDatabaseD1Ev
</span><span class="cx"> __ZN7WebCore14SchemeRegistry24registerURLSchemeAsLocalERKN3WTF6StringE
</span><span class="lines">@@ -571,12 +576,14 @@
</span><span class="cx"> __ZN7WebCore15ResourceRequest21httpPipeliningEnabledEv
</span><span class="cx"> __ZN7WebCore15ResourceRequest24setHTTPPipeliningEnabledEb
</span><span class="cx"> __ZN7WebCore15SQLiteStatement12getColumnIntEi
</span><ins>+__ZN7WebCore15SQLiteStatement12isColumnNullEi
</ins><span class="cx"> __ZN7WebCore15SQLiteStatement13getColumnTextEi
</span><span class="cx"> __ZN7WebCore15SQLiteStatement14executeCommandEv
</span><span class="cx"> __ZN7WebCore15SQLiteStatement21getColumnBlobAsStringEi
</span><span class="cx"> __ZN7WebCore15SQLiteStatement22isColumnDeclaredAsBlobEi
</span><span class="cx"> __ZN7WebCore15SQLiteStatement4stepEv
</span><span class="cx"> __ZN7WebCore15SQLiteStatement5resetEv
</span><ins>+__ZN7WebCore15SQLiteStatement7bindIntEii
</ins><span class="cx"> __ZN7WebCore15SQLiteStatement7prepareEv
</span><span class="cx"> __ZN7WebCore15SQLiteStatement8bindBlobEiRKN3WTF6StringE
</span><span class="cx"> __ZN7WebCore15SQLiteStatement8bindTextEiRKN3WTF6StringE
</span><span class="lines">@@ -691,6 +698,7 @@
</span><span class="cx"> __ZN7WebCore17SubresourceLoader6createEPNS_5FrameEPNS_14CachedResourceERKNS_15ResourceRequestERKNS_21ResourceLoaderOptionsE
</span><span class="cx"> __ZN7WebCore17cacheDOMStructureEPNS_17JSDOMGlobalObjectEPN3JSC9StructureEPKNS2_9ClassInfoE
</span><span class="cx"> __ZN7WebCore17drawLayerContentsEP9CGContextPNS_15PlatformCALayerERN3WTF6VectorINS_9FloatRectELm5ENS4_15CrashOnOverflowEEE
</span><ins>+__ZN7WebCore17encodeForFileNameERKN3WTF6StringE
</ins><span class="cx"> __ZN7WebCore17languageDidChangeEv
</span><span class="cx"> __ZN7WebCore17openTemporaryFileERKN3WTF6StringERi
</span><span class="cx"> __ZN7WebCore17setCookiesFromDOMERKNS_21NetworkStorageSessionERKNS_3URLES5_RKN3WTF6StringE
</span><span class="lines">@@ -776,6 +784,8 @@
</span><span class="cx"> __ZN7WebCore20ResourceResponseBase24setExpectedContentLengthEx
</span><span class="cx"> __ZN7WebCore20ResourceResponseBase6setURLERKNS_3URLE
</span><span class="cx"> __ZN7WebCore20ResourceResponseBaseC2Ev
</span><ins>+__ZN7WebCore20TransformationMatrix9translateEdd
+__ZN7WebCore20TransformationMatrix5scaleEd
</ins><span class="cx"> __ZN7WebCore20UserGestureIndicator7s_stateE
</span><span class="cx"> __ZN7WebCore20UserGestureIndicatorC1ENS_26ProcessingUserGestureStateE
</span><span class="cx"> __ZN7WebCore20UserGestureIndicatorD1Ev
</span><span class="lines">@@ -785,6 +795,8 @@
</span><span class="cx"> __ZN7WebCore20protocolIsJavaScriptERKN3WTF6StringE
</span><span class="cx"> __ZN7WebCore20toUInt32EnforceRangeEPN3JSC9ExecStateENS0_7JSValueE
</span><span class="cx"> __ZN7WebCore21BackForwardController11itemAtIndexEi
</span><ins>+__ZN7WebCore21CrossThreadCopierBaseILb0ELb0EN3WTF6StringEE4copyERKS2_
+__ZN7WebCore21CrossThreadCopierBaseILb0ELb0ENS_19IDBDatabaseMetadataEE4copyERKS1_
</ins><span class="cx"> __ZN7WebCore21MemoryPressureHandler7installEv
</span><span class="cx"> __ZN7WebCore21NetworkStorageSession21defaultStorageSessionEv
</span><span class="cx"> __ZN7WebCore21NetworkStorageSession25switchToNewTestingSessionEv
</span><span class="lines">@@ -1430,7 +1442,6 @@
</span><span class="cx"> __ZNK7WebCore11RenderStyle11fontMetricsEv
</span><span class="cx"> __ZNK7WebCore11RenderStyle21visitedDependentColorEi
</span><span class="cx"> __ZNK7WebCore11RenderStyle4fontEv
</span><del>-__ZNK7WebCore11ScriptValue9getStringEPN3JSC9ExecStateERN3WTF6StringE
</del><span class="cx"> __ZNK7WebCore12RenderObject14enclosingLayerEv
</span><span class="cx"> __ZNK7WebCore12RenderObject15localToAbsoluteERKNS_10FloatPointEj
</span><span class="cx"> __ZNK7WebCore12RenderObject16repaintRectangleERKNS_10LayoutRectEb
</span><span class="lines">@@ -1502,7 +1513,6 @@
</span><span class="cx"> __ZNK7WebCore14FrameSelection36rootEditableElementOrDocumentElementEv
</span><span class="cx"> __ZNK7WebCore14FrameSelection6boundsEb
</span><span class="cx"> __ZNK7WebCore14InsertionPoint8isActiveEv
</span><del>-__ZNK7WebCore14InspectorValue12toJSONStringEv
</del><span class="cx"> __ZNK7WebCore14RenderListItem10markerTextEv
</span><span class="cx"> __ZNK7WebCore14ResourceBuffer4dataEv
</span><span class="cx"> __ZNK7WebCore14ResourceBuffer4sizeEv
</span><span class="lines">@@ -1590,6 +1600,7 @@
</span><span class="cx"> __ZNK7WebCore19AnimationController11isSuspendedEv
</span><span class="cx"> __ZNK7WebCore19AnimationController24numberOfActiveAnimationsEPNS_8DocumentE
</span><span class="cx"> __ZNK7WebCore19AnimationController33allowsNewAnimationsWhileSuspendedEv
</span><ins>+__ZNK7WebCore19IDBDatabaseMetadata12isolatedCopyEv
</ins><span class="cx"> __ZNK7WebCore19InspectorController12getHighlightEPNS_9HighlightE
</span><span class="cx"> __ZNK7WebCore19InspectorController29buildObjectForHighlightedNodeEv
</span><span class="cx"> __ZNK7WebCore19ResourceRequestBase10httpMethodEv
</span><span class="lines">@@ -2276,6 +2287,7 @@
</span><span class="cx"> __ZN7WebCore19ResourceRequestBase14setCachePolicyENS_26ResourceRequestCachePolicyE
</span><span class="cx"> __ZN7WebCore19applicationIsWebAppEv
</span><span class="cx"> __ZN7WebCore20NetworkStateNotifier11setIsOnLineEb
</span><ins>+__ZN7WebCore20ResourceHandleClient22willCacheResponseAsyncEPNS_14ResourceHandleEPK20_CFCachedURLResponse
</ins><span class="cx"> __ZN7WebCore20applicationIsOkCupidEv
</span><span class="cx"> __ZN7WebCore20endOfEditableContentERKNS_15VisiblePositionE
</span><span class="cx"> __ZN7WebCore20lastOffsetForEditingEPKNS_4NodeE
</span><span class="lines">@@ -2625,7 +2637,7 @@
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><span class="cx"> __ZN7WebCore15InspectorClient31doDispatchMessageOnFrontendPageEPNS_4PageERKN3WTF6StringE
</span><span class="cx"> __ZN7WebCore17InspectorCounters12counterValueENS0_11CounterTypeE
</span><del>-__ZN7WebCore19InspectorController15connectFrontendEPNS_24InspectorFrontendChannelE
</del><ins>+__ZN7WebCore19InspectorController15connectFrontendEPN9Inspector24InspectorFrontendChannelE
</ins><span class="cx"> __ZN7WebCore19InspectorController18disconnectFrontendEv
</span><span class="cx"> __ZN7WebCore19InspectorController18setProfilerEnabledEb
</span><span class="cx"> __ZN7WebCore19InspectorController25evaluateForTestInFrontendElRKN3WTF6StringE
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreWebCorevcxprojWebCorevcxproj"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,4 +1,4 @@
</span><del>-&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
</del><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
</ins><span class="cx"> &lt;Project DefaultTargets=&quot;Build&quot; ToolsVersion=&quot;4.0&quot; xmlns=&quot;http://schemas.microsoft.com/developer/msbuild/2003&quot;&gt;
</span><span class="cx">   &lt;ItemGroup Label=&quot;ProjectConfigurations&quot;&gt;
</span><span class="cx">     &lt;ProjectConfiguration Include=&quot;DebugSuffix|Win32&quot;&gt;
</span><span class="lines">@@ -59,6 +59,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -67,6 +68,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -75,6 +77,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Production|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -83,6 +86,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -91,6 +95,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -99,6 +104,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -742,7 +748,7 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\HTMLNames.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\InspectorBackendDispatchers.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\InspectorFrontend.cpp&quot; /&gt;
</span><del>-    &lt;ClCompile Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\InspectorTypeBuilder.cpp&quot; /&gt;
</del><ins>+    &lt;ClCompile Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\InspectorWebTypeBuilders.cpp&quot; /&gt;
</ins><span class="cx">     &lt;ClCompile Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\WebCore\DerivedSources\JSAbstractWorker.cpp&quot;&gt;
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="lines">@@ -8277,6 +8283,12 @@
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><ins>+    &lt;ClCompile Include=&quot;..\platform\network\cf\ResourceHandleCFURLConnectionDelegate.cpp&quot;&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+    &lt;/ClCompile&gt;
</ins><span class="cx">     &lt;ClCompile Include=&quot;..\platform\network\cf\ResourceRequestCFNet.cpp&quot;&gt;
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="lines">@@ -8301,6 +8313,12 @@
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><ins>+    &lt;ClCompile Include=&quot;..\platform\network\cf\SynchronousResourceHandleCFURLConnectionDelegate.cpp&quot;&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+    &lt;/ClCompile&gt;
</ins><span class="cx">     &lt;ClCompile Include=&quot;..\platform\network\win\DownloadBundleWin.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\platform\network\win\NetworkStateNotifierWin.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\platform\network\curl\CookieJarCurl.cpp&quot;&gt;
</span><span class="lines">@@ -17276,21 +17294,7 @@
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><del>-    &lt;ClCompile Include=&quot;..\bindings\js\ScriptFunctionCall.cpp&quot;&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-    &lt;/ClCompile&gt;
-    &lt;ClCompile Include=&quot;..\bindings\js\ScriptObject.cpp&quot; /&gt;
</del><ins>+    &lt;ClCompile Include=&quot;..\bindings\js\ScriptGlobalObject.cpp&quot; /&gt;
</ins><span class="cx">     &lt;ClCompile Include=&quot;..\bindings\js\ScriptProfile.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\bindings\js\ScriptProfiler.cpp&quot;&gt;
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="lines">@@ -17320,7 +17324,6 @@
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><del>-    &lt;ClCompile Include=&quot;..\bindings\js\ScriptValue.cpp&quot; /&gt;
</del><span class="cx">     &lt;ClCompile Include=&quot;..\bindings\js\SerializedScriptValue.cpp&quot;&gt;
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="lines">@@ -17633,14 +17636,6 @@
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><del>-    &lt;ClCompile Include=&quot;..\inspector\InspectorAgentRegistry.cpp&quot;&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-    &lt;/ClCompile&gt;
</del><span class="cx">     &lt;ClCompile Include=&quot;..\inspector\InspectorAllInOne.cpp&quot;&gt;
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="lines">@@ -17657,14 +17652,6 @@
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><del>-    &lt;ClCompile Include=&quot;..\inspector\InspectorBackendDispatcher.cpp&quot;&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-    &lt;/ClCompile&gt;
</del><span class="cx">     &lt;ClCompile Include=&quot;..\inspector\InspectorCanvasAgent.cpp&quot;&gt;
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="lines">@@ -17905,14 +17892,6 @@
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><del>-    &lt;ClCompile Include=&quot;..\inspector\InspectorValues.cpp&quot;&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-    &lt;/ClCompile&gt;
</del><span class="cx">     &lt;ClCompile Include=&quot;..\inspector\InspectorWorkerAgent.cpp&quot;&gt;
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="lines">@@ -18105,7 +18084,7 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\InspectorBackendDispatchers.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\InspectorFrontend.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\InspectorOverlayPage.h&quot; /&gt;
</span><del>-    &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\InspectorTypeBuilder.h&quot; /&gt;
</del><ins>+    &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\InspectorWebTypeBuilders.h&quot; /&gt;
</ins><span class="cx">     &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\WebCore\DerivedSources\JSAbstractWorker.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSAttr.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSBarProp.h&quot; /&gt;
</span><span class="lines">@@ -18575,11 +18554,20 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\WebCore\DerivedSources\JSWebGLVertexArrayObjectOES.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\accessibility\AccessibilityNodeObject.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\css\CSSImageSetValue.h&quot; /&gt;
</span><ins>+    &lt;ClInclude Include=&quot;..\ForwardingHeaders\bindings\ScriptFunctionCall.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\ForwardingHeaders\bindings\ScriptObject.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\ForwardingHeaders\bindings\ScriptValue.h&quot; /&gt;
</ins><span class="cx">     &lt;ClInclude Include=&quot;..\ForwardingHeaders\heap\AllocationSpace.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\ForwardingHeaders\heap\Heap.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\ForwardingHeaders\heap\SlotVisitor.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\ForwardingHeaders\heap\StrongInlines.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\ForwardingHeaders\heap\Weak.h&quot; /&gt;
</span><ins>+    &lt;ClInclude Include=&quot;..\ForwardingHeaders\inspector\InspectorAgentBase.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\ForwardingHeaders\inspector\InspectorAgentRegistry.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\ForwardingHeaders\inspector\InspectorBackendDispatcher.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\ForwardingHeaders\inspector\InspectorFrontendChannel.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\ForwardingHeaders\inspector\InspectorTypeBuilder.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\ForwardingHeaders\inspector\InspectorValues.h&quot; /&gt;
</ins><span class="cx">     &lt;ClInclude Include=&quot;..\ForwardingHeaders\masm\X86Assembler.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\ForwardingHeaders\parser\SourceCode.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\ForwardingHeaders\parser\SourceProvider.h&quot; /&gt;
</span><span class="lines">@@ -19504,11 +19492,13 @@
</span><span class="cx">     &lt;CustomBuildStep Include=&quot;..\platform\network\cf\FormDataStreamCFNet.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\platform\network\cf\LoaderRunLoopCF.h&quot; /&gt;
</span><span class="cx">     &lt;CustomBuildStep Include=&quot;..\platform\network\cf\ResourceError.h&quot; /&gt;
</span><ins>+    &lt;CustomBuildStep Include=&quot;..\platform\network\cf\ResourceHandleCFURLConnectionDelegate.h&quot; /&gt;
</ins><span class="cx">     &lt;CustomBuildStep Include=&quot;..\platform\network\cf\ResourceRequest.h&quot; /&gt;
</span><span class="cx">     &lt;CustomBuildStep Include=&quot;..\platform\network\cf\ResourceRequestCFNet.h&quot; /&gt;
</span><span class="cx">     &lt;CustomBuildStep Include=&quot;..\platform\network\cf\ResourceResponse.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\platform\network\cf\SocketStreamError.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\platform\network\cf\SocketStreamHandle.h&quot; /&gt;
</span><ins>+    &lt;CustomBuildStep Include=&quot;..\platform\network\cf\SynchronousResourceHandleCFURLConnectionDelegate.h&quot; /&gt;
</ins><span class="cx">     &lt;CustomBuildStep Include=&quot;..\platform\network\curl\AuthenticationChallenge.h&quot;&gt;
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="lines">@@ -20629,15 +20619,13 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\bindings\js\ScriptCallStackFactory.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\bindings\js\ScriptController.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\bindings\js\ScriptDebugServer.h&quot; /&gt;
</span><del>-    &lt;ClInclude Include=&quot;..\bindings\js\ScriptFunctionCall.h&quot; /&gt;
</del><span class="cx">     &lt;ClInclude Include=&quot;..\bindings\js\ScriptHeapSnapshot.h&quot; /&gt;
</span><del>-    &lt;ClInclude Include=&quot;..\bindings\js\ScriptObject.h&quot; /&gt;
</del><ins>+    &lt;ClInclude Include=&quot;..\bindings\js\ScriptGlobalObject.h&quot; /&gt;
</ins><span class="cx">     &lt;ClInclude Include=&quot;..\bindings\js\ScriptProfile.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\bindings\js\ScriptProfileNode.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\bindings\js\ScriptProfiler.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\bindings\js\ScriptSourceCode.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\bindings\js\ScriptState.h&quot; /&gt;
</span><del>-    &lt;ClInclude Include=&quot;..\bindings\js\ScriptValue.h&quot; /&gt;
</del><span class="cx">     &lt;ClInclude Include=&quot;..\bindings\js\ScriptWrappable.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\bindings\js\SerializedScriptValue.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\bindings\js\SourceID.h&quot; /&gt;
</span><span class="lines">@@ -20948,8 +20936,6 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\inspector\InjectedScriptModule.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\inspector\InspectorAgent.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\inspector\InspectorApplicationCacheAgent.h&quot; /&gt;
</span><del>-    &lt;ClInclude Include=&quot;..\inspector\InspectorBackendDispatcher.h&quot; /&gt;
-    &lt;ClInclude Include=&quot;..\inspector\InspectorBaseAgent.h&quot; /&gt;
</del><span class="cx">     &lt;ClInclude Include=&quot;..\inspector\InspectorCanvasAgent.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\inspector\InspectorCanvasInstrumentation.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\inspector\InspectorClient.h&quot; /&gt;
</span><span class="lines">@@ -20985,7 +20971,7 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\inspector\InspectorStyleSheet.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\inspector\InspectorStyleTextEditor.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\inspector\InspectorTimelineAgent.h&quot; /&gt;
</span><del>-    &lt;ClInclude Include=&quot;..\inspector\InspectorValues.h&quot; /&gt;
</del><ins>+    &lt;ClInclude Include=&quot;..\inspector\InspectorWebAgentBase.h&quot; /&gt;
</ins><span class="cx">     &lt;ClInclude Include=&quot;..\inspector\InspectorWorkerAgent.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\inspector\InspectorWorkerResource.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\inspector\InstrumentingAgents.h&quot; /&gt;
</span><span class="lines">@@ -21067,4 +21053,4 @@
</span><span class="cx">   &lt;ImportGroup Label=&quot;ExtensionTargets&quot;&gt;
</span><span class="cx">     &lt;Import Project=&quot;$(VCTargetsPath)\BuildCustomizations\masm.targets&quot; /&gt;
</span><span class="cx">   &lt;/ImportGroup&gt;
</span><del>-&lt;/Project&gt;
</del><ins>+&lt;/Project&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreWebCorevcxprojWebCorevcxprojfilters"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -175,6 +175,9 @@
</span><span class="cx">     &lt;Filter Include=&quot;crypto&quot;&gt;
</span><span class="cx">       &lt;UniqueIdentifier&gt;{02334427-19d6-44c8-a5d1-e1a67a9c4997}&lt;/UniqueIdentifier&gt;
</span><span class="cx">     &lt;/Filter&gt;
</span><ins>+    &lt;Filter Include=&quot;crypto\keys&quot;&gt;
+      &lt;UniqueIdentifier&gt;{edd0faa6-bb8c-4c0e-b28a-064bde7e1eba}&lt;/UniqueIdentifier&gt;
+    &lt;/Filter&gt;
</ins><span class="cx">     &lt;Filter Include=&quot;css&quot;&gt;
</span><span class="cx">       &lt;UniqueIdentifier&gt;{353b76ca-c49a-41da-88da-33dc422325ef}&lt;/UniqueIdentifier&gt;
</span><span class="cx">     &lt;/Filter&gt;
</span><span class="lines">@@ -253,6 +256,9 @@
</span><span class="cx">     &lt;Filter Include=&quot;ForwardingHeaders&quot;&gt;
</span><span class="cx">       &lt;UniqueIdentifier&gt;{95216a70-a3b2-453c-a66f-a81cc1abefee}&lt;/UniqueIdentifier&gt;
</span><span class="cx">     &lt;/Filter&gt;
</span><ins>+    &lt;Filter Include=&quot;ForwardingHeaders\bindings&quot;&gt;
+      &lt;UniqueIdentifier&gt;{21343124-1234-4542-a8aa-ebac87812312}&lt;/UniqueIdentifier&gt;
+    &lt;/Filter&gt;
</ins><span class="cx">     &lt;Filter Include=&quot;ForwardingHeaders\yarr&quot;&gt;
</span><span class="cx">       &lt;UniqueIdentifier&gt;{3b9b1819-1b31-4771-b12a-32c210f8476d}&lt;/UniqueIdentifier&gt;
</span><span class="cx">     &lt;/Filter&gt;
</span><span class="lines">@@ -1881,6 +1887,9 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\platform\network\cf\ResourceHandleCFNet.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;platform\network\cf&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><ins>+    &lt;ClCompile Include=&quot;..\platform\network\cf\ResourceHandleCFURLConnectionDelegate.cpp&quot;&gt;
+      &lt;Filter&gt;platform\network\cf&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
</ins><span class="cx">     &lt;ClCompile Include=&quot;..\platform\network\cf\ResourceRequestCFNet.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;platform\network\cf&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><span class="lines">@@ -1893,6 +1902,9 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\platform\network\cf\SynchronousLoaderClientCFNet.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;platform\network\cf&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><ins>+    &lt;ClCompile Include=&quot;..\platform\network\cf\SynchronousResourceHandleCFURLConnectionDelegate.cpp&quot;&gt;
+      &lt;Filter&gt;platform\network\cf&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
</ins><span class="cx">     &lt;ClCompile Include=&quot;..\platform\network\win\DownloadBundleWin.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;platform\network\win&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><span class="lines">@@ -2289,9 +2301,6 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\css\StyleMedia.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;css&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><del>-    &lt;ClCompile Include=&quot;..\css\StylePropertySet.cpp&quot;&gt;
-      &lt;Filter&gt;css&lt;/Filter&gt;
-    &lt;/ClCompile&gt;
</del><span class="cx">     &lt;ClCompile Include=&quot;..\css\StylePropertyShorthand.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;css&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><span class="lines">@@ -4563,12 +4572,9 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\bindings\js\ScriptDebugServer.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;bindings\js&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><del>-    &lt;ClCompile Include=&quot;..\bindings\js\ScriptFunctionCall.cpp&quot;&gt;
</del><ins>+    &lt;ClCompile Include=&quot;..\bindings\js\ScriptGlobalObject.cpp&quot;&gt;
</ins><span class="cx">       &lt;Filter&gt;bindings\js&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><del>-    &lt;ClCompile Include=&quot;..\bindings\js\ScriptObject.cpp&quot;&gt;
-      &lt;Filter&gt;bindings\js&lt;/Filter&gt;
-    &lt;/ClCompile&gt;
</del><span class="cx">     &lt;ClCompile Include=&quot;..\bindings\js\ScriptProfile.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;bindings\js&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><span class="lines">@@ -4578,9 +4584,6 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\bindings\js\ScriptState.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;bindings\js&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><del>-    &lt;ClCompile Include=&quot;..\bindings\js\ScriptValue.cpp&quot;&gt;
-      &lt;Filter&gt;bindings\js&lt;/Filter&gt;
-    &lt;/ClCompile&gt;
</del><span class="cx">     &lt;ClCompile Include=&quot;..\bindings\js\SerializedScriptValue.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;bindings\js&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><span class="lines">@@ -4824,18 +4827,12 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\inspector\InspectorAgent.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;inspector&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><del>-    &lt;ClCompile Include=&quot;..\inspector\InspectorAgentRegistry.cpp&quot;&gt;
-      &lt;Filter&gt;inspector&lt;/Filter&gt;
-    &lt;/ClCompile&gt;
</del><span class="cx">     &lt;ClCompile Include=&quot;..\inspector\InspectorAllInOne.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;inspector&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\inspector\InspectorApplicationCacheAgent.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;inspector&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><del>-    &lt;ClCompile Include=&quot;..\inspector\InspectorBackendDispatcher.cpp&quot;&gt;
-      &lt;Filter&gt;inspector&lt;/Filter&gt;
-    &lt;/ClCompile&gt;
</del><span class="cx">     &lt;ClCompile Include=&quot;..\inspector\InspectorCanvasAgent.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;inspector&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><span class="lines">@@ -4869,9 +4866,6 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\inspector\InspectorDOMDebuggerAgent.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;inspector&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><del>-    &lt;ClCompile Include=&quot;..\inspector\InspectorDOMNodeAgent.cpp&quot;&gt;
-      &lt;Filter&gt;inspector&lt;/Filter&gt;
-    &lt;/ClCompile&gt;
</del><span class="cx">     &lt;ClCompile Include=&quot;..\inspector\InspectorDOMStorageAgent.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;inspector&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><span class="lines">@@ -4926,9 +4920,6 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\inspector\InspectorTimelineAgent.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;inspector&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><del>-    &lt;ClCompile Include=&quot;..\inspector\InspectorValues.cpp&quot;&gt;
-      &lt;Filter&gt;inspector&lt;/Filter&gt;
-    &lt;/ClCompile&gt;
</del><span class="cx">     &lt;ClCompile Include=&quot;..\inspector\InspectorWorkerAgent.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;inspector&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><span class="lines">@@ -5287,7 +5278,7 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\InspectorFrontend.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;DerivedSources&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><del>-    &lt;ClCompile Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\InspectorTypeBuilder.cpp&quot;&gt;
</del><ins>+    &lt;ClCompile Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\InspectorWebTypeBuilders.cpp&quot;&gt;
</ins><span class="cx">       &lt;Filter&gt;DerivedSources&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\WebCore\DerivedSources\JSAbstractWorker.cpp&quot;&gt;
</span><span class="lines">@@ -7117,6 +7108,11 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\platform\graphics\gstreamer\WebKitWebSourceGStreamer.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;platform\graphics\gstreamer&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><ins>+    &lt;ClCompile Include=&quot;..\css\StyleProperties.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;..\rendering\line\LineBreaker.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;..\rendering\line\LineInfo.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;..\rendering\line\TrailingObjects.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;..\inspector\InspectorNodeFinder.cpp&quot; /&gt;
</ins><span class="cx">   &lt;/ItemGroup&gt;
</span><span class="cx">   &lt;ItemGroup&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\Modules\geolocation\Coordinates.h&quot;&gt;
</span><span class="lines">@@ -9231,9 +9227,6 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\css\StyleMedia.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;css&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><del>-    &lt;ClInclude Include=&quot;..\css\StylePropertySet.h&quot;&gt;
-      &lt;Filter&gt;css&lt;/Filter&gt;
-    &lt;/ClInclude&gt;
</del><span class="cx">     &lt;ClInclude Include=&quot;..\css\StylePropertyShorthand.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;css&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><span class="lines">@@ -11511,13 +11504,10 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\bindings\js\ScriptDebugServer.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;bindings\js&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><del>-    &lt;ClInclude Include=&quot;..\bindings\js\ScriptFunctionCall.h&quot;&gt;
-      &lt;Filter&gt;bindings\js&lt;/Filter&gt;
-    &lt;/ClInclude&gt;
</del><span class="cx">     &lt;ClInclude Include=&quot;..\bindings\js\ScriptHeapSnapshot.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;bindings\js&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><del>-    &lt;ClInclude Include=&quot;..\bindings\js\ScriptObject.h&quot;&gt;
</del><ins>+    &lt;ClInclude Include=&quot;..\bindings\js\ScriptGlobalObject.h&quot;&gt;
</ins><span class="cx">       &lt;Filter&gt;bindings\js&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\bindings\js\ScriptProfile.h&quot;&gt;
</span><span class="lines">@@ -11535,9 +11525,6 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\bindings\js\ScriptState.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;bindings\js&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><del>-    &lt;ClInclude Include=&quot;..\bindings\js\ScriptValue.h&quot;&gt;
-      &lt;Filter&gt;bindings\js&lt;/Filter&gt;
-    &lt;/ClInclude&gt;
</del><span class="cx">     &lt;ClInclude Include=&quot;..\bindings\js\ScriptWrappable.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;bindings\js&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><span class="lines">@@ -12195,6 +12182,15 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\svg\properties\SVGTransformListPropertyTearOff.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;rendering\svg\properties&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><ins>+    &lt;ClInclude Include=&quot;..\ForwardingHeaders\bindings\ScriptFunctionCall.h&quot;&gt;
+      &lt;Filter&gt;ForwardingHeaders\bindings&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;..\ForwardingHeaders\bindings\ScriptObject.h&quot;&gt;
+      &lt;Filter&gt;ForwardingHeaders\bindings&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;..\ForwardingHeaders\bindings\ScriptValue.h&quot;&gt;
+      &lt;Filter&gt;ForwardingHeaders\bindings&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
</ins><span class="cx">     &lt;ClInclude Include=&quot;..\ForwardingHeaders\runtime\ArgList.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;ForwardingHeaders\runtime&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><span class="lines">@@ -12240,9 +12236,24 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\ForwardingHeaders\heap\Strong.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;ForwardingHeaders\heap&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><ins>+    &lt;ClInclude Include=&quot;..\ForwardingHeaders\inspector\InspectorAgentBase.h&quot;&gt;
+      &lt;Filter&gt;ForwardingHeaders\inspector&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;..\ForwardingHeaders\inspector\InspectorAgentRegistry.h&quot;&gt;
+      &lt;Filter&gt;ForwardingHeaders\inspector&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;..\ForwardingHeaders\inspector\InspectorBackendDispatcher.h&quot;&gt;
+      &lt;Filter&gt;ForwardingHeaders\inspector&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
</ins><span class="cx">     &lt;ClInclude Include=&quot;..\ForwardingHeaders\inspector\InspectorFrontendChannel.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;ForwardingHeaders\inspector&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><ins>+    &lt;ClInclude Include=&quot;..\ForwardingHeaders\inspector\InspectorTypeBuilder.h&quot;&gt;
+      &lt;Filter&gt;ForwardingHeaders\inspector&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;..\ForwardingHeaders\inspector\InspectorValues.h&quot;&gt;
+      &lt;Filter&gt;ForwardingHeaders\inspector&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
</ins><span class="cx">     &lt;ClInclude Include=&quot;..\history\BackForwardClient.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;history&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><span class="lines">@@ -12396,12 +12407,6 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\inspector\InspectorApplicationCacheAgent.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;inspector&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><del>-    &lt;ClInclude Include=&quot;..\inspector\InspectorBackendDispatcher.h&quot;&gt;
-      &lt;Filter&gt;inspector&lt;/Filter&gt;
-    &lt;/ClInclude&gt;
-    &lt;ClInclude Include=&quot;..\inspector\InspectorBaseAgent.h&quot;&gt;
-      &lt;Filter&gt;inspector&lt;/Filter&gt;
-    &lt;/ClInclude&gt;
</del><span class="cx">     &lt;ClInclude Include=&quot;..\inspector\InspectorCanvasAgent.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;inspector&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><span class="lines">@@ -12507,7 +12512,7 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\inspector\InspectorTimelineAgent.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;inspector&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><del>-    &lt;ClInclude Include=&quot;..\inspector\InspectorValues.h&quot;&gt;
</del><ins>+    &lt;ClInclude Include=&quot;..\inspector\InspectorWebAgentBase.h&quot;&gt;
</ins><span class="cx">       &lt;Filter&gt;inspector&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\inspector\InspectorWorkerAgent.h&quot;&gt;
</span><span class="lines">@@ -13076,7 +13081,7 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\InspectorOverlayPage.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;DerivedSources&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><del>-    &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\InspectorTypeBuilder.h&quot;&gt;
</del><ins>+    &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\InspectorWebTypeBuilders.h&quot;&gt;
</ins><span class="cx">       &lt;Filter&gt;DerivedSources&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\WebCore\DerivedSources\JSAbstractWorker.h&quot;&gt;
</span><span class="lines">@@ -14708,9 +14713,6 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\rendering\line\LineLayoutState.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;rendering&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><del>-    &lt;ClInclude Include=&quot;..\rendering\line\LineWidth.h&quot;&gt;
-      &lt;Filter&gt;rendering\line&lt;/Filter&gt;
-    &lt;/ClInclude&gt;
</del><span class="cx">     &lt;ClInclude Include=&quot;..\platform\graphics\FloatPolygon.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;platform\graphics&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><span class="lines">@@ -14969,6 +14971,13 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\platform\graphics\gstreamer\WebKitWebSourceGStreamer.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;platform\graphics\gstreamer&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><ins>+    &lt;ClInclude Include=&quot;..\Modules\plugins\PluginReplacement.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\css\StyleProperties.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\rendering\line\BreakingContextInlineHeaders.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\rendering\line\LineBreaker.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\rendering\line\LineInlineHeaders.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\rendering\line\LineWidth.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\rendering\line\TrailingObjects.h&quot; /&gt;
</ins><span class="cx">   &lt;/ItemGroup&gt;
</span><span class="cx">   &lt;ItemGroup&gt;
</span><span class="cx">     &lt;None Include=&quot;..\css\CSSGrammar.y.in&quot;&gt;
</span><span class="lines">@@ -15095,6 +15104,9 @@
</span><span class="cx">     &lt;CustomBuildStep Include=&quot;..\platform\network\cf\ResourceError.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;platform\network\cf&lt;/Filter&gt;
</span><span class="cx">     &lt;/CustomBuildStep&gt;
</span><ins>+    &lt;CustomBuildStep Include=&quot;..\platform\network\cf\ResourceHandleCFURLConnectionDelegate.h&quot;&gt;
+      &lt;Filter&gt;platform\network\cf&lt;/Filter&gt;
+    &lt;/CustomBuildStep&gt;
</ins><span class="cx">     &lt;CustomBuildStep Include=&quot;..\platform\network\cf\ResourceRequest.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;platform\network\cf&lt;/Filter&gt;
</span><span class="cx">     &lt;/CustomBuildStep&gt;
</span><span class="lines">@@ -15104,6 +15116,9 @@
</span><span class="cx">     &lt;CustomBuildStep Include=&quot;..\platform\network\cf\ResourceResponse.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;platform\network\cf&lt;/Filter&gt;
</span><span class="cx">     &lt;/CustomBuildStep&gt;
</span><ins>+    &lt;CustomBuildStep Include=&quot;..\platform\network\cf\SynchronousResourceHandleCFURLConnectionDelegate.h&quot;&gt;
+      &lt;Filter&gt;platform\network\cf&lt;/Filter&gt;
+    &lt;/CustomBuildStep&gt;
</ins><span class="cx">     &lt;CustomBuildStep Include=&quot;..\platform\network\curl\AuthenticationChallenge.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;platform\network\curl&lt;/Filter&gt;
</span><span class="cx">     &lt;/CustomBuildStep&gt;
</span><span class="lines">@@ -15176,4 +15191,4 @@
</span><span class="cx">       &lt;Filter&gt;platform\win&lt;/Filter&gt;
</span><span class="cx">     &lt;/MASM&gt;
</span><span class="cx">   &lt;/ItemGroup&gt;
</span><del>-&lt;/Project&gt;
</del><ins>+&lt;/Project&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreWebCorevcxprojWebCoreCommonprops"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/WebCore.vcxproj/WebCoreCommon.props (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/WebCore.vcxproj/WebCoreCommon.props        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/WebCore.vcxproj/WebCoreCommon.props        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -7,7 +7,7 @@
</span><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;ItemDefinitionGroup&gt;
</span><span class="cx">     &lt;ClCompile&gt;
</span><del>-      &lt;AdditionalIncludeDirectories&gt;$(ProjectDir)..;$(ProjectDir)..\Modules\mediacontrols;$(ProjectDir)..\Modules\mediastream;$(ProjectDir)..\Modules\filesystem;$(ProjectDir)..\Modules\geolocation;$(ProjectDir)..\Modules\indexeddb;$(ProjectDir)..\Modules\mediasource;$(ProjectDir)..\Modules\navigatorcontentutils;$(ProjectDir)..\Modules\plugins;$(ProjectDir)..\Modules\speech;$(ProjectDir)..\Modules\proximity;$(ProjectDir)..\Modules\quota;$(ProjectDir)..\Modules\notifications;$(ProjectDir)..\Modules\webdatabase;$(ProjectDir)..\Modules\websockets;$(ProjectDir)..\accessibility;$(ProjectDir)..\accessibility\win;$(ProjectDir)..\bridge;$(ProjectDir)..\bridge\c;$(ProjectDir)..\bridge\jsc;$(ProjectDir)..\css;$(ProjectDir)..\editing;$(ProjectDir)..\fileapi;$(ProjectDir)..\rendering;$(ProjectDir)..\rendering\line;$(ProjectDir)..\rendering\mathml;$(ProjectDir)..\rendering\shapes;$(ProjectDir)..\rendering\style;$(ProjectDir)..\rendering\svg;$(ProjectDir)..\bindings;$(ProjectDir)..\bindings\generic;$(ProjectDir)..\bindings\js;$(ProjectDir)..\bindings\js\specialization;$(ProjectDir)..\dom;$(ProjectDir)..\dom\default;$(ProjectDir)..\history;$(ProjectDir)..\html;$(ProjectDir)..\html\canvas;$(ProjectDir)..\html\forms;$(ProjectDir)..\html\parser;$(ProjectDir)..\html\shadow;$(ProjectDir)..\html\track;$(ProjectDir)..\inspector;$(ProjectDir)..\loader;$(ProjectDir)..\loader\appcache;$(ProjectDir)..\loader\archive;$(ProjectDir)..\loader\archive\cf;$(ProjectDir)..\loader\cache;$(ProjectDir)..\loader\icon;$(ProjectDir)..\mathml;$(ProjectDir)..\page;$(ProjectDir)..\page\animation;$(ProjectDir)..\page\scrolling;$(ProjectDir)..\page\win;$(ProjectDir)..\platform;$(ProjectDir)..\platform\animation;$(ProjectDir)..\platform\mock;$(ProjectDir)..\platform\sql;$(ProjectDir)..\platform\win;$(ProjectDir)..\platform\network;$(ProjectDir)..\platform\network\win;$(ProjectDir)..\platform\cf;$(ProjectDir)..\platform\graphics;$(ProjectDir)..\platform\graphics\ca;$(ProjectDir)..\platform\graphics\cpu\arm\filters;$(ProjectDir)..\platform\graphics\filters;$(ProjectDir)..\platform\graphics\filters\arm;$(ProjectDir)..\platform\graphics\opentype;$(ProjectDir)..\platform\graphics\transforms;$(ProjectDir)..\platform\text;$(ProjectDir)..\platform\text\transcoder;$(ProjectDir)..\platform\graphics\win;$(ProjectDir)..\xml;$(ProjectDir)..\xml\parser;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\WebCore\DerivedSources;$(ProjectDir)..\plugins;$(ProjectDir)..\plugins\win;$(ProjectDir)..\svg\animation;$(ProjectDir)..\svg\graphics;$(ProjectDir)..\svg\properties;$(ProjectDir)..\svg\graphics\filters;$(ProjectDir)..\svg;$(ProjectDir)..\testing;$(ProjectDir)..\crypto;$(ProjectDir)..\wml;$(ProjectDir)..\storage;$(ProjectDir)..\style;$(ProjectDir)..\websockets;$(ProjectDir)..\workers;$(ConfigurationBuildDir)\include;$(ConfigurationBuildDir)\include\private;$(ConfigurationBuildDir)\include\JavaScriptCore;$(ConfigurationBuildDir)\include\private\JavaScriptCore;$(ProjectDir)..\ForwardingHeaders;$(ProjectDir)..\platform\graphics\gpu;$(ProjectDir)..\platform\graphics\egl;$(ProjectDir)..\platform\graphics\surfaces;$(ProjectDir)..\platform\graphics\surfaces\egl;$(ProjectDir)..\platform\graphics\opengl;$(WebKit_Libraries)\include;$(WebKit_Libraries)\include\private;$(WebKit_Libraries)\include\private\JavaScriptCore;$(WebKit_Libraries)\include\sqlite;$(WebKit_Libraries)\include\JavaScriptCore;$(WebKit_Libraries)\include\zlib;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;
</del><ins>+      &lt;AdditionalIncludeDirectories&gt;$(ProjectDir)..;$(ProjectDir)..\Modules\mediacontrols;$(ProjectDir)..\Modules\mediastream;$(ProjectDir)..\Modules\filesystem;$(ProjectDir)..\Modules\geolocation;$(ProjectDir)..\Modules\indexeddb;$(ProjectDir)..\Modules\mediasource;$(ProjectDir)..\Modules\navigatorcontentutils;$(ProjectDir)..\Modules\plugins;$(ProjectDir)..\Modules\speech;$(ProjectDir)..\Modules\proximity;$(ProjectDir)..\Modules\quota;$(ProjectDir)..\Modules\notifications;$(ProjectDir)..\Modules\webdatabase;$(ProjectDir)..\Modules\websockets;$(ProjectDir)..\accessibility;$(ProjectDir)..\accessibility\win;$(ProjectDir)..\bridge;$(ProjectDir)..\bridge\c;$(ProjectDir)..\bridge\jsc;$(ProjectDir)..\css;$(ProjectDir)..\editing;$(ProjectDir)..\fileapi;$(ProjectDir)..\rendering;$(ProjectDir)..\rendering\line;$(ProjectDir)..\rendering\mathml;$(ProjectDir)..\rendering\shapes;$(ProjectDir)..\rendering\style;$(ProjectDir)..\rendering\svg;$(ProjectDir)..\bindings;$(ProjectDir)..\bindings\generic;$(ProjectDir)..\bindings\js;$(ProjectDir)..\bindings\js\specialization;$(ProjectDir)..\dom;$(ProjectDir)..\dom\default;$(ProjectDir)..\history;$(ProjectDir)..\html;$(ProjectDir)..\html\canvas;$(ProjectDir)..\html\forms;$(ProjectDir)..\html\parser;$(ProjectDir)..\html\shadow;$(ProjectDir)..\html\track;$(ProjectDir)..\inspector;$(ProjectDir)..\loader;$(ProjectDir)..\loader\appcache;$(ProjectDir)..\loader\archive;$(ProjectDir)..\loader\archive\cf;$(ProjectDir)..\loader\cache;$(ProjectDir)..\loader\icon;$(ProjectDir)..\mathml;$(ProjectDir)..\page;$(ProjectDir)..\page\animation;$(ProjectDir)..\page\scrolling;$(ProjectDir)..\page\win;$(ProjectDir)..\platform;$(ProjectDir)..\platform\animation;$(ProjectDir)..\platform\mock;$(ProjectDir)..\platform\sql;$(ProjectDir)..\platform\win;$(ProjectDir)..\platform\network;$(ProjectDir)..\platform\network\win;$(ProjectDir)..\platform\cf;$(ProjectDir)..\platform\graphics;$(ProjectDir)..\platform\graphics\ca;$(ProjectDir)..\platform\graphics\cpu\arm\filters;$(ProjectDir)..\platform\graphics\filters;$(ProjectDir)..\platform\graphics\filters\arm;$(ProjectDir)..\platform\graphics\opentype;$(ProjectDir)..\platform\graphics\transforms;$(ProjectDir)..\platform\text;$(ProjectDir)..\platform\text\transcoder;$(ProjectDir)..\platform\graphics\win;$(ProjectDir)..\xml;$(ProjectDir)..\xml\parser;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\WebCore\DerivedSources;$(ProjectDir)..\plugins;$(ProjectDir)..\plugins\win;$(ProjectDir)..\svg\animation;$(ProjectDir)..\svg\graphics;$(ProjectDir)..\svg\properties;$(ProjectDir)..\svg\graphics\filters;$(ProjectDir)..\svg;$(ProjectDir)..\testing;$(ProjectDir)..\crypto;$(ProjectDir)..\crypto\keys;$(ProjectDir)..\wml;$(ProjectDir)..\storage;$(ProjectDir)..\style;$(ProjectDir)..\websockets;$(ProjectDir)..\workers;$(ConfigurationBuildDir)\include;$(ConfigurationBuildDir)\include\private;$(ConfigurationBuildDir)\include\JavaScriptCore;$(ConfigurationBuildDir)\include\private\JavaScriptCore;$(ProjectDir)..\ForwardingHeaders;$(ProjectDir)..\platform\graphics\gpu;$(ProjectDir)..\platform\graphics\egl;$(ProjectDir)..\platform\graphics\surfaces;$(ProjectDir)..\platform\graphics\surfaces\egl;$(ProjectDir)..\platform\graphics\opengl;$(WebKit_Libraries)\include;$(WebKit_Libraries)\include\private;$(WebKit_Libraries)\include\private\JavaScriptCore;$(WebKit_Libraries)\include\sqlite;$(WebKit_Libraries)\include\JavaScriptCore;$(WebKit_Libraries)\include\zlib;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;
</ins><span class="cx">       &lt;PreprocessorDefinitions&gt;DISABLE_3D_RENDERING;WEBCORE_CONTEXT_MENUS;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;
</span><span class="cx">       &lt;PrecompiledHeader&gt;Use&lt;/PrecompiledHeader&gt;
</span><span class="cx">       &lt;PrecompiledHeaderFile&gt;WebCorePrefix.h&lt;/PrecompiledHeaderFile&gt;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreWebCorevcxprojWebCoreTestSupportvcxproj"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/WebCore.vcxproj/WebCoreTestSupport.vcxproj (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/WebCore.vcxproj/WebCoreTestSupport.vcxproj        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/WebCore.vcxproj/WebCoreTestSupport.vcxproj        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -59,6 +59,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -67,6 +68,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -75,6 +77,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Production|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -83,6 +86,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -91,6 +95,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -99,6 +104,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/WebCore.xcodeproj/project.pbxproj (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -228,7 +228,6 @@
</span><span class="cx">                 078E091F17D14D1C00420AA1 /* RTCDataChannelEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 07221B6717CEC32700848E51 /* RTCDataChannelEvent.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 078E092017D14D1C00420AA1 /* RTCDTMFSender.h in Headers */ = {isa = PBXBuildFile; fileRef = 07221B6A17CEC32700848E51 /* RTCDTMFSender.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 078E092117D14D1C00420AA1 /* RTCDTMFToneChangeEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 07221B6D17CEC32700848E51 /* RTCDTMFToneChangeEvent.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><del>-                078E092217D14D1C00420AA1 /* RTCErrorCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 07221B6F17CEC32700848E51 /* RTCErrorCallback.h */; settings = {ATTRIBUTES = (Private, ); }; };
</del><span class="cx">                 078E092317D14D1C00420AA1 /* RTCIceCandidate.h in Headers */ = {isa = PBXBuildFile; fileRef = 07221B7217CEC32700848E51 /* RTCIceCandidate.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 078E092417D14D1C00420AA1 /* RTCIceCandidateEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 07221B7517CEC32700848E51 /* RTCIceCandidateEvent.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 078E092517D14D1C00420AA1 /* RTCPeerConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 07221B7817CEC32700848E51 /* RTCPeerConnection.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="lines">@@ -278,8 +277,8 @@
</span><span class="cx">                 07969DB017D14151007FF842 /* JSRTCDTMFSender.h in Headers */ = {isa = PBXBuildFile; fileRef = 07969D9617D14151007FF842 /* JSRTCDTMFSender.h */; };
</span><span class="cx">                 07969DB117D14151007FF842 /* JSRTCDTMFToneChangeEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07969D9717D14151007FF842 /* JSRTCDTMFToneChangeEvent.cpp */; };
</span><span class="cx">                 07969DB217D14151007FF842 /* JSRTCDTMFToneChangeEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 07969D9817D14151007FF842 /* JSRTCDTMFToneChangeEvent.h */; };
</span><del>-                07969DB317D14151007FF842 /* JSRTCErrorCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07969D9917D14151007FF842 /* JSRTCErrorCallback.cpp */; };
-                07969DB417D14151007FF842 /* JSRTCErrorCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 07969D9A17D14151007FF842 /* JSRTCErrorCallback.h */; };
</del><ins>+                07969DB317D14151007FF842 /* JSRTCPeerConnectionErrorCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07969D9917D14151007FF842 /* JSRTCPeerConnectionErrorCallback.cpp */; };
+                07969DB417D14151007FF842 /* JSRTCPeerConnectionErrorCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 07969D9A17D14151007FF842 /* JSRTCPeerConnectionErrorCallback.h */; };
</ins><span class="cx">                 07969DB517D14151007FF842 /* JSRTCIceCandidate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07969D9B17D14151007FF842 /* JSRTCIceCandidate.cpp */; };
</span><span class="cx">                 07969DB617D14151007FF842 /* JSRTCIceCandidate.h in Headers */ = {isa = PBXBuildFile; fileRef = 07969D9C17D14151007FF842 /* JSRTCIceCandidate.h */; };
</span><span class="cx">                 07969DB717D14151007FF842 /* JSRTCIceCandidateEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07969D9D17D14151007FF842 /* JSRTCIceCandidateEvent.cpp */; };
</span><span class="lines">@@ -472,7 +471,7 @@
</span><span class="cx">                 0F605AEC15F94848004DF0C0 /* ScrollingConstraints.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F605AEA15F94848004DF0C0 /* ScrollingConstraints.cpp */; };
</span><span class="cx">                 0F605AED15F94848004DF0C0 /* ScrollingConstraints.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F605AEB15F94848004DF0C0 /* ScrollingConstraints.h */; };
</span><span class="cx">                 0FA24D79162DF91900A3F4C0 /* GraphicsLayerUpdater.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FA24D77162DF91900A3F4C0 /* GraphicsLayerUpdater.cpp */; };
</span><del>-                0FA24D7A162DF91900A3F4C0 /* GraphicsLayerUpdater.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FA24D78162DF91900A3F4C0 /* GraphicsLayerUpdater.h */; };
</del><ins>+                0FA24D7A162DF91900A3F4C0 /* GraphicsLayerUpdater.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FA24D78162DF91900A3F4C0 /* GraphicsLayerUpdater.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 0FA88EBD16A8D1BD00F99984 /* ScrollingStateScrollingNodeMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0FA88EBC16A8D1BD00F99984 /* ScrollingStateScrollingNodeMac.mm */; };
</span><span class="cx">                 0FB8890A167D2FA10010CDA5 /* ScrollingTreeStickyNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB88908167D2FA10010CDA5 /* ScrollingTreeStickyNode.h */; };
</span><span class="cx">                 0FB8890B167D2FA10010CDA5 /* ScrollingTreeStickyNode.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0FB88909167D2FA10010CDA5 /* ScrollingTreeStickyNode.mm */; };
</span><span class="lines">@@ -910,10 +909,16 @@
</span><span class="cx">                 2655413A1489811C000DFC5D /* KeyEventIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 265541381489811C000DFC5D /* KeyEventIOS.mm */; };
</span><span class="cx">                 265541521489B233000DFC5D /* CursorIOS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2655414B1489AA2B000DFC5D /* CursorIOS.cpp */; };
</span><span class="cx">                 269239961505E1AA009E57FC /* JSIDBVersionChangeEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 269239921505E1AA009E57FC /* JSIDBVersionChangeEvent.h */; };
</span><ins>+                26C15CF61857E15D00F15C03 /* ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26C15CF41857E15D00F15C03 /* ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp */; };
+                26C15CF71857E15E00F15C03 /* ResourceHandleCFURLConnectionDelegateWithOperationQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 26C15CF51857E15D00F15C03 /* ResourceHandleCFURLConnectionDelegateWithOperationQueue.h */; };
</ins><span class="cx">                 26C17A3E1491D2D400D12BA2 /* FileSystemIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 26C17A3C1491D2D400D12BA2 /* FileSystemIOS.h */; };
</span><span class="cx">                 26C17A3F1491D2D400D12BA2 /* FileSystemIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 26C17A3D1491D2D400D12BA2 /* FileSystemIOS.mm */; };
</span><span class="cx">                 26E98A10130A9FCA008EB7B2 /* TextCodecASCIIFastPath.h in Headers */ = {isa = PBXBuildFile; fileRef = 26E98A0F130A9FCA008EB7B2 /* TextCodecASCIIFastPath.h */; };
</span><span class="cx">                 26F40D4A14904A6300CA67C4 /* EventLoopIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 26F40D4914904A6300CA67C4 /* EventLoopIOS.mm */; };
</span><ins>+                26FAE4CC1852E3A5004C8C46 /* ResourceHandleCFURLConnectionDelegate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26FAE4C81852E3A5004C8C46 /* ResourceHandleCFURLConnectionDelegate.cpp */; };
+                26FAE4CD1852E3A5004C8C46 /* ResourceHandleCFURLConnectionDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 26FAE4C91852E3A5004C8C46 /* ResourceHandleCFURLConnectionDelegate.h */; };
+                26FAE4CE1852E3A5004C8C46 /* SynchronousResourceHandleCFURLConnectionDelegate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26FAE4CA1852E3A5004C8C46 /* SynchronousResourceHandleCFURLConnectionDelegate.cpp */; };
+                26FAE4CF1852E3A5004C8C46 /* SynchronousResourceHandleCFURLConnectionDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 26FAE4CB1852E3A5004C8C46 /* SynchronousResourceHandleCFURLConnectionDelegate.h */; };
</ins><span class="cx">                 2917B5611473496C0052C9D0 /* LayerFlushScheduler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2917B55E1473496C0052C9D0 /* LayerFlushScheduler.cpp */; };
</span><span class="cx">                 2917B5621473496C0052C9D0 /* LayerFlushScheduler.h in Headers */ = {isa = PBXBuildFile; fileRef = 2917B55F1473496C0052C9D0 /* LayerFlushScheduler.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 2917B5631473496C0052C9D0 /* LayerFlushSchedulerClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 2917B5601473496C0052C9D0 /* LayerFlushSchedulerClient.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="lines">@@ -1020,7 +1025,7 @@
</span><span class="cx">                 2E4346540F546A8200B0F1BA /* WorkerThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E4346420F546A8200B0F1BA /* WorkerThread.cpp */; };
</span><span class="cx">                 2E4346550F546A8200B0F1BA /* WorkerThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E4346430F546A8200B0F1BA /* WorkerThread.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 2E4346580F546A9900B0F1BA /* CrossThreadCopier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E4346560F546A9900B0F1BA /* CrossThreadCopier.cpp */; };
</span><del>-                2E4346590F546A9900B0F1BA /* CrossThreadCopier.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E4346570F546A9900B0F1BA /* CrossThreadCopier.h */; };
</del><ins>+                2E4346590F546A9900B0F1BA /* CrossThreadCopier.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E4346570F546A9900B0F1BA /* CrossThreadCopier.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 2E7582EE12764F260062628B /* JSFileReaderCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E7582ED12764F260062628B /* JSFileReaderCustom.cpp */; };
</span><span class="cx">                 2E75841D12779ADA0062628B /* FileReaderLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E75841A12779ADA0062628B /* FileReaderLoader.cpp */; };
</span><span class="cx">                 2E75841E12779ADA0062628B /* FileReaderLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E75841B12779ADA0062628B /* FileReaderLoader.h */; };
</span><span class="lines">@@ -1221,8 +1226,6 @@
</span><span class="cx">                 409EBDC516B7F3CA00CBA3FC /* JSCSSFontFaceLoadEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 409EBDC416B7F3CA00CBA3FC /* JSCSSFontFaceLoadEvent.cpp */; };
</span><span class="cx">                 40ECAE7E16B8B67200C36103 /* JSDOMError.h in Headers */ = {isa = PBXBuildFile; fileRef = 40ECAE7D16B8B67200C36103 /* JSDOMError.h */; };
</span><span class="cx">                 40ECAE8116B8B68A00C36103 /* JSDOMError.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 40ECAE8016B8B68A00C36103 /* JSDOMError.cpp */; };
</span><del>-                41002CCD0F66EDEF009E660D /* ScriptFunctionCall.h in Headers */ = {isa = PBXBuildFile; fileRef = 41002CCB0F66EDEF009E660D /* ScriptFunctionCall.h */; };
-                41002CCE0F66EDEF009E660D /* ScriptFunctionCall.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41002CCC0F66EDEF009E660D /* ScriptFunctionCall.cpp */; };
</del><span class="cx">                 410B7E721045FAB000D8224F /* JSMessageEventCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 410B7E711045FAB000D8224F /* JSMessageEventCustom.cpp */; };
</span><span class="cx">                 4123081B138C429700BCCFCA /* WebCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 93F19B1A08245E5A001E9ABC /* WebCore.framework */; };
</span><span class="cx">                 41230913138C42FF00BCCFCA /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F8216299029F4FB501000131 /* JavaScriptCore.framework */; };
</span><span class="lines">@@ -1291,8 +1294,8 @@
</span><span class="cx">                 41F0618F0F5F069800A07EAC /* ConsoleMessage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41F0618D0F5F069800A07EAC /* ConsoleMessage.cpp */; };
</span><span class="cx">                 41F062140F5F192600A07EAC /* InspectorDatabaseResource.h in Headers */ = {isa = PBXBuildFile; fileRef = 41F062120F5F192600A07EAC /* InspectorDatabaseResource.h */; };
</span><span class="cx">                 41F062150F5F192600A07EAC /* InspectorDatabaseResource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41F062130F5F192600A07EAC /* InspectorDatabaseResource.cpp */; };
</span><del>-                41F066E40F64BCF600A07EAC /* ScriptObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 41F066E20F64BCF600A07EAC /* ScriptObject.h */; settings = {ATTRIBUTES = (Private, ); }; };
-                41F066E50F64BCF600A07EAC /* ScriptObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41F066E30F64BCF600A07EAC /* ScriptObject.cpp */; };
</del><ins>+                41F066E40F64BCF600A07EAC /* ScriptGlobalObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 41F066E20F64BCF600A07EAC /* ScriptGlobalObject.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                41F066E50F64BCF600A07EAC /* ScriptGlobalObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41F066E30F64BCF600A07EAC /* ScriptGlobalObject.cpp */; };
</ins><span class="cx">                 41F1D21F0EF35C2A00DA8753 /* ScriptCachedFrameData.h in Headers */ = {isa = PBXBuildFile; fileRef = 41F1D21D0EF35C2A00DA8753 /* ScriptCachedFrameData.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 41F1D2200EF35C2A00DA8753 /* ScriptCachedFrameData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41F1D21E0EF35C2A00DA8753 /* ScriptCachedFrameData.cpp */; };
</span><span class="cx">                 41F584C7104652CB009CAA64 /* JSMessagePortCustom.h in Headers */ = {isa = PBXBuildFile; fileRef = 41F584C6104652CB009CAA64 /* JSMessagePortCustom.h */; };
</span><span class="lines">@@ -1471,7 +1474,7 @@
</span><span class="cx">                 49AE2D8F134EE50C0072920A /* CSSCalculationValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 49AE2D8D134EE50C0072920A /* CSSCalculationValue.h */; };
</span><span class="cx">                 49AE2D96134EE5F90072920A /* CalculationValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49AE2D94134EE5F90072920A /* CalculationValue.cpp */; };
</span><span class="cx">                 49AE2D97134EE5F90072920A /* CalculationValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 49AE2D95134EE5F90072920A /* CalculationValue.h */; };
</span><del>-                49AF2D6914435D050016A784 /* DisplayRefreshMonitor.h in Headers */ = {isa = PBXBuildFile; fileRef = 49AF2D6814435D050016A784 /* DisplayRefreshMonitor.h */; };
</del><ins>+                49AF2D6914435D050016A784 /* DisplayRefreshMonitor.h in Headers */ = {isa = PBXBuildFile; fileRef = 49AF2D6814435D050016A784 /* DisplayRefreshMonitor.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 49AF2D6C14435D210016A784 /* DisplayRefreshMonitorMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49AF2D6B14435D210016A784 /* DisplayRefreshMonitorMac.cpp */; };
</span><span class="cx">                 49B3760C15C6C6840059131D /* ArrayValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49B3760A15C6C6840059131D /* ArrayValue.cpp */; };
</span><span class="cx">                 49B3760D15C6C6840059131D /* ArrayValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 49B3760B15C6C6840059131D /* ArrayValue.h */; };
</span><span class="lines">@@ -1605,8 +1608,6 @@
</span><span class="cx">                 4F1534E011B533020021FD86 /* EditingBehaviorTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F1534DF11B533020021FD86 /* EditingBehaviorTypes.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 4F2D205412EAE7B3005C2874 /* InspectorAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F2D205212EAE7B3005C2874 /* InspectorAgent.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 4F2D205512EAE7B3005C2874 /* InspectorAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F2D205312EAE7B3005C2874 /* InspectorAgent.cpp */; };
</span><del>-                4F3289B511A42AAB005ABE7E /* InspectorValues.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F3289B311A42AAB005ABE7E /* InspectorValues.cpp */; };
-                4F3289B611A42AAB005ABE7E /* InspectorValues.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F3289B411A42AAB005ABE7E /* InspectorValues.h */; settings = {ATTRIBUTES = (Private, ); }; };
</del><span class="cx">                 4F4F5FFB11CBD2E100A186BF /* InspectorFrontend.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F4F5FFA11CBD2D200A186BF /* InspectorFrontend.cpp */; };
</span><span class="cx">                 4F6FDD641341DEDD001F8EE3 /* InspectorPageAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F6FDD621341DEDD001F8EE3 /* InspectorPageAgent.cpp */; };
</span><span class="cx">                 4F6FDD651341DEDD001F8EE3 /* InspectorPageAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F6FDD631341DEDD001F8EE3 /* InspectorPageAgent.h */; };
</span><span class="lines">@@ -1747,6 +1748,7 @@
</span><span class="cx">                 5160F4980B0AA75F00C1D2AF /* HistoryItemMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5160F4970B0AA75F00C1D2AF /* HistoryItemMac.mm */; };
</span><span class="cx">                 5162C7F411F77EFB00612EFE /* SchemeRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5162C7F211F77EFA00612EFE /* SchemeRegistry.cpp */; };
</span><span class="cx">                 5162C7F511F77EFB00612EFE /* SchemeRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = 5162C7F311F77EFB00612EFE /* SchemeRegistry.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><ins>+                5163117D1851242B00534647 /* IDBDatabaseMetadata.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5163117C1851242B00534647 /* IDBDatabaseMetadata.cpp */; };
</ins><span class="cx">                 5164ED43183208C700EA8FF1 /* IDBServerConnectionLevelDB.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5164ED41183208C700EA8FF1 /* IDBServerConnectionLevelDB.cpp */; };
</span><span class="cx">                 5164ED44183208C700EA8FF1 /* IDBServerConnectionLevelDB.h in Headers */ = {isa = PBXBuildFile; fileRef = 5164ED42183208C700EA8FF1 /* IDBServerConnectionLevelDB.h */; };
</span><span class="cx">                 51660AB61828BB8200074CAD /* IDBBackingStoreLevelDB.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51660AB01828BB8200074CAD /* IDBBackingStoreLevelDB.cpp */; };
</span><span class="lines">@@ -1893,9 +1895,9 @@
</span><span class="cx">                 53EF766C16531994004CBE49 /* SettingsMacros.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 53EF766A16530A61004CBE49 /* SettingsMacros.h */; };
</span><span class="cx">                 550A0BC9085F6039007353D6 /* QualifiedName.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 550A0BC7085F6039007353D6 /* QualifiedName.cpp */; };
</span><span class="cx">                 550A0BCA085F6039007353D6 /* QualifiedName.h in Headers */ = {isa = PBXBuildFile; fileRef = 550A0BC8085F6039007353D6 /* QualifiedName.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><del>-                573D134714CE39FF0057ABCA /* InspectorTypeBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 573D134514CE39FF0057ABCA /* InspectorTypeBuilder.cpp */; };
</del><ins>+                573D134714CE39FF0057ABCA /* InspectorWebTypeBuilders.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 573D134514CE39FF0057ABCA /* InspectorWebTypeBuilders.cpp */; };
</ins><span class="cx">                 578DA20E1520EB8C006141C1 /* InspectorFrontend.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F4F5FFC11CBD30100A186BF /* InspectorFrontend.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><del>-                578DA20F1520EBA3006141C1 /* InspectorTypeBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 573D134614CE39FF0057ABCA /* InspectorTypeBuilder.h */; settings = {ATTRIBUTES = (Private, ); }; };
</del><ins>+                578DA20F1520EBA3006141C1 /* InspectorWebTypeBuilders.h in Headers */ = {isa = PBXBuildFile; fileRef = 573D134614CE39FF0057ABCA /* InspectorWebTypeBuilders.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 57B791A314C6A62900F202D1 /* ContentDistributor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 57B7919F14C6A62900F202D1 /* ContentDistributor.cpp */; };
</span><span class="cx">                 57B791A414C6A62900F202D1 /* ContentDistributor.h in Headers */ = {isa = PBXBuildFile; fileRef = 57B791A014C6A62900F202D1 /* ContentDistributor.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 57CF497414EE36D700ECFF14 /* InsertionPoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 57CF497214EE36D700ECFF14 /* InsertionPoint.cpp */; };
</span><span class="lines">@@ -1952,7 +1954,10 @@
</span><span class="cx">                 5DF7F5C20F01F92A00526B4B /* CSSPropertyNames.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 656580EF09D12B20000E61D7 /* CSSPropertyNames.h */; };
</span><span class="cx">                 5DFE8F560D16477B0076E937 /* ScheduledAction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCA378BA0D15F64200B793D6 /* ScheduledAction.cpp */; };
</span><span class="cx">                 5DFE8F570D16477C0076E937 /* ScheduledAction.h in Headers */ = {isa = PBXBuildFile; fileRef = BCA378BB0D15F64200B793D6 /* ScheduledAction.h */; };
</span><ins>+                5F2DBBE9178E3C8100141486 /* CertificateInfoMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5F2DBBE7178E332D00141486 /* CertificateInfoMac.mm */; };
+                5FA904CA178E61F5004C8A2D /* CertificateInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F2DBBE8178E336900141486 /* CertificateInfo.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 5FC7DC26CFE2563200B85AE4 /* JSEventTarget.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FC7DC26CFE2563200B85AE5 /* JSEventTarget.h */; };
</span><ins>+                5FE1D292178FD1F3001AA3C3 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5FE1D291178FD1F3001AA3C3 /* Security.framework */; };
</ins><span class="cx">                 626CDE0E1140424C001E5A68 /* SpatialNavigation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 626CDE0C1140424C001E5A68 /* SpatialNavigation.cpp */; };
</span><span class="cx">                 626CDE0F1140424C001E5A68 /* SpatialNavigation.h in Headers */ = {isa = PBXBuildFile; fileRef = 626CDE0D1140424C001E5A68 /* SpatialNavigation.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 628D214C12131ED10055DCFC /* NetworkingContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 628D214B12131ED10055DCFC /* NetworkingContext.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="lines">@@ -2197,7 +2202,6 @@
</span><span class="cx">                 7A74ECBB101839A600BF939E /* InspectorDOMStorageAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A74ECB9101839A600BF939E /* InspectorDOMStorageAgent.h */; };
</span><span class="cx">                 7A74ECBD101839DA00BF939E /* JSInspectorFrontendHostCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7A74ECBC101839DA00BF939E /* JSInspectorFrontendHostCustom.cpp */; };
</span><span class="cx">                 7AA365EE12E7265400DCA242 /* InspectorRuntimeAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7AA365ED12E7265400DCA242 /* InspectorRuntimeAgent.cpp */; };
</span><del>-                7AA51B6E1483B61600AD2752 /* InspectorBaseAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AA51B6C1483B61600AD2752 /* InspectorBaseAgent.h */; settings = {ATTRIBUTES = (Private, ); }; };
</del><span class="cx">                 7AA51DD5148506A900AD2752 /* InspectorMemoryAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7AA51DD3148506A900AD2752 /* InspectorMemoryAgent.cpp */; };
</span><span class="cx">                 7AA51DD6148506A900AD2752 /* InspectorMemoryAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AA51DD4148506A900AD2752 /* InspectorMemoryAgent.h */; };
</span><span class="cx">                 7AABA25914BC613300AA9A11 /* DOMEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7AABA25714BC613300AA9A11 /* DOMEditor.cpp */; };
</span><span class="lines">@@ -3017,8 +3021,6 @@
</span><span class="cx">                 93442C9E0D2B335C00338FF9 /* HTMLTableRowsCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 93442C9D0D2B335C00338FF9 /* HTMLTableRowsCollection.h */; };
</span><span class="cx">                 93442CA00D2B336000338FF9 /* HTMLTableRowsCollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93442C9F0D2B336000338FF9 /* HTMLTableRowsCollection.cpp */; };
</span><span class="cx">                 934907E4125BBBC8007F23A0 /* GraphicsContextCG.h in Headers */ = {isa = PBXBuildFile; fileRef = 934907E3125BBBC8007F23A0 /* GraphicsContextCG.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><del>-                934CC0E10ED39D6F00A658F2 /* ScriptValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 934CC0DF0ED39D6F00A658F2 /* ScriptValue.cpp */; };
-                934CC0E20ED39D6F00A658F2 /* ScriptValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 934CC0E00ED39D6F00A658F2 /* ScriptValue.h */; settings = {ATTRIBUTES = (Private, ); }; };
</del><span class="cx">                 934CC10A0EDB223900A658F2 /* ScriptSourceCode.h in Headers */ = {isa = PBXBuildFile; fileRef = 934CC1090EDB223900A658F2 /* ScriptSourceCode.h */; };
</span><span class="cx">                 934D9BA50B8C116B007B42A9 /* WebCoreNSStringExtras.mm in Sources */ = {isa = PBXBuildFile; fileRef = 934D9BA40B8C116B007B42A9 /* WebCoreNSStringExtras.mm */; };
</span><span class="cx">                 934D9BA70B8C1175007B42A9 /* WebCoreNSStringExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = 934D9BA60B8C1175007B42A9 /* WebCoreNSStringExtras.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="lines">@@ -3520,15 +3522,12 @@
</span><span class="cx">                 A513B3D8114B166A001C429B /* KeyEventCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = A5C974D011485FF10066F2AB /* KeyEventCocoa.mm */; };
</span><span class="cx">                 A54A82EC15228D2F00C72BA6 /* DOMNodePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = A54A82EA15228CA300C72BA6 /* DOMNodePrivate.h */; };
</span><span class="cx">                 A54A82F115228DF600C72BA6 /* DOMNodePrivate.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = A54A82EA15228CA300C72BA6 /* DOMNodePrivate.h */; };
</span><del>-                A556C288183206A8008CB720 /* InspectorAgentRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A556C286183206A8008CB720 /* InspectorAgentRegistry.cpp */; };
-                A556C289183206A8008CB720 /* InspectorAgentRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = A556C287183206A8008CB720 /* InspectorAgentRegistry.h */; settings = {ATTRIBUTES = (Private, ); }; };
</del><span class="cx">                 A5732B0A136A161D005C8D7C /* DateComponents.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A5732B08136A161D005C8D7C /* DateComponents.cpp */; };
</span><span class="cx">                 A5732B0B136A161D005C8D7C /* DateComponents.h in Headers */ = {isa = PBXBuildFile; fileRef = A5732B09136A161D005C8D7C /* DateComponents.h */; };
</span><ins>+                A593CF8B1840535200BFCE27 /* InspectorWebAgentBase.h in Headers */ = {isa = PBXBuildFile; fileRef = A593CF8A1840535200BFCE27 /* InspectorWebAgentBase.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 A5A2AF0B1829734300DE1729 /* PageDebuggable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A5A2AF091829734300DE1729 /* PageDebuggable.cpp */; };
</span><span class="cx">                 A5A2AF0C1829734300DE1729 /* PageDebuggable.h in Headers */ = {isa = PBXBuildFile; fileRef = A5A2AF0A1829734300DE1729 /* PageDebuggable.h */; };
</span><span class="cx">                 A5ABB78713B904BC00F197E3 /* LineBreakIteratorPoolICU.h in Headers */ = {isa = PBXBuildFile; fileRef = A5ABB78613B904BC00F197E3 /* LineBreakIteratorPoolICU.h */; };
</span><del>-                A5AC4AEF18336975007114E0 /* InspectorBackendDispatcher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A5AC4AED18336975007114E0 /* InspectorBackendDispatcher.cpp */; };
-                A5AC4AF018336975007114E0 /* InspectorBackendDispatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = A5AC4AEE18336975007114E0 /* InspectorBackendDispatcher.h */; settings = {ATTRIBUTES = (Private, ); }; };
</del><span class="cx">                 A5AFB34F115151A700B045CB /* StepRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A5AFB34D115151A700B045CB /* StepRange.cpp */; };
</span><span class="cx">                 A5AFB350115151A700B045CB /* StepRange.h in Headers */ = {isa = PBXBuildFile; fileRef = A5AFB34E115151A700B045CB /* StepRange.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 A5C566AB127A3AAD00E8A3FF /* DiskImageCacheClientIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = A5C566AA127A3AAD00E8A3FF /* DiskImageCacheClientIOS.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="lines">@@ -5269,6 +5268,7 @@
</span><span class="cx">                 C5278B0C17F212EA003A2998 /* PlatformPasteboardIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = C5278B0B17F212EA003A2998 /* PlatformPasteboardIOS.mm */; };
</span><span class="cx">                 C544274B11A57E7A0063A749 /* DOMStringList.h in Headers */ = {isa = PBXBuildFile; fileRef = C544274911A57E7A0063A749 /* DOMStringList.h */; };
</span><span class="cx">                 C55610F111A704EB00B82D27 /* DOMStringList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C55610F011A704EB00B82D27 /* DOMStringList.cpp */; };
</span><ins>+                C55C7BA11718AFBA001327E4 /* RenderThemeIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = C55C7BA01718AFBA001327E4 /* RenderThemeIOS.mm */; };
</ins><span class="cx">                 C55E38BF10040D5D00A56BDB /* StorageNamespaceImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = C55E38BB10040D5D00A56BDB /* StorageNamespaceImpl.h */; };
</span><span class="cx">                 C55E38C010040D5D00A56BDB /* StorageNamespaceImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C55E38BC10040D5D00A56BDB /* StorageNamespaceImpl.cpp */; };
</span><span class="cx">                 C572EE1F1201C9BC007D8F82 /* JSIDBIndex.h in Headers */ = {isa = PBXBuildFile; fileRef = C572EE1D1201C9BC007D8F82 /* JSIDBIndex.h */; };
</span><span class="lines">@@ -5329,8 +5329,6 @@
</span><span class="cx">                 CD336F6717FA0AC600DDDCD0 /* VideoTrackPrivateAVFObjC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD336F6517FA0AC600DDDCD0 /* VideoTrackPrivateAVFObjC.cpp */; };
</span><span class="cx">                 CD336F6817FA0AC600DDDCD0 /* VideoTrackPrivateAVFObjC.h in Headers */ = {isa = PBXBuildFile; fileRef = CD336F6617FA0AC600DDDCD0 /* VideoTrackPrivateAVFObjC.h */; };
</span><span class="cx">                 CD37B39815C1B971006DC898 /* DiagnosticLoggingKeys.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD37B37415C1A7E1006DC898 /* DiagnosticLoggingKeys.cpp */; };
</span><del>-                CD3A495217A9C8C600274E42 /* MediaSourceBase.h in Headers */ = {isa = PBXBuildFile; fileRef = CD3A495117A9C8B600274E42 /* MediaSourceBase.h */; };
-                CD3A495417A9CC9000274E42 /* MediaSourceBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD3A495017A9C8B600274E42 /* MediaSourceBase.cpp */; };
</del><span class="cx">                 CD3A495E17A9D01B00274E42 /* MediaSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD3A495517A9D01B00274E42 /* MediaSource.cpp */; };
</span><span class="cx">                 CD3A495F17A9D01B00274E42 /* MediaSource.h in Headers */ = {isa = PBXBuildFile; fileRef = CD3A495617A9D01B00274E42 /* MediaSource.h */; };
</span><span class="cx">                 CD3A496117A9D01B00274E42 /* SourceBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD3A495817A9D01B00274E42 /* SourceBuffer.cpp */; };
</span><span class="lines">@@ -5344,6 +5342,8 @@
</span><span class="cx">                 CD4AC52A1496AE9A0087C4EF /* Composite.wav in Copy Audio Resources */ = {isa = PBXBuildFile; fileRef = CD4AC5281496AE2F0087C4EF /* Composite.wav */; };
</span><span class="cx">                 CD5393D3175E018600C07123 /* JSMemoryInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD5393D1175E018600C07123 /* JSMemoryInfo.cpp */; };
</span><span class="cx">                 CD5393D4175E018600C07123 /* JSMemoryInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = CD5393D2175E018600C07123 /* JSMemoryInfo.h */; };
</span><ins>+                CD54A762180F9F7000B076C9 /* AudioTrackPrivateMediaSourceAVFObjC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD54A760180F9F7000B076C9 /* AudioTrackPrivateMediaSourceAVFObjC.cpp */; };
+                CD54A763180F9F7000B076C9 /* AudioTrackPrivateMediaSourceAVFObjC.h in Headers */ = {isa = PBXBuildFile; fileRef = CD54A761180F9F7000B076C9 /* AudioTrackPrivateMediaSourceAVFObjC.h */; };
</ins><span class="cx">                 CD54DE4717468B6F005E5B36 /* AudioSessionManagerMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD54DE4517468B6F005E5B36 /* AudioSessionManagerMac.cpp */; };
</span><span class="cx">                 CD54DE4B17469C6D005E5B36 /* AudioSessionMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD54DE4917469C6D005E5B36 /* AudioSessionMac.cpp */; };
</span><span class="cx">                 CD61FE671794AADB004101EB /* MediaSourceRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B1A942E115B5CE2200D525D1 /* MediaSourceRegistry.cpp */; };
</span><span class="lines">@@ -5359,6 +5359,8 @@
</span><span class="cx">                 CD82030D1395AB6A00F956C6 /* WebVideoFullscreenHUDWindowController.mm in Sources */ = {isa = PBXBuildFile; fileRef = CD8203091395AB6A00F956C6 /* WebVideoFullscreenHUDWindowController.mm */; };
</span><span class="cx">                 CD8203101395ACE700F956C6 /* WebWindowAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = CD82030E1395ACE700F956C6 /* WebWindowAnimation.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 CD8203111395ACE700F956C6 /* WebWindowAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = CD82030F1395ACE700F956C6 /* WebWindowAnimation.mm */; };
</span><ins>+                CD8B5A42180D149A008B8E65 /* VideoTrackPrivateMediaSourceAVFObjC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD8B5A40180D149A008B8E65 /* VideoTrackPrivateMediaSourceAVFObjC.cpp */; };
+                CD8B5A43180D149A008B8E65 /* VideoTrackPrivateMediaSourceAVFObjC.h in Headers */ = {isa = PBXBuildFile; fileRef = CD8B5A41180D149A008B8E65 /* VideoTrackPrivateMediaSourceAVFObjC.h */; };
</ins><span class="cx">                 CD8B5A46180DFF4E008B8E65 /* VideoTrackMediaSource.h in Headers */ = {isa = PBXBuildFile; fileRef = CD8B5A45180DFF4E008B8E65 /* VideoTrackMediaSource.h */; };
</span><span class="cx">                 CD8B5A49180E138B008B8E65 /* TextTrackMediaSource.h in Headers */ = {isa = PBXBuildFile; fileRef = CD8B5A48180E138B008B8E65 /* TextTrackMediaSource.h */; };
</span><span class="cx">                 CD8B5A4C180E17C0008B8E65 /* AudioTrackMediaSource.h in Headers */ = {isa = PBXBuildFile; fileRef = CD8B5A4B180E17C0008B8E65 /* AudioTrackMediaSource.h */; };
</span><span class="lines">@@ -5401,6 +5403,12 @@
</span><span class="cx">                 CDC69DD71632026C007C38DF /* WebCoreFullScreenWarningView.mm in Sources */ = {isa = PBXBuildFile; fileRef = CDC69DD51632026C007C38DF /* WebCoreFullScreenWarningView.mm */; };
</span><span class="cx">                 CDC69DDA16371FD4007C38DF /* WebCoreFullScreenPlaceholderView.h in Headers */ = {isa = PBXBuildFile; fileRef = CDC69DD816371FD3007C38DF /* WebCoreFullScreenPlaceholderView.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 CDC69DDB16371FD4007C38DF /* WebCoreFullScreenPlaceholderView.mm in Sources */ = {isa = PBXBuildFile; fileRef = CDC69DD916371FD3007C38DF /* WebCoreFullScreenPlaceholderView.mm */; };
</span><ins>+                CDC8B5A2180463470016E685 /* MediaPlayerPrivateMediaSourceAVFObjC.mm in Sources */ = {isa = PBXBuildFile; fileRef = CDC8B5A0180463470016E685 /* MediaPlayerPrivateMediaSourceAVFObjC.mm */; };
+                CDC8B5A3180463470016E685 /* MediaPlayerPrivateMediaSourceAVFObjC.h in Headers */ = {isa = PBXBuildFile; fileRef = CDC8B5A1180463470016E685 /* MediaPlayerPrivateMediaSourceAVFObjC.h */; };
+                CDC8B5A6180474F70016E685 /* MediaSourcePrivateAVFObjC.mm in Sources */ = {isa = PBXBuildFile; fileRef = CDC8B5A4180474F70016E685 /* MediaSourcePrivateAVFObjC.mm */; };
+                CDC8B5A7180474F70016E685 /* MediaSourcePrivateAVFObjC.h in Headers */ = {isa = PBXBuildFile; fileRef = CDC8B5A5180474F70016E685 /* MediaSourcePrivateAVFObjC.h */; };
+                CDC8B5AA18047FF10016E685 /* SourceBufferPrivateAVFObjC.mm in Sources */ = {isa = PBXBuildFile; fileRef = CDC8B5A818047FF10016E685 /* SourceBufferPrivateAVFObjC.mm */; };
+                CDC8B5AB18047FF10016E685 /* SourceBufferPrivateAVFObjC.h in Headers */ = {isa = PBXBuildFile; fileRef = CDC8B5A918047FF10016E685 /* SourceBufferPrivateAVFObjC.h */; };
</ins><span class="cx">                 CDC8B5AD1804AE5D0016E685 /* SourceBufferPrivateClient.h in Headers */ = {isa = PBXBuildFile; fileRef = CDC8B5AC1804AE5D0016E685 /* SourceBufferPrivateClient.h */; };
</span><span class="cx">                 CDD525D7145B6DD0008D204D /* JSHTMLMediaElementCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDF65CCC145B6AFE00C4C7AA /* JSHTMLMediaElementCustom.cpp */; };
</span><span class="cx">                 CDD7089618359F6F002B3DC6 /* SampleMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDD7089418359F6E002B3DC6 /* SampleMap.cpp */; };
</span><span class="lines">@@ -5410,6 +5418,9 @@
</span><span class="cx">                 CDE3A85817F6020400C5BE20 /* AudioTrackPrivateAVFObjC.h in Headers */ = {isa = PBXBuildFile; fileRef = CDE3A85617F6020400C5BE20 /* AudioTrackPrivateAVFObjC.h */; };
</span><span class="cx">                 CDE7FC44181904B1002BBB77 /* OrderIterator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDE7FC42181904B1002BBB77 /* OrderIterator.cpp */; };
</span><span class="cx">                 CDE7FC45181904B1002BBB77 /* OrderIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = CDE7FC43181904B1002BBB77 /* OrderIterator.h */; };
</span><ins>+                CDE83DB1183C44060031EAA3 /* VideoPlaybackQuality.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDE83DAF183C44060031EAA3 /* VideoPlaybackQuality.cpp */; };
+                CDE83DB2183C44060031EAA3 /* VideoPlaybackQuality.h in Headers */ = {isa = PBXBuildFile; fileRef = CDE83DB0183C44060031EAA3 /* VideoPlaybackQuality.h */; };
+                CDE83DB6183D352A0031EAA3 /* JSVideoPlaybackQuality.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDE83DB4183D352A0031EAA3 /* JSVideoPlaybackQuality.cpp */; };
</ins><span class="cx">                 CDEA763014608A53008B31F1 /* PlatformClockCA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDEA762E146084DE008B31F1 /* PlatformClockCA.cpp */; };
</span><span class="cx">                 CDEA76341460B56F008B31F1 /* ClockGeneric.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDEA76321460AE29008B31F1 /* ClockGeneric.cpp */; };
</span><span class="cx">                 CDEA76351460B71A008B31F1 /* Clock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDEA76331460B462008B31F1 /* Clock.cpp */; };
</span><span class="lines">@@ -5544,6 +5555,9 @@
</span><span class="cx">                 E11AF15111B9A1A300805103 /* Cursor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E11AF15011B9A1A300805103 /* Cursor.cpp */; };
</span><span class="cx">                 E11C9D9B0EB3681200E409DB /* ScriptExecutionContext.h in Headers */ = {isa = PBXBuildFile; fileRef = E11C9D9A0EB3681200E409DB /* ScriptExecutionContext.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 E11C9DB00EB3699500E409DB /* ScriptExecutionContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E11C9DAF0EB3699500E409DB /* ScriptExecutionContext.cpp */; };
</span><ins>+                E1233F0C185A3E3B008DFAF5 /* CryptoAlgorithmRSAES_PKCS1_v1_5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1233F0A185A3E3B008DFAF5 /* CryptoAlgorithmRSAES_PKCS1_v1_5.cpp */; };
+                E1233F0D185A3E3B008DFAF5 /* CryptoAlgorithmRSAES_PKCS1_v1_5.h in Headers */ = {isa = PBXBuildFile; fileRef = E1233F0B185A3E3B008DFAF5 /* CryptoAlgorithmRSAES_PKCS1_v1_5.h */; };
+                E1233F10185A4130008DFAF5 /* CryptoAlgorithmRSAES_PKCS1_v1_5Mac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1233F0E185A4130008DFAF5 /* CryptoAlgorithmRSAES_PKCS1_v1_5Mac.cpp */; };
</ins><span class="cx">                 E124748410AA161D00B79493 /* AuthenticationClient.h in Headers */ = {isa = PBXBuildFile; fileRef = E124748310AA161D00B79493 /* AuthenticationClient.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 E125F82B1822CFEC00D84CD9 /* CryptoAlgorithmSHA1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E125F8291822CFEC00D84CD9 /* CryptoAlgorithmSHA1.cpp */; };
</span><span class="cx">                 E125F82C1822CFEC00D84CD9 /* CryptoAlgorithmSHA1.h in Headers */ = {isa = PBXBuildFile; fileRef = E125F82A1822CFEC00D84CD9 /* CryptoAlgorithmSHA1.h */; };
</span><span class="lines">@@ -6315,6 +6329,7 @@
</span><span class="cx">                 FEBC5F3116BD0CC300659BD3 /* DatabaseBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FEBC5F2F16BD0CC300659BD3 /* DatabaseBase.cpp */; };
</span><span class="cx">                 FEBC5F3216BD0CC300659BD3 /* DatabaseBase.h in Headers */ = {isa = PBXBuildFile; fileRef = FEBC5F3016BD0CC300659BD3 /* DatabaseBase.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 FED13D3A0CEA934600D89466 /* EditorIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = FED13D390CEA934600D89466 /* EditorIOS.mm */; };
</span><ins>+                FED13D520CEA949700D89466 /* RenderThemeIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = FED13D500CEA949700D89466 /* RenderThemeIOS.h */; };
</ins><span class="cx">                 FED48390CED66C3255F72C59 /* MathMLSelectElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F75A059AF170D8FAA5B8CABE /* MathMLSelectElement.cpp */; };
</span><span class="cx">                 FEDBFF16182B7A8D0017FA64 /* BreakpointID.h in Headers */ = {isa = PBXBuildFile; fileRef = FEDBFF14182B7A8D0017FA64 /* BreakpointID.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 FEDEF84116797108000E444A /* DatabaseStrategy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FEDEF83F16797108000E444A /* DatabaseStrategy.cpp */; };
</span><span class="lines">@@ -6713,8 +6728,6 @@
</span><span class="cx">                 07221B6C17CEC32700848E51 /* RTCDTMFToneChangeEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RTCDTMFToneChangeEvent.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 07221B6D17CEC32700848E51 /* RTCDTMFToneChangeEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTCDTMFToneChangeEvent.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 07221B6E17CEC32700848E51 /* RTCDTMFToneChangeEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = RTCDTMFToneChangeEvent.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                07221B6F17CEC32700848E51 /* RTCErrorCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTCErrorCallback.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                07221B7017CEC32700848E51 /* RTCErrorCallback.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = RTCErrorCallback.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 07221B7117CEC32700848E51 /* RTCIceCandidate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RTCIceCandidate.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 07221B7217CEC32700848E51 /* RTCIceCandidate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTCIceCandidate.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 07221B7317CEC32700848E51 /* RTCIceCandidate.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = RTCIceCandidate.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -6848,8 +6861,8 @@
</span><span class="cx">                 07969D9617D14151007FF842 /* JSRTCDTMFSender.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSRTCDTMFSender.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 07969D9717D14151007FF842 /* JSRTCDTMFToneChangeEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSRTCDTMFToneChangeEvent.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 07969D9817D14151007FF842 /* JSRTCDTMFToneChangeEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSRTCDTMFToneChangeEvent.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                07969D9917D14151007FF842 /* JSRTCErrorCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSRTCErrorCallback.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                07969D9A17D14151007FF842 /* JSRTCErrorCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSRTCErrorCallback.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><ins>+                07969D9917D14151007FF842 /* JSRTCPeerConnectionErrorCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSRTCPeerConnectionErrorCallback.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                07969D9A17D14151007FF842 /* JSRTCPeerConnectionErrorCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSRTCPeerConnectionErrorCallback.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 07969D9B17D14151007FF842 /* JSRTCIceCandidate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSRTCIceCandidate.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 07969D9C17D14151007FF842 /* JSRTCIceCandidate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSRTCIceCandidate.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 07969D9D17D14151007FF842 /* JSRTCIceCandidateEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSRTCIceCandidateEvent.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -7547,10 +7560,16 @@
</span><span class="cx">                 2655414B1489AA2B000DFC5D /* CursorIOS.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CursorIOS.cpp; path = ios/CursorIOS.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 269239911505E1AA009E57FC /* JSIDBVersionChangeEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBVersionChangeEvent.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 269239921505E1AA009E57FC /* JSIDBVersionChangeEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBVersionChangeEvent.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                26C15CF41857E15D00F15C03 /* ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                26C15CF51857E15D00F15C03 /* ResourceHandleCFURLConnectionDelegateWithOperationQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceHandleCFURLConnectionDelegateWithOperationQueue.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 26C17A3C1491D2D400D12BA2 /* FileSystemIOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileSystemIOS.h; path = ios/FileSystemIOS.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 26C17A3D1491D2D400D12BA2 /* FileSystemIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = FileSystemIOS.mm; path = ios/FileSystemIOS.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 26E98A0F130A9FCA008EB7B2 /* TextCodecASCIIFastPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextCodecASCIIFastPath.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 26F40D4914904A6300CA67C4 /* EventLoopIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = EventLoopIOS.mm; path = ios/EventLoopIOS.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                26FAE4C81852E3A5004C8C46 /* ResourceHandleCFURLConnectionDelegate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ResourceHandleCFURLConnectionDelegate.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                26FAE4C91852E3A5004C8C46 /* ResourceHandleCFURLConnectionDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceHandleCFURLConnectionDelegate.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                26FAE4CA1852E3A5004C8C46 /* SynchronousResourceHandleCFURLConnectionDelegate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SynchronousResourceHandleCFURLConnectionDelegate.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                26FAE4CB1852E3A5004C8C46 /* SynchronousResourceHandleCFURLConnectionDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SynchronousResourceHandleCFURLConnectionDelegate.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 2917B55E1473496C0052C9D0 /* LayerFlushScheduler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LayerFlushScheduler.cpp; path = ca/LayerFlushScheduler.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2917B55F1473496C0052C9D0 /* LayerFlushScheduler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LayerFlushScheduler.h; path = ca/LayerFlushScheduler.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2917B5601473496C0052C9D0 /* LayerFlushSchedulerClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LayerFlushSchedulerClient.h; path = ca/LayerFlushSchedulerClient.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -7728,8 +7747,8 @@
</span><span class="cx">                 3146FE6518442087001A937C /* OESTextureFloatLinear.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OESTextureFloatLinear.cpp; path = canvas/OESTextureFloatLinear.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 3146FE6618442087001A937C /* OESTextureFloatLinear.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OESTextureFloatLinear.h; path = canvas/OESTextureFloatLinear.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 3146FE6718442087001A937C /* OESTextureFloatLinear.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = OESTextureFloatLinear.idl; path = canvas/OESTextureFloatLinear.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                3146FE7018442367001A937C /* JSOESTextureFloatLinear.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSOESTextureFloatLinear.cpp; path = JSOESTextureFloatLinear.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                3146FE7118442367001A937C /* JSOESTextureFloatLinear.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSOESTextureFloatLinear.h; path = JSOESTextureFloatLinear.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><ins>+                3146FE7018442367001A937C /* JSOESTextureFloatLinear.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSOESTextureFloatLinear.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                3146FE7118442367001A937C /* JSOESTextureFloatLinear.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSOESTextureFloatLinear.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 316023EF1532C40C00D50FF4 /* Dictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Dictionary.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 31611E540E1C4D4A00F6A579 /* WebKitCSSTransformValue.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebKitCSSTransformValue.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 31611E580E1C4DE000F6A579 /* JSWebKitCSSTransformValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebKitCSSTransformValue.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -7898,8 +7917,6 @@
</span><span class="cx">                 409EBDC416B7F3CA00CBA3FC /* JSCSSFontFaceLoadEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCSSFontFaceLoadEvent.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 40ECAE7D16B8B67200C36103 /* JSDOMError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDOMError.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 40ECAE8016B8B68A00C36103 /* JSDOMError.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMError.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                41002CCB0F66EDEF009E660D /* ScriptFunctionCall.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptFunctionCall.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                41002CCC0F66EDEF009E660D /* ScriptFunctionCall.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptFunctionCall.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 410B7E711045FAB000D8224F /* JSMessageEventCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMessageEventCustom.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 4127D5360F8AAB1D00E424F5 /* ScriptState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptState.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 4138D3331244054800323D33 /* EventContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventContext.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -7974,8 +7991,8 @@
</span><span class="cx">                 41F0618D0F5F069800A07EAC /* ConsoleMessage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ConsoleMessage.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 41F062120F5F192600A07EAC /* InspectorDatabaseResource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorDatabaseResource.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 41F062130F5F192600A07EAC /* InspectorDatabaseResource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorDatabaseResource.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                41F066E20F64BCF600A07EAC /* ScriptObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptObject.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                41F066E30F64BCF600A07EAC /* ScriptObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptObject.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><ins>+                41F066E20F64BCF600A07EAC /* ScriptGlobalObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptGlobalObject.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                41F066E30F64BCF600A07EAC /* ScriptGlobalObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptGlobalObject.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 41F1D21D0EF35C2A00DA8753 /* ScriptCachedFrameData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptCachedFrameData.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 41F1D21E0EF35C2A00DA8753 /* ScriptCachedFrameData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptCachedFrameData.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 41F584C6104652CB009CAA64 /* JSMessagePortCustom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSMessagePortCustom.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -8291,6 +8308,8 @@
</span><span class="cx">                 4A6E9FC513C17D570046A7F8 /* FontFeatureSettings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FontFeatureSettings.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 4A6E9FC613C17D570046A7F8 /* FontFeatureSettings.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; path = FontFeatureSettings.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 4A8C96EA0BE69032004EEFF0 /* FrameSelectionMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = FrameSelectionMac.mm; path = mac/FrameSelectionMac.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                4A9755351858ED9B00BD6D15 /* RTCPeerConnectionErrorCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTCPeerConnectionErrorCallback.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                4A9755361858ED9B00BD6D15 /* RTCPeerConnectionErrorCallback.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = RTCPeerConnectionErrorCallback.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 4A9CC81516BB9AC600EC645A /* CSSDefaultStyleSheets.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSDefaultStyleSheets.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 4A9CC81616BB9AC600EC645A /* CSSDefaultStyleSheets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSDefaultStyleSheets.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 4A9CC81E16BF9BB400EC645A /* InspectorCSSOMWrappers.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorCSSOMWrappers.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -8334,8 +8353,6 @@
</span><span class="cx">                 4F1534DF11B533020021FD86 /* EditingBehaviorTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EditingBehaviorTypes.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 4F2D205212EAE7B3005C2874 /* InspectorAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorAgent.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 4F2D205312EAE7B3005C2874 /* InspectorAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorAgent.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                4F3289B311A42AAB005ABE7E /* InspectorValues.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorValues.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                4F3289B411A42AAB005ABE7E /* InspectorValues.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorValues.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 4F4F5FFA11CBD2D200A186BF /* InspectorFrontend.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorFrontend.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 4F4F5FFC11CBD30100A186BF /* InspectorFrontend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorFrontend.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 4F6FDD621341DEDD001F8EE3 /* InspectorPageAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorPageAgent.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -8480,6 +8497,7 @@
</span><span class="cx">                 5160F4970B0AA75F00C1D2AF /* HistoryItemMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = HistoryItemMac.mm; path = mac/HistoryItemMac.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 5162C7F211F77EFA00612EFE /* SchemeRegistry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SchemeRegistry.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 5162C7F311F77EFB00612EFE /* SchemeRegistry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SchemeRegistry.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                5163117C1851242B00534647 /* IDBDatabaseMetadata.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBDatabaseMetadata.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 5164ED41183208C700EA8FF1 /* IDBServerConnectionLevelDB.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBServerConnectionLevelDB.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 5164ED42183208C700EA8FF1 /* IDBServerConnectionLevelDB.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBServerConnectionLevelDB.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51660AB01828BB8200074CAD /* IDBBackingStoreLevelDB.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBBackingStoreLevelDB.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -8649,8 +8667,8 @@
</span><span class="cx">                 53EF766A16530A61004CBE49 /* SettingsMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SettingsMacros.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 550A0BC7085F6039007353D6 /* QualifiedName.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = QualifiedName.cpp; sourceTree = &quot;&lt;group&gt;&quot;; tabWidth = 8; usesTabs = 0; };
</span><span class="cx">                 550A0BC8085F6039007353D6 /* QualifiedName.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = QualifiedName.h; sourceTree = &quot;&lt;group&gt;&quot;; tabWidth = 8; usesTabs = 0; };
</span><del>-                573D134514CE39FF0057ABCA /* InspectorTypeBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorTypeBuilder.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                573D134614CE39FF0057ABCA /* InspectorTypeBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorTypeBuilder.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><ins>+                573D134514CE39FF0057ABCA /* InspectorWebTypeBuilders.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorWebTypeBuilders.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                573D134614CE39FF0057ABCA /* InspectorWebTypeBuilders.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorWebTypeBuilders.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 57B7919F14C6A62900F202D1 /* ContentDistributor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ContentDistributor.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 57B791A014C6A62900F202D1 /* ContentDistributor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContentDistributor.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 57CF497214EE36D700ECFF14 /* InsertionPoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InsertionPoint.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -8708,7 +8726,10 @@
</span><span class="cx">                 5DA97ECC168E787B000E3676 /* SystemVersionMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SystemVersionMac.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 5DB1BC6810715A6400EFAA49 /* TransformSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TransformSource.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 5DB1BC6910715A6400EFAA49 /* TransformSourceLibxslt.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TransformSourceLibxslt.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                5F2DBBE7178E332D00141486 /* CertificateInfoMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CertificateInfoMac.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                5F2DBBE8178E336900141486 /* CertificateInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CertificateInfo.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 5FC7DC26CFE2563200B85AE5 /* JSEventTarget.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSEventTarget.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                5FE1D291178FD1F3001AA3C3 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = ../../../../../System/Library/Frameworks/Security.framework; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 626CDE0C1140424C001E5A68 /* SpatialNavigation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpatialNavigation.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 626CDE0D1140424C001E5A68 /* SpatialNavigation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpatialNavigation.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 628D214B12131ED10055DCFC /* NetworkingContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetworkingContext.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -8986,7 +9007,6 @@
</span><span class="cx">                 7A74ECB9101839A600BF939E /* InspectorDOMStorageAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorDOMStorageAgent.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 7A74ECBC101839DA00BF939E /* JSInspectorFrontendHostCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSInspectorFrontendHostCustom.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 7AA365ED12E7265400DCA242 /* InspectorRuntimeAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorRuntimeAgent.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                7AA51B6C1483B61600AD2752 /* InspectorBaseAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorBaseAgent.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 7AA51DD3148506A900AD2752 /* InspectorMemoryAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorMemoryAgent.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 7AA51DD4148506A900AD2752 /* InspectorMemoryAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorMemoryAgent.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 7AABA25714BC613300AA9A11 /* DOMEditor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DOMEditor.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -9793,8 +9813,6 @@
</span><span class="cx">                 93442C9D0D2B335C00338FF9 /* HTMLTableRowsCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLTableRowsCollection.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 93442C9F0D2B336000338FF9 /* HTMLTableRowsCollection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLTableRowsCollection.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 934907E3125BBBC8007F23A0 /* GraphicsContextCG.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GraphicsContextCG.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                934CC0DF0ED39D6F00A658F2 /* ScriptValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptValue.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                934CC0E00ED39D6F00A658F2 /* ScriptValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptValue.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 934CC1090EDB223900A658F2 /* ScriptSourceCode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptSourceCode.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 934D9BA40B8C116B007B42A9 /* WebCoreNSStringExtras.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = WebCoreNSStringExtras.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 934D9BA60B8C1175007B42A9 /* WebCoreNSStringExtras.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WebCoreNSStringExtras.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -10334,19 +10352,16 @@
</span><span class="cx">                 A518225417E2A0D400A9BA1D /* InspectorOverlayPage.css */ = {isa = PBXFileReference; lastKnownFileType = text.css; path = InspectorOverlayPage.css; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A518225517E2A0D400A9BA1D /* InspectorOverlayPage.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = InspectorOverlayPage.js; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A54A82EA15228CA300C72BA6 /* DOMNodePrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMNodePrivate.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                A556C286183206A8008CB720 /* InspectorAgentRegistry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorAgentRegistry.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                A556C287183206A8008CB720 /* InspectorAgentRegistry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorAgentRegistry.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 A5732B08136A161D005C8D7C /* DateComponents.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DateComponents.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A5732B09136A161D005C8D7C /* DateComponents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DateComponents.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A593CF7218402CE900BFCE27 /* protocol */ = {isa = PBXFileReference; lastKnownFileType = folder; path = protocol; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A593CF7318402D4B00BFCE27 /* CodeGeneratorInspector.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = CodeGeneratorInspector.py; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A593CF7418402D4B00BFCE27 /* CodeGeneratorInspectorStrings.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = CodeGeneratorInspectorStrings.py; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A593CF7518402D4B00BFCE27 /* combine-javascript-resources.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = &quot;combine-javascript-resources.pl&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                A593CF8A1840535200BFCE27 /* InspectorWebAgentBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorWebAgentBase.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 A5A2AF091829734300DE1729 /* PageDebuggable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PageDebuggable.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A5A2AF0A1829734300DE1729 /* PageDebuggable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PageDebuggable.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A5ABB78613B904BC00F197E3 /* LineBreakIteratorPoolICU.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LineBreakIteratorPoolICU.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                A5AC4AED18336975007114E0 /* InspectorBackendDispatcher.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorBackendDispatcher.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                A5AC4AEE18336975007114E0 /* InspectorBackendDispatcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorBackendDispatcher.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 A5AFB34D115151A700B045CB /* StepRange.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StepRange.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A5AFB34E115151A700B045CB /* StepRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StepRange.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A5C566AA127A3AAD00E8A3FF /* DiskImageCacheClientIOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DiskImageCacheClientIOS.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -12337,6 +12352,7 @@
</span><span class="cx">                 C544274911A57E7A0063A749 /* DOMStringList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMStringList.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 C544274A11A57E7A0063A749 /* DOMStringList.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DOMStringList.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 C55610F011A704EB00B82D27 /* DOMStringList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DOMStringList.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                C55C7BA01718AFBA001327E4 /* RenderThemeIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = RenderThemeIOS.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 C55E38BB10040D5D00A56BDB /* StorageNamespaceImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StorageNamespaceImpl.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 C55E38BC10040D5D00A56BDB /* StorageNamespaceImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StorageNamespaceImpl.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 C572EE1D1201C9BC007D8F82 /* JSIDBIndex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBIndex.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -12404,8 +12420,6 @@
</span><span class="cx">                 CD336F6617FA0AC600DDDCD0 /* VideoTrackPrivateAVFObjC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VideoTrackPrivateAVFObjC.h; path = objc/VideoTrackPrivateAVFObjC.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 CD37B37415C1A7E1006DC898 /* DiagnosticLoggingKeys.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DiagnosticLoggingKeys.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 CD37B37515C1A7E1006DC898 /* DiagnosticLoggingKeys.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DiagnosticLoggingKeys.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                CD3A495017A9C8B600274E42 /* MediaSourceBase.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = MediaSourceBase.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                CD3A495117A9C8B600274E42 /* MediaSourceBase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MediaSourceBase.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 CD3A495517A9D01B00274E42 /* MediaSource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaSource.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 CD3A495617A9D01B00274E42 /* MediaSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaSource.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 CD3A495717A9D01B00274E42 /* MediaSource.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MediaSource.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -12427,6 +12441,8 @@
</span><span class="cx">                 CD5393D1175E018600C07123 /* JSMemoryInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMemoryInfo.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 CD5393D2175E018600C07123 /* JSMemoryInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSMemoryInfo.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 CD54A75E180F535000B076C9 /* MediaSourcePrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaSourcePrivate.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                CD54A760180F9F7000B076C9 /* AudioTrackPrivateMediaSourceAVFObjC.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AudioTrackPrivateMediaSourceAVFObjC.cpp; path = objc/AudioTrackPrivateMediaSourceAVFObjC.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                CD54A761180F9F7000B076C9 /* AudioTrackPrivateMediaSourceAVFObjC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AudioTrackPrivateMediaSourceAVFObjC.h; path = objc/AudioTrackPrivateMediaSourceAVFObjC.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 CD54DE4517468B6F005E5B36 /* AudioSessionManagerMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioSessionManagerMac.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 CD54DE4917469C6D005E5B36 /* AudioSessionMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioSessionMac.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 CD641EB11818F5ED00EE4C41 /* MediaSourcePrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaSourcePrivate.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -12442,6 +12458,8 @@
</span><span class="cx">                 CD8203091395AB6A00F956C6 /* WebVideoFullscreenHUDWindowController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebVideoFullscreenHUDWindowController.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 CD82030E1395ACE700F956C6 /* WebWindowAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebWindowAnimation.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 CD82030F1395ACE700F956C6 /* WebWindowAnimation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebWindowAnimation.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                CD8B5A40180D149A008B8E65 /* VideoTrackPrivateMediaSourceAVFObjC.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = VideoTrackPrivateMediaSourceAVFObjC.cpp; path = objc/VideoTrackPrivateMediaSourceAVFObjC.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                CD8B5A41180D149A008B8E65 /* VideoTrackPrivateMediaSourceAVFObjC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VideoTrackPrivateMediaSourceAVFObjC.h; path = objc/VideoTrackPrivateMediaSourceAVFObjC.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 CD8B5A44180DD8D6008B8E65 /* VideoTrackMediaSource.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = VideoTrackMediaSource.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 CD8B5A45180DFF4E008B8E65 /* VideoTrackMediaSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VideoTrackMediaSource.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 CD8B5A47180E1361008B8E65 /* TextTrackMediaSource.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = TextTrackMediaSource.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -12514,6 +12532,12 @@
</span><span class="cx">                 CDC69DD51632026C007C38DF /* WebCoreFullScreenWarningView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebCoreFullScreenWarningView.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 CDC69DD816371FD3007C38DF /* WebCoreFullScreenPlaceholderView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebCoreFullScreenPlaceholderView.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 CDC69DD916371FD3007C38DF /* WebCoreFullScreenPlaceholderView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebCoreFullScreenPlaceholderView.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                CDC8B5A0180463470016E685 /* MediaPlayerPrivateMediaSourceAVFObjC.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MediaPlayerPrivateMediaSourceAVFObjC.mm; path = objc/MediaPlayerPrivateMediaSourceAVFObjC.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                CDC8B5A1180463470016E685 /* MediaPlayerPrivateMediaSourceAVFObjC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MediaPlayerPrivateMediaSourceAVFObjC.h; path = objc/MediaPlayerPrivateMediaSourceAVFObjC.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                CDC8B5A4180474F70016E685 /* MediaSourcePrivateAVFObjC.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MediaSourcePrivateAVFObjC.mm; path = objc/MediaSourcePrivateAVFObjC.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                CDC8B5A5180474F70016E685 /* MediaSourcePrivateAVFObjC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MediaSourcePrivateAVFObjC.h; path = objc/MediaSourcePrivateAVFObjC.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                CDC8B5A818047FF10016E685 /* SourceBufferPrivateAVFObjC.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = SourceBufferPrivateAVFObjC.mm; path = objc/SourceBufferPrivateAVFObjC.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                CDC8B5A918047FF10016E685 /* SourceBufferPrivateAVFObjC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SourceBufferPrivateAVFObjC.h; path = objc/SourceBufferPrivateAVFObjC.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 CDC8B5AC1804AE5D0016E685 /* SourceBufferPrivateClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SourceBufferPrivateClient.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 CDCE5CD014633BC900D47CCA /* EventTargetFactory.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = EventTargetFactory.in; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 CDD1E525167BA56400CE820B /* TextTrackRepresentation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextTrackRepresentation.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -12525,6 +12549,11 @@
</span><span class="cx">                 CDE6560E17CA6E7600526BA7 /* mediaControlsApple.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = mediaControlsApple.js; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 CDE7FC42181904B1002BBB77 /* OrderIterator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OrderIterator.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 CDE7FC43181904B1002BBB77 /* OrderIterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OrderIterator.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                CDE83DAF183C44060031EAA3 /* VideoPlaybackQuality.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VideoPlaybackQuality.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                CDE83DB0183C44060031EAA3 /* VideoPlaybackQuality.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VideoPlaybackQuality.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                CDE83DB3183C441E0031EAA3 /* VideoPlaybackQuality.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = VideoPlaybackQuality.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
+                CDE83DB4183D352A0031EAA3 /* JSVideoPlaybackQuality.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSVideoPlaybackQuality.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                CDE83DB5183D352A0031EAA3 /* JSVideoPlaybackQuality.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSVideoPlaybackQuality.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 CDEA762C14608224008B31F1 /* Clock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Clock.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 CDEA762E146084DE008B31F1 /* PlatformClockCA.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformClockCA.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 CDEA762F146084EE008B31F1 /* PlatformClockCA.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformClockCA.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -12672,6 +12701,9 @@
</span><span class="cx">                 E11AF15011B9A1A300805103 /* Cursor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Cursor.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 E11C9D9A0EB3681200E409DB /* ScriptExecutionContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptExecutionContext.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 E11C9DAF0EB3699500E409DB /* ScriptExecutionContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptExecutionContext.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                E1233F0A185A3E3B008DFAF5 /* CryptoAlgorithmRSAES_PKCS1_v1_5.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CryptoAlgorithmRSAES_PKCS1_v1_5.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                E1233F0B185A3E3B008DFAF5 /* CryptoAlgorithmRSAES_PKCS1_v1_5.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoAlgorithmRSAES_PKCS1_v1_5.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                E1233F0E185A4130008DFAF5 /* CryptoAlgorithmRSAES_PKCS1_v1_5Mac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CryptoAlgorithmRSAES_PKCS1_v1_5Mac.cpp; path = mac/CryptoAlgorithmRSAES_PKCS1_v1_5Mac.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 E124748310AA161D00B79493 /* AuthenticationClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AuthenticationClient.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 E125F8291822CFEC00D84CD9 /* CryptoAlgorithmSHA1.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CryptoAlgorithmSHA1.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 E125F82A1822CFEC00D84CD9 /* CryptoAlgorithmSHA1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoAlgorithmSHA1.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -13529,6 +13561,7 @@
</span><span class="cx">                 FEBC5F2F16BD0CC300659BD3 /* DatabaseBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DatabaseBase.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 FEBC5F3016BD0CC300659BD3 /* DatabaseBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DatabaseBase.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 FED13D390CEA934600D89466 /* EditorIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = EditorIOS.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                FED13D500CEA949700D89466 /* RenderThemeIOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderThemeIOS.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 FEDBFF14182B7A8D0017FA64 /* BreakpointID.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BreakpointID.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 FEDEF83F16797108000E444A /* DatabaseStrategy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DatabaseStrategy.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 FEDEF84016797108000E444A /* DatabaseStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DatabaseStrategy.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -13573,6 +13606,7 @@
</span><span class="cx">                         isa = PBXFrameworksBuildPhase;
</span><span class="cx">                         buildActionMask = 2147483647;
</span><span class="cx">                         files = (
</span><ins>+                                5FE1D292178FD1F3001AA3C3 /* Security.framework in Frameworks */,
</ins><span class="cx">                                 FD2DBF1212B048A300ED98C6 /* Accelerate.framework in Frameworks */,
</span><span class="cx">                                 93F19B1308245E59001E9ABC /* ApplicationServices.framework in Frameworks */,
</span><span class="cx">                                 FD2DBF1312B048A300ED98C6 /* AudioToolbox.framework in Frameworks */,
</span><span class="lines">@@ -13633,6 +13667,8 @@
</span><span class="cx">                 07221B4617CEC32700848E51 /* mediastream */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><ins>+                                4A9755351858ED9B00BD6D15 /* RTCPeerConnectionErrorCallback.h */,
+                                4A9755361858ED9B00BD6D15 /* RTCPeerConnectionErrorCallback.idl */,
</ins><span class="cx">                                 0779BF0A18453168000B6AE7 /* HTMLMediaElementMediaStream.cpp */,
</span><span class="cx">                                 0779BF0B18453168000B6AE7 /* HTMLMediaElementMediaStream.h */,
</span><span class="cx">                                 0779BF0C18453168000B6AE7 /* HTMLMediaElementMediaStream.idl */,
</span><span class="lines">@@ -13706,8 +13742,6 @@
</span><span class="cx">                                 07221B6C17CEC32700848E51 /* RTCDTMFToneChangeEvent.cpp */,
</span><span class="cx">                                 07221B6D17CEC32700848E51 /* RTCDTMFToneChangeEvent.h */,
</span><span class="cx">                                 07221B6E17CEC32700848E51 /* RTCDTMFToneChangeEvent.idl */,
</span><del>-                                07221B6F17CEC32700848E51 /* RTCErrorCallback.h */,
-                                07221B7017CEC32700848E51 /* RTCErrorCallback.idl */,
</del><span class="cx">                                 07221B7117CEC32700848E51 /* RTCIceCandidate.cpp */,
</span><span class="cx">                                 07221B7217CEC32700848E51 /* RTCIceCandidate.h */,
</span><span class="cx">                                 07221B7317CEC32700848E51 /* RTCIceCandidate.idl */,
</span><span class="lines">@@ -13876,8 +13910,8 @@
</span><span class="cx">                                 07969D9617D14151007FF842 /* JSRTCDTMFSender.h */,
</span><span class="cx">                                 07969D9717D14151007FF842 /* JSRTCDTMFToneChangeEvent.cpp */,
</span><span class="cx">                                 07969D9817D14151007FF842 /* JSRTCDTMFToneChangeEvent.h */,
</span><del>-                                07969D9917D14151007FF842 /* JSRTCErrorCallback.cpp */,
-                                07969D9A17D14151007FF842 /* JSRTCErrorCallback.h */,
</del><ins>+                                07969D9917D14151007FF842 /* JSRTCPeerConnectionErrorCallback.cpp */,
+                                07969D9A17D14151007FF842 /* JSRTCPeerConnectionErrorCallback.h */,
</ins><span class="cx">                                 07969D9B17D14151007FF842 /* JSRTCIceCandidate.cpp */,
</span><span class="cx">                                 07969D9C17D14151007FF842 /* JSRTCIceCandidate.h */,
</span><span class="cx">                                 07969D9D17D14151007FF842 /* JSRTCIceCandidateEvent.cpp */,
</span><span class="lines">@@ -13935,6 +13969,7 @@
</span><span class="cx">                 0867D691FE84028FC02AAC07 /* WebKit */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><ins>+                                5FE1D291178FD1F3001AA3C3 /* Security.framework */,
</ins><span class="cx">                                 65C97AF208EA908800ACD273 /* config.h */,
</span><span class="cx">                                 EDEC98020AED7E170059137F /* WebCorePrefix.h */,
</span><span class="cx">                                 9307061309E0CA8200B17FE4 /* DerivedSources.make */,
</span><span class="lines">@@ -14427,8 +14462,8 @@
</span><span class="cx">                                 4F707A9811EF679400ACDA69 /* InspectorBackendDispatchers.h */,
</span><span class="cx">                                 4F4F5FFA11CBD2D200A186BF /* InspectorFrontend.cpp */,
</span><span class="cx">                                 4F4F5FFC11CBD30100A186BF /* InspectorFrontend.h */,
</span><del>-                                573D134514CE39FF0057ABCA /* InspectorTypeBuilder.cpp */,
-                                573D134614CE39FF0057ABCA /* InspectorTypeBuilder.h */,
</del><ins>+                                573D134514CE39FF0057ABCA /* InspectorWebTypeBuilders.cpp */,
+                                573D134614CE39FF0057ABCA /* InspectorWebTypeBuilders.h */,
</ins><span class="cx">                                 7A0E76D810BF059800A0276E /* JSInjectedScriptHost.cpp */,
</span><span class="cx">                                 7A0E76D910BF059800A0276E /* JSInjectedScriptHost.h */,
</span><span class="cx">                                 7A0E771C10C00DB100A0276E /* JSInspectorFrontendHost.cpp */,
</span><span class="lines">@@ -14480,13 +14515,8 @@
</span><span class="cx">                                 7A563F9512DF5C9100F4536D /* InjectedScriptSource.js */,
</span><span class="cx">                                 4F2D205312EAE7B3005C2874 /* InspectorAgent.cpp */,
</span><span class="cx">                                 4F2D205212EAE7B3005C2874 /* InspectorAgent.h */,
</span><del>-                                A556C286183206A8008CB720 /* InspectorAgentRegistry.cpp */,
-                                A556C287183206A8008CB720 /* InspectorAgentRegistry.h */,
</del><span class="cx">                                 B885E8D211E06DD2009FFBF4 /* InspectorApplicationCacheAgent.cpp */,
</span><span class="cx">                                 B885E8D311E06DD2009FFBF4 /* InspectorApplicationCacheAgent.h */,
</span><del>-                                A5AC4AED18336975007114E0 /* InspectorBackendDispatcher.cpp */,
-                                A5AC4AEE18336975007114E0 /* InspectorBackendDispatcher.h */,
-                                7AA51B6C1483B61600AD2752 /* InspectorBaseAgent.h */,
</del><span class="cx">                                 AAD766E8157E502F00E85423 /* InspectorCanvasAgent.cpp */,
</span><span class="cx">                                 AAD766E9157E502F00E85423 /* InspectorCanvasAgent.h */,
</span><span class="cx">                                 AAD766EA157E502F00E85423 /* InspectorCanvasInstrumentation.h */,
</span><span class="lines">@@ -14556,8 +14586,7 @@
</span><span class="cx">                                 82889B4B13C62392009A6156 /* InspectorStyleTextEditor.h */,
</span><span class="cx">                                 754133A9102E00F400075D00 /* InspectorTimelineAgent.cpp */,
</span><span class="cx">                                 754133A7102E00E800075D00 /* InspectorTimelineAgent.h */,
</span><del>-                                4F3289B311A42AAB005ABE7E /* InspectorValues.cpp */,
-                                4F3289B411A42AAB005ABE7E /* InspectorValues.h */,
</del><ins>+                                A593CF8A1840535200BFCE27 /* InspectorWebAgentBase.h */,
</ins><span class="cx">                                 F3810C191365A49600ED6E33 /* InspectorWorkerAgent.cpp */,
</span><span class="cx">                                 F3810C1A1365A49600ED6E33 /* InspectorWorkerAgent.h */,
</span><span class="cx">                                 F375CC061150D300008DDB81 /* InspectorWorkerResource.h */,
</span><span class="lines">@@ -15501,6 +15530,8 @@
</span><span class="cx">                         children = (
</span><span class="cx">                                 514C76420CE9234E007EF3CD /* AuthenticationMac.h */,
</span><span class="cx">                                 514C76430CE9234E007EF3CD /* AuthenticationMac.mm */,
</span><ins>+                                5F2DBBE8178E336900141486 /* CertificateInfo.h */,
+                                5F2DBBE7178E332D00141486 /* CertificateInfoMac.mm */,
</ins><span class="cx">                                 E1424C8F164B460B00F32D40 /* CookieJarMac.mm */,
</span><span class="cx">                                 E13F01F01270E19000DFBA71 /* CookieStorageMac.mm */,
</span><span class="cx">                                 E1B4CD2410B322E200BFFD7E /* CredentialStorageMac.mm */,
</span><span class="lines">@@ -17106,6 +17137,7 @@
</span><span class="cx">                                 51D71983181106DF0016DC51 /* IDBDatabaseError.h */,
</span><span class="cx">                                 51D71984181106DF0016DC51 /* IDBDatabaseException.cpp */,
</span><span class="cx">                                 51D71985181106DF0016DC51 /* IDBDatabaseException.h */,
</span><ins>+                                5163117C1851242B00534647 /* IDBDatabaseMetadata.cpp */,
</ins><span class="cx">                                 51C9611A183D2B8000D2002E /* IDBDatabaseMetadata.h */,
</span><span class="cx">                                 51D71986181106DF0016DC51 /* IDBEventDispatcher.cpp */,
</span><span class="cx">                                 51D71987181106DF0016DC51 /* IDBEventDispatcher.h */,
</span><span class="lines">@@ -17749,6 +17781,8 @@
</span><span class="cx">                                 BE8EF048171C9014009B48C3 /* JSVideoTrackList.cpp */,
</span><span class="cx">                                 BE8EF049171C9014009B48C3 /* JSVideoTrackList.h */,
</span><span class="cx">                                 97E9EC8B15DC492F004F2E71 /* JSVoidCallback.cpp */,
</span><ins>+                                CDE83DB4183D352A0031EAA3 /* JSVideoPlaybackQuality.cpp */,
+                                CDE83DB5183D352A0031EAA3 /* JSVideoPlaybackQuality.h */,
</ins><span class="cx">                                 97E9EC8C15DC492F004F2E71 /* JSVoidCallback.h */,
</span><span class="cx">                                 A7D20F60107F406900A80392 /* JSWebGLActiveInfo.cpp */,
</span><span class="cx">                                 A7D20F61107F406900A80392 /* JSWebGLActiveInfo.h */,
</span><span class="lines">@@ -18544,8 +18578,6 @@
</span><span class="cx">                                 CD3A495517A9D01B00274E42 /* MediaSource.cpp */,
</span><span class="cx">                                 CD3A495617A9D01B00274E42 /* MediaSource.h */,
</span><span class="cx">                                 CD3A495717A9D01B00274E42 /* MediaSource.idl */,
</span><del>-                                CD3A495017A9C8B600274E42 /* MediaSourceBase.cpp */,
-                                CD3A495117A9C8B600274E42 /* MediaSourceBase.h */,
</del><span class="cx">                                 B1A942E115B5CE2200D525D1 /* MediaSourceRegistry.cpp */,
</span><span class="cx">                                 B1A942E215B5CE2200D525D1 /* MediaSourceRegistry.h */,
</span><span class="cx">                                 CD3A495817A9D01B00274E42 /* SourceBuffer.cpp */,
</span><span class="lines">@@ -18556,6 +18588,9 @@
</span><span class="cx">                                 CD3A495D17A9D01B00274E42 /* SourceBufferList.idl */,
</span><span class="cx">                                 CD8B5A48180E138B008B8E65 /* TextTrackMediaSource.h */,
</span><span class="cx">                                 CD8B5A47180E1361008B8E65 /* TextTrackMediaSource.idl */,
</span><ins>+                                CDE83DAF183C44060031EAA3 /* VideoPlaybackQuality.cpp */,
+                                CDE83DB0183C44060031EAA3 /* VideoPlaybackQuality.h */,
+                                CDE83DB3183C441E0031EAA3 /* VideoPlaybackQuality.idl */,
</ins><span class="cx">                                 CD8B5A45180DFF4E008B8E65 /* VideoTrackMediaSource.h */,
</span><span class="cx">                                 CD8B5A44180DD8D6008B8E65 /* VideoTrackMediaSource.idl */,
</span><span class="cx">                                 CDD7089418359F6E002B3DC6 /* SampleMap.cpp */,
</span><span class="lines">@@ -19515,6 +19550,10 @@
</span><span class="cx">                                 7EE6845712D26E3800E79415 /* ResourceError.h */,
</span><span class="cx">                                 7EE6845812D26E3800E79415 /* ResourceErrorCF.cpp */,
</span><span class="cx">                                 7EE6845912D26E3800E79415 /* ResourceHandleCFNet.cpp */,
</span><ins>+                                26FAE4C81852E3A5004C8C46 /* ResourceHandleCFURLConnectionDelegate.cpp */,
+                                26FAE4C91852E3A5004C8C46 /* ResourceHandleCFURLConnectionDelegate.h */,
+                                26C15CF41857E15D00F15C03 /* ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp */,
+                                26C15CF51857E15D00F15C03 /* ResourceHandleCFURLConnectionDelegateWithOperationQueue.h */,
</ins><span class="cx">                                 7EE6845A12D26E3800E79415 /* ResourceRequest.h */,
</span><span class="cx">                                 7EE6845B12D26E3800E79415 /* ResourceRequestCFNet.cpp */,
</span><span class="cx">                                 7EE6845C12D26E3800E79415 /* ResourceRequestCFNet.h */,
</span><span class="lines">@@ -19524,6 +19563,8 @@
</span><span class="cx">                                 51ABAE1C103C1913008C5260 /* SocketStreamHandle.h */,
</span><span class="cx">                                 51ABAE1D103C1913008C5260 /* SocketStreamHandleCFNet.cpp */,
</span><span class="cx">                                 442ABCD517D9262F00D30715 /* SynchronousLoaderClientCFNet.cpp */,
</span><ins>+                                26FAE4CA1852E3A5004C8C46 /* SynchronousResourceHandleCFURLConnectionDelegate.cpp */,
+                                26FAE4CB1852E3A5004C8C46 /* SynchronousResourceHandleCFURLConnectionDelegate.h */,
</ins><span class="cx">                         );
</span><span class="cx">                         path = cf;
</span><span class="cx">                         sourceTree = &quot;&lt;group&gt;&quot;;
</span><span class="lines">@@ -19646,11 +19687,9 @@
</span><span class="cx">                                 A83E1C720E49042B00140B9C /* ScriptControllerMac.mm */,
</span><span class="cx">                                 9F6FC1941122E82A00E80196 /* ScriptDebugServer.cpp */,
</span><span class="cx">                                 9F6FC1951122E82A00E80196 /* ScriptDebugServer.h */,
</span><del>-                                41002CCC0F66EDEF009E660D /* ScriptFunctionCall.cpp */,
-                                41002CCB0F66EDEF009E660D /* ScriptFunctionCall.h */,
</del><span class="cx">                                 9F3B947D12241758005304E7 /* ScriptHeapSnapshot.h */,
</span><del>-                                41F066E30F64BCF600A07EAC /* ScriptObject.cpp */,
-                                41F066E20F64BCF600A07EAC /* ScriptObject.h */,
</del><ins>+                                41F066E30F64BCF600A07EAC /* ScriptGlobalObject.cpp */,
+                                41F066E20F64BCF600A07EAC /* ScriptGlobalObject.h */,
</ins><span class="cx">                                 F33F0281120947F200E5743A /* ScriptProfile.cpp */,
</span><span class="cx">                                 9F72304C11184B4100AD0126 /* ScriptProfile.h */,
</span><span class="cx">                                 9FA37EE31172FC8000C4CD55 /* ScriptProfileNode.h */,
</span><span class="lines">@@ -19659,8 +19698,6 @@
</span><span class="cx">                                 934CC1090EDB223900A658F2 /* ScriptSourceCode.h */,
</span><span class="cx">                                 4127D5360F8AAB1D00E424F5 /* ScriptState.cpp */,
</span><span class="cx">                                 41C760B00EDE03D300C1655F /* ScriptState.h */,
</span><del>-                                934CC0DF0ED39D6F00A658F2 /* ScriptValue.cpp */,
-                                934CC0E00ED39D6F00A658F2 /* ScriptValue.h */,
</del><span class="cx">                                 228C284410D82500009D0D0E /* ScriptWrappable.h */,
</span><span class="cx">                                 1400D7A717136EA70077CE05 /* ScriptWrappableInlines.h */,
</span><span class="cx">                                 A75E497510752ACB00C9B896 /* SerializedScriptValue.cpp */,
</span><span class="lines">@@ -20435,20 +20472,30 @@
</span><span class="cx">                 DF9AFD6F13FC31B00015FEB7 /* objc */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><ins>+                                CDE3A85617F6020400C5BE20 /* AudioTrackPrivateAVFObjC.h */,
+                                CDE3A85517F6020400C5BE20 /* AudioTrackPrivateAVFObjC.mm */,
+                                CD54A760180F9F7000B076C9 /* AudioTrackPrivateMediaSourceAVFObjC.cpp */,
+                                CD54A761180F9F7000B076C9 /* AudioTrackPrivateMediaSourceAVFObjC.h */,
+                                CD336F6017F9F64700DDDCD0 /* AVTrackPrivateAVFObjCImpl.h */,
</ins><span class="cx">                                 CD336F5F17F9F64700DDDCD0 /* AVTrackPrivateAVFObjCImpl.mm */,
</span><del>-                                CD336F6017F9F64700DDDCD0 /* AVTrackPrivateAVFObjCImpl.h */,
-                                CDE3A85517F6020400C5BE20 /* AudioTrackPrivateAVFObjC.mm */,
-                                CDE3A85617F6020400C5BE20 /* AudioTrackPrivateAVFObjC.h */,
</del><span class="cx">                                 07AA6B69166D019500D45671 /* InbandTextTrackPrivateAVFObjC.h */,
</span><span class="cx">                                 07AA6B6A166D019500D45671 /* InbandTextTrackPrivateAVFObjC.mm */,
</span><span class="cx">                                 07367DDD172CA67F00D861B9 /* InbandTextTrackPrivateLegacyAVFObjC.h */,
</span><span class="cx">                                 07367DDE172CA67F00D861B9 /* InbandTextTrackPrivateLegacyAVFObjC.mm */,
</span><span class="cx">                                 DF9AFD7013FC31D80015FEB7 /* MediaPlayerPrivateAVFoundationObjC.h */,
</span><span class="cx">                                 DF9AFD7113FC31D80015FEB7 /* MediaPlayerPrivateAVFoundationObjC.mm */,
</span><ins>+                                CDC8B5A1180463470016E685 /* MediaPlayerPrivateMediaSourceAVFObjC.h */,
+                                CDC8B5A0180463470016E685 /* MediaPlayerPrivateMediaSourceAVFObjC.mm */,
+                                CDC8B5A5180474F70016E685 /* MediaSourcePrivateAVFObjC.h */,
+                                CDC8B5A4180474F70016E685 /* MediaSourcePrivateAVFObjC.mm */,
+                                CDC8B5A918047FF10016E685 /* SourceBufferPrivateAVFObjC.h */,
+                                CDC8B5A818047FF10016E685 /* SourceBufferPrivateAVFObjC.mm */,
+                                CD336F6517FA0AC600DDDCD0 /* VideoTrackPrivateAVFObjC.cpp */,
+                                CD336F6617FA0AC600DDDCD0 /* VideoTrackPrivateAVFObjC.h */,
+                                CD8B5A40180D149A008B8E65 /* VideoTrackPrivateMediaSourceAVFObjC.cpp */,
+                                CD8B5A41180D149A008B8E65 /* VideoTrackPrivateMediaSourceAVFObjC.h */,
</ins><span class="cx">                                 CD7E05201651A84100C1201F /* WebCoreAVFResourceLoader.h */,
</span><span class="cx">                                 CD7E05211651A84100C1201F /* WebCoreAVFResourceLoader.mm */,
</span><del>-                                CD336F6517FA0AC600DDDCD0 /* VideoTrackPrivateAVFObjC.cpp */,
-                                CD336F6617FA0AC600DDDCD0 /* VideoTrackPrivateAVFObjC.h */,
</del><span class="cx">                         );
</span><span class="cx">                         name = objc;
</span><span class="cx">                         sourceTree = &quot;&lt;group&gt;&quot;;
</span><span class="lines">@@ -20463,6 +20510,7 @@
</span><span class="cx">                                 E125F8371822F1EB00D84CD9 /* CryptoAlgorithmHMACMac.cpp */,
</span><span class="cx">                                 E1BB84AC1822CA7400525043 /* CryptoAlgorithmRegistryMac.cpp */,
</span><span class="cx">                                 E1C266D618317AB4003F8B33 /* CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp */,
</span><ins>+                                E1233F0E185A4130008DFAF5 /* CryptoAlgorithmRSAES_PKCS1_v1_5Mac.cpp */,
</ins><span class="cx">                                 E1FE136E183FECF000892F13 /* CryptoAlgorithmRSA_OAEPMac.cpp */,
</span><span class="cx">                                 E19AC3F8182566F700349426 /* CryptoKeyMac.cpp */,
</span><span class="cx">                                 E164FAA418315E1A00DB4E61 /* CryptoKeyRSAMac.cpp */,
</span><span class="lines">@@ -20482,6 +20530,8 @@
</span><span class="cx">                                 E125F8301822F11B00D84CD9 /* CryptoAlgorithmHMAC.h */,
</span><span class="cx">                                 E1FE1368183FE1AB00892F13 /* CryptoAlgorithmRSA_OAEP.cpp */,
</span><span class="cx">                                 E1FE1369183FE1AB00892F13 /* CryptoAlgorithmRSA_OAEP.h */,
</span><ins>+                                E1233F0A185A3E3B008DFAF5 /* CryptoAlgorithmRSAES_PKCS1_v1_5.cpp */,
+                                E1233F0B185A3E3B008DFAF5 /* CryptoAlgorithmRSAES_PKCS1_v1_5.h */,
</ins><span class="cx">                                 E1BD3317182D8DDD00C05D9F /* CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp */,
</span><span class="cx">                                 E1BD3318182D8DDD00C05D9F /* CryptoAlgorithmRSASSA_PKCS1_v1_5.h */,
</span><span class="cx">                                 E125F8291822CFEC00D84CD9 /* CryptoAlgorithmSHA1.cpp */,
</span><span class="lines">@@ -21240,6 +21290,8 @@
</span><span class="cx">                                 86FF885F15DE3B8200BD6B28 /* RenderTextTrackCue.h */,
</span><span class="cx">                                 BCEA484A097D93020094C9E4 /* RenderTheme.cpp */,
</span><span class="cx">                                 BCEA484B097D93020094C9E4 /* RenderTheme.h */,
</span><ins>+                                FED13D500CEA949700D89466 /* RenderThemeIOS.h */,
+                                C55C7BA01718AFBA001327E4 /* RenderThemeIOS.mm */,
</ins><span class="cx">                                 BCEA4848097D93020094C9E4 /* RenderThemeMac.h */,
</span><span class="cx">                                 BCEA4849097D93020094C9E4 /* RenderThemeMac.mm */,
</span><span class="cx">                                 93955A4203D72932008635CE /* RenderTreeAsText.cpp */,
</span><span class="lines">@@ -22091,7 +22143,6 @@
</span><span class="cx">                                 29A8123F0FBB9C1D00510293 /* AccessibilityTableHeaderContainer.h in Headers */,
</span><span class="cx">                                 29A812310FBB9C1D00510293 /* AccessibilityTableRow.h in Headers */,
</span><span class="cx">                                 B5D31DFB11CF610B009F22B4 /* ActiveDOMCallback.h in Headers */,
</span><del>-                                A556C289183206A8008CB720 /* InspectorAgentRegistry.h in Headers */,
</del><span class="cx">                                 E1C4DE690EA75C1E0023CCD6 /* ActiveDOMObject.h in Headers */,
</span><span class="cx">                                 BCF7E491137CD7C7001DDAE7 /* AdjustViewSizeOrNot.h in Headers */,
</span><span class="cx">                                 84D0C4061115F1EA0018AA34 /* AffineTransform.h in Headers */,
</span><span class="lines">@@ -22124,6 +22175,7 @@
</span><span class="cx">                                 49B3760D15C6C6840059131D /* ArrayValue.h in Headers */,
</span><span class="cx">                                 FD5686CA13AC180200B69C68 /* AsyncAudioDecoder.h in Headers */,
</span><span class="cx">                                 E1CDE9221501916900862CC5 /* AsyncFileStream.h in Headers */,
</span><ins>+                                26C15CF71857E15E00F15C03 /* ResourceHandleCFURLConnectionDelegateWithOperationQueue.h in Headers */,
</ins><span class="cx">                                 7C5343FD17B74B63004232F0 /* JSMediaQueryListListener.h in Headers */,
</span><span class="cx">                                 37C61F0112095C87007A3C67 /* AtomicStringKeyedMRUCache.h in Headers */,
</span><span class="cx">                                 E1FF8F601807442100132674 /* SubtleCrypto.h in Headers */,
</span><span class="lines">@@ -22395,7 +22447,6 @@
</span><span class="cx">                                 A80E6D010A1989CA007FB8C5 /* CSSInheritedValue.h in Headers */,
</span><span class="cx">                                 A80E6D080A1989CA007FB8C5 /* CSSInitialValue.h in Headers */,
</span><span class="cx">                                 BC772E131331620C001EC9CE /* CSSLineBoxContainValue.h in Headers */,
</span><del>-                                A5AC4AF018336975007114E0 /* InspectorBackendDispatcher.h in Headers */,
</del><span class="cx">                                 A80E6D030A1989CA007FB8C5 /* CSSMediaRule.h in Headers */,
</span><span class="cx">                                 F98FFF4511A2676200F548E8 /* CSSOMUtils.h in Headers */,
</span><span class="cx">                                 A80E6D000A1989CA007FB8C5 /* CSSPageRule.h in Headers */,
</span><span class="lines">@@ -22689,6 +22740,7 @@
</span><span class="cx">                                 85BCBC130ABBA87D00381160 /* DOMHTMLDocument.h in Headers */,
</span><span class="cx">                                 85E711A60AC5D5350053270F /* DOMHTMLDocumentInternal.h in Headers */,
</span><span class="cx">                                 85DF2EED0AA387CB00AD64C5 /* DOMHTMLElement.h in Headers */,
</span><ins>+                                CDC8B5A7180474F70016E685 /* MediaSourcePrivateAVFObjC.h in Headers */,
</ins><span class="cx">                                 85E711A70AC5D5350053270F /* DOMHTMLElementInternal.h in Headers */,
</span><span class="cx">                                 8540756A0AD6CBF900620C57 /* DOMHTMLEmbedElement.h in Headers */,
</span><span class="cx">                                 855247D00AD850B80012093B /* DOMHTMLEmbedElementInternal.h in Headers */,
</span><span class="lines">@@ -22957,6 +23009,7 @@
</span><span class="cx">                                 85031B420A44EFC700F992E0 /* Event.h in Headers */,
</span><span class="cx">                                 4138D3351244054800323D33 /* EventContext.h in Headers */,
</span><span class="cx">                                 CDAB6D2917C7DE6C00C60B34 /* MediaControlsHost.h in Headers */,
</span><ins>+                                CDC8B5A3180463470016E685 /* MediaPlayerPrivateMediaSourceAVFObjC.h in Headers */,
</ins><span class="cx">                                 418A06D0133C04D500CD379C /* EventDispatcher.h in Headers */,
</span><span class="cx">                                 BC60D90C0D2A17CE00B9918F /* EventException.h in Headers */,
</span><span class="cx">                                 97665013144FAA4200F6BB51 /* EventFactory.h in Headers */,
</span><span class="lines">@@ -23209,7 +23262,7 @@
</span><span class="cx">                                 A8EA7CAF0A192B9C00A8EF5F /* HTMLHRElement.h in Headers */,
</span><span class="cx">                                 A871DE270A152AC800B12A68 /* HTMLHtmlElement.h in Headers */,
</span><span class="cx">                                 A89570A016E9BD5900184E55 /* HTMLIdentifier.h in Headers */,
</span><del>-                                07969DB417D14151007FF842 /* JSRTCErrorCallback.h in Headers */,
</del><ins>+                                07969DB417D14151007FF842 /* JSRTCPeerConnectionErrorCallback.h in Headers */,
</ins><span class="cx">                                 A871DE2A0A152AC800B12A68 /* HTMLIFrameElement.h in Headers */,
</span><span class="cx">                                 A8EA7D2D0A19385500A8EF5F /* HTMLImageElement.h in Headers */,
</span><span class="cx">                                 A8EA7D2B0A19385500A8EF5F /* HTMLImageLoader.h in Headers */,
</span><span class="lines">@@ -23356,7 +23409,6 @@
</span><span class="cx">                                 4F2D205412EAE7B3005C2874 /* InspectorAgent.h in Headers */,
</span><span class="cx">                                 B885E8D511E06DD2009FFBF4 /* InspectorApplicationCacheAgent.h in Headers */,
</span><span class="cx">                                 4F707A9A11EF679400ACDA69 /* InspectorBackendDispatchers.h in Headers */,
</span><del>-                                7AA51B6E1483B61600AD2752 /* InspectorBaseAgent.h in Headers */,
</del><span class="cx">                                 AAD766EC157E502F00E85423 /* InspectorCanvasAgent.h in Headers */,
</span><span class="cx">                                 AAD766ED157E502F00E85423 /* InspectorCanvasInstrumentation.h in Headers */,
</span><span class="cx">                                 1C81B95C0E97330800266E07 /* InspectorClient.h in Headers */,
</span><span class="lines">@@ -23395,8 +23447,7 @@
</span><span class="cx">                                 82AB1774125C826700C5069D /* InspectorStyleSheet.h in Headers */,
</span><span class="cx">                                 82889B4D13C62392009A6156 /* InspectorStyleTextEditor.h in Headers */,
</span><span class="cx">                                 754133A8102E00E800075D00 /* InspectorTimelineAgent.h in Headers */,
</span><del>-                                578DA20F1520EBA3006141C1 /* InspectorTypeBuilder.h in Headers */,
-                                4F3289B611A42AAB005ABE7E /* InspectorValues.h in Headers */,
</del><ins>+                                578DA20F1520EBA3006141C1 /* InspectorWebTypeBuilders.h in Headers */,
</ins><span class="cx">                                 F3810C1C1365A49600ED6E33 /* InspectorWorkerAgent.h in Headers */,
</span><span class="cx">                                 078E092917D14D1C00420AA1 /* RTCStatsCallback.h in Headers */,
</span><span class="cx">                                 F375CC071150D300008DDB81 /* InspectorWorkerResource.h in Headers */,
</span><span class="lines">@@ -23801,7 +23852,6 @@
</span><span class="cx">                                 B2FA3D930AB75A6F000E5AC4 /* JSSVGFETileElement.h in Headers */,
</span><span class="cx">                                 B2FA3D950AB75A6F000E5AC4 /* JSSVGFETurbulenceElement.h in Headers */,
</span><span class="cx">                                 B2FA3D970AB75A6F000E5AC4 /* JSSVGFilterElement.h in Headers */,
</span><del>-                                078E092217D14D1C00420AA1 /* RTCErrorCallback.h in Headers */,
</del><span class="cx">                                 B27B28260CEF0C0700D39D54 /* JSSVGFontElement.h in Headers */,
</span><span class="cx">                                 A83B79050CCAFF15000B0825 /* JSSVGFontFaceElement.h in Headers */,
</span><span class="cx">                                 A83B79000CCAFF15000B0825 /* JSSVGFontFaceFormatElement.h in Headers */,
</span><span class="lines">@@ -23875,6 +23925,7 @@
</span><span class="cx">                                 B2FA3DFD0AB75A6F000E5AC4 /* JSSVGSVGElement.h in Headers */,
</span><span class="cx">                                 B2FA3DFF0AB75A6F000E5AC4 /* JSSVGSwitchElement.h in Headers */,
</span><span class="cx">                                 B2FA3E010AB75A6F000E5AC4 /* JSSVGSymbolElement.h in Headers */,
</span><ins>+                                CDE83DB2183C44060031EAA3 /* VideoPlaybackQuality.h in Headers */,
</ins><span class="cx">                                 B2FA3E030AB75A6F000E5AC4 /* JSSVGTextContentElement.h in Headers */,
</span><span class="cx">                                 B2FA3E050AB75A6F000E5AC4 /* JSSVGTextElement.h in Headers */,
</span><span class="cx">                                 B22362290C3AF04A0008CA9B /* JSSVGTextPathElement.h in Headers */,
</span><span class="lines">@@ -23924,7 +23975,6 @@
</span><span class="cx">                                 BC2CBF4E140F1ABD003879BE /* JSWebGLContextEvent.h in Headers */,
</span><span class="cx">                                 6E3FAD3914733F4011E42307 /* JSWebGLDebugRendererInfo.h in Headers */,
</span><span class="cx">                                 6E3FAD3914733F4022E42307 /* JSWebGLDebugShaders.h in Headers */,
</span><del>-                                CD3A495217A9C8C600274E42 /* MediaSourceBase.h in Headers */,
</del><span class="cx">                                 6E3FAD3914733F4000E42307 /* JSWebGLDepthTexture.h in Headers */,
</span><span class="cx">                                 49C7B9981042D2D30009D447 /* JSWebGLFramebuffer.h in Headers */,
</span><span class="cx">                                 93F1D5C112D5335600832BEC /* JSWebGLLoseContext.h in Headers */,
</span><span class="lines">@@ -23938,6 +23988,7 @@
</span><span class="cx">                                 078E091517D14D1C00420AA1 /* MediaStream.h in Headers */,
</span><span class="cx">                                 0C45342810CDBBFA00869157 /* JSWebGLUniformLocation.h in Headers */,
</span><span class="cx">                                 77EF62F412F9DB7400C77BD2 /* JSWebGLVertexArrayObjectOES.h in Headers */,
</span><ins>+                                CDC8B5AB18047FF10016E685 /* SourceBufferPrivateAVFObjC.h in Headers */,
</ins><span class="cx">                                 31C0FF3E0E4CEFAC007D6FE5 /* JSWebKitAnimationEvent.h in Headers */,
</span><span class="cx">                                 A2E8AE3816A49840006BB3AA /* JSWebKitCSSFilterRule.h in Headers */,
</span><span class="cx">                                 310603751432819C00ABF4BA /* JSWebKitCSSFilterValue.h in Headers */,
</span><span class="lines">@@ -24223,6 +24274,7 @@
</span><span class="cx">                                 0F13163E16ED0CC80035CC04 /* PlatformCAFilters.h in Headers */,
</span><span class="cx">                                 499B3EC5128CCC4700E726C2 /* PlatformCALayer.h in Headers */,
</span><span class="cx">                                 493E5E0912D6420500020081 /* PlatformCALayerClient.h in Headers */,
</span><ins>+                                5FA904CA178E61F5004C8A2D /* CertificateInfo.h in Headers */,
</ins><span class="cx">                                 07C59B5417F4AC15000FBCBB /* AudioStreamTrack.h in Headers */,
</span><span class="cx">                                 E1424C8A164B3B4E00F32D40 /* PlatformCookieJar.h in Headers */,
</span><span class="cx">                                 BC5C762B1497FE1400BC4775 /* PlatformEvent.h in Headers */,
</span><span class="lines">@@ -24361,6 +24413,7 @@
</span><span class="cx">                                 439046DE12DA25E800AF80A2 /* RenderMathMLMath.h in Headers */,
</span><span class="cx">                                 439046E012DA25E800AF80A2 /* RenderMathMLOperator.h in Headers */,
</span><span class="cx">                                 439046E212DA25E800AF80A2 /* RenderMathMLRoot.h in Headers */,
</span><ins>+                                FED13D520CEA949700D89466 /* RenderThemeIOS.h in Headers */,
</ins><span class="cx">                                 439046E412DA25E800AF80A2 /* RenderMathMLRow.h in Headers */,
</span><span class="cx">                                 439046E612DA25E800AF80A2 /* RenderMathMLSquareRoot.h in Headers */,
</span><span class="cx">                                 0783228518013ED800999E0C /* MediaStreamAudioSource.h in Headers */,
</span><span class="lines">@@ -24378,6 +24431,7 @@
</span><span class="cx">                                 BC85F23D151915E000BC17BE /* RenderNamedFlowThread.h in Headers */,
</span><span class="cx">                                 BCEA4880097D93020094C9E4 /* RenderObject.h in Headers */,
</span><span class="cx">                                 BCFA930810333193007B25D1 /* RenderOverflow.h in Headers */,
</span><ins>+                                E1233F0D185A3E3B008DFAF5 /* CryptoAlgorithmRSAES_PKCS1_v1_5.h in Headers */,
</ins><span class="cx">                                 A43BF59D1149292800C643CA /* RenderProgress.h in Headers */,
</span><span class="cx">                                 5A574F25131DB93900471B88 /* RenderQuote.h in Headers */,
</span><span class="cx">                                 D70AD65813E1342B005B50B4 /* RenderRegion.h in Headers */,
</span><span class="lines">@@ -24460,6 +24514,7 @@
</span><span class="cx">                                 7EE6846A12D26E3800E79415 /* ResourceError.h in Headers */,
</span><span class="cx">                                 934F713C0D5A6F1900018D69 /* ResourceErrorBase.h in Headers */,
</span><span class="cx">                                 514C76790CE923A1007EF3CD /* ResourceHandle.h in Headers */,
</span><ins>+                                26FAE4CD1852E3A5004C8C46 /* ResourceHandleCFURLConnectionDelegate.h in Headers */,
</ins><span class="cx">                                 514C767A0CE923A1007EF3CD /* ResourceHandleClient.h in Headers */,
</span><span class="cx">                                 514C767B0CE923A1007EF3CD /* ResourceHandleInternal.h in Headers */,
</span><span class="cx">                                 51E4143416A6596300C633C7 /* ResourceHandleTypes.h in Headers */,
</span><span class="lines">@@ -24515,9 +24570,8 @@
</span><span class="cx">                                 08A484780E5272C500C3FE76 /* ScriptElement.h in Headers */,
</span><span class="cx">                                 E11C9D9B0EB3681200E409DB /* ScriptExecutionContext.h in Headers */,
</span><span class="cx">                                 CDD7089718359F6F002B3DC6 /* SampleMap.h in Headers */,
</span><del>-                                41002CCD0F66EDEF009E660D /* ScriptFunctionCall.h in Headers */,
</del><span class="cx">                                 9F3B947E12241758005304E7 /* ScriptHeapSnapshot.h in Headers */,
</span><del>-                                41F066E40F64BCF600A07EAC /* ScriptObject.h in Headers */,
</del><ins>+                                41F066E40F64BCF600A07EAC /* ScriptGlobalObject.h in Headers */,
</ins><span class="cx">                                 FD31603612B0267600C1A359 /* ScriptProcessorNode.h in Headers */,
</span><span class="cx">                                 9F72304F11184B4100AD0126 /* ScriptProfile.h in Headers */,
</span><span class="cx">                                 9FA37EE41172FC8000C4CD55 /* ScriptProfileNode.h in Headers */,
</span><span class="lines">@@ -24525,7 +24579,6 @@
</span><span class="cx">                                 8A413AE01207BBA50082016E /* ScriptRunner.h in Headers */,
</span><span class="cx">                                 934CC10A0EDB223900A658F2 /* ScriptSourceCode.h in Headers */,
</span><span class="cx">                                 41C760B10EDE03D300C1655F /* ScriptState.h in Headers */,
</span><del>-                                934CC0E20ED39D6F00A658F2 /* ScriptValue.h in Headers */,
</del><span class="cx">                                 228C284510D82500009D0D0E /* ScriptWrappable.h in Headers */,
</span><span class="cx">                                 1400D7A817136EA70077CE05 /* ScriptWrappableInlines.h in Headers */,
</span><span class="cx">                                 BC8AE34F12EA096A00EB3AE6 /* ScrollableArea.h in Headers */,
</span><span class="lines">@@ -24604,6 +24657,7 @@
</span><span class="cx">                                 E4AFD00C0DAF335400F5F55C /* SMILTime.h in Headers */,
</span><span class="cx">                                 E4AFD00E0DAF335500F5F55C /* SMILTimeContainer.h in Headers */,
</span><span class="cx">                                 51ABAE1B103C18FF008C5260 /* SocketStreamError.h in Headers */,
</span><ins>+                                CD54A763180F9F7000B076C9 /* AudioTrackPrivateMediaSourceAVFObjC.h in Headers */,
</ins><span class="cx">                                 510D4A34103165EE0049EA54 /* SocketStreamErrorBase.h in Headers */,
</span><span class="cx">                                 51ABAE1E103C1913008C5260 /* SocketStreamHandle.h in Headers */,
</span><span class="cx">                                 51D719BE181106E00016DC51 /* IDBCallbacks.h in Headers */,
</span><span class="lines">@@ -24660,6 +24714,7 @@
</span><span class="cx">                                 1A2E6E5A0CC55213004A2062 /* SQLValue.h in Headers */,
</span><span class="cx">                                 93F1996308245E59001E9ABC /* SSLKeyGenerator.h in Headers */,
</span><span class="cx">                                 BC7FA62D0D1F0EFF00DB22A9 /* StaticNodeList.h in Headers */,
</span><ins>+                                CD8B5A43180D149A008B8E65 /* VideoTrackPrivateMediaSourceAVFObjC.h in Headers */,
</ins><span class="cx">                                 A5AFB350115151A700B045CB /* StepRange.h in Headers */,
</span><span class="cx">                                 1AC2D845171734A100652FC0 /* Storage.h in Headers */,
</span><span class="cx">                                 51BE37E00DAEE00E001085FC /* StorageArea.h in Headers */,
</span><span class="lines">@@ -24917,6 +24972,7 @@
</span><span class="cx">                                 088A0E0A126EF1DB00978F7A /* SVGProperty.h in Headers */,
</span><span class="cx">                                 081DD49C13BA1A6000DC7627 /* SVGPropertyInfo.h in Headers */,
</span><span class="cx">                                 B57CB52E182A3EFC0079A647 /* InlineElementBox.h in Headers */,
</span><ins>+                                A593CF8B1840535200BFCE27 /* InspectorWebAgentBase.h in Headers */,
</ins><span class="cx">                                 088A0E0B126EF1DB00978F7A /* SVGPropertyTearOff.h in Headers */,
</span><span class="cx">                                 088A0E0C126EF1DB00978F7A /* SVGPropertyTraits.h in Headers */,
</span><span class="cx">                                 B2227A9A0D00BF220071B782 /* SVGRadialGradientElement.h in Headers */,
</span><span class="lines">@@ -24983,6 +25039,7 @@
</span><span class="cx">                                 B2227AF60D00BF220071B782 /* SVGZoomAndPan.h in Headers */,
</span><span class="cx">                                 B2E4EC980D00C22B00432643 /* SVGZoomEvent.h in Headers */,
</span><span class="cx">                                 E180811716FCF9CB00B80D07 /* SynchronousLoaderClient.h in Headers */,
</span><ins>+                                26FAE4CF1852E3A5004C8C46 /* SynchronousResourceHandleCFURLConnectionDelegate.h in Headers */,
</ins><span class="cx">                                 5DA97ECD168E787B000E3676 /* SystemVersionMac.h in Headers */,
</span><span class="cx">                                 A8CFF0510A154F09000A4234 /* TableLayout.h in Headers */,
</span><span class="cx">                                 072AE1E5183C0741000A5988 /* PluginReplacement.h in Headers */,
</span><span class="lines">@@ -25691,6 +25748,7 @@
</span><span class="cx">                                 49B3760C15C6C6840059131D /* ArrayValue.cpp in Sources */,
</span><span class="cx">                                 FD5686C913AC180200B69C68 /* AsyncAudioDecoder.cpp in Sources */,
</span><span class="cx">                                 E1CDE92015018ED000862CC5 /* AsyncFileStream.cpp in Sources */,
</span><ins>+                                26C15CF61857E15D00F15C03 /* ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp in Sources */,
</ins><span class="cx">                                 A8C4A80E09D563270003AC8D /* Attr.cpp in Sources */,
</span><span class="cx">                                 FD629EA4154B47160006D026 /* AudioBasicInspectorNode.cpp in Sources */,
</span><span class="cx">                                 FD315FF612B0267600C1A359 /* AudioBasicProcessorNode.cpp in Sources */,
</span><span class="lines">@@ -25768,7 +25826,6 @@
</span><span class="cx">                                 59B597731108656B007159E8 /* BridgeJSC.cpp in Sources */,
</span><span class="cx">                                 F55B3DAF1251F12D003EF269 /* ButtonInputType.cpp in Sources */,
</span><span class="cx">                                 1A569CF70D7E2B82007C3983 /* c_class.cpp in Sources */,
</span><del>-                                A5AC4AEF18336975007114E0 /* InspectorBackendDispatcher.cpp in Sources */,
</del><span class="cx">                                 1A569CF90D7E2B82007C3983 /* c_instance.cpp in Sources */,
</span><span class="cx">                                 1A569CFB0D7E2B82007C3983 /* c_runtime.cpp in Sources */,
</span><span class="cx">                                 1A569CFD0D7E2B82007C3983 /* c_utility.cpp in Sources */,
</span><span class="lines">@@ -26239,6 +26296,7 @@
</span><span class="cx">                                 A7CFB3D10B7ED10A0070C32D /* DragImage.cpp in Sources */,
</span><span class="cx">                                 A7CFB3D50B7ED1180070C32D /* DragImageMac.mm in Sources */,
</span><span class="cx">                                 498770DB1242C535002226BA /* DrawingBuffer.cpp in Sources */,
</span><ins>+                                CDC8B5A6180474F70016E685 /* MediaSourcePrivateAVFObjC.mm in Sources */,
</ins><span class="cx">                                 498771531243F9FA002226BA /* DrawingBufferMac.mm in Sources */,
</span><span class="cx">                                 078E091217D14CEE00420AA1 /* UserMediaController.cpp in Sources */,
</span><span class="cx">                                 FD6ED2C7136B8E66003CF072 /* DynamicsCompressor.cpp in Sources */,
</span><span class="lines">@@ -26274,6 +26332,7 @@
</span><span class="cx">                                 07969DB917D14151007FF842 /* JSRTCPeerConnection.cpp in Sources */,
</span><span class="cx">                                 E0FEF372B27C53EAC1C1FBEE /* EventSource.cpp in Sources */,
</span><span class="cx">                                 E12EDBEA0B308E0B002704B6 /* EventTarget.cpp in Sources */,
</span><ins>+                                CD8B5A42180D149A008B8E65 /* VideoTrackPrivateMediaSourceAVFObjC.cpp in Sources */,
</ins><span class="cx">                                 BC60D8F20D2A11E000B9918F /* ExceptionBase.cpp in Sources */,
</span><span class="cx">                                 973DC63F145A9409002842C2 /* ExceptionCodeDescription.cpp in Sources */,
</span><span class="cx">                                 A7CACDB113CE875C00BBBE3F /* ExceptionCodePlaceholder.cpp in Sources */,
</span><span class="lines">@@ -26323,7 +26382,6 @@
</span><span class="cx">                                 5160306C0CC4362300C8AC25 /* FileSystemCF.cpp in Sources */,
</span><span class="cx">                                 0779BF0D18453168000B6AE7 /* HTMLMediaElementMediaStream.cpp in Sources */,
</span><span class="cx">                                 26C17A3F1491D2D400D12BA2 /* FileSystemIOS.mm in Sources */,
</span><del>-                                CD3A495417A9CC9000274E42 /* MediaSourceBase.cpp in Sources */,
</del><span class="cx">                                 514B3F760C722055000530DF /* FileSystemMac.mm in Sources */,
</span><span class="cx">                                 6ED8C379183BFF8C009E53BD /* BoxShape.cpp in Sources */,
</span><span class="cx">                                 5160300B0CC4251200C8AC25 /* FileSystemPOSIX.cpp in Sources */,
</span><span class="lines">@@ -26372,6 +26430,7 @@
</span><span class="cx">                                 F50664F7157F52DC00AC226F /* FormController.cpp in Sources */,
</span><span class="cx">                                 514C766F0CE923A1007EF3CD /* FormData.cpp in Sources */,
</span><span class="cx">                                 085B92BA0EFDE73D00E6123C /* FormDataBuilder.cpp in Sources */,
</span><ins>+                                CDC8B5AA18047FF10016E685 /* SourceBufferPrivateAVFObjC.mm in Sources */,
</ins><span class="cx">                                 A8136D390973A8E700D74463 /* FormDataList.cpp in Sources */,
</span><span class="cx">                                 7EE6846612D26E3800E79415 /* FormDataStreamCFNet.cpp in Sources */,
</span><span class="cx">                                 514C764F0CE9234E007EF3CD /* FormDataStreamMac.mm in Sources */,
</span><span class="lines">@@ -26395,6 +26454,7 @@
</span><span class="cx">                                 4FB390AD15EF61F3007AD51F /* GeneratedImage.cpp in Sources */,
</span><span class="cx">                                 2D481F03146B5C6500AA7834 /* GradientImage.cpp in Sources */,
</span><span class="cx">                                 0720B0A014D3323500642955 /* GenericEventQueue.cpp in Sources */,
</span><ins>+                                CDE83DB1183C44060031EAA3 /* VideoPlaybackQuality.cpp in Sources */,
</ins><span class="cx">                                 9746AF2314F4DDE6003E7A70 /* Geolocation.cpp in Sources */,
</span><span class="cx">                                 9746AF2614F4DDE6003E7A70 /* GeolocationController.cpp in Sources */,
</span><span class="cx">                                 B2C3DA6D0D006CD600EF6F26 /* GlyphPageTreeNode.cpp in Sources */,
</span><span class="lines">@@ -26646,8 +26706,7 @@
</span><span class="cx">                                 82889B4C13C62392009A6156 /* InspectorStyleTextEditor.cpp in Sources */,
</span><span class="cx">                                 07277E4E17D018CC0015534D /* JSMediaStreamAudioDestinationNode.cpp in Sources */,
</span><span class="cx">                                 754133AA102E00F400075D00 /* InspectorTimelineAgent.cpp in Sources */,
</span><del>-                                573D134714CE39FF0057ABCA /* InspectorTypeBuilder.cpp in Sources */,
-                                4F3289B511A42AAB005ABE7E /* InspectorValues.cpp in Sources */,
</del><ins>+                                573D134714CE39FF0057ABCA /* InspectorWebTypeBuilders.cpp in Sources */,
</ins><span class="cx">                                 F3810C1B1365A49600ED6E33 /* InspectorWorkerAgent.cpp in Sources */,
</span><span class="cx">                                 F350B73513F1377D00880C43 /* InstrumentingAgents.cpp in Sources */,
</span><span class="cx">                                 B27535600B053814002CE64F /* IntPointCG.cpp in Sources */,
</span><span class="lines">@@ -26792,6 +26851,7 @@
</span><span class="cx">                                 65DF31F909D1CC60000BE325 /* JSElement.cpp in Sources */,
</span><span class="cx">                                 BC2ED5550C6B9BD300920BFF /* JSElementCustom.cpp in Sources */,
</span><span class="cx">                                 65DF322F09D1DDBC000BE325 /* JSEntity.cpp in Sources */,
</span><ins>+                                CD54A762180F9F7000B076C9 /* AudioTrackPrivateMediaSourceAVFObjC.cpp in Sources */,
</ins><span class="cx">                                 93F9B7740BA5FDDC00854064 /* JSEntityReference.cpp in Sources */,
</span><span class="cx">                                 2ECF7ADC10162B3800427DE7 /* JSErrorEvent.cpp in Sources */,
</span><span class="cx">                                 F3D461481161D53200CA0D09 /* JSErrorHandler.cpp in Sources */,
</span><span class="lines">@@ -26814,7 +26874,7 @@
</span><span class="cx">                                 898785F4122E1EAC003AABDA /* JSFileReaderSync.cpp in Sources */,
</span><span class="cx">                                 B6D9D27C14EAC0860090D75E /* JSFocusEvent.cpp in Sources */,
</span><span class="cx">                                 FDA15EAB12B03EE1003A583A /* JSGainNode.cpp in Sources */,
</span><del>-                                07969DB317D14151007FF842 /* JSRTCErrorCallback.cpp in Sources */,
</del><ins>+                                07969DB317D14151007FF842 /* JSRTCPeerConnectionErrorCallback.cpp in Sources */,
</ins><span class="cx">                                 FE80DA630E9C4703000D6F75 /* JSGeolocation.cpp in Sources */,
</span><span class="cx">                                 FE80D7AB0E9C1ED2000D6F75 /* JSGeolocationCustom.cpp in Sources */,
</span><span class="cx">                                 FE80DA650E9C4703000D6F75 /* JSGeoposition.cpp in Sources */,
</span><span class="lines">@@ -27698,6 +27758,7 @@
</span><span class="cx">                                 0705851217FA7107005F2BCB /* JSMediaStreamCapabilities.cpp in Sources */,
</span><span class="cx">                                 514C76780CE923A1007EF3CD /* ResourceHandle.cpp in Sources */,
</span><span class="cx">                                 7EE6846C12D26E3800E79415 /* ResourceHandleCFNet.cpp in Sources */,
</span><ins>+                                26FAE4CC1852E3A5004C8C46 /* ResourceHandleCFURLConnectionDelegate.cpp in Sources */,
</ins><span class="cx">                                 E1BA003116FB92AC00BA7A35 /* ResourceHandleClient.cpp in Sources */,
</span><span class="cx">                                 514C76510CE9234E007EF3CD /* ResourceHandleMac.mm in Sources */,
</span><span class="cx">                                 93E227E30AF589AD00D48324 /* ResourceLoader.cpp in Sources */,
</span><span class="lines">@@ -27751,14 +27812,12 @@
</span><span class="cx">                                 4998AED113FB224D0090B1AA /* ScriptedAnimationController.cpp in Sources */,
</span><span class="cx">                                 08A484770E5272C500C3FE76 /* ScriptElement.cpp in Sources */,
</span><span class="cx">                                 E11C9DB00EB3699500E409DB /* ScriptExecutionContext.cpp in Sources */,
</span><del>-                                41002CCE0F66EDEF009E660D /* ScriptFunctionCall.cpp in Sources */,
-                                41F066E50F64BCF600A07EAC /* ScriptObject.cpp in Sources */,
</del><ins>+                                41F066E50F64BCF600A07EAC /* ScriptGlobalObject.cpp in Sources */,
</ins><span class="cx">                                 FD31603512B0267600C1A359 /* ScriptProcessorNode.cpp in Sources */,
</span><span class="cx">                                 F33F0282120947F200E5743A /* ScriptProfile.cpp in Sources */,
</span><span class="cx">                                 9F72305011184B4100AD0126 /* ScriptProfiler.cpp in Sources */,
</span><span class="cx">                                 8A413AE11207BBA50082016E /* ScriptRunner.cpp in Sources */,
</span><span class="cx">                                 4127D5370F8AAB1D00E424F5 /* ScriptState.cpp in Sources */,
</span><del>-                                934CC0E10ED39D6F00A658F2 /* ScriptValue.cpp in Sources */,
</del><span class="cx">                                 BC8AE34E12EA096A00EB3AE6 /* ScrollableArea.cpp in Sources */,
</span><span class="cx">                                 CA3BF67C10D99BAE00E6CE53 /* ScrollAnimator.cpp in Sources */,
</span><span class="cx">                                 BC51156E12B1749C00C96754 /* ScrollAnimatorMac.mm in Sources */,
</span><span class="lines">@@ -27804,6 +27863,7 @@
</span><span class="cx">                                 B8DBDB4B130B0F8A00F5CDB1 /* SetSelectionCommand.cpp in Sources */,
</span><span class="cx">                                 14C9A5EA0B3D105F005A0232 /* Settings.cpp in Sources */,
</span><span class="cx">                                 E1C2F24A1533A2120083F974 /* SettingsMac.mm in Sources */,
</span><ins>+                                E1233F0C185A3E3B008DFAF5 /* CryptoAlgorithmRSAES_PKCS1_v1_5.cpp in Sources */,
</ins><span class="cx">                                 0F3DD44F12F5EA1B000D9190 /* ShadowBlur.cpp in Sources */,
</span><span class="cx">                                 BC5EB8C30E82031B00B25965 /* ShadowData.cpp in Sources */,
</span><span class="cx">                                 A6D169621346B49B000EB770 /* ShadowRoot.cpp in Sources */,
</span><span class="lines">@@ -27850,7 +27910,6 @@
</span><span class="cx">                                 AA2A5AD516A4861400975A25 /* SpeechSynthesis.cpp in Sources */,
</span><span class="cx">                                 AA2A5AD316A4860D00975A25 /* SpeechSynthesisEvent.cpp in Sources */,
</span><span class="cx">                                 AA2A5AD116A4860700975A25 /* SpeechSynthesisUtterance.cpp in Sources */,
</span><del>-                                A556C288183206A8008CB720 /* InspectorAgentRegistry.cpp in Sources */,
</del><span class="cx">                                 AA2A5ACD16A485FA00975A25 /* SpeechSynthesisVoice.cpp in Sources */,
</span><span class="cx">                                 A78FE13B12366B1000ACE8D0 /* SpellChecker.cpp in Sources */,
</span><span class="cx">                                 B8DBDB4D130B0F8A00F5CDB1 /* SpellingCorrectionCommand.cpp in Sources */,
</span><span class="lines">@@ -27947,6 +28006,7 @@
</span><span class="cx">                                 93B2D8180F9920EE006AE6B2 /* SuddenTermination.mm in Sources */,
</span><span class="cx">                                 087558C513B4A57D00F49307 /* SurrogatePairAwareTextIterator.cpp in Sources */,
</span><span class="cx">                                 62C1217C11AB9E77003C462C /* SuspendableTimer.cpp in Sources */,
</span><ins>+                                26FAE4CE1852E3A5004C8C46 /* SynchronousResourceHandleCFURLConnectionDelegate.cpp in Sources */,
</ins><span class="cx">                                 B22279730D00BF220071B782 /* SVGAElement.cpp in Sources */,
</span><span class="cx">                                 24D912B013CA9A1F00D21915 /* SVGAltGlyphDefElement.cpp in Sources */,
</span><span class="cx">                                 65653F2D0D9727D200CA9723 /* SVGAltGlyphElement.cpp in Sources */,
</span><span class="lines">@@ -27987,6 +28047,7 @@
</span><span class="cx">                                 B22279A40D00BF220071B782 /* SVGComponentTransferFunctionElement.cpp in Sources */,
</span><span class="cx">                                 B2227B050D00BFF10071B782 /* SVGCSSComputedStyleDeclaration.cpp in Sources */,
</span><span class="cx">                                 078E090C17D14CEE00420AA1 /* RTCSessionDescription.cpp in Sources */,
</span><ins>+                                CDE83DB6183D352A0031EAA3 /* JSVideoPlaybackQuality.cpp in Sources */,
</ins><span class="cx">                                 B2227B060D00BFF10071B782 /* SVGCSSParser.cpp in Sources */,
</span><span class="cx">                                 B2227B080D00BFF10071B782 /* SVGCSSStyleSelector.cpp in Sources */,
</span><span class="cx">                                 B22279A70D00BF220071B782 /* SVGCursorElement.cpp in Sources */,
</span><span class="lines">@@ -28081,6 +28142,7 @@
</span><span class="cx">                                 B2227A560D00BF220071B782 /* SVGParserUtilities.cpp in Sources */,
</span><span class="cx">                                 84C6784C1214814700A92902 /* SVGPathBlender.cpp in Sources */,
</span><span class="cx">                                 8476C9EA11DF6A2900555B02 /* SVGPathBuilder.cpp in Sources */,
</span><ins>+                                CDC8B5A2180463470016E685 /* MediaPlayerPrivateMediaSourceAVFObjC.mm in Sources */,
</ins><span class="cx">                                 8419D2A8120D92D000141F8F /* SVGPathByteStreamBuilder.cpp in Sources */,
</span><span class="cx">                                 8419D2AC120D92FC00141F8F /* SVGPathByteStreamSource.cpp in Sources */,
</span><span class="cx">                                 B2227A580D00BF220071B782 /* SVGPathElement.cpp in Sources */,
</span><span class="lines">@@ -28157,6 +28219,8 @@
</span><span class="cx">                                 B2C3DA3D0D006C1D00EF6F26 /* TextCodecLatin1.cpp in Sources */,
</span><span class="cx">                                 B2AFFC990D00A5DF0030074D /* TextCodecMac.cpp in Sources */,
</span><span class="cx">                                 B2C3DA3F0D006C1D00EF6F26 /* TextCodecUserDefined.cpp in Sources */,
</span><ins>+                                E1233F10185A4130008DFAF5 /* CryptoAlgorithmRSAES_PKCS1_v1_5Mac.cpp in Sources */,
+                                5163117D1851242B00534647 /* IDBDatabaseMetadata.cpp in Sources */,
</ins><span class="cx">                                 B2C3DA410D006C1D00EF6F26 /* TextCodecUTF16.cpp in Sources */,
</span><span class="cx">                                 E1FF8F6C180DB5BE00132674 /* CryptoAlgorithmRegistry.cpp in Sources */,
</span><span class="cx">                                 9343CB8112F25E510033C5EE /* TextCodecUTF8.cpp in Sources */,
</span><span class="lines">@@ -28303,6 +28367,7 @@
</span><span class="cx">                                 976D6C7B122B8A3D001FD1F7 /* WebKitBlobBuilder.cpp in Sources */,
</span><span class="cx">                                 150B923915F08DC400E10986 /* WebKitCSSArrayFunctionValue.cpp in Sources */,
</span><span class="cx">                                 A2E8AE3016A48E1C006BB3AA /* WebKitCSSFilterRule.cpp in Sources */,
</span><ins>+                                C55C7BA11718AFBA001327E4 /* RenderThemeIOS.mm in Sources */,
</ins><span class="cx">                                 3106036F14327D2E00ABF4BA /* WebKitCSSFilterValue.cpp in Sources */,
</span><span class="cx">                                 31288E720E3005D6003619AE /* WebKitCSSKeyframeRule.cpp in Sources */,
</span><span class="cx">                                 31288E740E3005D6003619AE /* WebKitCSSKeyframesRule.cpp in Sources */,
</span><span class="lines">@@ -28414,6 +28479,7 @@
</span><span class="cx">                                 977E2E0E12F0FC9C00C13380 /* XSSAuditorDelegate.cpp in Sources */,
</span><span class="cx">                                 E172AF8F1811BC3700FBADB9 /* JSDOMPromise.cpp in Sources */,
</span><span class="cx">                                 FD537352137B651800008DCE /* ZeroPole.cpp in Sources */,
</span><ins>+                                5F2DBBE9178E3C8100141486 /* CertificateInfoMac.mm in Sources */,
</ins><span class="cx">                                 FD1762DF176686D900D836A8 /* UpSampler.cpp in Sources */,
</span><span class="cx">                                 FD1762E3176686EA00D836A8 /* DownSampler.cpp in Sources */,
</span><span class="cx">                                 6E84E9E017668BEE00815B68 /* RasterShape.cpp in Sources */,
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreaccessibilityAccessibilityNodeObjectcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/accessibility/AccessibilityNodeObject.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/accessibility/AccessibilityNodeObject.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/accessibility/AccessibilityNodeObject.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1211,6 +1211,11 @@
</span><span class="cx">     return 0;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+bool AccessibilityNodeObject::usesAltTagForTextComputation() const
+{
+    return isImage() || isInputImage() || isNativeImage() || isCanvas() || (node() &amp;&amp; node()-&gt;hasTagName(imgTag));
+}
+    
</ins><span class="cx"> void AccessibilityNodeObject::titleElementText(Vector&lt;AccessibilityText&gt;&amp; textOrder) const
</span><span class="cx"> {
</span><span class="cx">     Node* node = this-&gt;node();
</span><span class="lines">@@ -1250,7 +1255,7 @@
</span><span class="cx">     if (!ariaLabel.isEmpty())
</span><span class="cx">         textOrder.append(AccessibilityText(ariaLabel, AlternativeText));
</span><span class="cx">     
</span><del>-    if (isImage() || isInputImage() || isNativeImage() || isCanvas()) {
</del><ins>+    if (usesAltTagForTextComputation()) {
</ins><span class="cx">         if (renderer() &amp;&amp; renderer()-&gt;isRenderImage()) {
</span><span class="cx">             String renderAltText = toRenderImage(renderer())-&gt;altText();
</span><span class="cx"> 
</span><span class="lines">@@ -1479,7 +1484,7 @@
</span><span class="cx">     if (!ariaDescription.isEmpty())
</span><span class="cx">         return ariaDescription;
</span><span class="cx"> 
</span><del>-    if (isImage() || isInputImage() || isNativeImage() || isCanvas()) {
</del><ins>+    if (usesAltTagForTextComputation()) {
</ins><span class="cx">         // Images should use alt as long as the attribute is present, even if empty.                    
</span><span class="cx">         // Otherwise, it should fallback to other methods, like the title attribute.                    
</span><span class="cx">         const AtomicString&amp; alt = getAttribute(altAttr);
</span><span class="lines">@@ -1739,8 +1744,12 @@
</span><span class="cx"> String AccessibilityNodeObject::text() const
</span><span class="cx"> {
</span><span class="cx">     // If this is a user defined static text, use the accessible name computation.                                      
</span><del>-    if (ariaRoleAttribute() == StaticTextRole)
-        return ariaAccessibilityDescription();
</del><ins>+    if (ariaRoleAttribute() == StaticTextRole) {
+        Vector&lt;AccessibilityText&gt; textOrder;
+        alternativeText(textOrder);
+        if (textOrder.size() &gt; 0 &amp;&amp; textOrder[0].text.length())
+            return textOrder[0].text;
+    }
</ins><span class="cx"> 
</span><span class="cx">     if (!isTextControl())
</span><span class="cx">         return String();
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreaccessibilityAccessibilityNodeObjecth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/accessibility/AccessibilityNodeObject.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/accessibility/AccessibilityNodeObject.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/accessibility/AccessibilityNodeObject.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -201,6 +201,7 @@
</span><span class="cx">     String alternativeTextForWebArea() const;
</span><span class="cx">     void ariaLabeledByText(Vector&lt;AccessibilityText&gt;&amp;) const;
</span><span class="cx">     virtual bool computeAccessibilityIsIgnored() const OVERRIDE;
</span><ins>+    bool usesAltTagForTextComputation() const;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> ACCESSIBILITY_OBJECT_TYPE_CASTS(AccessibilityNodeObject, isAccessibilityNodeObject())
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreaccessibilityatkWebKitAccessibleWrapperAtkcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -528,16 +528,42 @@
</span><span class="cx">         attributeSet = addToAtkAttributeSet(attributeSet, &quot;sort&quot;, sortAttribute.string().utf8().data());
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    // Landmarks will be exposed with xml-roles object attributes, with the exception
+    // of LandmarkApplicationRole, which will be exposed with ATK_ROLE_EMBEDDED.
+    AccessibilityRole role = coreObject-&gt;roleValue();
+    switch (role) {
+    case LandmarkBannerRole:
+        attributeSet = addToAtkAttributeSet(attributeSet, &quot;xml-roles&quot;, &quot;banner&quot;);
+        break;
+    case LandmarkComplementaryRole:
+        attributeSet = addToAtkAttributeSet(attributeSet, &quot;xml-roles&quot;, &quot;complementary&quot;);
+        break;
+    case LandmarkContentInfoRole:
+        attributeSet = addToAtkAttributeSet(attributeSet, &quot;xml-roles&quot;, &quot;contentinfo&quot;);
+        break;
+    case LandmarkMainRole:
+        attributeSet = addToAtkAttributeSet(attributeSet, &quot;xml-roles&quot;, &quot;main&quot;);
+        break;
+    case LandmarkNavigationRole:
+        attributeSet = addToAtkAttributeSet(attributeSet, &quot;xml-roles&quot;, &quot;navigation&quot;);
+        break;
+    case LandmarkSearchRole:
+        attributeSet = addToAtkAttributeSet(attributeSet, &quot;xml-roles&quot;, &quot;search&quot;);
+        break;
+    default:
+        break;
+    }
+
</ins><span class="cx">     return attributeSet;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static AtkRole atkRole(AccessibilityRole role)
</span><span class="cx"> {
</span><span class="cx">     switch (role) {
</span><ins>+    case ApplicationAlertDialogRole:
</ins><span class="cx">     case ApplicationAlertRole:
</span><span class="cx">         return ATK_ROLE_ALERT;
</span><span class="cx">     case ApplicationDialogRole:
</span><del>-    case ApplicationAlertDialogRole:
</del><span class="cx">         return ATK_ROLE_DIALOG;
</span><span class="cx">     case ApplicationStatusRole:
</span><span class="cx">         return ATK_ROLE_STATUSBAR;
</span><span class="lines">@@ -600,7 +626,7 @@
</span><span class="cx">     case SplitGroupRole:
</span><span class="cx">         return ATK_ROLE_SPLIT_PANE;
</span><span class="cx">     case SplitterRole:
</span><del>-        return ATK_ROLE_UNKNOWN;
</del><ins>+        return ATK_ROLE_SEPARATOR;
</ins><span class="cx">     case ColorWellRole:
</span><span class="cx">         return ATK_ROLE_COLOR_CHOOSER;
</span><span class="cx">     case ListRole:
</span><span class="lines">@@ -662,6 +688,17 @@
</span><span class="cx">         return ATK_ROLE_TOOL_TIP;
</span><span class="cx">     case WebAreaRole:
</span><span class="cx">         return ATK_ROLE_DOCUMENT_WEB;
</span><ins>+    case LandmarkApplicationRole:
+        return ATK_ROLE_EMBEDDED;
+#if ATK_CHECK_VERSION(2, 11, 3)
+    case LandmarkBannerRole:
+    case LandmarkComplementaryRole:
+    case LandmarkContentInfoRole:
+    case LandmarkMainRole:
+    case LandmarkNavigationRole:
+    case LandmarkSearchRole:
+        return ATK_ROLE_LANDMARK;
+#endif
</ins><span class="cx">     default:
</span><span class="cx">         return ATK_ROLE_UNKNOWN;
</span><span class="cx">     }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsgobjectGNUmakefileam"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/gobject/GNUmakefile.am (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/gobject/GNUmakefile.am        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/gobject/GNUmakefile.am        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -207,6 +207,8 @@
</span><span class="cx">         DerivedSources/webkitdom/WebKitDOMKeyboardEventPrivate.h \
</span><span class="cx">         DerivedSources/webkitdom/WebKitDOMLocation.cpp \
</span><span class="cx">         DerivedSources/webkitdom/WebKitDOMLocationPrivate.h \
</span><ins>+        DerivedSources/webkitdom/WebKitDOMMediaController.cpp \
+        DerivedSources/webkitdom/WebKitDOMMediaControllerPrivate.h \
</ins><span class="cx">         DerivedSources/webkitdom/WebKitDOMMediaError.cpp \
</span><span class="cx">         DerivedSources/webkitdom/WebKitDOMMediaErrorPrivate.h \
</span><span class="cx">         DerivedSources/webkitdom/WebKitDOMMediaList.cpp \
</span><span class="lines">@@ -287,6 +289,7 @@
</span><span class="cx">         DerivedSources/webkitdom/WebKitDOMCSSStyleDeclaration.h \
</span><span class="cx">         DerivedSources/webkitdom/WebKitDOMCSSStyleSheet.h \
</span><span class="cx">         DerivedSources/webkitdom/WebKitDOMCSSValue.h \
</span><ins>+        DerivedSources/webkitdom/WebKitDOMMediaController.h \
</ins><span class="cx">         DerivedSources/webkitdom/WebKitDOMMediaList.h \
</span><span class="cx">         DerivedSources/webkitdom/WebKitDOMMediaQueryList.h \
</span><span class="cx">         DerivedSources/webkitdom/WebKitDOMStyleMedia.h \
</span><span class="lines">@@ -440,6 +443,7 @@
</span><span class="cx">         DerivedSources/webkitdom/WebKitDOMTextTrackCue.h \
</span><span class="cx">         DerivedSources/webkitdom/WebKitDOMTextTrackCueList.h \
</span><span class="cx">         DerivedSources/webkitdom/WebKitDOMTrackEvent.h \
</span><ins>+        DerivedSources/webkitdom/WebKitDOMVideoPlaybackQuality.h \
</ins><span class="cx">         DerivedSources/webkitdom/WebKitDOMVideoTrack.h \
</span><span class="cx">         DerivedSources/webkitdom/WebKitDOMVideoTrackList.h
</span><span class="cx"> webkitgtk_gdom_built_sources += \
</span><span class="lines">@@ -457,6 +461,7 @@
</span><span class="cx">         DerivedSources/webkitdom/WebKitDOMTextTrackCuePrivate.h \
</span><span class="cx">         DerivedSources/webkitdom/WebKitDOMTextTrackCueList.cpp \
</span><span class="cx">         DerivedSources/webkitdom/WebKitDOMTextTrackCueListPrivate.h \
</span><ins>+        DerivedSources/webkitdom/WebKitDOMVideoPlaybackQuality.cpp \
</ins><span class="cx">         DerivedSources/webkitdom/WebKitDOMVideoTrack.cpp \
</span><span class="cx">         DerivedSources/webkitdom/WebKitDOMVideoTrackList.cpp \
</span><span class="cx">         DerivedSources/webkitdom/WebKitDOMTrackEvent.cpp \
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsgobjectWebKitDOMCustomcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/gobject/WebKitDOMCustom.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/gobject/WebKitDOMCustom.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/gobject/WebKitDOMCustom.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -20,15 +20,12 @@
</span><span class="cx"> #include &quot;WebKitDOMCustom.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSMainThreadExecState.h&quot;
</span><del>-#include &quot;WebKitDOMAudioTrackPrivate.h&quot;
</del><span class="cx"> #include &quot;WebKitDOMHTMLInputElement.h&quot;
</span><span class="cx"> #include &quot;WebKitDOMHTMLInputElementPrivate.h&quot;
</span><span class="cx"> #include &quot;WebKitDOMHTMLMediaElementPrivate.h&quot;
</span><span class="cx"> #include &quot;WebKitDOMHTMLTextAreaElement.h&quot;
</span><span class="cx"> #include &quot;WebKitDOMHTMLTextAreaElementPrivate.h&quot;
</span><span class="cx"> #include &quot;WebKitDOMPrivate.h&quot;
</span><del>-#include &quot;WebKitDOMTextTrackPrivate.h&quot;
-#include &quot;WebKitDOMVideoTrackPrivate.h&quot;
</del><span class="cx"> #include &quot;gobject/ConvertToUTF8String.h&quot;
</span><span class="cx"> 
</span><span class="cx"> using namespace WebKit;
</span><span class="lines">@@ -59,87 +56,4 @@
</span><span class="cx"> #endif /* ENABLE(VIDEO) */
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-gchar* webkit_dom_audio_track_get_kind(WebKitDOMAudioTrack* self)
-{
-#if ENABLE(VIDEO_TRACK)
-    WebCore::JSMainThreadNullState state;
-    g_return_val_if_fail(WEBKIT_DOM_IS_AUDIO_TRACK(self), 0);
-    WebCore::AudioTrack* item = WebKit::core(self);
-    gchar* result = convertToUTF8String(item-&gt;kind());
-    return result;
-#else
-    WEBKIT_WARN_FEATURE_NOT_PRESENT(&quot;Video Track&quot;)
-    return 0;
-#endif /* ENABLE(VIDEO_TRACK) */
-}
</del><span class="cx"> 
</span><del>-gchar* webkit_dom_audio_track_get_language(WebKitDOMAudioTrack* self)
-{
-#if ENABLE(VIDEO_TRACK)
-    WebCore::JSMainThreadNullState state;
-    g_return_val_if_fail(WEBKIT_DOM_IS_AUDIO_TRACK(self), 0);
-    WebCore::AudioTrack* item = WebKit::core(self);
-    gchar* result = convertToUTF8String(item-&gt;language());
-    return result;
-#else
-    WEBKIT_WARN_FEATURE_NOT_PRESENT(&quot;Video Track&quot;)
-    return 0;
-#endif /* ENABLE(VIDEO_TRACK) */
-}
-
-gchar* webkit_dom_text_track_get_kind(WebKitDOMTextTrack* self)
-{
-#if ENABLE(VIDEO_TRACK)
-    WebCore::JSMainThreadNullState state;
-    g_return_val_if_fail(WEBKIT_DOM_IS_TEXT_TRACK(self), 0);
-    WebCore::TextTrack* item = WebKit::core(self);
-    gchar* result = convertToUTF8String(item-&gt;kind());
-    return result;
-#else
-    WEBKIT_WARN_FEATURE_NOT_PRESENT(&quot;Video Track&quot;)
-    return 0;
-#endif /* ENABLE(VIDEO_TRACK) */
-}
-
-gchar* webkit_dom_text_track_get_language(WebKitDOMTextTrack* self)
-{
-#if ENABLE(VIDEO_TRACK)
-    WebCore::JSMainThreadNullState state;
-    g_return_val_if_fail(WEBKIT_DOM_IS_TEXT_TRACK(self), 0);
-    WebCore::TextTrack* item = WebKit::core(self);
-    gchar* result = convertToUTF8String(item-&gt;language());
-    return result;
-#else
-    WEBKIT_WARN_FEATURE_NOT_PRESENT(&quot;Video Track&quot;)
-    return 0;
-#endif /* ENABLE(VIDEO_TRACK) */
-}
-
-gchar* webkit_dom_video_track_get_kind(WebKitDOMVideoTrack* self)
-{
-#if ENABLE(VIDEO_TRACK)
-    WebCore::JSMainThreadNullState state;
-    g_return_val_if_fail(WEBKIT_DOM_IS_VIDEO_TRACK(self), 0);
-    WebCore::VideoTrack* item = WebKit::core(self);
-    gchar* result = convertToUTF8String(item-&gt;kind());
-    return result;
-#else
-    WEBKIT_WARN_FEATURE_NOT_PRESENT(&quot;Video Track&quot;)
-    return 0;
-#endif /* ENABLE(VIDEO_TRACK) */
-}
-
-gchar* webkit_dom_video_track_get_language(WebKitDOMVideoTrack* self)
-{
-#if ENABLE(VIDEO_TRACK)
-    WebCore::JSMainThreadNullState state;
-    g_return_val_if_fail(WEBKIT_DOM_IS_VIDEO_TRACK(self), 0);
-    WebCore::VideoTrack* item = WebKit::core(self);
-    gchar* result = convertToUTF8String(item-&gt;language());
-    return result;
-#else
-    WEBKIT_WARN_FEATURE_NOT_PRESENT(&quot;Video Track&quot;)
-    return 0;
-#endif /* ENABLE(VIDEO_TRACK) */
-}
-
</del></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsgobjectWebKitDOMCustomh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/gobject/WebKitDOMCustom.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/gobject/WebKitDOMCustom.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/gobject/WebKitDOMCustom.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -50,54 +50,6 @@
</span><span class="cx">  */
</span><span class="cx"> WEBKIT_API gboolean webkit_dom_html_input_element_is_edited(WebKitDOMHTMLInputElement* input);
</span><span class="cx"> 
</span><del>-/**
- * webkit_dom_audio_track_get_kind:
- * @self: A #WebKitDOMAudioTrack
- *
- * Returns: A #gchar
- */
-WEBKIT_API gchar* webkit_dom_audio_track_get_kind(WebKitDOMAudioTrack* self);
-
-/**
- * webkit_dom_audio_track_get_language:
- * @self: A #WebKitDOMAudioTrack
- *
- * Returns: A #gchar
- */
-WEBKIT_API gchar* webkit_dom_audio_track_get_language(WebKitDOMAudioTrack* self);
-
-/**
- * webkit_dom_text_track_get_kind:
- * @self: A #WebKitDOMTextTrack
- *
- * Returns: A #gchar
- */
-WEBKIT_API gchar* webkit_dom_text_track_get_kind(WebKitDOMTextTrack* self);
-
-/**
- * webkit_dom_text_track_get_language:
- * @self: A #WebKitDOMTextTrack
- *
- * Returns: A #gchar
- */
-WEBKIT_API gchar* webkit_dom_text_track_get_language(WebKitDOMTextTrack* self);
-
-/**
- * webkit_dom_video_track_get_kind:
- * @self: A #WebKitDOMVideoTrack
- *
- * Returns: A #gchar
- */
-WEBKIT_API gchar* webkit_dom_video_track_get_kind(WebKitDOMVideoTrack* self);
-
-/**
- * webkit_dom_video_track_get_language:
- * @self: A #WebKitDOMVideoTrack
- *
- * Returns: A #gchar
- */
-WEBKIT_API gchar* webkit_dom_video_track_get_language(WebKitDOMVideoTrack* self);
-
</del><span class="cx"> G_END_DECLS
</span><span class="cx"> 
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsgobjectWebKitDOMCustomsymbols"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/gobject/WebKitDOMCustom.symbols (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/gobject/WebKitDOMCustom.symbols        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/gobject/WebKitDOMCustom.symbols        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,9 +1,3 @@
</span><span class="cx"> gboolean webkit_dom_html_text_area_element_is_edited(WebKitDOMHTMLTextAreaElement*)
</span><span class="cx"> gboolean webkit_dom_html_input_element_is_edited(WebKitDOMHTMLInputElement*)
</span><span class="cx"> void webkit_dom_html_media_element_set_current_time(WebKitDOMHTMLMediaElement*, gdouble, GError**)
</span><del>-gchar* webkit_dom_audio_track_get_kind(WebKitDOMAudioTrack*)
-gchar* webkit_dom_audio_track_get_language(WebKitDOMAudioTrack*)
-gchar* webkit_dom_text_track_get_kind(WebKitDOMTextTrack*)
-gchar* webkit_dom_text_track_get_language(WebKitDOMTextTrack*)
-gchar* webkit_dom_video_track_get_kind(WebKitDOMVideoTrack*)
-gchar* webkit_dom_video_track_get_language(WebKitDOMVideoTrack*)
</del></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsgobjectWebKitDOMDeprecatedcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/gobject/WebKitDOMDeprecated.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/gobject/WebKitDOMDeprecated.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/gobject/WebKitDOMDeprecated.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -547,19 +547,6 @@
</span><span class="cx">     return 0;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-// WebKitDOMHTMLHeadElement
-
-gchar* webkit_dom_html_head_element_get_profile(WebKitDOMHTMLHeadElement* self)
-{
-    g_warning(&quot;%s: the HeadElement object has been removed from WebKit, this function does nothing.&quot;, __func__);
-    return g_strdup(&quot;&quot;);
-}
-
-void webkit_dom_html_head_element_set_profile(WebKitDOMHTMLHeadElement* self, const gchar* value)
-{
-    g_warning(&quot;%s: the HeadElement object has been removed from WebKit, this function does nothing.&quot;, __func__);
-}
-
</del><span class="cx"> // WebKitDOMProcessingInstruction
</span><span class="cx"> 
</span><span class="cx"> gchar* webkit_dom_processing_instruction_get_data(WebKitDOMProcessingInstruction* self)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsgobjectWebKitDOMDeprecatedh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/gobject/WebKitDOMDeprecated.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/gobject/WebKitDOMDeprecated.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/gobject/WebKitDOMDeprecated.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -552,31 +552,6 @@
</span><span class="cx"> webkit_dom_html_media_element_get_initial_time(WebKitDOMHTMLMediaElement* self);
</span><span class="cx"> 
</span><span class="cx"> /**
</span><del>- * webkit_dom_html_head_element_get_profile:
- * @self: A #WebKitDOMHTMLHeadElement
- *
- * This functionality has been removed from WebKit, this function does nothing.
- *
- * Returns: a #gchar
- *
- * Deprecated: 2.4
- */
-WEBKIT_DEPRECATED gchar*
-webkit_dom_html_head_element_get_profile(WebKitDOMHTMLHeadElement* self);
-
-/**
- * webkit_dom_html_head_element_set_profile:
- * @self: A #WebKitDOMHTMLHeadElement
- * @value: A #gchar
- *
- * This functionality has been removed from WebKit, this function does nothing.
- *
- * Deprecated: 2.4
- */
-WEBKIT_DEPRECATED void
-webkit_dom_html_head_element_set_profile(WebKitDOMHTMLHeadElement* self, const gchar* value);
-
-/**
</del><span class="cx">  * webkit_dom_processing_instruction_get_data:
</span><span class="cx">  * @self: A #WebKitDOMProcessingInstruction
</span><span class="cx">  *
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsgobjectWebKitDOMDeprecatedsymbols"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/gobject/WebKitDOMDeprecated.symbols (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/gobject/WebKitDOMDeprecated.symbols        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/gobject/WebKitDOMDeprecated.symbols        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -44,7 +44,5 @@
</span><span class="cx"> gulong webkit_dom_property_node_list_get_length(void*)
</span><span class="cx"> gdouble webkit_dom_html_media_element_get_start_time(WebKitDOMHTMLMediaElement*)
</span><span class="cx"> gdouble webkit_dom_html_media_element_get_initial_time(WebKitDOMHTMLMediaElement*)
</span><del>-gchar* webkit_dom_html_head_element_get_profile(WebKitDOMHTMLHeadElement*)
-void webkit_dom_html_head_element_set_profile(WebKitDOMHTMLHeadElement*, const gchar*)
</del><span class="cx"> gchar* webkit_dom_processing_instruction_get_data(WebKitDOMProcessingInstruction*)
</span><span class="cx"> void webkit_dom_processing_instruction_set_data(WebKitDOMProcessingInstruction*, const gchar*, GError**)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsgobjectwebkitdomsymbols"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/gobject/webkitdom.symbols (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/gobject/webkitdom.symbols        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/gobject/webkitdom.symbols        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -30,6 +30,25 @@
</span><span class="cx"> gchar* webkit_dom_css_value_get_css_text(WebKitDOMCSSValue*)
</span><span class="cx"> void webkit_dom_css_value_set_css_text(WebKitDOMCSSValue*, const gchar*, GError**)
</span><span class="cx"> gushort webkit_dom_css_value_get_css_value_type(WebKitDOMCSSValue*)
</span><ins>+void webkit_dom_media_controller_play(WebKitDOMMediaController*)
+void webkit_dom_media_controller_pause(WebKitDOMMediaController*)
+void webkit_dom_media_controller_unpause(WebKitDOMMediaController*)
+WebKitDOMTimeRanges* webkit_dom_media_controller_get_buffered(WebKitDOMMediaController*)
+WebKitDOMTimeRanges* webkit_dom_media_controller_get_seekable(WebKitDOMMediaController*)
+gdouble webkit_dom_media_controller_get_duration(WebKitDOMMediaController*)
+gdouble webkit_dom_media_controller_get_current_time(WebKitDOMMediaController*)
+void webkit_dom_media_controller_set_current_time(WebKitDOMMediaController*, gdouble)
+gboolean webkit_dom_media_controller_get_paused(WebKitDOMMediaController*)
+WebKitDOMTimeRanges* webkit_dom_media_controller_get_played(WebKitDOMMediaController*)
+gchar* webkit_dom_media_controller_get_playback_state(WebKitDOMMediaController*)
+gdouble webkit_dom_media_controller_get_default_playback_rate(WebKitDOMMediaController*)
+void webkit_dom_media_controller_set_default_playback_rate(WebKitDOMMediaController*, gdouble)
+gdouble webkit_dom_media_controller_get_playback_rate(WebKitDOMMediaController*)
+void webkit_dom_media_controller_set_playback_rate(WebKitDOMMediaController*, gdouble)
+gdouble webkit_dom_media_controller_get_volume(WebKitDOMMediaController*)
+void webkit_dom_media_controller_set_volume(WebKitDOMMediaController*, gdouble, GError**)
+gboolean webkit_dom_media_controller_get_muted(WebKitDOMMediaController*)
+void webkit_dom_media_controller_set_muted(WebKitDOMMediaController*, gboolean)
</ins><span class="cx"> gchar* webkit_dom_media_list_item(WebKitDOMMediaList*, gulong)
</span><span class="cx"> void webkit_dom_media_list_delete_medium(WebKitDOMMediaList*, const gchar*, GError**)
</span><span class="cx"> void webkit_dom_media_list_append_medium(WebKitDOMMediaList*, const gchar*, GError**)
</span><span class="lines">@@ -117,6 +136,7 @@
</span><span class="cx"> WebKitDOMDOMWindow* webkit_dom_document_get_default_view(WebKitDOMDocument*)
</span><span class="cx"> WebKitDOMStyleSheetList* webkit_dom_document_get_style_sheets(WebKitDOMDocument*)
</span><span class="cx"> gchar* webkit_dom_document_get_title(WebKitDOMDocument*)
</span><ins>+gchar* webkit_dom_document_get_url(WebKitDOMDocument*)
</ins><span class="cx"> void webkit_dom_document_set_title(WebKitDOMDocument*, const gchar*)
</span><span class="cx"> gchar* webkit_dom_document_get_referrer(WebKitDOMDocument*)
</span><span class="cx"> gchar* webkit_dom_document_get_domain(WebKitDOMDocument*)
</span><span class="lines">@@ -991,6 +1011,7 @@
</span><span class="cx"> WebKitDOMVideoTrackList* webkit_dom_html_media_element_get_video_tracks(WebKitDOMHTMLMediaElement*)
</span><span class="cx"> gchar* webkit_dom_html_media_element_get_media_group(WebKitDOMHTMLMediaElement*)
</span><span class="cx"> void webkit_dom_html_media_element_set_media_group(WebKitDOMHTMLMediaElement*, const gchar*)
</span><ins>+WebKitDOMMediaController* webkit_dom_html_media_element_get_controller(WebKitDOMHTMLMediaElement*)
</ins><span class="cx"> gboolean webkit_dom_html_menu_element_get_compact(WebKitDOMHTMLMenuElement*)
</span><span class="cx"> void webkit_dom_html_menu_element_set_compact(WebKitDOMHTMLMenuElement*, gboolean)
</span><span class="cx"> gchar* webkit_dom_html_meta_element_get_content(WebKitDOMHTMLMetaElement*)
</span><span class="lines">@@ -1068,6 +1089,7 @@
</span><span class="cx"> WebKitDOMNode* webkit_dom_html_options_collection_named_item(WebKitDOMHTMLOptionsCollection*, const gchar*)
</span><span class="cx"> glong webkit_dom_html_options_collection_get_selected_index(WebKitDOMHTMLOptionsCollection*)
</span><span class="cx"> void webkit_dom_html_options_collection_set_selected_index(WebKitDOMHTMLOptionsCollection*, glong)
</span><ins>+gulong webkit_dom_html_options_collection_get_length(WebKitDOMHTMLOptionsCollection*)
</ins><span class="cx"> gchar* webkit_dom_html_paragraph_element_get_align(WebKitDOMHTMLParagraphElement*)
</span><span class="cx"> void webkit_dom_html_paragraph_element_set_align(WebKitDOMHTMLParagraphElement*, const gchar*)
</span><span class="cx"> gchar* webkit_dom_html_param_element_get_name(WebKitDOMHTMLParamElement*)
</span><span class="lines">@@ -1312,12 +1334,6 @@
</span><span class="cx"> gboolean webkit_dom_html_text_area_element_is_edited(WebKitDOMHTMLTextAreaElement*)
</span><span class="cx"> gboolean webkit_dom_html_input_element_is_edited(WebKitDOMHTMLInputElement*)
</span><span class="cx"> void webkit_dom_html_media_element_set_current_time(WebKitDOMHTMLMediaElement*, gdouble, GError**)
</span><del>-gchar* webkit_dom_audio_track_get_kind(WebKitDOMAudioTrack*)
-gchar* webkit_dom_audio_track_get_language(WebKitDOMAudioTrack*)
-gchar* webkit_dom_text_track_get_kind(WebKitDOMTextTrack*)
-gchar* webkit_dom_text_track_get_language(WebKitDOMTextTrack*)
-gchar* webkit_dom_video_track_get_kind(WebKitDOMVideoTrack*)
-gchar* webkit_dom_video_track_get_language(WebKitDOMVideoTrack*)
</del><span class="cx"> WebKitDOMBlob* webkit_dom_blob_webkit_slice(WebKitDOMBlob*, gint64, gint64, const gchar*)
</span><span class="cx"> gchar* webkit_dom_html_element_get_id(WebKitDOMHTMLElement*)
</span><span class="cx"> void webkit_dom_html_element_set_id(WebKitDOMHTMLElement*, const gchar*)
</span><span class="lines">@@ -1482,6 +1498,14 @@
</span><span class="cx"> void webkit_dom_history_forward(WebKitDOMHistory*)
</span><span class="cx"> void webkit_dom_history_go(WebKitDOMHistory*, glong)
</span><span class="cx"> gulong webkit_dom_history_get_length(WebKitDOMHistory*)
</span><ins>+gchar* webkit_dom_location_get_href(WebKitDOMLocation*)
+gchar* webkit_dom_location_get_protocol(WebKitDOMLocation*)
+gchar* webkit_dom_location_get_host(WebKitDOMLocation*)
+gchar* webkit_dom_location_get_hostname(WebKitDOMLocation*)
+gchar* webkit_dom_location_get_port(WebKitDOMLocation*)
+gchar* webkit_dom_location_get_pathname(WebKitDOMLocation*)
+gchar* webkit_dom_location_get_search(WebKitDOMLocation*)
+gchar* webkit_dom_location_get_hash(WebKitDOMLocation*)
</ins><span class="cx"> gchar* webkit_dom_location_get_origin(WebKitDOMLocation*)
</span><span class="cx"> WebKitDOMDOMStringList* webkit_dom_location_get_ancestor_origins(WebKitDOMLocation*)
</span><span class="cx"> GType webkit_dom_object_get_type(void)
</span><span class="lines">@@ -1625,7 +1649,9 @@
</span><span class="cx"> glong webkit_dom_wheel_event_get_wheel_delta(WebKitDOMWheelEvent*)
</span><span class="cx"> gboolean webkit_dom_wheel_event_get_webkit_direction_inverted_from_device(WebKitDOMWheelEvent*)
</span><span class="cx"> gchar* webkit_dom_audio_track_get_id(WebKitDOMAudioTrack*)
</span><ins>+gchar* webkit_dom_audio_track_get_kind(WebKitDOMAudioTrack*)
</ins><span class="cx"> gchar* webkit_dom_audio_track_get_label(WebKitDOMAudioTrack*)
</span><ins>+gchar* webkit_dom_audio_track_get_language(WebKitDOMAudioTrack*)
</ins><span class="cx"> gboolean webkit_dom_audio_track_get_enabled(WebKitDOMAudioTrack*)
</span><span class="cx"> void webkit_dom_audio_track_set_enabled(WebKitDOMAudioTrack*, gboolean)
</span><span class="cx"> WebKitDOMAudioTrack* webkit_dom_audio_track_list_item(WebKitDOMAudioTrackList*, gulong)
</span><span class="lines">@@ -1652,7 +1678,9 @@
</span><span class="cx"> void webkit_dom_text_track_remove_cue(WebKitDOMTextTrack*, WebKitDOMTextTrackCue*, GError**)
</span><span class="cx"> gboolean webkit_dom_text_track_dispatch_event(WebKitDOMTextTrack*, WebKitDOMEvent*, GError**)
</span><span class="cx"> gchar* webkit_dom_text_track_get_id(WebKitDOMTextTrack*)
</span><ins>+gchar* webkit_dom_text_track_get_kind(WebKitDOMTextTrack*)
</ins><span class="cx"> gchar* webkit_dom_text_track_get_label(WebKitDOMTextTrack*)
</span><ins>+gchar* webkit_dom_text_track_get_language(WebKitDOMTextTrack*)
</ins><span class="cx"> gchar* webkit_dom_text_track_get_mode(WebKitDOMTextTrack*)
</span><span class="cx"> void webkit_dom_text_track_set_mode(WebKitDOMTextTrack*, const gchar*)
</span><span class="cx"> WebKitDOMTextTrackCueList* webkit_dom_text_track_get_cues(WebKitDOMTextTrack*)
</span><span class="lines">@@ -1690,7 +1718,9 @@
</span><span class="cx"> WebKitDOMTextTrackCue* webkit_dom_text_track_cue_list_get_cue_by_id(WebKitDOMTextTrackCueList*, const gchar*)
</span><span class="cx"> gulong webkit_dom_text_track_cue_list_get_length(WebKitDOMTextTrackCueList*)
</span><span class="cx"> gchar* webkit_dom_video_track_get_id(WebKitDOMVideoTrack*)
</span><ins>+gchar* webkit_dom_video_track_get_kind(WebKitDOMVideoTrack*)
</ins><span class="cx"> gchar* webkit_dom_video_track_get_label(WebKitDOMVideoTrack*)
</span><ins>+gchar* webkit_dom_video_track_get_language(WebKitDOMVideoTrack*)
</ins><span class="cx"> gboolean webkit_dom_video_track_get_selected(WebKitDOMVideoTrack*)
</span><span class="cx"> void webkit_dom_video_track_set_selected(WebKitDOMVideoTrack*, gboolean)
</span><span class="cx"> WebKitDOMVideoTrack* webkit_dom_video_track_list_item(WebKitDOMVideoTrackList*, gulong)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsjsDictionaryh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/js/Dictionary.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/js/Dictionary.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/js/Dictionary.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -30,7 +30,7 @@
</span><span class="cx"> #include &quot;JSDictionary.h&quot;
</span><span class="cx"> #include &quot;JSEventListener.h&quot;
</span><span class="cx"> #include &quot;NotImplemented.h&quot;
</span><del>-#include &quot;ScriptValue.h&quot;
</del><ins>+#include &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="lines">@@ -92,7 +92,7 @@
</span><span class="cx">     if (!m_dictionary.isValid())
</span><span class="cx">         return 0;
</span><span class="cx"> 
</span><del>-    ScriptValue eventListener;
</del><ins>+    Deprecated::ScriptValue eventListener;
</ins><span class="cx">     if (!m_dictionary.tryGetProperty(propertyName, eventListener))
</span><span class="cx">         return 0;
</span><span class="cx">     if (eventListener.hasNoValue())
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsjsIDBBindingUtilitiescpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/js/IDBBindingUtilities.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/js/IDBBindingUtilities.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/js/IDBBindingUtilities.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -178,7 +178,7 @@
</span><span class="cx">     return currentValue;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static PassRefPtr&lt;IDBKey&gt; createIDBKeyFromScriptValueAndKeyPath(ExecState* exec, const ScriptValue&amp; value, const String&amp; keyPath)
</del><ins>+static PassRefPtr&lt;IDBKey&gt; createIDBKeyFromScriptValueAndKeyPath(ExecState* exec, const Deprecated::ScriptValue&amp; value, const String&amp; keyPath)
</ins><span class="cx"> {
</span><span class="cx">     Vector&lt;String&gt; keyPathElements;
</span><span class="cx">     IDBKeyPathParseError error;
</span><span class="lines">@@ -228,7 +228,7 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool injectIDBKeyIntoScriptValue(DOMRequestState* requestState, PassRefPtr&lt;IDBKey&gt; key, ScriptValue&amp; value, const IDBKeyPath&amp; keyPath)
</del><ins>+bool injectIDBKeyIntoScriptValue(DOMRequestState* requestState, PassRefPtr&lt;IDBKey&gt; key, Deprecated::ScriptValue&amp; value, const IDBKeyPath&amp; keyPath)
</ins><span class="cx"> {
</span><span class="cx">     LOG(StorageAPI, &quot;injectIDBKeyIntoScriptValue&quot;);
</span><span class="cx"> 
</span><span class="lines">@@ -254,7 +254,7 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;IDBKey&gt; createIDBKeyFromScriptValueAndKeyPath(DOMRequestState* requestState, const ScriptValue&amp; value, const IDBKeyPath&amp; keyPath)
</del><ins>+PassRefPtr&lt;IDBKey&gt; createIDBKeyFromScriptValueAndKeyPath(DOMRequestState* requestState, const Deprecated::ScriptValue&amp; value, const IDBKeyPath&amp; keyPath)
</ins><span class="cx"> {
</span><span class="cx">     LOG(StorageAPI, &quot;createIDBKeyFromScriptValueAndKeyPath&quot;);
</span><span class="cx">     ASSERT(!keyPath.isNull());
</span><span class="lines">@@ -277,7 +277,7 @@
</span><span class="cx">     return createIDBKeyFromScriptValueAndKeyPath(exec, value, keyPath.string());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool canInjectIDBKeyIntoScriptValue(DOMRequestState* requestState, const ScriptValue&amp; scriptValue, const IDBKeyPath&amp; keyPath)
</del><ins>+bool canInjectIDBKeyIntoScriptValue(DOMRequestState* requestState, const Deprecated::ScriptValue&amp; scriptValue, const IDBKeyPath&amp; keyPath)
</ins><span class="cx"> {
</span><span class="cx">     LOG(StorageAPI, &quot;canInjectIDBKeyIntoScriptValue&quot;);
</span><span class="cx"> 
</span><span class="lines">@@ -294,16 +294,16 @@
</span><span class="cx">     return canInjectNthValueOnKeyPath(exec, scriptValue.jsValue(), keyPathElements, keyPathElements.size() - 1);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-ScriptValue deserializeIDBValue(DOMRequestState* requestState, PassRefPtr&lt;SerializedScriptValue&gt; prpValue)
</del><ins>+Deprecated::ScriptValue deserializeIDBValue(DOMRequestState* requestState, PassRefPtr&lt;SerializedScriptValue&gt; prpValue)
</ins><span class="cx"> {
</span><span class="cx">     ExecState* exec = requestState-&gt;exec();
</span><span class="cx">     RefPtr&lt;SerializedScriptValue&gt; serializedValue = prpValue;
</span><span class="cx">     if (serializedValue)
</span><del>-        return ScriptValue::deserialize(exec, serializedValue.get(), NonThrowing);
-    return ScriptValue(exec-&gt;vm(), jsNull());
</del><ins>+        return SerializedScriptValue::deserialize(exec, serializedValue.get(), NonThrowing);
+    return Deprecated::ScriptValue(exec-&gt;vm(), jsNull());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-ScriptValue deserializeIDBValueBuffer(DOMRequestState* requestState, PassRefPtr&lt;SharedBuffer&gt; prpBuffer)
</del><ins>+Deprecated::ScriptValue deserializeIDBValueBuffer(DOMRequestState* requestState, PassRefPtr&lt;SharedBuffer&gt; prpBuffer)
</ins><span class="cx"> {
</span><span class="cx">     ExecState* exec = requestState-&gt;exec();
</span><span class="cx">     RefPtr&lt;SharedBuffer&gt; buffer = prpBuffer;
</span><span class="lines">@@ -312,18 +312,18 @@
</span><span class="cx">         Vector&lt;uint8_t&gt; value;
</span><span class="cx">         value.append(buffer-&gt;data(), buffer-&gt;size());
</span><span class="cx">         RefPtr&lt;SerializedScriptValue&gt; serializedValue = SerializedScriptValue::createFromWireBytes(value);
</span><del>-        return ScriptValue::deserialize(exec, serializedValue.get(), NonThrowing);
</del><ins>+        return SerializedScriptValue::deserialize(exec, serializedValue.get(), NonThrowing);
</ins><span class="cx">     }
</span><del>-    return ScriptValue(exec-&gt;vm(), jsNull());
</del><ins>+    return Deprecated::ScriptValue(exec-&gt;vm(), jsNull());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-ScriptValue idbKeyToScriptValue(DOMRequestState* requestState, PassRefPtr&lt;IDBKey&gt; key)
</del><ins>+Deprecated::ScriptValue idbKeyToScriptValue(DOMRequestState* requestState, PassRefPtr&lt;IDBKey&gt; key)
</ins><span class="cx"> {
</span><span class="cx">     ExecState* exec = requestState-&gt;exec();
</span><del>-    return ScriptValue(exec-&gt;vm(), idbKeyToJSValue(exec, jsCast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject()), key.get()));
</del><ins>+    return Deprecated::ScriptValue(exec-&gt;vm(), idbKeyToJSValue(exec, jsCast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject()), key.get()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;IDBKey&gt; scriptValueToIDBKey(DOMRequestState* requestState, const ScriptValue&amp; scriptValue)
</del><ins>+PassRefPtr&lt;IDBKey&gt; scriptValueToIDBKey(DOMRequestState* requestState, const Deprecated::ScriptValue&amp; scriptValue)
</ins><span class="cx"> {
</span><span class="cx">     ExecState* exec = requestState-&gt;exec();
</span><span class="cx">     return createIDBKeyFromValue(exec, scriptValue.jsValue());
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsjsIDBBindingUtilitiesh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/js/IDBBindingUtilities.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/js/IDBBindingUtilities.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/js/IDBBindingUtilities.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -29,7 +29,7 @@
</span><span class="cx"> #if ENABLE(INDEXED_DATABASE)
</span><span class="cx"> 
</span><span class="cx"> #include &quot;Dictionary.h&quot;
</span><del>-#include &quot;ScriptValue.h&quot;
</del><ins>+#include &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -41,13 +41,13 @@
</span><span class="cx"> 
</span><span class="cx"> IDBKeyPath idbKeyPathFromValue(JSC::ExecState*, JSC::JSValue);
</span><span class="cx"> 
</span><del>-bool injectIDBKeyIntoScriptValue(DOMRequestState*, PassRefPtr&lt;IDBKey&gt;, ScriptValue&amp;, const IDBKeyPath&amp;);
-PassRefPtr&lt;IDBKey&gt; createIDBKeyFromScriptValueAndKeyPath(DOMRequestState*, const ScriptValue&amp;, const IDBKeyPath&amp;);
-bool canInjectIDBKeyIntoScriptValue(DOMRequestState*, const ScriptValue&amp;, const IDBKeyPath&amp;);
-ScriptValue deserializeIDBValue(DOMRequestState*, PassRefPtr&lt;SerializedScriptValue&gt;);
-ScriptValue deserializeIDBValueBuffer(DOMRequestState*, PassRefPtr&lt;SharedBuffer&gt;);
-ScriptValue idbKeyToScriptValue(DOMRequestState*, PassRefPtr&lt;IDBKey&gt;);
-PassRefPtr&lt;IDBKey&gt; scriptValueToIDBKey(DOMRequestState*, const ScriptValue&amp;);
</del><ins>+bool injectIDBKeyIntoScriptValue(DOMRequestState*, PassRefPtr&lt;IDBKey&gt;, Deprecated::ScriptValue&amp;, const IDBKeyPath&amp;);
+PassRefPtr&lt;IDBKey&gt; createIDBKeyFromScriptValueAndKeyPath(DOMRequestState*, const Deprecated::ScriptValue&amp;, const IDBKeyPath&amp;);
+bool canInjectIDBKeyIntoScriptValue(DOMRequestState*, const Deprecated::ScriptValue&amp;, const IDBKeyPath&amp;);
+Deprecated::ScriptValue deserializeIDBValue(DOMRequestState*, PassRefPtr&lt;SerializedScriptValue&gt;);
+Deprecated::ScriptValue deserializeIDBValueBuffer(DOMRequestState*, PassRefPtr&lt;SharedBuffer&gt;);
+Deprecated::ScriptValue idbKeyToScriptValue(DOMRequestState*, PassRefPtr&lt;IDBKey&gt;);
+PassRefPtr&lt;IDBKey&gt; scriptValueToIDBKey(DOMRequestState*, const Deprecated::ScriptValue&amp;);
</ins><span class="cx"> 
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsjsJSBindingsAllInOnecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/js/JSBindingsAllInOne.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/js/JSBindingsAllInOne.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/js/JSBindingsAllInOne.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -149,7 +149,6 @@
</span><span class="cx"> #include &quot;ScriptCallStackFactory.cpp&quot;
</span><span class="cx"> #include &quot;ScriptController.cpp&quot;
</span><span class="cx"> #include &quot;ScriptDebugServer.cpp&quot;
</span><del>-#include &quot;ScriptFunctionCall.cpp&quot;
</del><span class="cx"> #include &quot;ScriptProfiler.cpp&quot;
</span><span class="cx"> #include &quot;ScriptState.cpp&quot;
</span><span class="cx"> #include &quot;SerializedScriptValue.cpp&quot;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsjsJSCryptoAlgorithmDictionarycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/js/JSCryptoAlgorithmDictionary.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/js/JSCryptoAlgorithmDictionary.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/js/JSCryptoAlgorithmDictionary.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -301,6 +301,7 @@
</span><span class="cx"> {
</span><span class="cx">     switch (algorithm) {
</span><span class="cx">     case CryptoAlgorithmIdentifier::RSAES_PKCS1_v1_5:
</span><ins>+        return std::make_unique&lt;CryptoAlgorithmParameters&gt;();
</ins><span class="cx">     case CryptoAlgorithmIdentifier::RSASSA_PKCS1_v1_5:
</span><span class="cx">     case CryptoAlgorithmIdentifier::RSA_PSS:
</span><span class="cx">         setDOMException(exec, NOT_SUPPORTED_ERR);
</span><span class="lines">@@ -317,6 +318,10 @@
</span><span class="cx">     case CryptoAlgorithmIdentifier::AES_CMAC:
</span><span class="cx">     case CryptoAlgorithmIdentifier::AES_GCM:
</span><span class="cx">     case CryptoAlgorithmIdentifier::AES_CFB:
</span><ins>+        setDOMException(exec, NOT_SUPPORTED_ERR);
+        return nullptr;
+    case CryptoAlgorithmIdentifier::AES_KW:
+        return std::make_unique&lt;CryptoAlgorithmParameters&gt;();
</ins><span class="cx">     case CryptoAlgorithmIdentifier::HMAC:
</span><span class="cx">     case CryptoAlgorithmIdentifier::DH:
</span><span class="cx">     case CryptoAlgorithmIdentifier::SHA_1:
</span><span class="lines">@@ -329,8 +334,6 @@
</span><span class="cx">     case CryptoAlgorithmIdentifier::PBKDF2:
</span><span class="cx">         setDOMException(exec, NOT_SUPPORTED_ERR);
</span><span class="cx">         return nullptr;
</span><del>-    case CryptoAlgorithmIdentifier::AES_KW:
-        return std::make_unique&lt;CryptoAlgorithmParameters&gt;();
</del><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -338,6 +341,7 @@
</span><span class="cx"> {
</span><span class="cx">     switch (algorithm) {
</span><span class="cx">     case CryptoAlgorithmIdentifier::RSAES_PKCS1_v1_5:
</span><ins>+        return std::make_unique&lt;CryptoAlgorithmParameters&gt;();
</ins><span class="cx">     case CryptoAlgorithmIdentifier::RSASSA_PKCS1_v1_5:
</span><span class="cx">     case CryptoAlgorithmIdentifier::RSA_PSS:
</span><span class="cx">         setDOMException(exec, NOT_SUPPORTED_ERR);
</span><span class="lines">@@ -354,6 +358,10 @@
</span><span class="cx">     case CryptoAlgorithmIdentifier::AES_CMAC:
</span><span class="cx">     case CryptoAlgorithmIdentifier::AES_GCM:
</span><span class="cx">     case CryptoAlgorithmIdentifier::AES_CFB:
</span><ins>+        setDOMException(exec, NOT_SUPPORTED_ERR);
+        return nullptr;
+    case CryptoAlgorithmIdentifier::AES_KW:
+        return std::make_unique&lt;CryptoAlgorithmParameters&gt;();
</ins><span class="cx">     case CryptoAlgorithmIdentifier::HMAC:
</span><span class="cx">     case CryptoAlgorithmIdentifier::DH:
</span><span class="cx">     case CryptoAlgorithmIdentifier::SHA_1:
</span><span class="lines">@@ -366,8 +374,6 @@
</span><span class="cx">     case CryptoAlgorithmIdentifier::PBKDF2:
</span><span class="cx">         setDOMException(exec, NOT_SUPPORTED_ERR);
</span><span class="cx">         return nullptr;
</span><del>-    case CryptoAlgorithmIdentifier::AES_KW:
-        return std::make_unique&lt;CryptoAlgorithmParameters&gt;();
</del><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -388,6 +394,7 @@
</span><span class="cx">     case CryptoAlgorithmIdentifier::AES_CMAC:
</span><span class="cx">     case CryptoAlgorithmIdentifier::AES_GCM:
</span><span class="cx">     case CryptoAlgorithmIdentifier::AES_CFB:
</span><ins>+    case CryptoAlgorithmIdentifier::AES_KW:
</ins><span class="cx">         setDOMException(exec, NOT_SUPPORTED_ERR);
</span><span class="cx">         return nullptr;
</span><span class="cx">     case CryptoAlgorithmIdentifier::HMAC:
</span><span class="lines">@@ -401,7 +408,6 @@
</span><span class="cx">     case CryptoAlgorithmIdentifier::CONCAT:
</span><span class="cx">     case CryptoAlgorithmIdentifier::HKDF_CTR:
</span><span class="cx">     case CryptoAlgorithmIdentifier::PBKDF2:
</span><del>-    case CryptoAlgorithmIdentifier::AES_KW:
</del><span class="cx">         setDOMException(exec, NOT_SUPPORTED_ERR);
</span><span class="cx">         return nullptr;
</span><span class="cx">     }
</span><span class="lines">@@ -424,6 +430,7 @@
</span><span class="cx">     case CryptoAlgorithmIdentifier::AES_CMAC:
</span><span class="cx">     case CryptoAlgorithmIdentifier::AES_GCM:
</span><span class="cx">     case CryptoAlgorithmIdentifier::AES_CFB:
</span><ins>+    case CryptoAlgorithmIdentifier::AES_KW:
</ins><span class="cx">         setDOMException(exec, NOT_SUPPORTED_ERR);
</span><span class="cx">         return nullptr;
</span><span class="cx">     case CryptoAlgorithmIdentifier::HMAC:
</span><span class="lines">@@ -437,7 +444,6 @@
</span><span class="cx">     case CryptoAlgorithmIdentifier::CONCAT:
</span><span class="cx">     case CryptoAlgorithmIdentifier::HKDF_CTR:
</span><span class="cx">     case CryptoAlgorithmIdentifier::PBKDF2:
</span><del>-    case CryptoAlgorithmIdentifier::AES_KW:
</del><span class="cx">         setDOMException(exec, NOT_SUPPORTED_ERR);
</span><span class="cx">         return nullptr;
</span><span class="cx">     }
</span><span class="lines">@@ -457,6 +463,7 @@
</span><span class="cx">     case CryptoAlgorithmIdentifier::AES_CMAC:
</span><span class="cx">     case CryptoAlgorithmIdentifier::AES_GCM:
</span><span class="cx">     case CryptoAlgorithmIdentifier::AES_CFB:
</span><ins>+    case CryptoAlgorithmIdentifier::AES_KW:
</ins><span class="cx">     case CryptoAlgorithmIdentifier::HMAC:
</span><span class="cx">     case CryptoAlgorithmIdentifier::DH:
</span><span class="cx">         setDOMException(exec, NOT_SUPPORTED_ERR);
</span><span class="lines">@@ -470,7 +477,6 @@
</span><span class="cx">     case CryptoAlgorithmIdentifier::CONCAT:
</span><span class="cx">     case CryptoAlgorithmIdentifier::HKDF_CTR:
</span><span class="cx">     case CryptoAlgorithmIdentifier::PBKDF2:
</span><del>-    case CryptoAlgorithmIdentifier::AES_KW:
</del><span class="cx">         setDOMException(exec, NOT_SUPPORTED_ERR);
</span><span class="cx">         return nullptr;
</span><span class="cx">     }
</span><span class="lines">@@ -493,6 +499,7 @@
</span><span class="cx">     case CryptoAlgorithmIdentifier::AES_CMAC:
</span><span class="cx">     case CryptoAlgorithmIdentifier::AES_GCM:
</span><span class="cx">     case CryptoAlgorithmIdentifier::AES_CFB:
</span><ins>+    case CryptoAlgorithmIdentifier::AES_KW:
</ins><span class="cx">         return createAesKeyGenParams(exec, value);
</span><span class="cx">     case CryptoAlgorithmIdentifier::HMAC:
</span><span class="cx">         return createHmacKeyParams(exec, value);
</span><span class="lines">@@ -507,8 +514,6 @@
</span><span class="cx">     case CryptoAlgorithmIdentifier::PBKDF2:
</span><span class="cx">         setDOMException(exec, NOT_SUPPORTED_ERR);
</span><span class="cx">         return nullptr;
</span><del>-    case CryptoAlgorithmIdentifier::AES_KW:
-        return createAesKeyGenParams(exec, value);
</del><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -526,6 +531,7 @@
</span><span class="cx">     case CryptoAlgorithmIdentifier::AES_CMAC:
</span><span class="cx">     case CryptoAlgorithmIdentifier::AES_GCM:
</span><span class="cx">     case CryptoAlgorithmIdentifier::AES_CFB:
</span><ins>+    case CryptoAlgorithmIdentifier::AES_KW:
</ins><span class="cx">     case CryptoAlgorithmIdentifier::HMAC:
</span><span class="cx">     case CryptoAlgorithmIdentifier::DH:
</span><span class="cx">     case CryptoAlgorithmIdentifier::SHA_1:
</span><span class="lines">@@ -536,7 +542,6 @@
</span><span class="cx">     case CryptoAlgorithmIdentifier::CONCAT:
</span><span class="cx">     case CryptoAlgorithmIdentifier::HKDF_CTR:
</span><span class="cx">     case CryptoAlgorithmIdentifier::PBKDF2:
</span><del>-    case CryptoAlgorithmIdentifier::AES_KW:
</del><span class="cx">         setDOMException(exec, NOT_SUPPORTED_ERR);
</span><span class="cx">         return nullptr;
</span><span class="cx">     }
</span><span class="lines">@@ -556,6 +561,7 @@
</span><span class="cx">     case CryptoAlgorithmIdentifier::AES_CMAC:
</span><span class="cx">     case CryptoAlgorithmIdentifier::AES_GCM:
</span><span class="cx">     case CryptoAlgorithmIdentifier::AES_CFB:
</span><ins>+    case CryptoAlgorithmIdentifier::AES_KW:
</ins><span class="cx">     case CryptoAlgorithmIdentifier::HMAC:
</span><span class="cx">     case CryptoAlgorithmIdentifier::DH:
</span><span class="cx">     case CryptoAlgorithmIdentifier::SHA_1:
</span><span class="lines">@@ -566,7 +572,6 @@
</span><span class="cx">     case CryptoAlgorithmIdentifier::CONCAT:
</span><span class="cx">     case CryptoAlgorithmIdentifier::HKDF_CTR:
</span><span class="cx">     case CryptoAlgorithmIdentifier::PBKDF2:
</span><del>-    case CryptoAlgorithmIdentifier::AES_KW:
</del><span class="cx">         setDOMException(exec, NOT_SUPPORTED_ERR);
</span><span class="cx">         return nullptr;
</span><span class="cx">     }
</span><span class="lines">@@ -590,6 +595,7 @@
</span><span class="cx">     case CryptoAlgorithmIdentifier::AES_CMAC:
</span><span class="cx">     case CryptoAlgorithmIdentifier::AES_GCM:
</span><span class="cx">     case CryptoAlgorithmIdentifier::AES_CFB:
</span><ins>+    case CryptoAlgorithmIdentifier::AES_KW:
</ins><span class="cx">         return std::make_unique&lt;CryptoAlgorithmParameters&gt;();
</span><span class="cx">     case CryptoAlgorithmIdentifier::HMAC:
</span><span class="cx">         return createHmacParams(exec, value);
</span><span class="lines">@@ -605,8 +611,6 @@
</span><span class="cx">     case CryptoAlgorithmIdentifier::PBKDF2:
</span><span class="cx">         setDOMException(exec, NOT_SUPPORTED_ERR);
</span><span class="cx">         return nullptr;
</span><del>-    case CryptoAlgorithmIdentifier::AES_KW:
-        return std::make_unique&lt;CryptoAlgorithmParameters&gt;();
</del><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -624,6 +628,7 @@
</span><span class="cx">     case CryptoAlgorithmIdentifier::AES_CMAC:
</span><span class="cx">     case CryptoAlgorithmIdentifier::AES_GCM:
</span><span class="cx">     case CryptoAlgorithmIdentifier::AES_CFB:
</span><ins>+    case CryptoAlgorithmIdentifier::AES_KW:
</ins><span class="cx">     case CryptoAlgorithmIdentifier::HMAC:
</span><span class="cx">     case CryptoAlgorithmIdentifier::DH:
</span><span class="cx">         return std::make_unique&lt;CryptoAlgorithmParameters&gt;();
</span><span class="lines">@@ -637,8 +642,6 @@
</span><span class="cx">     case CryptoAlgorithmIdentifier::PBKDF2:
</span><span class="cx">         setDOMException(exec, NOT_SUPPORTED_ERR);
</span><span class="cx">         return nullptr;
</span><del>-    case CryptoAlgorithmIdentifier::AES_KW:
-        return std::make_unique&lt;CryptoAlgorithmParameters&gt;();
</del><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsjsJSCryptoKeySerializationJWKcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/js/JSCryptoKeySerializationJWK.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/js/JSCryptoKeySerializationJWK.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/js/JSCryptoKeySerializationJWK.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -190,6 +190,9 @@
</span><span class="cx">     } else if (m_jwkAlgorithmName == &quot;RS512&quot;) {
</span><span class="cx">         algorithm = CryptoAlgorithmRegistry::shared().create(CryptoAlgorithmIdentifier::RSASSA_PKCS1_v1_5);
</span><span class="cx">         parameters = createRSAKeyParametersWithHash(CryptoAlgorithmIdentifier::SHA_512);
</span><ins>+    } else if (m_jwkAlgorithmName == &quot;RSA1_5&quot;) {
+        algorithm = CryptoAlgorithmRegistry::shared().create(CryptoAlgorithmIdentifier::RSAES_PKCS1_v1_5);
+        parameters = std::make_unique&lt;CryptoAlgorithmParameters&gt;();
</ins><span class="cx">     } else if (m_jwkAlgorithmName == &quot;RSA-OAEP&quot;) {
</span><span class="cx">         algorithm = CryptoAlgorithmRegistry::shared().create(CryptoAlgorithmIdentifier::RSA_OAEP);
</span><span class="cx">         parameters = createRSAKeyParametersWithHash(CryptoAlgorithmIdentifier::SHA_1);
</span><span class="lines">@@ -321,6 +324,8 @@
</span><span class="cx">         return sizeInBits &gt;= 2048;
</span><span class="cx">     if (m_jwkAlgorithmName == &quot;RS512&quot;)
</span><span class="cx">         return sizeInBits &gt;= 2048;
</span><ins>+    if (m_jwkAlgorithmName == &quot;RSA1_5&quot;)
+        return sizeInBits &gt;= 2048;
</ins><span class="cx">     if (m_jwkAlgorithmName == &quot;RSA_OAEP&quot;)
</span><span class="cx">         return sizeInBits &gt;= 2048;
</span><span class="cx">     return true;
</span><span class="lines">@@ -591,6 +596,13 @@
</span><span class="cx">         }
</span><span class="cx">         break;
</span><span class="cx">     }
</span><ins>+    case CryptoAlgorithmIdentifier::RSAES_PKCS1_v1_5: {
+        const CryptoKeyRSA&amp; rsaKey = toCryptoKeyRSA(key);
+        if (rsaKey.keySizeInBits() &lt; 2048)
+            break;
+        jwkAlgorithm = &quot;RSA1_5&quot;;
+        break;
+    }
</ins><span class="cx">     case CryptoAlgorithmIdentifier::RSA_OAEP: {
</span><span class="cx">         const CryptoKeyRSA&amp; rsaKey = toCryptoKeyRSA(key);
</span><span class="cx">         CryptoAlgorithmIdentifier hash;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsjsJSDOMBindingh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/js/JSDOMBinding.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/js/JSDOMBinding.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/js/JSDOMBinding.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -371,7 +371,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename T&gt;
</span><del>-inline JSC::JSValue toJS(JSC::ExecState* exec, JSDOMGlobalObject* globalObject, Vector&lt;T&gt; vector)
</del><ins>+inline JSC::JSValue toJS(JSC::ExecState* exec, JSDOMGlobalObject* globalObject, const Vector&lt;T&gt;&amp; vector)
</ins><span class="cx"> {
</span><span class="cx">     JSC::JSArray* array = constructEmptyArray(exec, 0, vector.size());
</span><span class="cx"> 
</span><span class="lines">@@ -382,7 +382,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename T&gt;
</span><del>-inline JSC::JSValue toJS(JSC::ExecState* exec, JSDOMGlobalObject* globalObject, Vector&lt;RefPtr&lt;T&gt;&gt; vector)
</del><ins>+inline JSC::JSValue toJS(JSC::ExecState* exec, JSDOMGlobalObject* globalObject, const Vector&lt;RefPtr&lt;T&gt;&gt;&amp; vector)
</ins><span class="cx"> {
</span><span class="cx">     JSC::JSArray* array = constructEmptyArray(exec, 0, vector.size());
</span><span class="cx"> 
</span><span class="lines">@@ -513,10 +513,12 @@
</span><span class="cx"> 
</span><span class="cx">     Vector&lt;RefPtr&lt;T&gt;&gt; result;
</span><span class="cx">     JSC::JSArray* array = asArray(value);
</span><del>-    for (size_t i = 0; i &lt; array-&gt;length(); ++i) {
</del><ins>+    size_t size = array-&gt;length();
+    result.reserveInitialCapacity(size);
+    for (size_t i = 0; i &lt; size; ++i) {
</ins><span class="cx">         JSC::JSValue element = array-&gt;getIndex(exec, i);
</span><span class="cx">         if (element.inherits(JST::info()))
</span><del>-            result.append((*toT)(element));
</del><ins>+            result.uncheckedAppend((*toT)(element));
</ins><span class="cx">         else {
</span><span class="cx">             throwVMError(exec, createTypeError(exec, &quot;Invalid Array element type&quot;));
</span><span class="cx">             return Vector&lt;RefPtr&lt;T&gt;&gt;();
</span><span class="lines">@@ -537,13 +539,14 @@
</span><span class="cx"> 
</span><span class="cx">     JSC::JSObject* object = value.getObject();
</span><span class="cx">     Vector&lt;T&gt; result;
</span><ins>+    result.reserveInitialCapacity(length);
</ins><span class="cx">     typedef NativeValueTraits&lt;T&gt; TraitsType;
</span><span class="cx"> 
</span><span class="cx">     for (unsigned i = 0; i &lt; length; ++i) {
</span><span class="cx">         T indexValue;
</span><span class="cx">         if (!TraitsType::nativeValue(exec, object-&gt;get(exec, i), indexValue))
</span><span class="cx">             return Vector&lt;T&gt;();
</span><del>-        result.append(indexValue);
</del><ins>+        result.uncheckedAppend(indexValue);
</ins><span class="cx">     }
</span><span class="cx">     return result;
</span><span class="cx"> }
</span><span class="lines">@@ -555,13 +558,14 @@
</span><span class="cx">     ASSERT(startIndex &lt;= length);
</span><span class="cx"> 
</span><span class="cx">     Vector&lt;T&gt; result;
</span><ins>+    result.reserveInitialCapacity(length);
</ins><span class="cx">     typedef NativeValueTraits&lt;T&gt; TraitsType;
</span><span class="cx"> 
</span><span class="cx">     for (size_t i = startIndex; i &lt; length; ++i) {
</span><span class="cx">         T indexValue;
</span><span class="cx">         if (!TraitsType::nativeValue(exec, exec-&gt;argument(i), indexValue))
</span><span class="cx">             return Vector&lt;T&gt;();
</span><del>-        result.append(indexValue);
</del><ins>+        result.uncheckedAppend(indexValue);
</ins><span class="cx">     }
</span><span class="cx">     return result;
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsjsJSDictionarycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/js/JSDictionary.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/js/JSDictionary.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/js/JSDictionary.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -37,7 +37,6 @@
</span><span class="cx"> #include &quot;JSStorage.h&quot;
</span><span class="cx"> #include &quot;JSTrackCustom.h&quot;
</span><span class="cx"> #include &quot;JSVoidCallback.h&quot;
</span><del>-#include &quot;ScriptValue.h&quot;
</del><span class="cx"> #include &quot;SerializedScriptValue.h&quot;
</span><span class="cx"> #include &lt;runtime/JSTypedArrays.h&gt;
</span><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="lines">@@ -144,9 +143,9 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void JSDictionary::convertValue(ExecState* exec, JSValue value, ScriptValue&amp; result)
</del><ins>+void JSDictionary::convertValue(ExecState* exec, JSValue value, Deprecated::ScriptValue&amp; result)
</ins><span class="cx"> {
</span><del>-    result = ScriptValue(exec-&gt;vm(), value);
</del><ins>+    result = Deprecated::ScriptValue(exec-&gt;vm(), value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void JSDictionary::convertValue(ExecState* exec, JSValue value, RefPtr&lt;SerializedScriptValue&gt;&amp; result)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsjsJSDictionaryh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/js/JSDictionary.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/js/JSDictionary.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/js/JSDictionary.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -34,6 +34,10 @@
</span><span class="cx"> #include &lt;runtime/Uint8Array.h&gt;
</span><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><span class="cx"> 
</span><ins>+namespace Deprecated {
+class ScriptValue;
+}
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class ArrayValue;
</span><span class="lines">@@ -46,7 +50,6 @@
</span><span class="cx"> class MediaStream;
</span><span class="cx"> class MediaStreamTrack;
</span><span class="cx"> class Node;
</span><del>-class ScriptValue;
</del><span class="cx"> class SerializedScriptValue;
</span><span class="cx"> class Storage;
</span><span class="cx"> class TrackBase;
</span><span class="lines">@@ -108,7 +111,7 @@
</span><span class="cx">     static void convertValue(JSC::ExecState*, JSC::JSValue, double&amp; result);
</span><span class="cx">     static void convertValue(JSC::ExecState*, JSC::JSValue, Dictionary&amp; result);
</span><span class="cx">     static void convertValue(JSC::ExecState*, JSC::JSValue, String&amp; result);
</span><del>-    static void convertValue(JSC::ExecState*, JSC::JSValue, ScriptValue&amp; result);
</del><ins>+    static void convertValue(JSC::ExecState*, JSC::JSValue, Deprecated::ScriptValue&amp; result);
</ins><span class="cx">     static void convertValue(JSC::ExecState*, JSC::JSValue, Vector&lt;String&gt;&amp; result);
</span><span class="cx">     static void convertValue(JSC::ExecState*, JSC::JSValue, RefPtr&lt;SerializedScriptValue&gt;&amp; result);
</span><span class="cx">     static void convertValue(JSC::ExecState*, JSC::JSValue, RefPtr&lt;DOMWindow&gt;&amp; result);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsjsJSHTMLCanvasElementCustomcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/js/JSHTMLCanvasElementCustom.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/js/JSHTMLCanvasElementCustom.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/js/JSHTMLCanvasElementCustom.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -31,13 +31,14 @@
</span><span class="cx"> #include &quot;HTMLCanvasElement.h&quot;
</span><span class="cx"> #include &quot;InspectorCanvasInstrumentation.h&quot;
</span><span class="cx"> #include &quot;JSCanvasRenderingContext2D.h&quot;
</span><del>-#include &quot;ScriptObject.h&quot;
</del><ins>+#include &lt;bindings/ScriptObject.h&gt;
+#include &lt;wtf/GetPtr.h&gt;
+
</ins><span class="cx"> #if ENABLE(WEBGL)
</span><span class="cx"> #include &quot;JSDictionary.h&quot;
</span><span class="cx"> #include &quot;JSWebGLRenderingContext.h&quot;
</span><span class="cx"> #include &quot;WebGLContextAttributes.h&quot;
</span><span class="cx"> #endif
</span><del>-#include &lt;wtf/GetPtr.h&gt;
</del><span class="cx"> 
</span><span class="cx"> using namespace JSC;
</span><span class="cx"> 
</span><span class="lines">@@ -85,8 +86,8 @@
</span><span class="cx">         return jsNull();
</span><span class="cx">     JSValue jsValue = toJS(exec, globalObject(), WTF::getPtr(context));
</span><span class="cx">     if (InspectorInstrumentation::canvasAgentEnabled(&amp;canvas.document())) {
</span><del>-        ScriptObject contextObject(exec, jsValue.getObject());
-        ScriptObject wrapped;
</del><ins>+        Deprecated::ScriptObject contextObject(exec, jsValue.getObject());
+        Deprecated::ScriptObject wrapped;
</ins><span class="cx">         if (context-&gt;is2d())
</span><span class="cx">             wrapped = InspectorInstrumentation::wrapCanvas2DRenderingContextForInstrumentation(&amp;canvas.document(), contextObject);
</span><span class="cx"> #if ENABLE(WEBGL)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsjsJSInjectedScriptHostCustomcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/js/JSInjectedScriptHostCustom.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/js/JSInjectedScriptHostCustom.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/js/JSInjectedScriptHostCustom.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -44,15 +44,15 @@
</span><span class="cx"> #include &quot;InjectedScriptHost.h&quot;
</span><span class="cx"> #include &quot;InspectorDOMAgent.h&quot;
</span><span class="cx"> #include &quot;InspectorDebuggerAgent.h&quot;
</span><del>-#include &quot;InspectorValues.h&quot;
</del><span class="cx"> #include &quot;JSEventListener.h&quot;
</span><span class="cx"> #include &quot;JSHTMLAllCollection.h&quot;
</span><span class="cx"> #include &quot;JSHTMLCollection.h&quot;
</span><span class="cx"> #include &quot;JSNode.h&quot;
</span><span class="cx"> #include &quot;JSNodeList.h&quot;
</span><span class="cx"> #include &quot;JSStorage.h&quot;
</span><del>-#include &quot;ScriptValue.h&quot;
</del><span class="cx"> #include &quot;Storage.h&quot;
</span><ins>+#include &lt;bindings/ScriptValue.h&gt;
+#include &lt;inspector/InspectorValues.h&gt;
</ins><span class="cx"> #include &lt;parser/SourceCode.h&gt;
</span><span class="cx"> #include &lt;runtime/DateInstance.h&gt;
</span><span class="cx"> #include &lt;runtime/Error.h&gt;
</span><span class="lines">@@ -69,20 +69,20 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-Node* InjectedScriptHost::scriptValueAsNode(ScriptValue value)
</del><ins>+Node* InjectedScriptHost::scriptValueAsNode(Deprecated::ScriptValue value)
</ins><span class="cx"> {
</span><span class="cx">     if (!value.isObject() || value.isNull())
</span><span class="cx">         return 0;
</span><span class="cx">     return toNode(value.jsValue());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-ScriptValue InjectedScriptHost::nodeAsScriptValue(JSC::ExecState* state, Node* node)
</del><ins>+Deprecated::ScriptValue InjectedScriptHost::nodeAsScriptValue(JSC::ExecState* state, Node* node)
</ins><span class="cx"> {
</span><span class="cx">     if (!shouldAllowAccessToNode(state, node))
</span><del>-        return ScriptValue(state-&gt;vm(), jsNull());
</del><ins>+        return Deprecated::ScriptValue(state-&gt;vm(), jsNull());
</ins><span class="cx"> 
</span><span class="cx">     JSLockHolder lock(state);
</span><del>-    return ScriptValue(state-&gt;vm(), toJS(state, deprecatedGlobalObjectForPrototype(state), node));
</del><ins>+    return Deprecated::ScriptValue(state-&gt;vm(), toJS(state, deprecatedGlobalObjectForPrototype(state), node));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSValue JSInjectedScriptHost::inspectedObject(ExecState* exec)
</span><span class="lines">@@ -95,7 +95,7 @@
</span><span class="cx">         return jsUndefined();
</span><span class="cx"> 
</span><span class="cx">     JSLockHolder lock(exec);
</span><del>-    ScriptValue scriptValue = object-&gt;get(exec);
</del><ins>+    Deprecated::ScriptValue scriptValue = object-&gt;get(exec);
</ins><span class="cx">     if (scriptValue.hasNoValue())
</span><span class="cx">         return jsUndefined();
</span><span class="cx"> 
</span><span class="lines">@@ -247,8 +247,8 @@
</span><span class="cx"> JSValue JSInjectedScriptHost::inspect(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     if (exec-&gt;argumentCount() &gt;= 2) {
</span><del>-        ScriptValue object(exec-&gt;vm(), exec-&gt;uncheckedArgument(0));
-        ScriptValue hints(exec-&gt;vm(), exec-&gt;uncheckedArgument(1));
</del><ins>+        Deprecated::ScriptValue object(exec-&gt;vm(), exec-&gt;uncheckedArgument(0));
+        Deprecated::ScriptValue hints(exec-&gt;vm(), exec-&gt;uncheckedArgument(1));
</ins><span class="cx">         impl().inspectImpl(object.toInspectorValue(exec), hints.toInspectorValue(exec));
</span><span class="cx">     }
</span><span class="cx">     return jsUndefined();
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsjsJSInjectedScriptManagercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/js/JSInjectedScriptManager.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/js/JSInjectedScriptManager.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/js/JSInjectedScriptManager.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -41,7 +41,7 @@
</span><span class="cx"> #include &quot;JSDOMWindowCustom.h&quot;
</span><span class="cx"> #include &quot;JSInjectedScriptHost.h&quot;
</span><span class="cx"> #include &quot;JSMainThreadExecState.h&quot;
</span><del>-#include &quot;ScriptObject.h&quot;
</del><ins>+#include &lt;bindings/ScriptObject.h&gt;
</ins><span class="cx"> #include &lt;parser/SourceCode.h&gt;
</span><span class="cx"> #include &lt;runtime/JSLock.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -49,7 +49,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-ScriptObject InjectedScriptManager::createInjectedScript(const String&amp; source, JSC::ExecState* scriptState, int id)
</del><ins>+Deprecated::ScriptObject InjectedScriptManager::createInjectedScript(const String&amp; source, JSC::ExecState* scriptState, int id)
</ins><span class="cx"> {
</span><span class="cx">     JSLockHolder lock(scriptState);
</span><span class="cx"> 
</span><span class="lines">@@ -66,13 +66,13 @@
</span><span class="cx">         evaluationReturnValue = JSC::evaluate(scriptState, sourceCode, globalThisValue, &amp;evaluationException);
</span><span class="cx">     }
</span><span class="cx">     if (evaluationException)
</span><del>-        return ScriptObject();
</del><ins>+        return Deprecated::ScriptObject();
</ins><span class="cx"> 
</span><span class="cx">     JSValue functionValue = evaluationReturnValue;
</span><span class="cx">     CallData callData;
</span><span class="cx">     CallType callType = getCallData(functionValue, callData);
</span><span class="cx">     if (callType == CallTypeNone)
</span><del>-        return ScriptObject();
</del><ins>+        return Deprecated::ScriptObject();
</ins><span class="cx"> 
</span><span class="cx">     MarkedArgumentBuffer args;
</span><span class="cx">     args.append(toJS(scriptState, globalObject, m_injectedScriptHost.get()));
</span><span class="lines">@@ -81,8 +81,8 @@
</span><span class="cx"> 
</span><span class="cx">     JSValue result = JSC::call(scriptState, functionValue, callType, callData, globalThisValue, args);
</span><span class="cx">     if (result.isObject())
</span><del>-        return ScriptObject(scriptState, result.getObject());
-    return ScriptObject();
</del><ins>+        return Deprecated::ScriptObject(scriptState, result.getObject());
+    return Deprecated::ScriptObject();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool InjectedScriptManager::canAccessInspectedWindow(JSC::ExecState* scriptState)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsjsJSMainThreadExecStatecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/js/JSMainThreadExecState.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/js/JSMainThreadExecState.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/js/JSMainThreadExecState.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -46,4 +46,12 @@
</span><span class="cx">     MutationObserver::deliverAllMutations();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+JSC::JSValue functionCallHandlerFromAnyThread(JSC::ExecState* exec, JSC::JSValue functionObject, JSC::CallType callType, const JSC::CallData&amp; callData, JSC::JSValue thisValue, const JSC::ArgList&amp; args)
+{
+    if (isMainThread())
+        return JSMainThreadExecState::call(exec, functionObject, callType, callData, thisValue, args);
+    else
+        return JSC::call(exec, functionObject, callType, callData, thisValue, args);
+}
+
</ins><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsjsJSMainThreadExecStateh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/js/JSMainThreadExecState.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/js/JSMainThreadExecState.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/js/JSMainThreadExecState.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -28,9 +28,7 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><span class="cx"> #include &lt;runtime/Completion.h&gt;
</span><del>-#ifndef NDEBUG
</del><span class="cx"> #include &lt;wtf/MainThread.h&gt;
</span><del>-#endif
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -42,7 +40,7 @@
</span><span class="cx">     friend class JSMainThreadNullState;
</span><span class="cx"> public:
</span><span class="cx">     static JSC::ExecState* currentState()
</span><del>-    { 
</del><ins>+    {
</ins><span class="cx">         ASSERT(isMainThread());
</span><span class="cx">         return s_mainThreadState;
</span><span class="cx">     };
</span><span class="lines">@@ -53,8 +51,6 @@
</span><span class="cx">         return JSC::call(exec, functionObject, callType, callData, thisValue, args);
</span><span class="cx">     };
</span><span class="cx"> 
</span><del>-    static InspectorInstrumentationCookie instrumentFunctionCall(ScriptExecutionContext*, JSC::CallType, const JSC::CallData&amp;);
-
</del><span class="cx">     static JSC::JSValue evaluate(JSC::ExecState* exec, const JSC::SourceCode&amp; source, JSC::JSValue thisValue, JSC::JSValue* exception)
</span><span class="cx">     {
</span><span class="cx">         JSMainThreadExecState currentState(exec);
</span><span class="lines">@@ -62,6 +58,8 @@
</span><span class="cx">         return JSC::evaluate(exec, source, thisValue, exception);
</span><span class="cx">     };
</span><span class="cx"> 
</span><ins>+    static InspectorInstrumentationCookie instrumentFunctionCall(ScriptExecutionContext*, JSC::CallType, const JSC::CallData&amp;);
+
</ins><span class="cx">     explicit JSMainThreadExecState(JSC::ExecState* exec)
</span><span class="cx">         : m_previousState(s_mainThreadState)
</span><span class="cx">     {
</span><span class="lines">@@ -110,6 +108,8 @@
</span><span class="cx">     JSC::ExecState* m_previousState;
</span><span class="cx"> };
</span><span class="cx"> 
</span><ins>+JSC::JSValue functionCallHandlerFromAnyThread(JSC::ExecState* exec, JSC::JSValue functionObject, JSC::CallType callType, const JSC::CallData&amp; callData, JSC::JSValue thisValue, const JSC::ArgList&amp; args);
+
</ins><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><span class="cx"> #endif // JSMainThreadExecState_h
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsjsJSMessageEventCustomcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/js/JSMessageEventCustom.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/js/JSMessageEventCustom.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/js/JSMessageEventCustom.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -53,7 +53,7 @@
</span><span class="cx">     JSValue result;
</span><span class="cx">     switch (event.dataType()) {
</span><span class="cx">     case MessageEvent::DataTypeScriptValue: {
</span><del>-        ScriptValue scriptValue = event.dataAsScriptValue();
</del><ins>+        Deprecated::ScriptValue scriptValue = event.dataAsScriptValue();
</ins><span class="cx">         if (scriptValue.hasNoValue())
</span><span class="cx">             result = jsNull();
</span><span class="cx">         else
</span><span class="lines">@@ -105,7 +105,7 @@
</span><span class="cx">         if (exec-&gt;hadException())
</span><span class="cx">             return jsUndefined();
</span><span class="cx">     }
</span><del>-    ScriptValue dataArg = ScriptValue(exec-&gt;vm(), exec-&gt;argument(3));
</del><ins>+    Deprecated::ScriptValue dataArg = Deprecated::ScriptValue(exec-&gt;vm(), exec-&gt;argument(3));
</ins><span class="cx">     if (exec-&gt;hadException())
</span><span class="cx">         return jsUndefined();
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsjsJSSubtleCryptoCustomcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -646,6 +646,11 @@
</span><span class="cx">     if (!key)
</span><span class="cx">         return throwTypeError(exec);
</span><span class="cx"> 
</span><ins>+    if (!wrappingKey-&gt;allows(CryptoKeyUsageWrapKey)) {
+        m_impl-&gt;document()-&gt;addConsoleMessage(JSMessageSource, ErrorMessageLevel, &quot;Key usages do not include 'wrapKey'&quot;);
+        setDOMException(exec, NOT_SUPPORTED_ERR);
+        return jsUndefined();
+    }
</ins><span class="cx"> 
</span><span class="cx">     auto algorithm = createAlgorithmFromJSValue(exec, exec-&gt;uncheckedArgument(3));
</span><span class="cx">     if (!algorithm) {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsjsScheduledActioncpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/js/ScheduledAction.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/js/ScheduledAction.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/js/ScheduledAction.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -37,9 +37,9 @@
</span><span class="cx"> #include &quot;ScriptController.h&quot;
</span><span class="cx"> #include &quot;ScriptExecutionContext.h&quot;
</span><span class="cx"> #include &quot;ScriptSourceCode.h&quot;
</span><del>-#include &quot;ScriptValue.h&quot;
</del><span class="cx"> #include &quot;WorkerGlobalScope.h&quot;
</span><span class="cx"> #include &quot;WorkerThread.h&quot;
</span><ins>+#include &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> #include &lt;runtime/JSLock.h&gt;
</span><span class="cx"> 
</span><span class="cx"> using namespace JSC;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsjsScriptCallStackFactorycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/js/ScriptCallStackFactory.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/js/ScriptCallStackFactory.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/js/ScriptCallStackFactory.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx"> #include &quot;ScriptArguments.h&quot;
</span><span class="cx"> #include &quot;ScriptCallFrame.h&quot;
</span><span class="cx"> #include &quot;ScriptCallStack.h&quot;
</span><del>-#include &quot;ScriptValue.h&quot;
</del><ins>+#include &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> #include &lt;interpreter/CallFrame.h&gt;
</span><span class="cx"> #include &lt;interpreter/CallFrameInlines.h&gt;
</span><span class="cx"> #include &lt;interpreter/StackVisitor.h&gt;
</span><span class="lines">@@ -199,10 +199,10 @@
</span><span class="cx"> 
</span><span class="cx"> PassRefPtr&lt;ScriptArguments&gt; createScriptArguments(JSC::ExecState* exec, unsigned skipArgumentCount)
</span><span class="cx"> {
</span><del>-    Vector&lt;ScriptValue&gt; arguments;
</del><ins>+    Vector&lt;Deprecated::ScriptValue&gt; arguments;
</ins><span class="cx">     size_t argumentCount = exec-&gt;argumentCount();
</span><span class="cx">     for (size_t i = skipArgumentCount; i &lt; argumentCount; ++i)
</span><del>-        arguments.append(ScriptValue(exec-&gt;vm(), exec-&gt;uncheckedArgument(i)));
</del><ins>+        arguments.append(Deprecated::ScriptValue(exec-&gt;vm(), exec-&gt;uncheckedArgument(i)));
</ins><span class="cx">     return ScriptArguments::create(exec, arguments);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsjsScriptControllercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/js/ScriptController.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/js/ScriptController.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/js/ScriptController.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -40,7 +40,6 @@
</span><span class="cx"> #include &quot;PluginView.h&quot;
</span><span class="cx"> #include &quot;ScriptCallStack.h&quot;
</span><span class="cx"> #include &quot;ScriptSourceCode.h&quot;
</span><del>-#include &quot;ScriptValue.h&quot;
</del><span class="cx"> #include &quot;ScriptableDocumentParser.h&quot;
</span><span class="cx"> #include &quot;Settings.h&quot;
</span><span class="cx"> #include &quot;StorageNamespace.h&quot;
</span><span class="lines">@@ -48,6 +47,7 @@
</span><span class="cx"> #include &quot;WebCoreJSClientData.h&quot;
</span><span class="cx"> #include &quot;npruntime_impl.h&quot;
</span><span class="cx"> #include &quot;runtime_root.h&quot;
</span><ins>+#include &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> #include &lt;debugger/Debugger.h&gt;
</span><span class="cx"> #include &lt;heap/StrongInlines.h&gt;
</span><span class="cx"> #include &lt;runtime/InitializeThreading.h&gt;
</span><span class="lines">@@ -117,7 +117,7 @@
</span><span class="cx">     return windowShell.get();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-ScriptValue ScriptController::evaluateInWorld(const ScriptSourceCode&amp; sourceCode, DOMWrapperWorld&amp; world)
</del><ins>+Deprecated::ScriptValue ScriptController::evaluateInWorld(const ScriptSourceCode&amp; sourceCode, DOMWrapperWorld&amp; world)
</ins><span class="cx"> {
</span><span class="cx">     const SourceCode&amp; jsSourceCode = sourceCode.jsSourceCode();
</span><span class="cx">     String sourceURL = jsSourceCode.provider()-&gt;url();
</span><span class="lines">@@ -149,14 +149,14 @@
</span><span class="cx">     if (evaluationException) {
</span><span class="cx">         reportException(exec, evaluationException, sourceCode.cachedScript());
</span><span class="cx">         m_sourceURL = savedSourceURL;
</span><del>-        return ScriptValue();
</del><ins>+        return Deprecated::ScriptValue();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     m_sourceURL = savedSourceURL;
</span><del>-    return ScriptValue(exec-&gt;vm(), returnValue);
</del><ins>+    return Deprecated::ScriptValue(exec-&gt;vm(), returnValue);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-ScriptValue ScriptController::evaluate(const ScriptSourceCode&amp; sourceCode) 
</del><ins>+Deprecated::ScriptValue ScriptController::evaluate(const ScriptSourceCode&amp; sourceCode) 
</ins><span class="cx"> {
</span><span class="cx">     return evaluateInWorld(sourceCode, mainThreadNormalWorld());
</span><span class="cx"> }
</span><span class="lines">@@ -458,13 +458,13 @@
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-ScriptValue ScriptController::executeScriptInWorld(DOMWrapperWorld&amp; world, const String&amp; script, bool forceUserGesture)
</del><ins>+Deprecated::ScriptValue ScriptController::executeScriptInWorld(DOMWrapperWorld&amp; world, const String&amp; script, bool forceUserGesture)
</ins><span class="cx"> {
</span><span class="cx">     UserGestureIndicator gestureIndicator(forceUserGesture ? DefinitelyProcessingUserGesture : PossiblyProcessingUserGesture);
</span><span class="cx">     ScriptSourceCode sourceCode(script, m_frame.document()-&gt;url());
</span><span class="cx"> 
</span><span class="cx">     if (!canExecuteScripts(AboutToExecuteScript) || isPaused())
</span><del>-        return ScriptValue();
</del><ins>+        return Deprecated::ScriptValue();
</ins><span class="cx"> 
</span><span class="cx">     return evaluateInWorld(sourceCode, world);
</span><span class="cx"> }
</span><span class="lines">@@ -500,16 +500,16 @@
</span><span class="cx">     return m_frame.loader().client().allowScript(m_frame.settings().isScriptEnabled());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-ScriptValue ScriptController::executeScript(const String&amp; script, bool forceUserGesture)
</del><ins>+Deprecated::ScriptValue ScriptController::executeScript(const String&amp; script, bool forceUserGesture)
</ins><span class="cx"> {
</span><span class="cx">     UserGestureIndicator gestureIndicator(forceUserGesture ? DefinitelyProcessingUserGesture : PossiblyProcessingUserGesture);
</span><span class="cx">     return executeScript(ScriptSourceCode(script, m_frame.document()-&gt;url()));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-ScriptValue ScriptController::executeScript(const ScriptSourceCode&amp; sourceCode)
</del><ins>+Deprecated::ScriptValue ScriptController::executeScript(const ScriptSourceCode&amp; sourceCode)
</ins><span class="cx"> {
</span><span class="cx">     if (!canExecuteScripts(AboutToExecuteScript) || isPaused())
</span><del>-        return ScriptValue();
</del><ins>+        return Deprecated::ScriptValue();
</ins><span class="cx"> 
</span><span class="cx">     Ref&lt;Frame&gt; protect(m_frame); // Script execution can destroy the frame, and thus the ScriptController.
</span><span class="cx"> 
</span><span class="lines">@@ -532,7 +532,7 @@
</span><span class="cx">     const int javascriptSchemeLength = sizeof(&quot;javascript:&quot;) - 1;
</span><span class="cx"> 
</span><span class="cx">     String decodedURL = decodeURLEscapeSequences(url.string());
</span><del>-    ScriptValue result = executeScript(decodedURL.substring(javascriptSchemeLength));
</del><ins>+    Deprecated::ScriptValue result = executeScript(decodedURL.substring(javascriptSchemeLength));
</ins><span class="cx"> 
</span><span class="cx">     // If executing script caused this frame to be removed from the page, we
</span><span class="cx">     // don't want to try to replace its document!
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsjsScriptControllerh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/js/ScriptController.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/js/ScriptController.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/js/ScriptController.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -38,6 +38,10 @@
</span><span class="cx"> 
</span><span class="cx"> struct NPObject;
</span><span class="cx"> 
</span><ins>+namespace Deprecated {
+class ScriptValue;
+}
+
</ins><span class="cx"> namespace JSC {
</span><span class="cx">     class JSGlobalObject;
</span><span class="cx">     class ExecState;
</span><span class="lines">@@ -53,7 +57,6 @@
</span><span class="cx"> class HTMLPlugInElement;
</span><span class="cx"> class Frame;
</span><span class="cx"> class ScriptSourceCode;
</span><del>-class ScriptValue;
</del><span class="cx"> class SecurityOrigin;
</span><span class="cx"> class Widget;
</span><span class="cx"> 
</span><span class="lines">@@ -94,9 +97,9 @@
</span><span class="cx"> 
</span><span class="cx">     static void getAllWorlds(Vector&lt;Ref&lt;DOMWrapperWorld&gt;&gt;&amp;);
</span><span class="cx"> 
</span><del>-    ScriptValue executeScript(const ScriptSourceCode&amp;);
-    ScriptValue executeScript(const String&amp; script, bool forceUserGesture = false);
-    ScriptValue executeScriptInWorld(DOMWrapperWorld&amp;, const String&amp; script, bool forceUserGesture = false);
</del><ins>+    Deprecated::ScriptValue executeScript(const ScriptSourceCode&amp;);
+    Deprecated::ScriptValue executeScript(const String&amp; script, bool forceUserGesture = false);
+    Deprecated::ScriptValue executeScriptInWorld(DOMWrapperWorld&amp;, const String&amp; script, bool forceUserGesture = false);
</ins><span class="cx"> 
</span><span class="cx">     // Returns true if argument is a JavaScript URL.
</span><span class="cx">     bool executeIfJavaScriptURL(const URL&amp;, ShouldReplaceDocumentIfJavaScriptURL shouldReplaceDocumentIfJavaScriptURL = ReplaceDocumentIfJavaScriptURL);
</span><span class="lines">@@ -105,8 +108,8 @@
</span><span class="cx">     // Darwin is an exception to this rule: it is OK to call this function from any thread, even reentrantly.
</span><span class="cx">     static void initializeThreading();
</span><span class="cx"> 
</span><del>-    ScriptValue evaluate(const ScriptSourceCode&amp;);
-    ScriptValue evaluateInWorld(const ScriptSourceCode&amp;, DOMWrapperWorld&amp;);
</del><ins>+    Deprecated::ScriptValue evaluate(const ScriptSourceCode&amp;);
+    Deprecated::ScriptValue evaluateInWorld(const ScriptSourceCode&amp;, DOMWrapperWorld&amp;);
</ins><span class="cx"> 
</span><span class="cx">     WTF::TextPosition eventHandlerPosition() const;
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsjsScriptDebugServercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/js/ScriptDebugServer.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/js/ScriptDebugServer.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/js/ScriptDebugServer.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -41,8 +41,8 @@
</span><span class="cx"> #include &quot;PageConsole.h&quot;
</span><span class="cx"> #include &quot;ScriptBreakpoint.h&quot;
</span><span class="cx"> #include &quot;ScriptDebugListener.h&quot;
</span><del>-#include &quot;ScriptValue.h&quot;
</del><span class="cx"> #include &quot;Sound.h&quot;
</span><ins>+#include &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> #include &lt;debugger/DebuggerCallFrame.h&gt;
</span><span class="cx"> #include &lt;parser/SourceProvider.h&gt;
</span><span class="cx"> #include &lt;runtime/JSLock.h&gt;
</span><span class="lines">@@ -130,14 +130,14 @@
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool ScriptDebugServer::setScriptSource(const String&amp;, const String&amp;, bool, String*, ScriptValue*, ScriptObject*)
</del><ins>+bool ScriptDebugServer::setScriptSource(const String&amp;, const String&amp;, bool, String*, Deprecated::ScriptValue*, Deprecated::ScriptObject*)
</ins><span class="cx"> {
</span><span class="cx">     // FIXME(40300): implement this.
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void ScriptDebugServer::updateCallStack(ScriptValue*)
</del><ins>+void ScriptDebugServer::updateCallStack(Deprecated::ScriptValue*)
</ins><span class="cx"> {
</span><span class="cx">     // This method is used for restart frame feature that is not implemented yet.
</span><span class="cx">     // FIXME(40300): implement this.
</span><span class="lines">@@ -159,7 +159,7 @@
</span><span class="cx">         } else
</span><span class="cx">             jsCallFrame = jsUndefined();
</span><span class="cx">     }
</span><del>-    listener-&gt;didPause(state, ScriptValue(state-&gt;vm(), jsCallFrame), ScriptValue());
</del><ins>+    listener-&gt;didPause(state, Deprecated::ScriptValue(state-&gt;vm(), jsCallFrame), Deprecated::ScriptValue());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void ScriptDebugServer::dispatchDidContinue(ScriptDebugListener* listener)
</span><span class="lines">@@ -319,7 +319,7 @@
</span><span class="cx">     // FIXME(89652): implement this.
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ScriptDebugServer::runScript(JSC::ExecState*, const String&amp;, ScriptValue*, bool*, String*)
</del><ins>+void ScriptDebugServer::runScript(JSC::ExecState*, const String&amp;, Deprecated::ScriptValue*, bool*, String*)
</ins><span class="cx"> {
</span><span class="cx">     // FIXME(89652): implement this.
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsjsScriptDebugServerh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/js/ScriptDebugServer.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/js/ScriptDebugServer.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/js/ScriptDebugServer.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -37,6 +37,7 @@
</span><span class="cx"> #include &quot;ScriptDebugListener.h&quot;
</span><span class="cx"> #include &quot;SourceID.h&quot;
</span><span class="cx"> #include &quot;Timer.h&quot;
</span><ins>+#include &lt;bindings/ScriptObject.h&gt;
</ins><span class="cx"> #include &lt;debugger/Debugger.h&gt;
</span><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="cx"> #include &lt;wtf/HashSet.h&gt;
</span><span class="lines">@@ -50,12 +51,9 @@
</span><span class="cx"> class JSGlobalObject;
</span><span class="cx"> class ExecState;
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-class ScriptDebugListener;
-class ScriptObject;
-class ScriptValue;
-
</del><span class="cx"> class ScriptDebugServer : public JSC::Debugger {
</span><span class="cx">     WTF_MAKE_NONCOPYABLE(ScriptDebugServer); WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><span class="lines">@@ -64,8 +62,8 @@
</span><span class="cx">     void clearBreakpoints();
</span><span class="cx"> 
</span><span class="cx">     bool canSetScriptSource();
</span><del>-    bool setScriptSource(const String&amp; sourceID, const String&amp; newContent, bool preview, String* error, ScriptValue* newCallFrames, ScriptObject* result);
-    void updateCallStack(ScriptValue* callFrame);
</del><ins>+    bool setScriptSource(const String&amp; sourceID, const String&amp; newContent, bool preview, String* error, Deprecated::ScriptValue* newCallFrames, Deprecated::ScriptObject* result);
+    void updateCallStack(Deprecated::ScriptValue* callFrame);
</ins><span class="cx"> 
</span><span class="cx">     bool causesRecompilation() { return true; }
</span><span class="cx">     bool supportsSeparateScriptCompilationAndExecution() { return false; }
</span><span class="lines">@@ -82,7 +80,7 @@
</span><span class="cx"> 
</span><span class="cx">     void compileScript(JSC::ExecState*, const String&amp; expression, const String&amp; sourceURL, String* scriptID, String* exceptionMessage);
</span><span class="cx">     void clearCompiledScripts();
</span><del>-    void runScript(JSC::ExecState*, const String&amp; scriptID, ScriptValue* result, bool* wasThrown, String* exceptionMessage);
</del><ins>+    void runScript(JSC::ExecState*, const String&amp; scriptID, Deprecated::ScriptValue* result, bool* wasThrown, String* exceptionMessage);
</ins><span class="cx"> 
</span><span class="cx">     class Task {
</span><span class="cx">         WTF_MAKE_FAST_ALLOCATED;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsjsScriptFunctionCallcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/js/ScriptFunctionCall.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/js/ScriptFunctionCall.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/js/ScriptFunctionCall.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,219 +0,0 @@
</span><del>-/*
- * Copyright (C) 2009 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include &quot;config.h&quot;
-#include &quot;ScriptFunctionCall.h&quot;
-
-#include &quot;JSDOMBinding.h&quot;
-#include &quot;JSMainThreadExecState.h&quot;
-#include &quot;ScriptValue.h&quot;
-
-#include &lt;runtime/JSLock.h&gt;
-#include &lt;wtf/text/WTFString.h&gt;
-
-using namespace JSC;
-
-namespace WebCore {
-
-void ScriptCallArgumentHandler::appendArgument(const ScriptObject&amp; argument)
-{
-    if (argument.scriptState() != m_exec) {
-        ASSERT_NOT_REACHED();
-        return;
-    }
-    m_arguments.append(argument.jsObject());
-}
-
-void ScriptCallArgumentHandler::appendArgument(const ScriptValue&amp; argument)
-{
-    m_arguments.append(argument.jsValue());
-}
-
-void ScriptCallArgumentHandler::appendArgument(const String&amp; argument)
-{
-    JSLockHolder lock(m_exec);
-    m_arguments.append(jsStringWithCache(m_exec, argument));
-}
-
-void ScriptCallArgumentHandler::appendArgument(const char* argument)
-{
-    JSLockHolder lock(m_exec);
-    m_arguments.append(jsString(m_exec, String(argument)));
-}
-
-void ScriptCallArgumentHandler::appendArgument(JSC::JSValue argument)
-{
-    m_arguments.append(argument);
-}
-
-void ScriptCallArgumentHandler::appendArgument(long argument)
-{
-    JSLockHolder lock(m_exec);
-    m_arguments.append(jsNumber(argument));
-}
-
-void ScriptCallArgumentHandler::appendArgument(long long argument)
-{
-    JSLockHolder lock(m_exec);
-    m_arguments.append(jsNumber(argument));
-}
-
-void ScriptCallArgumentHandler::appendArgument(unsigned int argument)
-{
-    JSLockHolder lock(m_exec);
-    m_arguments.append(jsNumber(argument));
-}
-
-void ScriptCallArgumentHandler::appendArgument(unsigned long argument)
-{
-    JSLockHolder lock(m_exec);
-    m_arguments.append(jsNumber(argument));
-}
-
-void ScriptCallArgumentHandler::appendArgument(int argument)
-{
-    JSLockHolder lock(m_exec);
-    m_arguments.append(jsNumber(argument));
-}
-
-void ScriptCallArgumentHandler::appendArgument(bool argument)
-{
-    m_arguments.append(jsBoolean(argument));
-}
-
-ScriptFunctionCall::ScriptFunctionCall(const ScriptObject&amp; thisObject, const String&amp; name)
-    : ScriptCallArgumentHandler(thisObject.scriptState())
-    , m_thisObject(thisObject)
-    , m_name(name)
-{
-}
-
-ScriptValue ScriptFunctionCall::call(bool&amp; hadException, bool reportExceptions)
-{
-    JSObject* thisObject = m_thisObject.jsObject();
-
-    JSLockHolder lock(m_exec);
-
-    JSValue function = thisObject-&gt;get(m_exec, Identifier(m_exec, m_name));
-    if (m_exec-&gt;hadException()) {
-        if (reportExceptions)
-            reportException(m_exec, m_exec-&gt;exception());
-
-        hadException = true;
-        return ScriptValue();
-    }
-
-    CallData callData;
-    CallType callType = getCallData(function, callData);
-    if (callType == CallTypeNone)
-        return ScriptValue();
-
-    JSValue result;
-    if (isMainThread())
-        result = JSMainThreadExecState::call(m_exec, function, callType, callData, thisObject, m_arguments);
-    else
-        result = JSC::call(m_exec, function, callType, callData, thisObject, m_arguments);
-
-    if (m_exec-&gt;hadException()) {
-        if (reportExceptions)
-            reportException(m_exec, m_exec-&gt;exception());
-
-        hadException = true;
-        return ScriptValue();
-    }
-
-    return ScriptValue(m_exec-&gt;vm(), result);
-}
-
-ScriptValue ScriptFunctionCall::call()
-{
-    bool hadException = false;
-    return call(hadException);
-}
-
-ScriptObject ScriptFunctionCall::construct(bool&amp; hadException, bool reportExceptions)
-{
-    JSObject* thisObject = m_thisObject.jsObject();
-
-    JSLockHolder lock(m_exec);
-
-    JSObject* constructor = asObject(thisObject-&gt;get(m_exec, Identifier(m_exec, m_name)));
-    if (m_exec-&gt;hadException()) {
-        if (reportExceptions)
-            reportException(m_exec, m_exec-&gt;exception());
-
-        hadException = true;
-        return ScriptObject();
-    }
-
-    ConstructData constructData;
-    ConstructType constructType = constructor-&gt;methodTable()-&gt;getConstructData(constructor, constructData);
-    if (constructType == ConstructTypeNone)
-        return ScriptObject();
-
-    JSValue result = JSC::construct(m_exec, constructor, constructType, constructData, m_arguments);
-    if (m_exec-&gt;hadException()) {
-        if (reportExceptions)
-            reportException(m_exec, m_exec-&gt;exception());
-
-        hadException = true;
-        return ScriptObject();
-    }
-
-    return ScriptObject(m_exec, asObject(result));
-}
-
-ScriptCallback::ScriptCallback(JSC::ExecState* state, const ScriptValue&amp; function)
-    : ScriptCallArgumentHandler(state)
-    , m_function(function)
-{
-}
-
-ScriptValue ScriptCallback::call()
-{
-    JSLockHolder lock(m_exec);
-
-    CallData callData;
-    CallType callType = getCallData(m_function.jsValue(), callData);
-    if (callType == CallTypeNone)
-        return ScriptValue();
-
-    JSValue result = JSC::call(m_exec, m_function.jsValue(), callType, callData, m_function.jsValue(), m_arguments);
-    bool hadException = m_exec-&gt;hadException();
-
-    if (hadException) {
-        reportException(m_exec, m_exec-&gt;exception());
-        return ScriptValue();
-    }
-
-    return ScriptValue(m_exec-&gt;vm(), result);
-}
-
-} // namespace WebCore
</del></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsjsScriptFunctionCallh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/js/ScriptFunctionCall.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/js/ScriptFunctionCall.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/js/ScriptFunctionCall.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,98 +0,0 @@
</span><del>-/*
- * Copyright (C) 2009 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef ScriptFunctionCall_h
-#define ScriptFunctionCall_h
-
-#include &quot;ScriptObject.h&quot;
-#include &quot;ScriptState.h&quot;
-
-#include &lt;runtime/ArgList.h&gt;
-#include &lt;wtf/text/WTFString.h&gt;
-
-namespace JSC {
-    class JSValue;
-}
-
-namespace WebCore {
-    class ScriptValue;
-
-    class ScriptCallArgumentHandler {
-    public:
-        ScriptCallArgumentHandler(JSC::ExecState* state) : m_exec(state) { }
-
-        void appendArgument(const ScriptObject&amp;);
-        void appendArgument(const ScriptValue&amp;);
-        void appendArgument(const char*);
-        void appendArgument(const String&amp;);
-        void appendArgument(JSC::JSValue);
-        void appendArgument(long);
-        void appendArgument(long long);
-        void appendArgument(unsigned int);
-        void appendArgument(unsigned long);
-        void appendArgument(int);
-        void appendArgument(bool);
-
-    protected:
-        JSC::MarkedArgumentBuffer m_arguments;
-        JSC::ExecState* m_exec;
-
-    private:
-        // MarkedArgumentBuffer must be stack allocated, so prevent heap
-        // alloc of ScriptFunctionCall as well.
-        void* operator new(size_t) { ASSERT_NOT_REACHED(); return reinterpret_cast&lt;void*&gt;(0xbadbeef); }
-        void* operator new[](size_t) { ASSERT_NOT_REACHED(); return reinterpret_cast&lt;void*&gt;(0xbadbeef); }
-    };
-
-    class ScriptFunctionCall : public ScriptCallArgumentHandler {
-    public:
-        ScriptFunctionCall(const ScriptObject&amp; thisObject, const String&amp; name);
-        ScriptValue call(bool&amp; hadException, bool reportExceptions = true);
-        ScriptValue call();
-        ScriptObject construct(bool&amp; hadException, bool reportExceptions = true);
-
-    protected:
-        ScriptObject m_thisObject;
-        String m_name;
-    };
-
-    class ScriptCallback : public ScriptCallArgumentHandler {
-    public:
-        ScriptCallback(JSC::ExecState*, const ScriptValue&amp;);
-
-        ScriptValue call();
-
-    private:
-        ScriptValue m_function;
-    };
-
-} // namespace WebCore
-
-#endif // ScriptFunctionCall
</del></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsjsScriptGlobalObjectcpp"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/bindings/js/ScriptGlobalObject.cpp (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/js/ScriptGlobalObject.cpp                                (rev 0)
+++ branches/jsCStack/Source/WebCore/bindings/js/ScriptGlobalObject.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,93 @@
</span><ins>+/*
+ * Copyright (C) 2009 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;ScriptGlobalObject.h&quot;
+
+#include &quot;JSDOMBinding.h&quot;
+#include &lt;bindings/ScriptObject.h&gt;
+#include &lt;runtime/JSLock.h&gt;
+
+#if ENABLE(INSPECTOR)
+#include &quot;JSInspectorFrontendHost.h&quot;
+#endif
+
+using namespace JSC;
+
+namespace WebCore {
+
+static bool handleException(JSC::ExecState* scriptState)
+{
+    if (!scriptState-&gt;hadException())
+        return true;
+
+    reportException(scriptState, scriptState-&gt;exception());
+    return false;
+}
+
+bool ScriptGlobalObject::set(JSC::ExecState* scriptState, const char* name, const Deprecated::ScriptObject&amp; value)
+{
+    JSLockHolder lock(scriptState);
+    scriptState-&gt;lexicalGlobalObject()-&gt;putDirect(scriptState-&gt;vm(), Identifier(scriptState, name), value.jsObject());
+    return handleException(scriptState);
+}
+
+#if ENABLE(INSPECTOR)
+bool ScriptGlobalObject::set(JSC::ExecState* scriptState, const char* name, InspectorFrontendHost* value)
+{
+    JSLockHolder lock(scriptState);
+    JSDOMGlobalObject* globalObject = jsCast&lt;JSDOMGlobalObject*&gt;(scriptState-&gt;lexicalGlobalObject());
+    globalObject-&gt;putDirect(scriptState-&gt;vm(), Identifier(scriptState, name), toJS(scriptState, globalObject, value));
+    return handleException(scriptState);
+}
+#endif // ENABLE(INSPECTOR)
+
+bool ScriptGlobalObject::get(JSC::ExecState* scriptState, const char* name, Deprecated::ScriptObject&amp; value)
+{
+    JSLockHolder lock(scriptState);
+    JSValue jsValue = scriptState-&gt;lexicalGlobalObject()-&gt;get(scriptState, Identifier(scriptState, name));
+    if (!jsValue)
+        return false;
+
+    if (!jsValue.isObject())
+        return false;
+
+    value = Deprecated::ScriptObject(scriptState, asObject(jsValue));
+    return true;
+}
+
+bool ScriptGlobalObject::remove(JSC::ExecState* scriptState, const char* name)
+{
+    JSLockHolder lock(scriptState);
+    scriptState-&gt;lexicalGlobalObject()-&gt;methodTable()-&gt;deleteProperty(scriptState-&gt;lexicalGlobalObject(), scriptState, Identifier(scriptState, name));
+    return handleException(scriptState);
+}
+
+} // namespace WebCore
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsjsScriptGlobalObjecth"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/bindings/js/ScriptGlobalObject.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/js/ScriptGlobalObject.h                                (rev 0)
+++ branches/jsCStack/Source/WebCore/bindings/js/ScriptGlobalObject.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,67 @@
</span><ins>+/*
+ * Copyright (C) 2009 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef ScriptGlobalObject_h
+#define ScriptGlobalObject_h
+
+namespace Deprecated {
+class ScriptObject;
+}
+
+namespace JSC {
+class ExecState;
+}
+
+namespace WebCore {
+
+class InjectedScriptHost;
+class InspectorFrontendHost;
+class MediaControlsHost;
+
+class ScriptGlobalObject {
+public:
+    static bool set(JSC::ExecState*, const char* name, const Deprecated::ScriptObject&amp;);
+#if ENABLE(INSPECTOR)
+    static bool set(JSC::ExecState*, const char* name, InspectorFrontendHost*);
+    static bool set(JSC::ExecState*, const char* name, InjectedScriptHost*);
+#endif
+#if ENABLE(MEDIA_CONTROLS_SCRIPT)
+    static bool set(JSC::ExecState*, const char* name, MediaControlsHost*);
+#endif
+
+    static bool get(JSC::ExecState*, const char* name, Deprecated::ScriptObject&amp;);
+    static bool remove(JSC::ExecState*, const char* name);
+private:
+    ScriptGlobalObject() { }
+};
+
+} // namespace WebCore
+
+#endif // ScriptGlobalObject_h
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsjsScriptObjectcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/js/ScriptObject.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/js/ScriptObject.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/js/ScriptObject.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,105 +0,0 @@
</span><del>-/*
- * Copyright (C) 2009 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include &quot;config.h&quot;
-#include &quot;ScriptObject.h&quot;
-
-#include &quot;JSDOMBinding.h&quot;
-
-#include &lt;runtime/JSLock.h&gt;
-
-#if ENABLE(INSPECTOR)
-#include &quot;JSInspectorFrontendHost.h&quot;
-#endif
-
-using namespace JSC;
-
-namespace WebCore {
-
-ScriptObject::ScriptObject(JSC::ExecState* scriptState, JSObject* object)
-    : ScriptValue(scriptState-&gt;vm(), object)
-    , m_scriptState(scriptState)
-{
-}
-
-ScriptObject::ScriptObject(JSC::ExecState* scriptState, const ScriptValue&amp; scriptValue)
-    : ScriptValue(scriptState-&gt;vm(), scriptValue.jsValue())
-    , m_scriptState(scriptState)
-{
-}
-
-static bool handleException(JSC::ExecState* scriptState)
-{
-    if (!scriptState-&gt;hadException())
-        return true;
-
-    reportException(scriptState, scriptState-&gt;exception());
-    return false;
-}
-
-bool ScriptGlobalObject::set(JSC::ExecState* scriptState, const char* name, const ScriptObject&amp; value)
-{
-    JSLockHolder lock(scriptState);
-    scriptState-&gt;lexicalGlobalObject()-&gt;putDirect(scriptState-&gt;vm(), Identifier(scriptState, name), value.jsObject());
-    return handleException(scriptState);
-}
-
-#if ENABLE(INSPECTOR)
-bool ScriptGlobalObject::set(JSC::ExecState* scriptState, const char* name, InspectorFrontendHost* value)
-{
-    JSLockHolder lock(scriptState);
-    JSDOMGlobalObject* globalObject = jsCast&lt;JSDOMGlobalObject*&gt;(scriptState-&gt;lexicalGlobalObject());
-    globalObject-&gt;putDirect(scriptState-&gt;vm(), Identifier(scriptState, name), toJS(scriptState, globalObject, value));
-    return handleException(scriptState);
-}
-#endif // ENABLE(INSPECTOR)
-
-bool ScriptGlobalObject::get(JSC::ExecState* scriptState, const char* name, ScriptObject&amp; value)
-{
-    JSLockHolder lock(scriptState);
-    JSValue jsValue = scriptState-&gt;lexicalGlobalObject()-&gt;get(scriptState, Identifier(scriptState, name));
-    if (!jsValue)
-        return false;
-
-    if (!jsValue.isObject())
-        return false;
-
-    value = ScriptObject(scriptState, asObject(jsValue));
-    return true;
-}
-
-bool ScriptGlobalObject::remove(JSC::ExecState* scriptState, const char* name)
-{
-    JSLockHolder lock(scriptState);
-    scriptState-&gt;lexicalGlobalObject()-&gt;methodTable()-&gt;deleteProperty(scriptState-&gt;lexicalGlobalObject(), scriptState, Identifier(scriptState, name));
-    return handleException(scriptState);
-}
-
-} // namespace WebCore
</del></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsjsScriptObjecth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/js/ScriptObject.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/js/ScriptObject.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/js/ScriptObject.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,70 +0,0 @@
</span><del>-/*
- * Copyright (C) 2009 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef ScriptObject_h
-#define ScriptObject_h
-
-#include &quot;ScriptState.h&quot;
-#include &quot;ScriptValue.h&quot;
-
-#include &lt;heap/Strong.h&gt;
-#include &lt;runtime/JSObject.h&gt;
-
-namespace WebCore {
-
-    class InspectorFrontendHost;
-
-    class ScriptObject : public ScriptValue {
-    public:
-        ScriptObject(JSC::ExecState*, JSC::JSObject*);
-        ScriptObject(JSC::ExecState*, const ScriptValue&amp;);
-        ScriptObject() : m_scriptState(0) { }
-        JSC::JSObject* jsObject() const { return asObject(jsValue()); }
-        JSC::ExecState* scriptState() const { return m_scriptState; }
-
-    protected:
-        JSC::ExecState* m_scriptState;
-    };
-
-    class ScriptGlobalObject {
-    public:
-        static bool set(JSC::ExecState*, const char* name, const ScriptObject&amp;);
-#if ENABLE(INSPECTOR)
-        static bool set(JSC::ExecState*, const char* name, InspectorFrontendHost*);
-#endif
-        static bool get(JSC::ExecState*, const char* name, ScriptObject&amp;);
-        static bool remove(JSC::ExecState*, const char* name);
-    private:
-        ScriptGlobalObject() { }
-    };
-
-}
-
-#endif // ScriptObject_h
</del></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsjsScriptProfilecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/js/ScriptProfile.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/js/ScriptProfile.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/js/ScriptProfile.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -30,8 +30,8 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;ScriptProfile.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;InspectorValues.h&quot;
</del><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><ins>+#include &lt;inspector/InspectorValues.h&gt;
</ins><span class="cx"> #include &lt;profiler/Profile.h&gt;
</span><span class="cx"> #include &lt;profiler/ProfileNode.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -74,16 +74,16 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><del>-static PassRefPtr&lt;TypeBuilder::Profiler::CPUProfileNode&gt; buildInspectorObjectFor(const JSC::ProfileNode* node)
</del><ins>+static PassRefPtr&lt;Inspector::TypeBuilder::Profiler::CPUProfileNode&gt; buildInspectorObjectFor(const JSC::ProfileNode* node)
</ins><span class="cx"> {
</span><span class="cx">     typedef Vector&lt;RefPtr&lt;JSC::ProfileNode&gt;&gt; ProfileNodesList;
</span><span class="cx">     const ProfileNodesList&amp; nodeChildren = node-&gt;children();
</span><span class="cx">     ProfileNodesList::const_iterator end = nodeChildren.end();
</span><del>-    RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::Profiler::CPUProfileNode&gt;&gt; children = TypeBuilder::Array&lt;TypeBuilder::Profiler::CPUProfileNode&gt;::create();
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Profiler::CPUProfileNode&gt;&gt; children = Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Profiler::CPUProfileNode&gt;::create();
</ins><span class="cx">     for (ProfileNodesList::const_iterator iter = nodeChildren.begin(); iter != end; ++iter)
</span><span class="cx">         children-&gt;addItem(buildInspectorObjectFor(iter-&gt;get()));
</span><span class="cx"> 
</span><del>-    RefPtr&lt;TypeBuilder::Profiler::CPUProfileNode&gt; result = TypeBuilder::Profiler::CPUProfileNode::create()
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Profiler::CPUProfileNode&gt; result = Inspector::TypeBuilder::Profiler::CPUProfileNode::create()
</ins><span class="cx">         .setFunctionName(node-&gt;functionName())
</span><span class="cx">         .setUrl(node-&gt;url())
</span><span class="cx">         .setLineNumber(node-&gt;lineNumber())
</span><span class="lines">@@ -96,12 +96,12 @@
</span><span class="cx">     return result.release();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::Profiler::CPUProfileNode&gt; ScriptProfile::buildInspectorObjectForHead() const
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::Profiler::CPUProfileNode&gt; ScriptProfile::buildInspectorObjectForHead() const
</ins><span class="cx"> {
</span><span class="cx">     return buildInspectorObjectFor(m_profile-&gt;head());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::Profiler::CPUProfileNode&gt; ScriptProfile::buildInspectorObjectForBottomUpHead() const
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::Profiler::CPUProfileNode&gt; ScriptProfile::buildInspectorObjectForBottomUpHead() const
</ins><span class="cx"> {
</span><span class="cx">     return 0;
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsjsScriptProfileh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/js/ScriptProfile.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/js/ScriptProfile.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/js/ScriptProfile.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -35,7 +35,7 @@
</span><span class="cx"> #include &lt;wtf/RefPtr.h&gt;
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><del>-#include &quot;InspectorTypeBuilder.h&quot;
</del><ins>+#include &quot;InspectorWebTypeBuilders.h&quot;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span><span class="lines">@@ -44,8 +44,6 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-class InspectorObject;
-
</del><span class="cx"> class ScriptProfile : public RefCounted&lt;ScriptProfile&gt; {
</span><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;ScriptProfile&gt; create(PassRefPtr&lt;JSC::Profile&gt; profile);
</span><span class="lines">@@ -57,8 +55,8 @@
</span><span class="cx">     double idleTime() const;
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><del>-    PassRefPtr&lt;TypeBuilder::Profiler::CPUProfileNode&gt; buildInspectorObjectForHead() const;
-    PassRefPtr&lt;TypeBuilder::Profiler::CPUProfileNode&gt; buildInspectorObjectForBottomUpHead() const;
</del><ins>+    PassRefPtr&lt;Inspector::TypeBuilder::Profiler::CPUProfileNode&gt; buildInspectorObjectForHead() const;
+    PassRefPtr&lt;Inspector::TypeBuilder::Profiler::CPUProfileNode&gt; buildInspectorObjectForBottomUpHead() const;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> private:
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsjsScriptProfilercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/js/ScriptProfiler.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/js/ScriptProfiler.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/js/ScriptProfiler.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -35,8 +35,9 @@
</span><span class="cx"> #include &quot;JSDOMWindow.h&quot;
</span><span class="cx"> #include &quot;MainFrame.h&quot;
</span><span class="cx"> #include &quot;Page.h&quot;
</span><del>-#include &quot;ScriptObject.h&quot;
</del><span class="cx"> #include &quot;ScriptState.h&quot;
</span><ins>+#include &lt;bindings/ScriptObject.h&gt;
+#include &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> #include &lt;profiler/LegacyProfiler.h&gt;
</span><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -47,12 +48,12 @@
</span><span class="cx">     gcController().garbageCollectSoon();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-ScriptObject ScriptProfiler::objectByHeapObjectId(unsigned)
</del><ins>+Deprecated::ScriptObject ScriptProfiler::objectByHeapObjectId(unsigned)
</ins><span class="cx"> {
</span><del>-    return ScriptObject();
</del><ins>+    return Deprecated::ScriptObject();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-unsigned ScriptProfiler::getHeapObjectId(const ScriptValue&amp;)
</del><ins>+unsigned ScriptProfiler::getHeapObjectId(const Deprecated::ScriptValue&amp;)
</ins><span class="cx"> {
</span><span class="cx">     return 0;
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsjsScriptProfilerh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/js/ScriptProfiler.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/js/ScriptProfiler.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/js/ScriptProfiler.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -28,20 +28,24 @@
</span><span class="cx"> #define ScriptProfiler_h
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(JAVASCRIPT_DEBUGGER)
</span><ins>+
</ins><span class="cx"> #include &quot;ScriptHeapSnapshot.h&quot;
</span><span class="cx"> #include &quot;ScriptProfile.h&quot;
</span><span class="cx"> #include &quot;ScriptState.h&quot;
</span><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><span class="cx"> #include &lt;wtf/PassRefPtr.h&gt;
</span><span class="cx"> 
</span><ins>+namespace Deprecated {
+class ScriptObject;
+class ScriptValue;
+}
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class ExternalArrayVisitor;
</span><span class="cx"> class ExternalStringVisitor;
</span><span class="cx"> class WrappedNodeVisitor;
</span><span class="cx"> class Page;
</span><del>-class ScriptObject;
-class ScriptValue;
</del><span class="cx"> class WorkerGlobalScope;
</span><span class="cx"> 
</span><span class="cx"> class ScriptProfiler {
</span><span class="lines">@@ -57,8 +61,8 @@
</span><span class="cx">     };
</span><span class="cx"> 
</span><span class="cx">     static void collectGarbage();
</span><del>-    static ScriptObject objectByHeapObjectId(unsigned id);
-    static unsigned getHeapObjectId(const ScriptValue&amp;);
</del><ins>+    static Deprecated::ScriptObject objectByHeapObjectId(unsigned id);
+    static unsigned getHeapObjectId(const Deprecated::ScriptValue&amp;);
</ins><span class="cx">     static void start(JSC::ExecState*, const String&amp; title);
</span><span class="cx">     static void startForPage(Page*, const String&amp; title);
</span><span class="cx">     static void startForWorkerGlobalScope(WorkerGlobalScope*, const String&amp; title);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsjsScriptStateh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/js/ScriptState.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/js/ScriptState.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/js/ScriptState.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,11 +1,11 @@
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (c) 2008, 2011 Google Inc.
</span><span class="cx">  * All rights reserved.
</span><del>- * 
</del><ins>+ *
</ins><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions are
</span><span class="cx">  * met:
</span><del>- * 
</del><ins>+ *
</ins><span class="cx">  *     * Redistributions of source code must retain the above copyright
</span><span class="cx">  * notice, this list of conditions and the following disclaimer.
</span><span class="cx">  *     * Redistributions in binary form must reproduce the above
</span><span class="lines">@@ -15,7 +15,7 @@
</span><span class="cx">  *     * Neither the name of Google Inc. nor the names of its
</span><span class="cx">  * contributors may be used to endorse or promote products derived from
</span><span class="cx">  * this software without specific prior written permission.
</span><del>- * 
</del><ins>+ *
</ins><span class="cx">  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
</span><span class="cx">  * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
</span><span class="cx">  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
</span><span class="lines">@@ -34,7 +34,6 @@
</span><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span><span class="cx"> class ExecState;
</span><del>-class JSGlobalObject;
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsjsScriptValuecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/js/ScriptValue.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/js/ScriptValue.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/js/ScriptValue.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,179 +0,0 @@
</span><del>-/*
- * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved.
- * Copyright (c) 2011 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer. 
- * 2.  Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution. 
- * 3.  Neither the name of Apple Computer, Inc. (&quot;Apple&quot;) nor the names of
- *     its contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission. 
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include &quot;config.h&quot;
-#include &quot;ScriptValue.h&quot;
-
-#include &quot;InspectorValues.h&quot;
-#include &quot;JSDOMBinding.h&quot;
-#include &quot;SerializedScriptValue.h&quot;
-
-#include &lt;JavaScriptCore/APICast.h&gt;
-#include &lt;JavaScriptCore/JSValueRef.h&gt;
-
-#include &lt;heap/Strong.h&gt;
-#include &lt;runtime/JSLock.h&gt;
-
-using namespace JSC;
-
-namespace WebCore {
-
-bool ScriptValue::getString(JSC::ExecState* scriptState, String&amp; result) const
-{
-    if (!m_value)
-        return false;
-    JSLockHolder lock(scriptState);
-    if (!m_value.get().getString(scriptState, result))
-        return false;
-    return true;
-}
-
-String ScriptValue::toString(JSC::ExecState* scriptState) const
-{
-    String result = m_value.get().toString(scriptState)-&gt;value(scriptState);
-    // Handle the case where an exception is thrown as part of invoking toString on the object.
-    if (scriptState-&gt;hadException())
-        scriptState-&gt;clearException();
-    return result;
-}
-
-bool ScriptValue::isEqual(JSC::ExecState* scriptState, const ScriptValue&amp; anotherValue) const
-{
-    if (hasNoValue())
-        return anotherValue.hasNoValue();
-
-    return JSValueIsEqual(toRef(scriptState), toRef(scriptState, jsValue()), toRef(scriptState, anotherValue.jsValue()), 0);
-}
-
-bool ScriptValue::isNull() const
-{
-    if (!m_value)
-        return false;
-    return m_value.get().isNull();
-}
-
-bool ScriptValue::isUndefined() const
-{
-    if (!m_value)
-        return false;
-    return m_value.get().isUndefined();
-}
-
-bool ScriptValue::isObject() const
-{
-    if (!m_value)
-        return false;
-    return m_value.get().isObject();
-}
-
-bool ScriptValue::isFunction() const
-{
-    CallData callData;
-    return getCallData(m_value.get(), callData) != CallTypeNone;
-}
-
-PassRefPtr&lt;SerializedScriptValue&gt; ScriptValue::serialize(JSC::ExecState* scriptState, SerializationErrorMode throwExceptions)
-{
-    return SerializedScriptValue::create(scriptState, jsValue(), 0, 0, throwExceptions);
-}
-
-PassRefPtr&lt;SerializedScriptValue&gt; ScriptValue::serialize(JSC::ExecState* scriptState, MessagePortArray* messagePorts, ArrayBufferArray* arrayBuffers, bool&amp; didThrow)
-{
-    RefPtr&lt;SerializedScriptValue&gt; serializedValue = SerializedScriptValue::create(scriptState, jsValue(), messagePorts, arrayBuffers);
-    didThrow = scriptState-&gt;hadException();
-    return serializedValue.release();
-}
-
-ScriptValue ScriptValue::deserialize(JSC::ExecState* scriptState, SerializedScriptValue* value, SerializationErrorMode throwExceptions)
-{
-    return ScriptValue(scriptState-&gt;vm(), value-&gt;deserialize(scriptState, scriptState-&gt;lexicalGlobalObject(), 0, throwExceptions));
-}
-
-#if ENABLE(INSPECTOR)
-static PassRefPtr&lt;InspectorValue&gt; jsToInspectorValue(JSC::ExecState* scriptState, JSValue value, int maxDepth)
-{
-    if (!value) {
-        ASSERT_NOT_REACHED();
-        return 0;
-    }
-
-    if (!maxDepth)
-        return 0;
-    maxDepth--;
-
-    if (value.isNull() || value.isUndefined())
-        return InspectorValue::null();
-    if (value.isBoolean())
-        return InspectorBasicValue::create(value.asBoolean());
-    if (value.isNumber())
-        return InspectorBasicValue::create(value.asNumber());
-    if (value.isString()) {
-        String s = value.getString(scriptState);
-        return InspectorString::create(String(s.characters(), s.length()));
-    }
-    if (value.isObject()) {
-        if (isJSArray(value)) {
-            RefPtr&lt;InspectorArray&gt; inspectorArray = InspectorArray::create();
-            JSArray* array = asArray(value);
-            unsigned length = array-&gt;length();
-            for (unsigned i = 0; i &lt; length; i++) {
-                JSValue element = array-&gt;getIndex(scriptState, i);
-                RefPtr&lt;InspectorValue&gt; elementValue = jsToInspectorValue(scriptState, element, maxDepth);
-                if (!elementValue)
-                    return 0;
-                inspectorArray-&gt;pushValue(elementValue);
-            }
-            return inspectorArray;
-        }
-        RefPtr&lt;InspectorObject&gt; inspectorObject = InspectorObject::create();
-        JSObject* object = value.getObject();
-        PropertyNameArray propertyNames(scriptState);
-        object-&gt;methodTable()-&gt;getOwnPropertyNames(object, scriptState, propertyNames, ExcludeDontEnumProperties);
-        for (size_t i = 0; i &lt; propertyNames.size(); i++) {
-            const Identifier&amp; name =  propertyNames[i];
-            JSValue propertyValue = object-&gt;get(scriptState, name);
-            RefPtr&lt;InspectorValue&gt; inspectorValue = jsToInspectorValue(scriptState, propertyValue, maxDepth);
-            if (!inspectorValue)
-                return 0;
-            inspectorObject-&gt;setValue(String(name.characters(), name.length()), inspectorValue);
-        }
-        return inspectorObject;
-    }
-    ASSERT_NOT_REACHED();
-    return 0;
-}
-
-PassRefPtr&lt;InspectorValue&gt; ScriptValue::toInspectorValue(JSC::ExecState* scriptState) const
-{
-    JSC::JSLockHolder holder(scriptState);
-    return jsToInspectorValue(scriptState, m_value.get(), InspectorValue::maxDepth);
-}
-#endif // ENABLE(INSPECTOR)
-
-} // namespace WebCore
</del></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsjsScriptValueh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/js/ScriptValue.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/js/ScriptValue.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/js/ScriptValue.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,82 +0,0 @@
</span><del>-/*
- * Copyright (c) 2008, 2011 Google Inc. All rights reserved.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- * 
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef ScriptValue_h
-#define ScriptValue_h
-
-#include &quot;SerializedScriptValue.h&quot;
-#include &quot;ScriptState.h&quot;
-#include &lt;heap/Strong.h&gt;
-#include &lt;heap/StrongInlines.h&gt;
-#include &lt;runtime/JSCJSValue.h&gt;
-#include &lt;runtime/Operations.h&gt;
-#include &lt;wtf/PassRefPtr.h&gt;
-#include &lt;wtf/text/WTFString.h&gt;
-
-namespace WebCore {
-
-class InspectorValue;
-class SerializedScriptValue;
-
-class ScriptValue {
-public:
-    ScriptValue() { }
-    ScriptValue(JSC::VM&amp; vm, JSC::JSValue value) : m_value(vm, value) {}
-    virtual ~ScriptValue() {}
-
-    JSC::JSValue jsValue() const { return m_value.get(); }
-    bool getString(JSC::ExecState*, String&amp; result) const;
-    String toString(JSC::ExecState*) const;
-    bool isEqual(JSC::ExecState*, const ScriptValue&amp;) const;
-    bool isNull() const;
-    bool isUndefined() const;
-    bool isObject() const;
-    bool isFunction() const;
-    bool hasNoValue() const { return !m_value; }
-
-    void clear() { m_value.clear(); }
-
-    bool operator==(const ScriptValue&amp; other) const { return m_value == other.m_value; }
-
-    PassRefPtr&lt;SerializedScriptValue&gt; serialize(JSC::ExecState*, SerializationErrorMode = Throwing);
-    PassRefPtr&lt;SerializedScriptValue&gt; serialize(JSC::ExecState*, MessagePortArray*, ArrayBufferArray*, bool&amp;);
-    static ScriptValue deserialize(JSC::ExecState*, SerializedScriptValue*, SerializationErrorMode = Throwing);
-
-#if ENABLE(INSPECTOR)
-    PassRefPtr&lt;InspectorValue&gt; toInspectorValue(JSC::ExecState*) const;
-#endif
-
-private:
-    JSC::Strong&lt;JSC::Unknown&gt; m_value;
-};
-
-} // namespace WebCore
-
-#endif // ScriptValue_h
</del></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsjsSerializedScriptValuecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/js/SerializedScriptValue.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/js/SerializedScriptValue.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/js/SerializedScriptValue.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -28,11 +28,17 @@
</span><span class="cx"> #include &quot;SerializedScriptValue.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;Blob.h&quot;
</span><ins>+#include &quot;CryptoKeyAES.h&quot;
+#include &quot;CryptoKeyDataOctetSequence.h&quot;
+#include &quot;CryptoKeyDataRSAComponents.h&quot;
+#include &quot;CryptoKeyHMAC.h&quot;
+#include &quot;CryptoKeyRSA.h&quot;
</ins><span class="cx"> #include &quot;ExceptionCode.h&quot;
</span><span class="cx"> #include &quot;File.h&quot;
</span><span class="cx"> #include &quot;FileList.h&quot;
</span><span class="cx"> #include &quot;ImageData.h&quot;
</span><span class="cx"> #include &quot;JSBlob.h&quot;
</span><ins>+#include &quot;JSCryptoKey.h&quot;
</ins><span class="cx"> #include &quot;JSDOMGlobalObject.h&quot;
</span><span class="cx"> #include &quot;JSFile.h&quot;
</span><span class="cx"> #include &quot;JSFileList.h&quot;
</span><span class="lines">@@ -40,7 +46,6 @@
</span><span class="cx"> #include &quot;JSMessagePort.h&quot;
</span><span class="cx"> #include &quot;JSNavigator.h&quot;
</span><span class="cx"> #include &quot;NotImplemented.h&quot;
</span><del>-#include &quot;ScriptValue.h&quot;
</del><span class="cx"> #include &quot;SharedBuffer.h&quot;
</span><span class="cx"> #include &quot;WebCoreJSClientData.h&quot;
</span><span class="cx"> #include &lt;limits&gt;
</span><span class="lines">@@ -117,6 +122,9 @@
</span><span class="cx">     SetObjectTag = 29,
</span><span class="cx">     MapObjectTag = 30,
</span><span class="cx">     NonMapPropertiesTag = 31,
</span><ins>+#if ENABLE(SUBTLE_CRYPTO)
+    CryptoKeyTag = 32,
+#endif
</ins><span class="cx">     ErrorTag = 255
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="lines">@@ -156,7 +164,73 @@
</span><span class="cx"> 
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-/* CurrentVersion tracks the serialization version so that persistant stores
</del><ins>+#if ENABLE(SUBTLE_CRYPTO)
+
+ENUM_CLASS(CryptoKeyClassSubtag) {
+    HMAC = 0,
+    AES = 1,
+    RSA = 2
+};
+const uint8_t cryptoKeyClassSubtagMaximumValue = 2;
+
+ENUM_CLASS(CryptoKeyAsymmetricTypeSubtag) {
+    Public = 0,
+    Private = 1
+};
+const uint8_t cryptoKeyAsymmetricTypeSubtagMaximumValue = 1;
+
+ENUM_CLASS(CryptoKeyUsageTag) {
+    Encrypt = 0,
+    Decrypt = 1,
+    Sign = 2,
+    Verify = 3,
+    DeriveKey = 4,
+    DeriveBits = 5,
+    WrapKey = 6,
+    UnwrapKey = 7
+};
+const uint8_t cryptoKeyUsageTagMaximumValue = 7;
+
+ENUM_CLASS(CryptoAlgorithmIdentifierTag) {
+    RSAES_PKCS1_v1_5 = 0,
+    RSASSA_PKCS1_v1_5 = 1,
+    RSA_PSS = 2,
+    RSA_OAEP = 3,
+    ECDSA = 4,
+    ECDH = 5,
+    AES_CTR = 6,
+    AES_CBC = 7,
+    AES_CMAC = 8,
+    AES_GCM = 9,
+    AES_CFB = 10,
+    AES_KW = 11,
+    HMAC = 12,
+    DH = 13,
+    SHA_1 = 14,
+    SHA_224 = 15,
+    SHA_256 = 16,
+    SHA_384 = 17,
+    SHA_512 = 18,
+    CONCAT = 19,
+    HKDF_CTR = 20,
+    PBKDF2 = 21,
+};
+const uint8_t cryptoAlgorithmIdentifierTagMaximumValue = 21;
+
+static unsigned countUsages(CryptoKeyUsage usages)
+{
+    // Fast bit count algorithm for sparse bit maps.
+    unsigned count = 0;
+    while (usages) {
+        usages = usages &amp; (usages - 1);
+        ++count;
+    }
+    return count;
+}
+
+#endif
+
+/* CurrentVersion tracks the serialization version so that persistent stores
</ins><span class="cx">  * are able to correctly bail out in the case of encountering newer formats.
</span><span class="cx">  *
</span><span class="cx">  * Initial version was 1.
</span><span class="lines">@@ -217,8 +291,9 @@
</span><span class="cx">  *    | ObjectReference
</span><span class="cx">  *    | MessagePortReferenceTag &lt;value:uint32_t&gt;
</span><span class="cx">  *    | ArrayBuffer
</span><del>- *    | ArrayBufferViewTag ArrayBufferViewSubtag &lt;byteOffset:uint32_t&gt; &lt;byteLenght:uint32_t&gt; (ArrayBuffer | ObjectReference)
</del><ins>+ *    | ArrayBufferViewTag ArrayBufferViewSubtag &lt;byteOffset:uint32_t&gt; &lt;byteLength:uint32_t&gt; (ArrayBuffer | ObjectReference)
</ins><span class="cx">  *    | ArrayBufferTransferTag &lt;value:uint32_t&gt;
</span><ins>+ *    | CryptoKeyTag &lt;extractable:int32_t&gt; &lt;usagesCount:uint32_t&gt; &lt;usages:byte{usagesCount}&gt; CryptoKeyClassSubtag (CryptoKeyHMAC | CryptoKeyAES | CryptoKeyRSA)
</ins><span class="cx">  *
</span><span class="cx">  * String :-
</span><span class="cx">  *      EmptyStringTag
</span><span class="lines">@@ -255,6 +330,28 @@
</span><span class="cx">  *
</span><span class="cx">  * ArrayBuffer :-
</span><span class="cx">  *    ArrayBufferTag &lt;length:uint32_t&gt; &lt;contents:byte{length}&gt;
</span><ins>+ *
+ * CryptoKeyHMAC :-
+ *    &lt;keySize:uint32_t&gt; &lt;keyData:byte{keySize}&gt; CryptoAlgorithmIdentifierTag // Algorithm tag inner hash function.
+ *
+ * CryptoKeyAES :-
+ *    CryptoAlgorithmIdentifierTag &lt;keySize:uint32_t&gt; &lt;keyData:byte{keySize}&gt;
+ *
+ * CryptoKeyRSA :-
+ *    CryptoAlgorithmIdentifierTag &lt;isRestrictedToHash:int32_t&gt; CryptoAlgorithmIdentifierTag? CryptoKeyAsymmetricTypeSubtag CryptoKeyRSAPublicComponents CryptoKeyRSAPrivateComponents?
+ *
+ * CryptoKeyRSAPublicComponents :-
+ *    &lt;modulusSize:uint32_t&gt; &lt;modulus:byte{modulusSize}&gt; &lt;exponentSize:uint32_t&gt; &lt;exponent:byte{exponentSize}&gt;
+ *
+ * CryptoKeyRSAPrivateComponents :-
+ *    &lt;privateExponentSize:uint32_t&gt; &lt;privateExponent:byte{privateExponentSize}&gt; &lt;primeCount:uint32_t&gt; FirstPrimeInfo? PrimeInfo{primeCount - 1}
+ *
+ * // CRT data could be computed from prime factors. It is only serialized to reuse a code path that's needed for JWK.
+ * FirstPrimeInfo :-
+ *    &lt;factorSize:uint32_t&gt; &lt;factor:byte{factorSize}&gt; &lt;crtExponentSize:uint32_t&gt; &lt;crtExponent:byte{crtExponentSize}&gt;
+ *
+ * PrimeInfo :-
+ *    &lt;factorSize:uint32_t&gt; &lt;factor:byte{factorSize}&gt; &lt;crtExponentSize:uint32_t&gt; &lt;crtExponent:byte{crtExponentSize}&gt; &lt;crtCoefficientSize:uint32_t&gt; &lt;crtCoefficient:byte{crtCoefficientSize}&gt;
</ins><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> typedef pair&lt;JSC::JSValue, SerializationReturnCode&gt; DeserializationResult;
</span><span class="lines">@@ -644,13 +741,12 @@
</span><span class="cx">                 write(obj-&gt;internalValue().asNumber());
</span><span class="cx">                 return true;
</span><span class="cx">             }
</span><del>-            if (obj-&gt;inherits(JSFile::info())) {
</del><ins>+            if (File* file = toFile(obj)) {
</ins><span class="cx">                 write(FileTag);
</span><del>-                write(toFile(obj));
</del><ins>+                write(file);
</ins><span class="cx">                 return true;
</span><span class="cx">             }
</span><del>-            if (obj-&gt;inherits(JSFileList::info())) {
-                FileList* list = toFileList(obj);
</del><ins>+            if (FileList* list = toFileList(obj)) {
</ins><span class="cx">                 write(FileListTag);
</span><span class="cx">                 unsigned length = list-&gt;length();
</span><span class="cx">                 write(length);
</span><span class="lines">@@ -658,17 +754,15 @@
</span><span class="cx">                     write(list-&gt;item(i));
</span><span class="cx">                 return true;
</span><span class="cx">             }
</span><del>-            if (obj-&gt;inherits(JSBlob::info())) {
</del><ins>+            if (Blob* blob = toBlob(obj)) {
</ins><span class="cx">                 write(BlobTag);
</span><del>-                Blob* blob = toBlob(obj);
</del><span class="cx">                 m_blobURLs.append(blob-&gt;url());
</span><span class="cx">                 write(blob-&gt;url());
</span><span class="cx">                 write(blob-&gt;type());
</span><span class="cx">                 write(blob-&gt;size());
</span><span class="cx">                 return true;
</span><span class="cx">             }
</span><del>-            if (obj-&gt;inherits(JSImageData::info())) {
-                ImageData* data = toImageData(obj);
</del><ins>+            if (ImageData* data = toImageData(obj)) {
</ins><span class="cx">                 write(ImageDataTag);
</span><span class="cx">                 write(data-&gt;width());
</span><span class="cx">                 write(data-&gt;height());
</span><span class="lines">@@ -702,8 +796,7 @@
</span><span class="cx">                 code = ValidationError;
</span><span class="cx">                 return true;
</span><span class="cx">             }
</span><del>-            if (obj-&gt;inherits(JSArrayBuffer::info())) {
-                RefPtr&lt;ArrayBuffer&gt; arrayBuffer = toArrayBuffer(obj);
</del><ins>+            if (ArrayBuffer* arrayBuffer = toArrayBuffer(obj)) {
</ins><span class="cx">                 if (arrayBuffer-&gt;isNeutered()) {
</span><span class="cx">                     code = ValidationError;
</span><span class="cx">                     return true;
</span><span class="lines">@@ -718,7 +811,7 @@
</span><span class="cx">                     return true;
</span><span class="cx">                 write(ArrayBufferTag);
</span><span class="cx">                 write(arrayBuffer-&gt;byteLength());
</span><del>-                write(static_cast&lt;const uint8_t *&gt;(arrayBuffer-&gt;data()), arrayBuffer-&gt;byteLength());
</del><ins>+                write(static_cast&lt;const uint8_t*&gt;(arrayBuffer-&gt;data()), arrayBuffer-&gt;byteLength());
</ins><span class="cx">                 return true;
</span><span class="cx">             }
</span><span class="cx">             if (obj-&gt;inherits(JSArrayBufferView::info())) {
</span><span class="lines">@@ -728,6 +821,13 @@
</span><span class="cx">                 recordObject(obj);
</span><span class="cx">                 return success;
</span><span class="cx">             }
</span><ins>+#if ENABLE(SUBTLE_CRYPTO)
+            if (CryptoKey* key = toCryptoKey(obj)) {
+                write(CryptoKeyTag);
+                write(key);
+                return true;
+            }
+#endif
</ins><span class="cx"> 
</span><span class="cx">             return false;
</span><span class="cx">         }
</span><span class="lines">@@ -746,6 +846,28 @@
</span><span class="cx">         writeLittleEndian&lt;uint8_t&gt;(m_buffer, static_cast&lt;uint8_t&gt;(tag));
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+#if ENABLE(SUBTLE_CRYPTO)
+    void write(CryptoKeyClassSubtag tag)
+    {
+        writeLittleEndian&lt;uint8_t&gt;(m_buffer, static_cast&lt;uint8_t&gt;(tag));
+    }
+
+    void write(CryptoKeyAsymmetricTypeSubtag tag)
+    {
+        writeLittleEndian&lt;uint8_t&gt;(m_buffer, static_cast&lt;uint8_t&gt;(tag));
+    }
+
+    void write(CryptoKeyUsageTag tag)
+    {
+        writeLittleEndian&lt;uint8_t&gt;(m_buffer, static_cast&lt;uint8_t&gt;(tag));
+    }
+
+    void write(CryptoAlgorithmIdentifierTag tag)
+    {
+        writeLittleEndian&lt;uint8_t&gt;(m_buffer, static_cast&lt;uint8_t&gt;(tag));
+    }
+#endif
+
</ins><span class="cx">     void write(uint8_t c)
</span><span class="cx">     {
</span><span class="cx">         writeLittleEndian(m_buffer, c);
</span><span class="lines">@@ -838,6 +960,13 @@
</span><span class="cx">             write(Identifier(m_exec, str));
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    void write(const Vector&lt;uint8_t&gt;&amp; vector)
+    {
+        uint32_t size = vector.size();
+        write(size);
+        writeLittleEndian(m_buffer, vector.data(), size);
+    }
+
</ins><span class="cx">     void write(const File* file)
</span><span class="cx">     {
</span><span class="cx">         m_blobURLs.append(file-&gt;url());
</span><span class="lines">@@ -846,6 +975,166 @@
</span><span class="cx">         write(file-&gt;type());
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+#if ENABLE(SUBTLE_CRYPTO)
+    void write(CryptoAlgorithmIdentifier algorithm)
+    {
+        switch (algorithm) {
+        case CryptoAlgorithmIdentifier::RSAES_PKCS1_v1_5:
+            write(CryptoAlgorithmIdentifierTag::RSAES_PKCS1_v1_5);
+            break;
+        case CryptoAlgorithmIdentifier::RSASSA_PKCS1_v1_5:
+            write(CryptoAlgorithmIdentifierTag::RSASSA_PKCS1_v1_5);
+            break;
+        case CryptoAlgorithmIdentifier::RSA_PSS:
+            write(CryptoAlgorithmIdentifierTag::RSA_PSS);
+            break;
+        case CryptoAlgorithmIdentifier::RSA_OAEP:
+            write(CryptoAlgorithmIdentifierTag::RSA_OAEP);
+            break;
+        case CryptoAlgorithmIdentifier::ECDSA:
+            write(CryptoAlgorithmIdentifierTag::ECDSA);
+            break;
+        case CryptoAlgorithmIdentifier::ECDH:
+            write(CryptoAlgorithmIdentifierTag::ECDH);
+            break;
+        case CryptoAlgorithmIdentifier::AES_CTR:
+            write(CryptoAlgorithmIdentifierTag::AES_CTR);
+            break;
+        case CryptoAlgorithmIdentifier::AES_CBC:
+            write(CryptoAlgorithmIdentifierTag::AES_CBC);
+            break;
+        case CryptoAlgorithmIdentifier::AES_CMAC:
+            write(CryptoAlgorithmIdentifierTag::AES_CMAC);
+            break;
+        case CryptoAlgorithmIdentifier::AES_GCM:
+            write(CryptoAlgorithmIdentifierTag::AES_GCM);
+            break;
+        case CryptoAlgorithmIdentifier::AES_CFB:
+            write(CryptoAlgorithmIdentifierTag::AES_CFB);
+            break;
+        case CryptoAlgorithmIdentifier::AES_KW:
+            write(CryptoAlgorithmIdentifierTag::AES_KW);
+            break;
+        case CryptoAlgorithmIdentifier::HMAC:
+            write(CryptoAlgorithmIdentifierTag::HMAC);
+            break;
+        case CryptoAlgorithmIdentifier::DH:
+            write(CryptoAlgorithmIdentifierTag::DH);
+            break;
+        case CryptoAlgorithmIdentifier::SHA_1:
+            write(CryptoAlgorithmIdentifierTag::SHA_1);
+            break;
+        case CryptoAlgorithmIdentifier::SHA_224:
+            write(CryptoAlgorithmIdentifierTag::SHA_224);
+            break;
+        case CryptoAlgorithmIdentifier::SHA_256:
+            write(CryptoAlgorithmIdentifierTag::SHA_256);
+            break;
+        case CryptoAlgorithmIdentifier::SHA_384:
+            write(CryptoAlgorithmIdentifierTag::SHA_384);
+            break;
+        case CryptoAlgorithmIdentifier::SHA_512:
+            write(CryptoAlgorithmIdentifierTag::SHA_512);
+            break;
+        case CryptoAlgorithmIdentifier::CONCAT:
+            write(CryptoAlgorithmIdentifierTag::CONCAT);
+            break;
+        case CryptoAlgorithmIdentifier::HKDF_CTR:
+            write(CryptoAlgorithmIdentifierTag::HKDF_CTR);
+            break;
+        case CryptoAlgorithmIdentifier::PBKDF2:
+            write(CryptoAlgorithmIdentifierTag::PBKDF2);
+            break;
+        }
+    }
+
+    void write(CryptoKeyDataRSAComponents::Type type)
+    {
+        switch (type) {
+        case CryptoKeyDataRSAComponents::Type::Public:
+            write(CryptoKeyAsymmetricTypeSubtag::Public);
+            return;
+        case CryptoKeyDataRSAComponents::Type::Private:
+            write(CryptoKeyAsymmetricTypeSubtag::Private);
+            return;
+        }
+    }
+
+    void write(const CryptoKeyDataRSAComponents&amp; key)
+    {
+        write(key.type());
+        write(key.modulus());
+        write(key.exponent());
+        if (key.type() == CryptoKeyDataRSAComponents::Type::Public)
+            return;
+
+        write(key.privateExponent());
+
+        unsigned primeCount = key.hasAdditionalPrivateKeyParameters() ? key.otherPrimeInfos().size() + 2 : 0;
+        write(primeCount);
+        if (!primeCount)
+            return;
+
+        write(key.firstPrimeInfo().primeFactor);
+        write(key.firstPrimeInfo().factorCRTExponent);
+        write(key.secondPrimeInfo().primeFactor);
+        write(key.secondPrimeInfo().factorCRTExponent);
+        write(key.secondPrimeInfo().factorCRTCoefficient);
+        for (unsigned i = 2; i &lt; primeCount; ++i) {
+            write(key.otherPrimeInfos()[i].primeFactor);
+            write(key.otherPrimeInfos()[i].factorCRTExponent);
+            write(key.otherPrimeInfos()[i].factorCRTCoefficient);
+        }
+    }
+
+    void write(const CryptoKey* key)
+    {
+        write(key-&gt;extractable());
+
+        CryptoKeyUsage usages = key-&gt;usagesBitmap();
+        write(countUsages(usages));
+        if (usages &amp; CryptoKeyUsageEncrypt)
+            write(CryptoKeyUsageTag::Encrypt);
+        if (usages &amp; CryptoKeyUsageDecrypt)
+            write(CryptoKeyUsageTag::Decrypt);
+        if (usages &amp; CryptoKeyUsageSign)
+            write(CryptoKeyUsageTag::Sign);
+        if (usages &amp; CryptoKeyUsageVerify)
+            write(CryptoKeyUsageTag::Verify);
+        if (usages &amp; CryptoKeyUsageDeriveKey)
+            write(CryptoKeyUsageTag::DeriveKey);
+        if (usages &amp; CryptoKeyUsageDeriveBits)
+            write(CryptoKeyUsageTag::DeriveBits);
+        if (usages &amp; CryptoKeyUsageWrapKey)
+            write(CryptoKeyUsageTag::WrapKey);
+        if (usages &amp; CryptoKeyUsageUnwrapKey)
+            write(CryptoKeyUsageTag::UnwrapKey);
+
+        switch (key-&gt;keyClass()) {
+        case CryptoKeyClass::HMAC:
+            write(CryptoKeyClassSubtag::HMAC);
+            write(toCryptoKeyHMAC(key)-&gt;key());
+            write(toCryptoKeyHMAC(key)-&gt;hashAlgorithmIdentifier());
+            break;
+        case CryptoKeyClass::AES:
+            write(CryptoKeyClassSubtag::AES);
+            write(key-&gt;algorithmIdentifier());
+            write(toCryptoKeyAES(key)-&gt;key());
+            break;
+        case CryptoKeyClass::RSA:
+            write(CryptoKeyClassSubtag::RSA);
+            write(key-&gt;algorithmIdentifier());
+            CryptoAlgorithmIdentifier hash;
+            bool isRestrictedToHash = toCryptoKeyRSA(key)-&gt;isRestrictedToHash(hash);
+            write(isRestrictedToHash);
+            if (isRestrictedToHash)
+                write(hash);
+            write(toCryptoKeyDataRSAComponents(*key-&gt;exportData()));
+            break;
+        }
+    }
+#endif
+
</ins><span class="cx">     void write(const uint8_t* data, unsigned length)
</span><span class="cx">     {
</span><span class="cx">         m_buffer.append(data, length);
</span><span class="lines">@@ -1457,6 +1746,307 @@
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    bool read(Vector&lt;uint8_t&gt;&amp; result)
+    {
+        ASSERT(result.isEmpty());
+        uint32_t size;
+        if (!read(size))
+            return false;
+        if (m_ptr + size &gt; m_end)
+            return false;
+        result.append(m_ptr, size);
+        m_ptr += size;
+        return true;
+    }
+
+#if ENABLE(SUBTLE_CRYPTO)
+    bool read(CryptoAlgorithmIdentifier&amp; result)
+    {
+        uint8_t algorithmTag;
+        if (!read(algorithmTag))
+            return false;
+        if (algorithmTag &gt; cryptoAlgorithmIdentifierTagMaximumValue)
+            return false;
+        switch (static_cast&lt;CryptoAlgorithmIdentifierTag&gt;(algorithmTag)) {
+        case CryptoAlgorithmIdentifierTag::RSAES_PKCS1_v1_5:
+            result = CryptoAlgorithmIdentifier::RSAES_PKCS1_v1_5;
+            break;
+        case CryptoAlgorithmIdentifierTag::RSASSA_PKCS1_v1_5:
+            result = CryptoAlgorithmIdentifier::RSASSA_PKCS1_v1_5;
+            break;
+        case CryptoAlgorithmIdentifierTag::RSA_PSS:
+            result = CryptoAlgorithmIdentifier::RSA_PSS;
+            break;
+        case CryptoAlgorithmIdentifierTag::RSA_OAEP:
+            result = CryptoAlgorithmIdentifier::RSA_OAEP;
+            break;
+        case CryptoAlgorithmIdentifierTag::ECDSA:
+            result = CryptoAlgorithmIdentifier::ECDSA;
+            break;
+        case CryptoAlgorithmIdentifierTag::ECDH:
+            result = CryptoAlgorithmIdentifier::ECDH;
+            break;
+        case CryptoAlgorithmIdentifierTag::AES_CTR:
+            result = CryptoAlgorithmIdentifier::AES_CTR;
+            break;
+        case CryptoAlgorithmIdentifierTag::AES_CBC:
+            result = CryptoAlgorithmIdentifier::AES_CBC;
+            break;
+        case CryptoAlgorithmIdentifierTag::AES_CMAC:
+            result = CryptoAlgorithmIdentifier::AES_CMAC;
+            break;
+        case CryptoAlgorithmIdentifierTag::AES_GCM:
+            result = CryptoAlgorithmIdentifier::AES_GCM;
+            break;
+        case CryptoAlgorithmIdentifierTag::AES_CFB:
+            result = CryptoAlgorithmIdentifier::AES_CFB;
+            break;
+        case CryptoAlgorithmIdentifierTag::AES_KW:
+            result = CryptoAlgorithmIdentifier::AES_KW;
+            break;
+        case CryptoAlgorithmIdentifierTag::HMAC:
+            result = CryptoAlgorithmIdentifier::HMAC;
+            break;
+        case CryptoAlgorithmIdentifierTag::DH:
+            result = CryptoAlgorithmIdentifier::DH;
+            break;
+        case CryptoAlgorithmIdentifierTag::SHA_1:
+            result = CryptoAlgorithmIdentifier::SHA_1;
+            break;
+        case CryptoAlgorithmIdentifierTag::SHA_224:
+            result = CryptoAlgorithmIdentifier::SHA_224;
+            break;
+        case CryptoAlgorithmIdentifierTag::SHA_256:
+            result = CryptoAlgorithmIdentifier::SHA_256;
+            break;
+        case CryptoAlgorithmIdentifierTag::SHA_384:
+            result = CryptoAlgorithmIdentifier::SHA_384;
+            break;
+        case CryptoAlgorithmIdentifierTag::SHA_512:
+            result = CryptoAlgorithmIdentifier::SHA_512;
+            break;
+        case CryptoAlgorithmIdentifierTag::CONCAT:
+            result = CryptoAlgorithmIdentifier::CONCAT;
+            break;
+        case CryptoAlgorithmIdentifierTag::HKDF_CTR:
+            result = CryptoAlgorithmIdentifier::HKDF_CTR;
+            break;
+        case CryptoAlgorithmIdentifierTag::PBKDF2:
+            result = CryptoAlgorithmIdentifier::PBKDF2;
+            break;
+        }
+        return true;
+    }
+
+    bool read(CryptoKeyClassSubtag&amp; result)
+    {
+        uint8_t tag;
+        if (!read(tag))
+            return false;
+        if (tag &gt; cryptoKeyClassSubtagMaximumValue)
+            return false;
+        result = static_cast&lt;CryptoKeyClassSubtag&gt;(tag);
+        return true;
+    }
+
+    bool read(CryptoKeyUsageTag&amp; result)
+    {
+        uint8_t tag;
+        if (!read(tag))
+            return false;
+        if (tag &gt; cryptoKeyUsageTagMaximumValue)
+            return false;
+        result = static_cast&lt;CryptoKeyUsageTag&gt;(tag);
+        return true;
+    }
+
+    bool read(CryptoKeyAsymmetricTypeSubtag&amp; result)
+    {
+        uint8_t tag;
+        if (!read(tag))
+            return false;
+        if (tag &gt; cryptoKeyAsymmetricTypeSubtagMaximumValue)
+            return false;
+        result = static_cast&lt;CryptoKeyAsymmetricTypeSubtag&gt;(tag);
+        return true;
+    }
+
+    bool readHMACKey(bool extractable, CryptoKeyUsage usages, RefPtr&lt;CryptoKey&gt;&amp; result)
+    {
+        Vector&lt;uint8_t&gt; keyData;
+        if (!read(keyData))
+            return false;
+        CryptoAlgorithmIdentifier hash;
+        if (!read(hash))
+            return false;
+        result = CryptoKeyHMAC::create(keyData, hash, extractable, usages);
+        return true;
+    }
+
+    bool readAESKey(bool extractable, CryptoKeyUsage usages, RefPtr&lt;CryptoKey&gt;&amp; result)
+    {
+        CryptoAlgorithmIdentifier algorithm;
+        if (!read(algorithm))
+            return false;
+        if (!CryptoKeyAES::isValidAESAlgorithm(algorithm))
+            return false;
+        Vector&lt;uint8_t&gt; keyData;
+        if (!read(keyData))
+            return false;
+        result = CryptoKeyAES::create(algorithm, keyData, extractable, usages);
+        return true;
+    }
+
+    bool readRSAKey(bool extractable, CryptoKeyUsage usages, RefPtr&lt;CryptoKey&gt;&amp; result)
+    {
+        CryptoAlgorithmIdentifier algorithm;
+        if (!read(algorithm))
+            return false;
+
+        int32_t isRestrictedToHash;
+        CryptoAlgorithmIdentifier hash;
+        if (!read(isRestrictedToHash))
+            return false;
+        if (isRestrictedToHash &amp;&amp; !read(hash))
+            return false;
+
+        CryptoKeyAsymmetricTypeSubtag type;
+        if (!read(type))
+            return false;
+
+        Vector&lt;uint8_t&gt; modulus;
+        if (!read(modulus))
+            return false;
+        Vector&lt;uint8_t&gt; exponent;
+        if (!read(exponent))
+            return false;
+
+        if (type == CryptoKeyAsymmetricTypeSubtag::Public) {
+            auto keyData = CryptoKeyDataRSAComponents::createPublic(modulus, exponent);
+            auto key = CryptoKeyRSA::create(algorithm, *keyData, extractable, usages);
+            if (isRestrictedToHash)
+                key-&gt;restrictToHash(hash);
+            result = std::move(key);
+            return true;
+        }
+
+        Vector&lt;uint8_t&gt; privateExponent;
+        if (!read(privateExponent))
+            return false;
+
+        uint32_t primeCount;
+        if (!read(primeCount))
+            return false;
+
+        if (!primeCount) {
+            auto keyData = CryptoKeyDataRSAComponents::createPrivate(modulus, exponent, privateExponent);
+            auto key = CryptoKeyRSA::create(algorithm, *keyData, extractable, usages);
+            if (isRestrictedToHash)
+                key-&gt;restrictToHash(hash);
+            result = std::move(key);
+            return true;
+        }
+
+        if (primeCount &lt; 2)
+            return false;
+
+        CryptoKeyDataRSAComponents::PrimeInfo firstPrimeInfo;
+        CryptoKeyDataRSAComponents::PrimeInfo secondPrimeInfo;
+        Vector&lt;CryptoKeyDataRSAComponents::PrimeInfo&gt; otherPrimeInfos(primeCount - 2);
+
+        if (!read(firstPrimeInfo.primeFactor))
+            return false;
+        if (!read(firstPrimeInfo.factorCRTExponent))
+            return false;
+        if (!read(secondPrimeInfo.primeFactor))
+            return false;
+        if (!read(secondPrimeInfo.factorCRTExponent))
+            return false;
+        if (!read(secondPrimeInfo.factorCRTCoefficient))
+            return false;
+        for (unsigned i = 2; i &lt; primeCount; ++i) {
+            if (!read(otherPrimeInfos[i].primeFactor))
+                return false;
+            if (!read(otherPrimeInfos[i].factorCRTExponent))
+                return false;
+            if (!read(otherPrimeInfos[i].factorCRTCoefficient))
+                return false;
+        }
+
+        auto keyData = CryptoKeyDataRSAComponents::createPrivateWithAdditionalData(modulus, exponent, privateExponent, firstPrimeInfo, secondPrimeInfo, otherPrimeInfos);
+        auto key = CryptoKeyRSA::create(algorithm, *keyData, extractable, usages);
+        if (isRestrictedToHash)
+            key-&gt;restrictToHash(hash);
+        result = std::move(key);
+        return true;
+    }
+
+    bool readCryptoKey(JSValue&amp; cryptoKey)
+    {
+        int32_t extractable;
+        if (!read(extractable))
+            return false;
+
+        uint32_t usagesCount;
+        if (!read(usagesCount))
+            return false;
+
+        CryptoKeyUsage usages = 0;
+        for (uint32_t i = 0; i &lt; usagesCount; ++i) {
+            CryptoKeyUsageTag usage;
+            if (!read(usage))
+                return false;
+            switch (usage) {
+            case CryptoKeyUsageTag::Encrypt:
+                usages |= CryptoKeyUsageEncrypt;
+                break;
+            case CryptoKeyUsageTag::Decrypt:
+                usages |= CryptoKeyUsageDecrypt;
+                break;
+            case CryptoKeyUsageTag::Sign:
+                usages |= CryptoKeyUsageSign;
+                break;
+            case CryptoKeyUsageTag::Verify:
+                usages |= CryptoKeyUsageVerify;
+                break;
+            case CryptoKeyUsageTag::DeriveKey:
+                usages |= CryptoKeyUsageDeriveKey;
+                break;
+            case CryptoKeyUsageTag::DeriveBits:
+                usages |= CryptoKeyUsageDeriveBits;
+                break;
+            case CryptoKeyUsageTag::WrapKey:
+                usages |= CryptoKeyUsageWrapKey;
+                break;
+            case CryptoKeyUsageTag::UnwrapKey:
+                usages |= CryptoKeyUsageUnwrapKey;
+                break;
+            }
+        }
+
+        CryptoKeyClassSubtag cryptoKeyClass;
+        if (!read(cryptoKeyClass))
+            return false;
+        RefPtr&lt;CryptoKey&gt; result;
+        switch (cryptoKeyClass) {
+        case CryptoKeyClassSubtag::HMAC:
+            if (!readHMACKey(extractable, usages, result))
+                return false;
+            break;
+        case CryptoKeyClassSubtag::AES:
+            if (!readAESKey(extractable, usages, result))
+                return false;
+            break;
+        case CryptoKeyClassSubtag::RSA:
+            if (!readRSAKey(extractable, usages, result))
+                return false;
+            break;
+        }
+        cryptoKey = getJSValue(result.get());
+        return true;
+    }
+#endif
+
</ins><span class="cx">     template&lt;class T&gt;
</span><span class="cx">     JSValue getJSValue(T* nativeObj)
</span><span class="cx">     {
</span><span class="lines">@@ -1662,6 +2252,17 @@
</span><span class="cx">             m_gcBuffer.append(arrayBufferView);
</span><span class="cx">             return arrayBufferView;
</span><span class="cx">         }
</span><ins>+#if ENABLE(SUBTLE_CRYPTO)
+        case CryptoKeyTag: {
+            JSValue cryptoKey;
+            if (!readCryptoKey(cryptoKey)) {
+                fail();
+                return JSValue();
+            }
+            m_gcBuffer.append(cryptoKey);
+            return cryptoKey;
+        }
+#endif
</ins><span class="cx">         default:
</span><span class="cx">             m_ptr--; // Push the tag back
</span><span class="cx">             return JSValue();
</span><span class="lines">@@ -2006,10 +2607,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><del>-ScriptValue SerializedScriptValue::deserializeForInspector(JSC::ExecState* scriptState)
</del><ins>+Deprecated::ScriptValue SerializedScriptValue::deserializeForInspector(JSC::ExecState* scriptState)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = deserialize(scriptState, scriptState-&gt;lexicalGlobalObject(), 0);
</span><del>-    return ScriptValue(scriptState-&gt;vm(), value);
</del><ins>+    return Deprecated::ScriptValue(scriptState-&gt;vm(), value);
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -2053,6 +2654,23 @@
</span><span class="cx">     return adoptRef(new SerializedScriptValue(buffer));
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+PassRefPtr&lt;SerializedScriptValue&gt; SerializedScriptValue::serialize(const Deprecated::ScriptValue&amp; value, JSC::ExecState* scriptState, SerializationErrorMode throwExceptions)
+{
+    return SerializedScriptValue::create(scriptState, value.jsValue(), nullptr, nullptr, throwExceptions);
+}
+
+PassRefPtr&lt;SerializedScriptValue&gt; SerializedScriptValue::serialize(const Deprecated::ScriptValue&amp; value, JSC::ExecState* scriptState, MessagePortArray* messagePorts, ArrayBufferArray* arrayBuffers, bool&amp; didThrow)
+{
+    RefPtr&lt;SerializedScriptValue&gt; serializedValue = SerializedScriptValue::create(scriptState, value.jsValue(), messagePorts, arrayBuffers);
+    didThrow = scriptState-&gt;hadException();
+    return serializedValue.release();
+}
+
+Deprecated::ScriptValue SerializedScriptValue::deserialize(JSC::ExecState* scriptState, SerializedScriptValue* value, SerializationErrorMode throwExceptions)
+{
+    return Deprecated::ScriptValue(scriptState-&gt;vm(), value-&gt;deserialize(scriptState, scriptState-&gt;lexicalGlobalObject(), 0, throwExceptions));
+}
+
</ins><span class="cx"> void SerializedScriptValue::maybeThrowExceptionIfSerializationFailed(ExecState* exec, SerializationReturnCode code)
</span><span class="cx"> {
</span><span class="cx">     if (code == SuccessfullyCompleted)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsjsSerializedScriptValueh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/js/SerializedScriptValue.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/js/SerializedScriptValue.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/js/SerializedScriptValue.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -28,6 +28,7 @@
</span><span class="cx"> #define SerializedScriptValue_h
</span><span class="cx"> 
</span><span class="cx"> #include &quot;ScriptState.h&quot;
</span><ins>+#include &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> #include &lt;heap/Strong.h&gt;
</span><span class="cx"> #include &lt;runtime/ArrayBuffer.h&gt;
</span><span class="cx"> #include &lt;runtime/JSCJSValue.h&gt;
</span><span class="lines">@@ -57,7 +58,6 @@
</span><span class="cx">     
</span><span class="cx"> enum SerializationErrorMode { NonThrowing, Throwing };
</span><span class="cx"> 
</span><del>-class ScriptValue;
</del><span class="cx"> class SharedBuffer;
</span><span class="cx"> 
</span><span class="cx"> class SerializedScriptValue :
</span><span class="lines">@@ -67,8 +67,7 @@
</span><span class="cx">     public RefCounted&lt;SerializedScriptValue&gt; {
</span><span class="cx"> #endif
</span><span class="cx"> public:
</span><del>-    static PassRefPtr&lt;SerializedScriptValue&gt; create(JSC::ExecState*, JSC::JSValue, MessagePortArray*, ArrayBufferArray*,
-                                                    SerializationErrorMode = Throwing);
</del><ins>+    static PassRefPtr&lt;SerializedScriptValue&gt; create(JSC::ExecState*, JSC::JSValue, MessagePortArray*, ArrayBufferArray*, SerializationErrorMode = Throwing);
</ins><span class="cx">     static PassRefPtr&lt;SerializedScriptValue&gt; create(JSContextRef, JSValueRef, MessagePortArray*, ArrayBufferArray*, JSValueRef* exception);
</span><span class="cx">     static PassRefPtr&lt;SerializedScriptValue&gt; create(JSContextRef, JSValueRef, JSValueRef* exception);
</span><span class="cx"> 
</span><span class="lines">@@ -83,6 +82,10 @@
</span><span class="cx">     static PassRefPtr&lt;SerializedScriptValue&gt; undefinedValue();
</span><span class="cx">     static PassRefPtr&lt;SerializedScriptValue&gt; booleanValue(bool value);
</span><span class="cx"> 
</span><ins>+    static PassRefPtr&lt;SerializedScriptValue&gt; serialize(const Deprecated::ScriptValue&amp;, JSC::ExecState*, SerializationErrorMode = Throwing);
+    static PassRefPtr&lt;SerializedScriptValue&gt; serialize(const Deprecated::ScriptValue&amp;, JSC::ExecState*, MessagePortArray*, ArrayBufferArray*, bool&amp;);
+    static Deprecated::ScriptValue deserialize(JSC::ExecState*, SerializedScriptValue*, SerializationErrorMode = Throwing);
+
</ins><span class="cx">     static uint32_t wireFormatVersion();
</span><span class="cx"> 
</span><span class="cx">     String toString();
</span><span class="lines">@@ -92,7 +95,7 @@
</span><span class="cx">     JSValueRef deserialize(JSContextRef, JSValueRef* exception);
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><del>-    ScriptValue deserializeForInspector(JSC::ExecState*);
</del><ins>+    Deprecated::ScriptValue deserializeForInspector(JSC::ExecState*);
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     const Vector&lt;uint8_t&gt;&amp; data() const { return m_data; }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsjsWorkerScriptControllercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/js/WorkerScriptController.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/js/WorkerScriptController.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/js/WorkerScriptController.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -31,12 +31,12 @@
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><span class="cx"> #include &quot;JSDedicatedWorkerGlobalScope.h&quot;
</span><span class="cx"> #include &quot;ScriptSourceCode.h&quot;
</span><del>-#include &quot;ScriptValue.h&quot;
</del><span class="cx"> #include &quot;WebCoreJSClientData.h&quot;
</span><span class="cx"> #include &quot;WorkerGlobalScope.h&quot;
</span><span class="cx"> #include &quot;WorkerObjectProxy.h&quot;
</span><span class="cx"> #include &quot;WorkerScriptDebugServer.h&quot;
</span><span class="cx"> #include &quot;WorkerThread.h&quot;
</span><ins>+#include &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> #include &lt;heap/StrongInlines.h&gt;
</span><span class="cx"> #include &lt;interpreter/Interpreter.h&gt;
</span><span class="cx"> #include &lt;runtime/Completion.h&gt;
</span><span class="lines">@@ -113,7 +113,7 @@
</span><span class="cx">     if (isExecutionForbidden())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    ScriptValue exception;
</del><ins>+    Deprecated::ScriptValue exception;
</ins><span class="cx">     evaluate(sourceCode, &amp;exception);
</span><span class="cx">     if (exception.jsValue()) {
</span><span class="cx">         JSLockHolder lock(vm());
</span><span class="lines">@@ -121,7 +121,7 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WorkerScriptController::evaluate(const ScriptSourceCode&amp; sourceCode, ScriptValue* exception)
</del><ins>+void WorkerScriptController::evaluate(const ScriptSourceCode&amp; sourceCode, Deprecated::ScriptValue* exception)
</ins><span class="cx"> {
</span><span class="cx">     if (isExecutionForbidden())
</span><span class="cx">         return;
</span><span class="lines">@@ -145,13 +145,13 @@
</span><span class="cx">         int columnNumber = 0;
</span><span class="cx">         String sourceURL = sourceCode.url().string();
</span><span class="cx">         if (m_workerGlobalScope-&gt;sanitizeScriptError(errorMessage, lineNumber, columnNumber, sourceURL, sourceCode.cachedScript()))
</span><del>-            *exception = ScriptValue(*m_vm, exec-&gt;vm().throwException(exec, createError(exec, errorMessage.impl())));
</del><ins>+            *exception = Deprecated::ScriptValue(*m_vm, exec-&gt;vm().throwException(exec, createError(exec, errorMessage.impl())));
</ins><span class="cx">         else
</span><del>-            *exception = ScriptValue(*m_vm, evaluationException);
</del><ins>+            *exception = Deprecated::ScriptValue(*m_vm, evaluationException);
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WorkerScriptController::setException(const ScriptValue&amp; exception)
</del><ins>+void WorkerScriptController::setException(const Deprecated::ScriptValue&amp; exception)
</ins><span class="cx"> {
</span><span class="cx">     m_workerGlobalScopeWrapper-&gt;globalExec()-&gt;vm().throwException(m_workerGlobalScopeWrapper-&gt;globalExec(), exception.jsValue());
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsjsWorkerScriptControllerh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/js/WorkerScriptController.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/js/WorkerScriptController.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/js/WorkerScriptController.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -33,15 +33,18 @@
</span><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><span class="cx"> #include &lt;wtf/Threading.h&gt;
</span><span class="cx"> 
</span><ins>+namespace Deprecated {
+class ScriptValue;
+}
+
</ins><span class="cx"> namespace JSC {
</span><del>-    class VM;
</del><ins>+class VM;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx">     class JSWorkerGlobalScope;
</span><span class="cx">     class ScriptSourceCode;
</span><del>-    class ScriptValue;
</del><span class="cx">     class WorkerGlobalScope;
</span><span class="cx"> 
</span><span class="cx">     class WorkerScriptController {
</span><span class="lines">@@ -57,9 +60,9 @@
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         void evaluate(const ScriptSourceCode&amp;);
</span><del>-        void evaluate(const ScriptSourceCode&amp;, ScriptValue* exception);
</del><ins>+        void evaluate(const ScriptSourceCode&amp;, Deprecated::ScriptValue* exception);
</ins><span class="cx"> 
</span><del>-        void setException(const ScriptValue&amp;);
</del><ins>+        void setException(const Deprecated::ScriptValue&amp;);
</ins><span class="cx"> 
</span><span class="cx">         // Async request to terminate a JS run execution. Eventually causes termination
</span><span class="cx">         // exception raised during JS execution, if the worker thread happens to run JS.
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsscriptsCodeGeneratorGObjectpm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -188,8 +188,7 @@
</span><span class="cx">     my $attribute = shift;
</span><span class="cx"> 
</span><span class="cx">     if ($attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;Custom&quot;}
</span><del>-        || $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;CustomGetter&quot;}
-        || $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;CustomSetter&quot;}) {
</del><ins>+        || $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;CustomGetter&quot;}) {
</ins><span class="cx">         return 1;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -245,6 +244,7 @@
</span><span class="cx"> sub SkipFunction {
</span><span class="cx">     my $object = shift;
</span><span class="cx">     my $function = shift;
</span><ins>+    my $parentNode = shift;
</ins><span class="cx">     my $decamelize = shift;
</span><span class="cx">     my $prefix = shift;
</span><span class="cx"> 
</span><span class="lines">@@ -288,7 +288,27 @@
</span><span class="cx">         return 1;
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    # Skip dispatch_event methods, except the one already deprecated.
+    if ($parentNode-&gt;extendedAttributes-&gt;{&quot;EventTarget&quot;} &amp;&amp; $function-&gt;signature-&gt;name eq &quot;dispatchEvent&quot;
+        &amp;&amp; $functionName ne &quot;webkit_dom_audio_track_list_dispatch_event&quot;
+        &amp;&amp; $functionName ne &quot;webkit_dom_battery_manager_dispatch_event&quot;
+        &amp;&amp; $functionName ne &quot;webkit_dom_dom_application_cache_dispatch_event&quot;
+        &amp;&amp; $functionName ne &quot;webkit_dom_dom_window_dispatch_event&quot;
+        &amp;&amp; $functionName ne &quot;webkit_dom_node_dispatch_event&quot;
+        &amp;&amp; $functionName ne &quot;webkit_dom_text_track_cue_dispatch_event&quot;
+        &amp;&amp; $functionName ne &quot;webkit_dom_text_track_dispatch_event&quot;
+        &amp;&amp; $functionName ne &quot;webkit_dom_text_track_list_dispatch_event&quot;
+        &amp;&amp; $functionName ne &quot;webkit_dom_video_track_list_dispatch_event&quot;
+        &amp;&amp; $functionName ne &quot;webkit_dom_webkit_named_flow_dispatch_event&quot;
+        &amp;&amp; $functionName ne &quot;webkit_dom_test_event_target_dispatch_event&quot;) {
+        return 1;
+    }
</ins><span class="cx"> 
</span><ins>+    # Skip Console::profile() and Console::profileEnd() as they're not correctly generated for the moment.
+    if ($functionName eq &quot;webkit_dom_console_profile&quot; || $functionName eq &quot;webkit_dom_console_profile_end&quot;) {
+        return 1;
+    }
+
</ins><span class="cx">     if ($function-&gt;signature-&gt;name eq &quot;set&quot; and $parentNode-&gt;extendedAttributes-&gt;{&quot;TypedArray&quot;}) {
</span><span class="cx">         return 1;
</span><span class="cx">     }
</span><span class="lines">@@ -309,7 +329,7 @@
</span><span class="cx">         return 1;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if ($function-&gt;signature-&gt;name eq &quot;timeEnd&quot; || $function-&gt;signature-&gt;name eq &quot;profile&quot; || $function-&gt;signature-&gt;name eq &quot;profileEnd&quot;) {
</del><ins>+    if ($function-&gt;signature-&gt;name eq &quot;timeEnd&quot;) {
</ins><span class="cx">         return 1;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -414,7 +434,8 @@
</span><span class="cx">         # FIXME: We are not generating setters for 'Replaceable'
</span><span class="cx">         # attributes now, but we should somehow.
</span><span class="cx">         my $replaceable = $property-&gt;signature-&gt;extendedAttributes-&gt;{&quot;Replaceable&quot;};
</span><del>-        if (!$property-&gt;isReadOnly &amp;&amp; $hasGtypeSignature &amp;&amp; !$replaceable) {
</del><ins>+        my $custom = $property-&gt;signature-&gt;extendedAttributes-&gt;{&quot;CustomSetter&quot;};
+        if (!$property-&gt;isReadOnly &amp;&amp; $hasGtypeSignature &amp;&amp; !$replaceable &amp;&amp; !$custom) {
</ins><span class="cx">             push(@result, $property);
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="lines">@@ -484,12 +505,10 @@
</span><span class="cx">     my $writeable = !$attribute-&gt;isReadOnly;
</span><span class="cx"> 
</span><span class="cx">     my $mutableString = &quot;read-only&quot;;
</span><del>-    my $custom = $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;Custom&quot;};
-    if ($writeable &amp;&amp; $custom) {
</del><ins>+    my $hasCustomSetter = $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;CustomSetter&quot;};
+    if ($writeable &amp;&amp; $hasCustomSetter) {
</ins><span class="cx">         $mutableStringconst = &quot;read-only (due to custom functions needed in webkitdom)&quot;;
</span><del>-        return;
-    }
-    if ($writeable &amp;&amp; !$custom) {
</del><ins>+    } elsif ($writeable) {
</ins><span class="cx">         $gparamflag = &quot;WEBKIT_PARAM_READWRITE&quot;;
</span><span class="cx">         $mutableStringconst = &quot;read-write&quot;;
</span><span class="cx">     }
</span><span class="lines">@@ -913,7 +932,7 @@
</span><span class="cx"> 
</span><span class="cx">     my $decamelize = decamelize($interfaceName);
</span><span class="cx"> 
</span><del>-    if (SkipFunction($object, $function, $decamelize, $prefix)) {
</del><ins>+    if (SkipFunction($object, $function, $parentNode, $decamelize, $prefix)) {
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -1258,11 +1277,9 @@
</span><span class="cx">             next TOP;
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        if ($attribute-&gt;signature-&gt;name eq &quot;type&quot;
</del><ins>+        if ($attribute-&gt;signature-&gt;name eq &quot;type&quot;) {
</ins><span class="cx">             # This will conflict with the get_type() function we define to return a GType
</span><span class="cx">             # according to GObject conventions.  Skip this for now.
</span><del>-            || $attribute-&gt;signature-&gt;name eq &quot;URL&quot;     # TODO: handle this
-            ) {
</del><span class="cx">             next TOP;
</span><span class="cx">         }
</span><span class="cx">             
</span><span class="lines">@@ -1287,7 +1304,8 @@
</span><span class="cx"> 
</span><span class="cx">         # FIXME: We are not generating setters for 'Replaceable'
</span><span class="cx">         # attributes now, but we should somehow.
</span><del>-        if ($attribute-&gt;isReadOnly || $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;Replaceable&quot;}) {
</del><ins>+        my $custom = $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;CustomSetter&quot;};
+        if ($attribute-&gt;isReadOnly || $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;Replaceable&quot;} || $custom) {
</ins><span class="cx">             next TOP;
</span><span class="cx">         }
</span><span class="cx">         
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsscriptsCodeGeneratorJSpm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -3234,7 +3234,7 @@
</span><span class="cx">     &quot;SerializedScriptValue&quot; =&gt; &quot;RefPtr&lt;SerializedScriptValue&gt;&quot;,
</span><span class="cx">     &quot;Date&quot; =&gt; &quot;double&quot;,
</span><span class="cx">     &quot;Dictionary&quot; =&gt; &quot;Dictionary&quot;,
</span><del>-    &quot;any&quot; =&gt; &quot;ScriptValue&quot;,
</del><ins>+    &quot;any&quot; =&gt; &quot;Deprecated::ScriptValue&quot;,
</ins><span class="cx">     &quot;boolean&quot; =&gt; &quot;bool&quot;,
</span><span class="cx">     &quot;double&quot; =&gt; &quot;double&quot;,
</span><span class="cx">     &quot;float&quot; =&gt; &quot;float&quot;,
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorebindingsscriptstestJSJSTestObjcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1651,7 +1651,7 @@
</span><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(thisObject);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><del>-    ScriptValue nativeValue(exec-&gt;vm(), value);
</del><ins>+    Deprecated::ScriptValue nativeValue(exec-&gt;vm(), value);
</ins><span class="cx">     if (exec-&gt;hadException())
</span><span class="cx">         return;
</span><span class="cx">     impl.setAnyAttribute(nativeValue);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorecryptoCommonCryptoUtilitiesh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/crypto/CommonCryptoUtilities.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/crypto/CommonCryptoUtilities.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/crypto/CommonCryptoUtilities.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -46,6 +46,7 @@
</span><span class="cx"> 
</span><span class="cx"> #ifndef _CC_RSACRYPTOR_H_
</span><span class="cx"> enum {
</span><ins>+    kCCDigestNone = 0,
</ins><span class="cx">     kCCDigestSHA1 = 8,
</span><span class="cx">     kCCDigestSHA224 = 9,
</span><span class="cx">     kCCDigestSHA256 = 10,
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorecryptoCryptoAlgorithmIdentifierh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/crypto/CryptoAlgorithmIdentifier.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/crypto/CryptoAlgorithmIdentifier.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/crypto/CryptoAlgorithmIdentifier.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -42,6 +42,7 @@
</span><span class="cx">     AES_CMAC,
</span><span class="cx">     AES_GCM,
</span><span class="cx">     AES_CFB,
</span><ins>+    AES_KW,
</ins><span class="cx">     HMAC,
</span><span class="cx">     DH,
</span><span class="cx">     SHA_1,
</span><span class="lines">@@ -51,8 +52,7 @@
</span><span class="cx">     SHA_512,
</span><span class="cx">     CONCAT,
</span><span class="cx">     HKDF_CTR,
</span><del>-    PBKDF2,
-    AES_KW // Not yet standardized.
</del><ins>+    PBKDF2
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorecryptoCryptoAlgorithmRegistrycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/crypto/CryptoAlgorithmRegistry.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/crypto/CryptoAlgorithmRegistry.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/crypto/CryptoAlgorithmRegistry.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -35,11 +35,16 @@
</span><span class="cx"> 
</span><span class="cx"> CryptoAlgorithmRegistry&amp; CryptoAlgorithmRegistry::shared()
</span><span class="cx"> {
</span><del>-    ASSERT(isMainThread());
</del><span class="cx">     DEFINE_STATIC_LOCAL(CryptoAlgorithmRegistry, registry, ());
</span><span class="cx">     return registry;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+static Mutex&amp; registryMutex()
+{
+    AtomicallyInitializedStatic(Mutex&amp;, mutex = *new Mutex);
+    return mutex;
+}
+
</ins><span class="cx"> CryptoAlgorithmRegistry::CryptoAlgorithmRegistry()
</span><span class="cx"> {
</span><span class="cx">     platformRegisterAlgorithms();
</span><span class="lines">@@ -50,7 +55,9 @@
</span><span class="cx">     if (name.isEmpty())
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    auto iter = m_nameToIdentifierMap.find(name.lower());
</del><ins>+    MutexLocker lock(registryMutex());
+
+    auto iter = m_nameToIdentifierMap.find(name.isolatedCopy());
</ins><span class="cx">     if (iter == m_nameToIdentifierMap.end())
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="lines">@@ -60,11 +67,15 @@
</span><span class="cx"> 
</span><span class="cx"> String CryptoAlgorithmRegistry::nameForIdentifier(CryptoAlgorithmIdentifier identifier)
</span><span class="cx"> {
</span><del>-    return m_identifierToNameMap.get(static_cast&lt;unsigned&gt;(identifier));
</del><ins>+    MutexLocker lock(registryMutex());
+
+    return m_identifierToNameMap.get(static_cast&lt;unsigned&gt;(identifier)).isolatedCopy();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> std::unique_ptr&lt;CryptoAlgorithm&gt; CryptoAlgorithmRegistry::create(CryptoAlgorithmIdentifier identifier)
</span><span class="cx"> {
</span><ins>+    MutexLocker lock(registryMutex());
+
</ins><span class="cx">     auto iter = m_identifierToConstructorMap.find(static_cast&lt;unsigned&gt;(identifier));
</span><span class="cx">     if (iter == m_identifierToConstructorMap.end())
</span><span class="cx">         return nullptr;
</span><span class="lines">@@ -74,7 +85,7 @@
</span><span class="cx"> 
</span><span class="cx"> void CryptoAlgorithmRegistry::registerAlgorithm(const String&amp; name, CryptoAlgorithmIdentifier identifier, CryptoAlgorithmConstructor constructor)
</span><span class="cx"> {
</span><del>-    ASSERT(name == name.lower());
</del><ins>+    MutexLocker lock(registryMutex());
</ins><span class="cx"> 
</span><span class="cx">     bool added = m_nameToIdentifierMap.add(name, identifier).isNewEntry;
</span><span class="cx">     ASSERT_UNUSED(added, added);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorecryptoCryptoAlgorithmRegistryh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/crypto/CryptoAlgorithmRegistry.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/crypto/CryptoAlgorithmRegistry.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/crypto/CryptoAlgorithmRegistry.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -63,7 +63,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void registerAlgorithm(const String&amp; name, CryptoAlgorithmIdentifier, CryptoAlgorithmConstructor);
</span><del>-    HashMap&lt;String, CryptoAlgorithmIdentifier&gt; m_nameToIdentifierMap;
</del><ins>+    HashMap&lt;String, CryptoAlgorithmIdentifier, CaseFoldingHash&gt; m_nameToIdentifierMap;
</ins><span class="cx">     HashMap&lt;unsigned, String&gt; m_identifierToNameMap;
</span><span class="cx">     HashMap&lt;unsigned, CryptoAlgorithmConstructor&gt; m_identifierToConstructorMap;
</span><span class="cx"> };
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorecryptoCryptoKeycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/crypto/CryptoKey.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/crypto/CryptoKey.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/crypto/CryptoKey.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -67,23 +67,24 @@
</span><span class="cx"> 
</span><span class="cx"> Vector&lt;String&gt; CryptoKey::usages() const
</span><span class="cx"> {
</span><ins>+    // The result is ordered alphabetically.
</ins><span class="cx">     Vector&lt;String&gt; result;
</span><ins>+    if (m_usages &amp; CryptoKeyUsageDecrypt)
+        result.append(ASCIILiteral(&quot;decrypt&quot;));
+    if (m_usages &amp; CryptoKeyUsageDeriveBits)
+        result.append(ASCIILiteral(&quot;deriveBits&quot;));
+    if (m_usages &amp; CryptoKeyUsageDeriveKey)
+        result.append(ASCIILiteral(&quot;deriveKey&quot;));
</ins><span class="cx">     if (m_usages &amp; CryptoKeyUsageEncrypt)
</span><span class="cx">         result.append(ASCIILiteral(&quot;encrypt&quot;));
</span><del>-    if (m_usages &amp; CryptoKeyUsageDecrypt)
-        result.append(ASCIILiteral(&quot;decrypt&quot;));
</del><span class="cx">     if (m_usages &amp; CryptoKeyUsageSign)
</span><span class="cx">         result.append(ASCIILiteral(&quot;sign&quot;));
</span><ins>+    if (m_usages &amp; CryptoKeyUsageUnwrapKey)
+        result.append(ASCIILiteral(&quot;unwrapKey&quot;));
</ins><span class="cx">     if (m_usages &amp; CryptoKeyUsageVerify)
</span><span class="cx">         result.append(ASCIILiteral(&quot;verify&quot;));
</span><del>-    if (m_usages &amp; CryptoKeyUsageDeriveKey)
-        result.append(ASCIILiteral(&quot;deriveKey&quot;));
-    if (m_usages &amp; CryptoKeyUsageDeriveBits)
-        result.append(ASCIILiteral(&quot;deriveBits&quot;));
</del><span class="cx">     if (m_usages &amp; CryptoKeyUsageWrapKey)
</span><span class="cx">         result.append(ASCIILiteral(&quot;wrapKey&quot;));
</span><del>-    if (m_usages &amp; CryptoKeyUsageUnwrapKey)
-        result.append(ASCIILiteral(&quot;unwrapKey&quot;));
</del><span class="cx"> 
</span><span class="cx">     return result;
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorecryptoCryptoKeyidl"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/crypto/CryptoKey.idl (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/crypto/CryptoKey.idl        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/crypto/CryptoKey.idl        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -44,6 +44,7 @@
</span><span class="cx">     Conditional=SUBTLE_CRYPTO,
</span><span class="cx">     GenerateIsReachable=Impl,
</span><span class="cx">     InterfaceName=Key,
</span><ins>+    JSNoStaticTables,
</ins><span class="cx">     NoInterfaceObject,
</span><span class="cx">     SkipVTableValidation
</span><span class="cx"> ] interface CryptoKey {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorecryptoalgorithmsCryptoAlgorithmAES_CBCcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -36,7 +36,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-const char* const CryptoAlgorithmAES_CBC::s_name = &quot;aes-cbc&quot;;
</del><ins>+const char* const CryptoAlgorithmAES_CBC::s_name = &quot;AES-CBC&quot;;
</ins><span class="cx"> 
</span><span class="cx"> CryptoAlgorithmAES_CBC::CryptoAlgorithmAES_CBC()
</span><span class="cx"> {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorecryptoalgorithmsCryptoAlgorithmAES_KWcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -35,7 +35,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-const char* const CryptoAlgorithmAES_KW::s_name = &quot;aes-kw&quot;;
</del><ins>+const char* const CryptoAlgorithmAES_KW::s_name = &quot;AES-KW&quot;;
</ins><span class="cx"> 
</span><span class="cx"> CryptoAlgorithmAES_KW::CryptoAlgorithmAES_KW()
</span><span class="cx"> {
</span><span class="lines">@@ -55,7 +55,7 @@
</span><span class="cx">     return s_identifier;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool CryptoAlgorithmAES_KW::keyAlgorithmMatches(const CryptoAlgorithmParameters&amp;, const CryptoKey&amp; key) const
</del><ins>+bool CryptoAlgorithmAES_KW::keyAlgorithmMatches(const CryptoKey&amp; key) const
</ins><span class="cx"> {
</span><span class="cx">     if (key.algorithmIdentifier() != s_identifier)
</span><span class="cx">         return false;
</span><span class="lines">@@ -64,9 +64,9 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CryptoAlgorithmAES_KW::encryptForWrapKey(const CryptoAlgorithmParameters&amp; parameters, const CryptoKey&amp; key, const CryptoOperationData&amp; data, VectorCallback callback, VoidCallback failureCallback, ExceptionCode&amp; ec)
</del><ins>+void CryptoAlgorithmAES_KW::encryptForWrapKey(const CryptoAlgorithmParameters&amp;, const CryptoKey&amp; key, const CryptoOperationData&amp; data, VectorCallback callback, VoidCallback failureCallback, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><del>-    if (!keyAlgorithmMatches(parameters, key)) {
</del><ins>+    if (!keyAlgorithmMatches(key)) {
</ins><span class="cx">         ec = NOT_SUPPORTED_ERR;
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="lines">@@ -74,9 +74,9 @@
</span><span class="cx">     platformEncrypt(toCryptoKeyAES(key), data, std::move(callback), std::move(failureCallback), ec);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CryptoAlgorithmAES_KW::decryptForUnwrapKey(const CryptoAlgorithmParameters&amp; parameters, const CryptoKey&amp; key, const CryptoOperationData&amp; data, VectorCallback callback, VoidCallback failureCallback, ExceptionCode&amp; ec)
</del><ins>+void CryptoAlgorithmAES_KW::decryptForUnwrapKey(const CryptoAlgorithmParameters&amp;, const CryptoKey&amp; key, const CryptoOperationData&amp; data, VectorCallback callback, VoidCallback failureCallback, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><del>-    if (!keyAlgorithmMatches(parameters, key)) {
</del><ins>+    if (!keyAlgorithmMatches(key)) {
</ins><span class="cx">         ec = NOT_SUPPORTED_ERR;
</span><span class="cx">         return;
</span><span class="cx">     }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorecryptoalgorithmsCryptoAlgorithmAES_KWh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -52,7 +52,7 @@
</span><span class="cx">     CryptoAlgorithmAES_KW();
</span><span class="cx">     virtual ~CryptoAlgorithmAES_KW();
</span><span class="cx"> 
</span><del>-    bool keyAlgorithmMatches(const CryptoAlgorithmParameters&amp;, const CryptoKey&amp;) const;
</del><ins>+    bool keyAlgorithmMatches(const CryptoKey&amp;) const;
</ins><span class="cx">     void platformEncrypt(const CryptoKeyAES&amp;, const CryptoOperationData&amp;, VectorCallback, VoidCallback failureCallback, ExceptionCode&amp;);
</span><span class="cx">     void platformDecrypt(const CryptoKeyAES&amp;, const CryptoOperationData&amp;, VectorCallback, VoidCallback failureCallback, ExceptionCode&amp;);
</span><span class="cx"> };
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorecryptoalgorithmsCryptoAlgorithmHMACcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -36,7 +36,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-const char* const CryptoAlgorithmHMAC::s_name = &quot;hmac&quot;;
</del><ins>+const char* const CryptoAlgorithmHMAC::s_name = &quot;HMAC&quot;;
</ins><span class="cx"> 
</span><span class="cx"> CryptoAlgorithmHMAC::CryptoAlgorithmHMAC()
</span><span class="cx"> {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorecryptoalgorithmsCryptoAlgorithmRSAES_PKCS1_v1_5cpp"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp                                (rev 0)
+++ branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,113 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;CryptoAlgorithmRSAES_PKCS1_v1_5.h&quot;
+
+#if ENABLE(SUBTLE_CRYPTO)
+
+#include &quot;CryptoAlgorithmRsaKeyGenParams.h&quot;
+#include &quot;CryptoKeyDataRSAComponents.h&quot;
+#include &quot;CryptoKeyRSA.h&quot;
+#include &quot;ExceptionCode.h&quot;
+
+namespace WebCore {
+
+const char* const CryptoAlgorithmRSAES_PKCS1_v1_5::s_name = &quot;RSAES-PKCS1-v1_5&quot;;
+
+CryptoAlgorithmRSAES_PKCS1_v1_5::CryptoAlgorithmRSAES_PKCS1_v1_5()
+{
+}
+
+CryptoAlgorithmRSAES_PKCS1_v1_5::~CryptoAlgorithmRSAES_PKCS1_v1_5()
+{
+}
+
+std::unique_ptr&lt;CryptoAlgorithm&gt; CryptoAlgorithmRSAES_PKCS1_v1_5::create()
+{
+    return std::unique_ptr&lt;CryptoAlgorithm&gt;(new CryptoAlgorithmRSAES_PKCS1_v1_5);
+}
+
+CryptoAlgorithmIdentifier CryptoAlgorithmRSAES_PKCS1_v1_5::identifier() const
+{
+    return s_identifier;
+}
+
+bool CryptoAlgorithmRSAES_PKCS1_v1_5::keyAlgorithmMatches(const CryptoKey&amp; key) const
+{
+    if (key.algorithmIdentifier() != s_identifier)
+        return false;
+    ASSERT(isCryptoKeyRSA(key));
+
+    return true;
+}
+
+void CryptoAlgorithmRSAES_PKCS1_v1_5::encrypt(const CryptoAlgorithmParameters&amp;, const CryptoKey&amp; key, const CryptoOperationData&amp; data, VectorCallback callback, VoidCallback failureCallback, ExceptionCode&amp; ec)
+{
+    if (!keyAlgorithmMatches(key)) {
+        ec = NOT_SUPPORTED_ERR;
+        return;
+    }
+
+    platformEncrypt(toCryptoKeyRSA(key), data, std::move(callback), std::move(failureCallback), ec);
+}
+
+void CryptoAlgorithmRSAES_PKCS1_v1_5::decrypt(const CryptoAlgorithmParameters&amp;, const CryptoKey&amp; key, const CryptoOperationData&amp; data, VectorCallback callback, VoidCallback failureCallback, ExceptionCode&amp; ec)
+{
+    if (!keyAlgorithmMatches(key)) {
+        ec = NOT_SUPPORTED_ERR;
+        return;
+    }
+
+    platformDecrypt(toCryptoKeyRSA(key), data, std::move(callback), std::move(failureCallback), ec);
+}
+
+void CryptoAlgorithmRSAES_PKCS1_v1_5::generateKey(const CryptoAlgorithmParameters&amp; parameters, bool extractable, CryptoKeyUsage usages, KeyOrKeyPairCallback callback, VoidCallback failureCallback, ExceptionCode&amp;)
+{
+    const CryptoAlgorithmRsaKeyGenParams&amp; rsaParameters = toCryptoAlgorithmRsaKeyGenParams(parameters);
+
+    auto keyPairCallback = [callback](CryptoKeyPair&amp; pair) {
+        callback(nullptr, &amp;pair);
+    };
+
+    CryptoKeyRSA::generatePair(CryptoAlgorithmIdentifier::RSAES_PKCS1_v1_5, rsaParameters.modulusLength, rsaParameters.publicExponent, extractable, usages, std::move(keyPairCallback), std::move(failureCallback));
+}
+
+void CryptoAlgorithmRSAES_PKCS1_v1_5::importKey(const CryptoAlgorithmParameters&amp;, const CryptoKeyData&amp; keyData, bool extractable, CryptoKeyUsage usage, KeyCallback callback, VoidCallback failureCallback, ExceptionCode&amp;)
+{
+    const CryptoKeyDataRSAComponents&amp; rsaComponents = toCryptoKeyDataRSAComponents(keyData);
+
+    RefPtr&lt;CryptoKeyRSA&gt; result = CryptoKeyRSA::create(CryptoAlgorithmIdentifier::RSAES_PKCS1_v1_5, rsaComponents, extractable, usage);
+    if (!result) {
+        failureCallback();
+        return;
+    }
+
+    callback(*result);
+}
+
+}
+
+#endif // ENABLE(SUBTLE_CRYPTO)
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCorecryptoalgorithmsCryptoAlgorithmRSAES_PKCS1_v1_5h"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.h                                (rev 0)
+++ branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,64 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef CryptoAlgorithmRSAES_PKCS1_v1_5_h
+#define CryptoAlgorithmRSAES_PKCS1_v1_5_h
+
+#include &quot;CryptoAlgorithm.h&quot;
+
+#if ENABLE(SUBTLE_CRYPTO)
+
+namespace WebCore {
+
+class CryptoAlgorithmRSAESParams;
+class CryptoKeyRSA;
+
+class CryptoAlgorithmRSAES_PKCS1_v1_5 FINAL : public CryptoAlgorithm {
+public:
+    static const char* const s_name;
+    static const CryptoAlgorithmIdentifier s_identifier = CryptoAlgorithmIdentifier::RSAES_PKCS1_v1_5;
+
+    static std::unique_ptr&lt;CryptoAlgorithm&gt; create();
+
+    virtual CryptoAlgorithmIdentifier identifier() const OVERRIDE;
+
+    virtual void encrypt(const CryptoAlgorithmParameters&amp;, const CryptoKey&amp;, const CryptoOperationData&amp;, VectorCallback, VoidCallback failureCallback, ExceptionCode&amp;) OVERRIDE;
+    virtual void decrypt(const CryptoAlgorithmParameters&amp;, const CryptoKey&amp;, const CryptoOperationData&amp;, VectorCallback, VoidCallback failureCallback, ExceptionCode&amp;) OVERRIDE;
+    virtual void generateKey(const CryptoAlgorithmParameters&amp;, bool extractable, CryptoKeyUsage, KeyOrKeyPairCallback, VoidCallback failureCallback, ExceptionCode&amp;) OVERRIDE;
+    virtual void importKey(const CryptoAlgorithmParameters&amp;, const CryptoKeyData&amp;, bool extractable, CryptoKeyUsage, KeyCallback, VoidCallback failureCallback, ExceptionCode&amp;) OVERRIDE;
+
+private:
+    CryptoAlgorithmRSAES_PKCS1_v1_5();
+    virtual ~CryptoAlgorithmRSAES_PKCS1_v1_5();
+
+    bool keyAlgorithmMatches(const CryptoKey&amp;) const;
+    void platformEncrypt(const CryptoKeyRSA&amp;, const CryptoOperationData&amp;, VectorCallback, VoidCallback failureCallback, ExceptionCode&amp;);
+    void platformDecrypt(const CryptoKeyRSA&amp;, const CryptoOperationData&amp;, VectorCallback, VoidCallback failureCallback, ExceptionCode&amp;);
+};
+
+}
+
+#endif // ENABLE(SUBTLE_CRYPTO)
+#endif // CryptoAlgorithmRSAES_PKCS1_v1_5_h
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCorecryptoalgorithmsCryptoAlgorithmRSASSA_PKCS1_v1_5cpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -37,7 +37,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-const char* const CryptoAlgorithmRSASSA_PKCS1_v1_5::s_name = &quot;rsassa-pkcs1-v1_5&quot;;
</del><ins>+const char* const CryptoAlgorithmRSASSA_PKCS1_v1_5::s_name = &quot;RSASSA-PKCS1-v1_5&quot;;
</ins><span class="cx"> 
</span><span class="cx"> CryptoAlgorithmRSASSA_PKCS1_v1_5::CryptoAlgorithmRSASSA_PKCS1_v1_5()
</span><span class="cx"> {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorecryptoalgorithmsCryptoAlgorithmRSA_OAEPcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -37,7 +37,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-const char* const CryptoAlgorithmRSA_OAEP::s_name = &quot;rsa-oaep&quot;;
</del><ins>+const char* const CryptoAlgorithmRSA_OAEP::s_name = &quot;RSA-OAEP&quot;;
</ins><span class="cx"> 
</span><span class="cx"> CryptoAlgorithmRSA_OAEP::CryptoAlgorithmRSA_OAEP()
</span><span class="cx"> {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorecryptoalgorithmsCryptoAlgorithmSHA1cpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA1.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA1.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA1.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -32,7 +32,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-const char* const CryptoAlgorithmSHA1::s_name = &quot;sha-1&quot;;
</del><ins>+const char* const CryptoAlgorithmSHA1::s_name = &quot;SHA-1&quot;;
</ins><span class="cx"> 
</span><span class="cx"> CryptoAlgorithmSHA1::CryptoAlgorithmSHA1()
</span><span class="cx"> {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorecryptoalgorithmsCryptoAlgorithmSHA224cpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA224.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA224.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA224.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -32,7 +32,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-const char* const CryptoAlgorithmSHA224::s_name = &quot;sha-224&quot;;
</del><ins>+const char* const CryptoAlgorithmSHA224::s_name = &quot;SHA-224&quot;;
</ins><span class="cx"> 
</span><span class="cx"> CryptoAlgorithmSHA224::CryptoAlgorithmSHA224()
</span><span class="cx"> {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorecryptoalgorithmsCryptoAlgorithmSHA256cpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA256.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA256.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA256.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -32,7 +32,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-const char* const CryptoAlgorithmSHA256::s_name = &quot;sha-256&quot;;
</del><ins>+const char* const CryptoAlgorithmSHA256::s_name = &quot;SHA-256&quot;;
</ins><span class="cx"> 
</span><span class="cx"> CryptoAlgorithmSHA256::CryptoAlgorithmSHA256()
</span><span class="cx"> {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorecryptoalgorithmsCryptoAlgorithmSHA384cpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA384.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA384.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA384.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -32,7 +32,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-const char* const CryptoAlgorithmSHA384::s_name = &quot;sha-384&quot;;
</del><ins>+const char* const CryptoAlgorithmSHA384::s_name = &quot;SHA-384&quot;;
</ins><span class="cx"> 
</span><span class="cx"> CryptoAlgorithmSHA384::CryptoAlgorithmSHA384()
</span><span class="cx"> {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorecryptoalgorithmsCryptoAlgorithmSHA512cpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA512.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA512.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA512.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -32,7 +32,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-const char* const CryptoAlgorithmSHA512::s_name = &quot;sha-512&quot;;
</del><ins>+const char* const CryptoAlgorithmSHA512::s_name = &quot;SHA-512&quot;;
</ins><span class="cx"> 
</span><span class="cx"> CryptoAlgorithmSHA512::CryptoAlgorithmSHA512()
</span><span class="cx"> {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorecryptokeysCryptoKeyAEScpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/crypto/keys/CryptoKeyAES.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/crypto/keys/CryptoKeyAES.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/crypto/keys/CryptoKeyAES.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -39,18 +39,23 @@
</span><span class="cx">     : CryptoKey(algorithm, CryptoKeyType::Secret, extractable, usage)
</span><span class="cx">     , m_key(key)
</span><span class="cx"> {
</span><del>-    ASSERT(algorithm == CryptoAlgorithmIdentifier::AES_CTR
</del><ins>+    ASSERT(isValidAESAlgorithm(algorithm));
+}
+
+CryptoKeyAES::~CryptoKeyAES()
+{
+}
+
+bool CryptoKeyAES::isValidAESAlgorithm(CryptoAlgorithmIdentifier algorithm)
+{
+    return algorithm == CryptoAlgorithmIdentifier::AES_CTR
</ins><span class="cx">         || algorithm == CryptoAlgorithmIdentifier::AES_CBC
</span><span class="cx">         || algorithm == CryptoAlgorithmIdentifier::AES_CMAC
</span><span class="cx">         || algorithm == CryptoAlgorithmIdentifier::AES_GCM
</span><span class="cx">         || algorithm == CryptoAlgorithmIdentifier::AES_CFB
</span><del>-        || algorithm == CryptoAlgorithmIdentifier::AES_KW);
</del><ins>+        || algorithm == CryptoAlgorithmIdentifier::AES_KW;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-CryptoKeyAES::~CryptoKeyAES()
-{
-}
-
</del><span class="cx"> PassRefPtr&lt;CryptoKeyAES&gt; CryptoKeyAES::generate(CryptoAlgorithmIdentifier algorithm, size_t lengthBits, bool extractable, CryptoKeyUsage usages)
</span><span class="cx"> {
</span><span class="cx">     if (lengthBits % 8)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorecryptokeysCryptoKeyAESh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/crypto/keys/CryptoKeyAES.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/crypto/keys/CryptoKeyAES.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/crypto/keys/CryptoKeyAES.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -42,6 +42,8 @@
</span><span class="cx">     }
</span><span class="cx">     virtual ~CryptoKeyAES();
</span><span class="cx"> 
</span><ins>+    static bool isValidAESAlgorithm(CryptoAlgorithmIdentifier);
+
</ins><span class="cx">     static PassRefPtr&lt;CryptoKeyAES&gt; generate(CryptoAlgorithmIdentifier, size_t lengthBits, bool extractable, CryptoKeyUsage);
</span><span class="cx"> 
</span><span class="cx">     virtual CryptoKeyClass keyClass() const OVERRIDE { return CryptoKeyClass::AES; }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorecryptomacCryptoAlgorithmRSAES_PKCS1_v1_5Maccpp"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/crypto/mac/CryptoAlgorithmRSAES_PKCS1_v1_5Mac.cpp (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/crypto/mac/CryptoAlgorithmRSAES_PKCS1_v1_5Mac.cpp                                (rev 0)
+++ branches/jsCStack/Source/WebCore/crypto/mac/CryptoAlgorithmRSAES_PKCS1_v1_5Mac.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,66 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;CryptoAlgorithmRSAES_PKCS1_v1_5.h&quot;
+
+#if ENABLE(SUBTLE_CRYPTO)
+
+#include &quot;CommonCryptoUtilities.h&quot;
+#include &quot;CryptoKeyRSA.h&quot;
+
+namespace WebCore {
+
+void CryptoAlgorithmRSAES_PKCS1_v1_5::platformEncrypt(const CryptoKeyRSA&amp; key, const CryptoOperationData&amp; data, VectorCallback callback, VoidCallback failureCallback, ExceptionCode&amp;)
+{
+    Vector&lt;uint8_t&gt; cipherText(1024);
+    size_t cipherTextLength = cipherText.size();
+    CCCryptorStatus status = CCRSACryptorEncrypt(key.platformKey(), ccPKCS1Padding, data.first, data.second, cipherText.data(), &amp;cipherTextLength, 0, 0, kCCDigestNone);
+    if (status) {
+        failureCallback();
+        return;
+    }
+
+    cipherText.resize(cipherTextLength);
+    callback(cipherText);
+}
+
+void CryptoAlgorithmRSAES_PKCS1_v1_5::platformDecrypt(const CryptoKeyRSA&amp; key, const CryptoOperationData&amp; data, VectorCallback callback, VoidCallback failureCallback, ExceptionCode&amp;)
+{
+    Vector&lt;uint8_t&gt; plainText(1024);
+    size_t plainTextLength = plainText.size();
+    CCCryptorStatus status = CCRSACryptorDecrypt(key.platformKey(), ccPKCS1Padding, data.first, data.second, plainText.data(), &amp;plainTextLength, 0, 0, kCCDigestNone);
+    if (status) {
+        failureCallback();
+        return;
+    }
+
+    plainText.resize(plainTextLength);
+    callback(plainText);
+}
+
+} // namespace WebCore
+
+#endif // ENABLE(SUBTLE_CRYPTO)
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCorecryptomacCryptoAlgorithmRegistryMaccpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/crypto/mac/CryptoAlgorithmRegistryMac.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/crypto/mac/CryptoAlgorithmRegistryMac.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/crypto/mac/CryptoAlgorithmRegistryMac.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -31,6 +31,7 @@
</span><span class="cx"> #include &quot;CryptoAlgorithmAES_CBC.h&quot;
</span><span class="cx"> #include &quot;CryptoAlgorithmAES_KW.h&quot;
</span><span class="cx"> #include &quot;CryptoAlgorithmHMAC.h&quot;
</span><ins>+#include &quot;CryptoAlgorithmRSAES_PKCS1_v1_5.h&quot;
</ins><span class="cx"> #include &quot;CryptoAlgorithmRSASSA_PKCS1_v1_5.h&quot;
</span><span class="cx"> #include &quot;CryptoAlgorithmRSA_OAEP.h&quot;
</span><span class="cx"> #include &quot;CryptoAlgorithmSHA1.h&quot;
</span><span class="lines">@@ -46,6 +47,7 @@
</span><span class="cx">     registerAlgorithm&lt;CryptoAlgorithmAES_CBC&gt;();
</span><span class="cx">     registerAlgorithm&lt;CryptoAlgorithmAES_KW&gt;();
</span><span class="cx">     registerAlgorithm&lt;CryptoAlgorithmHMAC&gt;();
</span><ins>+    registerAlgorithm&lt;CryptoAlgorithmRSAES_PKCS1_v1_5&gt;();
</ins><span class="cx">     registerAlgorithm&lt;CryptoAlgorithmRSASSA_PKCS1_v1_5&gt;();
</span><span class="cx">     registerAlgorithm&lt;CryptoAlgorithmRSA_OAEP&gt;();
</span><span class="cx">     registerAlgorithm&lt;CryptoAlgorithmSHA1&gt;();
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorecryptomacCryptoKeyRSAMaccpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/crypto/mac/CryptoKeyRSAMac.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/crypto/mac/CryptoKeyRSAMac.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/crypto/mac/CryptoKeyRSAMac.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -267,7 +267,7 @@
</span><span class="cx">             return;
</span><span class="cx">         }
</span><span class="cx">         dispatch_async(dispatch_get_main_queue(), ^{
</span><del>-            RefPtr&lt;CryptoKeyRSA&gt; publicKey = CryptoKeyRSA::create(algorithm, CryptoKeyType::Public, ccPublicKey, extractable, usage);
</del><ins>+            RefPtr&lt;CryptoKeyRSA&gt; publicKey = CryptoKeyRSA::create(algorithm, CryptoKeyType::Public, ccPublicKey, true, usage);
</ins><span class="cx">             RefPtr&lt;CryptoKeyRSA&gt; privateKey = CryptoKeyRSA::create(algorithm, CryptoKeyType::Private, ccPrivateKey, extractable, usage);
</span><span class="cx">             (*localCallback)(*CryptoKeyPair::create(publicKey.release(), privateKey.release()));
</span><span class="cx">             delete localCallback;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorecryptoparametersCryptoAlgorithmAesCbcParamsh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/crypto/parameters/CryptoAlgorithmAesCbcParams.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/crypto/parameters/CryptoAlgorithmAesCbcParams.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/crypto/parameters/CryptoAlgorithmAesCbcParams.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -27,7 +27,7 @@
</span><span class="cx"> #define CryptoAlgorithmAesCbcParams_h
</span><span class="cx"> 
</span><span class="cx"> #include &quot;CryptoAlgorithmParameters.h&quot;
</span><del>-#include &lt;wtf/FixedArray.h&gt;
</del><ins>+#include &lt;array&gt;
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(SUBTLE_CRYPTO)
</span><span class="cx"> 
</span><span class="lines">@@ -36,7 +36,7 @@
</span><span class="cx"> class CryptoAlgorithmAesCbcParams FINAL : public CryptoAlgorithmParameters {
</span><span class="cx"> public:
</span><span class="cx">     // The initialization vector. MUST be 16 bytes.
</span><del>-    FixedArray&lt;char, 16&gt; iv;
</del><ins>+    std::array&lt;char, 16&gt; iv;
</ins><span class="cx"> 
</span><span class="cx">     virtual Class parametersClass() const OVERRIDE { return Class::AesCbcParams; }
</span><span class="cx"> };
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorecssCSSComputedStyleDeclarationcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/css/CSSComputedStyleDeclaration.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/css/CSSComputedStyleDeclaration.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/css/CSSComputedStyleDeclaration.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -746,7 +746,6 @@
</span><span class="cx">     bool showVerticalBottomLeft = style-&gt;borderTopRightRadius().height() != style-&gt;borderBottomLeftRadius().height();
</span><span class="cx">     bool showVerticalBottomRight = showVerticalBottomLeft || (style-&gt;borderBottomRightRadius().height() != style-&gt;borderTopLeftRadius().height());
</span><span class="cx">     bool showVerticalTopRight = showVerticalBottomRight || (style-&gt;borderTopRightRadius().height() != style-&gt;borderTopLeftRadius().height());
</span><del>-    bool showVerticalTopLeft = (style-&gt;borderTopLeftRadius().width() != style-&gt;borderTopLeftRadius().height());
</del><span class="cx"> 
</span><span class="cx">     RefPtr&lt;CSSValueList&gt; topLeftRadius = getBorderRadiusCornerValues(style-&gt;borderTopLeftRadius(), style, renderView);
</span><span class="cx">     RefPtr&lt;CSSValueList&gt; topRightRadius = getBorderRadiusCornerValues(style-&gt;borderTopRightRadius(), style, renderView);
</span><span class="lines">@@ -764,17 +763,18 @@
</span><span class="cx"> 
</span><span class="cx">     list.get().append(horizontalRadii.release());
</span><span class="cx"> 
</span><del>-    if (showVerticalTopLeft) {
-        RefPtr&lt;CSSValueList&gt; verticalRadii = CSSValueList::createSpaceSeparated();
-        verticalRadii-&gt;append(topLeftRadius-&gt;item(1));
-        if (showVerticalTopRight)
-            verticalRadii-&gt;append(topRightRadius-&gt;item(1));
-        if (showVerticalBottomRight)
-            verticalRadii-&gt;append(bottomRightRadius-&gt;item(1));
-        if (showVerticalBottomLeft)
-            verticalRadii-&gt;append(bottomLeftRadius-&gt;item(1));
-        list.get().append(verticalRadii.release());
-    }
</del><ins>+    RefPtr&lt;CSSValueList&gt; verticalRadiiList = CSSValueList::createSpaceSeparated();
+    verticalRadiiList-&gt;append(topLeftRadius-&gt;item(1));
+    if (showVerticalTopRight)
+        verticalRadiiList-&gt;append(topRightRadius-&gt;item(1));
+    if (showVerticalBottomRight)
+        verticalRadiiList-&gt;append(bottomRightRadius-&gt;item(1));
+    if (showVerticalBottomLeft)
+        verticalRadiiList-&gt;append(bottomLeftRadius-&gt;item(1));
+
+    if (!verticalRadiiList-&gt;equals(*toCSSValueList(list.get().item(0))))
+        list.get().append(verticalRadiiList.release());
+
</ins><span class="cx">     return list;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -940,7 +940,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(CSS_FILTERS)
</span><del>-PassRefPtr&lt;CSSValue&gt; ComputedStyleExtractor::valueForFilter(const RenderObject* renderer, const RenderStyle* style, const FilterOperations&amp; filterOperations, AdjustPixelValuesForComputedStyle adjust)
</del><ins>+PassRef&lt;CSSValue&gt; ComputedStyleExtractor::valueForFilter(const RenderObject* renderer, const RenderStyle* style, const FilterOperations&amp; filterOperations, AdjustPixelValuesForComputedStyle adjust)
</ins><span class="cx"> {
</span><span class="cx"> #if !ENABLE(CSS_SHADERS)
</span><span class="cx">     UNUSED_PARAM(renderer);
</span><span class="lines">@@ -948,7 +948,7 @@
</span><span class="cx">     if (filterOperations.operations().isEmpty())
</span><span class="cx">         return cssValuePool().createIdentifierValue(CSSValueNone);
</span><span class="cx"> 
</span><del>-    RefPtr&lt;CSSValueList&gt; list = CSSValueList::createSpaceSeparated();
</del><ins>+    auto list = CSSValueList::createSpaceSeparated();
</ins><span class="cx"> 
</span><span class="cx">     RefPtr&lt;WebKitCSSFilterValue&gt; filterValue;
</span><span class="cx"> 
</span><span class="lines">@@ -1092,10 +1092,10 @@
</span><span class="cx">             filterValue = WebKitCSSFilterValue::create(WebKitCSSFilterValue::UnknownFilterOperation);
</span><span class="cx">             break;
</span><span class="cx">         }
</span><del>-        list-&gt;append(filterValue.release());
</del><ins>+        list.get().append(filterValue.release());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    return list.release();
</del><ins>+    return std::move(list);
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorecssCSSComputedStyleDeclarationh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/css/CSSComputedStyleDeclaration.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/css/CSSComputedStyleDeclaration.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/css/CSSComputedStyleDeclaration.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -64,7 +64,7 @@
</span><span class="cx">     bool propertyMatches(CSSPropertyID, const CSSValue*) const;
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(CSS_FILTERS)
</span><del>-    static PassRefPtr&lt;CSSValue&gt; valueForFilter(const RenderObject*, const RenderStyle*, const FilterOperations&amp;, AdjustPixelValuesForComputedStyle = AdjustPixelValues);
</del><ins>+    static PassRef&lt;CSSValue&gt; valueForFilter(const RenderObject*, const RenderStyle*, const FilterOperations&amp;, AdjustPixelValuesForComputedStyle = AdjustPixelValues);
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> private:
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorecssCSSCrossfadeValuecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/css/CSSCrossfadeValue.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/css/CSSCrossfadeValue.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/css/CSSCrossfadeValue.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -44,13 +44,13 @@
</span><span class="cx">     return blend(from, to, progress);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static bool subimageKnownToBeOpaque(CSSValue* value, const RenderElement* renderer)
</del><ins>+static bool subimageKnownToBeOpaque(CSSValue&amp; value, const RenderElement* renderer)
</ins><span class="cx"> {
</span><del>-    if (value-&gt;isImageValue())
-        return toCSSImageValue(value)-&gt;knownToBeOpaque(renderer);
</del><ins>+    if (value.isImageValue())
+        return toCSSImageValue(value).knownToBeOpaque(renderer);
</ins><span class="cx"> 
</span><del>-    if (value-&gt;isImageGeneratorValue())
-        return static_cast&lt;CSSImageGeneratorValue*&gt;(value)-&gt;knownToBeOpaque(renderer);
</del><ins>+    if (value.isImageGeneratorValue())
+        return toCSSImageGeneratorValue(value).knownToBeOpaque(renderer);
</ins><span class="cx"> 
</span><span class="cx">     ASSERT_NOT_REACHED();
</span><span class="cx"> 
</span><span class="lines">@@ -110,7 +110,7 @@
</span><span class="cx"> 
</span><span class="cx"> bool CSSCrossfadeValue::knownToBeOpaque(const RenderElement* renderer) const
</span><span class="cx"> {
</span><del>-    return subimageKnownToBeOpaque(m_fromValue.get(), renderer) &amp;&amp; subimageKnownToBeOpaque(m_toValue.get(), renderer);
</del><ins>+    return subimageKnownToBeOpaque(*m_fromValue, renderer) &amp;&amp; subimageKnownToBeOpaque(*m_toValue, renderer);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void CSSCrossfadeValue::loadSubimages(CachedResourceLoader* cachedResourceLoader)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorecssCSSCursorImageValuecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/css/CSSCursorImageValue.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/css/CSSCursorImageValue.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/css/CSSCursorImageValue.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -67,8 +67,16 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+inline void CSSCursorImageValue::detachPendingImage()
+{
+    if (m_image &amp;&amp; m_image-&gt;isPendingImage())
+        static_cast&lt;StylePendingImage&amp;&gt;(*m_image).detachFromCSSValue();
+}
+
</ins><span class="cx"> CSSCursorImageValue::~CSSCursorImageValue()
</span><span class="cx"> {
</span><ins>+    detachPendingImage();
+
</ins><span class="cx"> #if ENABLE(SVG)
</span><span class="cx">     if (!isSVGCursor())
</span><span class="cx">         return;
</span><span class="lines">@@ -150,6 +158,7 @@
</span><span class="cx">         if (isSVGCursor() &amp;&amp; loader &amp;&amp; loader-&gt;document()) {
</span><span class="cx">             // FIXME: This will fail if the &lt;cursor&gt; element is in a shadow DOM (bug 59827)
</span><span class="cx">             if (SVGCursorElement* cursorElement = resourceReferencedByCursorElement(toCSSImageValue(m_imageValue.get()).url(), *loader-&gt;document())) {
</span><ins>+                detachPendingImage();
</ins><span class="cx">                 Ref&lt;CSSImageValue&gt; svgImageValue(CSSImageValue::create(cursorElement-&gt;href()));
</span><span class="cx">                 StyleCachedImage* cachedImage = svgImageValue-&gt;cachedImage(loader);
</span><span class="cx">                 m_image = cachedImage;
</span><span class="lines">@@ -158,8 +167,10 @@
</span><span class="cx">         }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-        if (m_imageValue.get().isImageValue())
</del><ins>+        if (m_imageValue.get().isImageValue()) {
+            detachPendingImage();
</ins><span class="cx">             m_image = toCSSImageValue(m_imageValue.get()).cachedImage(loader);
</span><ins>+        }
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (m_image &amp;&amp; m_image-&gt;isCachedImage())
</span><span class="lines">@@ -203,7 +214,8 @@
</span><span class="cx"> 
</span><span class="cx"> void CSSCursorImageValue::clearCachedImage()
</span><span class="cx"> {
</span><del>-    m_image = 0;
</del><ins>+    detachPendingImage();
+    m_image = nullptr;
</ins><span class="cx">     m_accessedImage = false;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorecssCSSCursorImageValueh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/css/CSSCursorImageValue.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/css/CSSCursorImageValue.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/css/CSSCursorImageValue.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -64,6 +64,8 @@
</span><span class="cx"> private:
</span><span class="cx">     CSSCursorImageValue(PassRef&lt;CSSValue&gt; imageValue, bool hasHotSpot, const IntPoint&amp; hotSpot);
</span><span class="cx"> 
</span><ins>+    void detachPendingImage();
+
</ins><span class="cx"> #if ENABLE(SVG)
</span><span class="cx">     bool isSVGCursor() const;
</span><span class="cx">     String cachedImageURL();
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorecssCSSFilterImageValueh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/css/CSSFilterImageValue.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/css/CSSFilterImageValue.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/css/CSSFilterImageValue.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -48,9 +48,9 @@
</span><span class="cx"> class CSSFilterImageValue : public CSSImageGeneratorValue {
</span><span class="cx">     friend class FilterSubimageObserverProxy;
</span><span class="cx"> public:
</span><del>-    static PassRef&lt;CSSFilterImageValue&gt; create(PassRefPtr&lt;CSSValue&gt; imageValue, PassRefPtr&lt;CSSValue&gt; filterValue)
</del><ins>+    static PassRef&lt;CSSFilterImageValue&gt; create(PassRef&lt;CSSValue&gt; imageValue, PassRef&lt;CSSValue&gt; filterValue)
</ins><span class="cx">     {
</span><del>-        return adoptRef(*new CSSFilterImageValue(imageValue, filterValue));
</del><ins>+        return adoptRef(*new CSSFilterImageValue(std::move(imageValue), std::move(filterValue)));
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     ~CSSFilterImageValue();
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorecssCSSImageGeneratorValuecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/css/CSSImageGeneratorValue.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/css/CSSImageGeneratorValue.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/css/CSSImageGeneratorValue.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -32,6 +32,7 @@
</span><span class="cx"> #include &quot;CSSFilterImageValue.h&quot;
</span><span class="cx"> #include &quot;CSSGradientValue.h&quot;
</span><span class="cx"> #include &quot;CSSImageValue.h&quot;
</span><ins>+#include &quot;GeneratedImage.h&quot;
</ins><span class="cx"> #include &quot;Image.h&quot;
</span><span class="cx"> #include &quot;RenderElement.h&quot;
</span><span class="cx"> #include &quot;StyleCachedImage.h&quot;
</span><span class="lines">@@ -80,7 +81,7 @@
</span><span class="cx"> void CSSImageGeneratorValue::saveCachedImageForSize(IntSize size, PassRefPtr&lt;GeneratedImage&gt; image)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(!m_images.contains(size));
</span><del>-    m_images.add(size, adoptPtr(new CachedGeneratedImage(*this, size, image)));
</del><ins>+    m_images.add(size, std::make_unique&lt;CachedGeneratedImage&gt;(*this, size, image));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void CSSImageGeneratorValue::evictCachedGeneratedImage(IntSize size)
</span><span class="lines">@@ -240,7 +241,7 @@
</span><span class="cx">         return toCSSImageValue(value)-&gt;cachedOrPendingImage()-&gt;isPendingImage();
</span><span class="cx">     
</span><span class="cx">     if (value-&gt;isImageGeneratorValue())
</span><del>-        return static_cast&lt;CSSImageGeneratorValue*&gt;(value)-&gt;isPending();
</del><ins>+        return toCSSImageGeneratorValue(value)-&gt;isPending();
</ins><span class="cx"> 
</span><span class="cx">     if (value-&gt;isPrimitiveValue() &amp;&amp; toCSSPrimitiveValue(value)-&gt;getValueID() == CSSValueNone)
</span><span class="cx">         return false;
</span><span class="lines">@@ -253,27 +254,27 @@
</span><span class="cx"> CachedImage* CSSImageGeneratorValue::cachedImageForCSSValue(CSSValue* value, CachedResourceLoader* cachedResourceLoader)
</span><span class="cx"> {
</span><span class="cx">     if (!value)
</span><del>-        return 0;
</del><ins>+        return nullptr;
</ins><span class="cx"> 
</span><span class="cx">     if (value-&gt;isImageValue()) {
</span><span class="cx">         StyleCachedImage* styleCachedImage = toCSSImageValue(value)-&gt;cachedImage(cachedResourceLoader);
</span><span class="cx">         if (!styleCachedImage)
</span><del>-            return 0;
</del><ins>+            return nullptr;
</ins><span class="cx"> 
</span><span class="cx">         return styleCachedImage-&gt;cachedImage();
</span><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     if (value-&gt;isImageGeneratorValue()) {
</span><del>-        static_cast&lt;CSSImageGeneratorValue*&gt;(value)-&gt;loadSubimages(cachedResourceLoader);
</del><ins>+        toCSSImageGeneratorValue(value)-&gt;loadSubimages(cachedResourceLoader);
</ins><span class="cx">         // FIXME: Handle CSSImageGeneratorValue (and thus cross-fades with gradients and canvas).
</span><del>-        return 0;
</del><ins>+        return nullptr;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (value-&gt;isPrimitiveValue() &amp;&amp; toCSSPrimitiveValue(value)-&gt;getValueID() == CSSValueNone)
</span><del>-        return 0;
</del><ins>+        return nullptr;
</ins><span class="cx"> 
</span><span class="cx">     ASSERT_NOT_REACHED();
</span><span class="cx">     
</span><del>-    return 0;
</del><ins>+    return nullptr;
</ins><span class="cx"> }
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorecssCSSImageGeneratorValueh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/css/CSSImageGeneratorValue.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/css/CSSImageGeneratorValue.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/css/CSSImageGeneratorValue.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -27,17 +27,16 @@
</span><span class="cx"> #define CSSImageGeneratorValue_h
</span><span class="cx"> 
</span><span class="cx"> #include &quot;CSSValue.h&quot;
</span><del>-#include &quot;CachedImage.h&quot;
-#include &quot;GeneratedImage.h&quot;
</del><span class="cx"> #include &quot;IntSizeHash.h&quot;
</span><span class="cx"> #include &quot;Timer.h&quot;
</span><span class="cx"> #include &lt;wtf/HashCountedSet.h&gt;
</span><del>-#include &lt;wtf/RefPtr.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><ins>+class CachedImage;
</ins><span class="cx"> class CachedResourceLoader;
</span><span class="cx"> class GeneratedImage;
</span><ins>+class Image;
</ins><span class="cx"> class RenderElement;
</span><span class="cx"> class StyleResolver;
</span><span class="cx"> 
</span><span class="lines">@@ -89,9 +88,11 @@
</span><span class="cx">     void evictCachedGeneratedImage(IntSize);
</span><span class="cx"> 
</span><span class="cx">     HashCountedSet&lt;RenderElement*&gt; m_clients;
</span><del>-    HashMap&lt;IntSize, OwnPtr&lt;CachedGeneratedImage&gt;&gt; m_images;
</del><ins>+    HashMap&lt;IntSize, std::unique_ptr&lt;CachedGeneratedImage&gt;&gt; m_images;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><ins>+CSS_VALUE_TYPE_CASTS(CSSImageGeneratorValue, isImageGeneratorValue())
+
</ins><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><span class="cx"> #endif // CSSImageGeneratorValue_h
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorecssCSSImageSetValuecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/css/CSSImageSetValue.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/css/CSSImageSetValue.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/css/CSSImageSetValue.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -49,8 +49,16 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+inline void CSSImageSetValue::detachPendingImage()
+{
+    if (m_imageSet &amp;&amp; m_imageSet-&gt;isPendingImage())
+        static_cast&lt;StylePendingImage&amp;&gt;(*m_imageSet).detachFromCSSValue();
+}
+
</ins><span class="cx"> CSSImageSetValue::~CSSImageSetValue()
</span><span class="cx"> {
</span><ins>+    detachPendingImage();
+
</ins><span class="cx">     if (m_imageSet &amp;&amp; m_imageSet-&gt;isCachedImageSet())
</span><span class="cx">         static_cast&lt;StyleCachedImageSet*&gt;(m_imageSet.get())-&gt;clearImageSetValue();
</span><span class="cx"> }
</span><span class="lines">@@ -113,6 +121,7 @@
</span><span class="cx">         CachedResourceRequest request(ResourceRequest(document-&gt;completeURL(image.imageURL)));
</span><span class="cx">         request.setInitiator(cachedResourceRequestInitiators().css);
</span><span class="cx">         if (CachedResourceHandle&lt;CachedImage&gt; cachedImage = loader-&gt;requestImage(request)) {
</span><ins>+            detachPendingImage();
</ins><span class="cx">             m_imageSet = StyleCachedImageSet::create(cachedImage.get(), image.scaleFactor, this);
</span><span class="cx">             m_accessedBestFitImage = true;
</span><span class="cx">         }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorecssCSSImageSetValueh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/css/CSSImageSetValue.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/css/CSSImageSetValue.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/css/CSSImageSetValue.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -71,6 +71,7 @@
</span><span class="cx">     CSSImageSetValue();
</span><span class="cx">     CSSImageSetValue(const CSSImageSetValue&amp; cloneFrom);
</span><span class="cx"> 
</span><ins>+    void detachPendingImage();
</ins><span class="cx">     void fillImageSet();
</span><span class="cx">     static inline bool compareByScaleFactor(ImageWithScale first, ImageWithScale second) { return first.scaleFactor &lt; second.scaleFactor; }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorecssCSSImageValuecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/css/CSSImageValue.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/css/CSSImageValue.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/css/CSSImageValue.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -52,8 +52,15 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+inline void CSSImageValue::detachPendingImage()
+{
+    if (m_image &amp;&amp; m_image-&gt;isPendingImage())
+        static_cast&lt;StylePendingImage&amp;&gt;(*m_image).detachFromCSSValue();
+}
+
</ins><span class="cx"> CSSImageValue::~CSSImageValue()
</span><span class="cx"> {
</span><ins>+    detachPendingImage();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> StyleImage* CSSImageValue::cachedOrPendingImage()
</span><span class="lines">@@ -80,8 +87,10 @@
</span><span class="cx">         if (options.requestOriginPolicy == PotentiallyCrossOriginEnabled)
</span><span class="cx">             updateRequestForAccessControl(request.mutableResourceRequest(), loader-&gt;document()-&gt;securityOrigin(), options.allowCredentials);
</span><span class="cx"> 
</span><del>-        if (CachedResourceHandle&lt;CachedImage&gt; cachedImage = loader-&gt;requestImage(request))
</del><ins>+        if (CachedResourceHandle&lt;CachedImage&gt; cachedImage = loader-&gt;requestImage(request)) {
+            detachPendingImage();
</ins><span class="cx">             m_image = StyleCachedImage::create(cachedImage.get());
</span><ins>+        }
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     return (m_image &amp;&amp; m_image-&gt;isCachedImage()) ? static_cast&lt;StyleCachedImage*&gt;(m_image.get()) : 0;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorecssCSSImageValueh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/css/CSSImageValue.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/css/CSSImageValue.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/css/CSSImageValue.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -61,6 +61,7 @@
</span><span class="cx"> private:
</span><span class="cx">     explicit CSSImageValue(const String&amp; url);
</span><span class="cx">     CSSImageValue(const String&amp; url, StyleImage*);
</span><ins>+    void detachPendingImage();
</ins><span class="cx"> 
</span><span class="cx">     String m_url;
</span><span class="cx">     RefPtr&lt;StyleImage&gt; m_image;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorecssCSSParsercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/css/CSSParser.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/css/CSSParser.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/css/CSSParser.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -84,8 +84,8 @@
</span><span class="cx"> #include &quot;WebKitCSSKeyframesRule.h&quot;
</span><span class="cx"> #include &quot;WebKitCSSRegionRule.h&quot;
</span><span class="cx"> #include &quot;WebKitCSSTransformValue.h&quot;
</span><ins>+#include &lt;bitset&gt;
</ins><span class="cx"> #include &lt;limits.h&gt;
</span><del>-#include &lt;wtf/BitArray.h&gt;
</del><span class="cx"> #include &lt;wtf/HexNumber.h&gt;
</span><span class="cx"> #include &lt;wtf/StdLibExtras.h&gt;
</span><span class="cx"> #include &lt;wtf/dtoa.h&gt;
</span><span class="lines">@@ -1479,7 +1479,7 @@
</span><span class="cx">     return m_mediaQuery.release();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static inline void filterProperties(bool important, const CSSParser::ParsedPropertyVector&amp; input, Vector&lt;CSSProperty, 256&gt;&amp; output, size_t&amp; unusedEntries, BitArray&lt;numCSSProperties&gt;&amp; seenProperties)
</del><ins>+static inline void filterProperties(bool important, const CSSParser::ParsedPropertyVector&amp; input, Vector&lt;CSSProperty, 256&gt;&amp; output, size_t&amp; unusedEntries, std::bitset&lt;numCSSProperties&gt;&amp; seenProperties)
</ins><span class="cx"> {
</span><span class="cx">     // Add properties in reverse order so that highest priority definitions are reached first. Duplicate definitions can then be ignored when found.
</span><span class="cx">     for (int i = input.size() - 1; i &gt;= 0; --i) {
</span><span class="lines">@@ -1487,7 +1487,7 @@
</span><span class="cx">         if (property.isImportant() != important)
</span><span class="cx">             continue;
</span><span class="cx">         const unsigned propertyIDIndex = property.id() - firstCSSProperty;
</span><del>-        if (seenProperties.get(propertyIDIndex))
</del><ins>+        if (seenProperties.test(propertyIDIndex))
</ins><span class="cx">             continue;
</span><span class="cx">         seenProperties.set(propertyIDIndex);
</span><span class="cx">         output[--unusedEntries] = property;
</span><span class="lines">@@ -1496,7 +1496,7 @@
</span><span class="cx"> 
</span><span class="cx"> PassRef&lt;ImmutableStyleProperties&gt; CSSParser::createStyleProperties()
</span><span class="cx"> {
</span><del>-    BitArray&lt;numCSSProperties&gt; seenProperties;
</del><ins>+    std::bitset&lt;numCSSProperties&gt; seenProperties;
</ins><span class="cx">     size_t unusedEntries = m_parsedProperties.size();
</span><span class="cx">     Vector&lt;CSSProperty, 256&gt; results(unusedEntries);
</span><span class="cx"> 
</span><span class="lines">@@ -8529,7 +8529,7 @@
</span><span class="cx">         return false;
</span><span class="cx">     value = args-&gt;next();
</span><span class="cx"> 
</span><del>-    result = CSSFilterImageValue::create(imageValue, filterValue);
</del><ins>+    result = CSSFilterImageValue::create(imageValue.releaseNonNull(), filterValue.releaseNonNull());
</ins><span class="cx"> 
</span><span class="cx">     filter = result;
</span><span class="cx"> 
</span><span class="lines">@@ -9762,8 +9762,8 @@
</span><span class="cx">         if (value-&gt;unit == CSSPrimitiveValue::CSS_URI) {
</span><span class="cx"> #if ENABLE(SVG)
</span><span class="cx">             RefPtr&lt;WebKitCSSFilterValue&gt; referenceFilterValue = WebKitCSSFilterValue::create(WebKitCSSFilterValue::ReferenceFilterOperation);
</span><del>-            list-&gt;append(referenceFilterValue);
</del><span class="cx">             referenceFilterValue-&gt;append(WebKitCSSSVGDocumentValue::create(value-&gt;string));
</span><ins>+            list-&gt;append(referenceFilterValue.release());
</ins><span class="cx"> #endif
</span><span class="cx">         } else {
</span><span class="cx">             const CSSParserString name = value-&gt;function-&gt;name;
</span><span class="lines">@@ -9795,7 +9795,7 @@
</span><span class="cx">             if (!filterValue)
</span><span class="cx">                 return false;
</span><span class="cx">             
</span><del>-            list-&gt;append(filterValue);
</del><ins>+            list-&gt;append(filterValue.release());
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorecssCSSValuecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/css/CSSValue.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/css/CSSValue.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/css/CSSValue.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -41,7 +41,6 @@
</span><span class="cx"> #include &quot;CSSFunctionValue.h&quot;
</span><span class="cx"> #include &quot;CSSGradientValue.h&quot;
</span><span class="cx"> #include &quot;CSSGridTemplateValue.h&quot;
</span><del>-#include &quot;CSSImageGeneratorValue.h&quot;
</del><span class="cx"> #include &quot;CSSImageSetValue.h&quot;
</span><span class="cx"> #include &quot;CSSImageValue.h&quot;
</span><span class="cx"> #include &quot;CSSInheritedValue.h&quot;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorecssStylePropertiescpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/css/StyleProperties.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/css/StyleProperties.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/css/StyleProperties.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -32,7 +32,7 @@
</span><span class="cx"> #include &quot;PropertySetCSSStyleDeclaration.h&quot;
</span><span class="cx"> #include &quot;StylePropertyShorthand.h&quot;
</span><span class="cx"> #include &quot;StyleSheetContents.h&quot;
</span><del>-#include &lt;wtf/BitArray.h&gt;
</del><ins>+#include &lt;bitset&gt;
</ins><span class="cx"> #include &lt;wtf/text/StringBuilder.h&gt;
</span><span class="cx"> 
</span><span class="cx"> #ifndef NDEBUG
</span><span class="lines">@@ -779,8 +779,8 @@
</span><span class="cx">     int repeatXPropertyIndex = -1;
</span><span class="cx">     int repeatYPropertyIndex = -1;
</span><span class="cx"> 
</span><del>-    BitArray&lt;numCSSProperties&gt; shorthandPropertyUsed;
-    BitArray&lt;numCSSProperties&gt; shorthandPropertyAppeared;
</del><ins>+    std::bitset&lt;numCSSProperties&gt; shorthandPropertyUsed;
+    std::bitset&lt;numCSSProperties&gt; shorthandPropertyAppeared;
</ins><span class="cx"> 
</span><span class="cx">     unsigned size = propertyCount();
</span><span class="cx">     unsigned numDecls = 0;
</span><span class="lines">@@ -824,13 +824,13 @@
</span><span class="cx">                 borderFallbackShorthandProperty = CSSPropertyBorderColor;
</span><span class="cx"> 
</span><span class="cx">             // FIXME: Deal with cases where only some of border-(top|right|bottom|left) are specified.
</span><del>-            if (!shorthandPropertyAppeared.get(CSSPropertyBorder - firstCSSProperty)) {
</del><ins>+            if (!shorthandPropertyAppeared.test(CSSPropertyBorder - firstCSSProperty)) {
</ins><span class="cx">                 value = borderPropertyValue(ReturnNullOnUncommonValues);
</span><span class="cx">                 if (value.isNull())
</span><span class="cx">                     shorthandPropertyAppeared.set(CSSPropertyBorder - firstCSSProperty);
</span><span class="cx">                 else
</span><span class="cx">                     shorthandPropertyID = CSSPropertyBorder;
</span><del>-            } else if (shorthandPropertyUsed.get(CSSPropertyBorder - firstCSSProperty))
</del><ins>+            } else if (shorthandPropertyUsed.test(CSSPropertyBorder - firstCSSProperty))
</ins><span class="cx">                 shorthandPropertyID = CSSPropertyBorder;
</span><span class="cx">             if (!shorthandPropertyID)
</span><span class="cx">                 shorthandPropertyID = borderFallbackShorthandProperty;
</span><span class="lines">@@ -925,9 +925,9 @@
</span><span class="cx"> 
</span><span class="cx">         unsigned shortPropertyIndex = shorthandPropertyID - firstCSSProperty;
</span><span class="cx">         if (shorthandPropertyID) {
</span><del>-            if (shorthandPropertyUsed.get(shortPropertyIndex))
</del><ins>+            if (shorthandPropertyUsed.test(shortPropertyIndex))
</ins><span class="cx">                 continue;
</span><del>-            if (!shorthandPropertyAppeared.get(shortPropertyIndex) &amp;&amp; value.isNull())
</del><ins>+            if (!shorthandPropertyAppeared.test(shortPropertyIndex) &amp;&amp; value.isNull())
</ins><span class="cx">                 value = getPropertyValue(shorthandPropertyID);
</span><span class="cx">             shorthandPropertyAppeared.set(shortPropertyIndex);
</span><span class="cx">         }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorecssStyleResolvercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/css/StyleResolver.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/css/StyleResolver.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/css/StyleResolver.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -218,11 +218,11 @@
</span><span class="cx"> 
</span><span class="cx"> inline void StyleResolver::State::clear()
</span><span class="cx"> {
</span><del>-    m_element = 0;
-    m_styledElement = 0;
-    m_parentStyle = 0;
-    m_parentNode = 0;
-    m_regionForStyling = 0;
</del><ins>+    m_element = nullptr;
+    m_styledElement = nullptr;
+    m_parentStyle = nullptr;
+    m_parentNode = nullptr;
+    m_regionForStyling = nullptr;
</ins><span class="cx">     m_pendingImageProperties.clear();
</span><span class="cx"> #if ENABLE(CSS_SHADERS)
</span><span class="cx">     m_hasPendingShaders = false;
</span><span class="lines">@@ -844,7 +844,7 @@
</span><span class="cx">     applyMatchedProperties(collector.matchedResult(), element);
</span><span class="cx"> 
</span><span class="cx">     // Clean up our style object's display and text decorations (among other fixups).
</span><del>-    adjustRenderStyle(state.style(), state.parentStyle(), element);
</del><ins>+    adjustRenderStyle(*state.style(), *state.parentStyle(), element);
</ins><span class="cx"> 
</span><span class="cx">     state.clear(); // Clear out for the next resolve.
</span><span class="cx"> 
</span><span class="lines">@@ -1009,7 +1009,7 @@
</span><span class="cx">     applyMatchedProperties(collector.matchedResult(), e);
</span><span class="cx"> 
</span><span class="cx">     // Clean up our style object's display and text decorations (among other fixups).
</span><del>-    adjustRenderStyle(state.style(), m_state.parentStyle(), 0);
</del><ins>+    adjustRenderStyle(*state.style(), *m_state.parentStyle(), 0);
</ins><span class="cx"> 
</span><span class="cx">     // Start loading resources referenced by this style.
</span><span class="cx">     loadPendingResources();
</span><span class="lines">@@ -1066,25 +1066,25 @@
</span><span class="cx">     return m_state.takeStyle();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static void addIntrinsicMargins(RenderStyle* style)
</del><ins>+static void addIntrinsicMargins(RenderStyle&amp; style)
</ins><span class="cx"> {
</span><span class="cx">     // Intrinsic margin value.
</span><del>-    const int intrinsicMargin = 2 * style-&gt;effectiveZoom();
</del><ins>+    const int intrinsicMargin = 2 * style.effectiveZoom();
</ins><span class="cx"> 
</span><span class="cx">     // FIXME: Using width/height alone and not also dealing with min-width/max-width is flawed.
</span><span class="cx">     // FIXME: Using &quot;quirk&quot; to decide the margin wasn't set is kind of lame.
</span><del>-    if (style-&gt;width().isIntrinsicOrAuto()) {
-        if (style-&gt;marginLeft().quirk())
-            style-&gt;setMarginLeft(Length(intrinsicMargin, Fixed));
-        if (style-&gt;marginRight().quirk())
-            style-&gt;setMarginRight(Length(intrinsicMargin, Fixed));
</del><ins>+    if (style.width().isIntrinsicOrAuto()) {
+        if (style.marginLeft().quirk())
+            style.setMarginLeft(Length(intrinsicMargin, Fixed));
+        if (style.marginRight().quirk())
+            style.setMarginRight(Length(intrinsicMargin, Fixed));
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (style-&gt;height().isAuto()) {
-        if (style-&gt;marginTop().quirk())
-            style-&gt;setMarginTop(Length(intrinsicMargin, Fixed));
-        if (style-&gt;marginBottom().quirk())
-            style-&gt;setMarginBottom(Length(intrinsicMargin, Fixed));
</del><ins>+    if (style.height().isAuto()) {
+        if (style.marginTop().quirk())
+            style.setMarginTop(Length(intrinsicMargin, Fixed));
+        if (style.marginBottom().quirk())
+            style.setMarginBottom(Length(intrinsicMargin, Fixed));
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1136,11 +1136,11 @@
</span><span class="cx"> // CSS requires text-decoration to be reset at each DOM element for tables, 
</span><span class="cx"> // inline blocks, inline tables, run-ins, shadow DOM crossings, floating elements,
</span><span class="cx"> // and absolute or relatively positioned elements.
</span><del>-static bool doesNotInheritTextDecoration(RenderStyle* style, Element* e)
</del><ins>+static bool doesNotInheritTextDecoration(const RenderStyle&amp; style, Element* e)
</ins><span class="cx"> {
</span><del>-    return style-&gt;display() == TABLE || style-&gt;display() == INLINE_TABLE || style-&gt;display() == RUN_IN
-        || style-&gt;display() == INLINE_BLOCK || style-&gt;display() == INLINE_BOX || isAtShadowBoundary(e)
-        || style-&gt;isFloating() || style-&gt;hasOutOfFlowPosition();
</del><ins>+    return style.display() == TABLE || style.display() == INLINE_TABLE || style.display() == RUN_IN
+        || style.display() == INLINE_BLOCK || style.display() == INLINE_BOX || isAtShadowBoundary(e)
+        || style.isFloating() || style.hasOutOfFlowPosition();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static bool isDisplayFlexibleBox(EDisplay display)
</span><span class="lines">@@ -1155,183 +1155,181 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-void StyleResolver::adjustRenderStyle(RenderStyle* style, RenderStyle* parentStyle, Element *e)
</del><ins>+void StyleResolver::adjustRenderStyle(RenderStyle&amp; style, const RenderStyle&amp; parentStyle, Element *e)
</ins><span class="cx"> {
</span><del>-    ASSERT(parentStyle);
-
</del><span class="cx">     // Cache our original display.
</span><del>-    style-&gt;setOriginalDisplay(style-&gt;display());
</del><ins>+    style.setOriginalDisplay(style.display());
</ins><span class="cx"> 
</span><del>-    if (style-&gt;display() != NONE) {
</del><ins>+    if (style.display() != NONE) {
</ins><span class="cx">         // If we have a &lt;td&gt; that specifies a float property, in quirks mode we just drop the float
</span><span class="cx">         // property.
</span><span class="cx">         // Sites also commonly use display:inline/block on &lt;td&gt;s and &lt;table&gt;s. In quirks mode we force
</span><span class="cx">         // these tags to retain their display types.
</span><span class="cx">         if (document().inQuirksMode() &amp;&amp; e) {
</span><span class="cx">             if (e-&gt;hasTagName(tdTag)) {
</span><del>-                style-&gt;setDisplay(TABLE_CELL);
-                style-&gt;setFloating(NoFloat);
</del><ins>+                style.setDisplay(TABLE_CELL);
+                style.setFloating(NoFloat);
</ins><span class="cx">             } else if (isHTMLTableElement(e))
</span><del>-                style-&gt;setDisplay(style-&gt;isDisplayInlineType() ? INLINE_TABLE : TABLE);
</del><ins>+                style.setDisplay(style.isDisplayInlineType() ? INLINE_TABLE : TABLE);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         if (e &amp;&amp; (e-&gt;hasTagName(tdTag) || e-&gt;hasTagName(thTag))) {
</span><del>-            if (style-&gt;whiteSpace() == KHTML_NOWRAP) {
</del><ins>+            if (style.whiteSpace() == KHTML_NOWRAP) {
</ins><span class="cx">                 // Figure out if we are really nowrapping or if we should just
</span><span class="cx">                 // use normal instead. If the width of the cell is fixed, then
</span><span class="cx">                 // we don't actually use NOWRAP.
</span><del>-                if (style-&gt;width().isFixed())
-                    style-&gt;setWhiteSpace(NORMAL);
</del><ins>+                if (style.width().isFixed())
+                    style.setWhiteSpace(NORMAL);
</ins><span class="cx">                 else
</span><del>-                    style-&gt;setWhiteSpace(NOWRAP);
</del><ins>+                    style.setWhiteSpace(NOWRAP);
</ins><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         // Tables never support the -webkit-* values for text-align and will reset back to the default.
</span><del>-        if (e &amp;&amp; isHTMLTableElement(e) &amp;&amp; (style-&gt;textAlign() == WEBKIT_LEFT || style-&gt;textAlign() == WEBKIT_CENTER || style-&gt;textAlign() == WEBKIT_RIGHT))
-            style-&gt;setTextAlign(TASTART);
</del><ins>+        if (e &amp;&amp; isHTMLTableElement(e) &amp;&amp; (style.textAlign() == WEBKIT_LEFT || style.textAlign() == WEBKIT_CENTER || style.textAlign() == WEBKIT_RIGHT))
+            style.setTextAlign(TASTART);
</ins><span class="cx"> 
</span><span class="cx">         // Frames and framesets never honor position:relative or position:absolute. This is necessary to
</span><span class="cx">         // fix a crash where a site tries to position these objects. They also never honor display.
</span><span class="cx">         if (e &amp;&amp; (e-&gt;hasTagName(frameTag) || e-&gt;hasTagName(framesetTag))) {
</span><del>-            style-&gt;setPosition(StaticPosition);
-            style-&gt;setDisplay(BLOCK);
</del><ins>+            style.setPosition(StaticPosition);
+            style.setDisplay(BLOCK);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         // Ruby text does not support float or position. This might change with evolution of the specification.
</span><span class="cx">         if (e &amp;&amp; e-&gt;hasTagName(rtTag)) {
</span><del>-            style-&gt;setPosition(StaticPosition);
-            style-&gt;setFloating(NoFloat);
</del><ins>+            style.setPosition(StaticPosition);
+            style.setFloating(NoFloat);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         // FIXME: We shouldn't be overriding start/-webkit-auto like this. Do it in html.css instead.
</span><span class="cx">         // Table headers with a text-align of -webkit-auto will change the text-align to center.
</span><del>-        if (e &amp;&amp; e-&gt;hasTagName(thTag) &amp;&amp; style-&gt;textAlign() == TASTART)
-            style-&gt;setTextAlign(CENTER);
</del><ins>+        if (e &amp;&amp; e-&gt;hasTagName(thTag) &amp;&amp; style.textAlign() == TASTART)
+            style.setTextAlign(CENTER);
</ins><span class="cx"> 
</span><span class="cx">         if (e &amp;&amp; e-&gt;hasTagName(legendTag))
</span><del>-            style-&gt;setDisplay(BLOCK);
</del><ins>+            style.setDisplay(BLOCK);
</ins><span class="cx"> 
</span><span class="cx">         // Absolute/fixed positioned elements, floating elements and the document element need block-like outside display.
</span><del>-        if (style-&gt;hasOutOfFlowPosition() || style-&gt;isFloating() || (e &amp;&amp; e-&gt;document().documentElement() == e))
-            style-&gt;setDisplay(equivalentBlockDisplay(style-&gt;display(), style-&gt;isFloating(), !document().inQuirksMode()));
</del><ins>+        if (style.hasOutOfFlowPosition() || style.isFloating() || (e &amp;&amp; e-&gt;document().documentElement() == e))
+            style.setDisplay(equivalentBlockDisplay(style.display(), style.isFloating(), !document().inQuirksMode()));
</ins><span class="cx"> 
</span><span class="cx">         // FIXME: Don't support this mutation for pseudo styles like first-letter or first-line, since it's not completely
</span><span class="cx">         // clear how that should work.
</span><del>-        if (style-&gt;display() == INLINE &amp;&amp; style-&gt;styleType() == NOPSEUDO &amp;&amp; style-&gt;writingMode() != parentStyle-&gt;writingMode())
-            style-&gt;setDisplay(INLINE_BLOCK);
</del><ins>+        if (style.display() == INLINE &amp;&amp; style.styleType() == NOPSEUDO &amp;&amp; style.writingMode() != parentStyle.writingMode())
+            style.setDisplay(INLINE_BLOCK);
</ins><span class="cx"> 
</span><span class="cx">         // After performing the display mutation, check table rows. We do not honor position:relative or position:sticky on
</span><span class="cx">         // table rows or cells. This has been established for position:relative in CSS2.1 (and caused a crash in containingBlock()
</span><span class="cx">         // on some sites).
</span><del>-        if ((style-&gt;display() == TABLE_HEADER_GROUP || style-&gt;display() == TABLE_ROW_GROUP
-            || style-&gt;display() == TABLE_FOOTER_GROUP || style-&gt;display() == TABLE_ROW)
-            &amp;&amp; style-&gt;hasInFlowPosition())
-            style-&gt;setPosition(StaticPosition);
</del><ins>+        if ((style.display() == TABLE_HEADER_GROUP || style.display() == TABLE_ROW_GROUP
+            || style.display() == TABLE_FOOTER_GROUP || style.display() == TABLE_ROW)
+            &amp;&amp; style.hasInFlowPosition())
+            style.setPosition(StaticPosition);
</ins><span class="cx"> 
</span><span class="cx">         // writing-mode does not apply to table row groups, table column groups, table rows, and table columns.
</span><span class="cx">         // FIXME: Table cells should be allowed to be perpendicular or flipped with respect to the table, though.
</span><del>-        if (style-&gt;display() == TABLE_COLUMN || style-&gt;display() == TABLE_COLUMN_GROUP || style-&gt;display() == TABLE_FOOTER_GROUP
-            || style-&gt;display() == TABLE_HEADER_GROUP || style-&gt;display() == TABLE_ROW || style-&gt;display() == TABLE_ROW_GROUP
-            || style-&gt;display() == TABLE_CELL)
-            style-&gt;setWritingMode(parentStyle-&gt;writingMode());
</del><ins>+        if (style.display() == TABLE_COLUMN || style.display() == TABLE_COLUMN_GROUP || style.display() == TABLE_FOOTER_GROUP
+            || style.display() == TABLE_HEADER_GROUP || style.display() == TABLE_ROW || style.display() == TABLE_ROW_GROUP
+            || style.display() == TABLE_CELL)
+            style.setWritingMode(parentStyle.writingMode());
</ins><span class="cx"> 
</span><span class="cx">         // FIXME: Since we don't support block-flow on flexible boxes yet, disallow setting
</span><span class="cx">         // of block-flow to anything other than TopToBottomWritingMode.
</span><span class="cx">         // https://bugs.webkit.org/show_bug.cgi?id=46418 - Flexible box support.
</span><del>-        if (style-&gt;writingMode() != TopToBottomWritingMode &amp;&amp; (style-&gt;display() == BOX || style-&gt;display() == INLINE_BOX))
-            style-&gt;setWritingMode(TopToBottomWritingMode);
</del><ins>+        if (style.writingMode() != TopToBottomWritingMode &amp;&amp; (style.display() == BOX || style.display() == INLINE_BOX))
+            style.setWritingMode(TopToBottomWritingMode);
</ins><span class="cx"> 
</span><del>-        if (isDisplayFlexibleBox(parentStyle-&gt;display())) {
-            style-&gt;setFloating(NoFloat);
-            style-&gt;setDisplay(equivalentBlockDisplay(style-&gt;display(), style-&gt;isFloating(), !document().inQuirksMode()));
</del><ins>+        if (isDisplayFlexibleBox(parentStyle.display())) {
+            style.setFloating(NoFloat);
+            style.setDisplay(equivalentBlockDisplay(style.display(), style.isFloating(), !document().inQuirksMode()));
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // Make sure our z-index value is only applied if the object is positioned.
</span><del>-    if (style-&gt;position() == StaticPosition &amp;&amp; !isDisplayFlexibleBox(parentStyle-&gt;display()))
-        style-&gt;setHasAutoZIndex();
</del><ins>+    if (style.position() == StaticPosition &amp;&amp; !isDisplayFlexibleBox(parentStyle.display()))
+        style.setHasAutoZIndex();
</ins><span class="cx"> 
</span><span class="cx">     // Auto z-index becomes 0 for the root element and transparent objects. This prevents
</span><span class="cx">     // cases where objects that should be blended as a single unit end up with a non-transparent
</span><span class="cx">     // object wedged in between them. Auto z-index also becomes 0 for objects that specify transforms/masks/reflections.
</span><del>-    if (style-&gt;hasAutoZIndex() &amp;&amp; ((e &amp;&amp; e-&gt;document().documentElement() == e)
-        || style-&gt;opacity() &lt; 1.0f
-        || style-&gt;hasTransformRelatedProperty()
-        || style-&gt;hasMask()
-        || style-&gt;clipPath()
-        || style-&gt;boxReflect()
-        || style-&gt;hasFilter()
-        || style-&gt;hasBlendMode()
-        || style-&gt;position() == StickyPosition
-        || (style-&gt;position() == FixedPosition &amp;&amp; e &amp;&amp; e-&gt;document().page() &amp;&amp; e-&gt;document().page()-&gt;settings().fixedPositionCreatesStackingContext())
-        || style-&gt;hasFlowFrom()
</del><ins>+    if (style.hasAutoZIndex() &amp;&amp; ((e &amp;&amp; e-&gt;document().documentElement() == e)
+        || style.opacity() &lt; 1.0f
+        || style.hasTransformRelatedProperty()
+        || style.hasMask()
+        || style.clipPath()
+        || style.boxReflect()
+        || style.hasFilter()
+        || style.hasBlendMode()
+        || style.position() == StickyPosition
+        || (style.position() == FixedPosition &amp;&amp; e &amp;&amp; e-&gt;document().page() &amp;&amp; e-&gt;document().page()-&gt;settings().fixedPositionCreatesStackingContext())
+        || style.hasFlowFrom()
</ins><span class="cx">         ))
</span><del>-        style-&gt;setZIndex(0);
</del><ins>+        style.setZIndex(0);
</ins><span class="cx"> 
</span><span class="cx">     // Textarea considers overflow visible as auto.
</span><span class="cx">     if (e &amp;&amp; isHTMLTextAreaElement(e)) {
</span><del>-        style-&gt;setOverflowX(style-&gt;overflowX() == OVISIBLE ? OAUTO : style-&gt;overflowX());
-        style-&gt;setOverflowY(style-&gt;overflowY() == OVISIBLE ? OAUTO : style-&gt;overflowY());
</del><ins>+        style.setOverflowX(style.overflowX() == OVISIBLE ? OAUTO : style.overflowX());
+        style.setOverflowY(style.overflowY() == OVISIBLE ? OAUTO : style.overflowY());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (doesNotInheritTextDecoration(style, e))
</span><del>-        style-&gt;setTextDecorationsInEffect(style-&gt;textDecoration());
</del><ins>+        style.setTextDecorationsInEffect(style.textDecoration());
</ins><span class="cx">     else
</span><del>-        style-&gt;addToTextDecorationsInEffect(style-&gt;textDecoration());
</del><ins>+        style.addToTextDecorationsInEffect(style.textDecoration());
</ins><span class="cx"> 
</span><span class="cx">     // If either overflow value is not visible, change to auto.
</span><del>-    if (style-&gt;overflowX() == OMARQUEE &amp;&amp; style-&gt;overflowY() != OMARQUEE)
-        style-&gt;setOverflowY(OMARQUEE);
-    else if (style-&gt;overflowY() == OMARQUEE &amp;&amp; style-&gt;overflowX() != OMARQUEE)
-        style-&gt;setOverflowX(OMARQUEE);
-    else if (style-&gt;overflowX() == OVISIBLE &amp;&amp; style-&gt;overflowY() != OVISIBLE) {
</del><ins>+    if (style.overflowX() == OMARQUEE &amp;&amp; style.overflowY() != OMARQUEE)
+        style.setOverflowY(OMARQUEE);
+    else if (style.overflowY() == OMARQUEE &amp;&amp; style.overflowX() != OMARQUEE)
+        style.setOverflowX(OMARQUEE);
+    else if (style.overflowX() == OVISIBLE &amp;&amp; style.overflowY() != OVISIBLE) {
</ins><span class="cx">         // FIXME: Once we implement pagination controls, overflow-x should default to hidden
</span><span class="cx">         // if overflow-y is set to -webkit-paged-x or -webkit-page-y. For now, we'll let it
</span><span class="cx">         // default to auto so we can at least scroll through the pages.
</span><del>-        style-&gt;setOverflowX(OAUTO);
-    } else if (style-&gt;overflowY() == OVISIBLE &amp;&amp; style-&gt;overflowX() != OVISIBLE)
-        style-&gt;setOverflowY(OAUTO);
</del><ins>+        style.setOverflowX(OAUTO);
+    } else if (style.overflowY() == OVISIBLE &amp;&amp; style.overflowX() != OVISIBLE)
+        style.setOverflowY(OAUTO);
</ins><span class="cx"> 
</span><span class="cx">     // Call setStylesForPaginationMode() if a pagination mode is set for any non-root elements. If these
</span><span class="cx">     // styles are specified on a root element, then they will be incorporated in
</span><span class="cx">     // Style::createForDocument().
</span><del>-    if ((style-&gt;overflowY() == OPAGEDX || style-&gt;overflowY() == OPAGEDY) &amp;&amp; !(e &amp;&amp; (e-&gt;hasTagName(htmlTag) || e-&gt;hasTagName(bodyTag))))
-        style-&gt;setColumnStylesFromPaginationMode(WebCore::paginationModeForRenderStyle(style));
</del><ins>+    if ((style.overflowY() == OPAGEDX || style.overflowY() == OPAGEDY) &amp;&amp; !(e &amp;&amp; (e-&gt;hasTagName(htmlTag) || e-&gt;hasTagName(bodyTag))))
+        style.setColumnStylesFromPaginationMode(WebCore::paginationModeForRenderStyle(style));
</ins><span class="cx"> 
</span><span class="cx">     // Table rows, sections and the table itself will support overflow:hidden and will ignore scroll/auto.
</span><span class="cx">     // FIXME: Eventually table sections will support auto and scroll.
</span><del>-    if (style-&gt;display() == TABLE || style-&gt;display() == INLINE_TABLE
-        || style-&gt;display() == TABLE_ROW_GROUP || style-&gt;display() == TABLE_ROW) {
-        if (style-&gt;overflowX() != OVISIBLE &amp;&amp; style-&gt;overflowX() != OHIDDEN)
-            style-&gt;setOverflowX(OVISIBLE);
-        if (style-&gt;overflowY() != OVISIBLE &amp;&amp; style-&gt;overflowY() != OHIDDEN)
-            style-&gt;setOverflowY(OVISIBLE);
</del><ins>+    if (style.display() == TABLE || style.display() == INLINE_TABLE
+        || style.display() == TABLE_ROW_GROUP || style.display() == TABLE_ROW) {
+        if (style.overflowX() != OVISIBLE &amp;&amp; style.overflowX() != OHIDDEN)
+            style.setOverflowX(OVISIBLE);
+        if (style.overflowY() != OVISIBLE &amp;&amp; style.overflowY() != OHIDDEN)
+            style.setOverflowY(OVISIBLE);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // Menulists should have visible overflow
</span><del>-    if (style-&gt;appearance() == MenulistPart) {
-        style-&gt;setOverflowX(OVISIBLE);
-        style-&gt;setOverflowY(OVISIBLE);
</del><ins>+    if (style.appearance() == MenulistPart) {
+        style.setOverflowX(OVISIBLE);
+        style.setOverflowY(OVISIBLE);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(ACCELERATED_OVERFLOW_SCROLLING)
</span><span class="cx">     // Touch overflow scrolling creates a stacking context.
</span><del>-    if (style-&gt;hasAutoZIndex() &amp;&amp; style-&gt;useTouchOverflowScrolling() &amp;&amp; (isScrollableOverflow(style-&gt;overflowX()) || isScrollableOverflow(style-&gt;overflowY())))
-        style-&gt;setZIndex(0);
</del><ins>+    if (style.hasAutoZIndex() &amp;&amp; style.useTouchOverflowScrolling() &amp;&amp; (isScrollableOverflow(style.overflowX()) || isScrollableOverflow(style.overflowY())))
+        style.setZIndex(0);
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     // Cull out any useless layers and also repeat patterns into additional layers.
</span><del>-    style-&gt;adjustBackgroundLayers();
-    style-&gt;adjustMaskLayers();
</del><ins>+    style.adjustBackgroundLayers();
+    style.adjustMaskLayers();
</ins><span class="cx"> 
</span><span class="cx">     // Do the same for animations and transitions.
</span><del>-    style-&gt;adjustAnimations();
-    style-&gt;adjustTransitions();
</del><ins>+    style.adjustAnimations();
+    style.adjustTransitions();
</ins><span class="cx"> 
</span><span class="cx">     // Important: Intrinsic margins get added to controls before the theme has adjusted the style, since the theme will
</span><span class="cx">     // alter fonts and heights/widths.
</span><del>-    if (e &amp;&amp; e-&gt;isFormControlElement() &amp;&amp; style-&gt;fontSize() &gt;= 11) {
</del><ins>+    if (e &amp;&amp; e-&gt;isFormControlElement() &amp;&amp; style.fontSize() &gt;= 11) {
</ins><span class="cx">         // Don't apply intrinsic margins to image buttons. The designer knows how big the images are,
</span><span class="cx">         // so we have to treat all image buttons as though they were explicitly sized.
</span><span class="cx">         if (!isHTMLInputElement(e) || !toHTMLInputElement(e)-&gt;isImageButton())
</span><span class="lines">@@ -1339,74 +1337,74 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // Let the theme also have a crack at adjusting the style.
</span><del>-    if (style-&gt;hasAppearance())
-        RenderTheme::defaultTheme()-&gt;adjustStyle(this, style, e, m_state.hasUAAppearance(), m_state.borderData(), m_state.backgroundData(), m_state.backgroundColor());
</del><ins>+    if (style.hasAppearance())
+        RenderTheme::defaultTheme()-&gt;adjustStyle(*this, style, e, m_state.hasUAAppearance(), m_state.borderData(), m_state.backgroundData(), m_state.backgroundColor());
</ins><span class="cx"> 
</span><span class="cx">     // If we have first-letter pseudo style, do not share this style.
</span><del>-    if (style-&gt;hasPseudoStyle(FIRST_LETTER))
-        style-&gt;setUnique();
</del><ins>+    if (style.hasPseudoStyle(FIRST_LETTER))
+        style.setUnique();
</ins><span class="cx"> 
</span><span class="cx">     // FIXME: when dropping the -webkit prefix on transform-style, we should also have opacity &lt; 1 cause flattening.
</span><del>-    if (style-&gt;preserves3D() &amp;&amp; (style-&gt;overflowX() != OVISIBLE
-        || style-&gt;overflowY() != OVISIBLE
-        || style-&gt;hasFilter()))
-        style-&gt;setTransformStyle3D(TransformStyle3DFlat);
</del><ins>+    if (style.preserves3D() &amp;&amp; (style.overflowX() != OVISIBLE
+        || style.overflowY() != OVISIBLE
+        || style.hasFilter()))
+        style.setTransformStyle3D(TransformStyle3DFlat);
</ins><span class="cx"> 
</span><span class="cx">     // Seamless iframes behave like blocks. Map their display to inline-block when marked inline.
</span><del>-    if (e &amp;&amp; e-&gt;hasTagName(iframeTag) &amp;&amp; style-&gt;display() == INLINE &amp;&amp; toHTMLIFrameElement(e)-&gt;shouldDisplaySeamlessly())
-        style-&gt;setDisplay(INLINE_BLOCK);
</del><ins>+    if (e &amp;&amp; e-&gt;hasTagName(iframeTag) &amp;&amp; style.display() == INLINE &amp;&amp; toHTMLIFrameElement(e)-&gt;shouldDisplaySeamlessly())
+        style.setDisplay(INLINE_BLOCK);
</ins><span class="cx"> 
</span><span class="cx">     adjustGridItemPosition(style, parentStyle);
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(SVG)
</span><span class="cx">     if (e &amp;&amp; e-&gt;isSVGElement()) {
</span><span class="cx">         // Spec: http://www.w3.org/TR/SVG/masking.html#OverflowProperty
</span><del>-        if (style-&gt;overflowY() == OSCROLL)
-            style-&gt;setOverflowY(OHIDDEN);
-        else if (style-&gt;overflowY() == OAUTO)
-            style-&gt;setOverflowY(OVISIBLE);
</del><ins>+        if (style.overflowY() == OSCROLL)
+            style.setOverflowY(OHIDDEN);
+        else if (style.overflowY() == OAUTO)
+            style.setOverflowY(OVISIBLE);
</ins><span class="cx"> 
</span><del>-        if (style-&gt;overflowX() == OSCROLL)
-            style-&gt;setOverflowX(OHIDDEN);
-        else if (style-&gt;overflowX() == OAUTO)
-            style-&gt;setOverflowX(OVISIBLE);
</del><ins>+        if (style.overflowX() == OSCROLL)
+            style.setOverflowX(OHIDDEN);
+        else if (style.overflowX() == OAUTO)
+            style.setOverflowX(OVISIBLE);
</ins><span class="cx"> 
</span><span class="cx">         // Only the root &lt;svg&gt; element in an SVG document fragment tree honors css position
</span><span class="cx">         if (!(e-&gt;hasTagName(SVGNames::svgTag) &amp;&amp; e-&gt;parentNode() &amp;&amp; !e-&gt;parentNode()-&gt;isSVGElement()))
</span><del>-            style-&gt;setPosition(RenderStyle::initialPosition());
</del><ins>+            style.setPosition(RenderStyle::initialPosition());
</ins><span class="cx"> 
</span><span class="cx">         // RenderSVGRoot handles zooming for the whole SVG subtree, so foreignObject content should
</span><span class="cx">         // not be scaled again.
</span><span class="cx">         if (e-&gt;hasTagName(SVGNames::foreignObjectTag))
</span><del>-            style-&gt;setEffectiveZoom(RenderStyle::initialZoom());
</del><ins>+            style.setEffectiveZoom(RenderStyle::initialZoom());
</ins><span class="cx">     }
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void StyleResolver::adjustGridItemPosition(RenderStyle* style, RenderStyle* parentStyle) const
</del><ins>+void StyleResolver::adjustGridItemPosition(RenderStyle&amp; style, const RenderStyle&amp; parentStyle) const
</ins><span class="cx"> {
</span><del>-    const GridPosition&amp; columnStartPosition = style-&gt;gridItemColumnStart();
-    const GridPosition&amp; columnEndPosition = style-&gt;gridItemColumnEnd();
-    const GridPosition&amp; rowStartPosition = style-&gt;gridItemRowStart();
-    const GridPosition&amp; rowEndPosition = style-&gt;gridItemRowEnd();
</del><ins>+    const GridPosition&amp; columnStartPosition = style.gridItemColumnStart();
+    const GridPosition&amp; columnEndPosition = style.gridItemColumnEnd();
+    const GridPosition&amp; rowStartPosition = style.gridItemRowStart();
+    const GridPosition&amp; rowEndPosition = style.gridItemRowEnd();
</ins><span class="cx"> 
</span><span class="cx">     // If opposing grid-placement properties both specify a grid span, they both compute to ‘auto’.
</span><span class="cx">     if (columnStartPosition.isSpan() &amp;&amp; columnEndPosition.isSpan()) {
</span><del>-        style-&gt;setGridItemColumnStart(GridPosition());
-        style-&gt;setGridItemColumnEnd(GridPosition());
</del><ins>+        style.setGridItemColumnStart(GridPosition());
+        style.setGridItemColumnEnd(GridPosition());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (rowStartPosition.isSpan() &amp;&amp; rowEndPosition.isSpan()) {
</span><del>-        style-&gt;setGridItemRowStart(GridPosition());
-        style-&gt;setGridItemRowEnd(GridPosition());
</del><ins>+        style.setGridItemRowStart(GridPosition());
+        style.setGridItemRowEnd(GridPosition());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // Unknown named grid area compute to 'auto'.
</span><del>-    const NamedGridAreaMap&amp; map = parentStyle-&gt;namedGridArea();
</del><ins>+    const NamedGridAreaMap&amp; map = parentStyle.namedGridArea();
</ins><span class="cx"> 
</span><span class="cx"> #define CLEAR_UNKNOWN_NAMED_AREA(prop, Prop) \
</span><span class="cx">     if (prop.isNamedGridArea() &amp;&amp; !map.contains(prop.namedGridLine())) \
</span><del>-        style-&gt;setGridItem##Prop(GridPosition());
</del><ins>+        style.setGridItem##Prop(GridPosition());
</ins><span class="cx"> 
</span><span class="cx">     CLEAR_UNKNOWN_NAMED_AREA(columnStartPosition, ColumnStart);
</span><span class="cx">     CLEAR_UNKNOWN_NAMED_AREA(columnEndPosition, ColumnEnd);
</span><span class="lines">@@ -2090,9 +2088,9 @@
</span><span class="cx">                 CSSValue* item = i.value();
</span><span class="cx">                 if (item-&gt;isImageGeneratorValue()) {
</span><span class="cx">                     if (item-&gt;isGradientValue())
</span><del>-                        state.style()-&gt;setContent(StyleGeneratedImage::create(toCSSGradientValue(item)-&gt;gradientWithStylesResolved(this).get()), didSet);
</del><ins>+                        state.style()-&gt;setContent(StyleGeneratedImage::create(*toCSSGradientValue(item)-&gt;gradientWithStylesResolved(this)), didSet);
</ins><span class="cx">                     else
</span><del>-                        state.style()-&gt;setContent(StyleGeneratedImage::create(static_cast&lt;CSSImageGeneratorValue*&gt;(item)), didSet);
</del><ins>+                        state.style()-&gt;setContent(StyleGeneratedImage::create(*toCSSImageGeneratorValue(item)), didSet);
</ins><span class="cx">                     didSet = true;
</span><span class="cx"> #if ENABLE(CSS_IMAGE_SET)
</span><span class="cx">                 } else if (item-&gt;isImageSetValue()) {
</span><span class="lines">@@ -2711,6 +2709,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     case CSSPropertyWebkitGridColumnStart: {
</span><ins>+        HANDLE_INHERIT_AND_INITIAL(gridItemColumnStart, GridItemColumnStart);
</ins><span class="cx">         GridPosition columnStartPosition;
</span><span class="cx">         if (!createGridPosition(value, columnStartPosition))
</span><span class="cx">             return;
</span><span class="lines">@@ -2718,6 +2717,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     case CSSPropertyWebkitGridColumnEnd: {
</span><ins>+        HANDLE_INHERIT_AND_INITIAL(gridItemColumnEnd, GridItemColumnEnd);
</ins><span class="cx">         GridPosition columnEndPosition;
</span><span class="cx">         if (!createGridPosition(value, columnEndPosition))
</span><span class="cx">             return;
</span><span class="lines">@@ -2726,6 +2726,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     case CSSPropertyWebkitGridRowStart: {
</span><ins>+        HANDLE_INHERIT_AND_INITIAL(gridItemRowStart, GridItemRowStart);
</ins><span class="cx">         GridPosition rowStartPosition;
</span><span class="cx">         if (!createGridPosition(value, rowStartPosition))
</span><span class="cx">             return;
</span><span class="lines">@@ -2733,6 +2734,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     case CSSPropertyWebkitGridRowEnd: {
</span><ins>+        HANDLE_INHERIT_AND_INITIAL(gridItemRowEnd, GridItemRowEnd);
</ins><span class="cx">         GridPosition rowEndPosition;
</span><span class="cx">         if (!createGridPosition(value, rowEndPosition))
</span><span class="cx">             return;
</span><span class="lines">@@ -3063,8 +3065,8 @@
</span><span class="cx"> 
</span><span class="cx">     if (value-&gt;isImageGeneratorValue()) {
</span><span class="cx">         if (value-&gt;isGradientValue())
</span><del>-            return generatedOrPendingFromValue(property, toCSSGradientValue(value)-&gt;gradientWithStylesResolved(this).get());
-        return generatedOrPendingFromValue(property, static_cast&lt;CSSImageGeneratorValue*&gt;(value));
</del><ins>+            return generatedOrPendingFromValue(property, *toCSSGradientValue(value)-&gt;gradientWithStylesResolved(this));
+        return generatedOrPendingFromValue(property, toCSSImageGeneratorValue(*value));
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(CSS_IMAGE_SET)
</span><span class="lines">@@ -3086,17 +3088,17 @@
</span><span class="cx">     return image.release();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;StyleImage&gt; StyleResolver::generatedOrPendingFromValue(CSSPropertyID property, CSSImageGeneratorValue* value)
</del><ins>+PassRefPtr&lt;StyleImage&gt; StyleResolver::generatedOrPendingFromValue(CSSPropertyID property, CSSImageGeneratorValue&amp; value)
</ins><span class="cx"> {
</span><span class="cx"> #if ENABLE(CSS_FILTERS)
</span><del>-    if (value-&gt;isFilterImageValue()) {
</del><ins>+    if (value.isFilterImageValue()) {
</ins><span class="cx">         // FilterImage needs to calculate FilterOperations.
</span><del>-        toCSSFilterImageValue(value)-&gt;createFilterOperations(this);
</del><ins>+        toCSSFilterImageValue(value).createFilterOperations(this);
</ins><span class="cx">     }
</span><span class="cx"> #endif
</span><del>-    if (value-&gt;isPending()) {
-        m_state.pendingImageProperties().set(property, value);
-        return StylePendingImage::create(value);
</del><ins>+    if (value.isPending()) {
+        m_state.pendingImageProperties().set(property, &amp;value);
+        return StylePendingImage::create(&amp;value);
</ins><span class="cx">     }
</span><span class="cx">     return StyleGeneratedImage::create(value);
</span><span class="cx"> }
</span><span class="lines">@@ -3872,32 +3874,23 @@
</span><span class="cx"> 
</span><span class="cx"> PassRefPtr&lt;StyleImage&gt; StyleResolver::loadPendingImage(StylePendingImage* pendingImage)
</span><span class="cx"> {
</span><del>-    CachedResourceLoader* cachedResourceLoader = m_state.document().cachedResourceLoader();
</del><ins>+    if (auto imageValue = pendingImage-&gt;cssImageValue())
+        return imageValue-&gt;cachedImage(m_state.document().cachedResourceLoader());
</ins><span class="cx"> 
</span><del>-    if (pendingImage-&gt;cssImageValue()) {
-        CSSImageValue* imageValue = pendingImage-&gt;cssImageValue();
-        return imageValue-&gt;cachedImage(cachedResourceLoader);
</del><ins>+    if (auto imageGeneratorValue = pendingImage-&gt;cssImageGeneratorValue()) {
+        imageGeneratorValue-&gt;loadSubimages(m_state.document().cachedResourceLoader());
+        return StyleGeneratedImage::create(*imageGeneratorValue);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (pendingImage-&gt;cssImageGeneratorValue()) {
-        CSSImageGeneratorValue* imageGeneratorValue = pendingImage-&gt;cssImageGeneratorValue();
-        imageGeneratorValue-&gt;loadSubimages(cachedResourceLoader);
-        return StyleGeneratedImage::create(imageGeneratorValue);
-    }
</del><ins>+    if (auto cursorImageValue = pendingImage-&gt;cssCursorImageValue())
+        return cursorImageValue-&gt;cachedImage(m_state.document().cachedResourceLoader());
</ins><span class="cx"> 
</span><del>-    if (pendingImage-&gt;cssCursorImageValue()) {
-        CSSCursorImageValue* cursorImageValue = pendingImage-&gt;cssCursorImageValue();
-        return cursorImageValue-&gt;cachedImage(cachedResourceLoader);
-    }
-
</del><span class="cx"> #if ENABLE(CSS_IMAGE_SET)
</span><del>-    if (pendingImage-&gt;cssImageSetValue()) {
-        CSSImageSetValue* imageSetValue = pendingImage-&gt;cssImageSetValue();
-        return imageSetValue-&gt;cachedImageSet(cachedResourceLoader);
-    }
</del><ins>+    if (CSSImageSetValue* imageSetValue = pendingImage-&gt;cssImageSetValue())
+        return imageSetValue-&gt;cachedImageSet(m_state.document().cachedResourceLoader());
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    return 0;
</del><ins>+    return nullptr;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="lines">@@ -3928,8 +3921,8 @@
</span><span class="cx">     if (m_state.pendingImageProperties().isEmpty())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    PendingImagePropertyMap::const_iterator::Keys end = m_state.pendingImageProperties().end().keys();
-    for (PendingImagePropertyMap::const_iterator::Keys it = m_state.pendingImageProperties().begin().keys(); it != end; ++it) {
</del><ins>+    auto end = m_state.pendingImageProperties().end().keys();
+    for (auto it = m_state.pendingImageProperties().begin().keys(); it != end; ++it) {
</ins><span class="cx">         CSSPropertyID currentProperty = *it;
</span><span class="cx"> 
</span><span class="cx">         switch (currentProperty) {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorecssStyleResolverh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/css/StyleResolver.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/css/StyleResolver.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/css/StyleResolver.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -345,8 +345,8 @@
</span><span class="cx">     void checkForTextSizeAdjust(RenderStyle*);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    void adjustRenderStyle(RenderStyle* styleToAdjust, RenderStyle* parentStyle, Element*);
-    void adjustGridItemPosition(RenderStyle* styleToAdjust, RenderStyle* parentStyle) const;
</del><ins>+    void adjustRenderStyle(RenderStyle&amp; styleToAdjust, const RenderStyle&amp; parentStyle, Element*);
+    void adjustGridItemPosition(RenderStyle&amp; styleToAdjust, const RenderStyle&amp; parentStyle) const;
</ins><span class="cx"> 
</span><span class="cx">     bool fastRejectSelector(const RuleData&amp;) const;
</span><span class="cx"> 
</span><span class="lines">@@ -503,7 +503,7 @@
</span><span class="cx"> 
</span><span class="cx">     PassRefPtr&lt;StyleImage&gt; styleImage(CSSPropertyID, CSSValue*);
</span><span class="cx">     PassRefPtr&lt;StyleImage&gt; cachedOrPendingFromValue(CSSPropertyID, CSSImageValue*);
</span><del>-    PassRefPtr&lt;StyleImage&gt; generatedOrPendingFromValue(CSSPropertyID, CSSImageGeneratorValue*);
</del><ins>+    PassRefPtr&lt;StyleImage&gt; generatedOrPendingFromValue(CSSPropertyID, CSSImageGeneratorValue&amp;);
</ins><span class="cx"> #if ENABLE(CSS_IMAGE_SET)
</span><span class="cx">     PassRefPtr&lt;StyleImage&gt; setOrPendingFromValue(CSSPropertyID, CSSImageSetValue*);
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoredomCustomEventcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/dom/CustomEvent.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/dom/CustomEvent.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/dom/CustomEvent.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CustomEvent::initCustomEvent(const AtomicString&amp; type, bool canBubble, bool cancelable, const ScriptValue&amp; detail)
</del><ins>+void CustomEvent::initCustomEvent(const AtomicString&amp; type, bool canBubble, bool cancelable, const Deprecated::ScriptValue&amp; detail)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(!m_serializedScriptValue.get());
</span><span class="cx">     if (dispatched())
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoredomCustomEventh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/dom/CustomEvent.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/dom/CustomEvent.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/dom/CustomEvent.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -27,15 +27,15 @@
</span><span class="cx"> #define CustomEvent_h
</span><span class="cx"> 
</span><span class="cx"> #include &quot;Event.h&quot;
</span><del>-#include &quot;ScriptValue.h&quot;
</del><span class="cx"> #include &quot;SerializedScriptValue.h&quot;
</span><ins>+#include &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> struct CustomEventInit : public EventInit {
</span><span class="cx">     CustomEventInit();
</span><span class="cx"> 
</span><del>-    ScriptValue detail;
</del><ins>+    Deprecated::ScriptValue detail;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> class CustomEvent : public Event {
</span><span class="lines">@@ -52,18 +52,18 @@
</span><span class="cx">         return adoptRef(new CustomEvent(type, initializer));
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    void initCustomEvent(const AtomicString&amp; type, bool canBubble, bool cancelable, const ScriptValue&amp; detail);
</del><ins>+    void initCustomEvent(const AtomicString&amp; type, bool canBubble, bool cancelable, const Deprecated::ScriptValue&amp; detail);
</ins><span class="cx"> 
</span><span class="cx">     virtual EventInterface eventInterface() const;
</span><span class="cx"> 
</span><del>-    const ScriptValue&amp; detail() const { return m_detail; }
</del><ins>+    const Deprecated::ScriptValue&amp; detail() const { return m_detail; }
</ins><span class="cx">     PassRefPtr&lt;SerializedScriptValue&gt; serializedScriptValue() { return m_serializedScriptValue; }
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     CustomEvent();
</span><span class="cx">     CustomEvent(const AtomicString&amp; type, const CustomEventInit&amp; initializer);
</span><span class="cx"> 
</span><del>-    ScriptValue m_detail;
</del><ins>+    Deprecated::ScriptValue m_detail;
</ins><span class="cx">     RefPtr&lt;SerializedScriptValue&gt; m_serializedScriptValue;
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoredomDocumentcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/dom/Document.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/dom/Document.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/dom/Document.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -3025,12 +3025,32 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;Node&gt; Document::cloneNode(bool /*deep*/)
</del><ins>+PassRefPtr&lt;Node&gt; Document::cloneNode(bool deep)
</ins><span class="cx"> {
</span><del>-    // Spec says cloning Document nodes is &quot;implementation dependent&quot; and we do not support it.
-    return nullptr;
</del><ins>+    RefPtr&lt;Document&gt; clone = cloneDocumentWithoutChildren();
+    clone-&gt;cloneDataFromDocument(*this);
+    if (deep)
+        cloneChildNodes(clone.get());
+    return clone.release();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+PassRefPtr&lt;Document&gt; Document::cloneDocumentWithoutChildren() const
+{
+    return isXHTMLDocument() ? createXHTML(nullptr, url()) : create(nullptr, url());
+}
+
+void Document::cloneDataFromDocument(const Document&amp; other)
+{
+    ASSERT(m_url == other.url());
+    m_baseURL = other.baseURL();
+    m_baseURLOverride = other.baseURLOverride();
+    m_documentURI = other.documentURI();
+
+    setCompatibilityMode(other.compatibilityMode());
+    setSecurityOrigin(other.securityOrigin());
+    setDecoder(other.decoder());
+}
+
</ins><span class="cx"> StyleSheetList* Document::styleSheets()
</span><span class="cx"> {
</span><span class="cx">     if (!m_styleSheetList)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoredomDocumenth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/dom/Document.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/dom/Document.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/dom/Document.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1188,6 +1188,8 @@
</span><span class="cx"> 
</span><span class="cx">     void clearXMLVersion() { m_xmlVersion = String(); }
</span><span class="cx"> 
</span><ins>+    virtual PassRefPtr&lt;Document&gt; cloneDocumentWithoutChildren() const;
+
</ins><span class="cx"> private:
</span><span class="cx">     friend class Node;
</span><span class="cx">     friend class IgnoreDestructiveWriteCountIncrementer;
</span><span class="lines">@@ -1214,6 +1216,7 @@
</span><span class="cx">     virtual NodeType nodeType() const OVERRIDE;
</span><span class="cx">     virtual bool childTypeAllowed(NodeType) const OVERRIDE;
</span><span class="cx">     virtual PassRefPtr&lt;Node&gt; cloneNode(bool deep) OVERRIDE;
</span><ins>+    void cloneDataFromDocument(const Document&amp;);
</ins><span class="cx"> 
</span><span class="cx">     virtual void refScriptExecutionContext() OVERRIDE { ref(); }
</span><span class="cx">     virtual void derefScriptExecutionContext() OVERRIDE { deref(); }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoredomDocumentidl"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/dom/Document.idl (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/dom/Document.idl        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/dom/Document.idl        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -239,7 +239,7 @@
</span><span class="cx">     [Conditional=FONT_LOAD_EVENTS] readonly attribute FontLoader fontloader;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-#if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C
</del><ins>+#if (!defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C) &amp;&amp; (!defined(LANGUAGE_GOBJECT) || !LANGUAGE_GOBJECT)
</ins><span class="cx">     // Event handler DOM attributes
</span><span class="cx">     [NotEnumerable] attribute EventListener onabort;
</span><span class="cx">     [NotEnumerable] attribute EventListener onblur;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoredomElementcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/dom/Element.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/dom/Element.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/dom/Element.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -2154,14 +2154,15 @@
</span><span class="cx">         if (pseudoElementSpecifier) {
</span><span class="cx">             RenderStyle* cachedPseudoStyle = usedStyle-&gt;getCachedPseudoStyle(pseudoElementSpecifier);
</span><span class="cx">             return cachedPseudoStyle ? cachedPseudoStyle : usedStyle;
</span><del>-         } else
-            return usedStyle;
</del><ins>+        }
+        return usedStyle;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (!attached())
</del><ins>+    if (!attached()) {
</ins><span class="cx">         // FIXME: Try to do better than this. Ensure that styleForElement() works for elements that are not in the
</span><span class="cx">         // document tree and figure out when to destroy the computed style for such elements.
</span><del>-        return 0;
</del><ins>+        return nullptr;
+    }
</ins><span class="cx"> 
</span><span class="cx">     ElementRareData&amp; data = ensureElementRareData();
</span><span class="cx">     if (!data.computedStyle())
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoredomElementh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/dom/Element.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/dom/Element.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/dom/Element.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -340,7 +340,7 @@
</span><span class="cx">     virtual short tabIndex() const;
</span><span class="cx">     virtual Element* focusDelegate();
</span><span class="cx"> 
</span><del>-    RenderStyle* computedStyle(PseudoId = NOPSEUDO);
</del><ins>+    virtual RenderStyle* computedStyle(PseudoId = NOPSEUDO) OVERRIDE;
</ins><span class="cx"> 
</span><span class="cx">     // Methods for indicating the style is affected by dynamic updates (e.g., children changing, our position changing in our sibling list, etc.)
</span><span class="cx">     bool styleAffectedByEmpty() const { return hasRareData() &amp;&amp; rareDataStyleAffectedByEmpty(); }
</span><span class="lines">@@ -636,8 +636,6 @@
</span><span class="cx"> 
</span><span class="cx">     void cancelFocusAppearanceUpdate();
</span><span class="cx"> 
</span><del>-    virtual RenderStyle* virtualComputedStyle(PseudoId pseudoElementSpecifier = NOPSEUDO) OVERRIDE { return computedStyle(pseudoElementSpecifier); }
-    
</del><span class="cx">     // cloneNode is private so that non-virtual cloneElementWithChildren and cloneElementWithoutChildren
</span><span class="cx">     // are used instead.
</span><span class="cx">     virtual PassRefPtr&lt;Node&gt; cloneNode(bool deep) OVERRIDE;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoredomInlineStyleSheetOwnercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/dom/InlineStyleSheetOwner.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/dom/InlineStyleSheetOwner.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/dom/InlineStyleSheetOwner.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx">     , m_startLineNumber(WTF::OrdinalNumber::beforeFirst())
</span><span class="cx"> {
</span><span class="cx">     if (createdByParser &amp;&amp; document.scriptableDocumentParser() &amp;&amp; !document.isInDocumentWrite())
</span><del>-        m_startLineNumber = document.scriptableDocumentParser()-&gt;lineNumber();
</del><ins>+        m_startLineNumber = document.scriptableDocumentParser()-&gt;textPosition().m_line;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> InlineStyleSheetOwner::~InlineStyleSheetOwner()
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoredomMessageEventcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/dom/MessageEvent.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/dom/MessageEvent.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/dom/MessageEvent.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -21,14 +21,13 @@
</span><span class="cx">  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
</span><span class="cx">  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
</span><span class="cx">  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
</span><del>- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
</del><ins>+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</ins><span class="cx">  *
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;MessageEvent.h&quot;
</span><span class="cx"> 
</span><del>-
</del><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> static inline bool isValidSource(EventTarget* source)
</span><span class="lines">@@ -56,7 +55,7 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-MessageEvent::MessageEvent(const ScriptValue&amp; data, const String&amp; origin, const String&amp; lastEventId, PassRefPtr&lt;EventTarget&gt; source, PassOwnPtr&lt;MessagePortArray&gt; ports)
</del><ins>+MessageEvent::MessageEvent(const Deprecated::ScriptValue&amp; data, const String&amp; origin, const String&amp; lastEventId, PassRefPtr&lt;EventTarget&gt; source, PassOwnPtr&lt;MessagePortArray&gt; ports)
</ins><span class="cx">     : Event(eventNames().messageEvent, false, false)
</span><span class="cx">     , m_dataType(DataTypeScriptValue)
</span><span class="cx">     , m_dataAsScriptValue(data)
</span><span class="lines">@@ -108,7 +107,7 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void MessageEvent::initMessageEvent(const AtomicString&amp; type, bool canBubble, bool cancelable, const ScriptValue&amp; data, const String&amp; origin, const String&amp; lastEventId, DOMWindow* source, PassOwnPtr&lt;MessagePortArray&gt; ports)
</del><ins>+void MessageEvent::initMessageEvent(const AtomicString&amp; type, bool canBubble, bool cancelable, const Deprecated::ScriptValue&amp; data, const String&amp; origin, const String&amp; lastEventId, DOMWindow* source, PassOwnPtr&lt;MessagePortArray&gt; ports)
</ins><span class="cx"> {
</span><span class="cx">     if (dispatched())
</span><span class="cx">         return;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoredomMessageEventh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/dom/MessageEvent.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/dom/MessageEvent.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/dom/MessageEvent.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -32,8 +32,8 @@
</span><span class="cx"> #include &quot;DOMWindow.h&quot;
</span><span class="cx"> #include &quot;Event.h&quot;
</span><span class="cx"> #include &quot;MessagePort.h&quot;
</span><del>-#include &quot;ScriptValue.h&quot;
</del><span class="cx"> #include &quot;SerializedScriptValue.h&quot;
</span><ins>+#include &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> #include &lt;runtime/ArrayBuffer.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -43,7 +43,7 @@
</span><span class="cx"> struct MessageEventInit : public EventInit {
</span><span class="cx">     MessageEventInit();
</span><span class="cx"> 
</span><del>-    ScriptValue data;
</del><ins>+    Deprecated::ScriptValue data;
</ins><span class="cx">     String origin;
</span><span class="cx">     String lastEventId;
</span><span class="cx">     RefPtr&lt;EventTarget&gt; source;
</span><span class="lines">@@ -56,7 +56,7 @@
</span><span class="cx">     {
</span><span class="cx">         return adoptRef(new MessageEvent);
</span><span class="cx">     }
</span><del>-    static PassRefPtr&lt;MessageEvent&gt; create(PassOwnPtr&lt;MessagePortArray&gt; ports, const ScriptValue&amp; data = ScriptValue(), const String&amp; origin = String(), const String&amp; lastEventId = String(), PassRefPtr&lt;EventTarget&gt; source = 0)
</del><ins>+    static PassRefPtr&lt;MessageEvent&gt; create(PassOwnPtr&lt;MessagePortArray&gt; ports, const Deprecated::ScriptValue&amp; data = Deprecated::ScriptValue(), const String&amp; origin = String(), const String&amp; lastEventId = String(), PassRefPtr&lt;EventTarget&gt; source = 0)
</ins><span class="cx">     {
</span><span class="cx">         return adoptRef(new MessageEvent(data, origin, lastEventId, source, ports));
</span><span class="cx">     }
</span><span class="lines">@@ -82,7 +82,7 @@
</span><span class="cx">     }
</span><span class="cx">     virtual ~MessageEvent();
</span><span class="cx"> 
</span><del>-    void initMessageEvent(const AtomicString&amp; type, bool canBubble, bool cancelable, const ScriptValue&amp; data, const String&amp; origin, const String&amp; lastEventId, DOMWindow* source, PassOwnPtr&lt;MessagePortArray&gt;);
</del><ins>+    void initMessageEvent(const AtomicString&amp; type, bool canBubble, bool cancelable, const Deprecated::ScriptValue&amp; data, const String&amp; origin, const String&amp; lastEventId, DOMWindow* source, PassOwnPtr&lt;MessagePortArray&gt;);
</ins><span class="cx">     void initMessageEvent(const AtomicString&amp; type, bool canBubble, bool cancelable, PassRefPtr&lt;SerializedScriptValue&gt; data, const String&amp; origin, const String&amp; lastEventId, DOMWindow* source, PassOwnPtr&lt;MessagePortArray&gt;);
</span><span class="cx"> 
</span><span class="cx">     const String&amp; origin() const { return m_origin; }
</span><span class="lines">@@ -107,7 +107,7 @@
</span><span class="cx">         DataTypeArrayBuffer
</span><span class="cx">     };
</span><span class="cx">     DataType dataType() const { return m_dataType; }
</span><del>-    const ScriptValue&amp; dataAsScriptValue() const { ASSERT(m_dataType == DataTypeScriptValue); return m_dataAsScriptValue; }
</del><ins>+    const Deprecated::ScriptValue&amp; dataAsScriptValue() const { ASSERT(m_dataType == DataTypeScriptValue); return m_dataAsScriptValue; }
</ins><span class="cx">     PassRefPtr&lt;SerializedScriptValue&gt; dataAsSerializedScriptValue() const { ASSERT(m_dataType == DataTypeSerializedScriptValue); return m_dataAsSerializedScriptValue; }
</span><span class="cx">     String dataAsString() const { ASSERT(m_dataType == DataTypeString); return m_dataAsString; }
</span><span class="cx">     Blob* dataAsBlob() const { ASSERT(m_dataType == DataTypeBlob); return m_dataAsBlob.get(); }
</span><span class="lines">@@ -116,7 +116,7 @@
</span><span class="cx"> private:
</span><span class="cx">     MessageEvent();
</span><span class="cx">     MessageEvent(const AtomicString&amp;, const MessageEventInit&amp;);
</span><del>-    MessageEvent(const ScriptValue&amp; data, const String&amp; origin, const String&amp; lastEventId, PassRefPtr&lt;EventTarget&gt; source, PassOwnPtr&lt;MessagePortArray&gt;);
</del><ins>+    MessageEvent(const Deprecated::ScriptValue&amp; data, const String&amp; origin, const String&amp; lastEventId, PassRefPtr&lt;EventTarget&gt; source, PassOwnPtr&lt;MessagePortArray&gt;);
</ins><span class="cx">     MessageEvent(PassRefPtr&lt;SerializedScriptValue&gt; data, const String&amp; origin, const String&amp; lastEventId, PassRefPtr&lt;EventTarget&gt; source, PassOwnPtr&lt;MessagePortArray&gt;);
</span><span class="cx"> 
</span><span class="cx">     explicit MessageEvent(const String&amp; data, const String&amp; origin);
</span><span class="lines">@@ -124,7 +124,7 @@
</span><span class="cx">     explicit MessageEvent(PassRefPtr&lt;ArrayBuffer&gt; data, const String&amp; origin);
</span><span class="cx"> 
</span><span class="cx">     DataType m_dataType;
</span><del>-    ScriptValue m_dataAsScriptValue;
</del><ins>+    Deprecated::ScriptValue m_dataAsScriptValue;
</ins><span class="cx">     RefPtr&lt;SerializedScriptValue&gt; m_dataAsSerializedScriptValue;
</span><span class="cx">     String m_dataAsString;
</span><span class="cx">     RefPtr&lt;Blob&gt; m_dataAsBlob;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoredomMessagePortcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/dom/MessagePort.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/dom/MessagePort.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/dom/MessagePort.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -72,7 +72,7 @@
</span><span class="cx">         for (unsigned int i = 0; i &lt; ports-&gt;size(); ++i) {
</span><span class="cx">             MessagePort* dataPort = (*ports)[i].get();
</span><span class="cx">             if (dataPort == this || m_entangledChannel-&gt;isConnectedTo(dataPort)) {
</span><del>-                ec = INVALID_STATE_ERR;
</del><ins>+                ec = DATA_CLONE_ERR;
</ins><span class="cx">                 return;
</span><span class="cx">             }
</span><span class="cx">         }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoredomNodecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/dom/Node.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/dom/Node.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/dom/Node.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -884,9 +884,13 @@
</span><span class="cx">     return lastChild();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RenderStyle* Node::virtualComputedStyle(PseudoId pseudoElementSpecifier)
</del><ins>+RenderStyle* Node::computedStyle(PseudoId pseudoElementSpecifier)
</ins><span class="cx"> {
</span><del>-    return parentOrShadowHostNode() ? parentOrShadowHostNode()-&gt;computedStyle(pseudoElementSpecifier) : 0;
</del><ins>+    for (Node* node = this; node; node = node-&gt;parentOrShadowHostNode()) {
+        if (node-&gt;isElementNode())
+            return toElement(node)-&gt;computedStyle(pseudoElementSpecifier);
+    }
+    return nullptr;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> int Node::maxCharacterOffset() const
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoredomNodeh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/dom/Node.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/dom/Node.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/dom/Node.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -452,7 +452,7 @@
</span><span class="cx">     // Wrapper for nodes that don't have a renderer, but still cache the style (like HTMLOptionElement).
</span><span class="cx">     RenderStyle* renderStyle() const;
</span><span class="cx"> 
</span><del>-    RenderStyle* computedStyle(PseudoId pseudoElementSpecifier = NOPSEUDO) { return virtualComputedStyle(pseudoElementSpecifier); }
</del><ins>+    virtual RenderStyle* computedStyle(PseudoId pseudoElementSpecifier = NOPSEUDO);
</ins><span class="cx"> 
</span><span class="cx">     // -----------------------------------------------------------------------------
</span><span class="cx">     // Notification of document structure changes (see ContainerNode.h for more notification methods)
</span><span class="lines">@@ -664,7 +664,6 @@
</span><span class="cx">     virtual void derefEventTarget() OVERRIDE;
</span><span class="cx"> 
</span><span class="cx">     virtual RenderStyle* nonRendererStyle() const { return 0; }
</span><del>-    virtual RenderStyle* virtualComputedStyle(PseudoId = NOPSEUDO);
</del><span class="cx"> 
</span><span class="cx">     Element* ancestorElement() const;
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoredomPopStateEventh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/dom/PopStateEvent.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/dom/PopStateEvent.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/dom/PopStateEvent.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -28,14 +28,14 @@
</span><span class="cx"> #define PopStateEvent_h
</span><span class="cx"> 
</span><span class="cx"> #include &quot;Event.h&quot;
</span><del>-#include &quot;ScriptValue.h&quot;
</del><ins>+#include &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> struct PopStateEventInit : public EventInit {
</span><span class="cx">     PopStateEventInit();
</span><span class="cx"> 
</span><del>-    ScriptValue state;
</del><ins>+    Deprecated::ScriptValue state;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> class History;
</span><span class="lines">@@ -49,7 +49,7 @@
</span><span class="cx">     static PassRefPtr&lt;PopStateEvent&gt; create(const AtomicString&amp;, const PopStateEventInit&amp;);
</span><span class="cx"> 
</span><span class="cx">     PassRefPtr&lt;SerializedScriptValue&gt; serializedState() const { return m_serializedState; }
</span><del>-    const ScriptValue&amp; state() const { return m_state; }
</del><ins>+    const Deprecated::ScriptValue&amp; state() const { return m_state; }
</ins><span class="cx">     History* history() const { return m_history.get(); }
</span><span class="cx"> 
</span><span class="cx">     virtual EventInterface eventInterface() const;
</span><span class="lines">@@ -59,7 +59,7 @@
</span><span class="cx">     PopStateEvent(const AtomicString&amp;, const PopStateEventInit&amp;);
</span><span class="cx">     explicit PopStateEvent(PassRefPtr&lt;SerializedScriptValue&gt;, PassRefPtr&lt;History&gt;);
</span><span class="cx"> 
</span><del>-    ScriptValue m_state;
</del><ins>+    Deprecated::ScriptValue m_state;
</ins><span class="cx">     RefPtr&lt;SerializedScriptValue&gt; m_serializedState;
</span><span class="cx">     RefPtr&lt;History&gt; m_history;
</span><span class="cx"> };
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoredomScriptElementcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/dom/ScriptElement.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/dom/ScriptElement.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/dom/ScriptElement.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -42,11 +42,11 @@
</span><span class="cx"> #include &quot;ScriptController.h&quot;
</span><span class="cx"> #include &quot;ScriptRunner.h&quot;
</span><span class="cx"> #include &quot;ScriptSourceCode.h&quot;
</span><del>-#include &quot;ScriptValue.h&quot;
</del><span class="cx"> #include &quot;ScriptableDocumentParser.h&quot;
</span><span class="cx"> #include &quot;SecurityOrigin.h&quot;
</span><span class="cx"> #include &quot;Settings.h&quot;
</span><span class="cx"> #include &quot;TextNodeTraversal.h&quot;
</span><ins>+#include &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> #include &lt;wtf/StdLibExtras.h&gt;
</span><span class="cx"> #include &lt;wtf/text/StringBuilder.h&gt;
</span><span class="cx"> #include &lt;wtf/text/StringHash.h&gt;
</span><span class="lines">@@ -75,7 +75,7 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(m_element);
</span><span class="cx">     if (parserInserted &amp;&amp; m_element-&gt;document().scriptableDocumentParser() &amp;&amp; !m_element-&gt;document().isInDocumentWrite())
</span><del>-        m_startLineNumber = m_element-&gt;document().scriptableDocumentParser()-&gt;lineNumber();
</del><ins>+        m_startLineNumber = m_element-&gt;document().scriptableDocumentParser()-&gt;textPosition().m_line;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> ScriptElement::~ScriptElement()
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoredomScriptableDocumentParserh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/dom/ScriptableDocumentParser.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/dom/ScriptableDocumentParser.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/dom/ScriptableDocumentParser.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -44,8 +44,6 @@
</span><span class="cx"> 
</span><span class="cx">     virtual bool isWaitingForScripts() const = 0;
</span><span class="cx"> 
</span><del>-    // These are used to expose the current line/column to the scripting system.
-    virtual OrdinalNumber lineNumber() const = 0;
</del><span class="cx">     virtual TextPosition textPosition() const = 0;
</span><span class="cx"> 
</span><span class="cx">     void setWasCreatedByScript(bool wasCreatedByScript) { m_wasCreatedByScript = wasCreatedByScript; }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoredomStyledElementcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/dom/StyledElement.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/dom/StyledElement.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/dom/StyledElement.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -195,7 +195,7 @@
</span><span class="cx"> {
</span><span class="cx">     WTF::OrdinalNumber startLineNumber = WTF::OrdinalNumber::beforeFirst();
</span><span class="cx">     if (document().scriptableDocumentParser() &amp;&amp; !document().isInDocumentWrite())
</span><del>-        startLineNumber = document().scriptableDocumentParser()-&gt;lineNumber();
</del><ins>+        startLineNumber = document().scriptableDocumentParser()-&gt;textPosition().m_line;
</ins><span class="cx"> 
</span><span class="cx">     if (newStyleString.isNull()) {
</span><span class="cx">         if (PropertySetCSSStyleDeclaration* cssomWrapper = inlineStyleCSSOMWrapper())
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreeditingVisibleUnitscpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/editing/VisibleUnits.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/editing/VisibleUnits.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/editing/VisibleUnits.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -36,6 +36,7 @@
</span><span class="cx"> #include &quot;RenderedPosition.h&quot;
</span><span class="cx"> #include &quot;Text.h&quot;
</span><span class="cx"> #include &quot;TextBoundaries.h&quot;
</span><ins>+#include &quot;TextBreakIterator.h&quot;
</ins><span class="cx"> #include &quot;TextIterator.h&quot;
</span><span class="cx"> #include &quot;VisibleSelection.h&quot;
</span><span class="cx"> #include &quot;htmlediting.h&quot;
</span><span class="lines">@@ -649,8 +650,8 @@
</span><span class="cx">         return length;
</span><span class="cx">     }
</span><span class="cx">     needMoreContext = false;
</span><del>-    int start, end;
-    findWordBoundary(characters, length, offset, &amp;start, &amp;end);
</del><ins>+    int end;
+    findEndWordBoundary(characters, length, offset, &amp;end);
</ins><span class="cx">     return end;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorehtmlHTMLDocumentcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/html/HTMLDocument.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/html/HTMLDocument.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/html/HTMLDocument.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -365,4 +365,9 @@
</span><span class="cx">     return bodyElement &amp;&amp; isHTMLFrameSetElement(bodyElement);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+PassRefPtr&lt;Document&gt; HTMLDocument::cloneDocumentWithoutChildren() const
+{
+    return create(nullptr, url());
</ins><span class="cx"> }
</span><ins>+
+}
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCorehtmlHTMLDocumenth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/html/HTMLDocument.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/html/HTMLDocument.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/html/HTMLDocument.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -88,6 +88,8 @@
</span><span class="cx">     virtual bool isFrameSet() const;
</span><span class="cx">     virtual PassRefPtr&lt;DocumentParser&gt; createParser();
</span><span class="cx"> 
</span><ins>+    virtual PassRefPtr&lt;Document&gt; cloneDocumentWithoutChildren() const OVERRIDE FINAL;
+
</ins><span class="cx">     DocumentOrderedMap m_documentNamedItem;
</span><span class="cx">     DocumentOrderedMap m_windowNamedItem;
</span><span class="cx"> };
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorehtmlHTMLInputElementcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/html/HTMLInputElement.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/html/HTMLInputElement.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/html/HTMLInputElement.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -61,6 +61,7 @@
</span><span class="cx"> #include &quot;ScopedEventQueue.h&quot;
</span><span class="cx"> #include &quot;SearchInputType.h&quot;
</span><span class="cx"> #include &quot;StyleResolver.h&quot;
</span><ins>+#include &quot;TextBreakIterator.h&quot;
</ins><span class="cx"> #include &lt;wtf/MathExtras.h&gt;
</span><span class="cx"> #include &lt;wtf/Ref.h&gt;
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorehtmlHTMLMediaElementcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/html/HTMLMediaElement.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/html/HTMLMediaElement.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/html/HTMLMediaElement.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -108,7 +108,10 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(MEDIA_SOURCE)
</span><ins>+#include &quot;DOMWindow.h&quot;
</ins><span class="cx"> #include &quot;HTMLMediaSource.h&quot;
</span><ins>+#include &quot;Performance.h&quot;
+#include &quot;VideoPlaybackQuality.h&quot;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(MEDIA_STREAM)
</span><span class="lines">@@ -132,8 +135,9 @@
</span><span class="cx"> #if ENABLE(MEDIA_CONTROLS_SCRIPT)
</span><span class="cx"> #include &quot;JSMediaControlsHost.h&quot;
</span><span class="cx"> #include &quot;MediaControlsHost.h&quot;
</span><del>-#include &quot;ScriptObject.h&quot;
</del><ins>+#include &quot;ScriptGlobalObject.h&quot;
</ins><span class="cx"> #include &quot;UserAgentScripts.h&quot;
</span><ins>+#include &lt;bindings/ScriptObject.h&gt;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -271,6 +275,9 @@
</span><span class="cx">     , m_preload(MediaPlayer::Auto)
</span><span class="cx">     , m_displayMode(Unknown)
</span><span class="cx">     , m_processingMediaPlayerCallback(0)
</span><ins>+#if ENABLE(MEDIA_SOURCE)
+    , m_droppedVideoFrames(0)
+#endif
</ins><span class="cx">     , m_cachedTime(MediaPlayer::invalidTime())
</span><span class="cx">     , m_clockTimeAtLastCachedTimeUpdate(0)
</span><span class="cx">     , m_minimumClockTimeToUpdateCachedTime(0)
</span><span class="lines">@@ -1669,9 +1676,9 @@
</span><span class="cx">         renderer()-&gt;updateFromElement();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLMediaElement::mediaEngineError(PassRefPtr&lt;MediaError&gt; err)
</del><ins>+void HTMLMediaElement::mediaLoadingFailedFatally(MediaPlayer::NetworkState error)
</ins><span class="cx"> {
</span><del>-    LOG(Media, &quot;HTMLMediaElement::mediaEngineError(%d)&quot;, static_cast&lt;int&gt;(err-&gt;code()));
</del><ins>+    LOG(Media, &quot;HTMLMediaElement::mediaLoadingFailedFatally(%d)&quot;, static_cast&lt;int&gt;(error));
</ins><span class="cx"> 
</span><span class="cx">     // 1 - The user agent should cancel the fetching process.
</span><span class="cx">     stopPeriodicTimers();
</span><span class="lines">@@ -1679,7 +1686,12 @@
</span><span class="cx"> 
</span><span class="cx">     // 2 - Set the error attribute to a new MediaError object whose code attribute is 
</span><span class="cx">     // set to MEDIA_ERR_NETWORK/MEDIA_ERR_DECODE.
</span><del>-    m_error = err;
</del><ins>+    if (error == MediaPlayer::NetworkError)
+        m_error = MediaError::create(MediaError::MEDIA_ERR_NETWORK);
+    else if (error == MediaPlayer::DecodeError)
+        m_error = MediaError::create(MediaError::MEDIA_ERR_DECODE);
+    else
+        ASSERT_NOT_REACHED();
</ins><span class="cx"> 
</span><span class="cx">     // 3 - Queue a task to fire a simple event named error at the media element.
</span><span class="cx">     scheduleEvent(eventNames().errorEvent);
</span><span class="lines">@@ -1783,10 +1795,8 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     
</span><del>-    if (error == MediaPlayer::NetworkError &amp;&amp; m_readyState &gt;= HAVE_METADATA)
-        mediaEngineError(MediaError::create(MediaError::MEDIA_ERR_NETWORK));
-    else if (error == MediaPlayer::DecodeError)
-        mediaEngineError(MediaError::create(MediaError::MEDIA_ERR_DECODE));
</del><ins>+    if ((error == MediaPlayer::NetworkError &amp;&amp; m_readyState &gt;= HAVE_METADATA) || error == MediaPlayer::DecodeError)
+        mediaLoadingFailedFatally(error);
</ins><span class="cx">     else if ((error == MediaPlayer::FormatError || error == MediaPlayer::NetworkError) &amp;&amp; m_loadState == LoadingFromSrcAttr)
</span><span class="cx">         noneSupported();
</span><span class="cx">     
</span><span class="lines">@@ -3905,6 +3915,10 @@
</span><span class="cx">     if (renderer())
</span><span class="cx">         renderer()-&gt;updateFromElement();
</span><span class="cx">     endProcessingMediaPlayerCallback();
</span><ins>+
+#if ENABLE(MEDIA_SOURCE)
+    m_droppedVideoFrames = 0;
+#endif
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLMediaElement::mediaPlayerFirstVideoFrameAvailable(MediaPlayer*)
</span><span class="lines">@@ -5227,6 +5241,29 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if ENABLE(MEDIA_SOURCE)
+RefPtr&lt;VideoPlaybackQuality&gt; HTMLMediaElement::getVideoPlaybackQuality()
+{
+#if ENABLE(WEB_TIMING)
+    DOMWindow* domWindow = document().domWindow();
+    Performance* performance = domWindow ? domWindow-&gt;performance() : nullptr;
+    double now = performance ? performance-&gt;now() : 0;
+#else
+    DocumentLoader* loader = document().loader();
+    double now = loader ? 1000.0 * loader-&gt;timing()-&gt;monotonicTimeToZeroBasedDocumentTime(monotonicallyIncreasingTime()) : 0;
+#endif
+
+    if (!m_player)
+        return VideoPlaybackQuality::create(now, 0, 0, 0, 0);
+
+    return VideoPlaybackQuality::create(now,
+        m_droppedVideoFrames + m_player-&gt;totalVideoFrames(),
+        m_droppedVideoFrames + m_player-&gt;droppedVideoFrames(),
+        m_player-&gt;corruptedVideoFrames(),
+        m_player-&gt;totalFrameDelay());
+}
+#endif
+
</ins><span class="cx"> #if ENABLE(MEDIA_CONTROLS_SCRIPT)
</span><span class="cx"> DOMWrapperWorld&amp; HTMLMediaElement::ensureIsolatedWorld()
</span><span class="cx"> {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorehtmlHTMLMediaElementh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/html/HTMLMediaElement.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/html/HTMLMediaElement.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/html/HTMLMediaElement.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -80,6 +80,9 @@
</span><span class="cx"> #if ENABLE(ENCRYPTED_MEDIA_V2)
</span><span class="cx"> class MediaKeys;
</span><span class="cx"> #endif
</span><ins>+#if ENABLE(MEDIA_SOURCE)
+class VideoPlaybackQuality;
+#endif
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(VIDEO_TRACK)
</span><span class="cx"> class AudioTrackList;
</span><span class="lines">@@ -201,7 +204,8 @@
</span><span class="cx"> #if ENABLE(MEDIA_SOURCE)
</span><span class="cx"> //  Media Source.
</span><span class="cx">     void closeMediaSource();
</span><del>-#endif 
</del><ins>+    void incrementDroppedFrameCount() { ++m_droppedVideoFrames; }
+#endif
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(ENCRYPTED_MEDIA)
</span><span class="cx">     void webkitGenerateKeyRequest(const String&amp; keySystem, PassRefPtr&lt;Uint8Array&gt; initData, ExceptionCode&amp;);
</span><span class="lines">@@ -395,6 +399,13 @@
</span><span class="cx"> 
</span><span class="cx">     unsigned long long fileSize() const;
</span><span class="cx"> 
</span><ins>+    void mediaLoadingFailed(MediaPlayer::NetworkState);
+    void mediaLoadingFailedFatally(MediaPlayer::NetworkState);
+
+#if ENABLE(MEDIA_SOURCE)
+    RefPtr&lt;VideoPlaybackQuality&gt; getVideoPlaybackQuality();
+#endif
+
</ins><span class="cx"> protected:
</span><span class="cx">     HTMLMediaElement(const QualifiedName&amp;, Document&amp;, bool);
</span><span class="cx">     virtual ~HTMLMediaElement();
</span><span class="lines">@@ -563,15 +574,12 @@
</span><span class="cx">     void clearMediaPlayer(int flags);
</span><span class="cx">     bool havePotentialSourceChild();
</span><span class="cx">     void noneSupported();
</span><del>-    void mediaEngineError(PassRefPtr&lt;MediaError&gt; err);
</del><span class="cx">     void cancelPendingEventsAndCallbacks();
</span><span class="cx">     void waitForSourceChange();
</span><span class="cx">     void prepareToPlay();
</span><span class="cx"> 
</span><span class="cx">     URL selectNextSourceChild(ContentType*, String* keySystem, InvalidURLAction);
</span><span class="cx"> 
</span><del>-    void mediaLoadingFailed(MediaPlayer::NetworkState);
-
</del><span class="cx"> #if ENABLE(VIDEO_TRACK)
</span><span class="cx">     void updateActiveTextTrackCues(double);
</span><span class="cx">     HTMLTrackElement* showingTrackWithSameKind(HTMLTrackElement*) const;
</span><span class="lines">@@ -699,6 +707,7 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(MEDIA_SOURCE)
</span><span class="cx">     RefPtr&lt;HTMLMediaSource&gt; m_mediaSource;
</span><ins>+    unsigned long m_droppedVideoFrames;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     mutable double m_cachedTime;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorehtmlHTMLMediaElementidl"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/html/HTMLMediaElement.idl (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/html/HTMLMediaElement.idl        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/html/HTMLMediaElement.idl        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -117,4 +117,8 @@
</span><span class="cx"> 
</span><span class="cx">     [Reflect, TreatNullAs=NullString] attribute DOMString mediaGroup;
</span><span class="cx">     [CustomSetter] attribute MediaController controller;
</span><ins>+
+#if !defined(LANGUAGE_GOBJECT) || !LANGUAGE_GOBJECT
+    [Conditional=MEDIA_SOURCE] VideoPlaybackQuality getVideoPlaybackQuality();
+#endif
</ins><span class="cx"> };
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorehtmlHTMLPlugInImageElementcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/html/HTMLPlugInImageElement.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/html/HTMLPlugInImageElement.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/html/HTMLPlugInImageElement.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -367,7 +367,7 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     Page* page = document().page();
</span><del>-    if (page)
</del><ins>+    if (!page)
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     // Reset any author styles that may apply as we only want explicit
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorehtmlHTMLTextAreaElementcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/html/HTMLTextAreaElement.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/html/HTMLTextAreaElement.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/html/HTMLTextAreaElement.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -45,6 +45,7 @@
</span><span class="cx"> #include &quot;RenderTextControlMultiLine.h&quot;
</span><span class="cx"> #include &quot;ShadowRoot.h&quot;
</span><span class="cx"> #include &quot;Text.h&quot;
</span><ins>+#include &quot;TextBreakIterator.h&quot;
</ins><span class="cx"> #include &quot;TextControlInnerElements.h&quot;
</span><span class="cx"> #include &quot;TextIterator.h&quot;
</span><span class="cx"> #include &quot;TextNodeTraversal.h&quot;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorehtmlImageInputTypecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/html/ImageInputType.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/html/ImageInputType.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/html/ImageInputType.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -85,11 +85,17 @@
</span><span class="cx">     if (element-&gt;isDisabledFormControl() || !element-&gt;form())
</span><span class="cx">         return;
</span><span class="cx">     element-&gt;setActivatedSubmit(true);
</span><del>-    if (event-&gt;underlyingEvent() &amp;&amp; event-&gt;underlyingEvent()-&gt;isMouseEvent()) {
-        MouseEvent* mouseEvent = static_cast&lt;MouseEvent*&gt;(event-&gt;underlyingEvent());
-        m_clickLocation = IntPoint(mouseEvent-&gt;offsetX(), mouseEvent-&gt;offsetY());
-    } else
-        m_clickLocation = IntPoint();
</del><ins>+
+    m_clickLocation = IntPoint();
+    if (event-&gt;underlyingEvent()) {
+        Event&amp; underlyingEvent = *event-&gt;underlyingEvent();
+        if (underlyingEvent.isMouseEvent()) {
+            MouseEvent&amp; mouseEvent = toMouseEvent(underlyingEvent);
+            if (!mouseEvent.isSimulated())
+                m_clickLocation = IntPoint(mouseEvent.offsetX(), mouseEvent.offsetY());
+        }
+    }
+
</ins><span class="cx">     element-&gt;form()-&gt;prepareForSubmission(event); // Event handlers can run.
</span><span class="cx">     element-&gt;setActivatedSubmit(false);
</span><span class="cx">     event-&gt;setDefaultHandled();
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorehtmlTextFieldInputTypecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/html/TextFieldInputType.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/html/TextFieldInputType.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/html/TextFieldInputType.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -47,6 +47,7 @@
</span><span class="cx"> #include &quot;RenderTextControlSingleLine.h&quot;
</span><span class="cx"> #include &quot;RenderTheme.h&quot;
</span><span class="cx"> #include &quot;ShadowRoot.h&quot;
</span><ins>+#include &quot;TextBreakIterator.h&quot;
</ins><span class="cx"> #include &quot;TextControlInnerElements.h&quot;
</span><span class="cx"> #include &quot;TextEvent.h&quot;
</span><span class="cx"> #include &quot;TextIterator.h&quot;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorehtmlTextInputTypecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/html/TextInputType.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/html/TextInputType.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/html/TextInputType.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -33,6 +33,7 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;HTMLInputElement.h&quot;
</span><span class="cx"> #include &quot;InputTypeNames.h&quot;
</span><ins>+#include &quot;TextBreakIterator.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorehtmlparserHTMLDocumentParsercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/html/parser/HTMLDocumentParser.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/html/parser/HTMLDocumentParser.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/html/parser/HTMLDocumentParser.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -314,13 +314,13 @@
</span><span class="cx">     // but we need to ensure it isn't deleted yet.
</span><span class="cx">     Ref&lt;HTMLDocumentParser&gt; protect(*this);
</span><span class="cx"> 
</span><del>-    InspectorInstrumentationCookie cookie = InspectorInstrumentation::willWriteHTML(document(), lineNumber().zeroBasedInt());
</del><ins>+    InspectorInstrumentationCookie cookie = InspectorInstrumentation::willWriteHTML(document(), textPosition().m_line.zeroBasedInt());
</ins><span class="cx"> 
</span><span class="cx">     ASSERT(m_speculations.isEmpty());
</span><span class="cx">     chunk-&gt;preloads.clear(); // We don't need to preload because we're going to parse immediately.
</span><span class="cx">     processParsedChunkFromBackgroundParser(chunk);
</span><span class="cx"> 
</span><del>-    InspectorInstrumentation::didWriteHTML(cookie, lineNumber().zeroBasedInt());
</del><ins>+    InspectorInstrumentation::didWriteHTML(cookie, textPosition().m_line.zeroBasedInt());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLDocumentParser::validateSpeculations(OwnPtr&lt;ParsedChunk&gt; chunk)
</span><span class="lines">@@ -458,7 +458,7 @@
</span><span class="cx">     ASSERT(!m_lastChunkBeforeScript);
</span><span class="cx"> 
</span><span class="cx">     // FIXME: Pass in current input length.
</span><del>-    InspectorInstrumentationCookie cookie = InspectorInstrumentation::willWriteHTML(document(), lineNumber().zeroBasedInt());
</del><ins>+    InspectorInstrumentationCookie cookie = InspectorInstrumentation::willWriteHTML(document(), textPosition().m_line.zeroBasedInt());
</ins><span class="cx"> 
</span><span class="cx">     double startTime = monotonicallyIncreasingTime();
</span><span class="cx"> 
</span><span class="lines">@@ -474,7 +474,7 @@
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    InspectorInstrumentation::didWriteHTML(cookie, lineNumber().zeroBasedInt());
</del><ins>+    InspectorInstrumentation::didWriteHTML(cookie, textPosition().m_line.zeroBasedInt());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(THREADED_HTML_PARSER)
</span><span class="lines">@@ -828,16 +828,6 @@
</span><span class="cx">     return m_scriptRunner-&gt;isExecutingScript();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-OrdinalNumber HTMLDocumentParser::lineNumber() const
-{
-#if ENABLE(THREADED_HTML_PARSER)
-    if (m_haveBackgroundParser)
-        return m_textPosition.m_line;
-#endif
-
-    return m_input.current().currentLine();
-}
-
</del><span class="cx"> TextPosition HTMLDocumentParser::textPosition() const
</span><span class="cx"> {
</span><span class="cx"> #if ENABLE(THREADED_HTML_PARSER)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorehtmlparserHTMLDocumentParserh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/html/parser/HTMLDocumentParser.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/html/parser/HTMLDocumentParser.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/html/parser/HTMLDocumentParser.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -80,7 +80,6 @@
</span><span class="cx">     HTMLTokenizer* tokenizer() const { return m_tokenizer.get(); }
</span><span class="cx"> 
</span><span class="cx">     virtual TextPosition textPosition() const;
</span><del>-    virtual OrdinalNumber lineNumber() const;
</del><span class="cx"> 
</span><span class="cx">     virtual void suspendScheduledTasks();
</span><span class="cx">     virtual void resumeScheduledTasks();
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorehtmlparserXSSAuditorcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/html/parser/XSSAuditor.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/html/parser/XSSAuditor.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/html/parser/XSSAuditor.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -37,17 +37,15 @@
</span><span class="cx"> #include &quot;HTMLNames.h&quot;
</span><span class="cx"> #include &quot;HTMLParamElement.h&quot;
</span><span class="cx"> #include &quot;HTMLParserIdioms.h&quot;
</span><del>-#include &quot;InspectorValues.h&quot;
</del><span class="cx"> #include &quot;Settings.h&quot;
</span><span class="cx"> #include &quot;TextResourceDecoder.h&quot;
</span><span class="cx"> #include &quot;XLinkNames.h&quot;
</span><ins>+#include &lt;wtf/MainThread.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(SVG)
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-#include &lt;wtf/MainThread.h&gt;
-
</del><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> using namespace HTMLNames;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorehtmlparserXSSAuditorDelegatecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/html/parser/XSSAuditorDelegate.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/html/parser/XSSAuditorDelegate.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/html/parser/XSSAuditorDelegate.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -35,12 +35,14 @@
</span><span class="cx"> #include &quot;FrameLoader.h&quot;
</span><span class="cx"> #include &quot;FrameLoaderClient.h&quot;
</span><span class="cx"> #include &quot;HTMLParserIdioms.h&quot;
</span><del>-#include &quot;InspectorValues.h&quot;
</del><span class="cx"> #include &quot;PingLoader.h&quot;
</span><span class="cx"> #include &quot;SecurityOrigin.h&quot;
</span><ins>+#include &lt;inspector/InspectorValues.h&gt;
</ins><span class="cx"> #include &lt;wtf/text/StringBuilder.h&gt;
</span><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> XSSAuditorDelegate::XSSAuditorDelegate(Document&amp; document)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorCodeGeneratorInspectorpy"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/CodeGeneratorInspector.py (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/CodeGeneratorInspector.py        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/CodeGeneratorInspector.py        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -72,7 +72,7 @@
</span><span class="cx"> 
</span><span class="cx"> EXACTLY_INT_SUPPORTED = False
</span><span class="cx"> 
</span><del>-cmdline_parser = optparse.OptionParser()
</del><ins>+cmdline_parser = optparse.OptionParser(usage=&quot;usage: %prog [options] &lt;Inspector.json&gt;&quot;)
</ins><span class="cx"> cmdline_parser.add_option(&quot;--output_h_dir&quot;)
</span><span class="cx"> cmdline_parser.add_option(&quot;--output_cpp_dir&quot;)
</span><span class="cx"> cmdline_parser.add_option(&quot;--output_js_dir&quot;)
</span><span class="lines">@@ -262,7 +262,7 @@
</span><span class="cx"> 
</span><span class="cx">         @classmethod
</span><span class="cx">         def get_raw_validator_call_text(cls):
</span><del>-            return &quot;RuntimeCastHelper::assertType&lt;InspectorValue::Type%s&gt;&quot; % cls.get_validate_method_params().template_type
</del><ins>+            return &quot;RuntimeCastHelper::assertType&lt;Inspector::InspectorValue::Type%s&gt;&quot; % cls.get_validate_method_params().template_type
</ins><span class="cx"> 
</span><span class="cx">     class String(BaseType):
</span><span class="cx">         @staticmethod
</span><span class="lines">@@ -451,7 +451,7 @@
</span><span class="cx"> 
</span><span class="cx">         @staticmethod
</span><span class="cx">         def get_array_item_raw_c_type_text():
</span><del>-            return &quot;InspectorObject&quot;
</del><ins>+            return &quot;Inspector::InspectorObject&quot;
</ins><span class="cx"> 
</span><span class="cx">         @staticmethod
</span><span class="cx">         def get_raw_type_model():
</span><span class="lines">@@ -486,7 +486,7 @@
</span><span class="cx"> 
</span><span class="cx">         @staticmethod
</span><span class="cx">         def get_array_item_raw_c_type_text():
</span><del>-            return &quot;InspectorValue&quot;
</del><ins>+            return &quot;Inspector::InspectorValue&quot;
</ins><span class="cx"> 
</span><span class="cx">         @staticmethod
</span><span class="cx">         def get_raw_type_model():
</span><span class="lines">@@ -529,7 +529,7 @@
</span><span class="cx"> 
</span><span class="cx">         @staticmethod
</span><span class="cx">         def get_array_item_raw_c_type_text():
</span><del>-            return &quot;InspectorArray&quot;
</del><ins>+            return &quot;Inspector::InspectorArray&quot;
</ins><span class="cx"> 
</span><span class="cx">         @staticmethod
</span><span class="cx">         def get_raw_type_model():
</span><span class="lines">@@ -590,7 +590,7 @@
</span><span class="cx">             self.var_type = var_type
</span><span class="cx"> 
</span><span class="cx">         def get_return_var_type(self):
</span><del>-            return &quot;TypeBuilder::OptOutput&lt;%s&gt;&quot; % self.var_type
</del><ins>+            return &quot;Inspector::TypeBuilder::OptOutput&lt;%s&gt;&quot; % self.var_type
</ins><span class="cx"> 
</span><span class="cx">         @staticmethod
</span><span class="cx">         def get_output_argument_prefix():
</span><span class="lines">@@ -601,7 +601,7 @@
</span><span class="cx">             return &quot;%s.getValue()&quot;
</span><span class="cx"> 
</span><span class="cx">         def get_output_parameter_type(self):
</span><del>-            return &quot;TypeBuilder::OptOutput&lt;%s&gt;*&quot; % self.var_type
</del><ins>+            return &quot;Inspector::TypeBuilder::OptOutput&lt;%s&gt;*&quot; % self.var_type
</ins><span class="cx"> 
</span><span class="cx">         @staticmethod
</span><span class="cx">         def get_set_return_condition():
</span><span class="lines">@@ -712,10 +712,10 @@
</span><span class="cx">             TypeModel.ValueType.__init__(self, &quot;int&quot;, False)
</span><span class="cx"> 
</span><span class="cx">         def get_input_param_type_text(self):
</span><del>-            return &quot;TypeBuilder::ExactlyInt&quot;
</del><ins>+            return &quot;Inspector::TypeBuilder::ExactlyInt&quot;
</ins><span class="cx"> 
</span><span class="cx">         def get_opt_output_type_(self):
</span><del>-            return &quot;TypeBuilder::ExactlyInt&quot;
</del><ins>+            return &quot;Inspector::TypeBuilder::ExactlyInt&quot;
</ins><span class="cx"> 
</span><span class="cx">     @classmethod
</span><span class="cx">     def init_class(cls):
</span><span class="lines">@@ -726,9 +726,9 @@
</span><span class="cx">             cls.Int = cls.ValueType(&quot;int&quot;, False)
</span><span class="cx">         cls.Number = cls.ValueType(&quot;double&quot;, False)
</span><span class="cx">         cls.String = cls.ValueType(&quot;String&quot;, True,)
</span><del>-        cls.Object = cls.RefPtrBased(&quot;InspectorObject&quot;)
-        cls.Array = cls.RefPtrBased(&quot;InspectorArray&quot;)
-        cls.Any = cls.RefPtrBased(&quot;InspectorValue&quot;)
</del><ins>+        cls.Object = cls.RefPtrBased(&quot;Inspector::InspectorObject&quot;)
+        cls.Array = cls.RefPtrBased(&quot;Inspector::InspectorArray&quot;)
+        cls.Any = cls.RefPtrBased(&quot;Inspector::InspectorValue&quot;)
</ins><span class="cx"> 
</span><span class="cx"> TypeModel.init_class()
</span><span class="cx"> 
</span><span class="lines">@@ -837,8 +837,8 @@
</span><span class="cx"> 
</span><span class="cx">         class Helper:
</span><span class="cx">             is_ad_hoc = False
</span><del>-            full_name_prefix_for_use = &quot;TypeBuilder::&quot; + context_domain_name + &quot;::&quot;
-            full_name_prefix_for_impl = &quot;TypeBuilder::&quot; + context_domain_name + &quot;::&quot;
</del><ins>+            full_name_prefix_for_use = &quot;Inspector::TypeBuilder::&quot; + context_domain_name + &quot;::&quot;
+            full_name_prefix_for_impl = &quot;Inspector::TypeBuilder::&quot; + context_domain_name + &quot;::&quot;
</ins><span class="cx"> 
</span><span class="cx">             @staticmethod
</span><span class="cx">             def write_doc(writer):
</span><span class="lines">@@ -928,7 +928,7 @@
</span><span class="cx"> 
</span><span class="cx">                                 if enum_binding_cls.need_internal_runtime_cast_:
</span><span class="cx">                                     writer.append(&quot;#if %s\n&quot; % VALIDATOR_IFDEF_NAME)
</span><del>-                                    writer.newline(&quot;    static void assertCorrectValue(InspectorValue* value);\n&quot;)
</del><ins>+                                    writer.newline(&quot;    static void assertCorrectValue(Inspector::InspectorValue* value);\n&quot;)
</ins><span class="cx">                                     writer.append(&quot;#endif  // %s\n&quot; % VALIDATOR_IFDEF_NAME)
</span><span class="cx"> 
</span><span class="cx">                                     validator_writer = generate_context.validator_writer
</span><span class="lines">@@ -938,7 +938,7 @@
</span><span class="cx">                                     if domain_guard:
</span><span class="cx">                                         domain_guard.generate_open(validator_writer)
</span><span class="cx"> 
</span><del>-                                    validator_writer.newline(&quot;void %s%s::assertCorrectValue(InspectorValue* value)\n&quot; % (helper.full_name_prefix_for_impl, enum_name))
</del><ins>+                                    validator_writer.newline(&quot;void %s%s::assertCorrectValue(Inspector::InspectorValue* value)\n&quot; % (helper.full_name_prefix_for_impl, enum_name))
</ins><span class="cx">                                     validator_writer.newline(&quot;{\n&quot;)
</span><span class="cx">                                     validator_writer.newline(&quot;    WTF::String s;\n&quot;)
</span><span class="cx">                                     validator_writer.newline(&quot;    bool cast_res = value-&gt;asString(&amp;s);\n&quot;)
</span><span class="lines">@@ -980,7 +980,7 @@
</span><span class="cx"> 
</span><span class="cx">                     @staticmethod
</span><span class="cx">                     def get_setter_value_expression_pattern():
</span><del>-                        return &quot;TypeBuilder::getEnumConstantValue(%s)&quot;
</del><ins>+                        return &quot;Inspector::TypeBuilder::getEnumConstantValue(%s)&quot;
</ins><span class="cx"> 
</span><span class="cx">                     @staticmethod
</span><span class="cx">                     def reduce_to_raw_type():
</span><span class="lines">@@ -1172,9 +1172,9 @@
</span><span class="cx">                                 writer.append(class_name)
</span><span class="cx">                                 writer.append(&quot; : public &quot;)
</span><span class="cx">                                 if is_open_type:
</span><del>-                                    writer.append(&quot;InspectorObject&quot;)
</del><ins>+                                    writer.append(&quot;Inspector::InspectorObject&quot;)
</ins><span class="cx">                                 else:
</span><del>-                                    writer.append(&quot;InspectorObjectBase&quot;)
</del><ins>+                                    writer.append(&quot;Inspector::InspectorObjectBase&quot;)
</ins><span class="cx">                                 writer.append(&quot; {\n&quot;)
</span><span class="cx">                                 writer.newline(&quot;public:\n&quot;)
</span><span class="cx">                                 ad_hoc_type_writer = writer.insert_writer(&quot;    &quot;)
</span><span class="lines">@@ -1234,7 +1234,7 @@
</span><span class="cx"> 
</span><span class="cx">                                 writer.newline_multiline(CodeGeneratorInspectorStrings.class_binding_builder_part_4)
</span><span class="cx"> 
</span><del>-                                writer.newline(&quot;    typedef TypeBuilder::StructItemTraits ItemTraits;\n&quot;)
</del><ins>+                                writer.newline(&quot;    typedef Inspector::TypeBuilder::StructItemTraits ItemTraits;\n&quot;)
</ins><span class="cx"> 
</span><span class="cx">                                 for prop_data in resolve_data.optional_properties:
</span><span class="cx">                                     prop_name = prop_data.p[&quot;name&quot;]
</span><span class="lines">@@ -1251,25 +1251,25 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx">                                     if setter_name in INSPECTOR_OBJECT_SETTER_NAMES:
</span><del>-                                        writer.newline(&quot;    using InspectorObjectBase::%s;\n\n&quot; % setter_name)
</del><ins>+                                        writer.newline(&quot;    using Inspector::InspectorObjectBase::%s;\n\n&quot; % setter_name)
</ins><span class="cx"> 
</span><span class="cx">                                 if class_binding_cls.need_user_runtime_cast_:
</span><del>-                                    writer.newline(&quot;    static PassRefPtr&lt;%s&gt; runtimeCast(PassRefPtr&lt;InspectorValue&gt; value)\n&quot; % class_name)
</del><ins>+                                    writer.newline(&quot;    static PassRefPtr&lt;%s&gt; runtimeCast(PassRefPtr&lt;Inspector::InspectorValue&gt; value)\n&quot; % class_name)
</ins><span class="cx">                                     writer.newline(&quot;    {\n&quot;)
</span><del>-                                    writer.newline(&quot;        RefPtr&lt;InspectorObject&gt; object;\n&quot;)
</del><ins>+                                    writer.newline(&quot;        RefPtr&lt;Inspector::InspectorObject&gt; object;\n&quot;)
</ins><span class="cx">                                     writer.newline(&quot;        bool castRes = value-&gt;asObject(&amp;object);\n&quot;)
</span><span class="cx">                                     writer.newline(&quot;        ASSERT_UNUSED(castRes, castRes);\n&quot;)
</span><span class="cx">                                     writer.append(&quot;#if %s\n&quot; % VALIDATOR_IFDEF_NAME)
</span><span class="cx">                                     writer.newline(&quot;        assertCorrectValue(object.get());\n&quot;)
</span><span class="cx">                                     writer.append(&quot;#endif  // %s\n&quot; % VALIDATOR_IFDEF_NAME)
</span><del>-                                    writer.newline(&quot;        COMPILE_ASSERT(sizeof(%s) == sizeof(InspectorObjectBase), type_cast_problem);\n&quot; % class_name)
-                                    writer.newline(&quot;        return static_cast&lt;%s*&gt;(static_cast&lt;InspectorObjectBase*&gt;(object.get()));\n&quot; % class_name)
</del><ins>+                                    writer.newline(&quot;        COMPILE_ASSERT(sizeof(%s) == sizeof(Inspector::InspectorObjectBase), type_cast_problem);\n&quot; % class_name)
+                                    writer.newline(&quot;        return static_cast&lt;%s*&gt;(static_cast&lt;Inspector::InspectorObjectBase*&gt;(object.get()));\n&quot; % class_name)
</ins><span class="cx">                                     writer.newline(&quot;    }\n&quot;)
</span><span class="cx">                                     writer.append(&quot;\n&quot;)
</span><span class="cx"> 
</span><span class="cx">                                 if class_binding_cls.need_internal_runtime_cast_:
</span><span class="cx">                                     writer.append(&quot;#if %s\n&quot; % VALIDATOR_IFDEF_NAME)
</span><del>-                                    writer.newline(&quot;    static void assertCorrectValue(InspectorValue* value);\n&quot;)
</del><ins>+                                    writer.newline(&quot;    static void assertCorrectValue(Inspector::InspectorValue* value);\n&quot;)
</ins><span class="cx">                                     writer.append(&quot;#endif  // %s\n&quot; % VALIDATOR_IFDEF_NAME)
</span><span class="cx"> 
</span><span class="cx">                                     closed_field_set = (context_domain_name + &quot;.&quot; + class_name) not in TYPES_WITH_OPEN_FIELD_LIST_SET
</span><span class="lines">@@ -1281,7 +1281,7 @@
</span><span class="cx">                                     if domain_guard:
</span><span class="cx">                                         domain_guard.generate_open(validator_writer)
</span><span class="cx"> 
</span><del>-                                    validator_writer.newline(&quot;void %s%s::assertCorrectValue(InspectorValue* value)\n&quot; % (helper.full_name_prefix_for_impl, class_name))
</del><ins>+                                    validator_writer.newline(&quot;void %s%s::assertCorrectValue(Inspector::InspectorValue* value)\n&quot; % (helper.full_name_prefix_for_impl, class_name))
</ins><span class="cx">                                     validator_writer.newline(&quot;{\n&quot;)
</span><span class="cx">                                     validator_writer.newline(&quot;    RefPtr&lt;InspectorObject&gt; object;\n&quot;)
</span><span class="cx">                                     validator_writer.newline(&quot;    bool castRes = value-&gt;asObject(&amp;object);\n&quot;)
</span><span class="lines">@@ -1519,7 +1519,7 @@
</span><span class="cx"> 
</span><span class="cx">                     @classmethod
</span><span class="cx">                     def get_array_item_c_type_text(cls):
</span><del>-                        return replace_right_shift(&quot;TypeBuilder::Array&lt;%s&gt;&quot; % cls.resolve_data_.item_type_binding.get_array_item_c_type_text())
</del><ins>+                        return replace_right_shift(&quot;Inspector::TypeBuilder::Array&lt;%s&gt;&quot; % cls.resolve_data_.item_type_binding.get_array_item_c_type_text())
</ins><span class="cx"> 
</span><span class="cx">                     @staticmethod
</span><span class="cx">                     def get_setter_value_expression_pattern():
</span><span class="lines">@@ -1703,7 +1703,11 @@
</span><span class="cx"> json_string = input_file.read()
</span><span class="cx"> json_api = json.loads(json_string)
</span><span class="cx"> 
</span><ins>+# Allow this script to work when the input is a single domain.
+if not &quot;domains&quot; in json_api:
+    json_api = {&quot;domains&quot;: [json_api]}
</ins><span class="cx"> 
</span><ins>+
</ins><span class="cx"> class Templates:
</span><span class="cx">     def get_this_script_path_(absolute_path):
</span><span class="cx">         absolute_path = os.path.abspath(absolute_path)
</span><span class="lines">@@ -1896,10 +1900,10 @@
</span><span class="cx">             dispatcher_name = &quot;Inspector&quot; + Capitalizer.lower_camel_case_to_upper(domain_name) + &quot;BackendDispatcher&quot;
</span><span class="cx">             agent_interface_name = dispatcher_name + &quot;Handler&quot;
</span><span class="cx"> 
</span><del>-            Generator.backend_dispatcher_interface_list.append(&quot;class %s FINAL : public InspectorSupplementalBackendDispatcher {\n&quot; % dispatcher_name)
</del><ins>+            Generator.backend_dispatcher_interface_list.append(&quot;class %s FINAL : public Inspector::InspectorSupplementalBackendDispatcher {\n&quot; % dispatcher_name)
</ins><span class="cx">             Generator.backend_dispatcher_interface_list.append(&quot;public:\n&quot;)
</span><del>-            Generator.backend_dispatcher_interface_list.append(&quot;    static PassRefPtr&lt;%s&gt; create(InspectorBackendDispatcher*, %s*);\n&quot; % (dispatcher_name, agent_interface_name))
-            Generator.backend_dispatcher_interface_list.append(&quot;    virtual void dispatch(long callId, const String&amp; method, PassRefPtr&lt;InspectorObject&gt; message) OVERRIDE;\n&quot;)
</del><ins>+            Generator.backend_dispatcher_interface_list.append(&quot;    static PassRefPtr&lt;%s&gt; create(Inspector::InspectorBackendDispatcher*, %s*);\n&quot; % (dispatcher_name, agent_interface_name))
+            Generator.backend_dispatcher_interface_list.append(&quot;    virtual void dispatch(long callId, const String&amp; method, PassRefPtr&lt;Inspector::InspectorObject&gt; message) OVERRIDE;\n&quot;)
</ins><span class="cx">             Generator.backend_dispatcher_interface_list.append(&quot;private:\n&quot;)
</span><span class="cx"> 
</span><span class="cx">             Generator.backend_handler_interface_list.append(&quot;class %s {\n&quot; % agent_interface_name)
</span><span class="lines">@@ -1918,7 +1922,7 @@
</span><span class="cx">             Generator.backend_handler_interface_list.append(&quot;};\n\n&quot;)
</span><span class="cx"> 
</span><span class="cx">             Generator.backend_dispatcher_interface_list.append(&quot;private:\n&quot;)
</span><del>-            Generator.backend_dispatcher_interface_list.append(&quot;    %s(InspectorBackendDispatcher*, %s*);\n&quot; % (dispatcher_name, agent_interface_name))
</del><ins>+            Generator.backend_dispatcher_interface_list.append(&quot;    %s(Inspector::InspectorBackendDispatcher*, %s*);\n&quot; % (dispatcher_name, agent_interface_name))
</ins><span class="cx">             Generator.backend_dispatcher_interface_list.append(&quot;    %s* m_agent;\n&quot; % agent_interface_name)
</span><span class="cx">             Generator.backend_dispatcher_interface_list.append(&quot;};\n\n&quot;)
</span><span class="cx"> 
</span><span class="lines">@@ -1987,7 +1991,7 @@
</span><span class="cx"> 
</span><span class="cx">         @staticmethod
</span><span class="cx">         def append_epilog(line_list):
</span><del>-            line_list.append(&quot;    jsonMessage-&gt;setObject(\&quot;params\&quot;, paramsObject);\n&quot;)
</del><ins>+            line_list.append(&quot;    jsonMessage-&gt;setObject(ASCIILiteral(\&quot;params\&quot;), paramsObject);\n&quot;)
</ins><span class="cx"> 
</span><span class="cx">         container_name = &quot;paramsObject&quot;
</span><span class="cx"> 
</span><span class="lines">@@ -1999,7 +2003,7 @@
</span><span class="cx">         Generator.backend_handler_interface_list.append(ad_hoc_type_output)
</span><span class="cx">         ad_hoc_type_writer = Writer(ad_hoc_type_output, &quot;    &quot;)
</span><span class="cx"> 
</span><del>-        Generator.backend_dispatcher_interface_list.append(&quot;    void %s(long callId, const InspectorObject&amp; message);\n&quot; % json_command_name)
</del><ins>+        Generator.backend_dispatcher_interface_list.append(&quot;    void %s(long callId, const Inspector::InspectorObject&amp; message);\n&quot; % json_command_name)
</ins><span class="cx"> 
</span><span class="cx">         Generator.backend_handler_interface_list.append(&quot;    virtual void %s(ErrorString*&quot; % json_command_name)
</span><span class="cx"> 
</span><span class="lines">@@ -2094,9 +2098,9 @@
</span><span class="cx">                                            Generator.backend_method_implementation_list, Templates.callback_method,
</span><span class="cx">                                            {&quot;callbackName&quot;: callback_name, &quot;handlerName&quot;: agent_interface_name})
</span><span class="cx"> 
</span><del>-            callback_writer.newline(&quot;class &quot; + callback_name + &quot; : public InspectorBackendDispatcher::CallbackBase {\n&quot;)
</del><ins>+            callback_writer.newline(&quot;class &quot; + callback_name + &quot; : public Inspector::InspectorBackendDispatcher::CallbackBase {\n&quot;)
</ins><span class="cx">             callback_writer.newline(&quot;public:\n&quot;)
</span><del>-            callback_writer.newline(&quot;    &quot; + callback_name + &quot;(PassRefPtr&lt;InspectorBackendDispatcher&gt;, int id);\n&quot;)
</del><ins>+            callback_writer.newline(&quot;    &quot; + callback_name + &quot;(PassRefPtr&lt;Inspector::InspectorBackendDispatcher&gt;, int id);\n&quot;)
</ins><span class="cx">             callback_writer.newline(&quot;    void sendSuccess(&quot; + &quot;, &quot;.join(decl_parameter_list) + &quot;);\n&quot;)
</span><span class="cx">             callback_writer.newline(&quot;};\n&quot;)
</span><span class="cx"> 
</span><span class="lines">@@ -2105,7 +2109,7 @@
</span><span class="cx">             method_dispatch_handling.append(&quot;    RefPtr&lt;%s::%s&gt; callback = adoptRef(new %s::%s(m_backendDispatcher,callId));\n&quot; % (agent_interface_name, callback_name, agent_interface_name, callback_name))
</span><span class="cx">             method_ending_handling.append(&quot;    if (error.length()) {\n&quot;)
</span><span class="cx">             method_ending_handling.append(&quot;        callback-&gt;disable();\n&quot;)
</span><del>-            method_ending_handling.append(&quot;        m_backendDispatcher-&gt;reportProtocolError(&amp;callId, InspectorBackendDispatcher::ServerError, error);\n&quot;)
</del><ins>+            method_ending_handling.append(&quot;        m_backendDispatcher-&gt;reportProtocolError(&amp;callId, Inspector::InspectorBackendDispatcher::ServerError, error);\n&quot;)
</ins><span class="cx">             method_ending_handling.append(&quot;        return;\n&quot;)
</span><span class="cx">             method_ending_handling.append(&quot;    }&quot;)
</span><span class="cx"> 
</span><span class="lines">@@ -2409,8 +2413,8 @@
</span><span class="cx"> frontend_h_file = SmartOutput(output_header_dirname + &quot;/InspectorFrontend.h&quot;)
</span><span class="cx"> frontend_cpp_file = SmartOutput(output_cpp_dirname + &quot;/InspectorFrontend.cpp&quot;)
</span><span class="cx"> 
</span><del>-typebuilder_h_file = SmartOutput(output_header_dirname + &quot;/InspectorTypeBuilder.h&quot;)
-typebuilder_cpp_file = SmartOutput(output_cpp_dirname + &quot;/InspectorTypeBuilder.cpp&quot;)
</del><ins>+typebuilder_h_file = SmartOutput(output_header_dirname + &quot;/InspectorWebTypeBuilders.h&quot;)
+typebuilder_cpp_file = SmartOutput(output_cpp_dirname + &quot;/InspectorWebTypeBuilders.cpp&quot;)
</ins><span class="cx"> 
</span><span class="cx"> backend_js_file = SmartOutput(output_js_dirname + &quot;/InspectorBackendCommands.js&quot;)
</span><span class="cx"> 
</span><span class="lines">@@ -2452,14 +2456,3 @@
</span><span class="cx"> typebuilder_cpp_file.close()
</span><span class="cx"> 
</span><span class="cx"> backend_js_file.close()
</span><del>-
-# FIXME: This exists to remove some old generated files that can cause build issues if
-# a compiler includes the old files instead of the new files with the same name. This
-# can be removed after a week or so once bots and developers have built with this.
-# Otherwise, developers can always just do a clean build or remove their DerivedSources.
-old_backend_h_file = os.path.join(output_header_dirname, &quot;InspectorBackendDispatcher.h&quot;)
-old_backend_cpp_file = os.path.join(output_header_dirname, &quot;InspectorBackendDispatcher.cpp&quot;)
-if os.path.exists(old_backend_h_file):
-    os.remove(old_backend_h_file)
-if os.path.exists(old_backend_cpp_file):
-    os.remove(old_backend_cpp_file)
</del></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorCodeGeneratorInspectorStringspy"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/CodeGeneratorInspectorStrings.py (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/CodeGeneratorInspectorStrings.py        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/CodeGeneratorInspectorStrings.py        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -70,7 +70,7 @@
</span><span class="cx"> {
</span><span class="cx">     Ref&lt;${dispatcherName}&gt; protect(*this);
</span><span class="cx"> 
</span><del>-    typedef void (${dispatcherName}::*CallHandler)(long callId, const InspectorObject&amp; message);
</del><ins>+    typedef void (${dispatcherName}::*CallHandler)(long callId, const Inspector::InspectorObject&amp; message);
</ins><span class="cx">     typedef HashMap&lt;String, CallHandler&gt; DispatchMap;
</span><span class="cx">     DEFINE_STATIC_LOCAL(DispatchMap, dispatchMap, ());
</span><span class="cx">     if (dispatchMap.isEmpty()) {
</span><span class="lines">@@ -102,17 +102,17 @@
</span><span class="cx"> }
</span><span class="cx"> &quot;&quot;&quot;)
</span><span class="cx"> 
</span><del>-frontend_method = (&quot;&quot;&quot;void Inspector${domainName}FrontendDispatcher::$eventName($parameters)
</del><ins>+frontend_method = (&quot;&quot;&quot;void Inspector${domainName}FrontendDispatcher::$eventName(${parameters})
</ins><span class="cx"> {
</span><span class="cx">     RefPtr&lt;InspectorObject&gt; jsonMessage = InspectorObject::create();
</span><del>-    jsonMessage-&gt;setString(&quot;method&quot;, &quot;$domainName.$eventName&quot;);
</del><ins>+    jsonMessage-&gt;setString(ASCIILiteral(&quot;method&quot;), ASCIILiteral(&quot;${domainName}.${eventName}&quot;));
</ins><span class="cx"> $code
</span><span class="cx">     m_inspectorFrontendChannel-&gt;sendMessageToFrontend(jsonMessage-&gt;toJSONString());
</span><span class="cx"> }
</span><span class="cx"> &quot;&quot;&quot;)
</span><span class="cx"> 
</span><span class="cx"> callback_method = (
</span><del>-&quot;&quot;&quot;${handlerName}::${callbackName}::${callbackName}(PassRefPtr&lt;InspectorBackendDispatcher&gt; backendDispatcher, int id) : InspectorBackendDispatcher::CallbackBase(backendDispatcher, id) { }
</del><ins>+&quot;&quot;&quot;${handlerName}::${callbackName}::${callbackName}(PassRefPtr&lt;InspectorBackendDispatcher&gt; backendDispatcher, int id) : Inspector::InspectorBackendDispatcher::CallbackBase(backendDispatcher, id) { }
</ins><span class="cx"> 
</span><span class="cx"> void ${handlerName}::${callbackName}::sendSuccess(${parameters})
</span><span class="cx"> {
</span><span class="lines">@@ -125,15 +125,14 @@
</span><span class="cx"> &quot;&quot;&quot;#ifndef InspectorFrontend_h
</span><span class="cx"> #define InspectorFrontend_h
</span><span class="cx"> 
</span><del>-#include &quot;InspectorTypeBuilder.h&quot;
-#include &quot;InspectorValues.h&quot;
</del><ins>+#include &quot;InspectorWebTypeBuilders.h&quot;
+#include &quot;InspectorForwarding.h&quot;
+#include &lt;inspector/InspectorValues.h&gt;
</ins><span class="cx"> #include &lt;wtf/PassRefPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-class InspectorFrontendChannel;
-
</del><span class="cx"> #if ENABLE(INSPECTOR)
</span><span class="cx"> 
</span><span class="cx"> $domainClassList
</span><span class="lines">@@ -149,16 +148,13 @@
</span><span class="cx"> &quot;&quot;&quot;#ifndef InspectorBackendDispatchers_h
</span><span class="cx"> #define InspectorBackendDispatchers_h
</span><span class="cx"> 
</span><del>-#include &quot;InspectorBackendDispatcher.h&quot;
-#include &quot;InspectorTypeBuilder.h&quot;
</del><ins>+#include &quot;InspectorWebTypeBuilders.h&quot;
+#include &lt;inspector/InspectorBackendDispatcher.h&gt;
</ins><span class="cx"> #include &lt;wtf/PassRefPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-class InspectorObject;
-class InspectorArray;
-
</del><span class="cx"> typedef String ErrorString;
</span><span class="cx"> 
</span><span class="cx"> $handlerInterfaces
</span><span class="lines">@@ -178,11 +174,13 @@
</span><span class="cx"> #include &quot;InspectorBackendDispatchers.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;InspectorAgent.h&quot;
</span><del>-#include &quot;InspectorValues.h&quot;
</del><span class="cx"> #include &quot;InspectorForwarding.h&quot;
</span><ins>+#include &lt;inspector/InspectorValues.h&gt;
</ins><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> $methods
</span><span class="lines">@@ -200,10 +198,11 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;InspectorFrontend.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;InspectorForwarding.h&quot;
</del><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> $methods
</span><span class="lines">@@ -215,291 +214,20 @@
</span><span class="cx"> 
</span><span class="cx"> typebuilder_h = (
</span><span class="cx"> &quot;&quot;&quot;
</span><del>-#ifndef InspectorTypeBuilder_h
-#define InspectorTypeBuilder_h
</del><ins>+// FIXME: TYPE.
+#ifndef InspectorWebTypeBuilders_h
+#define InspectorWebTypeBuilders_h
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><span class="cx"> 
</span><del>-#include &quot;InspectorValues.h&quot;
</del><ins>+#include &lt;inspector/InspectorTypeBuilder.h&gt;
</ins><span class="cx"> #include &lt;wtf/Assertions.h&gt;
</span><span class="cx"> #include &lt;wtf/PassRefPtr.h&gt;
</span><span class="cx"> 
</span><del>-namespace WebCore {
</del><ins>+namespace Inspector {
</ins><span class="cx"> 
</span><span class="cx"> namespace TypeBuilder {
</span><span class="cx"> 
</span><del>-template&lt;typename T&gt;
-class OptOutput {
-public:
-    OptOutput() : m_assigned(false) { }
-
-    void operator=(T value)
-    {
-        m_value = value;
-        m_assigned = true;
-    }
-
-    bool isAssigned() { return m_assigned; }
-
-    T getValue()
-    {
-        ASSERT(isAssigned());
-        return m_value;
-    }
-
-private:
-    T m_value;
-    bool m_assigned;
-
-    WTF_MAKE_NONCOPYABLE(OptOutput);
-};
-
-
-// A small transient wrapper around int type, that can be used as a funciton parameter type
-// cleverly disallowing C++ implicit casts from float or double.
-class ExactlyInt {
-public:
-    template&lt;typename T&gt;
-    ExactlyInt(T t) : m_value(cast_to_int&lt;T&gt;(t)) {}
-
-    ExactlyInt() {}
-
-    operator int() { return m_value; }
-private:
-    int m_value;
-
-    template&lt;typename T&gt;
-    static int cast_to_int(T) { return T::default_case_cast_is_not_supported(); }
-};
-
-template&lt;&gt;
-inline int ExactlyInt::cast_to_int&lt;int&gt;(int i) { return i; }
-
-template&lt;&gt;
-inline int ExactlyInt::cast_to_int&lt;unsigned int&gt;(unsigned int i) { return i; }
-
-class RuntimeCastHelper {
-public:
-#if $validatorIfdefName
-    template&lt;InspectorValue::Type TYPE&gt;
-    static void assertType(InspectorValue* value)
-    {
-        ASSERT(value-&gt;type() == TYPE);
-    }
-    static void assertAny(InspectorValue*);
-    static void assertInt(InspectorValue* value);
-#endif
-};
-
-
-// This class provides &quot;Traits&quot; type for the input type T. It is programmed using C++ template specialization
-// technique. By default it simply takes &quot;ItemTraits&quot; type from T, but it doesn't work with the base types.
-template&lt;typename T&gt;
-struct ArrayItemHelper {
-    typedef typename T::ItemTraits Traits;
-};
-
-template&lt;typename T&gt;
-class Array : public InspectorArrayBase {
-private:
-    Array() { }
-
-    InspectorArray* openAccessors() {
-        COMPILE_ASSERT(sizeof(InspectorArray) == sizeof(Array&lt;T&gt;), cannot_cast);
-        return static_cast&lt;InspectorArray*&gt;(static_cast&lt;InspectorArrayBase*&gt;(this));
-    }
-
-public:
-    void addItem(PassRefPtr&lt;T&gt; value)
-    {
-        ArrayItemHelper&lt;T&gt;::Traits::pushRefPtr(this-&gt;openAccessors(), value);
-    }
-
-    void addItem(T value)
-    {
-        ArrayItemHelper&lt;T&gt;::Traits::pushRaw(this-&gt;openAccessors(), value);
-    }
-
-    static PassRefPtr&lt;Array&lt;T&gt;&gt; create()
-    {
-        return adoptRef(new Array&lt;T&gt;());
-    }
-
-    static PassRefPtr&lt;Array&lt;T&gt;&gt; runtimeCast(PassRefPtr&lt;InspectorValue&gt; value)
-    {
-        RefPtr&lt;InspectorArray&gt; array;
-        bool castRes = value-&gt;asArray(&amp;array);
-        ASSERT_UNUSED(castRes, castRes);
-#if $validatorIfdefName
-        assertCorrectValue(array.get());
-#endif  // $validatorIfdefName
-        COMPILE_ASSERT(sizeof(Array&lt;T&gt;) == sizeof(InspectorArray), type_cast_problem);
-        return static_cast&lt;Array&lt;T&gt;*&gt;(static_cast&lt;InspectorArrayBase*&gt;(array.get()));
-    }
-
-#if $validatorIfdefName
-    static void assertCorrectValue(InspectorValue* value)
-    {
-        RefPtr&lt;InspectorArray&gt; array;
-        bool castRes = value-&gt;asArray(&amp;array);
-        ASSERT_UNUSED(castRes, castRes);
-        for (unsigned i = 0; i &lt; array-&gt;length(); i++)
-            ArrayItemHelper&lt;T&gt;::Traits::template assertCorrectValue&lt;T&gt;(array-&gt;get(i).get());
-    }
-
-#endif // $validatorIfdefName
-};
-
-struct StructItemTraits {
-    static void pushRefPtr(InspectorArray* array, PassRefPtr&lt;InspectorValue&gt; value)
-    {
-        array-&gt;pushValue(value);
-    }
-
-#if $validatorIfdefName
-    template&lt;typename T&gt;
-    static void assertCorrectValue(InspectorValue* value) {
-        T::assertCorrectValue(value);
-    }
-#endif  // $validatorIfdefName
-};
-
-template&lt;&gt;
-struct ArrayItemHelper&lt;String&gt; {
-    struct Traits {
-        static void pushRaw(InspectorArray* array, const String&amp; value)
-        {
-            array-&gt;pushString(value);
-        }
-
-#if $validatorIfdefName
-        template&lt;typename T&gt;
-        static void assertCorrectValue(InspectorValue* value) {
-            RuntimeCastHelper::assertType&lt;InspectorValue::TypeString&gt;(value);
-        }
-#endif  // $validatorIfdefName
-    };
-};
-
-template&lt;&gt;
-struct ArrayItemHelper&lt;int&gt; {
-    struct Traits {
-        static void pushRaw(InspectorArray* array, int value)
-        {
-            array-&gt;pushInt(value);
-        }
-
-#if $validatorIfdefName
-        template&lt;typename T&gt;
-        static void assertCorrectValue(InspectorValue* value) {
-            RuntimeCastHelper::assertInt(value);
-        }
-#endif  // $validatorIfdefName
-    };
-};
-
-template&lt;&gt;
-struct ArrayItemHelper&lt;double&gt; {
-    struct Traits {
-        static void pushRaw(InspectorArray* array, double value)
-        {
-            array-&gt;pushNumber(value);
-        }
-
-#if $validatorIfdefName
-        template&lt;typename T&gt;
-        static void assertCorrectValue(InspectorValue* value) {
-            RuntimeCastHelper::assertType&lt;InspectorValue::TypeNumber&gt;(value);
-        }
-#endif  // $validatorIfdefName
-    };
-};
-
-template&lt;&gt;
-struct ArrayItemHelper&lt;bool&gt; {
-    struct Traits {
-        static void pushRaw(InspectorArray* array, bool value)
-        {
-            array-&gt;pushBoolean(value);
-        }
-
-#if $validatorIfdefName
-        template&lt;typename T&gt;
-        static void assertCorrectValue(InspectorValue* value) {
-            RuntimeCastHelper::assertType&lt;InspectorValue::TypeBoolean&gt;(value);
-        }
-#endif  // $validatorIfdefName
-    };
-};
-
-template&lt;&gt;
-struct ArrayItemHelper&lt;InspectorValue&gt; {
-    struct Traits {
-        static void pushRefPtr(InspectorArray* array, PassRefPtr&lt;InspectorValue&gt; value)
-        {
-            array-&gt;pushValue(value);
-        }
-
-#if $validatorIfdefName
-        template&lt;typename T&gt;
-        static void assertCorrectValue(InspectorValue* value) {
-            RuntimeCastHelper::assertAny(value);
-        }
-#endif  // $validatorIfdefName
-    };
-};
-
-template&lt;&gt;
-struct ArrayItemHelper&lt;InspectorObject&gt; {
-    struct Traits {
-        static void pushRefPtr(InspectorArray* array, PassRefPtr&lt;InspectorValue&gt; value)
-        {
-            array-&gt;pushValue(value);
-        }
-
-#if $validatorIfdefName
-        template&lt;typename T&gt;
-        static void assertCorrectValue(InspectorValue* value) {
-            RuntimeCastHelper::assertType&lt;InspectorValue::TypeObject&gt;(value);
-        }
-#endif  // $validatorIfdefName
-    };
-};
-
-template&lt;&gt;
-struct ArrayItemHelper&lt;InspectorArray&gt; {
-    struct Traits {
-        static void pushRefPtr(InspectorArray* array, PassRefPtr&lt;InspectorArray&gt; value)
-        {
-            array-&gt;pushArray(value);
-        }
-
-#if $validatorIfdefName
-        template&lt;typename T&gt;
-        static void assertCorrectValue(InspectorValue* value) {
-            RuntimeCastHelper::assertType&lt;InspectorValue::TypeArray&gt;(value);
-        }
-#endif  // $validatorIfdefName
-    };
-};
-
-template&lt;typename T&gt;
-struct ArrayItemHelper&lt;TypeBuilder::Array&lt;T&gt;&gt; {
-    struct Traits {
-        static void pushRefPtr(InspectorArray* array, PassRefPtr&lt;TypeBuilder::Array&lt;T&gt;&gt; value)
-        {
-            array-&gt;pushValue(value);
-        }
-
-#if $validatorIfdefName
-        template&lt;typename S&gt;
-        static void assertCorrectValue(InspectorValue* value) {
-            S::assertCorrectValue(value);
-        }
-#endif  // $validatorIfdefName
-    };
-};
-
</del><span class="cx"> ${forwards}
</span><span class="cx"> 
</span><span class="cx"> String getEnumConstantValue(int code);
</span><span class="lines">@@ -507,12 +235,11 @@
</span><span class="cx"> ${typeBuilders}
</span><span class="cx"> } // namespace TypeBuilder
</span><span class="cx"> 
</span><ins>+} // namespace Inspector
</ins><span class="cx"> 
</span><del>-} // namespace WebCore
-
</del><span class="cx"> #endif // ENABLE(INSPECTOR)
</span><span class="cx"> 
</span><del>-#endif // !defined(InspectorTypeBuilder_h)
</del><ins>+#endif // !defined(InspectorWebTypeBuilders_h)
</ins><span class="cx"> 
</span><span class="cx"> &quot;&quot;&quot;)
</span><span class="cx"> 
</span><span class="lines">@@ -522,11 +249,13 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><span class="cx"> 
</span><del>-#include &quot;InspectorTypeBuilder.h&quot;
</del><ins>+#include &quot;InspectorWebTypeBuilders.h&quot;
</ins><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><span class="cx"> 
</span><del>-namespace WebCore {
</del><ins>+using namespace Inspector;
</ins><span class="cx"> 
</span><ins>+namespace Inspector {
+
</ins><span class="cx"> namespace TypeBuilder {
</span><span class="cx"> 
</span><span class="cx"> const char* const enum_constant_values[] = {
</span><span class="lines">@@ -542,25 +271,11 @@
</span><span class="cx"> 
</span><span class="cx"> #if $validatorIfdefName
</span><span class="cx"> 
</span><del>-void TypeBuilder::RuntimeCastHelper::assertAny(InspectorValue*)
-{
-    // No-op.
-}
-
-
-void TypeBuilder::RuntimeCastHelper::assertInt(InspectorValue* value)
-{
-    double v;
-    bool castRes = value-&gt;asNumber(&amp;v);
-    ASSERT_UNUSED(castRes, castRes);
-    ASSERT(static_cast&lt;double&gt;(static_cast&lt;int&gt;(v)) == v);
-}
-
</del><span class="cx"> $validatorCode
</span><span class="cx"> 
</span><span class="cx"> #endif // $validatorIfdefName
</span><span class="cx"> 
</span><del>-} // namespace WebCore
</del><ins>+} // namespace Inspector
</ins><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(INSPECTOR)
</span><span class="cx"> &quot;&quot;&quot;)
</span><span class="lines">@@ -584,14 +299,14 @@
</span><span class="cx">     template&lt;int STATE&gt;
</span><span class="cx">     class Builder {
</span><span class="cx">     private:
</span><del>-        RefPtr&lt;InspectorObject&gt; m_result;
</del><ins>+        RefPtr&lt;Inspector::InspectorObject&gt; m_result;
</ins><span class="cx"> 
</span><span class="cx">         template&lt;int STEP&gt; Builder&lt;STATE | STEP&gt;&amp; castState()
</span><span class="cx">         {
</span><span class="cx">             return *reinterpret_cast&lt;Builder&lt;STATE | STEP&gt;*&gt;(this);
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        Builder(PassRefPtr&lt;/*%s*/InspectorObject&gt; ptr)
</del><ins>+        Builder(PassRefPtr&lt;/*%s*/Inspector::InspectorObject&gt; ptr)
</ins><span class="cx">         {
</span><span class="cx">             COMPILE_ASSERT(STATE == NoFieldsSet, builder_created_in_non_init_state);
</span><span class="cx">             m_result = ptr;
</span><span class="lines">@@ -613,7 +328,7 @@
</span><span class="cx">         operator RefPtr&lt;%s&gt;&amp; ()
</span><span class="cx">         {
</span><span class="cx">             COMPILE_ASSERT(STATE == AllFieldsSet, result_is_not_ready);
</span><del>-            COMPILE_ASSERT(sizeof(%s) == sizeof(InspectorObject), cannot_cast);
</del><ins>+            COMPILE_ASSERT(sizeof(%s) == sizeof(Inspector::InspectorObject), cannot_cast);
</ins><span class="cx">             return *reinterpret_cast&lt;RefPtr&lt;%s&gt;*&gt;(&amp;m_result);
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="lines">@@ -628,6 +343,6 @@
</span><span class="cx"> class_binding_builder_part_4 = (
</span><span class="cx"> &quot;&quot;&quot;    static Builder&lt;NoFieldsSet&gt; create()
</span><span class="cx">     {
</span><del>-        return Builder&lt;NoFieldsSet&gt;(InspectorObject::create());
</del><ins>+        return Builder&lt;NoFieldsSet&gt;(Inspector::InspectorObject::create());
</ins><span class="cx">     }
</span><span class="cx"> &quot;&quot;&quot;)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorConsoleMessagecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/ConsoleMessage.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/ConsoleMessage.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/ConsoleMessage.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -38,14 +38,16 @@
</span><span class="cx"> #include &quot;IdentifiersFactory.h&quot;
</span><span class="cx"> #include &quot;InjectedScript.h&quot;
</span><span class="cx"> #include &quot;InjectedScriptManager.h&quot;
</span><del>-#include &quot;InspectorValues.h&quot;
</del><span class="cx"> #include &quot;ScriptArguments.h&quot;
</span><span class="cx"> #include &quot;ScriptCallFrame.h&quot;
</span><span class="cx"> #include &quot;ScriptCallStack.h&quot;
</span><span class="cx"> #include &quot;ScriptCallStackFactory.h&quot;
</span><del>-#include &quot;ScriptValue.h&quot;
</del><ins>+#include &lt;bindings/ScriptValue.h&gt;
+#include &lt;inspector/InspectorValues.h&gt;
</ins><span class="cx"> #include &lt;wtf/MainThread.h&gt;
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> ConsoleMessage::ConsoleMessage(bool canGenerateCallStack, MessageSource source, MessageType type, MessageLevel level, const String&amp; message, unsigned long requestIdentifier)
</span><span class="lines">@@ -139,57 +141,57 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // Keep in sync with inspector/front-end/ConsoleView.js
</span><del>-static TypeBuilder::Console::ConsoleMessage::Source::Enum messageSourceValue(MessageSource source)
</del><ins>+static Inspector::TypeBuilder::Console::ConsoleMessage::Source::Enum messageSourceValue(MessageSource source)
</ins><span class="cx"> {
</span><span class="cx">     switch (source) {
</span><del>-    case XMLMessageSource: return TypeBuilder::Console::ConsoleMessage::Source::XML;
-    case JSMessageSource: return TypeBuilder::Console::ConsoleMessage::Source::Javascript;
-    case NetworkMessageSource: return TypeBuilder::Console::ConsoleMessage::Source::Network;
-    case ConsoleAPIMessageSource: return TypeBuilder::Console::ConsoleMessage::Source::ConsoleAPI;
-    case StorageMessageSource: return TypeBuilder::Console::ConsoleMessage::Source::Storage;
-    case AppCacheMessageSource: return TypeBuilder::Console::ConsoleMessage::Source::Appcache;
-    case RenderingMessageSource: return TypeBuilder::Console::ConsoleMessage::Source::Rendering;
-    case CSSMessageSource: return TypeBuilder::Console::ConsoleMessage::Source::CSS;
-    case SecurityMessageSource: return TypeBuilder::Console::ConsoleMessage::Source::Security;
-    case OtherMessageSource: return TypeBuilder::Console::ConsoleMessage::Source::Other;
</del><ins>+    case XMLMessageSource: return Inspector::TypeBuilder::Console::ConsoleMessage::Source::XML;
+    case JSMessageSource: return Inspector::TypeBuilder::Console::ConsoleMessage::Source::Javascript;
+    case NetworkMessageSource: return Inspector::TypeBuilder::Console::ConsoleMessage::Source::Network;
+    case ConsoleAPIMessageSource: return Inspector::TypeBuilder::Console::ConsoleMessage::Source::ConsoleAPI;
+    case StorageMessageSource: return Inspector::TypeBuilder::Console::ConsoleMessage::Source::Storage;
+    case AppCacheMessageSource: return Inspector::TypeBuilder::Console::ConsoleMessage::Source::Appcache;
+    case RenderingMessageSource: return Inspector::TypeBuilder::Console::ConsoleMessage::Source::Rendering;
+    case CSSMessageSource: return Inspector::TypeBuilder::Console::ConsoleMessage::Source::CSS;
+    case SecurityMessageSource: return Inspector::TypeBuilder::Console::ConsoleMessage::Source::Security;
+    case OtherMessageSource: return Inspector::TypeBuilder::Console::ConsoleMessage::Source::Other;
</ins><span class="cx">     }
</span><del>-    return TypeBuilder::Console::ConsoleMessage::Source::Other;
</del><ins>+    return Inspector::TypeBuilder::Console::ConsoleMessage::Source::Other;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-static TypeBuilder::Console::ConsoleMessage::Type::Enum messageTypeValue(MessageType type)
</del><ins>+static Inspector::TypeBuilder::Console::ConsoleMessage::Type::Enum messageTypeValue(MessageType type)
</ins><span class="cx"> {
</span><span class="cx">     switch (type) {
</span><del>-    case LogMessageType: return TypeBuilder::Console::ConsoleMessage::Type::Log;
-    case ClearMessageType: return TypeBuilder::Console::ConsoleMessage::Type::Clear;
-    case DirMessageType: return TypeBuilder::Console::ConsoleMessage::Type::Dir;
-    case DirXMLMessageType: return TypeBuilder::Console::ConsoleMessage::Type::DirXML;
-    case TableMessageType: return TypeBuilder::Console::ConsoleMessage::Type::Table;
-    case TraceMessageType: return TypeBuilder::Console::ConsoleMessage::Type::Trace;
-    case StartGroupMessageType: return TypeBuilder::Console::ConsoleMessage::Type::StartGroup;
-    case StartGroupCollapsedMessageType: return TypeBuilder::Console::ConsoleMessage::Type::StartGroupCollapsed;
-    case EndGroupMessageType: return TypeBuilder::Console::ConsoleMessage::Type::EndGroup;
-    case AssertMessageType: return TypeBuilder::Console::ConsoleMessage::Type::Assert;
-    case TimingMessageType: return TypeBuilder::Console::ConsoleMessage::Type::Timing;
-    case ProfileMessageType: return TypeBuilder::Console::ConsoleMessage::Type::Profile;
-    case ProfileEndMessageType: return TypeBuilder::Console::ConsoleMessage::Type::ProfileEnd;
</del><ins>+    case LogMessageType: return Inspector::TypeBuilder::Console::ConsoleMessage::Type::Log;
+    case ClearMessageType: return Inspector::TypeBuilder::Console::ConsoleMessage::Type::Clear;
+    case DirMessageType: return Inspector::TypeBuilder::Console::ConsoleMessage::Type::Dir;
+    case DirXMLMessageType: return Inspector::TypeBuilder::Console::ConsoleMessage::Type::DirXML;
+    case TableMessageType: return Inspector::TypeBuilder::Console::ConsoleMessage::Type::Table;
+    case TraceMessageType: return Inspector::TypeBuilder::Console::ConsoleMessage::Type::Trace;
+    case StartGroupMessageType: return Inspector::TypeBuilder::Console::ConsoleMessage::Type::StartGroup;
+    case StartGroupCollapsedMessageType: return Inspector::TypeBuilder::Console::ConsoleMessage::Type::StartGroupCollapsed;
+    case EndGroupMessageType: return Inspector::TypeBuilder::Console::ConsoleMessage::Type::EndGroup;
+    case AssertMessageType: return Inspector::TypeBuilder::Console::ConsoleMessage::Type::Assert;
+    case TimingMessageType: return Inspector::TypeBuilder::Console::ConsoleMessage::Type::Timing;
+    case ProfileMessageType: return Inspector::TypeBuilder::Console::ConsoleMessage::Type::Profile;
+    case ProfileEndMessageType: return Inspector::TypeBuilder::Console::ConsoleMessage::Type::ProfileEnd;
</ins><span class="cx">     }
</span><del>-    return TypeBuilder::Console::ConsoleMessage::Type::Log;
</del><ins>+    return Inspector::TypeBuilder::Console::ConsoleMessage::Type::Log;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-static TypeBuilder::Console::ConsoleMessage::Level::Enum messageLevelValue(MessageLevel level)
</del><ins>+static Inspector::TypeBuilder::Console::ConsoleMessage::Level::Enum messageLevelValue(MessageLevel level)
</ins><span class="cx"> {
</span><span class="cx">     switch (level) {
</span><del>-    case DebugMessageLevel: return TypeBuilder::Console::ConsoleMessage::Level::Debug;
-    case LogMessageLevel: return TypeBuilder::Console::ConsoleMessage::Level::Log;
-    case WarningMessageLevel: return TypeBuilder::Console::ConsoleMessage::Level::Warning;
-    case ErrorMessageLevel: return TypeBuilder::Console::ConsoleMessage::Level::Error;
</del><ins>+    case DebugMessageLevel: return Inspector::TypeBuilder::Console::ConsoleMessage::Level::Debug;
+    case LogMessageLevel: return Inspector::TypeBuilder::Console::ConsoleMessage::Level::Log;
+    case WarningMessageLevel: return Inspector::TypeBuilder::Console::ConsoleMessage::Level::Warning;
+    case ErrorMessageLevel: return Inspector::TypeBuilder::Console::ConsoleMessage::Level::Error;
</ins><span class="cx">     }
</span><del>-    return TypeBuilder::Console::ConsoleMessage::Level::Log;
</del><ins>+    return Inspector::TypeBuilder::Console::ConsoleMessage::Level::Log;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void ConsoleMessage::addToFrontend(InspectorConsoleFrontendDispatcher* consoleFrontendDispatcher, InjectedScriptManager* injectedScriptManager, bool generatePreview)
</span><span class="cx"> {
</span><del>-    RefPtr&lt;TypeBuilder::Console::ConsoleMessage&gt; jsonObj = TypeBuilder::Console::ConsoleMessage::create()
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Console::ConsoleMessage&gt; jsonObj = Inspector::TypeBuilder::Console::ConsoleMessage::create()
</ins><span class="cx">         .setSource(messageSourceValue(m_source))
</span><span class="cx">         .setLevel(messageLevelValue(m_level))
</span><span class="cx">         .setText(m_message);
</span><span class="lines">@@ -204,11 +206,11 @@
</span><span class="cx">     if (m_arguments &amp;&amp; m_arguments-&gt;argumentCount()) {
</span><span class="cx">         InjectedScript injectedScript = injectedScriptManager-&gt;injectedScriptFor(m_arguments-&gt;globalState());
</span><span class="cx">         if (!injectedScript.hasNoValue()) {
</span><del>-            RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::Runtime::RemoteObject&gt;&gt; jsonArgs = TypeBuilder::Array&lt;TypeBuilder::Runtime::RemoteObject&gt;::create();
</del><ins>+            RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Runtime::RemoteObject&gt;&gt; jsonArgs = Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Runtime::RemoteObject&gt;::create();
</ins><span class="cx">             if (m_type == TableMessageType &amp;&amp; generatePreview &amp;&amp; m_arguments-&gt;argumentCount()) {
</span><del>-                ScriptValue table = m_arguments-&gt;argumentAt(0);
-                ScriptValue columns = m_arguments-&gt;argumentCount() &gt; 1 ? m_arguments-&gt;argumentAt(1) : ScriptValue();
-                RefPtr&lt;TypeBuilder::Runtime::RemoteObject&gt; inspectorValue = injectedScript.wrapTable(table, columns);
</del><ins>+                Deprecated::ScriptValue table = m_arguments-&gt;argumentAt(0);
+                Deprecated::ScriptValue columns = m_arguments-&gt;argumentCount() &gt; 1 ? m_arguments-&gt;argumentAt(1) : Deprecated::ScriptValue();
+                RefPtr&lt;Inspector::TypeBuilder::Runtime::RemoteObject&gt; inspectorValue = injectedScript.wrapTable(table, columns);
</ins><span class="cx">                 if (!inspectorValue) {
</span><span class="cx">                     ASSERT_NOT_REACHED();
</span><span class="cx">                     return;
</span><span class="lines">@@ -216,7 +218,7 @@
</span><span class="cx">                 jsonArgs-&gt;addItem(inspectorValue);
</span><span class="cx">             } else {
</span><span class="cx">                 for (unsigned i = 0; i &lt; m_arguments-&gt;argumentCount(); ++i) {
</span><del>-                    RefPtr&lt;TypeBuilder::Runtime::RemoteObject&gt; inspectorValue = injectedScript.wrapObject(m_arguments-&gt;argumentAt(i), &quot;console&quot;, generatePreview);
</del><ins>+                    RefPtr&lt;Inspector::TypeBuilder::Runtime::RemoteObject&gt; inspectorValue = injectedScript.wrapObject(m_arguments-&gt;argumentAt(i), &quot;console&quot;, generatePreview);
</ins><span class="cx">                     if (!inspectorValue) {
</span><span class="cx">                         ASSERT_NOT_REACHED();
</span><span class="cx">                         return;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorConsoleMessageh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/ConsoleMessage.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/ConsoleMessage.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/ConsoleMessage.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -38,15 +38,17 @@
</span><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><span class="cx"> #include &lt;wtf/Vector.h&gt;
</span><span class="cx"> 
</span><ins>+namespace Inspector {
+class InspectorObject;
+}
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class DOMWindow;
</span><span class="cx"> class InjectedScriptManager;
</span><del>-class InspectorObject;
</del><span class="cx"> class ScriptArguments;
</span><span class="cx"> class ScriptCallFrame;
</span><span class="cx"> class ScriptCallStack;
</span><del>-class ScriptValue;
</del><span class="cx"> 
</span><span class="cx"> class ConsoleMessage {
</span><span class="cx">     WTF_MAKE_NONCOPYABLE(ConsoleMessage); WTF_MAKE_FAST_ALLOCATED;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorContentSearchUtilscpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/ContentSearchUtils.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/ContentSearchUtils.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/ContentSearchUtils.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -31,14 +31,14 @@
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><span class="cx"> 
</span><span class="cx"> #include &quot;ContentSearchUtils.h&quot;
</span><del>-
-#include &quot;InspectorValues.h&quot;
</del><span class="cx"> #include &quot;RegularExpression.h&quot;
</span><del>-
</del><ins>+#include &lt;inspector/InspectorValues.h&gt;
</ins><span class="cx"> #include &lt;wtf/BumpPointerAllocator.h&gt;
</span><span class="cx"> #include &lt;wtf/StdLibExtras.h&gt;
</span><span class="cx"> #include &lt;yarr/Yarr.h&gt;
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> namespace ContentSearchUtils {
</span><span class="cx"> 
</span><span class="lines">@@ -120,9 +120,9 @@
</span><span class="cx">     return result.release();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static PassRefPtr&lt;TypeBuilder::Page::SearchMatch&gt; buildObjectForSearchMatch(int lineNumber, const String&amp; lineContent)
</del><ins>+static PassRefPtr&lt;Inspector::TypeBuilder::Page::SearchMatch&gt; buildObjectForSearchMatch(int lineNumber, const String&amp; lineContent)
</ins><span class="cx"> {
</span><del>-    return TypeBuilder::Page::SearchMatch::create()
</del><ins>+    return Inspector::TypeBuilder::Page::SearchMatch::create()
</ins><span class="cx">         .setLineNumber(lineNumber)
</span><span class="cx">         .setLineContent(lineContent)
</span><span class="cx">         .release();
</span><span class="lines">@@ -153,9 +153,9 @@
</span><span class="cx">     return result;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::Page::SearchMatch&gt;&gt; searchInTextByLines(const String&amp; text, const String&amp; query, const bool caseSensitive, const bool isRegex)
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Page::SearchMatch&gt;&gt; searchInTextByLines(const String&amp; text, const String&amp; query, const bool caseSensitive, const bool isRegex)
</ins><span class="cx"> {
</span><del>-    RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::Page::SearchMatch&gt;&gt; result = TypeBuilder::Array&lt;TypeBuilder::Page::SearchMatch&gt;::create();
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Page::SearchMatch&gt;&gt; result = Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Page::SearchMatch&gt;::create();
</ins><span class="cx"> 
</span><span class="cx">     RegularExpression regex = ContentSearchUtils::createSearchRegex(query, caseSensitive, isRegex);
</span><span class="cx">     Vector&lt;pair&lt;int, String&gt;&gt; matches = getRegularExpressionMatchesByLines(regex, text);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorContentSearchUtilsh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/ContentSearchUtils.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/ContentSearchUtils.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/ContentSearchUtils.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -31,21 +31,20 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><span class="cx"> 
</span><del>-#include &quot;InspectorTypeBuilder.h&quot;
</del><ins>+#include &quot;InspectorWebTypeBuilders.h&quot;
</ins><span class="cx"> #include &lt;wtf/Vector.h&gt;
</span><span class="cx"> #include &lt;wtf/text/TextPosition.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-class InspectorArray;
</del><span class="cx"> class RegularExpression;
</span><span class="cx"> 
</span><span class="cx"> namespace ContentSearchUtils {
</span><span class="cx"> 
</span><span class="cx"> RegularExpression createSearchRegex(const String&amp; query, bool caseSensitive, bool isRegex);
</span><span class="cx"> int countRegularExpressionMatches(const RegularExpression&amp;, const String&amp;);
</span><del>-PassRefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::Page::SearchMatch&gt;&gt; searchInTextByLines(const String&amp; text, const String&amp; query, const bool caseSensitive, const bool isRegex);
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Page::SearchMatch&gt;&gt; searchInTextByLines(const String&amp; text, const String&amp; query, const bool caseSensitive, const bool isRegex);
</ins><span class="cx"> TextPosition textPositionFromOffset(size_t offset, const Vector&lt;size_t&gt;&amp; lineEndings);
</span><span class="cx"> PassOwnPtr&lt;Vector&lt;size_t&gt;&gt; lineEndings(const String&amp;);
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorDOMPatchSupportcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/DOMPatchSupport.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/DOMPatchSupport.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/DOMPatchSupport.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -440,14 +440,14 @@
</span><span class="cx">                 addStringToSHA1(attrsSHA1, attribute.name().toString());
</span><span class="cx">                 addStringToSHA1(attrsSHA1, attribute.value());
</span><span class="cx">             }
</span><del>-            Vector&lt;uint8_t, 20&gt; attrsHash;
</del><ins>+            SHA1::Digest attrsHash;
</ins><span class="cx">             attrsSHA1.computeHash(attrsHash);
</span><span class="cx">             digest-&gt;m_attrsSHA1 = base64Encode(attrsHash.data(), 10);
</span><span class="cx">             addStringToSHA1(sha1, digest-&gt;m_attrsSHA1);
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    Vector&lt;uint8_t, 20&gt; hash;
</del><ins>+    SHA1::Digest hash;
</ins><span class="cx">     sha1.computeHash(hash);
</span><span class="cx">     digest-&gt;m_sha1 = base64Encode(hash.data(), 10);
</span><span class="cx">     if (unusedNodesMap)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInjectedScriptcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InjectedScript.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InjectedScript.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InjectedScript.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -36,19 +36,22 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;InjectedScriptHost.h&quot;
</span><span class="cx"> #include &quot;InjectedScriptModule.h&quot;
</span><del>-#include &quot;InspectorValues.h&quot;
</del><ins>+#include &quot;JSMainThreadExecState.h&quot;
</ins><span class="cx"> #include &quot;Node.h&quot;
</span><del>-#include &quot;ScriptFunctionCall.h&quot;
-#include &quot;SerializedScriptValue.h&quot;
</del><ins>+#include &lt;bindings/ScriptFunctionCall.h&gt;
+#include &lt;bindings/ScriptObject.h&gt;
+#include &lt;inspector/InspectorValues.h&gt;
</ins><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><del>-using WebCore::TypeBuilder::Array;
-using WebCore::TypeBuilder::Debugger::CallFrame;
-using WebCore::TypeBuilder::Runtime::PropertyDescriptor;
-using WebCore::TypeBuilder::Runtime::InternalPropertyDescriptor;
-using WebCore::TypeBuilder::Debugger::FunctionDetails;
-using WebCore::TypeBuilder::Runtime::RemoteObject;
</del><ins>+using Inspector::TypeBuilder::Array;
+using Inspector::TypeBuilder::Debugger::CallFrame;
+using Inspector::TypeBuilder::Debugger::FunctionDetails;
+using Inspector::TypeBuilder::Runtime::PropertyDescriptor;
+using Inspector::TypeBuilder::Runtime::InternalPropertyDescriptor;
+using Inspector::TypeBuilder::Runtime::RemoteObject;
</ins><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> InjectedScript::InjectedScript()
</span><span class="lines">@@ -56,14 +59,14 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-InjectedScript::InjectedScript(ScriptObject injectedScriptObject, InspectedStateAccessCheck accessCheck)
</del><ins>+InjectedScript::InjectedScript(Deprecated::ScriptObject injectedScriptObject, InspectedStateAccessCheck accessCheck)
</ins><span class="cx">     : InjectedScriptBase(&quot;InjectedScript&quot;, injectedScriptObject, accessCheck)
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InjectedScript::evaluate(ErrorString* errorString, const String&amp; expression, const String&amp; objectGroup, bool includeCommandLineAPI, bool returnByValue, bool generatePreview, RefPtr&lt;TypeBuilder::Runtime::RemoteObject&gt;* result, TypeBuilder::OptOutput&lt;bool&gt;* wasThrown)
</del><ins>+void InjectedScript::evaluate(ErrorString* errorString, const String&amp; expression, const String&amp; objectGroup, bool includeCommandLineAPI, bool returnByValue, bool generatePreview, RefPtr&lt;Inspector::TypeBuilder::Runtime::RemoteObject&gt;* result, Inspector::TypeBuilder::OptOutput&lt;bool&gt;* wasThrown)
</ins><span class="cx"> {
</span><del>-    ScriptFunctionCall function(injectedScriptObject(), &quot;evaluate&quot;);
</del><ins>+    Deprecated::ScriptFunctionCall function(injectedScriptObject(), &quot;evaluate&quot;, WebCore::functionCallHandlerFromAnyThread);
</ins><span class="cx">     function.appendArgument(expression);
</span><span class="cx">     function.appendArgument(objectGroup);
</span><span class="cx">     function.appendArgument(includeCommandLineAPI);
</span><span class="lines">@@ -72,9 +75,9 @@
</span><span class="cx">     makeEvalCall(errorString, function, result, wasThrown);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InjectedScript::callFunctionOn(ErrorString* errorString, const String&amp; objectId, const String&amp; expression, const String&amp; arguments, bool returnByValue, bool generatePreview, RefPtr&lt;TypeBuilder::Runtime::RemoteObject&gt;* result, TypeBuilder::OptOutput&lt;bool&gt;* wasThrown)
</del><ins>+void InjectedScript::callFunctionOn(ErrorString* errorString, const String&amp; objectId, const String&amp; expression, const String&amp; arguments, bool returnByValue, bool generatePreview, RefPtr&lt;Inspector::TypeBuilder::Runtime::RemoteObject&gt;* result, Inspector::TypeBuilder::OptOutput&lt;bool&gt;* wasThrown)
</ins><span class="cx"> {
</span><del>-    ScriptFunctionCall function(injectedScriptObject(), &quot;callFunctionOn&quot;);
</del><ins>+    Deprecated::ScriptFunctionCall function(injectedScriptObject(), &quot;callFunctionOn&quot;, WebCore::functionCallHandlerFromAnyThread);
</ins><span class="cx">     function.appendArgument(objectId);
</span><span class="cx">     function.appendArgument(expression);
</span><span class="cx">     function.appendArgument(arguments);
</span><span class="lines">@@ -83,9 +86,9 @@
</span><span class="cx">     makeEvalCall(errorString, function, result, wasThrown);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InjectedScript::evaluateOnCallFrame(ErrorString* errorString, const ScriptValue&amp; callFrames, const String&amp; callFrameId, const String&amp; expression, const String&amp; objectGroup, bool includeCommandLineAPI, bool returnByValue, bool generatePreview, RefPtr&lt;RemoteObject&gt;* result, TypeBuilder::OptOutput&lt;bool&gt;* wasThrown)
</del><ins>+void InjectedScript::evaluateOnCallFrame(ErrorString* errorString, const Deprecated::ScriptValue&amp; callFrames, const String&amp; callFrameId, const String&amp; expression, const String&amp; objectGroup, bool includeCommandLineAPI, bool returnByValue, bool generatePreview, RefPtr&lt;RemoteObject&gt;* result, Inspector::TypeBuilder::OptOutput&lt;bool&gt;* wasThrown)
</ins><span class="cx"> {
</span><del>-    ScriptFunctionCall function(injectedScriptObject(), &quot;evaluateOnCallFrame&quot;);
</del><ins>+    Deprecated::ScriptFunctionCall function(injectedScriptObject(), &quot;evaluateOnCallFrame&quot;, WebCore::functionCallHandlerFromAnyThread);
</ins><span class="cx">     function.appendArgument(callFrames);
</span><span class="cx">     function.appendArgument(callFrameId);
</span><span class="cx">     function.appendArgument(expression);
</span><span class="lines">@@ -98,7 +101,7 @@
</span><span class="cx"> 
</span><span class="cx"> void InjectedScript::getFunctionDetails(ErrorString* errorString, const String&amp; functionId, RefPtr&lt;FunctionDetails&gt;* result)
</span><span class="cx"> {
</span><del>-    ScriptFunctionCall function(injectedScriptObject(), &quot;getFunctionDetails&quot;);
</del><ins>+    Deprecated::ScriptFunctionCall function(injectedScriptObject(), &quot;getFunctionDetails&quot;, WebCore::functionCallHandlerFromAnyThread);
</ins><span class="cx">     function.appendArgument(functionId);
</span><span class="cx">     RefPtr&lt;InspectorValue&gt; resultValue;
</span><span class="cx">     makeCall(function, &amp;resultValue);
</span><span class="lines">@@ -112,7 +115,7 @@
</span><span class="cx"> 
</span><span class="cx"> void InjectedScript::getProperties(ErrorString* errorString, const String&amp; objectId, bool ownProperties, RefPtr&lt;Array&lt;PropertyDescriptor&gt;&gt;* properties)
</span><span class="cx"> {
</span><del>-    ScriptFunctionCall function(injectedScriptObject(), &quot;getProperties&quot;);
</del><ins>+    Deprecated::ScriptFunctionCall function(injectedScriptObject(), &quot;getProperties&quot;, WebCore::functionCallHandlerFromAnyThread);
</ins><span class="cx">     function.appendArgument(objectId);
</span><span class="cx">     function.appendArgument(ownProperties);
</span><span class="cx"> 
</span><span class="lines">@@ -127,7 +130,7 @@
</span><span class="cx"> 
</span><span class="cx"> void InjectedScript::getInternalProperties(ErrorString* errorString, const String&amp; objectId, RefPtr&lt;Array&lt;InternalPropertyDescriptor&gt;&gt;* properties)
</span><span class="cx"> {
</span><del>-    ScriptFunctionCall function(injectedScriptObject(), &quot;getInternalProperties&quot;);
</del><ins>+    Deprecated::ScriptFunctionCall function(injectedScriptObject(), &quot;getInternalProperties&quot;, WebCore::functionCallHandlerFromAnyThread);
</ins><span class="cx">     function.appendArgument(objectId);
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;InspectorValue&gt; result;
</span><span class="lines">@@ -146,11 +149,11 @@
</span><span class="cx">     if (hasNoValue() || !canAccessInspectedWindow())
</span><span class="cx">         return 0;
</span><span class="cx"> 
</span><del>-    ScriptFunctionCall function(injectedScriptObject(), &quot;nodeForObjectId&quot;);
</del><ins>+    Deprecated::ScriptFunctionCall function(injectedScriptObject(), &quot;nodeForObjectId&quot;, WebCore::functionCallHandlerFromAnyThread);
</ins><span class="cx">     function.appendArgument(objectId);
</span><span class="cx"> 
</span><span class="cx">     bool hadException = false;
</span><del>-    ScriptValue resultValue = callFunctionWithEvalEnabled(function, hadException);
</del><ins>+    Deprecated::ScriptValue resultValue = callFunctionWithEvalEnabled(function, hadException);
</ins><span class="cx">     ASSERT(!hadException);
</span><span class="cx"> 
</span><span class="cx">     return InjectedScriptHost::scriptValueAsNode(resultValue);
</span><span class="lines">@@ -158,20 +161,20 @@
</span><span class="cx"> 
</span><span class="cx"> void InjectedScript::releaseObject(const String&amp; objectId)
</span><span class="cx"> {
</span><del>-    ScriptFunctionCall function(injectedScriptObject(), &quot;releaseObject&quot;);
</del><ins>+    Deprecated::ScriptFunctionCall function(injectedScriptObject(), &quot;releaseObject&quot;, WebCore::functionCallHandlerFromAnyThread);
</ins><span class="cx">     function.appendArgument(objectId);
</span><span class="cx">     RefPtr&lt;InspectorValue&gt; result;
</span><span class="cx">     makeCall(function, &amp;result);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(JAVASCRIPT_DEBUGGER)
</span><del>-PassRefPtr&lt;Array&lt;CallFrame&gt;&gt; InjectedScript::wrapCallFrames(const ScriptValue&amp; callFrames)
</del><ins>+PassRefPtr&lt;Array&lt;CallFrame&gt;&gt; InjectedScript::wrapCallFrames(const Deprecated::ScriptValue&amp; callFrames)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(!hasNoValue());
</span><del>-    ScriptFunctionCall function(injectedScriptObject(), &quot;wrapCallFrames&quot;);
</del><ins>+    Deprecated::ScriptFunctionCall function(injectedScriptObject(), &quot;wrapCallFrames&quot;, WebCore::functionCallHandlerFromAnyThread);
</ins><span class="cx">     function.appendArgument(callFrames);
</span><span class="cx">     bool hadException = false;
</span><del>-    ScriptValue callFramesValue = callFunctionWithEvalEnabled(function, hadException);
</del><ins>+    Deprecated::ScriptValue callFramesValue = callFunctionWithEvalEnabled(function, hadException);
</ins><span class="cx">     ASSERT(!hadException);
</span><span class="cx">     RefPtr&lt;InspectorValue&gt; result = callFramesValue.toInspectorValue(scriptState());
</span><span class="cx">     if (result-&gt;type() == InspectorValue::TypeArray)
</span><span class="lines">@@ -180,26 +183,26 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::Runtime::RemoteObject&gt; InjectedScript::wrapObject(const ScriptValue&amp; value, const String&amp; groupName, bool generatePreview) const
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::Runtime::RemoteObject&gt; InjectedScript::wrapObject(const Deprecated::ScriptValue&amp; value, const String&amp; groupName, bool generatePreview) const
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(!hasNoValue());
</span><del>-    ScriptFunctionCall wrapFunction(injectedScriptObject(), &quot;wrapObject&quot;);
</del><ins>+    Deprecated::ScriptFunctionCall wrapFunction(injectedScriptObject(), &quot;wrapObject&quot;);
</ins><span class="cx">     wrapFunction.appendArgument(value);
</span><span class="cx">     wrapFunction.appendArgument(groupName);
</span><span class="cx">     wrapFunction.appendArgument(canAccessInspectedWindow());
</span><span class="cx">     wrapFunction.appendArgument(generatePreview);
</span><span class="cx">     bool hadException = false;
</span><del>-    ScriptValue r = callFunctionWithEvalEnabled(wrapFunction, hadException);
</del><ins>+    Deprecated::ScriptValue r = callFunctionWithEvalEnabled(wrapFunction, hadException);
</ins><span class="cx">     if (hadException)
</span><span class="cx">         return 0;
</span><span class="cx">     RefPtr&lt;InspectorObject&gt; rawResult = r.toInspectorValue(scriptState())-&gt;asObject();
</span><del>-    return TypeBuilder::Runtime::RemoteObject::runtimeCast(rawResult);
</del><ins>+    return Inspector::TypeBuilder::Runtime::RemoteObject::runtimeCast(rawResult);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::Runtime::RemoteObject&gt; InjectedScript::wrapTable(const ScriptValue&amp; table, const ScriptValue&amp; columns) const
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::Runtime::RemoteObject&gt; InjectedScript::wrapTable(const Deprecated::ScriptValue&amp; table, const Deprecated::ScriptValue&amp; columns) const
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(!hasNoValue());
</span><del>-    ScriptFunctionCall wrapFunction(injectedScriptObject(), &quot;wrapTable&quot;);
</del><ins>+    Deprecated::ScriptFunctionCall wrapFunction(injectedScriptObject(), &quot;wrapTable&quot;);
</ins><span class="cx">     wrapFunction.appendArgument(canAccessInspectedWindow());
</span><span class="cx">     wrapFunction.appendArgument(table);
</span><span class="cx">     if (columns.hasNoValue())
</span><span class="lines">@@ -207,26 +210,26 @@
</span><span class="cx">     else
</span><span class="cx">         wrapFunction.appendArgument(columns);
</span><span class="cx">     bool hadException = false;
</span><del>-    ScriptValue r = callFunctionWithEvalEnabled(wrapFunction, hadException);
</del><ins>+    Deprecated::ScriptValue r = callFunctionWithEvalEnabled(wrapFunction, hadException);
</ins><span class="cx">     if (hadException)
</span><span class="cx">         return 0;
</span><span class="cx">     RefPtr&lt;InspectorObject&gt; rawResult = r.toInspectorValue(scriptState())-&gt;asObject();
</span><del>-    return TypeBuilder::Runtime::RemoteObject::runtimeCast(rawResult);
</del><ins>+    return Inspector::TypeBuilder::Runtime::RemoteObject::runtimeCast(rawResult);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::Runtime::RemoteObject&gt; InjectedScript::wrapNode(Node* node, const String&amp; groupName)
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::Runtime::RemoteObject&gt; InjectedScript::wrapNode(Node* node, const String&amp; groupName)
</ins><span class="cx"> {
</span><span class="cx">     return wrapObject(nodeAsScriptValue(node), groupName);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-ScriptValue InjectedScript::findObjectById(const String&amp; objectId) const
</del><ins>+Deprecated::ScriptValue InjectedScript::findObjectById(const String&amp; objectId) const
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(!hasNoValue());
</span><del>-    ScriptFunctionCall function(injectedScriptObject(), &quot;findObjectById&quot;);
</del><ins>+    Deprecated::ScriptFunctionCall function(injectedScriptObject(), &quot;findObjectById&quot;, WebCore::functionCallHandlerFromAnyThread);
</ins><span class="cx">     function.appendArgument(objectId);
</span><span class="cx"> 
</span><span class="cx">     bool hadException = false;
</span><del>-    ScriptValue resultValue = callFunctionWithEvalEnabled(function, hadException);
</del><ins>+    Deprecated::ScriptValue resultValue = callFunctionWithEvalEnabled(function, hadException);
</ins><span class="cx">     ASSERT(!hadException);
</span><span class="cx">     return resultValue;
</span><span class="cx"> }
</span><span class="lines">@@ -234,7 +237,7 @@
</span><span class="cx"> void InjectedScript::inspectNode(Node* node)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(!hasNoValue());
</span><del>-    ScriptFunctionCall function(injectedScriptObject(), &quot;inspectNode&quot;);
</del><ins>+    Deprecated::ScriptFunctionCall function(injectedScriptObject(), &quot;inspectNode&quot;, WebCore::functionCallHandlerFromAnyThread);
</ins><span class="cx">     function.appendArgument(nodeAsScriptValue(node));
</span><span class="cx">     RefPtr&lt;InspectorValue&gt; result;
</span><span class="cx">     makeCall(function, &amp;result);
</span><span class="lines">@@ -243,14 +246,14 @@
</span><span class="cx"> void InjectedScript::releaseObjectGroup(const String&amp; objectGroup)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(!hasNoValue());
</span><del>-    ScriptFunctionCall releaseFunction(injectedScriptObject(), &quot;releaseObjectGroup&quot;);
</del><ins>+    Deprecated::ScriptFunctionCall releaseFunction(injectedScriptObject(), &quot;releaseObjectGroup&quot;, WebCore::functionCallHandlerFromAnyThread);
</ins><span class="cx">     releaseFunction.appendArgument(objectGroup);
</span><span class="cx">     bool hadException = false;
</span><span class="cx">     callFunctionWithEvalEnabled(releaseFunction, hadException);
</span><span class="cx">     ASSERT(!hadException);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-ScriptValue InjectedScript::nodeAsScriptValue(Node* node)
</del><ins>+Deprecated::ScriptValue InjectedScript::nodeAsScriptValue(Node* node)
</ins><span class="cx"> {
</span><span class="cx">     return InjectedScriptHost::nodeAsScriptValue(scriptState(), node);
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInjectedScripth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InjectedScript.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InjectedScript.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InjectedScript.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -33,19 +33,21 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;InjectedScriptBase.h&quot;
</span><span class="cx"> #include &quot;InjectedScriptManager.h&quot;
</span><del>-#include &quot;InspectorTypeBuilder.h&quot;
</del><ins>+#include &quot;InspectorWebTypeBuilders.h&quot;
</ins><span class="cx"> #include &quot;ScriptArguments.h&quot;
</span><del>-#include &quot;ScriptObject.h&quot;
</del><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><span class="cx"> #include &lt;wtf/Noncopyable.h&gt;
</span><span class="cx"> #include &lt;wtf/PassRefPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/RefPtr.h&gt;
</span><span class="cx"> 
</span><ins>+namespace Deprecated {
+class ScriptObject;
+}
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class InjectedScriptModule;
</span><span class="cx"> class Node;
</span><del>-class SerializedScriptValue;
</del><span class="cx"> 
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><span class="cx"> 
</span><span class="lines">@@ -60,40 +62,40 @@
</span><span class="cx">                   bool includeCommandLineAPI,
</span><span class="cx">                   bool returnByValue,
</span><span class="cx">                   bool generatePreview,
</span><del>-                  RefPtr&lt;TypeBuilder::Runtime::RemoteObject&gt;* result,
-                  TypeBuilder::OptOutput&lt;bool&gt;* wasThrown);
</del><ins>+                  RefPtr&lt;Inspector::TypeBuilder::Runtime::RemoteObject&gt;* result,
+                  Inspector::TypeBuilder::OptOutput&lt;bool&gt;* wasThrown);
</ins><span class="cx">     void callFunctionOn(ErrorString*,
</span><span class="cx">                         const String&amp; objectId,
</span><span class="cx">                         const String&amp; expression,
</span><span class="cx">                         const String&amp; arguments,
</span><span class="cx">                         bool returnByValue,
</span><span class="cx">                         bool generatePreview,
</span><del>-                        RefPtr&lt;TypeBuilder::Runtime::RemoteObject&gt;* result,
-                        TypeBuilder::OptOutput&lt;bool&gt;* wasThrown);
</del><ins>+                        RefPtr&lt;Inspector::TypeBuilder::Runtime::RemoteObject&gt;* result,
+                        Inspector::TypeBuilder::OptOutput&lt;bool&gt;* wasThrown);
</ins><span class="cx">     void evaluateOnCallFrame(ErrorString*,
</span><del>-                             const ScriptValue&amp; callFrames,
</del><ins>+                             const Deprecated::ScriptValue&amp; callFrames,
</ins><span class="cx">                              const String&amp; callFrameId,
</span><span class="cx">                              const String&amp; expression,
</span><span class="cx">                              const String&amp; objectGroup,
</span><span class="cx">                              bool includeCommandLineAPI,
</span><span class="cx">                              bool returnByValue,
</span><span class="cx">                              bool generatePreview,
</span><del>-                             RefPtr&lt;TypeBuilder::Runtime::RemoteObject&gt;* result,
-                             TypeBuilder::OptOutput&lt;bool&gt;* wasThrown);
-    void getFunctionDetails(ErrorString*, const String&amp; functionId, RefPtr&lt;TypeBuilder::Debugger::FunctionDetails&gt;* result);
-    void getProperties(ErrorString*, const String&amp; objectId, bool ownProperties, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::Runtime::PropertyDescriptor&gt;&gt;* result);
-    void getInternalProperties(ErrorString*, const String&amp; objectId, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::Runtime::InternalPropertyDescriptor&gt;&gt;* result);
</del><ins>+                             RefPtr&lt;Inspector::TypeBuilder::Runtime::RemoteObject&gt;* result,
+                             Inspector::TypeBuilder::OptOutput&lt;bool&gt;* wasThrown);
+    void getFunctionDetails(ErrorString*, const String&amp; functionId, RefPtr&lt;Inspector::TypeBuilder::Debugger::FunctionDetails&gt;* result);
+    void getProperties(ErrorString*, const String&amp; objectId, bool ownProperties, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Runtime::PropertyDescriptor&gt;&gt;* result);
+    void getInternalProperties(ErrorString*, const String&amp; objectId, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Runtime::InternalPropertyDescriptor&gt;&gt;* result);
</ins><span class="cx">     Node* nodeForObjectId(const String&amp; objectId);
</span><span class="cx">     void releaseObject(const String&amp; objectId);
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(JAVASCRIPT_DEBUGGER)
</span><del>-    PassRefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::Debugger::CallFrame&gt;&gt; wrapCallFrames(const ScriptValue&amp;);
</del><ins>+    PassRefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Debugger::CallFrame&gt;&gt; wrapCallFrames(const Deprecated::ScriptValue&amp;);
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    PassRefPtr&lt;TypeBuilder::Runtime::RemoteObject&gt; wrapObject(const ScriptValue&amp;, const String&amp; groupName, bool generatePreview = false) const;
-    PassRefPtr&lt;TypeBuilder::Runtime::RemoteObject&gt; wrapTable(const ScriptValue&amp; table, const ScriptValue&amp; columns) const;
-    PassRefPtr&lt;TypeBuilder::Runtime::RemoteObject&gt; wrapNode(Node*, const String&amp; groupName);
-    ScriptValue findObjectById(const String&amp; objectId) const;
</del><ins>+    PassRefPtr&lt;Inspector::TypeBuilder::Runtime::RemoteObject&gt; wrapObject(const Deprecated::ScriptValue&amp;, const String&amp; groupName, bool generatePreview = false) const;
+    PassRefPtr&lt;Inspector::TypeBuilder::Runtime::RemoteObject&gt; wrapTable(const Deprecated::ScriptValue&amp; table, const Deprecated::ScriptValue&amp; columns) const;
+    PassRefPtr&lt;Inspector::TypeBuilder::Runtime::RemoteObject&gt; wrapNode(Node*, const String&amp; groupName);
+    Deprecated::ScriptValue findObjectById(const String&amp; objectId) const;
</ins><span class="cx"> 
</span><span class="cx">     void inspectNode(Node*);
</span><span class="cx">     void releaseObjectGroup(const String&amp;);
</span><span class="lines">@@ -101,9 +103,9 @@
</span><span class="cx"> private:
</span><span class="cx">     friend class InjectedScriptModule;
</span><span class="cx">     friend InjectedScript InjectedScriptManager::injectedScriptFor(JSC::ExecState*);
</span><del>-    InjectedScript(ScriptObject, InspectedStateAccessCheck);
</del><ins>+    InjectedScript(Deprecated::ScriptObject, InspectedStateAccessCheck);
</ins><span class="cx"> 
</span><del>-    ScriptValue nodeAsScriptValue(Node*);
</del><ins>+    Deprecated::ScriptValue nodeAsScriptValue(Node*);
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInjectedScriptBasecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InjectedScriptBase.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InjectedScriptBase.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InjectedScriptBase.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -35,13 +35,15 @@
</span><span class="cx"> #include &quot;InjectedScriptBase.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;InspectorInstrumentation.h&quot;
</span><del>-#include &quot;InspectorValues.h&quot;
-#include &quot;ScriptFunctionCall.h&quot;
</del><ins>+#include &lt;bindings/ScriptFunctionCall.h&gt;
+#include &lt;inspector/InspectorValues.h&gt;
</ins><span class="cx"> #include &lt;runtime/JSGlobalObject.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><del>-using WebCore::TypeBuilder::Runtime::RemoteObject;
</del><ins>+using Inspector::TypeBuilder::Runtime::RemoteObject;
</ins><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> InjectedScriptBase::InjectedScriptBase(const String&amp; name)
</span><span class="lines">@@ -50,14 +52,14 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-InjectedScriptBase::InjectedScriptBase(const String&amp; name, ScriptObject injectedScriptObject, InspectedStateAccessCheck accessCheck)
</del><ins>+InjectedScriptBase::InjectedScriptBase(const String&amp; name, Deprecated::ScriptObject injectedScriptObject, InspectedStateAccessCheck accessCheck)
</ins><span class="cx">     : m_name(name)
</span><span class="cx">     , m_injectedScriptObject(injectedScriptObject)
</span><span class="cx">     , m_inspectedStateAccessCheck(accessCheck)
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InjectedScriptBase::initialize(ScriptObject injectedScriptObject, InspectedStateAccessCheck accessCheck)
</del><ins>+void InjectedScriptBase::initialize(Deprecated::ScriptObject injectedScriptObject, InspectedStateAccessCheck accessCheck)
</ins><span class="cx"> {
</span><span class="cx">     m_injectedScriptObject = injectedScriptObject;
</span><span class="cx">     m_inspectedStateAccessCheck = accessCheck;
</span><span class="lines">@@ -68,12 +70,12 @@
</span><span class="cx">     return m_inspectedStateAccessCheck(m_injectedScriptObject.scriptState());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-const ScriptObject&amp; InjectedScriptBase::injectedScriptObject() const
</del><ins>+const Deprecated::ScriptObject&amp; InjectedScriptBase::injectedScriptObject() const
</ins><span class="cx"> {
</span><span class="cx">     return m_injectedScriptObject;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-ScriptValue InjectedScriptBase::callFunctionWithEvalEnabled(ScriptFunctionCall&amp; function, bool&amp; hadException) const
</del><ins>+Deprecated::ScriptValue InjectedScriptBase::callFunctionWithEvalEnabled(Deprecated::ScriptFunctionCall&amp; function, bool&amp; hadException) const
</ins><span class="cx"> {
</span><span class="cx">     ScriptExecutionContext* scriptExecutionContext = scriptExecutionContextFromExecState(m_injectedScriptObject.scriptState());
</span><span class="cx">     InspectorInstrumentationCookie cookie = InspectorInstrumentation::willCallFunction(scriptExecutionContext, name(), 1);
</span><span class="lines">@@ -87,7 +89,7 @@
</span><span class="cx">             scriptState-&gt;lexicalGlobalObject()-&gt;setEvalEnabled(true);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ScriptValue resultValue = function.call(hadException);
</del><ins>+    Deprecated::ScriptValue resultValue = function.call(hadException);
</ins><span class="cx"> 
</span><span class="cx">     if (evalIsDisabled)
</span><span class="cx">         scriptState-&gt;lexicalGlobalObject()-&gt;setEvalEnabled(false);
</span><span class="lines">@@ -96,7 +98,7 @@
</span><span class="cx">     return resultValue;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InjectedScriptBase::makeCall(ScriptFunctionCall&amp; function, RefPtr&lt;InspectorValue&gt;* result)
</del><ins>+void InjectedScriptBase::makeCall(Deprecated::ScriptFunctionCall&amp; function, RefPtr&lt;InspectorValue&gt;* result)
</ins><span class="cx"> {
</span><span class="cx">     if (hasNoValue() || !canAccessInspectedWindow()) {
</span><span class="cx">         *result = InspectorValue::null();
</span><span class="lines">@@ -104,7 +106,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     bool hadException = false;
</span><del>-    ScriptValue resultValue = callFunctionWithEvalEnabled(function, hadException);
</del><ins>+    Deprecated::ScriptValue resultValue = callFunctionWithEvalEnabled(function, hadException);
</ins><span class="cx"> 
</span><span class="cx">     ASSERT(!hadException);
</span><span class="cx">     if (!hadException) {
</span><span class="lines">@@ -115,7 +117,7 @@
</span><span class="cx">         *result = InspectorString::create(&quot;Exception while making a call.&quot;);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InjectedScriptBase::makeEvalCall(ErrorString* errorString, ScriptFunctionCall&amp; function, RefPtr&lt;TypeBuilder::Runtime::RemoteObject&gt;* objectResult, TypeBuilder::OptOutput&lt;bool&gt;* wasThrown)
</del><ins>+void InjectedScriptBase::makeEvalCall(ErrorString* errorString, Deprecated::ScriptFunctionCall&amp; function, RefPtr&lt;Inspector::TypeBuilder::Runtime::RemoteObject&gt;* objectResult, Inspector::TypeBuilder::OptOutput&lt;bool&gt;* wasThrown)
</ins><span class="cx"> {
</span><span class="cx">     RefPtr&lt;InspectorValue&gt; result;
</span><span class="cx">     makeCall(function, &amp;result);
</span><span class="lines">@@ -139,7 +141,7 @@
</span><span class="cx">         *errorString = &quot;Internal error: result is not a pair of value and wasThrown flag&quot;;
</span><span class="cx">         return;
</span><span class="cx">     }
</span><del>-    *objectResult = TypeBuilder::Runtime::RemoteObject::runtimeCast(resultObj);
</del><ins>+    *objectResult = Inspector::TypeBuilder::Runtime::RemoteObject::runtimeCast(resultObj);
</ins><span class="cx">     *wasThrown = wasThrownVal;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInjectedScriptBaseh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InjectedScriptBase.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InjectedScriptBase.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InjectedScriptBase.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -31,16 +31,21 @@
</span><span class="cx"> #ifndef InjectedScriptBase_h
</span><span class="cx"> #define InjectedScriptBase_h
</span><span class="cx"> 
</span><del>-#include &quot;InspectorTypeBuilder.h&quot;
-#include &quot;ScriptObject.h&quot;
</del><ins>+#include &quot;InspectorWebTypeBuilders.h&quot;
+#include &lt;bindings/ScriptObject.h&gt;
</ins><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><span class="cx"> #include &lt;wtf/RefPtr.h&gt;
</span><span class="cx"> 
</span><del>-namespace WebCore {
</del><ins>+namespace Deprecated {
+class ScriptFunctionCall;
+}
</ins><span class="cx"> 
</span><ins>+namespace Inspector {
</ins><span class="cx"> class InspectorValue;
</span><del>-class ScriptFunctionCall;
</del><ins>+}
</ins><span class="cx"> 
</span><ins>+namespace WebCore {
+
</ins><span class="cx"> typedef String ErrorString;
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><span class="lines">@@ -56,18 +61,18 @@
</span><span class="cx"> protected:
</span><span class="cx">     typedef bool (*InspectedStateAccessCheck)(JSC::ExecState*);
</span><span class="cx">     InjectedScriptBase(const String&amp; name);
</span><del>-    InjectedScriptBase(const String&amp; name, ScriptObject, InspectedStateAccessCheck);
</del><ins>+    InjectedScriptBase(const String&amp; name, Deprecated::ScriptObject, InspectedStateAccessCheck);
</ins><span class="cx"> 
</span><del>-    void initialize(ScriptObject, InspectedStateAccessCheck);
</del><ins>+    void initialize(Deprecated::ScriptObject, InspectedStateAccessCheck);
</ins><span class="cx">     bool canAccessInspectedWindow() const;
</span><del>-    const ScriptObject&amp; injectedScriptObject() const;
-    ScriptValue callFunctionWithEvalEnabled(ScriptFunctionCall&amp;, bool&amp; hadException) const;
-    void makeCall(ScriptFunctionCall&amp;, RefPtr&lt;InspectorValue&gt;* result);
-    void makeEvalCall(ErrorString*, ScriptFunctionCall&amp;, RefPtr&lt;TypeBuilder::Runtime::RemoteObject&gt;* result, TypeBuilder::OptOutput&lt;bool&gt;* wasThrown);
</del><ins>+    const Deprecated::ScriptObject&amp; injectedScriptObject() const;
+    Deprecated::ScriptValue callFunctionWithEvalEnabled(Deprecated::ScriptFunctionCall&amp;, bool&amp; hadException) const;
+    void makeCall(Deprecated::ScriptFunctionCall&amp;, RefPtr&lt;Inspector::InspectorValue&gt;* result);
+    void makeEvalCall(ErrorString*, Deprecated::ScriptFunctionCall&amp;, RefPtr&lt;Inspector::TypeBuilder::Runtime::RemoteObject&gt;* result, Inspector::TypeBuilder::OptOutput&lt;bool&gt;* wasThrown);
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     String m_name;
</span><del>-    ScriptObject m_injectedScriptObject;
</del><ins>+    Deprecated::ScriptObject m_injectedScriptObject;
</ins><span class="cx">     InspectedStateAccessCheck m_inspectedStateAccessCheck;
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInjectedScriptCanvasModulecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InjectedScriptCanvasModule.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InjectedScriptCanvasModule.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InjectedScriptCanvasModule.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -37,16 +37,20 @@
</span><span class="cx"> #include &quot;InjectedScript.h&quot;
</span><span class="cx"> #include &quot;InjectedScriptCanvasModuleSource.h&quot;
</span><span class="cx"> #include &quot;InjectedScriptManager.h&quot;
</span><del>-#include &quot;ScriptFunctionCall.h&quot;
-#include &quot;ScriptObject.h&quot;
</del><ins>+#include &quot;JSMainThreadExecState.h&quot;
+#include &lt;bindings/ScriptFunctionCall.h&gt;
+#include &lt;bindings/ScriptObject.h&gt;
+#include &lt;inspector/InspectorValues.h&gt;
</ins><span class="cx"> 
</span><del>-using WebCore::TypeBuilder::Array;
-using WebCore::TypeBuilder::Canvas::ResourceId;
-using WebCore::TypeBuilder::Canvas::ResourceInfo;
-using WebCore::TypeBuilder::Canvas::ResourceState;
-using WebCore::TypeBuilder::Canvas::TraceLog;
-using WebCore::TypeBuilder::Canvas::TraceLogId;
</del><ins>+using Inspector::TypeBuilder::Array;
+using Inspector::TypeBuilder::Canvas::ResourceId;
+using Inspector::TypeBuilder::Canvas::ResourceInfo;
+using Inspector::TypeBuilder::Canvas::ResourceState;
+using Inspector::TypeBuilder::Canvas::TraceLog;
+using Inspector::TypeBuilder::Canvas::TraceLogId;
</ins><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> InjectedScriptCanvasModule::InjectedScriptCanvasModule()
</span><span class="lines">@@ -66,34 +70,34 @@
</span><span class="cx">     return String(reinterpret_cast&lt;const char*&gt;(InjectedScriptCanvasModuleSource_js), sizeof(InjectedScriptCanvasModuleSource_js));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-ScriptObject InjectedScriptCanvasModule::wrapCanvas2DContext(const ScriptObject&amp; context)
</del><ins>+Deprecated::ScriptObject InjectedScriptCanvasModule::wrapCanvas2DContext(const Deprecated::ScriptObject&amp; context)
</ins><span class="cx"> {
</span><span class="cx">     return callWrapContextFunction(&quot;wrapCanvas2DContext&quot;, context);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEBGL)
</span><del>-ScriptObject InjectedScriptCanvasModule::wrapWebGLContext(const ScriptObject&amp; glContext)
</del><ins>+Deprecated::ScriptObject InjectedScriptCanvasModule::wrapWebGLContext(const Deprecated::ScriptObject&amp; glContext)
</ins><span class="cx"> {
</span><span class="cx">     return callWrapContextFunction(&quot;wrapWebGLContext&quot;, glContext);
</span><span class="cx"> }
</span><span class="cx"> #endif // ENABLE(WEBGL)
</span><span class="cx"> 
</span><del>-ScriptObject InjectedScriptCanvasModule::callWrapContextFunction(const String&amp; functionName, const ScriptObject&amp; context)
</del><ins>+Deprecated::ScriptObject InjectedScriptCanvasModule::callWrapContextFunction(const String&amp; functionName, const Deprecated::ScriptObject&amp; context)
</ins><span class="cx"> {
</span><del>-    ScriptFunctionCall function(injectedScriptObject(), functionName);
</del><ins>+    Deprecated::ScriptFunctionCall function(injectedScriptObject(), functionName, WebCore::functionCallHandlerFromAnyThread);
</ins><span class="cx">     function.appendArgument(context);
</span><span class="cx">     bool hadException = false;
</span><del>-    ScriptValue resultValue = callFunctionWithEvalEnabled(function, hadException);
</del><ins>+    Deprecated::ScriptValue resultValue = callFunctionWithEvalEnabled(function, hadException);
</ins><span class="cx">     if (hadException || resultValue.hasNoValue() || !resultValue.isObject()) {
</span><span class="cx">         ASSERT_NOT_REACHED();
</span><del>-        return ScriptObject();
</del><ins>+        return Deprecated::ScriptObject();
</ins><span class="cx">     }
</span><del>-    return ScriptObject(context.scriptState(), resultValue);
</del><ins>+    return Deprecated::ScriptObject(context.scriptState(), resultValue);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InjectedScriptCanvasModule::markFrameEnd()
</span><span class="cx"> {
</span><del>-    ScriptFunctionCall function(injectedScriptObject(), &quot;markFrameEnd&quot;);
</del><ins>+    Deprecated::ScriptFunctionCall function(injectedScriptObject(), &quot;markFrameEnd&quot;, WebCore::functionCallHandlerFromAnyThread);
</ins><span class="cx">     RefPtr&lt;InspectorValue&gt; resultValue;
</span><span class="cx">     makeCall(function, &amp;resultValue);
</span><span class="cx">     ASSERT(resultValue);
</span><span class="lines">@@ -111,7 +115,7 @@
</span><span class="cx"> 
</span><span class="cx"> void InjectedScriptCanvasModule::callStartCapturingFunction(const String&amp; functionName, ErrorString* errorString, TraceLogId* traceLogId)
</span><span class="cx"> {
</span><del>-    ScriptFunctionCall function(injectedScriptObject(), functionName);
</del><ins>+    Deprecated::ScriptFunctionCall function(injectedScriptObject(), functionName, WebCore::functionCallHandlerFromAnyThread);
</ins><span class="cx">     RefPtr&lt;InspectorValue&gt; resultValue;
</span><span class="cx">     makeCall(function, &amp;resultValue);
</span><span class="cx">     if (!resultValue || resultValue-&gt;type() != InspectorValue::TypeString || !resultValue-&gt;asString(traceLogId))
</span><span class="lines">@@ -130,7 +134,7 @@
</span><span class="cx"> 
</span><span class="cx"> void InjectedScriptCanvasModule::callVoidFunctionWithTraceLogIdArgument(const String&amp; functionName, ErrorString* errorString, const TraceLogId&amp; traceLogId)
</span><span class="cx"> {
</span><del>-    ScriptFunctionCall function(injectedScriptObject(), functionName);
</del><ins>+    Deprecated::ScriptFunctionCall function(injectedScriptObject(), functionName, WebCore::functionCallHandlerFromAnyThread);
</ins><span class="cx">     function.appendArgument(traceLogId);
</span><span class="cx">     bool hadException = false;
</span><span class="cx">     callFunctionWithEvalEnabled(function, hadException);
</span><span class="lines">@@ -141,7 +145,7 @@
</span><span class="cx"> 
</span><span class="cx"> void InjectedScriptCanvasModule::traceLog(ErrorString* errorString, const TraceLogId&amp; traceLogId, const int* startOffset, const int* maxLength, RefPtr&lt;TraceLog&gt;* traceLog)
</span><span class="cx"> {
</span><del>-    ScriptFunctionCall function(injectedScriptObject(), &quot;traceLog&quot;);
</del><ins>+    Deprecated::ScriptFunctionCall function(injectedScriptObject(), &quot;traceLog&quot;, WebCore::functionCallHandlerFromAnyThread);
</ins><span class="cx">     function.appendArgument(traceLogId);
</span><span class="cx">     if (startOffset)
</span><span class="cx">         function.appendArgument(*startOffset);
</span><span class="lines">@@ -159,7 +163,7 @@
</span><span class="cx"> 
</span><span class="cx"> void InjectedScriptCanvasModule::replayTraceLog(ErrorString* errorString, const TraceLogId&amp; traceLogId, int stepNo, RefPtr&lt;ResourceState&gt;* result)
</span><span class="cx"> {
</span><del>-    ScriptFunctionCall function(injectedScriptObject(), &quot;replayTraceLog&quot;);
</del><ins>+    Deprecated::ScriptFunctionCall function(injectedScriptObject(), &quot;replayTraceLog&quot;, WebCore::functionCallHandlerFromAnyThread);
</ins><span class="cx">     function.appendArgument(traceLogId);
</span><span class="cx">     function.appendArgument(stepNo);
</span><span class="cx">     RefPtr&lt;InspectorValue&gt; resultValue;
</span><span class="lines">@@ -174,7 +178,7 @@
</span><span class="cx"> 
</span><span class="cx"> void InjectedScriptCanvasModule::resourceInfo(ErrorString* errorString, const ResourceId&amp; resourceId, RefPtr&lt;ResourceInfo&gt;* result)
</span><span class="cx"> {
</span><del>-    ScriptFunctionCall function(injectedScriptObject(), &quot;resourceInfo&quot;);
</del><ins>+    Deprecated::ScriptFunctionCall function(injectedScriptObject(), &quot;resourceInfo&quot;, WebCore::functionCallHandlerFromAnyThread);
</ins><span class="cx">     function.appendArgument(resourceId);
</span><span class="cx">     RefPtr&lt;InspectorValue&gt; resultValue;
</span><span class="cx">     makeCall(function, &amp;resultValue);
</span><span class="lines">@@ -188,7 +192,7 @@
</span><span class="cx"> 
</span><span class="cx"> void InjectedScriptCanvasModule::resourceState(ErrorString* errorString, const TraceLogId&amp; traceLogId, const ResourceId&amp; resourceId, RefPtr&lt;ResourceState&gt;* result)
</span><span class="cx"> {
</span><del>-    ScriptFunctionCall function(injectedScriptObject(), &quot;resourceState&quot;);
</del><ins>+    Deprecated::ScriptFunctionCall function(injectedScriptObject(), &quot;resourceState&quot;, WebCore::functionCallHandlerFromAnyThread);
</ins><span class="cx">     function.appendArgument(traceLogId);
</span><span class="cx">     function.appendArgument(resourceId);
</span><span class="cx">     RefPtr&lt;InspectorValue&gt; resultValue;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInjectedScriptCanvasModuleh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InjectedScriptCanvasModule.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InjectedScriptCanvasModule.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InjectedScriptCanvasModule.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -35,10 +35,13 @@
</span><span class="cx"> #include &quot;ScriptState.h&quot;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><ins>+namespace Deprecated {
+class ScriptObject;
+}
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class InjectedScriptManager;
</span><del>-class ScriptObject;
</del><span class="cx"> 
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><span class="cx"> 
</span><span class="lines">@@ -50,23 +53,23 @@
</span><span class="cx"> 
</span><span class="cx">     static InjectedScriptCanvasModule moduleForState(InjectedScriptManager*, JSC::ExecState*);
</span><span class="cx"> 
</span><del>-    ScriptObject wrapCanvas2DContext(const ScriptObject&amp;);
</del><ins>+    Deprecated::ScriptObject wrapCanvas2DContext(const Deprecated::ScriptObject&amp;);
</ins><span class="cx"> #if ENABLE(WEBGL)
</span><del>-    ScriptObject wrapWebGLContext(const ScriptObject&amp;);
</del><ins>+    Deprecated::ScriptObject wrapWebGLContext(const Deprecated::ScriptObject&amp;);
</ins><span class="cx"> #endif
</span><span class="cx">     void markFrameEnd();
</span><span class="cx"> 
</span><del>-    void captureFrame(ErrorString*, TypeBuilder::Canvas::TraceLogId*);
-    void startCapturing(ErrorString*, TypeBuilder::Canvas::TraceLogId*);
-    void stopCapturing(ErrorString*, const TypeBuilder::Canvas::TraceLogId&amp;);
-    void dropTraceLog(ErrorString*, const TypeBuilder::Canvas::TraceLogId&amp;);
-    void traceLog(ErrorString*, const String&amp;, const int*, const int*, RefPtr&lt;TypeBuilder::Canvas::TraceLog&gt;*);
-    void replayTraceLog(ErrorString*, const TypeBuilder::Canvas::TraceLogId&amp;, int, RefPtr&lt;TypeBuilder::Canvas::ResourceState&gt;*);
-    void resourceInfo(ErrorString*, const TypeBuilder::Canvas::ResourceId&amp;, RefPtr&lt;TypeBuilder::Canvas::ResourceInfo&gt;*);
-    void resourceState(ErrorString*, const TypeBuilder::Canvas::TraceLogId&amp;, const TypeBuilder::Canvas::ResourceId&amp;, RefPtr&lt;TypeBuilder::Canvas::ResourceState&gt;*);
</del><ins>+    void captureFrame(ErrorString*, Inspector::TypeBuilder::Canvas::TraceLogId*);
+    void startCapturing(ErrorString*, Inspector::TypeBuilder::Canvas::TraceLogId*);
+    void stopCapturing(ErrorString*, const Inspector::TypeBuilder::Canvas::TraceLogId&amp;);
+    void dropTraceLog(ErrorString*, const Inspector::TypeBuilder::Canvas::TraceLogId&amp;);
+    void traceLog(ErrorString*, const String&amp;, const int*, const int*, RefPtr&lt;Inspector::TypeBuilder::Canvas::TraceLog&gt;*);
+    void replayTraceLog(ErrorString*, const Inspector::TypeBuilder::Canvas::TraceLogId&amp;, int, RefPtr&lt;Inspector::TypeBuilder::Canvas::ResourceState&gt;*);
+    void resourceInfo(ErrorString*, const Inspector::TypeBuilder::Canvas::ResourceId&amp;, RefPtr&lt;Inspector::TypeBuilder::Canvas::ResourceInfo&gt;*);
+    void resourceState(ErrorString*, const Inspector::TypeBuilder::Canvas::TraceLogId&amp;, const Inspector::TypeBuilder::Canvas::ResourceId&amp;, RefPtr&lt;Inspector::TypeBuilder::Canvas::ResourceState&gt;*);
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    ScriptObject callWrapContextFunction(const String&amp;, const ScriptObject&amp;);
</del><ins>+    Deprecated::ScriptObject callWrapContextFunction(const String&amp;, const Deprecated::ScriptObject&amp;);
</ins><span class="cx">     void callStartCapturingFunction(const String&amp;, ErrorString*, String*);
</span><span class="cx">     void callVoidFunctionWithTraceLogIdArgument(const String&amp;, ErrorString*, const String&amp;);
</span><span class="cx"> };
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInjectedScriptHostcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InjectedScriptHost.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InjectedScriptHost.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InjectedScriptHost.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -47,19 +47,20 @@
</span><span class="cx"> #include &quot;InspectorDatabaseAgent.h&quot;
</span><span class="cx"> #include &quot;InspectorDebuggerAgent.h&quot;
</span><span class="cx"> #include &quot;InspectorFrontend.h&quot;
</span><del>-#include &quot;InspectorValues.h&quot;
</del><span class="cx"> #include &quot;Pasteboard.h&quot;
</span><span class="cx"> #include &quot;Storage.h&quot;
</span><ins>+#include &quot;markup.h&quot;
+#include &lt;bindings/ScriptValue.h&gt;
+#include &lt;inspector/InspectorValues.h&gt;
+#include &lt;wtf/RefPtr.h&gt;
+#include &lt;wtf/StdLibExtras.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(SQL_DATABASE)
</span><span class="cx"> #include &quot;Database.h&quot;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-#include &quot;markup.h&quot;
</del><ins>+using namespace Inspector;
</ins><span class="cx"> 
</span><del>-#include &lt;wtf/RefPtr.h&gt;
-#include &lt;wtf/StdLibExtras.h&gt;
-
</del><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> PassRefPtr&lt;InjectedScriptHost&gt; InjectedScriptHost::create()
</span><span class="lines">@@ -97,7 +98,7 @@
</span><span class="cx"> void InjectedScriptHost::inspectImpl(PassRefPtr&lt;InspectorValue&gt; object, PassRefPtr&lt;InspectorValue&gt; hints)
</span><span class="cx"> {
</span><span class="cx">     if (m_inspectorAgent) {
</span><del>-        RefPtr&lt;TypeBuilder::Runtime::RemoteObject&gt; remoteObject = TypeBuilder::Runtime::RemoteObject::runtimeCast(object);
</del><ins>+        RefPtr&lt;Inspector::TypeBuilder::Runtime::RemoteObject&gt; remoteObject = Inspector::TypeBuilder::Runtime::RemoteObject::runtimeCast(object);
</ins><span class="cx">         m_inspectorAgent-&gt;inspect(remoteObject, hints-&gt;asObject());
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="lines">@@ -121,9 +122,9 @@
</span><span class="cx">     Pasteboard::createForCopyAndPaste()-&gt;writePlainText(text, Pasteboard::CannotSmartReplace);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-ScriptValue InjectedScriptHost::InspectableObject::get(JSC::ExecState*)
</del><ins>+Deprecated::ScriptValue InjectedScriptHost::InspectableObject::get(JSC::ExecState*)
</ins><span class="cx"> {
</span><del>-    return ScriptValue();
</del><ins>+    return Deprecated::ScriptValue();
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> void InjectedScriptHost::addInspectedObject(PassOwnPtr&lt;InjectedScriptHost::InspectableObject&gt; object)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInjectedScriptHosth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InjectedScriptHost.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InjectedScriptHost.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InjectedScriptHost.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -36,6 +36,15 @@
</span><span class="cx"> #include &lt;wtf/RefCounted.h&gt;
</span><span class="cx"> #include &lt;wtf/Vector.h&gt;
</span><span class="cx"> 
</span><ins>+namespace Deprecated {
+class ScriptValue;
+}
+
+namespace Inspector {
+class InspectorObject;
+class InspectorValue;
+}
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class Database;
</span><span class="lines">@@ -46,12 +55,8 @@
</span><span class="cx"> class InspectorDOMStorageAgent;
</span><span class="cx"> class InspectorDatabaseAgent;
</span><span class="cx"> class InspectorDebuggerAgent;
</span><del>-class InspectorObject;
-class InspectorValue;
</del><span class="cx"> class Node;
</span><span class="cx"> class ScriptDebugServer;
</span><del>-class ScriptObject;
-class ScriptValue;
</del><span class="cx"> class Storage;
</span><span class="cx"> 
</span><span class="cx"> struct EventListenerInfo;
</span><span class="lines">@@ -85,22 +90,22 @@
</span><span class="cx"> #endif
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    static Node* scriptValueAsNode(ScriptValue);
-    static ScriptValue nodeAsScriptValue(JSC::ExecState*, Node*);
</del><ins>+    static Node* scriptValueAsNode(Deprecated::ScriptValue);
+    static Deprecated::ScriptValue nodeAsScriptValue(JSC::ExecState*, Node*);
</ins><span class="cx"> 
</span><span class="cx">     void disconnect();
</span><span class="cx"> 
</span><span class="cx">     class InspectableObject {
</span><span class="cx">         WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx">     public:
</span><del>-        virtual ScriptValue get(JSC::ExecState*);
</del><ins>+        virtual Deprecated::ScriptValue get(JSC::ExecState*);
</ins><span class="cx">         virtual ~InspectableObject() { }
</span><span class="cx">     };
</span><span class="cx">     void addInspectedObject(PassOwnPtr&lt;InspectableObject&gt;);
</span><span class="cx">     void clearInspectedObjects();
</span><span class="cx">     InspectableObject* inspectedObject(unsigned int num);
</span><span class="cx"> 
</span><del>-    void inspectImpl(PassRefPtr&lt;InspectorValue&gt; objectToInspect, PassRefPtr&lt;InspectorValue&gt; hints);
</del><ins>+    void inspectImpl(PassRefPtr&lt;Inspector::InspectorValue&gt; objectToInspect, PassRefPtr&lt;Inspector::InspectorValue&gt; hints);
</ins><span class="cx">     void getEventListenersImpl(Node*, Vector&lt;EventListenerInfo&gt;&amp; listenersArray);
</span><span class="cx"> 
</span><span class="cx">     void clearConsoleMessages();
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInjectedScriptManagercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InjectedScriptManager.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InjectedScriptManager.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InjectedScriptManager.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -37,10 +37,12 @@
</span><span class="cx"> #include &quot;InjectedScript.h&quot;
</span><span class="cx"> #include &quot;InjectedScriptHost.h&quot;
</span><span class="cx"> #include &quot;InjectedScriptSource.h&quot;
</span><del>-#include &quot;InspectorValues.h&quot;
-#include &quot;ScriptObject.h&quot;
</del><ins>+#include &lt;bindings/ScriptObject.h&gt;
+#include &lt;inspector/InspectorValues.h&gt;
</ins><span class="cx"> #include &lt;wtf/PassOwnPtr.h&gt;
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> PassOwnPtr&lt;InjectedScriptManager&gt; InjectedScriptManager::createForPage()
</span><span class="lines">@@ -173,7 +175,7 @@
</span><span class="cx">         return InjectedScript();
</span><span class="cx"> 
</span><span class="cx">     int id = injectedScriptIdFor(inspectedExecState);
</span><del>-    ScriptObject injectedScriptObject = createInjectedScript(injectedScriptSource(), inspectedExecState, id);
</del><ins>+    Deprecated::ScriptObject injectedScriptObject = createInjectedScript(injectedScriptSource(), inspectedExecState, id);
</ins><span class="cx">     InjectedScript result(injectedScriptObject, m_inspectedStateAccessCheck);
</span><span class="cx">     m_idToInjectedScript.set(id, result);
</span><span class="cx">     return result;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInjectedScriptManagerh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InjectedScriptManager.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InjectedScriptManager.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InjectedScriptManager.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -35,13 +35,19 @@
</span><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><ins>+namespace Deprecated {
+class ScriptObject;
+}
+
+namespace Inspector {
+class InspectorObject;
+}
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class DOMWindow;
</span><span class="cx"> class InjectedScript;
</span><span class="cx"> class InjectedScriptHost;
</span><del>-class InspectorObject;
-class ScriptObject;
</del><span class="cx"> 
</span><span class="cx"> class InjectedScriptManager {
</span><span class="cx">     WTF_MAKE_NONCOPYABLE(InjectedScriptManager); WTF_MAKE_FAST_ALLOCATED;
</span><span class="lines">@@ -69,7 +75,7 @@
</span><span class="cx">     explicit InjectedScriptManager(InspectedStateAccessCheck);
</span><span class="cx"> 
</span><span class="cx">     String injectedScriptSource();
</span><del>-    ScriptObject createInjectedScript(const String&amp; source, JSC::ExecState*, int id);
</del><ins>+    Deprecated::ScriptObject createInjectedScript(const String&amp; source, JSC::ExecState*, int id);
</ins><span class="cx"> 
</span><span class="cx">     static bool canAccessInspectedWindow(JSC::ExecState*);
</span><span class="cx">     static bool canAccessInspectedWorkerGlobalScope(JSC::ExecState*);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInjectedScriptModulecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InjectedScriptModule.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InjectedScriptModule.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InjectedScriptModule.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -36,9 +36,12 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;InjectedScript.h&quot;
</span><span class="cx"> #include &quot;InjectedScriptManager.h&quot;
</span><del>-#include &quot;ScriptFunctionCall.h&quot;
-#include &quot;ScriptObject.h&quot;
</del><ins>+#include &quot;JSMainThreadExecState.h&quot;
+#include &lt;bindings/ScriptFunctionCall.h&gt;
+#include &lt;bindings/ScriptObject.h&gt;
</ins><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> InjectedScriptModule::InjectedScriptModule(const String&amp; name)
</span><span class="lines">@@ -54,13 +57,13 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     // FIXME: Make the InjectedScript a module itself.
</span><del>-    ScriptFunctionCall function(injectedScript.injectedScriptObject(), &quot;module&quot;);
</del><ins>+    Deprecated::ScriptFunctionCall function(injectedScript.injectedScriptObject(), &quot;module&quot;, WebCore::functionCallHandlerFromAnyThread);
</ins><span class="cx">     function.appendArgument(name());
</span><span class="cx">     bool hadException = false;
</span><del>-    ScriptValue resultValue = injectedScript.callFunctionWithEvalEnabled(function, hadException);
</del><ins>+    Deprecated::ScriptValue resultValue = injectedScript.callFunctionWithEvalEnabled(function, hadException);
</ins><span class="cx">     ASSERT(!hadException);
</span><span class="cx">     if (hadException || resultValue.hasNoValue() || !resultValue.isObject()) {
</span><del>-        ScriptFunctionCall function(injectedScript.injectedScriptObject(), &quot;injectModule&quot;);
</del><ins>+        Deprecated::ScriptFunctionCall function(injectedScript.injectedScriptObject(), &quot;injectModule&quot;, WebCore::functionCallHandlerFromAnyThread);
</ins><span class="cx">         function.appendArgument(name());
</span><span class="cx">         function.appendArgument(source());
</span><span class="cx">         resultValue = injectedScript.callFunctionWithEvalEnabled(function, hadException);
</span><span class="lines">@@ -70,7 +73,7 @@
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ScriptObject moduleObject(scriptState, resultValue);
</del><ins>+    Deprecated::ScriptObject moduleObject(scriptState, resultValue);
</ins><span class="cx">     initialize(moduleObject, injectedScriptManager-&gt;inspectedStateAccessCheck());
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorAgentcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorAgent.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorAgent.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorAgent.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -42,23 +42,24 @@
</span><span class="cx"> #include &quot;InspectorController.h&quot;
</span><span class="cx"> #include &quot;InspectorFrontend.h&quot;
</span><span class="cx"> #include &quot;InspectorInstrumentation.h&quot;
</span><del>-#include &quot;InspectorValues.h&quot;
</del><span class="cx"> #include &quot;InstrumentingAgents.h&quot;
</span><span class="cx"> #include &quot;MainFrame.h&quot;
</span><span class="cx"> #include &quot;Page.h&quot;
</span><span class="cx"> #include &quot;ResourceRequest.h&quot;
</span><span class="cx"> #include &quot;ScriptController.h&quot;
</span><del>-#include &quot;ScriptFunctionCall.h&quot;
-#include &quot;ScriptObject.h&quot;
</del><span class="cx"> #include &quot;SecurityOrigin.h&quot;
</span><span class="cx"> #include &quot;Settings.h&quot;
</span><ins>+#include &lt;bindings/ScriptValue.h&gt;
+#include &lt;inspector/InspectorValues.h&gt;
</ins><span class="cx"> #include &lt;wtf/PassRefPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/RefPtr.h&gt;
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> InspectorAgent::InspectorAgent(Page* page, InjectedScriptManager* injectedScriptManager, InstrumentingAgents* instrumentingAgents)
</span><del>-    : InspectorBaseAgent(ASCIILiteral(&quot;Inspector&quot;), instrumentingAgents)
</del><ins>+    : InspectorAgentBase(ASCIILiteral(&quot;Inspector&quot;), instrumentingAgents)
</ins><span class="cx">     , m_inspectedPage(page)
</span><span class="cx">     , m_injectedScriptManager(injectedScriptManager)
</span><span class="cx">     , m_enabled(false)
</span><span class="lines">@@ -93,7 +94,7 @@
</span><span class="cx">     frame-&gt;script().executeScript(scriptSource.toString());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorAgent::didCreateFrontendAndBackend(InspectorFrontendChannel* frontendChannel, InspectorBackendDispatcher* backendDispatcher)
</del><ins>+void InspectorAgent::didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel* frontendChannel, InspectorBackendDispatcher* backendDispatcher)
</ins><span class="cx"> {
</span><span class="cx">     m_frontendDispatcher = std::make_unique&lt;InspectorInspectorFrontendDispatcher&gt;(frontendChannel);
</span><span class="cx">     m_backendDispatcher = InspectorInspectorBackendDispatcher::create(backendDispatcher, this);
</span><span class="lines">@@ -150,7 +151,7 @@
</span><span class="cx">     m_injectedScriptForOrigin.set(origin, source);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorAgent::inspect(PassRefPtr&lt;TypeBuilder::Runtime::RemoteObject&gt; objectToInspect, PassRefPtr&lt;InspectorObject&gt; hints)
</del><ins>+void InspectorAgent::inspect(PassRefPtr&lt;Inspector::TypeBuilder::Runtime::RemoteObject&gt; objectToInspect, PassRefPtr&lt;InspectorObject&gt; hints)
</ins><span class="cx"> {
</span><span class="cx">     if (m_enabled &amp;&amp; m_frontendDispatcher) {
</span><span class="cx">         m_frontendDispatcher-&gt;inspect(objectToInspect, hints);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorAgenth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorAgent.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorAgent.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorAgent.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -30,11 +30,17 @@
</span><span class="cx"> #ifndef InspectorAgent_h
</span><span class="cx"> #define InspectorAgent_h
</span><span class="cx"> 
</span><del>-#include &quot;InspectorBaseAgent.h&quot;
</del><ins>+#include &quot;InspectorBackendDispatchers.h&quot;
+#include &quot;InspectorWebAgentBase.h&quot;
+#include &lt;wtf/Forward.h&gt;
</ins><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="cx"> #include &lt;wtf/PassOwnPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/Vector.h&gt;
</span><span class="cx"> 
</span><ins>+namespace Inspector {
+class InspectorObject;
+}
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class DOMWrapperWorld;
</span><span class="lines">@@ -42,13 +48,12 @@
</span><span class="cx"> class Frame;
</span><span class="cx"> class InjectedScriptManager;
</span><span class="cx"> class InspectorInspectorFrontendDispatcher;
</span><del>-class InspectorObject;
</del><span class="cx"> class InstrumentingAgents;
</span><span class="cx"> class Page;
</span><span class="cx"> 
</span><span class="cx"> typedef String ErrorString;
</span><span class="cx"> 
</span><del>-class InspectorAgent : public InspectorBaseAgent, public InspectorInspectorBackendDispatcherHandler {
</del><ins>+class InspectorAgent : public InspectorAgentBase, public InspectorInspectorBackendDispatcherHandler {
</ins><span class="cx">     WTF_MAKE_NONCOPYABLE(InspectorAgent);
</span><span class="cx"> public:
</span><span class="cx">     static PassOwnPtr&lt;InspectorAgent&gt; create(Page* page, InjectedScriptManager* injectedScriptManager, InstrumentingAgents* instrumentingAgents)
</span><span class="lines">@@ -64,7 +69,7 @@
</span><span class="cx">     void enable(ErrorString*);
</span><span class="cx">     void disable(ErrorString*);
</span><span class="cx"> 
</span><del>-    virtual void didCreateFrontendAndBackend(InspectorFrontendChannel*, InspectorBackendDispatcher*) OVERRIDE;
</del><ins>+    virtual void didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel*, Inspector::InspectorBackendDispatcher*) OVERRIDE;
</ins><span class="cx">     virtual void willDestroyFrontendAndBackend() OVERRIDE;
</span><span class="cx"> 
</span><span class="cx">     void didClearWindowObjectInWorld(Frame*, DOMWrapperWorld&amp;);
</span><span class="lines">@@ -79,7 +84,7 @@
</span><span class="cx"> 
</span><span class="cx">     void setInjectedScriptForOrigin(const String&amp; origin, const String&amp; source);
</span><span class="cx"> 
</span><del>-    void inspect(PassRefPtr&lt;TypeBuilder::Runtime::RemoteObject&gt; objectToInspect, PassRefPtr&lt;InspectorObject&gt; hints);
</del><ins>+    void inspect(PassRefPtr&lt;Inspector::TypeBuilder::Runtime::RemoteObject&gt; objectToInspect, PassRefPtr&lt;Inspector::InspectorObject&gt; hints);
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     InspectorAgent(Page*, InjectedScriptManager*, InstrumentingAgents*);
</span><span class="lines">@@ -90,7 +95,7 @@
</span><span class="cx">     InjectedScriptManager* m_injectedScriptManager;
</span><span class="cx"> 
</span><span class="cx">     Vector&lt;pair&lt;long, String&gt;&gt; m_pendingEvaluateTestCommands;
</span><del>-    pair&lt;RefPtr&lt;TypeBuilder::Runtime::RemoteObject&gt;, RefPtr&lt;InspectorObject&gt;&gt; m_pendingInspectData;
</del><ins>+    pair&lt;RefPtr&lt;Inspector::TypeBuilder::Runtime::RemoteObject&gt;, RefPtr&lt;Inspector::InspectorObject&gt;&gt; m_pendingInspectData;
</ins><span class="cx">     HashMap&lt;String, String&gt; m_injectedScriptForOrigin;
</span><span class="cx"> 
</span><span class="cx">     bool m_enabled;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorAgentRegistrycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorAgentRegistry.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorAgentRegistry.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorAgentRegistry.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,60 +0,0 @@
</span><del>-/*
- * Copyright (C) 2013 Apple Inc. All rights reserved.
- * Copyright (C) 2011 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include &quot;config.h&quot;
-
-#if ENABLE(INSPECTOR)
-
-#include &quot;InspectorAgentRegistry.h&quot;
-
-namespace WebCore {
-
-void InspectorAgentRegistry::append(PassOwnPtr&lt;InspectorBaseAgent&gt; agent)
-{
-    m_agents.append(agent);
-}
-
-void InspectorAgentRegistry::didCreateFrontendAndBackend(InspectorFrontendChannel* frontendChannel, InspectorBackendDispatcher* backendDispatcher)
-{
-    for (size_t i = 0; i &lt; m_agents.size(); i++)
-        m_agents[i]-&gt;didCreateFrontendAndBackend(frontendChannel, backendDispatcher);
-}
-
-void InspectorAgentRegistry::willDestroyFrontendAndBackend()
-{
-    for (size_t i = 0; i &lt; m_agents.size(); i++)
-        m_agents[i]-&gt;willDestroyFrontendAndBackend();
-}
-
-void InspectorAgentRegistry::discardAgents()
-{
-    for (size_t i = 0; i &lt; m_agents.size(); i++)
-        m_agents[i]-&gt;discardAgent();
-}
-
-} // namespace WebCore
-
-#endif // ENABLE(INSPECTOR)
</del></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorAgentRegistryh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorAgentRegistry.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorAgentRegistry.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorAgentRegistry.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,52 +0,0 @@
</span><del>-/*
- * Copyright (C) 2013 Apple Inc. All rights reserved.
- * Copyright (C) 2011 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef InspectorAgentRegistry_h
-#define InspectorAgentRegistry_h
-
-#include &quot;InspectorBaseAgent.h&quot;
-#include &lt;wtf/PassOwnPtr.h&gt;
-#include &lt;wtf/Vector.h&gt;
-
-namespace WebCore {
-
-class InspectorBackendDispatcher;
-
-class InspectorAgentRegistry {
-public:
-    void append(PassOwnPtr&lt;InspectorBaseAgent&gt;);
-
-    void didCreateFrontendAndBackend(InspectorFrontendChannel*, InspectorBackendDispatcher*);
-    void willDestroyFrontendAndBackend();
-    void discardAgents();
-
-private:
-    Vector&lt;OwnPtr&lt;InspectorBaseAgent&gt;&gt; m_agents;
-};
-
-} // namespace WebCore
-
-#endif // !defined(InspectorAgentRegistry_h)
</del></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorAllInOnecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorAllInOne.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorAllInOne.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorAllInOne.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -37,9 +37,7 @@
</span><span class="cx"> #include &quot;InjectedScriptManager.cpp&quot;
</span><span class="cx"> #include &quot;InjectedScriptModule.cpp&quot;
</span><span class="cx"> #include &quot;InspectorAgent.cpp&quot;
</span><del>-#include &quot;InspectorAgentRegistry.cpp&quot;
</del><span class="cx"> #include &quot;InspectorApplicationCacheAgent.cpp&quot;
</span><del>-#include &quot;InspectorBackendDispatcher.cpp&quot;
</del><span class="cx"> #include &quot;InspectorCSSAgent.cpp&quot;
</span><span class="cx"> #include &quot;InspectorCanvasAgent.cpp&quot;
</span><span class="cx"> #include &quot;InspectorClient.cpp&quot;
</span><span class="lines">@@ -70,7 +68,6 @@
</span><span class="cx"> #include &quot;InspectorStyleSheet.cpp&quot;
</span><span class="cx"> #include &quot;InspectorStyleTextEditor.cpp&quot;
</span><span class="cx"> #include &quot;InspectorTimelineAgent.cpp&quot;
</span><del>-#include &quot;InspectorValues.cpp&quot;
</del><span class="cx"> #include &quot;InspectorWorkerAgent.cpp&quot;
</span><span class="cx"> #include &quot;InstrumentingAgents.cpp&quot;
</span><span class="cx"> #include &quot;NetworkResourcesData.cpp&quot;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorApplicationCacheAgentcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorApplicationCacheAgent.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorApplicationCacheAgent.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorApplicationCacheAgent.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -36,21 +36,23 @@
</span><span class="cx"> #include &quot;InspectorAgent.h&quot;
</span><span class="cx"> #include &quot;InspectorFrontend.h&quot;
</span><span class="cx"> #include &quot;InspectorPageAgent.h&quot;
</span><del>-#include &quot;InspectorValues.h&quot;
</del><span class="cx"> #include &quot;InstrumentingAgents.h&quot;
</span><span class="cx"> #include &quot;NetworkStateNotifier.h&quot;
</span><span class="cx"> #include &quot;Page.h&quot;
</span><span class="cx"> #include &quot;ResourceResponse.h&quot;
</span><ins>+#include &lt;inspector/InspectorValues.h&gt;
</ins><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> InspectorApplicationCacheAgent::InspectorApplicationCacheAgent(InstrumentingAgents* instrumentingAgents, InspectorPageAgent* pageAgent)
</span><del>-    : InspectorBaseAgent(ASCIILiteral(&quot;ApplicationCache&quot;), instrumentingAgents)
</del><ins>+    : InspectorAgentBase(ASCIILiteral(&quot;ApplicationCache&quot;), instrumentingAgents)
</ins><span class="cx">     , m_pageAgent(pageAgent)
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorApplicationCacheAgent::didCreateFrontendAndBackend(InspectorFrontendChannel* frontendChannel, InspectorBackendDispatcher* backendDispatcher)
</del><ins>+void InspectorApplicationCacheAgent::didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel* frontendChannel, InspectorBackendDispatcher* backendDispatcher)
</ins><span class="cx"> {
</span><span class="cx">     m_frontendDispatcher = std::make_unique&lt;InspectorApplicationCacheFrontendDispatcher&gt;(frontendChannel);
</span><span class="cx">     m_backendDispatcher = InspectorApplicationCacheBackendDispatcher::create(backendDispatcher, this);
</span><span class="lines">@@ -92,9 +94,9 @@
</span><span class="cx">     m_frontendDispatcher-&gt;networkStateUpdated(isNowOnline);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorApplicationCacheAgent::getFramesWithManifests(ErrorString*, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::ApplicationCache::FrameWithManifest&gt;&gt;&amp; result)
</del><ins>+void InspectorApplicationCacheAgent::getFramesWithManifests(ErrorString*, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::ApplicationCache::FrameWithManifest&gt;&gt;&amp; result)
</ins><span class="cx"> {
</span><del>-    result = TypeBuilder::Array&lt;TypeBuilder::ApplicationCache::FrameWithManifest&gt;::create();
</del><ins>+    result = Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::ApplicationCache::FrameWithManifest&gt;::create();
</ins><span class="cx"> 
</span><span class="cx">     Frame* mainFrame = m_pageAgent-&gt;mainFrame();
</span><span class="cx">     for (Frame* frame = mainFrame; frame; frame = frame-&gt;tree().traverseNext(mainFrame)) {
</span><span class="lines">@@ -106,7 +108,7 @@
</span><span class="cx">         ApplicationCacheHost::CacheInfo info = host-&gt;applicationCacheInfo();
</span><span class="cx">         String manifestURL = info.m_manifest.string();
</span><span class="cx">         if (!manifestURL.isEmpty()) {
</span><del>-            RefPtr&lt;TypeBuilder::ApplicationCache::FrameWithManifest&gt; value = TypeBuilder::ApplicationCache::FrameWithManifest::create()
</del><ins>+            RefPtr&lt;Inspector::TypeBuilder::ApplicationCache::FrameWithManifest&gt; value = Inspector::TypeBuilder::ApplicationCache::FrameWithManifest::create()
</ins><span class="cx">                 .setFrameId(m_pageAgent-&gt;frameId(frame))
</span><span class="cx">                 .setManifestURL(manifestURL)
</span><span class="cx">                 .setStatus(static_cast&lt;int&gt;(host-&gt;status()));
</span><span class="lines">@@ -134,7 +136,7 @@
</span><span class="cx">     *manifestURL = info.m_manifest.string();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorApplicationCacheAgent::getApplicationCacheForFrame(ErrorString* errorString, const String&amp; frameId, RefPtr&lt;TypeBuilder::ApplicationCache::ApplicationCache&gt;&amp; applicationCache)
</del><ins>+void InspectorApplicationCacheAgent::getApplicationCacheForFrame(ErrorString* errorString, const String&amp; frameId, RefPtr&lt;Inspector::TypeBuilder::ApplicationCache::ApplicationCache&gt;&amp; applicationCache)
</ins><span class="cx"> {
</span><span class="cx">     DocumentLoader* documentLoader = assertFrameWithDocumentLoader(errorString, frameId);
</span><span class="cx">     if (!documentLoader)
</span><span class="lines">@@ -149,9 +151,9 @@
</span><span class="cx">     applicationCache = buildObjectForApplicationCache(resources, info);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::ApplicationCache::ApplicationCache&gt; InspectorApplicationCacheAgent::buildObjectForApplicationCache(const ApplicationCacheHost::ResourceInfoList&amp; applicationCacheResources, const ApplicationCacheHost::CacheInfo&amp; applicationCacheInfo)
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::ApplicationCache::ApplicationCache&gt; InspectorApplicationCacheAgent::buildObjectForApplicationCache(const ApplicationCacheHost::ResourceInfoList&amp; applicationCacheResources, const ApplicationCacheHost::CacheInfo&amp; applicationCacheInfo)
</ins><span class="cx"> {
</span><del>-    return TypeBuilder::ApplicationCache::ApplicationCache::create()
</del><ins>+    return Inspector::TypeBuilder::ApplicationCache::ApplicationCache::create()
</ins><span class="cx">         .setManifestURL(applicationCacheInfo.m_manifest.string())
</span><span class="cx">         .setSize(applicationCacheInfo.m_size)
</span><span class="cx">         .setCreationTime(applicationCacheInfo.m_creationTime)
</span><span class="lines">@@ -160,9 +162,9 @@
</span><span class="cx">         .release();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::ApplicationCache::ApplicationCacheResource&gt;&gt; InspectorApplicationCacheAgent::buildArrayForApplicationCacheResources(const ApplicationCacheHost::ResourceInfoList&amp; applicationCacheResources)
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::ApplicationCache::ApplicationCacheResource&gt;&gt; InspectorApplicationCacheAgent::buildArrayForApplicationCacheResources(const ApplicationCacheHost::ResourceInfoList&amp; applicationCacheResources)
</ins><span class="cx"> {
</span><del>-    RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::ApplicationCache::ApplicationCacheResource&gt;&gt; resources = TypeBuilder::Array&lt;TypeBuilder::ApplicationCache::ApplicationCacheResource&gt;::create();
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::ApplicationCache::ApplicationCacheResource&gt;&gt; resources = Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::ApplicationCache::ApplicationCacheResource&gt;::create();
</ins><span class="cx"> 
</span><span class="cx">     ApplicationCacheHost::ResourceInfoList::const_iterator end = applicationCacheResources.end();
</span><span class="cx">     ApplicationCacheHost::ResourceInfoList::const_iterator it = applicationCacheResources.begin();
</span><span class="lines">@@ -172,7 +174,7 @@
</span><span class="cx">     return resources;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::ApplicationCache::ApplicationCacheResource&gt; InspectorApplicationCacheAgent::buildObjectForApplicationCacheResource(const ApplicationCacheHost::ResourceInfo&amp; resourceInfo)
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::ApplicationCache::ApplicationCacheResource&gt; InspectorApplicationCacheAgent::buildObjectForApplicationCacheResource(const ApplicationCacheHost::ResourceInfo&amp; resourceInfo)
</ins><span class="cx"> {
</span><span class="cx">     String types;
</span><span class="cx">     if (resourceInfo.m_isMaster)
</span><span class="lines">@@ -190,7 +192,7 @@
</span><span class="cx">     if (resourceInfo.m_isExplicit)
</span><span class="cx">         types.append(&quot;Explicit &quot;);
</span><span class="cx"> 
</span><del>-    RefPtr&lt;TypeBuilder::ApplicationCache::ApplicationCacheResource&gt; value = TypeBuilder::ApplicationCache::ApplicationCacheResource::create()
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::ApplicationCache::ApplicationCacheResource&gt; value = Inspector::TypeBuilder::ApplicationCache::ApplicationCacheResource::create()
</ins><span class="cx">         .setUrl(resourceInfo.m_resource.string())
</span><span class="cx">         .setSize(static_cast&lt;int&gt;(resourceInfo.m_size))
</span><span class="cx">         .setType(types);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorApplicationCacheAgenth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorApplicationCacheAgent.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorApplicationCacheAgent.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorApplicationCacheAgent.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -28,27 +28,30 @@
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><span class="cx"> 
</span><span class="cx"> #include &quot;ApplicationCacheHost.h&quot;
</span><del>-#include &quot;InspectorBaseAgent.h&quot;
</del><ins>+#include &quot;InspectorBackendDispatchers.h&quot;
</ins><span class="cx"> #include &quot;InspectorFrontend.h&quot;
</span><ins>+#include &quot;InspectorWebAgentBase.h&quot;
</ins><span class="cx"> #include &lt;wtf/Noncopyable.h&gt;
</span><span class="cx"> #include &lt;wtf/PassOwnPtr.h&gt;
</span><span class="cx"> 
</span><ins>+namespace Inspector {
+class InspectorObject;
+class InspectorValue;
+}
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class Frame;
</span><del>-class InspectorArray;
</del><span class="cx"> class InspectorAgent;
</span><span class="cx"> class InspectorApplicationCacheFrontendDispatcher;
</span><del>-class InspectorObject;
</del><span class="cx"> class InspectorPageAgent;
</span><del>-class InspectorValue;
</del><span class="cx"> class InstrumentingAgents;
</span><span class="cx"> class Page;
</span><span class="cx"> class ResourceResponse;
</span><span class="cx"> 
</span><span class="cx"> typedef String ErrorString;
</span><span class="cx"> 
</span><del>-class InspectorApplicationCacheAgent : public InspectorBaseAgent, public InspectorApplicationCacheBackendDispatcherHandler {
</del><ins>+class InspectorApplicationCacheAgent : public InspectorAgentBase, public InspectorApplicationCacheBackendDispatcherHandler {
</ins><span class="cx">     WTF_MAKE_NONCOPYABLE(InspectorApplicationCacheAgent); WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><span class="cx">     static PassOwnPtr&lt;InspectorApplicationCacheAgent&gt; create(InstrumentingAgents* instrumentingAgents, InspectorPageAgent* pageAgent)
</span><span class="lines">@@ -57,25 +60,22 @@
</span><span class="cx">     }
</span><span class="cx">     ~InspectorApplicationCacheAgent() { }
</span><span class="cx"> 
</span><del>-    // InspectorBaseAgent
-    virtual void didCreateFrontendAndBackend(InspectorFrontendChannel*, InspectorBackendDispatcher*) OVERRIDE;
</del><ins>+    virtual void didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel*, Inspector::InspectorBackendDispatcher*) OVERRIDE;
</ins><span class="cx">     virtual void willDestroyFrontendAndBackend() OVERRIDE;
</span><span class="cx"> 
</span><del>-    // InspectorInstrumentation API
</del><span class="cx">     void updateApplicationCacheStatus(Frame*);
</span><span class="cx">     void networkStateChanged();
</span><span class="cx"> 
</span><del>-    // ApplicationCache API for InspectorFrontend
</del><span class="cx">     virtual void enable(ErrorString*);
</span><del>-    virtual void getFramesWithManifests(ErrorString*, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::ApplicationCache::FrameWithManifest&gt;&gt;&amp; result);
</del><ins>+    virtual void getFramesWithManifests(ErrorString*, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::ApplicationCache::FrameWithManifest&gt;&gt;&amp; result);
</ins><span class="cx">     virtual void getManifestForFrame(ErrorString*, const String&amp; frameId, String* manifestURL);
</span><del>-    virtual void getApplicationCacheForFrame(ErrorString*, const String&amp; frameId, RefPtr&lt;TypeBuilder::ApplicationCache::ApplicationCache&gt;&amp;);
</del><ins>+    virtual void getApplicationCacheForFrame(ErrorString*, const String&amp; frameId, RefPtr&lt;Inspector::TypeBuilder::ApplicationCache::ApplicationCache&gt;&amp;);
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     InspectorApplicationCacheAgent(InstrumentingAgents*, InspectorPageAgent*);
</span><del>-    PassRefPtr&lt;TypeBuilder::ApplicationCache::ApplicationCache&gt; buildObjectForApplicationCache(const ApplicationCacheHost::ResourceInfoList&amp;, const ApplicationCacheHost::CacheInfo&amp;);
-    PassRefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::ApplicationCache::ApplicationCacheResource&gt;&gt; buildArrayForApplicationCacheResources(const ApplicationCacheHost::ResourceInfoList&amp;);
-    PassRefPtr&lt;TypeBuilder::ApplicationCache::ApplicationCacheResource&gt; buildObjectForApplicationCacheResource(const ApplicationCacheHost::ResourceInfo&amp;);
</del><ins>+    PassRefPtr&lt;Inspector::TypeBuilder::ApplicationCache::ApplicationCache&gt; buildObjectForApplicationCache(const ApplicationCacheHost::ResourceInfoList&amp;, const ApplicationCacheHost::CacheInfo&amp;);
+    PassRefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::ApplicationCache::ApplicationCacheResource&gt;&gt; buildArrayForApplicationCacheResources(const ApplicationCacheHost::ResourceInfoList&amp;);
+    PassRefPtr&lt;Inspector::TypeBuilder::ApplicationCache::ApplicationCacheResource&gt; buildObjectForApplicationCacheResource(const ApplicationCacheHost::ResourceInfo&amp;);
</ins><span class="cx"> 
</span><span class="cx">     DocumentLoader* assertFrameWithDocumentLoader(ErrorString*, String frameId);
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorBackendDispatchercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorBackendDispatcher.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorBackendDispatcher.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorBackendDispatcher.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,264 +0,0 @@
</span><del>-/*
- * Copyright (C) 2013 Apple Inc. All Rights Reserved.
- * Copyright (C) 2011 The Chromium Authors. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include &quot;config.h&quot;
-#include &quot;InspectorBackendDispatcher.h&quot;
-
-#if ENABLE(INSPECTOR)
-
-#include &quot;InspectorForwarding.h&quot;
-#include &quot;InspectorValues.h&quot;
-#include &lt;wtf/text/CString.h&gt;
-#include &lt;wtf/text/WTFString.h&gt;
-
-namespace WebCore {
-
-InspectorBackendDispatcher::CallbackBase::CallbackBase(PassRefPtr&lt;InspectorBackendDispatcher&gt; backendDispatcher, int id)
-    : m_backendDispatcher(backendDispatcher)
-    , m_id(id)
-    , m_alreadySent(false)
-{
-}
-
-bool InspectorBackendDispatcher::CallbackBase::isActive() const
-{
-    return !m_alreadySent &amp;&amp; m_backendDispatcher-&gt;isActive();
-}
-
-void InspectorBackendDispatcher::CallbackBase::sendFailure(const ErrorString&amp; error)
-{
-    ASSERT(error.length());
-    sendIfActive(nullptr, error);
-}
-
-void InspectorBackendDispatcher::CallbackBase::sendIfActive(PassRefPtr&lt;InspectorObject&gt; partialMessage, const ErrorString&amp; invocationError)
-{
-    if (m_alreadySent)
-        return;
-
-    m_backendDispatcher-&gt;sendResponse(m_id, partialMessage, invocationError);
-    m_alreadySent = true;
-}
-
-PassRefPtr&lt;InspectorBackendDispatcher&gt; InspectorBackendDispatcher::create(InspectorFrontendChannel* inspectorFrontendChannel)
-{
-    return adoptRef(new InspectorBackendDispatcher(inspectorFrontendChannel));
-}
-
-void InspectorBackendDispatcher::registerDispatcherForDomain(const String&amp; domain, InspectorSupplementalBackendDispatcher* dispatcher)
-{
-    auto result = m_dispatchers.add(domain, dispatcher);
-    ASSERT_UNUSED(result, result.isNewEntry);
-}
-
-void InspectorBackendDispatcher::dispatch(const String&amp; message)
-{
-    Ref&lt;InspectorBackendDispatcher&gt; protect(*this);
-
-    RefPtr&lt;InspectorValue&gt; parsedMessage = InspectorValue::parseJSON(message);
-    if (!parsedMessage) {
-        reportProtocolError(nullptr, ParseError, &quot;Message must be in JSON format&quot;);
-        return;
-    }
-
-    RefPtr&lt;InspectorObject&gt; messageObject = parsedMessage-&gt;asObject();
-    if (!messageObject) {
-        reportProtocolError(nullptr, InvalidRequest, &quot;Message must be a JSONified object&quot;);
-        return;
-    }
-
-    RefPtr&lt;InspectorValue&gt; callIdValue = messageObject-&gt;get(&quot;id&quot;);
-    if (!callIdValue) {
-        reportProtocolError(nullptr, InvalidRequest, &quot;'id' property was not found&quot;);
-        return;
-    }
-
-    long callId = 0;
-    if (!callIdValue-&gt;asNumber(&amp;callId)) {
-        reportProtocolError(nullptr, InvalidRequest, &quot;The type of 'id' property must be number&quot;);
-        return;
-    }
-
-    RefPtr&lt;InspectorValue&gt; methodValue = messageObject-&gt;get(&quot;method&quot;);
-    if (!methodValue) {
-        reportProtocolError(&amp;callId, InvalidRequest, &quot;'method' property wasn't found&quot;);
-        return;
-    }
-
-    String method;
-    if (!methodValue-&gt;asString(&amp;method)) {
-        reportProtocolError(&amp;callId, InvalidRequest, &quot;The type of 'method' property must be string&quot;);
-        return;
-    }
-
-    size_t position = method.find('.');
-    if (position == WTF::notFound) {
-        reportProtocolError(&amp;callId, InvalidRequest, &quot;The 'method' property was formatted incorrectly. It should be 'Domain.method'&quot;);
-        return;
-    }
-
-    String domain = method.substring(0, position);
-    InspectorSupplementalBackendDispatcher* domainDispatcher = m_dispatchers.get(domain);
-    if (!domainDispatcher) {
-        reportProtocolError(&amp;callId, MethodNotFound, &quot;'&quot; + domain + &quot;' domain was not found&quot;);
-        return;
-    }
-
-    String domainMethod = method.substring(position + 1);
-    domainDispatcher-&gt;dispatch(callId, domainMethod, messageObject.release());
-}
-
-void InspectorBackendDispatcher::sendResponse(long callId, PassRefPtr&lt;InspectorObject&gt; result, const ErrorString&amp; invocationError)
-{
-    if (!m_inspectorFrontendChannel)
-        return;
-
-    if (invocationError.length()) {
-        reportProtocolError(&amp;callId, ServerError, invocationError);
-        return;
-    }
-
-    RefPtr&lt;InspectorObject&gt; responseMessage = InspectorObject::create();
-    responseMessage-&gt;setObject(ASCIILiteral(&quot;result&quot;), result);
-    responseMessage-&gt;setNumber(ASCIILiteral(&quot;id&quot;), callId);
-    m_inspectorFrontendChannel-&gt;sendMessageToFrontend(responseMessage-&gt;toJSONString());
-}
-
-void InspectorBackendDispatcher::reportProtocolError(const long* const callId, CommonErrorCode errorCode, const String&amp; errorMessage) const
-{
-    reportProtocolError(callId, errorCode, errorMessage, nullptr);
-}
-
-void InspectorBackendDispatcher::reportProtocolError(const long* const callId, CommonErrorCode errorCode, const String&amp; errorMessage, PassRefPtr&lt;InspectorArray&gt; data) const
-{
-    static const int errorCodes[] = {
-        -32700, // ParseError
-        -32600, // InvalidRequest
-        -32601, // MethodNotFound
-        -32602, // InvalidParams
-        -32603, // InternalError
-        -32000, // ServerError
-    };
-
-    ASSERT(errorCode &gt;= 0);
-    ASSERT((unsigned)errorCode &lt; WTF_ARRAY_LENGTH(errorCodes));
-    ASSERT(errorCodes[errorCode]);
-
-    if (!m_inspectorFrontendChannel)
-        return;
-
-    RefPtr&lt;InspectorObject&gt; error = InspectorObject::create();
-    error-&gt;setNumber(ASCIILiteral(&quot;code&quot;), errorCodes[errorCode]);
-    error-&gt;setString(ASCIILiteral(&quot;message&quot;), errorMessage);
-    if (data)
-        error-&gt;setArray(ASCIILiteral(&quot;data&quot;), data);
-
-    RefPtr&lt;InspectorObject&gt; message = InspectorObject::create();
-    message-&gt;setObject(ASCIILiteral(&quot;error&quot;), error.release());
-    if (callId)
-        message-&gt;setNumber(ASCIILiteral(&quot;id&quot;), *callId);
-    else
-        message-&gt;setValue(ASCIILiteral(&quot;id&quot;), InspectorValue::null());
-
-    m_inspectorFrontendChannel-&gt;sendMessageToFrontend(message-&gt;toJSONString());
-}
-
-template&lt;typename ReturnValueType, typename ValueType, typename DefaultValueType&gt;
-ReturnValueType InspectorBackendDispatcher::getPropertyValue(InspectorObject* object, const String&amp; name, bool* valueFound, InspectorArray* protocolErrors, DefaultValueType defaultValue, bool (*asMethod)(InspectorValue*, ValueType*), const char* typeName)
-{
-    ASSERT(protocolErrors);
-
-    ValueType value = defaultValue;
-    if (valueFound)
-        *valueFound = false;
-
-    if (!object) {
-        if (!valueFound)
-            protocolErrors-&gt;pushString(String::format(&quot;'params' object must contain required parameter '%s' with type '%s'.&quot;, name.utf8().data(), typeName));
-        return value;
-    }
-
-    InspectorObject::const_iterator end = object-&gt;end();
-    InspectorObject::const_iterator valueIterator = object-&gt;find(name);
-    if (valueIterator == end) {
-        if (!valueFound)
-            protocolErrors-&gt;pushString(String::format(&quot;Parameter '%s' with type '%s' was not found.&quot;, name.utf8().data(), typeName));
-        return value;
-    }
-
-    if (!asMethod(valueIterator-&gt;value.get(), &amp;value)) {
-        protocolErrors-&gt;pushString(String::format(&quot;Parameter '%s' has wrong type. It must be '%s'.&quot;, name.utf8().data(), typeName));
-        return value;
-    }
-
-    if (valueFound)
-        *valueFound = true;
-
-    return value;
-}
-
-struct AsMethodBridges {
-    static bool asInt(InspectorValue* value, int* output) { return value-&gt;asNumber(output); }
-    static bool asDouble(InspectorValue* value, double* output) { return value-&gt;asNumber(output); }
-    static bool asString(InspectorValue* value, String* output) { return value-&gt;asString(output); }
-    static bool asBoolean(InspectorValue* value, bool* output) { return value-&gt;asBoolean(output); }
-    static bool asObject(InspectorValue* value, RefPtr&lt;InspectorObject&gt;* output) { return value-&gt;asObject(output); }
-    static bool asArray(InspectorValue* value, RefPtr&lt;InspectorArray&gt;* output) { return value-&gt;asArray(output); }
-};
-
-int InspectorBackendDispatcher::getInt(InspectorObject* object, const String&amp; name, bool* valueFound, InspectorArray* protocolErrors)
-{
-    return getPropertyValue&lt;int, int, int&gt;(object, name, valueFound, protocolErrors, 0, AsMethodBridges::asInt, &quot;Number&quot;);
-}
-
-double InspectorBackendDispatcher::getDouble(InspectorObject* object, const String&amp; name, bool* valueFound, InspectorArray* protocolErrors)
-{
-    return getPropertyValue&lt;double, double, double&gt;(object, name, valueFound, protocolErrors, 0, AsMethodBridges::asDouble, &quot;Number&quot;);
-}
-
-String InspectorBackendDispatcher::getString(InspectorObject* object, const String&amp; name, bool* valueFound, InspectorArray* protocolErrors)
-{
-    return getPropertyValue&lt;String, String, String&gt;(object, name, valueFound, protocolErrors, &quot;&quot;, AsMethodBridges::asString, &quot;String&quot;);
-}
-
-bool InspectorBackendDispatcher::getBoolean(InspectorObject* object, const String&amp; name, bool* valueFound, InspectorArray* protocolErrors)
-{
-    return getPropertyValue&lt;bool, bool, bool&gt;(object, name, valueFound, protocolErrors, false, AsMethodBridges::asBoolean, &quot;Boolean&quot;);
-}
-
-PassRefPtr&lt;InspectorObject&gt; InspectorBackendDispatcher::getObject(InspectorObject* object, const String&amp; name, bool* valueFound, InspectorArray* protocolErrors)
-{
-    return getPropertyValue&lt;PassRefPtr&lt;InspectorObject&gt;, RefPtr&lt;InspectorObject&gt;, InspectorObject*&gt;(object, name, valueFound, protocolErrors, nullptr, AsMethodBridges::asObject, &quot;Object&quot;);
-}
-
-PassRefPtr&lt;InspectorArray&gt; InspectorBackendDispatcher::getArray(InspectorObject* object, const String&amp; name, bool* valueFound, InspectorArray* protocolErrors)
-{
-    return getPropertyValue&lt;PassRefPtr&lt;InspectorArray&gt;, RefPtr&lt;InspectorArray&gt;, InspectorArray*&gt;(object, name, valueFound, protocolErrors, nullptr, AsMethodBridges::asArray, &quot;Array&quot;);
-}
-
-} // namespace WebCore
-
-#endif // ENABLE(INSPECTOR)
</del></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorBackendDispatcherh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorBackendDispatcher.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorBackendDispatcher.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorBackendDispatcher.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,110 +0,0 @@
</span><del>-/*
- * Copyright (C) 2013 Apple Inc. All Rights Reserved.
- * Copyright (C) 2011 The Chromium Authors. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef InspectorBackendDispatcher_h
-#define InspectorBackendDispatcher_h
-
-#include &quot;InspectorTypeBuilder.h&quot;
-#include &lt;wtf/PassRefPtr.h&gt;
-#include &lt;wtf/RefCounted.h&gt;
-#include &lt;wtf/text/WTFString.h&gt;
-
-namespace WebCore {
-
-class InspectorBackendDispatcher;
-class InspectorFrontendChannel;
-typedef String ErrorString;
-
-class InspectorSupplementalBackendDispatcher : public RefCounted&lt;InspectorSupplementalBackendDispatcher&gt; {
-public:
-    InspectorSupplementalBackendDispatcher(InspectorBackendDispatcher* backendDispatcher) : m_backendDispatcher(backendDispatcher) { }
-    virtual ~InspectorSupplementalBackendDispatcher() { }
-    virtual void dispatch(long callId, const String&amp; method, PassRefPtr&lt;InspectorObject&gt; message) = 0;
-protected:
-    RefPtr&lt;InspectorBackendDispatcher&gt; m_backendDispatcher;
-};
-
-class InspectorBackendDispatcher : public RefCounted&lt;InspectorBackendDispatcher&gt; {
-public:
-    static PassRefPtr&lt;InspectorBackendDispatcher&gt; create(InspectorFrontendChannel*);
-    virtual ~InspectorBackendDispatcher() { }
-
-    class CallbackBase: public RefCounted&lt;CallbackBase&gt; {
-    public:
-        CallbackBase(PassRefPtr&lt;InspectorBackendDispatcher&gt;, int id);
-        virtual ~CallbackBase() { }
-
-        bool isActive() const;
-        void sendFailure(const ErrorString&amp;);
-        void disable() { m_alreadySent = true; }
-
-    protected:
-        void sendIfActive(PassRefPtr&lt;InspectorObject&gt; partialMessage, const ErrorString&amp; invocationError);
-
-    private:
-        RefPtr&lt;InspectorBackendDispatcher&gt; m_backendDispatcher;
-        int m_id;
-        bool m_alreadySent;
-    };
-
-    void clearFrontend() { m_inspectorFrontendChannel = nullptr; }
-    bool isActive() const { return !!m_inspectorFrontendChannel; }
-
-    enum CommonErrorCode {
-        ParseError = 0,
-        InvalidRequest,
-        MethodNotFound,
-        InvalidParams,
-        InternalError,
-        ServerError
-    };
-
-    void registerDispatcherForDomain(const String&amp; domain, InspectorSupplementalBackendDispatcher*);
-    void dispatch(const String&amp; message);
-    void sendResponse(long callId, PassRefPtr&lt;InspectorObject&gt; result, const ErrorString&amp; invocationError);
-    void reportProtocolError(const long* const callId, CommonErrorCode, const String&amp; errorMessage) const;
-    void reportProtocolError(const long* const callId, CommonErrorCode, const String&amp; errorMessage, PassRefPtr&lt;InspectorArray&gt; data) const;
-
-    static int getInt(InspectorObject*, const String&amp; name, bool* valueFound, InspectorArray* protocolErrors);
-    static double getDouble(InspectorObject*, const String&amp; name, bool* valueFound, InspectorArray* protocolErrors);
-    static String getString(InspectorObject*, const String&amp; name, bool* valueFound, InspectorArray* protocolErrors);
-    static bool getBoolean(InspectorObject*, const String&amp; name, bool* valueFound, InspectorArray* protocolErrors);
-    static PassRefPtr&lt;InspectorObject&gt; getObject(InspectorObject*, const String&amp; name, bool* valueFound, InspectorArray* protocolErrors);
-    static PassRefPtr&lt;InspectorArray&gt; getArray(InspectorObject*, const String&amp; name, bool* valueFound, InspectorArray* protocolErrors);
-
-private:
-    InspectorBackendDispatcher(InspectorFrontendChannel* inspectorFrontendChannel) : m_inspectorFrontendChannel(inspectorFrontendChannel) { }
-
-    template&lt;typename ReturnValueType, typename ValueType, typename DefaultValueType&gt;
-    static ReturnValueType getPropertyValue(InspectorObject* object, const String&amp; name, bool* valueFound, InspectorArray* protocolErrors, DefaultValueType defaultValue, bool (*asMethod)(InspectorValue*, ValueType*), const char* typeName);
-
-    InspectorFrontendChannel* m_inspectorFrontendChannel;
-    HashMap&lt;String, InspectorSupplementalBackendDispatcher*&gt; m_dispatchers;
-};
-
-} // namespace WebCore
-
-#endif // !defined(InspectorBackendDispatcher_h)
</del></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorBaseAgenth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorBaseAgent.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorBaseAgent.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorBaseAgent.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,63 +0,0 @@
</span><del>-/*
- * Copyright (C) 2011 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef InspectorBaseAgent_h
-#define InspectorBaseAgent_h
-
-#include &quot;InspectorBackendDispatchers.h&quot;
-#include &lt;wtf/text/WTFString.h&gt;
-
-namespace WebCore {
-
-class InspectorFrontendChannel;
-class InstrumentingAgents;
-
-class InspectorBaseAgent {
-public:
-    virtual ~InspectorBaseAgent() { }
-
-    virtual void didCreateFrontendAndBackend(InspectorFrontendChannel*, InspectorBackendDispatcher*) = 0;
-    virtual void willDestroyFrontendAndBackend() = 0;
-    virtual void discardAgent() { }
-
-protected:
-    InspectorBaseAgent(const String&amp; name, InstrumentingAgents* instrumentingAgents)
-        : m_instrumentingAgents(instrumentingAgents)
-        , m_name(name)
-    {
-    }
-
-    InstrumentingAgents* m_instrumentingAgents;
-    String m_name;
-};
-
-} // namespace WebCore
-
-#endif // !defined(InspectorBaseAgent_h)
</del></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorCSSAgentcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorCSSAgent.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorCSSAgent.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorCSSAgent.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -43,8 +43,7 @@
</span><span class="cx"> #include &quot;HTMLStyleElement.h&quot;
</span><span class="cx"> #include &quot;InspectorDOMAgent.h&quot;
</span><span class="cx"> #include &quot;InspectorHistory.h&quot;
</span><del>-#include &quot;InspectorTypeBuilder.h&quot;
-#include &quot;InspectorValues.h&quot;
</del><ins>+#include &quot;InspectorWebTypeBuilders.h&quot;
</ins><span class="cx"> #include &quot;InstrumentingAgents.h&quot;
</span><span class="cx"> #include &quot;NamedFlowCollection.h&quot;
</span><span class="cx"> #include &quot;Node.h&quot;
</span><span class="lines">@@ -57,7 +56,7 @@
</span><span class="cx"> #include &quot;StyleRule.h&quot;
</span><span class="cx"> #include &quot;StyleSheetList.h&quot;
</span><span class="cx"> #include &quot;WebKitNamedFlow.h&quot;
</span><del>-
</del><ins>+#include &lt;inspector/InspectorValues.h&gt;
</ins><span class="cx"> #include &lt;wtf/CurrentTime.h&gt;
</span><span class="cx"> #include &lt;wtf/HashSet.h&gt;
</span><span class="cx"> #include &lt;wtf/Ref.h&gt;
</span><span class="lines">@@ -65,6 +64,8 @@
</span><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><span class="cx"> #include &lt;wtf/text/StringConcatenate.h&gt;
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> enum ForcePseudoClassFlags {
</span><span class="lines">@@ -117,7 +118,7 @@
</span><span class="cx">     void startSelector(const CSSStyleRule*);
</span><span class="cx">     void commitSelector(bool);
</span><span class="cx">     void commitSelectorTime();
</span><del>-    PassRefPtr&lt;TypeBuilder::CSS::SelectorProfile&gt; toInspectorObject() const;
</del><ins>+    PassRefPtr&lt;Inspector::TypeBuilder::CSS::SelectorProfile&gt; toInspectorObject() const;
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx"> 
</span><span class="lines">@@ -205,11 +206,11 @@
</span><span class="cx">     it-&gt;value.totalTime += processingTimeMS;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::CSS::SelectorProfile&gt; SelectorProfile::toInspectorObject() const
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::CSS::SelectorProfile&gt; SelectorProfile::toInspectorObject() const
</ins><span class="cx"> {
</span><del>-    RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::CSS::SelectorProfileEntry&gt;&gt; selectorProfileData = TypeBuilder::Array&lt;TypeBuilder::CSS::SelectorProfileEntry&gt;::create();
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::SelectorProfileEntry&gt;&gt; selectorProfileData = Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::SelectorProfileEntry&gt;::create();
</ins><span class="cx">     for (RuleMatchingStatsMap::const_iterator it = m_ruleMatchingStats.begin(); it != m_ruleMatchingStats.end(); ++it) {
</span><del>-        RefPtr&lt;TypeBuilder::CSS::SelectorProfileEntry&gt; entry = TypeBuilder::CSS::SelectorProfileEntry::create()
</del><ins>+        RefPtr&lt;Inspector::TypeBuilder::CSS::SelectorProfileEntry&gt; entry = Inspector::TypeBuilder::CSS::SelectorProfileEntry::create()
</ins><span class="cx">             .setSelector(it-&gt;value.selector)
</span><span class="cx">             .setUrl(it-&gt;value.url)
</span><span class="cx">             .setLineNumber(it-&gt;value.lineNumber)
</span><span class="lines">@@ -219,7 +220,7 @@
</span><span class="cx">         selectorProfileData-&gt;addItem(entry.release());
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    RefPtr&lt;TypeBuilder::CSS::SelectorProfile&gt; result = TypeBuilder::CSS::SelectorProfile::create()
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::CSS::SelectorProfile&gt; result = Inspector::TypeBuilder::CSS::SelectorProfile::create()
</ins><span class="cx">         .setTotalTime(totalMatchingTimeMs())
</span><span class="cx">         .setData(selectorProfileData);
</span><span class="cx">     return result.release();
</span><span class="lines">@@ -616,7 +617,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> InspectorCSSAgent::InspectorCSSAgent(InstrumentingAgents* instrumentingAgents, InspectorDOMAgent* domAgent)
</span><del>-    : InspectorBaseAgent(ASCIILiteral(&quot;CSS&quot;), instrumentingAgents)
</del><ins>+    : InspectorAgentBase(ASCIILiteral(&quot;CSS&quot;), instrumentingAgents)
</ins><span class="cx">     , m_domAgent(domAgent)
</span><span class="cx">     , m_lastStyleSheetId(1)
</span><span class="cx"> {
</span><span class="lines">@@ -629,7 +630,7 @@
</span><span class="cx">     reset();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorCSSAgent::didCreateFrontendAndBackend(InspectorFrontendChannel* frontendChannel, InspectorBackendDispatcher* backendDispatcher)
</del><ins>+void InspectorCSSAgent::didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel* frontendChannel, InspectorBackendDispatcher* backendDispatcher)
</ins><span class="cx"> {
</span><span class="cx">     m_frontendDispatcher = std::make_unique&lt;InspectorCSSFrontendDispatcher&gt;(frontendChannel);
</span><span class="cx">     m_backendDispatcher = InspectorCSSBackendDispatcher::create(backendDispatcher, this);
</span><span class="lines">@@ -810,7 +811,7 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorCSSAgent::getMatchedStylesForNode(ErrorString* errorString, int nodeId, const bool* includePseudo, const bool* includeInherited, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::CSS::RuleMatch&gt;&gt;&amp; matchedCSSRules, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::CSS::PseudoIdMatches&gt;&gt;&amp; pseudoIdMatches, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::CSS::InheritedStyleEntry&gt;&gt;&amp; inheritedEntries)
</del><ins>+void InspectorCSSAgent::getMatchedStylesForNode(ErrorString* errorString, int nodeId, const bool* includePseudo, const bool* includeInherited, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::RuleMatch&gt;&gt;&amp; matchedCSSRules, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::PseudoIdMatches&gt;&gt;&amp; pseudoIdMatches, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::InheritedStyleEntry&gt;&gt;&amp; inheritedEntries)
</ins><span class="cx"> {
</span><span class="cx">     Element* element = elementForId(errorString, nodeId);
</span><span class="cx">     if (!element)
</span><span class="lines">@@ -823,11 +824,11 @@
</span><span class="cx"> 
</span><span class="cx">     // Pseudo elements.
</span><span class="cx">     if (!includePseudo || *includePseudo) {
</span><del>-        RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::CSS::PseudoIdMatches&gt;&gt; pseudoElements = TypeBuilder::Array&lt;TypeBuilder::CSS::PseudoIdMatches&gt;::create();
</del><ins>+        RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::PseudoIdMatches&gt;&gt; pseudoElements = Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::PseudoIdMatches&gt;::create();
</ins><span class="cx">         for (PseudoId pseudoId = FIRST_PUBLIC_PSEUDOID; pseudoId &lt; AFTER_LAST_INTERNAL_PSEUDOID; pseudoId = static_cast&lt;PseudoId&gt;(pseudoId + 1)) {
</span><span class="cx">             Vector&lt;RefPtr&lt;StyleRuleBase&gt;&gt; matchedRules = styleResolver.pseudoStyleRulesForElement(element, pseudoId, StyleResolver::AllCSSRules);
</span><span class="cx">             if (!matchedRules.isEmpty()) {
</span><del>-                RefPtr&lt;TypeBuilder::CSS::PseudoIdMatches&gt; matches = TypeBuilder::CSS::PseudoIdMatches::create()
</del><ins>+                RefPtr&lt;Inspector::TypeBuilder::CSS::PseudoIdMatches&gt; matches = Inspector::TypeBuilder::CSS::PseudoIdMatches::create()
</ins><span class="cx">                     .setPseudoId(static_cast&lt;int&gt;(pseudoId))
</span><span class="cx">                     .setMatches(buildArrayForMatchedRuleList(matchedRules, styleResolver, element));
</span><span class="cx">                 pseudoElements-&gt;addItem(matches.release());
</span><span class="lines">@@ -839,12 +840,12 @@
</span><span class="cx"> 
</span><span class="cx">     // Inherited styles.
</span><span class="cx">     if (!includeInherited || *includeInherited) {
</span><del>-        RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::CSS::InheritedStyleEntry&gt;&gt; entries = TypeBuilder::Array&lt;TypeBuilder::CSS::InheritedStyleEntry&gt;::create();
</del><ins>+        RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::InheritedStyleEntry&gt;&gt; entries = Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::InheritedStyleEntry&gt;::create();
</ins><span class="cx">         Element* parentElement = element-&gt;parentElement();
</span><span class="cx">         while (parentElement) {
</span><span class="cx">             StyleResolver&amp; parentStyleResolver = parentElement-&gt;document().ensureStyleResolver();
</span><span class="cx">             Vector&lt;RefPtr&lt;StyleRuleBase&gt;&gt; parentMatchedRules = parentStyleResolver.styleRulesForElement(parentElement, StyleResolver::AllCSSRules);
</span><del>-            RefPtr&lt;TypeBuilder::CSS::InheritedStyleEntry&gt; entry = TypeBuilder::CSS::InheritedStyleEntry::create()
</del><ins>+            RefPtr&lt;Inspector::TypeBuilder::CSS::InheritedStyleEntry&gt; entry = Inspector::TypeBuilder::CSS::InheritedStyleEntry::create()
</ins><span class="cx">                 .setMatchedCSSRules(buildArrayForMatchedRuleList(parentMatchedRules, styleResolver, parentElement));
</span><span class="cx">             if (parentElement-&gt;style() &amp;&amp; parentElement-&gt;style()-&gt;length()) {
</span><span class="cx">                 InspectorStyleSheetForInlineStyle* styleSheet = asInspectorStyleSheet(parentElement);
</span><span class="lines">@@ -860,7 +861,7 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorCSSAgent::getInlineStylesForNode(ErrorString* errorString, int nodeId, RefPtr&lt;TypeBuilder::CSS::CSSStyle&gt;&amp; inlineStyle, RefPtr&lt;TypeBuilder::CSS::CSSStyle&gt;&amp; attributesStyle)
</del><ins>+void InspectorCSSAgent::getInlineStylesForNode(ErrorString* errorString, int nodeId, RefPtr&lt;Inspector::TypeBuilder::CSS::CSSStyle&gt;&amp; inlineStyle, RefPtr&lt;Inspector::TypeBuilder::CSS::CSSStyle&gt;&amp; attributesStyle)
</ins><span class="cx"> {
</span><span class="cx">     Element* element = elementForId(errorString, nodeId);
</span><span class="cx">     if (!element)
</span><span class="lines">@@ -871,11 +872,11 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     inlineStyle = styleSheet-&gt;buildObjectForStyle(element-&gt;style());
</span><del>-    RefPtr&lt;TypeBuilder::CSS::CSSStyle&gt; attributes = buildObjectForAttributesStyle(element);
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::CSS::CSSStyle&gt; attributes = buildObjectForAttributesStyle(element);
</ins><span class="cx">     attributesStyle = attributes ? attributes.release() : 0;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorCSSAgent::getComputedStyleForNode(ErrorString* errorString, int nodeId, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::CSS::CSSComputedStyleProperty&gt;&gt;&amp; style)
</del><ins>+void InspectorCSSAgent::getComputedStyleForNode(ErrorString* errorString, int nodeId, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::CSSComputedStyleProperty&gt;&gt;&amp; style)
</ins><span class="cx"> {
</span><span class="cx">     Element* element = elementForId(errorString, nodeId);
</span><span class="cx">     if (!element)
</span><span class="lines">@@ -886,9 +887,9 @@
</span><span class="cx">     style = inspectorStyle-&gt;buildArrayForComputedStyle();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorCSSAgent::getAllStyleSheets(ErrorString*, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::CSS::CSSStyleSheetHeader&gt;&gt;&amp; styleInfos)
</del><ins>+void InspectorCSSAgent::getAllStyleSheets(ErrorString*, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::CSSStyleSheetHeader&gt;&gt;&amp; styleInfos)
</ins><span class="cx"> {
</span><del>-    styleInfos = TypeBuilder::Array&lt;TypeBuilder::CSS::CSSStyleSheetHeader&gt;::create();
</del><ins>+    styleInfos = Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::CSSStyleSheetHeader&gt;::create();
</ins><span class="cx">     Vector&lt;Document*&gt; documents = m_domAgent-&gt;documents();
</span><span class="cx">     for (Vector&lt;Document*&gt;::iterator it = documents.begin(); it != documents.end(); ++it) {
</span><span class="cx">         StyleSheetList* list = (*it)-&gt;styleSheets();
</span><span class="lines">@@ -900,7 +901,7 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorCSSAgent::getStyleSheet(ErrorString* errorString, const String&amp; styleSheetId, RefPtr&lt;TypeBuilder::CSS::CSSStyleSheetBody&gt;&amp; styleSheetObject)
</del><ins>+void InspectorCSSAgent::getStyleSheet(ErrorString* errorString, const String&amp; styleSheetId, RefPtr&lt;Inspector::TypeBuilder::CSS::CSSStyleSheetBody&gt;&amp; styleSheetObject)
</ins><span class="cx"> {
</span><span class="cx">     InspectorStyleSheet* inspectorStyleSheet = assertStyleSheetForId(errorString, styleSheetId);
</span><span class="cx">     if (!inspectorStyleSheet)
</span><span class="lines">@@ -929,7 +930,7 @@
</span><span class="cx">     *errorString = InspectorDOMAgent::toErrorString(ec);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorCSSAgent::setStyleText(ErrorString* errorString, const RefPtr&lt;InspectorObject&gt;&amp; fullStyleId, const String&amp; text, RefPtr&lt;TypeBuilder::CSS::CSSStyle&gt;&amp; result)
</del><ins>+void InspectorCSSAgent::setStyleText(ErrorString* errorString, const RefPtr&lt;InspectorObject&gt;&amp; fullStyleId, const String&amp; text, RefPtr&lt;Inspector::TypeBuilder::CSS::CSSStyle&gt;&amp; result)
</ins><span class="cx"> {
</span><span class="cx">     InspectorCSSId compoundId(fullStyleId);
</span><span class="cx">     ASSERT(!compoundId.isEmpty());
</span><span class="lines">@@ -945,7 +946,7 @@
</span><span class="cx">     *errorString = InspectorDOMAgent::toErrorString(ec);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorCSSAgent::setPropertyText(ErrorString* errorString, const RefPtr&lt;InspectorObject&gt;&amp; fullStyleId, int propertyIndex, const String&amp; text, bool overwrite, RefPtr&lt;TypeBuilder::CSS::CSSStyle&gt;&amp; result)
</del><ins>+void InspectorCSSAgent::setPropertyText(ErrorString* errorString, const RefPtr&lt;InspectorObject&gt;&amp; fullStyleId, int propertyIndex, const String&amp; text, bool overwrite, RefPtr&lt;Inspector::TypeBuilder::CSS::CSSStyle&gt;&amp; result)
</ins><span class="cx"> {
</span><span class="cx">     InspectorCSSId compoundId(fullStyleId);
</span><span class="cx">     ASSERT(!compoundId.isEmpty());
</span><span class="lines">@@ -961,7 +962,7 @@
</span><span class="cx">     *errorString = InspectorDOMAgent::toErrorString(ec);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorCSSAgent::toggleProperty(ErrorString* errorString, const RefPtr&lt;InspectorObject&gt;&amp; fullStyleId, int propertyIndex, bool disable, RefPtr&lt;TypeBuilder::CSS::CSSStyle&gt;&amp; result)
</del><ins>+void InspectorCSSAgent::toggleProperty(ErrorString* errorString, const RefPtr&lt;InspectorObject&gt;&amp; fullStyleId, int propertyIndex, bool disable, RefPtr&lt;Inspector::TypeBuilder::CSS::CSSStyle&gt;&amp; result)
</ins><span class="cx"> {
</span><span class="cx">     InspectorCSSId compoundId(fullStyleId);
</span><span class="cx">     ASSERT(!compoundId.isEmpty());
</span><span class="lines">@@ -977,7 +978,7 @@
</span><span class="cx">     *errorString = InspectorDOMAgent::toErrorString(ec);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorCSSAgent::setRuleSelector(ErrorString* errorString, const RefPtr&lt;InspectorObject&gt;&amp; fullRuleId, const String&amp; selector, RefPtr&lt;TypeBuilder::CSS::CSSRule&gt;&amp; result)
</del><ins>+void InspectorCSSAgent::setRuleSelector(ErrorString* errorString, const RefPtr&lt;InspectorObject&gt;&amp; fullRuleId, const String&amp; selector, RefPtr&lt;Inspector::TypeBuilder::CSS::CSSRule&gt;&amp; result)
</ins><span class="cx"> {
</span><span class="cx">     InspectorCSSId compoundId(fullRuleId);
</span><span class="cx">     ASSERT(!compoundId.isEmpty());
</span><span class="lines">@@ -994,7 +995,7 @@
</span><span class="cx">     *errorString = InspectorDOMAgent::toErrorString(ec);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorCSSAgent::addRule(ErrorString* errorString, const int contextNodeId, const String&amp; selector, RefPtr&lt;TypeBuilder::CSS::CSSRule&gt;&amp; result)
</del><ins>+void InspectorCSSAgent::addRule(ErrorString* errorString, const int contextNodeId, const String&amp; selector, RefPtr&lt;Inspector::TypeBuilder::CSS::CSSRule&gt;&amp; result)
</ins><span class="cx"> {
</span><span class="cx">     Node* node = m_domAgent-&gt;assertNode(errorString, contextNodeId);
</span><span class="cx">     if (!node)
</span><span class="lines">@@ -1020,12 +1021,12 @@
</span><span class="cx">     result = inspectorStyleSheet-&gt;buildObjectForRule(rule);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorCSSAgent::getSupportedCSSProperties(ErrorString*, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::CSS::CSSPropertyInfo&gt;&gt;&amp; cssProperties)
</del><ins>+void InspectorCSSAgent::getSupportedCSSProperties(ErrorString*, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::CSSPropertyInfo&gt;&gt;&amp; cssProperties)
</ins><span class="cx"> {
</span><del>-    RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::CSS::CSSPropertyInfo&gt;&gt; properties = TypeBuilder::Array&lt;TypeBuilder::CSS::CSSPropertyInfo&gt;::create();
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::CSSPropertyInfo&gt;&gt; properties = Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::CSSPropertyInfo&gt;::create();
</ins><span class="cx">     for (int i = firstCSSProperty; i &lt;= lastCSSProperty; ++i) {
</span><span class="cx">         CSSPropertyID id = convertToCSSPropertyID(i);
</span><del>-        RefPtr&lt;TypeBuilder::CSS::CSSPropertyInfo&gt; property = TypeBuilder::CSS::CSSPropertyInfo::create()
</del><ins>+        RefPtr&lt;Inspector::TypeBuilder::CSS::CSSPropertyInfo&gt; property = Inspector::TypeBuilder::CSS::CSSPropertyInfo::create()
</ins><span class="cx">             .setName(getPropertyNameString(id));
</span><span class="cx"> 
</span><span class="cx">         const StylePropertyShorthand&amp; shorthand = shorthandForProperty(id);
</span><span class="lines">@@ -1033,7 +1034,7 @@
</span><span class="cx">             properties-&gt;addItem(property.release());
</span><span class="cx">             continue;
</span><span class="cx">         }
</span><del>-        RefPtr&lt;TypeBuilder::Array&lt;String&gt;&gt; longhands = TypeBuilder::Array&lt;String&gt;::create();
</del><ins>+        RefPtr&lt;Inspector::TypeBuilder::Array&lt;String&gt;&gt; longhands = Inspector::TypeBuilder::Array&lt;String&gt;::create();
</ins><span class="cx">         for (unsigned j = 0; j &lt; shorthand.length(); ++j) {
</span><span class="cx">             CSSPropertyID longhandID = shorthand.properties()[j];
</span><span class="cx">             longhands-&gt;addItem(getPropertyNameString(longhandID));
</span><span class="lines">@@ -1064,7 +1065,7 @@
</span><span class="cx">     element-&gt;document().styleResolverChanged(RecalcStyleImmediately);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorCSSAgent::getNamedFlowCollection(ErrorString* errorString, int documentNodeId, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::CSS::NamedFlow&gt;&gt;&amp; result)
</del><ins>+void InspectorCSSAgent::getNamedFlowCollection(ErrorString* errorString, int documentNodeId, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::NamedFlow&gt;&gt;&amp; result)
</ins><span class="cx"> {
</span><span class="cx">     Document* document = m_domAgent-&gt;assertDocument(errorString, documentNodeId);
</span><span class="cx">     if (!document)
</span><span class="lines">@@ -1073,7 +1074,7 @@
</span><span class="cx">     m_namedFlowCollectionsRequested.add(documentNodeId);
</span><span class="cx"> 
</span><span class="cx">     Vector&lt;RefPtr&lt;WebKitNamedFlow&gt;&gt; namedFlowsVector = document-&gt;namedFlows()-&gt;namedFlows();
</span><del>-    RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::CSS::NamedFlow&gt;&gt; namedFlows = TypeBuilder::Array&lt;TypeBuilder::CSS::NamedFlow&gt;::create();
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::NamedFlow&gt;&gt; namedFlows = Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::NamedFlow&gt;::create();
</ins><span class="cx"> 
</span><span class="cx">     for (Vector&lt;RefPtr&lt;WebKitNamedFlow&gt;&gt;::iterator it = namedFlowsVector.begin(); it != namedFlowsVector.end(); ++it)
</span><span class="cx">         namedFlows-&gt;addItem(buildObjectForNamedFlow(errorString, it-&gt;get(), documentNodeId));
</span><span class="lines">@@ -1086,16 +1087,16 @@
</span><span class="cx">     m_currentSelectorProfile = adoptPtr(new SelectorProfile());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorCSSAgent::stopSelectorProfiler(ErrorString* errorString, RefPtr&lt;TypeBuilder::CSS::SelectorProfile&gt;&amp; result)
</del><ins>+void InspectorCSSAgent::stopSelectorProfiler(ErrorString* errorString, RefPtr&lt;Inspector::TypeBuilder::CSS::SelectorProfile&gt;&amp; result)
</ins><span class="cx"> {
</span><span class="cx">     result = stopSelectorProfilerImpl(errorString, true);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::CSS::SelectorProfile&gt; InspectorCSSAgent::stopSelectorProfilerImpl(ErrorString*, bool needProfile)
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::CSS::SelectorProfile&gt; InspectorCSSAgent::stopSelectorProfilerImpl(ErrorString*, bool needProfile)
</ins><span class="cx"> {
</span><span class="cx">     if (!m_currentSelectorProfile)
</span><span class="cx">         return 0;
</span><del>-    RefPtr&lt;TypeBuilder::CSS::SelectorProfile&gt; result;
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::CSS::SelectorProfile&gt; result;
</ins><span class="cx">     if (m_frontendDispatcher &amp;&amp; needProfile)
</span><span class="cx">         result = m_currentSelectorProfile-&gt;toInspectorObject();
</span><span class="cx">     m_currentSelectorProfile.clear();
</span><span class="lines">@@ -1136,7 +1137,7 @@
</span><span class="cx">             return 0;
</span><span class="cx"> 
</span><span class="cx">         String newStyleSheetId = String::number(m_lastStyleSheetId++);
</span><del>-        RefPtr&lt;InspectorStyleSheetForInlineStyle&gt; inspectorStyleSheet = InspectorStyleSheetForInlineStyle::create(m_domAgent-&gt;pageAgent(), newStyleSheetId, element, TypeBuilder::CSS::StyleSheetOrigin::Regular, this);
</del><ins>+        RefPtr&lt;InspectorStyleSheetForInlineStyle&gt; inspectorStyleSheet = InspectorStyleSheetForInlineStyle::create(m_domAgent-&gt;pageAgent(), newStyleSheetId, element, Inspector::TypeBuilder::CSS::StyleSheetOrigin::Regular, this);
</ins><span class="cx">         m_idToInspectorStyleSheet.set(newStyleSheetId, inspectorStyleSheet);
</span><span class="cx">         m_nodeToInspectorStyleSheet.set(element, inspectorStyleSheet);
</span><span class="cx">         return inspectorStyleSheet.get();
</span><span class="lines">@@ -1168,7 +1169,7 @@
</span><span class="cx">     return documentNodeId;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorCSSAgent::collectStyleSheets(CSSStyleSheet* styleSheet, TypeBuilder::Array&lt;TypeBuilder::CSS::CSSStyleSheetHeader&gt;* result)
</del><ins>+void InspectorCSSAgent::collectStyleSheets(CSSStyleSheet* styleSheet, Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::CSSStyleSheetHeader&gt;* result)
</ins><span class="cx"> {
</span><span class="cx">     InspectorStyleSheet* inspectorStyleSheet = bindStyleSheet(static_cast&lt;CSSStyleSheet*&gt;(styleSheet));
</span><span class="cx">     result-&gt;addItem(inspectorStyleSheet-&gt;buildObjectForStyleSheetInfo());
</span><span class="lines">@@ -1241,7 +1242,7 @@
</span><span class="cx">         return 0;
</span><span class="cx"> 
</span><span class="cx">     String id = String::number(m_lastStyleSheetId++);
</span><del>-    inspectorStyleSheet = InspectorStyleSheet::create(m_domAgent-&gt;pageAgent(), id, cssStyleSheet, TypeBuilder::CSS::StyleSheetOrigin::Inspector, InspectorDOMAgent::documentURLString(document), this);
</del><ins>+    inspectorStyleSheet = InspectorStyleSheet::create(m_domAgent-&gt;pageAgent(), id, cssStyleSheet, Inspector::TypeBuilder::CSS::StyleSheetOrigin::Inspector, InspectorDOMAgent::documentURLString(document), this);
</ins><span class="cx">     m_idToInspectorStyleSheet.set(id, inspectorStyleSheet);
</span><span class="cx">     m_cssStyleSheetToInspectorStyleSheet.set(cssStyleSheet, inspectorStyleSheet);
</span><span class="cx">     m_documentToInspectorStyleSheet.set(document, inspectorStyleSheet);
</span><span class="lines">@@ -1258,22 +1259,22 @@
</span><span class="cx">     return it-&gt;value.get();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-TypeBuilder::CSS::StyleSheetOrigin::Enum InspectorCSSAgent::detectOrigin(CSSStyleSheet* pageStyleSheet, Document* ownerDocument)
</del><ins>+Inspector::TypeBuilder::CSS::StyleSheetOrigin::Enum InspectorCSSAgent::detectOrigin(CSSStyleSheet* pageStyleSheet, Document* ownerDocument)
</ins><span class="cx"> {
</span><del>-    TypeBuilder::CSS::StyleSheetOrigin::Enum origin = TypeBuilder::CSS::StyleSheetOrigin::Regular;
</del><ins>+    Inspector::TypeBuilder::CSS::StyleSheetOrigin::Enum origin = Inspector::TypeBuilder::CSS::StyleSheetOrigin::Regular;
</ins><span class="cx">     if (pageStyleSheet &amp;&amp; !pageStyleSheet-&gt;ownerNode() &amp;&amp; pageStyleSheet-&gt;href().isEmpty())
</span><del>-        origin = TypeBuilder::CSS::StyleSheetOrigin::UserAgent;
</del><ins>+        origin = Inspector::TypeBuilder::CSS::StyleSheetOrigin::UserAgent;
</ins><span class="cx">     else if (pageStyleSheet &amp;&amp; pageStyleSheet-&gt;ownerNode() &amp;&amp; pageStyleSheet-&gt;ownerNode()-&gt;nodeName() == &quot;#document&quot;)
</span><del>-        origin = TypeBuilder::CSS::StyleSheetOrigin::User;
</del><ins>+        origin = Inspector::TypeBuilder::CSS::StyleSheetOrigin::User;
</ins><span class="cx">     else {
</span><span class="cx">         InspectorStyleSheet* viaInspectorStyleSheetForOwner = viaInspectorStyleSheet(ownerDocument, false);
</span><span class="cx">         if (viaInspectorStyleSheetForOwner &amp;&amp; pageStyleSheet == viaInspectorStyleSheetForOwner-&gt;pageStyleSheet())
</span><del>-            origin = TypeBuilder::CSS::StyleSheetOrigin::Inspector;
</del><ins>+            origin = Inspector::TypeBuilder::CSS::StyleSheetOrigin::Inspector;
</ins><span class="cx">     }
</span><span class="cx">     return origin;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::CSS::CSSRule&gt; InspectorCSSAgent::buildObjectForRule(StyleRule* styleRule, StyleResolver&amp; styleResolver)
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::CSS::CSSRule&gt; InspectorCSSAgent::buildObjectForRule(StyleRule* styleRule, StyleResolver&amp; styleResolver)
</ins><span class="cx"> {
</span><span class="cx">     if (!styleRule)
</span><span class="cx">         return 0;
</span><span class="lines">@@ -1287,7 +1288,7 @@
</span><span class="cx">     return inspectorStyleSheet ? inspectorStyleSheet-&gt;buildObjectForRule(cssomWrapper) : 0;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::CSS::CSSRule&gt; InspectorCSSAgent::buildObjectForRule(CSSStyleRule* rule)
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::CSS::CSSRule&gt; InspectorCSSAgent::buildObjectForRule(CSSStyleRule* rule)
</ins><span class="cx"> {
</span><span class="cx">     if (!rule)
</span><span class="cx">         return 0;
</span><span class="lines">@@ -1297,15 +1298,15 @@
</span><span class="cx">     return inspectorStyleSheet ? inspectorStyleSheet-&gt;buildObjectForRule(rule) : 0;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::CSS::CSSRule&gt;&gt; InspectorCSSAgent::buildArrayForRuleList(CSSRuleList* ruleList)
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::CSSRule&gt;&gt; InspectorCSSAgent::buildArrayForRuleList(CSSRuleList* ruleList)
</ins><span class="cx"> {
</span><del>-    RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::CSS::CSSRule&gt;&gt; result = TypeBuilder::Array&lt;TypeBuilder::CSS::CSSRule&gt;::create();
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::CSSRule&gt;&gt; result = Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::CSSRule&gt;::create();
</ins><span class="cx">     if (!ruleList)
</span><span class="cx">         return result.release();
</span><span class="cx"> 
</span><span class="cx">     for (unsigned i = 0, size = ruleList-&gt;length(); i &lt; size; ++i) {
</span><span class="cx">         CSSStyleRule* rule = asCSSStyleRule(ruleList-&gt;item(i));
</span><del>-        RefPtr&lt;TypeBuilder::CSS::CSSRule&gt; ruleObject = buildObjectForRule(rule);
</del><ins>+        RefPtr&lt;Inspector::TypeBuilder::CSS::CSSRule&gt; ruleObject = buildObjectForRule(rule);
</ins><span class="cx">         if (!ruleObject)
</span><span class="cx">             continue;
</span><span class="cx">         result-&gt;addItem(ruleObject);
</span><span class="lines">@@ -1313,18 +1314,18 @@
</span><span class="cx">     return result.release();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::CSS::RuleMatch&gt;&gt; InspectorCSSAgent::buildArrayForMatchedRuleList(const Vector&lt;RefPtr&lt;StyleRuleBase&gt;&gt;&amp; matchedRules, StyleResolver&amp; styleResolver, Element* element)
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::RuleMatch&gt;&gt; InspectorCSSAgent::buildArrayForMatchedRuleList(const Vector&lt;RefPtr&lt;StyleRuleBase&gt;&gt;&amp; matchedRules, StyleResolver&amp; styleResolver, Element* element)
</ins><span class="cx"> {
</span><del>-    RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::CSS::RuleMatch&gt;&gt; result = TypeBuilder::Array&lt;TypeBuilder::CSS::RuleMatch&gt;::create();
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::RuleMatch&gt;&gt; result = Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::RuleMatch&gt;::create();
</ins><span class="cx"> 
</span><span class="cx">     for (unsigned i = 0; i &lt; matchedRules.size(); ++i) {
</span><span class="cx">         if (!matchedRules[i]-&gt;isStyleRule())
</span><span class="cx">             continue;
</span><span class="cx">         StyleRule* matchedStyleRule = static_cast&lt;StyleRule*&gt;(matchedRules[i].get());
</span><del>-        RefPtr&lt;TypeBuilder::CSS::CSSRule&gt; ruleObject = buildObjectForRule(matchedStyleRule, styleResolver);
</del><ins>+        RefPtr&lt;Inspector::TypeBuilder::CSS::CSSRule&gt; ruleObject = buildObjectForRule(matchedStyleRule, styleResolver);
</ins><span class="cx">         if (!ruleObject)
</span><span class="cx">             continue;
</span><del>-        RefPtr&lt;TypeBuilder::Array&lt;int&gt;&gt; matchingSelectors = TypeBuilder::Array&lt;int&gt;::create();
</del><ins>+        RefPtr&lt;Inspector::TypeBuilder::Array&lt;int&gt;&gt; matchingSelectors = Inspector::TypeBuilder::Array&lt;int&gt;::create();
</ins><span class="cx">         const CSSSelectorList&amp; selectorList = matchedStyleRule-&gt;selectorList();
</span><span class="cx">         long index = 0;
</span><span class="cx">         for (const CSSSelector* selector = selectorList.first(); selector; selector = CSSSelectorList::next(selector)) {
</span><span class="lines">@@ -1333,7 +1334,7 @@
</span><span class="cx">                 matchingSelectors-&gt;addItem(index);
</span><span class="cx">             ++index;
</span><span class="cx">         }
</span><del>-        RefPtr&lt;TypeBuilder::CSS::RuleMatch&gt; match = TypeBuilder::CSS::RuleMatch::create()
</del><ins>+        RefPtr&lt;Inspector::TypeBuilder::CSS::RuleMatch&gt; match = Inspector::TypeBuilder::CSS::RuleMatch::create()
</ins><span class="cx">             .setRule(ruleObject)
</span><span class="cx">             .setMatchingSelectors(matchingSelectors);
</span><span class="cx">         result-&gt;addItem(match);
</span><span class="lines">@@ -1342,7 +1343,7 @@
</span><span class="cx">     return result.release();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::CSS::CSSStyle&gt; InspectorCSSAgent::buildObjectForAttributesStyle(Element* element)
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::CSS::CSSStyle&gt; InspectorCSSAgent::buildObjectForAttributesStyle(Element* element)
</ins><span class="cx"> {
</span><span class="cx">     if (!element-&gt;isStyledElement())
</span><span class="cx">         return 0;
</span><span class="lines">@@ -1359,22 +1360,22 @@
</span><span class="cx">     return inspectorStyle-&gt;buildObjectForStyle();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::CSS::Region&gt;&gt; InspectorCSSAgent::buildArrayForRegions(ErrorString* errorString, PassRefPtr&lt;NodeList&gt; regionList, int documentNodeId)
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::Region&gt;&gt; InspectorCSSAgent::buildArrayForRegions(ErrorString* errorString, PassRefPtr&lt;NodeList&gt; regionList, int documentNodeId)
</ins><span class="cx"> {
</span><del>-    RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::CSS::Region&gt;&gt; regions = TypeBuilder::Array&lt;TypeBuilder::CSS::Region&gt;::create();
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::Region&gt;&gt; regions = Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::Region&gt;::create();
</ins><span class="cx"> 
</span><span class="cx">     for (unsigned i = 0; i &lt; regionList-&gt;length(); ++i) {
</span><del>-        TypeBuilder::CSS::Region::RegionOverset::Enum regionOverset;
</del><ins>+        Inspector::TypeBuilder::CSS::Region::RegionOverset::Enum regionOverset;
</ins><span class="cx"> 
</span><span class="cx">         switch (toElement(regionList-&gt;item(i))-&gt;renderRegion()-&gt;regionOversetState()) {
</span><span class="cx">         case RegionFit:
</span><del>-            regionOverset = TypeBuilder::CSS::Region::RegionOverset::Fit;
</del><ins>+            regionOverset = Inspector::TypeBuilder::CSS::Region::RegionOverset::Fit;
</ins><span class="cx">             break;
</span><span class="cx">         case RegionEmpty:
</span><del>-            regionOverset = TypeBuilder::CSS::Region::RegionOverset::Empty;
</del><ins>+            regionOverset = Inspector::TypeBuilder::CSS::Region::RegionOverset::Empty;
</ins><span class="cx">             break;
</span><span class="cx">         case RegionOverset:
</span><del>-            regionOverset = TypeBuilder::CSS::Region::RegionOverset::Overset;
</del><ins>+            regionOverset = Inspector::TypeBuilder::CSS::Region::RegionOverset::Overset;
</ins><span class="cx">             break;
</span><span class="cx">         case RegionUndefined:
</span><span class="cx">             continue;
</span><span class="lines">@@ -1383,7 +1384,7 @@
</span><span class="cx">             continue;
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        RefPtr&lt;TypeBuilder::CSS::Region&gt; region = TypeBuilder::CSS::Region::create()
</del><ins>+        RefPtr&lt;Inspector::TypeBuilder::CSS::Region&gt; region = Inspector::TypeBuilder::CSS::Region::create()
</ins><span class="cx">             .setRegionOverset(regionOverset)
</span><span class="cx">             // documentNodeId was previously asserted
</span><span class="cx">             .setNodeId(m_domAgent-&gt;pushNodeToFrontend(errorString, documentNodeId, regionList-&gt;item(i)));
</span><span class="lines">@@ -1394,17 +1395,17 @@
</span><span class="cx">     return regions.release();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::CSS::NamedFlow&gt; InspectorCSSAgent::buildObjectForNamedFlow(ErrorString* errorString, WebKitNamedFlow* webkitNamedFlow, int documentNodeId)
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::CSS::NamedFlow&gt; InspectorCSSAgent::buildObjectForNamedFlow(ErrorString* errorString, WebKitNamedFlow* webkitNamedFlow, int documentNodeId)
</ins><span class="cx"> {
</span><span class="cx">     RefPtr&lt;NodeList&gt; contentList = webkitNamedFlow-&gt;getContent();
</span><del>-    RefPtr&lt;TypeBuilder::Array&lt;int&gt;&gt; content = TypeBuilder::Array&lt;int&gt;::create();
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Array&lt;int&gt;&gt; content = Inspector::TypeBuilder::Array&lt;int&gt;::create();
</ins><span class="cx"> 
</span><span class="cx">     for (unsigned i = 0; i &lt; contentList-&gt;length(); ++i) {
</span><span class="cx">         // documentNodeId was previously asserted
</span><span class="cx">         content-&gt;addItem(m_domAgent-&gt;pushNodeToFrontend(errorString, documentNodeId, contentList-&gt;item(i)));
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    RefPtr&lt;TypeBuilder::CSS::NamedFlow&gt; namedFlow = TypeBuilder::CSS::NamedFlow::create()
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::CSS::NamedFlow&gt; namedFlow = Inspector::TypeBuilder::CSS::NamedFlow::create()
</ins><span class="cx">         .setDocumentNodeId(documentNodeId)
</span><span class="cx">         .setName(webkitNamedFlow-&gt;name().string())
</span><span class="cx">         .setOverset(webkitNamedFlow-&gt;overset())
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorCSSAgenth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorCSSAgent.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorCSSAgent.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorCSSAgent.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -27,12 +27,12 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;CSSSelector.h&quot;
</span><span class="cx"> #include &quot;ContentSecurityPolicy.h&quot;
</span><del>-#include &quot;InspectorBaseAgent.h&quot;
</del><ins>+#include &quot;InspectorBackendDispatchers.h&quot;
</ins><span class="cx"> #include &quot;InspectorDOMAgent.h&quot;
</span><span class="cx"> #include &quot;InspectorStyleSheet.h&quot;
</span><del>-#include &quot;InspectorValues.h&quot;
</del><ins>+#include &quot;InspectorWebAgentBase.h&quot;
</ins><span class="cx"> #include &quot;SecurityContext.h&quot;
</span><del>-
</del><ins>+#include &lt;inspector/InspectorValues.h&gt;
</ins><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="cx"> #include &lt;wtf/HashSet.h&gt;
</span><span class="cx"> #include &lt;wtf/PassRefPtr.h&gt;
</span><span class="lines">@@ -64,7 +64,7 @@
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><span class="cx"> 
</span><span class="cx"> class InspectorCSSAgent
</span><del>-    : public InspectorBaseAgent
</del><ins>+    : public InspectorAgentBase
</ins><span class="cx">     , public InspectorDOMAgent::DOMListener
</span><span class="cx">     , public InspectorCSSBackendDispatcherHandler
</span><span class="cx">     , public InspectorStyleSheet::Listener {
</span><span class="lines">@@ -96,7 +96,7 @@
</span><span class="cx">     ~InspectorCSSAgent();
</span><span class="cx"> 
</span><span class="cx">     bool forcePseudoState(Element*, CSSSelector::PseudoType);
</span><del>-    virtual void didCreateFrontendAndBackend(InspectorFrontendChannel*, InspectorBackendDispatcher*) OVERRIDE;
</del><ins>+    virtual void didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel*, Inspector::InspectorBackendDispatcher*) OVERRIDE;
</ins><span class="cx">     virtual void willDestroyFrontendAndBackend() OVERRIDE;
</span><span class="cx">     virtual void discardAgent();
</span><span class="cx">     virtual void enable(ErrorString*);
</span><span class="lines">@@ -112,26 +112,26 @@
</span><span class="cx">     void didRegisterNamedFlowContentElement(Document*, WebKitNamedFlow*, Node* contentElement, Node* nextContentElement = nullptr);
</span><span class="cx">     void didUnregisterNamedFlowContentElement(Document*, WebKitNamedFlow*, Node* contentElement);
</span><span class="cx"> 
</span><del>-    virtual void getComputedStyleForNode(ErrorString*, int nodeId, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::CSS::CSSComputedStyleProperty&gt;&gt;&amp;);
-    virtual void getInlineStylesForNode(ErrorString*, int nodeId, RefPtr&lt;TypeBuilder::CSS::CSSStyle&gt;&amp; inlineStyle, RefPtr&lt;TypeBuilder::CSS::CSSStyle&gt;&amp; attributes);
-    virtual void getMatchedStylesForNode(ErrorString*, int nodeId, const bool* includePseudo, const bool* includeInherited, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::CSS::RuleMatch&gt;&gt;&amp; matchedCSSRules, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::CSS::PseudoIdMatches&gt;&gt;&amp; pseudoIdMatches, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::CSS::InheritedStyleEntry&gt;&gt;&amp; inheritedEntries);
-    virtual void getAllStyleSheets(ErrorString*, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::CSS::CSSStyleSheetHeader&gt;&gt;&amp; styleSheetInfos);
-    virtual void getStyleSheet(ErrorString*, const String&amp; styleSheetId, RefPtr&lt;TypeBuilder::CSS::CSSStyleSheetBody&gt;&amp; result);
</del><ins>+    virtual void getComputedStyleForNode(ErrorString*, int nodeId, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::CSSComputedStyleProperty&gt;&gt;&amp;);
+    virtual void getInlineStylesForNode(ErrorString*, int nodeId, RefPtr&lt;Inspector::TypeBuilder::CSS::CSSStyle&gt;&amp; inlineStyle, RefPtr&lt;Inspector::TypeBuilder::CSS::CSSStyle&gt;&amp; attributes);
+    virtual void getMatchedStylesForNode(ErrorString*, int nodeId, const bool* includePseudo, const bool* includeInherited, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::RuleMatch&gt;&gt;&amp; matchedCSSRules, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::PseudoIdMatches&gt;&gt;&amp; pseudoIdMatches, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::InheritedStyleEntry&gt;&gt;&amp; inheritedEntries);
+    virtual void getAllStyleSheets(ErrorString*, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::CSSStyleSheetHeader&gt;&gt;&amp; styleSheetInfos);
+    virtual void getStyleSheet(ErrorString*, const String&amp; styleSheetId, RefPtr&lt;Inspector::TypeBuilder::CSS::CSSStyleSheetBody&gt;&amp; result);
</ins><span class="cx">     virtual void getStyleSheetText(ErrorString*, const String&amp; styleSheetId, String* result);
</span><span class="cx">     virtual void setStyleSheetText(ErrorString*, const String&amp; styleSheetId, const String&amp; text);
</span><del>-    virtual void setStyleText(ErrorString*, const RefPtr&lt;InspectorObject&gt;&amp; styleId, const String&amp; text, RefPtr&lt;TypeBuilder::CSS::CSSStyle&gt;&amp; result);
-    virtual void setPropertyText(ErrorString*, const RefPtr&lt;InspectorObject&gt;&amp; styleId, int propertyIndex, const String&amp; text, bool overwrite, RefPtr&lt;TypeBuilder::CSS::CSSStyle&gt;&amp; result);
-    virtual void toggleProperty(ErrorString*, const RefPtr&lt;InspectorObject&gt;&amp; styleId, int propertyIndex, bool disable, RefPtr&lt;TypeBuilder::CSS::CSSStyle&gt;&amp; result);
-    virtual void setRuleSelector(ErrorString*, const RefPtr&lt;InspectorObject&gt;&amp; ruleId, const String&amp; selector, RefPtr&lt;TypeBuilder::CSS::CSSRule&gt;&amp; result);
-    virtual void addRule(ErrorString*, int contextNodeId, const String&amp; selector, RefPtr&lt;TypeBuilder::CSS::CSSRule&gt;&amp; result);
-    virtual void getSupportedCSSProperties(ErrorString*, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::CSS::CSSPropertyInfo&gt;&gt;&amp; result);
-    virtual void forcePseudoState(ErrorString*, int nodeId, const RefPtr&lt;InspectorArray&gt;&amp; forcedPseudoClasses);
-    virtual void getNamedFlowCollection(ErrorString*, int documentNodeId, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::CSS::NamedFlow&gt;&gt;&amp; result);
</del><ins>+    virtual void setStyleText(ErrorString*, const RefPtr&lt;Inspector::InspectorObject&gt;&amp; styleId, const String&amp; text, RefPtr&lt;Inspector::TypeBuilder::CSS::CSSStyle&gt;&amp; result);
+    virtual void setPropertyText(ErrorString*, const RefPtr&lt;Inspector::InspectorObject&gt;&amp; styleId, int propertyIndex, const String&amp; text, bool overwrite, RefPtr&lt;Inspector::TypeBuilder::CSS::CSSStyle&gt;&amp; result);
+    virtual void toggleProperty(ErrorString*, const RefPtr&lt;Inspector::InspectorObject&gt;&amp; styleId, int propertyIndex, bool disable, RefPtr&lt;Inspector::TypeBuilder::CSS::CSSStyle&gt;&amp; result);
+    virtual void setRuleSelector(ErrorString*, const RefPtr&lt;Inspector::InspectorObject&gt;&amp; ruleId, const String&amp; selector, RefPtr&lt;Inspector::TypeBuilder::CSS::CSSRule&gt;&amp; result);
+    virtual void addRule(ErrorString*, int contextNodeId, const String&amp; selector, RefPtr&lt;Inspector::TypeBuilder::CSS::CSSRule&gt;&amp; result);
+    virtual void getSupportedCSSProperties(ErrorString*, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::CSSPropertyInfo&gt;&gt;&amp; result);
+    virtual void forcePseudoState(ErrorString*, int nodeId, const RefPtr&lt;Inspector::InspectorArray&gt;&amp; forcedPseudoClasses);
+    virtual void getNamedFlowCollection(ErrorString*, int documentNodeId, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::NamedFlow&gt;&gt;&amp; result);
</ins><span class="cx"> 
</span><span class="cx">     virtual void startSelectorProfiler(ErrorString*);
</span><del>-    virtual void stopSelectorProfiler(ErrorString*, RefPtr&lt;TypeBuilder::CSS::SelectorProfile&gt;&amp;);
</del><ins>+    virtual void stopSelectorProfiler(ErrorString*, RefPtr&lt;Inspector::TypeBuilder::CSS::SelectorProfile&gt;&amp;);
</ins><span class="cx"> 
</span><del>-    PassRefPtr&lt;TypeBuilder::CSS::SelectorProfile&gt; stopSelectorProfilerImpl(ErrorString*, bool needProfile);
</del><ins>+    PassRefPtr&lt;Inspector::TypeBuilder::CSS::SelectorProfile&gt; stopSelectorProfilerImpl(ErrorString*, bool needProfile);
</ins><span class="cx">     void willMatchRule(StyleRule*, InspectorCSSOMWrappers&amp;, DocumentStyleSheetCollection&amp;);
</span><span class="cx">     void didMatchRule(bool);
</span><span class="cx">     void willProcessRule(StyleRule*, StyleResolver&amp;);
</span><span class="lines">@@ -158,20 +158,20 @@
</span><span class="cx">     InspectorStyleSheetForInlineStyle* asInspectorStyleSheet(Element* element);
</span><span class="cx">     Element* elementForId(ErrorString*, int nodeId);
</span><span class="cx">     int documentNodeWithRequestedFlowsId(Document*);
</span><del>-    void collectStyleSheets(CSSStyleSheet*, TypeBuilder::Array&lt;WebCore::TypeBuilder::CSS::CSSStyleSheetHeader&gt;*);
</del><ins>+    void collectStyleSheets(CSSStyleSheet*, Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::CSSStyleSheetHeader&gt;*);
</ins><span class="cx"> 
</span><span class="cx">     InspectorStyleSheet* bindStyleSheet(CSSStyleSheet*);
</span><span class="cx">     InspectorStyleSheet* viaInspectorStyleSheet(Document*, bool createIfAbsent);
</span><span class="cx">     InspectorStyleSheet* assertStyleSheetForId(ErrorString*, const String&amp;);
</span><del>-    TypeBuilder::CSS::StyleSheetOrigin::Enum detectOrigin(CSSStyleSheet* pageStyleSheet, Document* ownerDocument);
</del><ins>+    Inspector::TypeBuilder::CSS::StyleSheetOrigin::Enum detectOrigin(CSSStyleSheet* pageStyleSheet, Document* ownerDocument);
</ins><span class="cx"> 
</span><del>-    PassRefPtr&lt;TypeBuilder::CSS::CSSRule&gt; buildObjectForRule(StyleRule*, StyleResolver&amp;);
-    PassRefPtr&lt;TypeBuilder::CSS::CSSRule&gt; buildObjectForRule(CSSStyleRule*);
-    PassRefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::CSS::CSSRule&gt;&gt; buildArrayForRuleList(CSSRuleList*);
-    PassRefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::CSS::RuleMatch&gt;&gt; buildArrayForMatchedRuleList(const Vector&lt;RefPtr&lt;StyleRuleBase&gt;&gt;&amp;, StyleResolver&amp;, Element*);
-    PassRefPtr&lt;TypeBuilder::CSS::CSSStyle&gt; buildObjectForAttributesStyle(Element*);
-    PassRefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::CSS::Region&gt;&gt; buildArrayForRegions(ErrorString*, PassRefPtr&lt;NodeList&gt;, int documentNodeId);
-    PassRefPtr&lt;TypeBuilder::CSS::NamedFlow&gt; buildObjectForNamedFlow(ErrorString*, WebKitNamedFlow*, int documentNodeId);
</del><ins>+    PassRefPtr&lt;Inspector::TypeBuilder::CSS::CSSRule&gt; buildObjectForRule(StyleRule*, StyleResolver&amp;);
+    PassRefPtr&lt;Inspector::TypeBuilder::CSS::CSSRule&gt; buildObjectForRule(CSSStyleRule*);
+    PassRefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::CSSRule&gt;&gt; buildArrayForRuleList(CSSRuleList*);
+    PassRefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::RuleMatch&gt;&gt; buildArrayForMatchedRuleList(const Vector&lt;RefPtr&lt;StyleRuleBase&gt;&gt;&amp;, StyleResolver&amp;, Element*);
+    PassRefPtr&lt;Inspector::TypeBuilder::CSS::CSSStyle&gt; buildObjectForAttributesStyle(Element*);
+    PassRefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::Region&gt;&gt; buildArrayForRegions(ErrorString*, PassRefPtr&lt;NodeList&gt;, int documentNodeId);
+    PassRefPtr&lt;Inspector::TypeBuilder::CSS::NamedFlow&gt; buildObjectForNamedFlow(ErrorString*, WebKitNamedFlow*, int documentNodeId);
</ins><span class="cx"> 
</span><span class="cx">     // InspectorDOMAgent::DOMListener implementation
</span><span class="cx">     virtual void didRemoveDocument(Document*);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorCanvasAgentcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorCanvasAgent.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorCanvasAgent.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorCanvasAgent.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -47,22 +47,24 @@
</span><span class="cx"> #include &quot;MainFrame.h&quot;
</span><span class="cx"> #include &quot;NodeList.h&quot;
</span><span class="cx"> #include &quot;Page.h&quot;
</span><del>-#include &quot;ScriptObject.h&quot;
</del><span class="cx"> #include &quot;ScriptProfiler.h&quot;
</span><span class="cx"> #include &quot;ScriptState.h&quot;
</span><ins>+#include &lt;bindings/ScriptObject.h&gt;
</ins><span class="cx"> 
</span><del>-using WebCore::TypeBuilder::Array;
-using WebCore::TypeBuilder::Canvas::ResourceId;
-using WebCore::TypeBuilder::Canvas::ResourceInfo;
-using WebCore::TypeBuilder::Canvas::ResourceState;
-using WebCore::TypeBuilder::Canvas::TraceLog;
-using WebCore::TypeBuilder::Canvas::TraceLogId;
-using WebCore::TypeBuilder::Network::FrameId;
</del><ins>+using Inspector::TypeBuilder::Array;
+using Inspector::TypeBuilder::Canvas::ResourceId;
+using Inspector::TypeBuilder::Canvas::ResourceInfo;
+using Inspector::TypeBuilder::Canvas::ResourceState;
+using Inspector::TypeBuilder::Canvas::TraceLog;
+using Inspector::TypeBuilder::Canvas::TraceLogId;
+using Inspector::TypeBuilder::Network::FrameId;
</ins><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> InspectorCanvasAgent::InspectorCanvasAgent(InstrumentingAgents* instrumentingAgents, InspectorPageAgent* pageAgent, InjectedScriptManager* injectedScriptManager)
</span><del>-    : InspectorBaseAgent(ASCIILiteral(&quot;Canvas&quot;), instrumentingAgents)
</del><ins>+    : InspectorAgentBase(ASCIILiteral(&quot;Canvas&quot;), instrumentingAgents)
</ins><span class="cx">     , m_pageAgent(pageAgent)
</span><span class="cx">     , m_injectedScriptManager(injectedScriptManager)
</span><span class="cx">     , m_enabled(false)
</span><span class="lines">@@ -73,7 +75,7 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorCanvasAgent::didCreateFrontendAndBackend(InspectorFrontendChannel* frontendChannel, InspectorBackendDispatcher* backendDispatcher)
</del><ins>+void InspectorCanvasAgent::didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel* frontendChannel, InspectorBackendDispatcher* backendDispatcher)
</ins><span class="cx"> {
</span><span class="cx">     m_frontendDispatcher = std::make_unique&lt;InspectorCanvasFrontendDispatcher&gt;(frontendChannel);
</span><span class="cx">     m_backendDispatcher = InspectorCanvasBackendDispatcher::create(backendDispatcher, this);
</span><span class="lines">@@ -178,27 +180,27 @@
</span><span class="cx">         module.resourceState(errorString, traceLogId, resourceId, &amp;result);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-ScriptObject InspectorCanvasAgent::wrapCanvas2DRenderingContextForInstrumentation(const ScriptObject&amp; context)
</del><ins>+Deprecated::ScriptObject InspectorCanvasAgent::wrapCanvas2DRenderingContextForInstrumentation(const Deprecated::ScriptObject&amp; context)
</ins><span class="cx"> {
</span><span class="cx">     ErrorString error;
</span><span class="cx">     InjectedScriptCanvasModule module = injectedScriptCanvasModule(&amp;error, context);
</span><span class="cx">     if (module.hasNoValue())
</span><del>-        return ScriptObject();
</del><ins>+        return Deprecated::ScriptObject();
</ins><span class="cx">     return notifyRenderingContextWasWrapped(module.wrapCanvas2DContext(context));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEBGL)
</span><del>-ScriptObject InspectorCanvasAgent::wrapWebGLRenderingContextForInstrumentation(const ScriptObject&amp; glContext)
</del><ins>+Deprecated::ScriptObject InspectorCanvasAgent::wrapWebGLRenderingContextForInstrumentation(const Deprecated::ScriptObject&amp; glContext)
</ins><span class="cx"> {
</span><span class="cx">     ErrorString error;
</span><span class="cx">     InjectedScriptCanvasModule module = injectedScriptCanvasModule(&amp;error, glContext);
</span><span class="cx">     if (module.hasNoValue())
</span><del>-        return ScriptObject();
</del><ins>+        return Deprecated::ScriptObject();
</ins><span class="cx">     return notifyRenderingContextWasWrapped(module.wrapWebGLContext(glContext));
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-ScriptObject InspectorCanvasAgent::notifyRenderingContextWasWrapped(const ScriptObject&amp; wrappedContext)
</del><ins>+Deprecated::ScriptObject InspectorCanvasAgent::notifyRenderingContextWasWrapped(const Deprecated::ScriptObject&amp; wrappedContext)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(m_frontendDispatcher);
</span><span class="cx">     JSC::ExecState* scriptState = wrappedContext.scriptState();
</span><span class="lines">@@ -224,13 +226,13 @@
</span><span class="cx">     return module;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-InjectedScriptCanvasModule InspectorCanvasAgent::injectedScriptCanvasModule(ErrorString* errorString, const ScriptObject&amp; scriptObject)
</del><ins>+InjectedScriptCanvasModule InspectorCanvasAgent::injectedScriptCanvasModule(ErrorString* errorString, const Deprecated::ScriptObject&amp; scriptObject)
</ins><span class="cx"> {
</span><span class="cx">     if (!checkIsEnabled(errorString))
</span><span class="cx">         return InjectedScriptCanvasModule();
</span><span class="cx">     if (scriptObject.hasNoValue()) {
</span><span class="cx">         ASSERT_NOT_REACHED();
</span><del>-        *errorString = &quot;Internal error: original ScriptObject has no value&quot;;
</del><ins>+        *errorString = &quot;Internal error: original Deprecated::ScriptObject has no value&quot;;
</ins><span class="cx">         return InjectedScriptCanvasModule();
</span><span class="cx">     }
</span><span class="cx">     return injectedScriptCanvasModule(errorString, scriptObject.scriptState());
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorCanvasAgenth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorCanvasAgent.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorCanvasAgent.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorCanvasAgent.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -33,15 +33,20 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><span class="cx"> 
</span><del>-#include &quot;InspectorBaseAgent.h&quot;
</del><ins>+#include &quot;InspectorBackendDispatchers.h&quot;
</ins><span class="cx"> #include &quot;InspectorFrontend.h&quot;
</span><del>-#include &quot;InspectorTypeBuilder.h&quot;
</del><ins>+#include &quot;InspectorWebAgentBase.h&quot;
+#include &quot;InspectorWebTypeBuilders.h&quot;
</ins><span class="cx"> #include &quot;ScriptState.h&quot;
</span><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="cx"> #include &lt;wtf/PassOwnPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/PassRefPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><ins>+namespace Deprecated {
+class ScriptObject;
+}
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class Frame;
</span><span class="lines">@@ -49,11 +54,10 @@
</span><span class="cx"> class InjectedScriptManager;
</span><span class="cx"> class InspectorPageAgent;
</span><span class="cx"> class InstrumentingAgents;
</span><del>-class ScriptObject;
</del><span class="cx"> 
</span><span class="cx"> typedef String ErrorString;
</span><span class="cx"> 
</span><del>-class InspectorCanvasAgent : public InspectorBaseAgent, public InspectorCanvasBackendDispatcherHandler {
</del><ins>+class InspectorCanvasAgent : public InspectorAgentBase, public InspectorCanvasBackendDispatcherHandler {
</ins><span class="cx"> public:
</span><span class="cx">     static PassOwnPtr&lt;InspectorCanvasAgent&gt; create(InstrumentingAgents* instrumentingAgents, InspectorPageAgent* pageAgent, InjectedScriptManager* injectedScriptManager)
</span><span class="cx">     {
</span><span class="lines">@@ -61,7 +65,7 @@
</span><span class="cx">     }
</span><span class="cx">     ~InspectorCanvasAgent();
</span><span class="cx"> 
</span><del>-    virtual void didCreateFrontendAndBackend(InspectorFrontendChannel*, InspectorBackendDispatcher*) OVERRIDE;
</del><ins>+    virtual void didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel*, Inspector::InspectorBackendDispatcher*) OVERRIDE;
</ins><span class="cx">     virtual void willDestroyFrontendAndBackend() OVERRIDE;
</span><span class="cx"> 
</span><span class="cx">     void frameNavigated(Frame*);
</span><span class="lines">@@ -69,34 +73,34 @@
</span><span class="cx">     void didBeginFrame();
</span><span class="cx"> 
</span><span class="cx">     // Called from InspectorCanvasInstrumentation.
</span><del>-    ScriptObject wrapCanvas2DRenderingContextForInstrumentation(const ScriptObject&amp;);
</del><ins>+    Deprecated::ScriptObject wrapCanvas2DRenderingContextForInstrumentation(const Deprecated::ScriptObject&amp;);
</ins><span class="cx"> #if ENABLE(WEBGL)
</span><del>-    ScriptObject wrapWebGLRenderingContextForInstrumentation(const ScriptObject&amp;);
</del><ins>+    Deprecated::ScriptObject wrapWebGLRenderingContextForInstrumentation(const Deprecated::ScriptObject&amp;);
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     // Called from the front-end.
</span><span class="cx">     virtual void enable(ErrorString*);
</span><span class="cx">     virtual void disable(ErrorString*);
</span><del>-    virtual void dropTraceLog(ErrorString*, const TypeBuilder::Canvas::TraceLogId&amp;);
</del><ins>+    virtual void dropTraceLog(ErrorString*, const Inspector::TypeBuilder::Canvas::TraceLogId&amp;);
</ins><span class="cx">     virtual void hasUninstrumentedCanvases(ErrorString*, bool*);
</span><del>-    virtual void captureFrame(ErrorString*, const TypeBuilder::Network::FrameId*, TypeBuilder::Canvas::TraceLogId*);
-    virtual void startCapturing(ErrorString*, const TypeBuilder::Network::FrameId*, TypeBuilder::Canvas::TraceLogId*);
-    virtual void stopCapturing(ErrorString*, const TypeBuilder::Canvas::TraceLogId&amp;);
-    virtual void getTraceLog(ErrorString*, const TypeBuilder::Canvas::TraceLogId&amp;, const int*, const int*, RefPtr&lt;TypeBuilder::Canvas::TraceLog&gt;&amp;);
-    virtual void replayTraceLog(ErrorString*, const TypeBuilder::Canvas::TraceLogId&amp;, int, RefPtr&lt;TypeBuilder::Canvas::ResourceState&gt;&amp;);
-    virtual void getResourceInfo(ErrorString*, const TypeBuilder::Canvas::ResourceId&amp;, RefPtr&lt;TypeBuilder::Canvas::ResourceInfo&gt;&amp;);
-    virtual void getResourceState(ErrorString*, const TypeBuilder::Canvas::TraceLogId&amp;, const TypeBuilder::Canvas::ResourceId&amp;, RefPtr&lt;TypeBuilder::Canvas::ResourceState&gt;&amp;);
</del><ins>+    virtual void captureFrame(ErrorString*, const Inspector::TypeBuilder::Network::FrameId*, Inspector::TypeBuilder::Canvas::TraceLogId*);
+    virtual void startCapturing(ErrorString*, const Inspector::TypeBuilder::Network::FrameId*, Inspector::TypeBuilder::Canvas::TraceLogId*);
+    virtual void stopCapturing(ErrorString*, const Inspector::TypeBuilder::Canvas::TraceLogId&amp;);
+    virtual void getTraceLog(ErrorString*, const Inspector::TypeBuilder::Canvas::TraceLogId&amp;, const int*, const int*, RefPtr&lt;Inspector::TypeBuilder::Canvas::TraceLog&gt;&amp;);
+    virtual void replayTraceLog(ErrorString*, const Inspector::TypeBuilder::Canvas::TraceLogId&amp;, int, RefPtr&lt;Inspector::TypeBuilder::Canvas::ResourceState&gt;&amp;);
+    virtual void getResourceInfo(ErrorString*, const Inspector::TypeBuilder::Canvas::ResourceId&amp;, RefPtr&lt;Inspector::TypeBuilder::Canvas::ResourceInfo&gt;&amp;);
+    virtual void getResourceState(ErrorString*, const Inspector::TypeBuilder::Canvas::TraceLogId&amp;, const Inspector::TypeBuilder::Canvas::ResourceId&amp;, RefPtr&lt;Inspector::TypeBuilder::Canvas::ResourceState&gt;&amp;);
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     InspectorCanvasAgent(InstrumentingAgents*, InspectorPageAgent*, InjectedScriptManager*);
</span><span class="cx"> 
</span><span class="cx">     InjectedScriptCanvasModule injectedScriptCanvasModule(ErrorString*, JSC::ExecState*);
</span><del>-    InjectedScriptCanvasModule injectedScriptCanvasModule(ErrorString*, const ScriptObject&amp;);
</del><ins>+    InjectedScriptCanvasModule injectedScriptCanvasModule(ErrorString*, const Deprecated::ScriptObject&amp;);
</ins><span class="cx">     InjectedScriptCanvasModule injectedScriptCanvasModule(ErrorString*, const String&amp;);
</span><span class="cx"> 
</span><span class="cx">     void findFramesWithUninstrumentedCanvases();
</span><span class="cx">     bool checkIsEnabled(ErrorString*) const;
</span><del>-    ScriptObject notifyRenderingContextWasWrapped(const ScriptObject&amp;);
</del><ins>+    Deprecated::ScriptObject notifyRenderingContextWasWrapped(const Deprecated::ScriptObject&amp;);
</ins><span class="cx"> 
</span><span class="cx">     InspectorPageAgent* m_pageAgent;
</span><span class="cx">     InjectedScriptManager* m_injectedScriptManager;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorCanvasInstrumentationh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorCanvasInstrumentation.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorCanvasInstrumentation.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorCanvasInstrumentation.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -34,11 +34,11 @@
</span><span class="cx"> #include &quot;InspectorCanvasAgent.h&quot;
</span><span class="cx"> #include &quot;InspectorInstrumentation.h&quot;
</span><span class="cx"> #include &quot;InstrumentingAgents.h&quot;
</span><del>-#include &quot;ScriptObject.h&quot;
</del><ins>+#include &lt;bindings/ScriptObject.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-ScriptObject InspectorInstrumentation::wrapCanvas2DRenderingContextForInstrumentation(Document* document, const ScriptObject&amp; context)
</del><ins>+Deprecated::ScriptObject InspectorInstrumentation::wrapCanvas2DRenderingContextForInstrumentation(Document* document, const Deprecated::ScriptObject&amp; context)
</ins><span class="cx"> {
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><span class="cx">     if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(document)) {
</span><span class="lines">@@ -49,11 +49,11 @@
</span><span class="cx">     UNUSED_PARAM(document);
</span><span class="cx">     UNUSED_PARAM(context);
</span><span class="cx"> #endif
</span><del>-    return ScriptObject();
</del><ins>+    return Deprecated::ScriptObject();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEBGL)
</span><del>-ScriptObject InspectorInstrumentation::wrapWebGLRenderingContextForInstrumentation(Document* document, const ScriptObject&amp; glContext)
</del><ins>+Deprecated::ScriptObject InspectorInstrumentation::wrapWebGLRenderingContextForInstrumentation(Document* document, const Deprecated::ScriptObject&amp; glContext)
</ins><span class="cx"> {
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><span class="cx">     if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(document)) {
</span><span class="lines">@@ -64,7 +64,7 @@
</span><span class="cx">     UNUSED_PARAM(document);
</span><span class="cx">     UNUSED_PARAM(glContext);
</span><span class="cx"> #endif
</span><del>-    return ScriptObject();
</del><ins>+    return Deprecated::ScriptObject();
</ins><span class="cx"> }
</span><span class="cx"> #endif // ENABLE(WEBGL)
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorClientcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorClient.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorClient.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorClient.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -38,8 +38,10 @@
</span><span class="cx"> #include &quot;Page.h&quot;
</span><span class="cx"> #include &quot;ScriptController.h&quot;
</span><span class="cx"> #include &quot;ScriptSourceCode.h&quot;
</span><del>-#include &quot;ScriptValue.h&quot;
</del><ins>+#include &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> bool InspectorClient::doDispatchMessageOnFrontendPage(Page* frontendPage, const String&amp; message)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorClienth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorClient.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorClient.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorClient.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -27,6 +27,7 @@
</span><span class="cx"> #ifndef InspectorClient_h
</span><span class="cx"> #define InspectorClient_h
</span><span class="cx"> 
</span><ins>+#include &quot;InspectorForwarding.h&quot;
</ins><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="cx"> #include &lt;wtf/HashSet.h&gt;
</span><span class="lines">@@ -34,7 +35,6 @@
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class InspectorController;
</span><del>-class InspectorFrontendChannel;
</del><span class="cx"> class Frame;
</span><span class="cx"> class Page;
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorConsoleAgentcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorConsoleAgent.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorConsoleAgent.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorConsoleAgent.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -43,14 +43,16 @@
</span><span class="cx"> #include &quot;ScriptCallStack.h&quot;
</span><span class="cx"> #include &quot;ScriptCallStackFactory.h&quot;
</span><span class="cx"> #include &quot;ScriptController.h&quot;
</span><del>-#include &quot;ScriptObject.h&quot;
</del><span class="cx"> #include &quot;ScriptProfiler.h&quot;
</span><ins>+#include &lt;bindings/ScriptObject.h&gt;
</ins><span class="cx"> #include &lt;wtf/CurrentTime.h&gt;
</span><span class="cx"> #include &lt;wtf/OwnPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/PassOwnPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/text/StringBuilder.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> static const unsigned maximumConsoleMessages = 1000;
</span><span class="lines">@@ -59,7 +61,7 @@
</span><span class="cx"> int InspectorConsoleAgent::s_enabledAgentCount = 0;
</span><span class="cx"> 
</span><span class="cx"> InspectorConsoleAgent::InspectorConsoleAgent(InstrumentingAgents* instrumentingAgents, InjectedScriptManager* injectedScriptManager)
</span><del>-    : InspectorBaseAgent(ASCIILiteral(&quot;Console&quot;), instrumentingAgents)
</del><ins>+    : InspectorAgentBase(ASCIILiteral(&quot;Console&quot;), instrumentingAgents)
</ins><span class="cx">     , m_injectedScriptManager(injectedScriptManager)
</span><span class="cx">     , m_previousMessage(0)
</span><span class="cx">     , m_expiredConsoleMessageCount(0)
</span><span class="lines">@@ -122,7 +124,7 @@
</span><span class="cx">     m_counts.clear();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorConsoleAgent::didCreateFrontendAndBackend(InspectorFrontendChannel* frontendChannel, InspectorBackendDispatcher* backendDispatcher)
</del><ins>+void InspectorConsoleAgent::didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel* frontendChannel, InspectorBackendDispatcher* backendDispatcher)
</ins><span class="cx"> {
</span><span class="cx">     m_frontendDispatcher = std::make_unique&lt;InspectorConsoleFrontendDispatcher&gt;(frontendChannel);
</span><span class="cx">     m_backendDispatcher = InspectorConsoleBackendDispatcher::create(backendDispatcher, this);
</span><span class="lines">@@ -320,7 +322,7 @@
</span><span class="cx"> class InspectableHeapObject : public InjectedScriptHost::InspectableObject {
</span><span class="cx"> public:
</span><span class="cx">     explicit InspectableHeapObject(int heapObjectId) : m_heapObjectId(heapObjectId) { }
</span><del>-    virtual ScriptValue get(JSC::ExecState*)
</del><ins>+    virtual Deprecated::ScriptValue get(JSC::ExecState*)
</ins><span class="cx">     {
</span><span class="cx">         return ScriptProfiler::objectByHeapObjectId(m_heapObjectId);
</span><span class="cx">     }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorConsoleAgenth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorConsoleAgent.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorConsoleAgent.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorConsoleAgent.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -29,8 +29,9 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;ConsoleAPITypes.h&quot;
</span><span class="cx"> #include &quot;ConsoleTypes.h&quot;
</span><del>-#include &quot;InspectorBaseAgent.h&quot;
</del><ins>+#include &quot;InspectorBackendDispatchers.h&quot;
</ins><span class="cx"> #include &quot;InspectorFrontend.h&quot;
</span><ins>+#include &quot;InspectorWebAgentBase.h&quot;
</ins><span class="cx"> #include &quot;ScriptState.h&quot;
</span><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="lines">@@ -52,7 +53,7 @@
</span><span class="cx"> 
</span><span class="cx"> typedef String ErrorString;
</span><span class="cx"> 
</span><del>-class InspectorConsoleAgent : public InspectorBaseAgent, public InspectorConsoleBackendDispatcherHandler {
</del><ins>+class InspectorConsoleAgent : public InspectorAgentBase, public InspectorConsoleBackendDispatcherHandler {
</ins><span class="cx">     WTF_MAKE_NONCOPYABLE(InspectorConsoleAgent);
</span><span class="cx"> public:
</span><span class="cx">     InspectorConsoleAgent(InstrumentingAgents*, InjectedScriptManager*);
</span><span class="lines">@@ -64,7 +65,7 @@
</span><span class="cx">     bool enabled() const { return m_enabled; }
</span><span class="cx">     void reset();
</span><span class="cx"> 
</span><del>-    virtual void didCreateFrontendAndBackend(InspectorFrontendChannel*, InspectorBackendDispatcher*) OVERRIDE;
</del><ins>+    virtual void didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel*, Inspector::InspectorBackendDispatcher*) OVERRIDE;
</ins><span class="cx">     virtual void willDestroyFrontendAndBackend() OVERRIDE;
</span><span class="cx"> 
</span><span class="cx">     void addMessageToConsole(MessageSource, MessageType, MessageLevel, const String&amp; message, JSC::ExecState*, PassRefPtr&lt;ScriptArguments&gt;, unsigned long requestIdentifier = 0);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorControllercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorController.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorController.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorController.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -42,7 +42,6 @@
</span><span class="cx"> #include &quot;InspectorAgent.h&quot;
</span><span class="cx"> #include &quot;InspectorApplicationCacheAgent.h&quot;
</span><span class="cx"> #include &quot;InspectorBackendDispatchers.h&quot;
</span><del>-#include &quot;InspectorBaseAgent.h&quot;
</del><span class="cx"> #include &quot;InspectorCSSAgent.h&quot;
</span><span class="cx"> #include &quot;InspectorCanvasAgent.h&quot;
</span><span class="cx"> #include &quot;InspectorClient.h&quot;
</span><span class="lines">@@ -71,9 +70,11 @@
</span><span class="cx"> #include &quot;PageDebuggerAgent.h&quot;
</span><span class="cx"> #include &quot;PageRuntimeAgent.h&quot;
</span><span class="cx"> #include &quot;Page.h&quot;
</span><del>-#include &quot;ScriptObject.h&quot;
</del><span class="cx"> #include &quot;Settings.h&quot;
</span><ins>+#include &lt;inspector/InspectorBackendDispatcher.h&gt;
</ins><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> InspectorController::InspectorController(Page* page, InspectorClient* inspectorClient)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorControllerh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorController.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorController.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorController.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -33,13 +33,18 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><span class="cx"> 
</span><del>-#include &quot;InspectorAgentRegistry.h&quot;
-#include &quot;InspectorBaseAgent.h&quot;
</del><ins>+#include &lt;inspector/InspectorAgentRegistry.h&gt;
</ins><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="cx"> #include &lt;wtf/Noncopyable.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><ins>+namespace Inspector {
+class InspectorObject;
+class InspectorFrontendChannel;
+class InspectorBackendDispatcher;
+}
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class DOMWrapperWorld;
</span><span class="lines">@@ -48,15 +53,12 @@
</span><span class="cx"> class InjectedScriptManager;
</span><span class="cx"> class InspectorAgent;
</span><span class="cx"> class InspectorApplicationCacheAgent;
</span><del>-class InspectorBackendDispatcher;
</del><span class="cx"> class InspectorClient;
</span><span class="cx"> class InspectorDOMAgent;
</span><span class="cx"> class InspectorDOMDebuggerAgent;
</span><span class="cx"> class InspectorDebuggerAgent;
</span><del>-class InspectorFrontendChannel;
</del><span class="cx"> class InspectorFrontendClient;
</span><span class="cx"> class InspectorMemoryAgent;
</span><del>-class InspectorObject;
</del><span class="cx"> class InspectorOverlay;
</span><span class="cx"> class InspectorPageAgent;
</span><span class="cx"> class InspectorProfilerAgent;
</span><span class="lines">@@ -95,7 +97,7 @@
</span><span class="cx">     bool hasLocalFrontend() const;
</span><span class="cx">     bool hasRemoteFrontend() const;
</span><span class="cx"> 
</span><del>-    void connectFrontend(InspectorFrontendChannel*);
</del><ins>+    void connectFrontend(Inspector::InspectorFrontendChannel*);
</ins><span class="cx">     void disconnectFrontend();
</span><span class="cx">     void setProcessId(long);
</span><span class="cx"> 
</span><span class="lines">@@ -111,7 +113,7 @@
</span><span class="cx"> 
</span><span class="cx">     void setIndicating(bool);
</span><span class="cx"> 
</span><del>-    PassRefPtr&lt;InspectorObject&gt; buildObjectForHighlightedNode() const;
</del><ins>+    PassRefPtr&lt;Inspector::InspectorObject&gt; buildObjectForHighlightedNode() const;
</ins><span class="cx"> 
</span><span class="cx">     bool isUnderTest();
</span><span class="cx">     void evaluateForTestInFrontend(long callId, const String&amp; script);
</span><span class="lines">@@ -154,12 +156,12 @@
</span><span class="cx">     InspectorProfilerAgent* m_profilerAgent;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    RefPtr&lt;InspectorBackendDispatcher&gt; m_inspectorBackendDispatcher;
</del><ins>+    RefPtr&lt;Inspector::InspectorBackendDispatcher&gt; m_inspectorBackendDispatcher;
</ins><span class="cx">     OwnPtr&lt;InspectorFrontendClient&gt; m_inspectorFrontendClient;
</span><del>-    InspectorFrontendChannel* m_inspectorFrontendChannel;
</del><ins>+    Inspector::InspectorFrontendChannel* m_inspectorFrontendChannel;
</ins><span class="cx">     Page* m_page;
</span><span class="cx">     InspectorClient* m_inspectorClient;
</span><del>-    InspectorAgentRegistry m_agents;
</del><ins>+    Inspector::InspectorAgentRegistry m_agents;
</ins><span class="cx">     bool m_isUnderTest;
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(REMOTE_INSPECTOR)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorDOMAgentcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorDOMAgent.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorDOMAgent.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorDOMAgent.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -101,6 +101,8 @@
</span><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> using namespace HTMLNames;
</span><span class="lines">@@ -210,7 +212,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> InspectorDOMAgent::InspectorDOMAgent(InstrumentingAgents* instrumentingAgents, InspectorPageAgent* pageAgent, InjectedScriptManager* injectedScriptManager, InspectorOverlay* overlay, InspectorClient* client)
</span><del>-    : InspectorBaseAgent(ASCIILiteral(&quot;DOM&quot;), instrumentingAgents)
</del><ins>+    : InspectorAgentBase(ASCIILiteral(&quot;DOM&quot;), instrumentingAgents)
</ins><span class="cx">     , m_pageAgent(pageAgent)
</span><span class="cx">     , m_injectedScriptManager(injectedScriptManager)
</span><span class="cx">     , m_overlay(overlay)
</span><span class="lines">@@ -230,7 +232,7 @@
</span><span class="cx">     ASSERT(!m_searchingForNode);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDOMAgent::didCreateFrontendAndBackend(InspectorFrontendChannel* frontendChannel, InspectorBackendDispatcher* backendDispatcher)
</del><ins>+void InspectorDOMAgent::didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel* frontendChannel, InspectorBackendDispatcher* backendDispatcher)
</ins><span class="cx"> {
</span><span class="cx">     m_frontendDispatcher = std::make_unique&lt;InspectorDOMFrontendDispatcher&gt;(frontendChannel);
</span><span class="cx">     m_backendDispatcher = InspectorDOMBackendDispatcher::create(backendDispatcher, this);
</span><span class="lines">@@ -420,7 +422,7 @@
</span><span class="cx">     return element;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDOMAgent::getDocument(ErrorString* errorString, RefPtr&lt;TypeBuilder::DOM::Node&gt;&amp; root)
</del><ins>+void InspectorDOMAgent::getDocument(ErrorString* errorString, RefPtr&lt;Inspector::TypeBuilder::DOM::Node&gt;&amp; root)
</ins><span class="cx"> {
</span><span class="cx">     m_documentRequested = true;
</span><span class="cx"> 
</span><span class="lines">@@ -460,7 +462,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::DOM::Node&gt;&gt; children = buildArrayForContainerChildren(node, depth, nodeMap);
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::DOM::Node&gt;&gt; children = buildArrayForContainerChildren(node, depth, nodeMap);
</ins><span class="cx">     m_frontendDispatcher-&gt;setChildNodes(nodeId, children.release());
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -538,7 +540,7 @@
</span><span class="cx">         *elementId = pushNodePathToFrontend(element.get());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDOMAgent::querySelectorAll(ErrorString* errorString, int nodeId, const String&amp; selectors, RefPtr&lt;TypeBuilder::Array&lt;int&gt;&gt;&amp; result)
</del><ins>+void InspectorDOMAgent::querySelectorAll(ErrorString* errorString, int nodeId, const String&amp; selectors, RefPtr&lt;Inspector::TypeBuilder::Array&lt;int&gt;&gt;&amp; result)
</ins><span class="cx"> {
</span><span class="cx">     Node* node = assertNode(errorString, nodeId);
</span><span class="cx">     if (!node)
</span><span class="lines">@@ -555,7 +557,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    result = TypeBuilder::Array&lt;int&gt;::create();
</del><ins>+    result = Inspector::TypeBuilder::Array&lt;int&gt;::create();
</ins><span class="cx"> 
</span><span class="cx">     for (unsigned i = 0; i &lt; nodes-&gt;length(); ++i)
</span><span class="cx">         result-&gt;addItem(pushNodePathToFrontend(nodes-&gt;item(i)));
</span><span class="lines">@@ -586,7 +588,7 @@
</span><span class="cx">             OwnPtr&lt;NodeToIdMap&gt; newMap = adoptPtr(new NodeToIdMap);
</span><span class="cx">             danglingMap = newMap.get();
</span><span class="cx">             m_danglingNodeToIdMaps.append(newMap.release());
</span><del>-            RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::DOM::Node&gt;&gt; children = TypeBuilder::Array&lt;TypeBuilder::DOM::Node&gt;::create();
</del><ins>+            RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::DOM::Node&gt;&gt; children = Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::DOM::Node&gt;::create();
</ins><span class="cx">             children-&gt;addItem(buildObjectForNode(node, 0, danglingMap));
</span><span class="cx">             m_frontendDispatcher-&gt;setChildNodes(0, children);
</span><span class="cx">             break;
</span><span class="lines">@@ -813,9 +815,9 @@
</span><span class="cx">     m_domEditor-&gt;replaceWholeText(toText(node), value, errorString);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDOMAgent::getEventListenersForNode(ErrorString* errorString, int nodeId, const String* objectGroup, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::DOM::EventListener&gt;&gt;&amp; listenersArray)
</del><ins>+void InspectorDOMAgent::getEventListenersForNode(ErrorString* errorString, int nodeId, const String* objectGroup, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::DOM::EventListener&gt;&gt;&amp; listenersArray)
</ins><span class="cx"> {
</span><del>-    listenersArray = TypeBuilder::Array&lt;TypeBuilder::DOM::EventListener&gt;::create();
</del><ins>+    listenersArray = Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::DOM::EventListener&gt;::create();
</ins><span class="cx">     Node* node = assertNode(errorString, nodeId);
</span><span class="cx">     if (!node)
</span><span class="cx">         return;
</span><span class="lines">@@ -921,7 +923,7 @@
</span><span class="cx">     *resultCount = resultsVector.size();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDOMAgent::getSearchResults(ErrorString* errorString, const String&amp; searchId, int fromIndex, int toIndex, RefPtr&lt;TypeBuilder::Array&lt;int&gt;&gt;&amp; nodeIds)
</del><ins>+void InspectorDOMAgent::getSearchResults(ErrorString* errorString, const String&amp; searchId, int fromIndex, int toIndex, RefPtr&lt;Inspector::TypeBuilder::Array&lt;int&gt;&gt;&amp; nodeIds)
</ins><span class="cx"> {
</span><span class="cx">     SearchResults::iterator it = m_searchResults.find(searchId);
</span><span class="cx">     if (it == m_searchResults.end()) {
</span><span class="lines">@@ -935,7 +937,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    nodeIds = TypeBuilder::Array&lt;int&gt;::create();
</del><ins>+    nodeIds = Inspector::TypeBuilder::Array&lt;int&gt;::create();
</ins><span class="cx">     for (int i = fromIndex; i &lt; toIndex; ++i)
</span><span class="cx">         nodeIds-&gt;addItem(pushNodePathToFrontend((it-&gt;value)[i].get()));
</span><span class="cx"> }
</span><span class="lines">@@ -1212,7 +1214,7 @@
</span><span class="cx">     element-&gt;setFiles(fileList);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDOMAgent::resolveNode(ErrorString* errorString, int nodeId, const String* const objectGroup, RefPtr&lt;TypeBuilder::Runtime::RemoteObject&gt;&amp; result)
</del><ins>+void InspectorDOMAgent::resolveNode(ErrorString* errorString, int nodeId, const String* const objectGroup, RefPtr&lt;Inspector::TypeBuilder::Runtime::RemoteObject&gt;&amp; result)
</ins><span class="cx"> {
</span><span class="cx">     String objectGroupName = objectGroup ? *objectGroup : &quot;&quot;;
</span><span class="cx">     Node* node = nodeForId(nodeId);
</span><span class="lines">@@ -1220,7 +1222,7 @@
</span><span class="cx">         *errorString = &quot;No node with given id found&quot;;
</span><span class="cx">         return;
</span><span class="cx">     }
</span><del>-    RefPtr&lt;TypeBuilder::Runtime::RemoteObject&gt; object = resolveNode(node, objectGroupName);
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Runtime::RemoteObject&gt; object = resolveNode(node, objectGroupName);
</ins><span class="cx">     if (!object) {
</span><span class="cx">         *errorString = &quot;Node with given id does not belong to the document&quot;;
</span><span class="cx">         return;
</span><span class="lines">@@ -1228,7 +1230,7 @@
</span><span class="cx">     result = object;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDOMAgent::getAttributes(ErrorString* errorString, int nodeId, RefPtr&lt;TypeBuilder::Array&lt;String&gt;&gt;&amp; result)
</del><ins>+void InspectorDOMAgent::getAttributes(ErrorString* errorString, int nodeId, RefPtr&lt;Inspector::TypeBuilder::Array&lt;String&gt;&gt;&amp; result)
</ins><span class="cx"> {
</span><span class="cx">     Element* element = assertElement(errorString, nodeId);
</span><span class="cx">     if (!element)
</span><span class="lines">@@ -1260,7 +1262,7 @@
</span><span class="cx">     return document-&gt;completeURL(&quot;&quot;).string();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::DOM::Node&gt; InspectorDOMAgent::buildObjectForNode(Node* node, int depth, NodeToIdMap* nodesMap)
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::DOM::Node&gt; InspectorDOMAgent::buildObjectForNode(Node* node, int depth, NodeToIdMap* nodesMap)
</ins><span class="cx"> {
</span><span class="cx">     int id = bind(node, nodesMap);
</span><span class="cx">     String nodeName;
</span><span class="lines">@@ -1289,7 +1291,7 @@
</span><span class="cx">         break;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    RefPtr&lt;TypeBuilder::DOM::Node&gt; value = TypeBuilder::DOM::Node::create()
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::DOM::Node&gt; value = Inspector::TypeBuilder::DOM::Node::create()
</ins><span class="cx">         .setNodeId(id)
</span><span class="cx">         .setNodeType(static_cast&lt;int&gt;(node-&gt;nodeType()))
</span><span class="cx">         .setNodeName(nodeName)
</span><span class="lines">@@ -1299,7 +1301,7 @@
</span><span class="cx">     if (node-&gt;isContainerNode()) {
</span><span class="cx">         int nodeCount = innerChildNodeCount(node);
</span><span class="cx">         value-&gt;setChildNodeCount(nodeCount);
</span><del>-        RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::DOM::Node&gt;&gt; children = buildArrayForContainerChildren(node, depth, nodesMap);
</del><ins>+        RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::DOM::Node&gt;&gt; children = buildArrayForContainerChildren(node, depth, nodesMap);
</ins><span class="cx">         if (children-&gt;length() &gt; 0)
</span><span class="cx">             value-&gt;setChildren(children.release());
</span><span class="cx">     }
</span><span class="lines">@@ -1318,7 +1320,7 @@
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         if (ShadowRoot* root = element-&gt;shadowRoot()) {
</span><del>-            RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::DOM::Node&gt;&gt; shadowRoots = TypeBuilder::Array&lt;TypeBuilder::DOM::Node&gt;::create();
</del><ins>+            RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::DOM::Node&gt;&gt; shadowRoots = Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::DOM::Node&gt;::create();
</ins><span class="cx">             shadowRoots-&gt;addItem(buildObjectForNode(root, 0, nodesMap));
</span><span class="cx">             value-&gt;setShadowRoots(shadowRoots);
</span><span class="cx">         }
</span><span class="lines">@@ -1346,9 +1348,9 @@
</span><span class="cx">     return value.release();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::Array&lt;String&gt;&gt; InspectorDOMAgent::buildArrayForElementAttributes(Element* element)
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::Array&lt;String&gt;&gt; InspectorDOMAgent::buildArrayForElementAttributes(Element* element)
</ins><span class="cx"> {
</span><del>-    RefPtr&lt;TypeBuilder::Array&lt;String&gt;&gt; attributesValue = TypeBuilder::Array&lt;String&gt;::create();
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Array&lt;String&gt;&gt; attributesValue = Inspector::TypeBuilder::Array&lt;String&gt;::create();
</ins><span class="cx">     // Go through all attributes and serialize them.
</span><span class="cx">     if (!element-&gt;hasAttributes())
</span><span class="cx">         return attributesValue.release();
</span><span class="lines">@@ -1362,9 +1364,9 @@
</span><span class="cx">     return attributesValue.release();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::DOM::Node&gt;&gt; InspectorDOMAgent::buildArrayForContainerChildren(Node* container, int depth, NodeToIdMap* nodesMap)
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::DOM::Node&gt;&gt; InspectorDOMAgent::buildArrayForContainerChildren(Node* container, int depth, NodeToIdMap* nodesMap)
</ins><span class="cx"> {
</span><del>-    RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::DOM::Node&gt;&gt; children = TypeBuilder::Array&lt;TypeBuilder::DOM::Node&gt;::create();
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::DOM::Node&gt;&gt; children = Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::DOM::Node&gt;::create();
</ins><span class="cx">     if (depth == 0) {
</span><span class="cx">         // Special-case the only text child - pretend that container's children have been requested.
</span><span class="cx">         Node* firstChild = container-&gt;firstChild();
</span><span class="lines">@@ -1386,7 +1388,7 @@
</span><span class="cx">     return children.release();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::DOM::EventListener&gt; InspectorDOMAgent::buildObjectForEventListener(const RegisteredEventListener&amp; registeredEventListener, const AtomicString&amp; eventType, Node* node, const String* objectGroupId)
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::DOM::EventListener&gt; InspectorDOMAgent::buildObjectForEventListener(const RegisteredEventListener&amp; registeredEventListener, const AtomicString&amp; eventType, Node* node, const String* objectGroupId)
</ins><span class="cx"> {
</span><span class="cx">     RefPtr&lt;EventListener&gt; eventListener = registeredEventListener.listener;
</span><span class="cx"> 
</span><span class="lines">@@ -1414,7 +1416,7 @@
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    RefPtr&lt;TypeBuilder::DOM::EventListener&gt; value = TypeBuilder::DOM::EventListener::create()
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::DOM::EventListener&gt; value = Inspector::TypeBuilder::DOM::EventListener::create()
</ins><span class="cx">         .setType(eventType)
</span><span class="cx">         .setUseCapture(registeredEventListener.useCapture)
</span><span class="cx">         .setIsAttribute(eventListener-&gt;isAttribute())
</span><span class="lines">@@ -1423,10 +1425,10 @@
</span><span class="cx">     if (objectGroupId &amp;&amp; handler &amp;&amp; state) {
</span><span class="cx">         InjectedScript injectedScript = m_injectedScriptManager-&gt;injectedScriptFor(state);
</span><span class="cx">         if (!injectedScript.hasNoValue())
</span><del>-            value-&gt;setHandler(injectedScript.wrapObject(ScriptValue(state-&gt;vm(), handler), *objectGroupId));
</del><ins>+            value-&gt;setHandler(injectedScript.wrapObject(Deprecated::ScriptValue(state-&gt;vm(), handler), *objectGroupId));
</ins><span class="cx">     }
</span><span class="cx">     if (!scriptID.isNull()) {
</span><del>-        RefPtr&lt;TypeBuilder::Debugger::Location&gt; location = TypeBuilder::Debugger::Location::create()
</del><ins>+        RefPtr&lt;Inspector::TypeBuilder::Debugger::Location&gt; location = Inspector::TypeBuilder::Debugger::Location::create()
</ins><span class="cx">             .setScriptId(scriptID)
</span><span class="cx">             .setLineNumber(lineNumber);
</span><span class="cx">         value-&gt;setLocation(location.release());
</span><span class="lines">@@ -1509,7 +1511,7 @@
</span><span class="cx">     m_frontendDispatcher-&gt;childNodeRemoved(parentId, frameOwnerId);
</span><span class="cx">     unbind(frameOwner, &amp;m_documentNodeToIdMap);
</span><span class="cx"> 
</span><del>-    RefPtr&lt;TypeBuilder::DOM::Node&gt; value = buildObjectForNode(frameOwner, 0, &amp;m_documentNodeToIdMap);
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::DOM::Node&gt; value = buildObjectForNode(frameOwner, 0, &amp;m_documentNodeToIdMap);
</ins><span class="cx">     Node* previousSibling = innerPreviousSibling(frameOwner);
</span><span class="cx">     int prevId = previousSibling ? m_documentNodeToIdMap.get(previousSibling) : 0;
</span><span class="cx">     m_frontendDispatcher-&gt;childNodeInserted(parentId, prevId, value.release());
</span><span class="lines">@@ -1539,7 +1541,7 @@
</span><span class="cx">         // Children have been requested -&gt; return value of a new child.
</span><span class="cx">         Node* prevSibling = innerPreviousSibling(node);
</span><span class="cx">         int prevId = prevSibling ? m_documentNodeToIdMap.get(prevSibling) : 0;
</span><del>-        RefPtr&lt;TypeBuilder::DOM::Node&gt; value = buildObjectForNode(node, 0, &amp;m_documentNodeToIdMap);
</del><ins>+        RefPtr&lt;Inspector::TypeBuilder::DOM::Node&gt; value = buildObjectForNode(node, 0, &amp;m_documentNodeToIdMap);
</ins><span class="cx">         m_frontendDispatcher-&gt;childNodeInserted(parentId, prevId, value.release());
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="lines">@@ -1604,7 +1606,7 @@
</span><span class="cx"> 
</span><span class="cx"> void InspectorDOMAgent::styleAttributeInvalidated(const Vector&lt;Element*&gt;&amp; elements)
</span><span class="cx"> {
</span><del>-    RefPtr&lt;TypeBuilder::Array&lt;int&gt;&gt; nodeIds = TypeBuilder::Array&lt;int&gt;::create();
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Array&lt;int&gt;&gt; nodeIds = Inspector::TypeBuilder::Array&lt;int&gt;::create();
</ins><span class="cx">     for (unsigned i = 0, size = elements.size(); i &lt; size; ++i) {
</span><span class="cx">         Element* element = elements.at(i);
</span><span class="cx">         int id = boundNodeId(element);
</span><span class="lines">@@ -1729,7 +1731,7 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::Runtime::RemoteObject&gt; InspectorDOMAgent::resolveNode(Node* node, const String&amp; objectGroup)
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::Runtime::RemoteObject&gt; InspectorDOMAgent::resolveNode(Node* node, const String&amp; objectGroup)
</ins><span class="cx"> {
</span><span class="cx">     Frame* frame = node-&gt;document().frame();
</span><span class="cx">     if (!frame)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorDOMAgenth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorDOMAgent.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorDOMAgent.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorDOMAgent.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -33,13 +33,13 @@
</span><span class="cx"> #include &quot;EventTarget.h&quot;
</span><span class="cx"> #include &quot;InjectedScript.h&quot;
</span><span class="cx"> #include &quot;InjectedScriptManager.h&quot;
</span><del>-#include &quot;InspectorBaseAgent.h&quot;
</del><ins>+#include &quot;InspectorBackendDispatchers.h&quot;
</ins><span class="cx"> #include &quot;InspectorFrontend.h&quot;
</span><span class="cx"> #include &quot;InspectorOverlay.h&quot;
</span><del>-#include &quot;InspectorValues.h&quot;
</del><ins>+#include &quot;InspectorWebAgentBase.h&quot;
</ins><span class="cx"> #include &quot;RenderLayer.h&quot;
</span><span class="cx"> #include &quot;Timer.h&quot;
</span><del>-
</del><ins>+#include &lt;inspector/InspectorValues.h&gt;
</ins><span class="cx"> #include &lt;wtf/Deque.h&gt;
</span><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="cx"> #include &lt;wtf/HashSet.h&gt;
</span><span class="lines">@@ -49,7 +49,12 @@
</span><span class="cx"> #include &lt;wtf/Vector.h&gt;
</span><span class="cx"> #include &lt;wtf/text/AtomicString.h&gt;
</span><span class="cx"> 
</span><ins>+namespace Deprecated {
+class ScriptValue;
+}
+
</ins><span class="cx"> namespace WebCore {
</span><ins>+
</ins><span class="cx"> class ContainerNode;
</span><span class="cx"> class CharacterData;
</span><span class="cx"> class DOMEditor;
</span><span class="lines">@@ -66,7 +71,6 @@
</span><span class="cx"> class NameNodeMap;
</span><span class="cx"> class Node;
</span><span class="cx"> class RevalidateStyleAttributeTask;
</span><del>-class ScriptValue;
</del><span class="cx"> class ShadowRoot;
</span><span class="cx"> 
</span><span class="cx"> struct HighlightConfig;
</span><span class="lines">@@ -89,7 +93,7 @@
</span><span class="cx">     const EventListenerVector eventListenerVector;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-class InspectorDOMAgent : public InspectorBaseAgent, public InspectorDOMBackendDispatcherHandler {
</del><ins>+class InspectorDOMAgent : public InspectorAgentBase, public InspectorDOMBackendDispatcherHandler {
</ins><span class="cx">     WTF_MAKE_NONCOPYABLE(InspectorDOMAgent);
</span><span class="cx"> public:
</span><span class="cx">     struct DOMListener {
</span><span class="lines">@@ -110,7 +114,7 @@
</span><span class="cx"> 
</span><span class="cx">     ~InspectorDOMAgent();
</span><span class="cx"> 
</span><del>-    virtual void didCreateFrontendAndBackend(InspectorFrontendChannel*, InspectorBackendDispatcher*) OVERRIDE;
</del><ins>+    virtual void didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel*, Inspector::InspectorBackendDispatcher*) OVERRIDE;
</ins><span class="cx">     virtual void willDestroyFrontendAndBackend() OVERRIDE;
</span><span class="cx"> 
</span><span class="cx">     Vector&lt;Document*&gt; documents();
</span><span class="lines">@@ -118,8 +122,8 @@
</span><span class="cx"> 
</span><span class="cx">     // Methods called from the frontend for DOM nodes inspection.
</span><span class="cx">     virtual void querySelector(ErrorString*, int nodeId, const String&amp; selectors, int* elementId);
</span><del>-    virtual void querySelectorAll(ErrorString*, int nodeId, const String&amp; selectors, RefPtr&lt;TypeBuilder::Array&lt;int&gt;&gt;&amp; result);
-    virtual void getDocument(ErrorString*, RefPtr&lt;TypeBuilder::DOM::Node&gt;&amp; root);
</del><ins>+    virtual void querySelectorAll(ErrorString*, int nodeId, const String&amp; selectors, RefPtr&lt;Inspector::TypeBuilder::Array&lt;int&gt;&gt;&amp; result);
+    virtual void getDocument(ErrorString*, RefPtr&lt;Inspector::TypeBuilder::DOM::Node&gt;&amp; root);
</ins><span class="cx">     virtual void requestChildNodes(ErrorString*, int nodeId, const int* depth);
</span><span class="cx">     virtual void setAttributeValue(ErrorString*, int elementId, const String&amp; name, const String&amp; value);
</span><span class="cx">     virtual void setAttributesAsText(ErrorString*, int elementId, const String&amp; text, const String* name);
</span><span class="lines">@@ -129,29 +133,29 @@
</span><span class="cx">     virtual void getOuterHTML(ErrorString*, int nodeId, WTF::String* outerHTML);
</span><span class="cx">     virtual void setOuterHTML(ErrorString*, int nodeId, const String&amp; outerHTML);
</span><span class="cx">     virtual void setNodeValue(ErrorString*, int nodeId, const String&amp; value);
</span><del>-    virtual void getEventListenersForNode(ErrorString*, int nodeId, const WTF::String* objectGroup, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::DOM::EventListener&gt;&gt;&amp; listenersArray);
-    virtual void performSearch(ErrorString*, const String&amp; whitespaceTrimmedQuery, const RefPtr&lt;InspectorArray&gt;* nodeIds, String* searchId, int* resultCount);
-    virtual void getSearchResults(ErrorString*, const String&amp; searchId, int fromIndex, int toIndex, RefPtr&lt;TypeBuilder::Array&lt;int&gt;&gt;&amp;);
</del><ins>+    virtual void getEventListenersForNode(ErrorString*, int nodeId, const WTF::String* objectGroup, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::DOM::EventListener&gt;&gt;&amp; listenersArray);
+    virtual void performSearch(ErrorString*, const String&amp; whitespaceTrimmedQuery, const RefPtr&lt;Inspector::InspectorArray&gt;* nodeIds, String* searchId, int* resultCount);
+    virtual void getSearchResults(ErrorString*, const String&amp; searchId, int fromIndex, int toIndex, RefPtr&lt;Inspector::TypeBuilder::Array&lt;int&gt;&gt;&amp;);
</ins><span class="cx">     virtual void discardSearchResults(ErrorString*, const String&amp; searchId);
</span><del>-    virtual void resolveNode(ErrorString*, int nodeId, const String* objectGroup, RefPtr&lt;TypeBuilder::Runtime::RemoteObject&gt;&amp; result);
-    virtual void getAttributes(ErrorString*, int nodeId, RefPtr&lt;TypeBuilder::Array&lt;String&gt;&gt;&amp; result);
-    virtual void setInspectModeEnabled(ErrorString*, bool enabled, const RefPtr&lt;InspectorObject&gt;* highlightConfig);
</del><ins>+    virtual void resolveNode(ErrorString*, int nodeId, const String* objectGroup, RefPtr&lt;Inspector::TypeBuilder::Runtime::RemoteObject&gt;&amp; result);
+    virtual void getAttributes(ErrorString*, int nodeId, RefPtr&lt;Inspector::TypeBuilder::Array&lt;String&gt;&gt;&amp; result);
+    virtual void setInspectModeEnabled(ErrorString*, bool enabled, const RefPtr&lt;Inspector::InspectorObject&gt;* highlightConfig);
</ins><span class="cx">     virtual void requestNode(ErrorString*, const String&amp; objectId, int* nodeId);
</span><span class="cx">     virtual void pushNodeByPathToFrontend(ErrorString*, const String&amp; path, int* nodeId);
</span><span class="cx">     virtual void pushNodeByBackendIdToFrontend(ErrorString*, BackendNodeId, int* nodeId);
</span><span class="cx">     virtual void releaseBackendNodeIds(ErrorString*, const String&amp; nodeGroup);
</span><span class="cx">     virtual void hideHighlight(ErrorString*);
</span><del>-    virtual void highlightRect(ErrorString*, int x, int y, int width, int height, const RefPtr&lt;InspectorObject&gt;* color, const RefPtr&lt;InspectorObject&gt;* outlineColor, const bool* usePageCoordinates);
-    virtual void highlightQuad(ErrorString*, const RefPtr&lt;InspectorArray&gt;&amp; quad, const RefPtr&lt;InspectorObject&gt;* color, const RefPtr&lt;InspectorObject&gt;* outlineColor, const bool* usePageCoordinates);
-    virtual void highlightNode(ErrorString*, const RefPtr&lt;InspectorObject&gt;&amp; highlightConfig, const int* nodeId, const String* objectId);
-    virtual void highlightFrame(ErrorString*, const String&amp; frameId, const RefPtr&lt;InspectorObject&gt;* color, const RefPtr&lt;InspectorObject&gt;* outlineColor);
</del><ins>+    virtual void highlightRect(ErrorString*, int x, int y, int width, int height, const RefPtr&lt;Inspector::InspectorObject&gt;* color, const RefPtr&lt;Inspector::InspectorObject&gt;* outlineColor, const bool* usePageCoordinates);
+    virtual void highlightQuad(ErrorString*, const RefPtr&lt;Inspector::InspectorArray&gt;&amp; quad, const RefPtr&lt;Inspector::InspectorObject&gt;* color, const RefPtr&lt;Inspector::InspectorObject&gt;* outlineColor, const bool* usePageCoordinates);
+    virtual void highlightNode(ErrorString*, const RefPtr&lt;Inspector::InspectorObject&gt;&amp; highlightConfig, const int* nodeId, const String* objectId);
+    virtual void highlightFrame(ErrorString*, const String&amp; frameId, const RefPtr&lt;Inspector::InspectorObject&gt;* color, const RefPtr&lt;Inspector::InspectorObject&gt;* outlineColor);
</ins><span class="cx"> 
</span><span class="cx">     virtual void moveTo(ErrorString*, int nodeId, int targetNodeId, const int* anchorNodeId, int* newNodeId);
</span><span class="cx">     virtual void undo(ErrorString*);
</span><span class="cx">     virtual void redo(ErrorString*);
</span><span class="cx">     virtual void markUndoableState(ErrorString*);
</span><span class="cx">     virtual void focus(ErrorString*, int nodeId);
</span><del>-    virtual void setFileInputFiles(ErrorString*, int nodeId, const RefPtr&lt;InspectorArray&gt;&amp; files);
</del><ins>+    virtual void setFileInputFiles(ErrorString*, int nodeId, const RefPtr&lt;Inspector::InspectorArray&gt;&amp; files);
</ins><span class="cx"> 
</span><span class="cx">     void getEventListeners(Node*, Vector&lt;EventListenerInfo&gt;&amp; listenersArray, bool includeAncestors);
</span><span class="cx"> 
</span><span class="lines">@@ -182,7 +186,7 @@
</span><span class="cx"> 
</span><span class="cx">     static String documentURLString(Document*);
</span><span class="cx"> 
</span><del>-    PassRefPtr&lt;TypeBuilder::Runtime::RemoteObject&gt; resolveNode(Node*, const String&amp; objectGroup);
</del><ins>+    PassRefPtr&lt;Inspector::TypeBuilder::Runtime::RemoteObject&gt; resolveNode(Node*, const String&amp; objectGroup);
</ins><span class="cx">     bool handleMousePress();
</span><span class="cx">     bool handleTouchEvent(Node*);
</span><span class="cx">     void mouseDidMoveOverElement(const HitTestResult&amp;, unsigned modifierFlags);
</span><span class="lines">@@ -210,8 +214,8 @@
</span><span class="cx"> private:
</span><span class="cx">     InspectorDOMAgent(InstrumentingAgents*, InspectorPageAgent*, InjectedScriptManager*, InspectorOverlay*, InspectorClient*);
</span><span class="cx"> 
</span><del>-    void setSearchingForNode(ErrorString*, bool enabled, InspectorObject* highlightConfig);
-    PassOwnPtr&lt;HighlightConfig&gt; highlightConfigFromInspectorObject(ErrorString*, InspectorObject* highlightInspectorObject);
</del><ins>+    void setSearchingForNode(ErrorString*, bool enabled, Inspector::InspectorObject* highlightConfig);
+    PassOwnPtr&lt;HighlightConfig&gt; highlightConfigFromInspectorObject(ErrorString*, Inspector::InspectorObject* highlightInspectorObject);
</ins><span class="cx"> 
</span><span class="cx">     // Node-related methods.
</span><span class="cx">     typedef HashMap&lt;RefPtr&lt;Node&gt;, int&gt; NodeToIdMap;
</span><span class="lines">@@ -226,18 +230,18 @@
</span><span class="cx"> 
</span><span class="cx">     bool hasBreakpoint(Node*, int type);
</span><span class="cx">     void updateSubtreeBreakpoints(Node* root, uint32_t rootMask, bool value);
</span><del>-    void descriptionForDOMEvent(Node* target, int breakpointType, bool insertion, PassRefPtr&lt;InspectorObject&gt; description);
</del><ins>+    void descriptionForDOMEvent(Node* target, int breakpointType, bool insertion, PassRefPtr&lt;Inspector::InspectorObject&gt; description);
</ins><span class="cx"> 
</span><del>-    PassRefPtr&lt;TypeBuilder::DOM::Node&gt; buildObjectForNode(Node*, int depth, NodeToIdMap*);
-    PassRefPtr&lt;TypeBuilder::Array&lt;String&gt;&gt; buildArrayForElementAttributes(Element*);
-    PassRefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::DOM::Node&gt;&gt; buildArrayForContainerChildren(Node* container, int depth, NodeToIdMap* nodesMap);
-    PassRefPtr&lt;TypeBuilder::DOM::EventListener&gt; buildObjectForEventListener(const RegisteredEventListener&amp;, const AtomicString&amp; eventType, Node*, const String* objectGroupId);
</del><ins>+    PassRefPtr&lt;Inspector::TypeBuilder::DOM::Node&gt; buildObjectForNode(Node*, int depth, NodeToIdMap*);
+    PassRefPtr&lt;Inspector::TypeBuilder::Array&lt;String&gt;&gt; buildArrayForElementAttributes(Element*);
+    PassRefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::DOM::Node&gt;&gt; buildArrayForContainerChildren(Node* container, int depth, NodeToIdMap* nodesMap);
+    PassRefPtr&lt;Inspector::TypeBuilder::DOM::EventListener&gt; buildObjectForEventListener(const RegisteredEventListener&amp;, const AtomicString&amp; eventType, Node*, const String* objectGroupId);
</ins><span class="cx"> 
</span><span class="cx">     Node* nodeForPath(const String&amp; path);
</span><span class="cx"> 
</span><span class="cx">     void discardBindings();
</span><span class="cx"> 
</span><del>-    void innerHighlightQuad(PassOwnPtr&lt;FloatQuad&gt;, const RefPtr&lt;InspectorObject&gt;* color, const RefPtr&lt;InspectorObject&gt;* outlineColor, const bool* usePageCoordinates);
</del><ins>+    void innerHighlightQuad(PassOwnPtr&lt;FloatQuad&gt;, const RefPtr&lt;Inspector::InspectorObject&gt;* color, const RefPtr&lt;Inspector::InspectorObject&gt;* outlineColor, const bool* usePageCoordinates);
</ins><span class="cx"> 
</span><span class="cx">     InspectorPageAgent* m_pageAgent;
</span><span class="cx">     InjectedScriptManager* m_injectedScriptManager;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorDOMDebuggerAgentcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorDOMDebuggerAgent.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorDOMDebuggerAgent.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorDOMDebuggerAgent.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -40,8 +40,8 @@
</span><span class="cx"> #include &quot;InspectorDebuggerAgent.h&quot;
</span><span class="cx"> #include &quot;InspectorFrontend.h&quot;
</span><span class="cx"> #include &quot;InspectorInstrumentation.h&quot;
</span><del>-#include &quot;InspectorValues.h&quot;
</del><span class="cx"> #include &quot;InstrumentingAgents.h&quot;
</span><ins>+#include &lt;inspector/InspectorValues.h&gt;
</ins><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace {
</span><span class="lines">@@ -61,6 +61,8 @@
</span><span class="cx"> 
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> PassOwnPtr&lt;InspectorDOMDebuggerAgent&gt; InspectorDOMDebuggerAgent::create(InstrumentingAgents* instrumentingAgents, InspectorDOMAgent* domAgent, InspectorDebuggerAgent* debuggerAgent, InspectorAgent* inspectorAgent)
</span><span class="lines">@@ -69,7 +71,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> InspectorDOMDebuggerAgent::InspectorDOMDebuggerAgent(InstrumentingAgents* instrumentingAgents, InspectorDOMAgent* domAgent, InspectorDebuggerAgent* debuggerAgent, InspectorAgent*)
</span><del>-    : InspectorBaseAgent(ASCIILiteral(&quot;DOMDebugger&quot;), instrumentingAgents)
</del><ins>+    : InspectorAgentBase(ASCIILiteral(&quot;DOMDebugger&quot;), instrumentingAgents)
</ins><span class="cx">     , m_domAgent(domAgent)
</span><span class="cx">     , m_debuggerAgent(debuggerAgent)
</span><span class="cx">     , m_pauseInNextEventListener(false)
</span><span class="lines">@@ -111,7 +113,7 @@
</span><span class="cx">     clear();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDOMDebuggerAgent::didCreateFrontendAndBackend(InspectorFrontendChannel*, InspectorBackendDispatcher* backendDispatcher)
</del><ins>+void InspectorDOMDebuggerAgent::didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel*, InspectorBackendDispatcher* backendDispatcher)
</ins><span class="cx"> {
</span><span class="cx">     m_backendDispatcher = InspectorDOMDebuggerBackendDispatcher::create(backendDispatcher, this);
</span><span class="cx"> }
</span><span class="lines">@@ -314,7 +316,7 @@
</span><span class="cx">     if ((1 &lt;&lt; breakpointType) &amp; inheritableDOMBreakpointTypesMask) {
</span><span class="cx">         // For inheritable breakpoint types, target node isn't always the same as the node that owns a breakpoint.
</span><span class="cx">         // Target node may be unknown to frontend, so we need to push it first.
</span><del>-        RefPtr&lt;TypeBuilder::Runtime::RemoteObject&gt; targetNodeObject = m_domAgent-&gt;resolveNode(target, InspectorDebuggerAgent::backtraceObjectGroup);
</del><ins>+        RefPtr&lt;Inspector::TypeBuilder::Runtime::RemoteObject&gt; targetNodeObject = m_domAgent-&gt;resolveNode(target, InspectorDebuggerAgent::backtraceObjectGroup);
</ins><span class="cx">         description-&gt;setValue(&quot;targetNode&quot;, targetNodeObject);
</span><span class="cx"> 
</span><span class="cx">         // Find breakpoint owner node.
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorDOMDebuggerAgenth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorDOMDebuggerAgent.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorDOMDebuggerAgent.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorDOMDebuggerAgent.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -33,26 +33,30 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(JAVASCRIPT_DEBUGGER) &amp;&amp; ENABLE(INSPECTOR)
</span><span class="cx"> 
</span><del>-#include &quot;InspectorBaseAgent.h&quot;
</del><ins>+#include &quot;InspectorBackendDispatchers.h&quot;
</ins><span class="cx"> #include &quot;InspectorDebuggerAgent.h&quot;
</span><ins>+#include &quot;InspectorWebAgentBase.h&quot;
</ins><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="cx"> #include &lt;wtf/PassOwnPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/RefCounted.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><ins>+namespace Inspector {
+class InspectorObject;
+}
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class Element;
</span><span class="cx"> class InspectorAgent;
</span><span class="cx"> class InspectorDOMAgent;
</span><span class="cx"> class InspectorDebuggerAgent;
</span><del>-class InspectorObject;
</del><span class="cx"> class InstrumentingAgents;
</span><span class="cx"> class Node;
</span><span class="cx"> 
</span><span class="cx"> typedef String ErrorString;
</span><span class="cx"> 
</span><del>-class InspectorDOMDebuggerAgent : public InspectorBaseAgent, public InspectorDebuggerAgent::Listener, public InspectorDOMDebuggerBackendDispatcherHandler {
</del><ins>+class InspectorDOMDebuggerAgent : public InspectorAgentBase, public InspectorDebuggerAgent::Listener, public InspectorDOMDebuggerBackendDispatcherHandler {
</ins><span class="cx">     WTF_MAKE_NONCOPYABLE(InspectorDOMDebuggerAgent);
</span><span class="cx"> public:
</span><span class="cx">     static PassOwnPtr&lt;InspectorDOMDebuggerAgent&gt; create(InstrumentingAgents*, InspectorDOMAgent*, InspectorDebuggerAgent*, InspectorAgent*);
</span><span class="lines">@@ -79,7 +83,7 @@
</span><span class="cx">     void willSendXMLHttpRequest(const String&amp; url);
</span><span class="cx">     void pauseOnNativeEventIfNeeded(bool isDOMEvent, const String&amp; eventName, bool synchronous);
</span><span class="cx"> 
</span><del>-    virtual void didCreateFrontendAndBackend(InspectorFrontendChannel*, InspectorBackendDispatcher*) OVERRIDE;
</del><ins>+    virtual void didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel*, Inspector::InspectorBackendDispatcher*) OVERRIDE;
</ins><span class="cx">     virtual void willDestroyFrontendAndBackend() OVERRIDE;
</span><span class="cx">     virtual void discardAgent();
</span><span class="cx"> 
</span><span class="lines">@@ -93,7 +97,7 @@
</span><span class="cx">     virtual void didPause();
</span><span class="cx">     void disable();
</span><span class="cx"> 
</span><del>-    void descriptionForDOMEvent(Node* target, int breakpointType, bool insertion, InspectorObject* description);
</del><ins>+    void descriptionForDOMEvent(Node* target, int breakpointType, bool insertion, Inspector::InspectorObject* description);
</ins><span class="cx">     void updateSubtreeBreakpoints(Node*, uint32_t rootMask, bool set);
</span><span class="cx">     bool hasBreakpoint(Node*, int type);
</span><span class="cx">     void discardBindings();
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorDOMStorageAgentcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorDOMStorageAgent.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorDOMStorageAgent.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorDOMStorageAgent.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -41,7 +41,6 @@
</span><span class="cx"> #include &quot;Frame.h&quot;
</span><span class="cx"> #include &quot;InspectorFrontend.h&quot;
</span><span class="cx"> #include &quot;InspectorPageAgent.h&quot;
</span><del>-#include &quot;InspectorValues.h&quot;
</del><span class="cx"> #include &quot;InstrumentingAgents.h&quot;
</span><span class="cx"> #include &quot;Page.h&quot;
</span><span class="cx"> #include &quot;PageGroup.h&quot;
</span><span class="lines">@@ -50,13 +49,15 @@
</span><span class="cx"> #include &quot;StorageArea.h&quot;
</span><span class="cx"> #include &quot;StorageNamespace.h&quot;
</span><span class="cx"> #include &quot;VoidCallback.h&quot;
</span><del>-
</del><ins>+#include &lt;inspector/InspectorValues.h&gt;
</ins><span class="cx"> #include &lt;wtf/Vector.h&gt;
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> InspectorDOMStorageAgent::InspectorDOMStorageAgent(InstrumentingAgents* instrumentingAgents, InspectorPageAgent* pageAgent)
</span><del>-    : InspectorBaseAgent(ASCIILiteral(&quot;DOMStorage&quot;), instrumentingAgents)
</del><ins>+    : InspectorAgentBase(ASCIILiteral(&quot;DOMStorage&quot;), instrumentingAgents)
</ins><span class="cx">     , m_pageAgent(pageAgent)
</span><span class="cx">     , m_enabled(false)
</span><span class="cx"> {
</span><span class="lines">@@ -69,7 +70,7 @@
</span><span class="cx">     m_instrumentingAgents = 0;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDOMStorageAgent::didCreateFrontendAndBackend(InspectorFrontendChannel* frontendChannel, InspectorBackendDispatcher* backendDispatcher)
</del><ins>+void InspectorDOMStorageAgent::didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel* frontendChannel, InspectorBackendDispatcher* backendDispatcher)
</ins><span class="cx"> {
</span><span class="cx">     m_frontendDispatcher = std::make_unique&lt;InspectorDOMStorageFrontendDispatcher&gt;(frontendChannel);
</span><span class="cx">     m_backendDispatcher = InspectorDOMStorageBackendDispatcher::create(backendDispatcher, this);
</span><span class="lines">@@ -93,7 +94,7 @@
</span><span class="cx">     m_enabled = false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDOMStorageAgent::getDOMStorageItems(ErrorString* errorString, const RefPtr&lt;InspectorObject&gt;&amp; storageId, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::Array&lt;String&gt;&gt;&gt;&amp; items)
</del><ins>+void InspectorDOMStorageAgent::getDOMStorageItems(ErrorString* errorString, const RefPtr&lt;InspectorObject&gt;&amp; storageId, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Array&lt;String&gt;&gt;&gt;&amp; items)
</ins><span class="cx"> {
</span><span class="cx">     Frame* frame;
</span><span class="cx">     RefPtr&lt;StorageArea&gt; storageArea = findStorageArea(errorString, storageId, frame);
</span><span class="lines">@@ -103,13 +104,13 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::Array&lt;String&gt;&gt;&gt; storageItems = TypeBuilder::Array&lt;TypeBuilder::Array&lt;String&gt;&gt;::create();
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Array&lt;String&gt;&gt;&gt; storageItems = Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Array&lt;String&gt;&gt;::create();
</ins><span class="cx"> 
</span><span class="cx">     for (unsigned i = 0; i &lt; storageArea-&gt;length(); ++i) {
</span><span class="cx">         String key = storageArea-&gt;key(i);
</span><span class="cx">         String value = storageArea-&gt;item(key);
</span><span class="cx"> 
</span><del>-        RefPtr&lt;TypeBuilder::Array&lt;String&gt;&gt; entry = TypeBuilder::Array&lt;String&gt;::create();
</del><ins>+        RefPtr&lt;Inspector::TypeBuilder::Array&lt;String&gt;&gt; entry = Inspector::TypeBuilder::Array&lt;String&gt;::create();
</ins><span class="cx">         entry-&gt;addItem(key);
</span><span class="cx">         entry-&gt;addItem(value);
</span><span class="cx">         storageItems-&gt;addItem(entry.release());
</span><span class="lines">@@ -157,9 +158,9 @@
</span><span class="cx">     return storageId(securityOrigin.get(), isLocalStorage)-&gt;toJSONString();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::DOMStorage::StorageId&gt; InspectorDOMStorageAgent::storageId(SecurityOrigin* securityOrigin, bool isLocalStorage)
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::DOMStorage::StorageId&gt; InspectorDOMStorageAgent::storageId(SecurityOrigin* securityOrigin, bool isLocalStorage)
</ins><span class="cx"> {
</span><del>-    return TypeBuilder::DOMStorage::StorageId::create()
</del><ins>+    return Inspector::TypeBuilder::DOMStorage::StorageId::create()
</ins><span class="cx">         .setSecurityOrigin(securityOrigin-&gt;toRawString())
</span><span class="cx">         .setIsLocalStorage(isLocalStorage).release();
</span><span class="cx"> }
</span><span class="lines">@@ -169,7 +170,7 @@
</span><span class="cx">     if (!m_frontendDispatcher || !m_enabled)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    RefPtr&lt;TypeBuilder::DOMStorage::StorageId&gt; id = storageId(securityOrigin, storageType == LocalStorage);
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::DOMStorage::StorageId&gt; id = storageId(securityOrigin, storageType == LocalStorage);
</ins><span class="cx"> 
</span><span class="cx">     if (key.isNull())
</span><span class="cx">         m_frontendDispatcher-&gt;domStorageItemsCleared(id);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorDOMStorageAgenth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorDOMStorageAgent.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorDOMStorageAgent.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorDOMStorageAgent.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -29,27 +29,30 @@
</span><span class="cx"> #ifndef InspectorDOMStorageAgent_h
</span><span class="cx"> #define InspectorDOMStorageAgent_h
</span><span class="cx"> 
</span><del>-#include &quot;InspectorBaseAgent.h&quot;
</del><ins>+#include &quot;InspectorBackendDispatchers.h&quot;
+#include &quot;InspectorWebAgentBase.h&quot;
</ins><span class="cx"> #include &quot;StorageArea.h&quot;
</span><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="cx"> #include &lt;wtf/PassOwnPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><ins>+namespace Inspector {
+class InspectorArray;
+}
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class Frame;
</span><del>-class InspectorArray;
</del><span class="cx"> class InspectorDOMStorageFrontendDispatcher;
</span><span class="cx"> class InspectorPageAgent;
</span><span class="cx"> class InstrumentingAgents;
</span><span class="cx"> class Page;
</span><span class="cx"> class SecurityOrigin;
</span><span class="cx"> class Storage;
</span><del>-class StorageArea;
</del><span class="cx"> 
</span><span class="cx"> typedef String ErrorString;
</span><span class="cx"> 
</span><del>-class InspectorDOMStorageAgent : public InspectorBaseAgent, public InspectorDOMStorageBackendDispatcherHandler {
</del><ins>+class InspectorDOMStorageAgent : public InspectorAgentBase, public InspectorDOMStorageBackendDispatcherHandler {
</ins><span class="cx"> public:
</span><span class="cx">     static PassOwnPtr&lt;InspectorDOMStorageAgent&gt; create(InstrumentingAgents* instrumentingAgents, InspectorPageAgent* pageAgent)
</span><span class="cx">     {
</span><span class="lines">@@ -57,19 +60,19 @@
</span><span class="cx">     }
</span><span class="cx">     ~InspectorDOMStorageAgent();
</span><span class="cx"> 
</span><del>-    virtual void didCreateFrontendAndBackend(InspectorFrontendChannel*, InspectorBackendDispatcher*) OVERRIDE;
</del><ins>+    virtual void didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel*, Inspector::InspectorBackendDispatcher*) OVERRIDE;
</ins><span class="cx">     virtual void willDestroyFrontendAndBackend() OVERRIDE;
</span><span class="cx"> 
</span><span class="cx">     // Called from the front-end.
</span><span class="cx">     virtual void enable(ErrorString*);
</span><span class="cx">     virtual void disable(ErrorString*);
</span><del>-    virtual void getDOMStorageItems(ErrorString*, const RefPtr&lt;InspectorObject&gt;&amp; storageId, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::Array&lt;String&gt;&gt;&gt;&amp; items);
-    virtual void setDOMStorageItem(ErrorString*, const RefPtr&lt;InspectorObject&gt;&amp; storageId, const String&amp; key, const String&amp; value);
-    virtual void removeDOMStorageItem(ErrorString*, const RefPtr&lt;InspectorObject&gt;&amp; storageId, const String&amp; key);
</del><ins>+    virtual void getDOMStorageItems(ErrorString*, const RefPtr&lt;Inspector::InspectorObject&gt;&amp; storageId, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Array&lt;String&gt;&gt;&gt;&amp; items);
+    virtual void setDOMStorageItem(ErrorString*, const RefPtr&lt;Inspector::InspectorObject&gt;&amp; storageId, const String&amp; key, const String&amp; value);
+    virtual void removeDOMStorageItem(ErrorString*, const RefPtr&lt;Inspector::InspectorObject&gt;&amp; storageId, const String&amp; key);
</ins><span class="cx"> 
</span><span class="cx">     // Called from the injected script.
</span><span class="cx">     String storageId(Storage*);
</span><del>-    PassRefPtr&lt;TypeBuilder::DOMStorage::StorageId&gt; storageId(SecurityOrigin*, bool isLocalStorage);
</del><ins>+    PassRefPtr&lt;Inspector::TypeBuilder::DOMStorage::StorageId&gt; storageId(SecurityOrigin*, bool isLocalStorage);
</ins><span class="cx"> 
</span><span class="cx">     // Called from InspectorInstrumentation
</span><span class="cx">     void didDispatchDOMStorageEvent(const String&amp; key, const String&amp; oldValue, const String&amp; newValue, StorageType, SecurityOrigin*, Page*);
</span><span class="lines">@@ -78,7 +81,7 @@
</span><span class="cx"> 
</span><span class="cx">     InspectorDOMStorageAgent(InstrumentingAgents*, InspectorPageAgent*);
</span><span class="cx"> 
</span><del>-    PassRefPtr&lt;StorageArea&gt; findStorageArea(ErrorString*, const RefPtr&lt;InspectorObject&gt;&amp;, Frame*&amp;);
</del><ins>+    PassRefPtr&lt;StorageArea&gt; findStorageArea(ErrorString*, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;, Frame*&amp;);
</ins><span class="cx"> 
</span><span class="cx">     InspectorPageAgent* m_pageAgent;
</span><span class="cx">     std::unique_ptr&lt;InspectorDOMStorageFrontendDispatcher&gt; m_frontendDispatcher;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorDatabaseAgentcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorDatabaseAgent.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorDatabaseAgent.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorDatabaseAgent.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -37,8 +37,6 @@
</span><span class="cx"> #include &quot;ExceptionCodePlaceholder.h&quot;
</span><span class="cx"> #include &quot;InspectorDatabaseResource.h&quot;
</span><span class="cx"> #include &quot;InspectorFrontend.h&quot;
</span><del>-
-#include &quot;InspectorValues.h&quot;
</del><span class="cx"> #include &quot;InstrumentingAgents.h&quot;
</span><span class="cx"> #include &quot;SQLError.h&quot;
</span><span class="cx"> #include &quot;SQLResultSet.h&quot;
</span><span class="lines">@@ -50,18 +48,20 @@
</span><span class="cx"> #include &quot;SQLTransactionErrorCallback.h&quot;
</span><span class="cx"> #include &quot;SQLValue.h&quot;
</span><span class="cx"> #include &quot;VoidCallback.h&quot;
</span><del>-
</del><ins>+#include &lt;inspector/InspectorValues.h&gt;
</ins><span class="cx"> #include &lt;wtf/Vector.h&gt;
</span><span class="cx"> 
</span><span class="cx"> typedef WebCore::InspectorDatabaseBackendDispatcherHandler::ExecuteSQLCallback ExecuteSQLCallback;
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> namespace {
</span><span class="cx"> 
</span><span class="cx"> void reportTransactionFailed(ExecuteSQLCallback* requestCallback, SQLError* error)
</span><span class="cx"> {
</span><del>-    RefPtr&lt;TypeBuilder::Database::Error&gt; errorObject = TypeBuilder::Database::Error::create()
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Database::Error&gt; errorObject = Inspector::TypeBuilder::Database::Error::create()
</ins><span class="cx">         .setMessage(error-&gt;message())
</span><span class="cx">         .setCode(error-&gt;code());
</span><span class="cx">     requestCallback-&gt;sendSuccess(0, 0, errorObject.release());
</span><span class="lines">@@ -80,12 +80,12 @@
</span><span class="cx">     {
</span><span class="cx">         SQLResultSetRowList* rowList = resultSet-&gt;rows();
</span><span class="cx"> 
</span><del>-        RefPtr&lt;TypeBuilder::Array&lt;String&gt;&gt; columnNames = TypeBuilder::Array&lt;String&gt;::create();
</del><ins>+        RefPtr&lt;Inspector::TypeBuilder::Array&lt;String&gt;&gt; columnNames = Inspector::TypeBuilder::Array&lt;String&gt;::create();
</ins><span class="cx">         const Vector&lt;String&gt;&amp; columns = rowList-&gt;columnNames();
</span><span class="cx">         for (size_t i = 0; i &lt; columns.size(); ++i)
</span><span class="cx">             columnNames-&gt;addItem(columns[i]);
</span><span class="cx"> 
</span><del>-        RefPtr&lt;TypeBuilder::Array&lt;InspectorValue&gt;&gt; values = TypeBuilder::Array&lt;InspectorValue&gt;::create();
</del><ins>+        RefPtr&lt;Inspector::TypeBuilder::Array&lt;InspectorValue&gt;&gt; values = Inspector::TypeBuilder::Array&lt;InspectorValue&gt;::create();
</ins><span class="cx">         const Vector&lt;SQLValue&gt;&amp; data = rowList-&gt;values();
</span><span class="cx">         for (size_t i = 0; i &lt; data.size(); ++i) {
</span><span class="cx">             const SQLValue&amp; value = rowList-&gt;values()[i];
</span><span class="lines">@@ -211,7 +211,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> InspectorDatabaseAgent::InspectorDatabaseAgent(InstrumentingAgents* instrumentingAgents)
</span><del>-    : InspectorBaseAgent(ASCIILiteral(&quot;Database&quot;), instrumentingAgents)
</del><ins>+    : InspectorAgentBase(ASCIILiteral(&quot;Database&quot;), instrumentingAgents)
</ins><span class="cx">     , m_enabled(false)
</span><span class="cx"> {
</span><span class="cx">     m_instrumentingAgents-&gt;setInspectorDatabaseAgent(this);
</span><span class="lines">@@ -222,7 +222,7 @@
</span><span class="cx">     m_instrumentingAgents-&gt;setInspectorDatabaseAgent(0);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDatabaseAgent::didCreateFrontendAndBackend(InspectorFrontendChannel* frontendChannel, InspectorBackendDispatcher* backendDispatcher)
</del><ins>+void InspectorDatabaseAgent::didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel* frontendChannel, InspectorBackendDispatcher* backendDispatcher)
</ins><span class="cx"> {
</span><span class="cx">     m_frontendDispatcher = std::make_unique&lt;InspectorDatabaseFrontendDispatcher&gt;(frontendChannel);
</span><span class="cx">     m_backendDispatcher = InspectorDatabaseBackendDispatcher::create(backendDispatcher, this);
</span><span class="lines">@@ -254,14 +254,14 @@
</span><span class="cx">     m_enabled = false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDatabaseAgent::getDatabaseTableNames(ErrorString* error, const String&amp; databaseId, RefPtr&lt;TypeBuilder::Array&lt;String&gt;&gt;&amp; names)
</del><ins>+void InspectorDatabaseAgent::getDatabaseTableNames(ErrorString* error, const String&amp; databaseId, RefPtr&lt;Inspector::TypeBuilder::Array&lt;String&gt;&gt;&amp; names)
</ins><span class="cx"> {
</span><span class="cx">     if (!m_enabled) {
</span><span class="cx">         *error = &quot;Database agent is not enabled&quot;;
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    names = TypeBuilder::Array&lt;String&gt;::create();
</del><ins>+    names = Inspector::TypeBuilder::Array&lt;String&gt;::create();
</ins><span class="cx"> 
</span><span class="cx">     Database* database = databaseForId(databaseId);
</span><span class="cx">     if (database) {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorDatabaseAgenth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorDatabaseAgent.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorDatabaseAgent.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorDatabaseAgent.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -31,22 +31,26 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INSPECTOR) &amp;&amp; ENABLE(SQL_DATABASE)
</span><span class="cx"> 
</span><del>-#include &quot;InspectorBaseAgent.h&quot;
</del><ins>+#include &quot;InspectorBackendDispatchers.h&quot;
</ins><span class="cx"> #include &quot;InspectorFrontend.h&quot;
</span><ins>+#include &quot;InspectorWebAgentBase.h&quot;
</ins><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="cx"> #include &lt;wtf/PassOwnPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><ins>+namespace Inspector {
+class InspectorArray;
+}
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class Database;
</span><del>-class InspectorArray;
</del><span class="cx"> class InspectorDatabaseResource;
</span><span class="cx"> class InstrumentingAgents;
</span><span class="cx"> 
</span><span class="cx"> typedef String ErrorString;
</span><span class="cx"> 
</span><del>-class InspectorDatabaseAgent : public InspectorBaseAgent, public InspectorDatabaseBackendDispatcherHandler {
</del><ins>+class InspectorDatabaseAgent : public InspectorAgentBase, public InspectorDatabaseBackendDispatcherHandler {
</ins><span class="cx"> public:
</span><span class="cx">     static PassOwnPtr&lt;InspectorDatabaseAgent&gt; create(InstrumentingAgents* instrumentingAgents)
</span><span class="cx">     {
</span><span class="lines">@@ -54,7 +58,7 @@
</span><span class="cx">     }
</span><span class="cx">     ~InspectorDatabaseAgent();
</span><span class="cx"> 
</span><del>-    virtual void didCreateFrontendAndBackend(InspectorFrontendChannel*, InspectorBackendDispatcher*) OVERRIDE;
</del><ins>+    virtual void didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel*, Inspector::InspectorBackendDispatcher*) OVERRIDE;
</ins><span class="cx">     virtual void willDestroyFrontendAndBackend() OVERRIDE;
</span><span class="cx"> 
</span><span class="cx">     void clearResources();
</span><span class="lines">@@ -62,7 +66,7 @@
</span><span class="cx">     // Called from the front-end.
</span><span class="cx">     virtual void enable(ErrorString*);
</span><span class="cx">     virtual void disable(ErrorString*);
</span><del>-    virtual void getDatabaseTableNames(ErrorString*, const String&amp; databaseId, RefPtr&lt;TypeBuilder::Array&lt;String&gt;&gt;&amp; names);
</del><ins>+    virtual void getDatabaseTableNames(ErrorString*, const String&amp; databaseId, RefPtr&lt;Inspector::TypeBuilder::Array&lt;String&gt;&gt;&amp; names);
</ins><span class="cx">     virtual void executeSQL(ErrorString*, const String&amp; databaseId, const String&amp; query, PassRefPtr&lt;ExecuteSQLCallback&gt;);
</span><span class="cx"> 
</span><span class="cx">     // Called from the injected script.
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorDatabaseResourcecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorDatabaseResource.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorDatabaseResource.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorDatabaseResource.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -36,8 +36,10 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;Database.h&quot;
</span><span class="cx"> #include &quot;InspectorFrontend.h&quot;
</span><del>-#include &quot;InspectorValues.h&quot;
</del><ins>+#include &lt;inspector/InspectorValues.h&gt;
</ins><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> static int nextUnusedId = 1;
</span><span class="lines">@@ -58,7 +60,7 @@
</span><span class="cx"> 
</span><span class="cx"> void InspectorDatabaseResource::bind(InspectorDatabaseFrontendDispatcher* databaseFrontendDispatcher)
</span><span class="cx"> {
</span><del>-    RefPtr&lt;TypeBuilder::Database::Database&gt; jsonObject = TypeBuilder::Database::Database::create()
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Database::Database&gt; jsonObject = Inspector::TypeBuilder::Database::Database::create()
</ins><span class="cx">         .setId(m_id)
</span><span class="cx">         .setDomain(m_domain)
</span><span class="cx">         .setName(m_name)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorDebuggerAgentcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorDebuggerAgent.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorDebuggerAgent.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorDebuggerAgent.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -38,24 +38,27 @@
</span><span class="cx"> #include &quot;InjectedScriptManager.h&quot;
</span><span class="cx"> #include &quot;InspectorFrontend.h&quot;
</span><span class="cx"> #include &quot;InspectorPageAgent.h&quot;
</span><del>-#include &quot;InspectorValues.h&quot;
</del><span class="cx"> #include &quot;InstrumentingAgents.h&quot;
</span><span class="cx"> #include &quot;RegularExpression.h&quot;
</span><span class="cx"> #include &quot;ScriptDebugServer.h&quot;
</span><del>-#include &quot;ScriptObject.h&quot;
</del><ins>+#include &lt;bindings/ScriptObject.h&gt;
+#include &lt;bindings/ScriptValue.h&gt;
+#include &lt;inspector/InspectorValues.h&gt;
</ins><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><del>-using WebCore::TypeBuilder::Array;
-using WebCore::TypeBuilder::Debugger::FunctionDetails;
-using WebCore::TypeBuilder::Debugger::ScriptId;
-using WebCore::TypeBuilder::Runtime::RemoteObject;
</del><ins>+using Inspector::TypeBuilder::Array;
+using Inspector::TypeBuilder::Debugger::FunctionDetails;
+using Inspector::TypeBuilder::Debugger::ScriptId;
+using Inspector::TypeBuilder::Runtime::RemoteObject;
</ins><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> const char* InspectorDebuggerAgent::backtraceObjectGroup = &quot;backtrace&quot;;
</span><span class="cx"> 
</span><span class="cx"> InspectorDebuggerAgent::InspectorDebuggerAgent(InstrumentingAgents* instrumentingAgents, InjectedScriptManager* injectedScriptManager)
</span><del>-    : InspectorBaseAgent(ASCIILiteral(&quot;Debugger&quot;), instrumentingAgents)
</del><ins>+    : InspectorAgentBase(ASCIILiteral(&quot;Debugger&quot;), instrumentingAgents)
</ins><span class="cx">     , m_injectedScriptManager(injectedScriptManager)
</span><span class="cx">     , m_pausedScriptState(0)
</span><span class="cx">     , m_continueToLocationBreakpointID(noBreakpointID)
</span><span class="lines">@@ -136,7 +139,7 @@
</span><span class="cx">     disable();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDebuggerAgent::didCreateFrontendAndBackend(InspectorFrontendChannel* frontendChannel, InspectorBackendDispatcher* backendDispatcher)
</del><ins>+void InspectorDebuggerAgent::didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel* frontendChannel, InspectorBackendDispatcher* backendDispatcher)
</ins><span class="cx"> {
</span><span class="cx">     m_frontendDispatcher = std::make_unique&lt;InspectorDebuggerFrontendDispatcher&gt;(frontendChannel);
</span><span class="cx">     m_backendDispatcher = InspectorDebuggerBackendDispatcher::create(backendDispatcher, this);
</span><span class="lines">@@ -200,15 +203,15 @@
</span><span class="cx"> 
</span><span class="cx"> static bool breakpointActionTypeForString(const String&amp; typeString, ScriptBreakpointActionType* output)
</span><span class="cx"> {
</span><del>-    if (typeString == TypeBuilder::getEnumConstantValue(TypeBuilder::Debugger::BreakpointAction::Type::Log)) {
</del><ins>+    if (typeString == Inspector::TypeBuilder::getEnumConstantValue(Inspector::TypeBuilder::Debugger::BreakpointAction::Type::Log)) {
</ins><span class="cx">         *output = ScriptBreakpointActionTypeLog;
</span><span class="cx">         return true;
</span><span class="cx">     }
</span><del>-    if (typeString == TypeBuilder::getEnumConstantValue(TypeBuilder::Debugger::BreakpointAction::Type::Evaluate)) {
</del><ins>+    if (typeString == Inspector::TypeBuilder::getEnumConstantValue(Inspector::TypeBuilder::Debugger::BreakpointAction::Type::Evaluate)) {
</ins><span class="cx">         *output = ScriptBreakpointActionTypeEvaluate;
</span><span class="cx">         return true;
</span><span class="cx">     }
</span><del>-    if (typeString == TypeBuilder::getEnumConstantValue(TypeBuilder::Debugger::BreakpointAction::Type::Sound)) {
</del><ins>+    if (typeString == Inspector::TypeBuilder::getEnumConstantValue(Inspector::TypeBuilder::Debugger::BreakpointAction::Type::Sound)) {
</ins><span class="cx">         *output = ScriptBreakpointActionTypeSound;
</span><span class="cx">         return true;
</span><span class="cx">     }
</span><span class="lines">@@ -255,9 +258,9 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDebuggerAgent::setBreakpointByUrl(ErrorString* errorString, int lineNumber, const String* const optionalURL, const String* const optionalURLRegex, const int* const optionalColumnNumber, const RefPtr&lt;InspectorObject&gt;* options, TypeBuilder::Debugger::BreakpointId* outBreakpointIdentifier, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::Debugger::Location&gt;&gt;&amp; locations)
</del><ins>+void InspectorDebuggerAgent::setBreakpointByUrl(ErrorString* errorString, int lineNumber, const String* const optionalURL, const String* const optionalURLRegex, const int* const optionalColumnNumber, const RefPtr&lt;InspectorObject&gt;* options, Inspector::TypeBuilder::Debugger::BreakpointId* outBreakpointIdentifier, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Debugger::Location&gt;&gt;&amp; locations)
</ins><span class="cx"> {
</span><del>-    locations = Array&lt;TypeBuilder::Debugger::Location&gt;::create();
</del><ins>+    locations = Array&lt;Inspector::TypeBuilder::Debugger::Location&gt;::create();
</ins><span class="cx">     if (!optionalURL == !optionalURLRegex) {
</span><span class="cx">         *errorString = &quot;Either url or urlRegex must be specified.&quot;;
</span><span class="cx">         return;
</span><span class="lines">@@ -294,7 +297,7 @@
</span><span class="cx">         if (!matches(scriptURL, url, isRegex))
</span><span class="cx">             continue;
</span><span class="cx"> 
</span><del>-        RefPtr&lt;TypeBuilder::Debugger::Location&gt; location = resolveBreakpoint(breakpointIdentifier, it-&gt;key, breakpoint);
</del><ins>+        RefPtr&lt;Inspector::TypeBuilder::Debugger::Location&gt; location = resolveBreakpoint(breakpointIdentifier, it-&gt;key, breakpoint);
</ins><span class="cx">         if (location)
</span><span class="cx">             locations-&gt;addItem(location);
</span><span class="cx">     }
</span><span class="lines">@@ -316,7 +319,7 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDebuggerAgent::setBreakpoint(ErrorString* errorString, const RefPtr&lt;InspectorObject&gt;&amp; location, const RefPtr&lt;InspectorObject&gt;* options, TypeBuilder::Debugger::BreakpointId* outBreakpointIdentifier, RefPtr&lt;TypeBuilder::Debugger::Location&gt;&amp; actualLocation)
</del><ins>+void InspectorDebuggerAgent::setBreakpoint(ErrorString* errorString, const RefPtr&lt;InspectorObject&gt;&amp; location, const RefPtr&lt;InspectorObject&gt;* options, Inspector::TypeBuilder::Debugger::BreakpointId* outBreakpointIdentifier, RefPtr&lt;Inspector::TypeBuilder::Debugger::Location&gt;&amp; actualLocation)
</ins><span class="cx"> {
</span><span class="cx">     SourceID sourceID;
</span><span class="cx">     unsigned lineNumber;
</span><span class="lines">@@ -383,7 +386,7 @@
</span><span class="cx">     resume(errorString);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::Debugger::Location&gt; InspectorDebuggerAgent::resolveBreakpoint(const String&amp; breakpointIdentifier, SourceID sourceID, const ScriptBreakpoint&amp; breakpoint)
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::Debugger::Location&gt; InspectorDebuggerAgent::resolveBreakpoint(const String&amp; breakpointIdentifier, SourceID sourceID, const ScriptBreakpoint&amp; breakpoint)
</ins><span class="cx"> {
</span><span class="cx">     ScriptsMap::iterator scriptIterator = m_scripts.find(sourceID);
</span><span class="cx">     if (scriptIterator == m_scripts.end())
</span><span class="lines">@@ -403,14 +406,14 @@
</span><span class="cx">         debugServerBreakpointIDsIterator = m_breakpointIdentifierToDebugServerBreakpointIDs.set(breakpointIdentifier, Vector&lt;BreakpointID&gt;()).iterator;
</span><span class="cx">     debugServerBreakpointIDsIterator-&gt;value.append(debugServerBreakpointID);
</span><span class="cx"> 
</span><del>-    RefPtr&lt;TypeBuilder::Debugger::Location&gt; location = TypeBuilder::Debugger::Location::create()
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Debugger::Location&gt; location = Inspector::TypeBuilder::Debugger::Location::create()
</ins><span class="cx">         .setScriptId(String::number(sourceID))
</span><span class="cx">         .setLineNumber(actualLineNumber);
</span><span class="cx">     location-&gt;setColumnNumber(actualColumnNumber);
</span><span class="cx">     return location;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static PassRefPtr&lt;InspectorObject&gt; scriptToInspectorObject(ScriptObject scriptObject)
</del><ins>+static PassRefPtr&lt;InspectorObject&gt; scriptToInspectorObject(Deprecated::ScriptObject scriptObject)
</ins><span class="cx"> {
</span><span class="cx">     if (scriptObject.hasNoValue())
</span><span class="cx">         return 0;
</span><span class="lines">@@ -420,7 +423,7 @@
</span><span class="cx">     return value-&gt;asObject();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDebuggerAgent::searchInContent(ErrorString* error, const String&amp; scriptIDStr, const String&amp; query, const bool* const optionalCaseSensitive, const bool* const optionalIsRegex, RefPtr&lt;Array&lt;WebCore::TypeBuilder::Page::SearchMatch&gt;&gt;&amp; results)
</del><ins>+void InspectorDebuggerAgent::searchInContent(ErrorString* error, const String&amp; scriptIDStr, const String&amp; query, const bool* const optionalCaseSensitive, const bool* const optionalIsRegex, RefPtr&lt;Array&lt;Inspector::TypeBuilder::Page::SearchMatch&gt;&gt;&amp; results)
</ins><span class="cx"> {
</span><span class="cx">     bool isRegex = optionalIsRegex ? *optionalIsRegex : false;
</span><span class="cx">     bool caseSensitive = optionalCaseSensitive ? *optionalCaseSensitive : false;
</span><span class="lines">@@ -433,10 +436,10 @@
</span><span class="cx">         *error = &quot;No script for id: &quot; + scriptIDStr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDebuggerAgent::setScriptSource(ErrorString* error, const String&amp; scriptID, const String&amp; newContent, const bool* const preview, RefPtr&lt;Array&lt;TypeBuilder::Debugger::CallFrame&gt;&gt;&amp; newCallFrames, RefPtr&lt;InspectorObject&gt;&amp; result)
</del><ins>+void InspectorDebuggerAgent::setScriptSource(ErrorString* error, const String&amp; scriptID, const String&amp; newContent, const bool* const preview, RefPtr&lt;Array&lt;Inspector::TypeBuilder::Debugger::CallFrame&gt;&gt;&amp; newCallFrames, RefPtr&lt;InspectorObject&gt;&amp; result)
</ins><span class="cx"> {
</span><span class="cx">     bool previewOnly = preview &amp;&amp; *preview;
</span><del>-    ScriptObject resultObject;
</del><ins>+    Deprecated::ScriptObject resultObject;
</ins><span class="cx">     if (!scriptDebugServer().setScriptSource(scriptID, newContent, previewOnly, error, &amp;m_currentCallStack, &amp;resultObject))
</span><span class="cx">         return;
</span><span class="cx">     newCallFrames = currentCallFrames();
</span><span class="lines">@@ -455,7 +458,7 @@
</span><span class="cx">         *error = &quot;No script for id: &quot; + scriptIDStr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDebuggerAgent::getFunctionDetails(ErrorString* errorString, const String&amp; functionId, RefPtr&lt;TypeBuilder::Debugger::FunctionDetails&gt;&amp; details)
</del><ins>+void InspectorDebuggerAgent::getFunctionDetails(ErrorString* errorString, const String&amp; functionId, RefPtr&lt;Inspector::TypeBuilder::Debugger::FunctionDetails&gt;&amp; details)
</ins><span class="cx"> {
</span><span class="cx">     InjectedScript injectedScript = m_injectedScriptManager-&gt;injectedScriptForObjectId(functionId);
</span><span class="cx">     if (injectedScript.hasNoValue()) {
</span><span class="lines">@@ -547,7 +550,7 @@
</span><span class="cx">         *errorString = &quot;Internal error. Could not change pause on exceptions state&quot;;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDebuggerAgent::evaluateOnCallFrame(ErrorString* errorString, const String&amp; callFrameId, const String&amp; expression, const String* const objectGroup, const bool* const includeCommandLineAPI, const bool* const doNotPauseOnExceptionsAndMuteConsole, const bool* const returnByValue, const bool* generatePreview, RefPtr&lt;TypeBuilder::Runtime::RemoteObject&gt;&amp; result, TypeBuilder::OptOutput&lt;bool&gt;* wasThrown)
</del><ins>+void InspectorDebuggerAgent::evaluateOnCallFrame(ErrorString* errorString, const String&amp; callFrameId, const String&amp; expression, const String* const objectGroup, const bool* const includeCommandLineAPI, const bool* const doNotPauseOnExceptionsAndMuteConsole, const bool* const returnByValue, const bool* generatePreview, RefPtr&lt;Inspector::TypeBuilder::Runtime::RemoteObject&gt;&amp; result, Inspector::TypeBuilder::OptOutput&lt;bool&gt;* wasThrown)
</ins><span class="cx"> {
</span><span class="cx">     InjectedScript injectedScript = m_injectedScriptManager-&gt;injectedScriptForObjectId(callFrameId);
</span><span class="cx">     if (injectedScript.hasNoValue()) {
</span><span class="lines">@@ -571,7 +574,7 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDebuggerAgent::compileScript(ErrorString* errorString, const String&amp; expression, const String&amp; sourceURL, TypeBuilder::OptOutput&lt;ScriptId&gt;* scriptID, TypeBuilder::OptOutput&lt;String&gt;* syntaxErrorMessage)
</del><ins>+void InspectorDebuggerAgent::compileScript(ErrorString* errorString, const String&amp; expression, const String&amp; sourceURL, Inspector::TypeBuilder::OptOutput&lt;ScriptId&gt;* scriptID, Inspector::TypeBuilder::OptOutput&lt;String&gt;* syntaxErrorMessage)
</ins><span class="cx"> {
</span><span class="cx">     InjectedScript injectedScript = injectedScriptForEval(errorString, 0);
</span><span class="cx">     if (injectedScript.hasNoValue()) {
</span><span class="lines">@@ -590,7 +593,7 @@
</span><span class="cx">     *scriptID = scriptIDValue;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDebuggerAgent::runScript(ErrorString* errorString, const ScriptId&amp; scriptID, const int* executionContextId, const String* const objectGroup, const bool* const doNotPauseOnExceptionsAndMuteConsole, RefPtr&lt;TypeBuilder::Runtime::RemoteObject&gt;&amp; result, TypeBuilder::OptOutput&lt;bool&gt;* wasThrown)
</del><ins>+void InspectorDebuggerAgent::runScript(ErrorString* errorString, const ScriptId&amp; scriptID, const int* executionContextId, const String* const objectGroup, const bool* const doNotPauseOnExceptionsAndMuteConsole, RefPtr&lt;Inspector::TypeBuilder::Runtime::RemoteObject&gt;&amp; result, Inspector::TypeBuilder::OptOutput&lt;bool&gt;* wasThrown)
</ins><span class="cx"> {
</span><span class="cx">     InjectedScript injectedScript = injectedScriptForEval(errorString, executionContextId);
</span><span class="cx">     if (injectedScript.hasNoValue()) {
</span><span class="lines">@@ -605,7 +608,7 @@
</span><span class="cx">         muteConsole();
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ScriptValue value;
</del><ins>+    Deprecated::ScriptValue value;
</ins><span class="cx">     bool wasThrownValue;
</span><span class="cx">     String exceptionMessage;
</span><span class="cx">     scriptDebugServer().runScript(injectedScript.scriptState(), scriptID, &amp;value, &amp;wasThrownValue, &amp;exceptionMessage);
</span><span class="lines">@@ -638,14 +641,14 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;Array&lt;TypeBuilder::Debugger::CallFrame&gt;&gt; InspectorDebuggerAgent::currentCallFrames()
</del><ins>+PassRefPtr&lt;Array&lt;Inspector::TypeBuilder::Debugger::CallFrame&gt;&gt; InspectorDebuggerAgent::currentCallFrames()
</ins><span class="cx"> {
</span><span class="cx">     if (!m_pausedScriptState)
</span><del>-        return Array&lt;TypeBuilder::Debugger::CallFrame&gt;::create();
</del><ins>+        return Array&lt;Inspector::TypeBuilder::Debugger::CallFrame&gt;::create();
</ins><span class="cx">     InjectedScript injectedScript = m_injectedScriptManager-&gt;injectedScriptFor(m_pausedScriptState);
</span><span class="cx">     if (injectedScript.hasNoValue()) {
</span><span class="cx">         ASSERT_NOT_REACHED();
</span><del>-        return Array&lt;TypeBuilder::Debugger::CallFrame&gt;::create();
</del><ins>+        return Array&lt;Inspector::TypeBuilder::Debugger::CallFrame&gt;::create();
</ins><span class="cx">     }
</span><span class="cx">     return injectedScript.wrapCallFrames(m_currentCallStack);
</span><span class="cx"> }
</span><span class="lines">@@ -715,7 +718,7 @@
</span><span class="cx">             continue;
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        RefPtr&lt;TypeBuilder::Debugger::Location&gt; location = resolveBreakpoint(it-&gt;key, sourceID, breakpoint);
</del><ins>+        RefPtr&lt;Inspector::TypeBuilder::Debugger::Location&gt; location = resolveBreakpoint(it-&gt;key, sourceID, breakpoint);
</ins><span class="cx">         if (location)
</span><span class="cx">             m_frontendDispatcher-&gt;breakpointResolved(it-&gt;key, location);
</span><span class="cx">     }
</span><span class="lines">@@ -726,7 +729,7 @@
</span><span class="cx">     m_frontendDispatcher-&gt;scriptFailedToParse(url, data, firstLine, errorLine, errorMessage);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDebuggerAgent::didPause(JSC::ExecState* scriptState, const ScriptValue&amp; callFrames, const ScriptValue&amp; exception)
</del><ins>+void InspectorDebuggerAgent::didPause(JSC::ExecState* scriptState, const Deprecated::ScriptValue&amp; callFrames, const Deprecated::ScriptValue&amp; exception)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(scriptState &amp;&amp; !m_pausedScriptState);
</span><span class="cx">     m_pausedScriptState = scriptState;
</span><span class="lines">@@ -755,7 +758,7 @@
</span><span class="cx"> void InspectorDebuggerAgent::didContinue()
</span><span class="cx"> {
</span><span class="cx">     m_pausedScriptState = 0;
</span><del>-    m_currentCallStack = ScriptValue();
</del><ins>+    m_currentCallStack = Deprecated::ScriptValue();
</ins><span class="cx">     clearBreakDetails();
</span><span class="cx">     m_frontendDispatcher-&gt;resumed();
</span><span class="cx"> }
</span><span class="lines">@@ -770,7 +773,7 @@
</span><span class="cx"> void InspectorDebuggerAgent::clear()
</span><span class="cx"> {
</span><span class="cx">     m_pausedScriptState = 0;
</span><del>-    m_currentCallStack = ScriptValue();
</del><ins>+    m_currentCallStack = Deprecated::ScriptValue();
</ins><span class="cx">     m_scripts.clear();
</span><span class="cx">     m_breakpointIdentifierToDebugServerBreakpointIDs.clear();
</span><span class="cx">     m_continueToLocationBreakpointID = noBreakpointID;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorDebuggerAgenth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorDebuggerAgent.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorDebuggerAgent.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorDebuggerAgent.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -31,12 +31,14 @@
</span><span class="cx"> #define InspectorDebuggerAgent_h
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(JAVASCRIPT_DEBUGGER) &amp;&amp; ENABLE(INSPECTOR)
</span><ins>+
</ins><span class="cx"> #include &quot;BreakpointID.h&quot;
</span><span class="cx"> #include &quot;ConsoleAPITypes.h&quot;
</span><span class="cx"> #include &quot;ConsoleTypes.h&quot;
</span><span class="cx"> #include &quot;InjectedScript.h&quot;
</span><del>-#include &quot;InspectorBaseAgent.h&quot;
</del><ins>+#include &quot;InspectorBackendDispatchers.h&quot;
</ins><span class="cx"> #include &quot;InspectorFrontend.h&quot;
</span><ins>+#include &quot;InspectorWebAgentBase.h&quot;
</ins><span class="cx"> #include &quot;ScriptBreakpoint.h&quot;
</span><span class="cx"> #include &quot;ScriptDebugListener.h&quot;
</span><span class="cx"> #include &quot;ScriptState.h&quot;
</span><span class="lines">@@ -48,19 +50,25 @@
</span><span class="cx"> #include &lt;wtf/Vector.h&gt;
</span><span class="cx"> #include &lt;wtf/text/StringHash.h&gt;
</span><span class="cx"> 
</span><del>-namespace WebCore {
</del><ins>+namespace Deprecated {
+class ScriptValue;
+}
</ins><span class="cx"> 
</span><del>-class InjectedScriptManager;
</del><ins>+namespace Inspector {
</ins><span class="cx"> class InspectorArray;
</span><span class="cx"> class InspectorObject;
</span><span class="cx"> class InspectorValue;
</span><ins>+}
+
+namespace WebCore {
+
+class InjectedScriptManager;
</ins><span class="cx"> class InstrumentingAgents;
</span><span class="cx"> class ScriptDebugServer;
</span><del>-class ScriptValue;
</del><span class="cx"> 
</span><span class="cx"> typedef String ErrorString;
</span><span class="cx"> 
</span><del>-class InspectorDebuggerAgent : public InspectorBaseAgent, public ScriptDebugListener, public InspectorDebuggerBackendDispatcherHandler {
</del><ins>+class InspectorDebuggerAgent : public InspectorAgentBase, public ScriptDebugListener, public InspectorDebuggerBackendDispatcherHandler {
</ins><span class="cx">     WTF_MAKE_NONCOPYABLE(InspectorDebuggerAgent); WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><span class="cx">     static const char* backtraceObjectGroup;
</span><span class="lines">@@ -71,7 +79,7 @@
</span><span class="cx">     virtual void canSetScriptSource(ErrorString*, bool*);
</span><span class="cx">     virtual void supportsSeparateScriptCompilationAndExecution(ErrorString*, bool*);
</span><span class="cx"> 
</span><del>-    virtual void didCreateFrontendAndBackend(InspectorFrontendChannel*, InspectorBackendDispatcher*) OVERRIDE;
</del><ins>+    virtual void didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel*, Inspector::InspectorBackendDispatcher*) OVERRIDE;
</ins><span class="cx">     virtual void willDestroyFrontendAndBackend() OVERRIDE;
</span><span class="cx"> 
</span><span class="cx">     bool isPaused();
</span><span class="lines">@@ -83,15 +91,15 @@
</span><span class="cx">     virtual void disable(ErrorString*);
</span><span class="cx">     virtual void setBreakpointsActive(ErrorString*, bool active);
</span><span class="cx"> 
</span><del>-    virtual void setBreakpointByUrl(ErrorString*, int lineNumber, const String* optionalURL, const String* optionalURLRegex, const int* optionalColumnNumber, const RefPtr&lt;InspectorObject&gt;* options, TypeBuilder::Debugger::BreakpointId*, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::Debugger::Location&gt;&gt;&amp; locations);
-    virtual void setBreakpoint(ErrorString*, const RefPtr&lt;InspectorObject&gt;&amp; location, const RefPtr&lt;InspectorObject&gt;* options, TypeBuilder::Debugger::BreakpointId*, RefPtr&lt;TypeBuilder::Debugger::Location&gt;&amp; actualLocation);
</del><ins>+    virtual void setBreakpointByUrl(ErrorString*, int lineNumber, const String* optionalURL, const String* optionalURLRegex, const int* optionalColumnNumber, const RefPtr&lt;Inspector::InspectorObject&gt;* options, Inspector::TypeBuilder::Debugger::BreakpointId*, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Debugger::Location&gt;&gt;&amp; locations);
+    virtual void setBreakpoint(ErrorString*, const RefPtr&lt;Inspector::InspectorObject&gt;&amp; location, const RefPtr&lt;Inspector::InspectorObject&gt;* options, Inspector::TypeBuilder::Debugger::BreakpointId*, RefPtr&lt;Inspector::TypeBuilder::Debugger::Location&gt;&amp; actualLocation);
</ins><span class="cx">     virtual void removeBreakpoint(ErrorString*, const String&amp; breakpointIdentifier);
</span><del>-    virtual void continueToLocation(ErrorString*, const RefPtr&lt;InspectorObject&gt;&amp; location);
</del><ins>+    virtual void continueToLocation(ErrorString*, const RefPtr&lt;Inspector::InspectorObject&gt;&amp; location);
</ins><span class="cx"> 
</span><del>-    virtual void searchInContent(ErrorString*, const String&amp; scriptID, const String&amp; query, const bool* optionalCaseSensitive, const bool* optionalIsRegex, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::Page::SearchMatch&gt;&gt;&amp;);
-    virtual void setScriptSource(ErrorString*, const String&amp; scriptID, const String&amp; newContent, const bool* preview, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::Debugger::CallFrame&gt;&gt;&amp; newCallFrames, RefPtr&lt;InspectorObject&gt;&amp; result);
</del><ins>+    virtual void searchInContent(ErrorString*, const String&amp; scriptID, const String&amp; query, const bool* optionalCaseSensitive, const bool* optionalIsRegex, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Page::SearchMatch&gt;&gt;&amp;);
+    virtual void setScriptSource(ErrorString*, const String&amp; scriptID, const String&amp; newContent, const bool* preview, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Debugger::CallFrame&gt;&gt;&amp; newCallFrames, RefPtr&lt;Inspector::InspectorObject&gt;&amp; result);
</ins><span class="cx">     virtual void getScriptSource(ErrorString*, const String&amp; scriptID, String* scriptSource);
</span><del>-    virtual void getFunctionDetails(ErrorString*, const String&amp; functionId, RefPtr&lt;TypeBuilder::Debugger::FunctionDetails&gt;&amp;);
</del><ins>+    virtual void getFunctionDetails(ErrorString*, const String&amp; functionId, RefPtr&lt;Inspector::TypeBuilder::Debugger::FunctionDetails&gt;&amp;);
</ins><span class="cx">     virtual void pause(ErrorString*);
</span><span class="cx">     virtual void resume(ErrorString*);
</span><span class="cx">     virtual void stepOver(ErrorString*);
</span><span class="lines">@@ -106,15 +114,15 @@
</span><span class="cx">                              const bool* doNotPauseOnExceptionsAndMuteConsole,
</span><span class="cx">                              const bool* returnByValue,
</span><span class="cx">                              const bool* generatePreview,
</span><del>-                             RefPtr&lt;TypeBuilder::Runtime::RemoteObject&gt;&amp; result,
-                             TypeBuilder::OptOutput&lt;bool&gt;* wasThrown);
-    void compileScript(ErrorString*, const String&amp; expression, const String&amp; sourceURL, TypeBuilder::OptOutput&lt;TypeBuilder::Debugger::ScriptId&gt;*, TypeBuilder::OptOutput&lt;String&gt;* syntaxErrorMessage);
-    void runScript(ErrorString*, const TypeBuilder::Debugger::ScriptId&amp;, const int* executionContextId, const String* objectGroup, const bool* doNotPauseOnExceptionsAndMuteConsole, RefPtr&lt;TypeBuilder::Runtime::RemoteObject&gt;&amp; result, TypeBuilder::OptOutput&lt;bool&gt;* wasThrown);
</del><ins>+                             RefPtr&lt;Inspector::TypeBuilder::Runtime::RemoteObject&gt;&amp; result,
+                             Inspector::TypeBuilder::OptOutput&lt;bool&gt;* wasThrown);
+    void compileScript(ErrorString*, const String&amp; expression, const String&amp; sourceURL, Inspector::TypeBuilder::OptOutput&lt;Inspector::TypeBuilder::Debugger::ScriptId&gt;*, Inspector::TypeBuilder::OptOutput&lt;String&gt;* syntaxErrorMessage);
+    void runScript(ErrorString*, const Inspector::TypeBuilder::Debugger::ScriptId&amp;, const int* executionContextId, const String* objectGroup, const bool* doNotPauseOnExceptionsAndMuteConsole, RefPtr&lt;Inspector::TypeBuilder::Runtime::RemoteObject&gt;&amp; result, Inspector::TypeBuilder::OptOutput&lt;bool&gt;* wasThrown);
</ins><span class="cx">     virtual void setOverlayMessage(ErrorString*, const String*);
</span><span class="cx"> 
</span><del>-    void schedulePauseOnNextStatement(InspectorDebuggerFrontendDispatcher::Reason::Enum breakReason, PassRefPtr&lt;InspectorObject&gt; data);
</del><ins>+    void schedulePauseOnNextStatement(InspectorDebuggerFrontendDispatcher::Reason::Enum breakReason, PassRefPtr&lt;Inspector::InspectorObject&gt; data);
</ins><span class="cx">     void cancelPauseOnNextStatement();
</span><del>-    void breakProgram(InspectorDebuggerFrontendDispatcher::Reason::Enum breakReason, PassRefPtr&lt;InspectorObject&gt; data);
</del><ins>+    void breakProgram(InspectorDebuggerFrontendDispatcher::Reason::Enum breakReason, PassRefPtr&lt;Inspector::InspectorObject&gt; data);
</ins><span class="cx">     virtual void scriptExecutionBlockedByCSP(const String&amp; directiveText);
</span><span class="cx"> 
</span><span class="cx">     class Listener {
</span><span class="lines">@@ -141,21 +149,21 @@
</span><span class="cx"> 
</span><span class="cx">     virtual void enable();
</span><span class="cx">     virtual void disable();
</span><del>-    virtual void didPause(JSC::ExecState*, const ScriptValue&amp; callFrames, const ScriptValue&amp; exception);
</del><ins>+    virtual void didPause(JSC::ExecState*, const Deprecated::ScriptValue&amp; callFrames, const Deprecated::ScriptValue&amp; exception);
</ins><span class="cx">     virtual void didContinue();
</span><span class="cx">     void reset();
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     bool enabled() const { return m_enabled; };
</span><span class="cx"> 
</span><del>-    PassRefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::Debugger::CallFrame&gt;&gt; currentCallFrames();
</del><ins>+    PassRefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Debugger::CallFrame&gt;&gt; currentCallFrames();
</ins><span class="cx"> 
</span><span class="cx">     virtual void didParseSource(SourceID, const Script&amp;) OVERRIDE FINAL;
</span><span class="cx">     virtual void failedToParseSource(const String&amp; url, const String&amp; data, int firstLine, int errorLine, const String&amp; errorMessage) OVERRIDE FINAL;
</span><span class="cx"> 
</span><span class="cx">     void setPauseOnExceptionsImpl(ErrorString*, int);
</span><span class="cx"> 
</span><del>-    PassRefPtr&lt;TypeBuilder::Debugger::Location&gt; resolveBreakpoint(const String&amp; breakpointIdentifier, SourceID, const ScriptBreakpoint&amp;);
</del><ins>+    PassRefPtr&lt;Inspector::TypeBuilder::Debugger::Location&gt; resolveBreakpoint(const String&amp; breakpointIdentifier, SourceID, const ScriptBreakpoint&amp;);
</ins><span class="cx">     void clear();
</span><span class="cx">     bool assertPaused(ErrorString*);
</span><span class="cx">     void clearBreakDetails();
</span><span class="lines">@@ -164,19 +172,19 @@
</span><span class="cx"> 
</span><span class="cx">     typedef HashMap&lt;SourceID, Script&gt; ScriptsMap;
</span><span class="cx">     typedef HashMap&lt;String, Vector&lt;BreakpointID&gt;&gt; BreakpointIdentifierToDebugServerBreakpointIDsMap;
</span><del>-    typedef HashMap&lt;String, RefPtr&lt;InspectorObject&gt;&gt; BreakpointIdentifierToBreakpointMap;
</del><ins>+    typedef HashMap&lt;String, RefPtr&lt;Inspector::InspectorObject&gt;&gt; BreakpointIdentifierToBreakpointMap;
</ins><span class="cx"> 
</span><span class="cx">     InjectedScriptManager* m_injectedScriptManager;
</span><span class="cx">     std::unique_ptr&lt;InspectorDebuggerFrontendDispatcher&gt; m_frontendDispatcher;
</span><span class="cx">     RefPtr&lt;InspectorDebuggerBackendDispatcher&gt; m_backendDispatcher;
</span><span class="cx">     JSC::ExecState* m_pausedScriptState;
</span><del>-    ScriptValue m_currentCallStack;
</del><ins>+    Deprecated::ScriptValue m_currentCallStack;
</ins><span class="cx">     ScriptsMap m_scripts;
</span><span class="cx">     BreakpointIdentifierToDebugServerBreakpointIDsMap m_breakpointIdentifierToDebugServerBreakpointIDs;
</span><span class="cx">     BreakpointIdentifierToBreakpointMap m_javaScriptBreakpoints;
</span><span class="cx">     BreakpointID m_continueToLocationBreakpointID;
</span><span class="cx">     InspectorDebuggerFrontendDispatcher::Reason::Enum m_breakReason;
</span><del>-    RefPtr&lt;InspectorObject&gt; m_breakAuxData;
</del><ins>+    RefPtr&lt;Inspector::InspectorObject&gt; m_breakAuxData;
</ins><span class="cx">     bool m_enabled;
</span><span class="cx">     bool m_javaScriptPauseScheduled;
</span><span class="cx">     Listener* m_listener;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorForwardingh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorForwarding.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorForwarding.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorForwarding.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -30,7 +30,7 @@
</span><span class="cx"> #include &lt;inspector/InspectorFrontendChannel.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><del>-class InspectorFrontendChannel : public Inspector::InspectorFrontendChannel { };
</del><ins>+typedef Inspector::InspectorFrontendChannel InspectorFrontendChannel;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #endif // !defined(InspectorForwarding_h)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorFrontendClientLocalcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorFrontendClientLocal.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorFrontendClientLocal.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorFrontendClientLocal.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -48,17 +48,19 @@
</span><span class="cx"> #include &quot;MainFrame.h&quot;
</span><span class="cx"> #include &quot;Page.h&quot;
</span><span class="cx"> #include &quot;ScriptController.h&quot;
</span><del>-#include &quot;ScriptFunctionCall.h&quot;
-#include &quot;ScriptObject.h&quot;
</del><ins>+#include &quot;ScriptGlobalObject.h&quot;
</ins><span class="cx"> #include &quot;ScriptState.h&quot;
</span><span class="cx"> #include &quot;Settings.h&quot;
</span><span class="cx"> #include &quot;Timer.h&quot;
</span><span class="cx"> #include &quot;UserGestureIndicator.h&quot;
</span><span class="cx"> #include &quot;WindowFeatures.h&quot;
</span><ins>+#include &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> #include &lt;wtf/Deque.h&gt;
</span><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> static const char* inspectorAttachedHeightSetting = &quot;inspectorAttachedHeight&quot;;
</span><span class="lines">@@ -344,7 +346,7 @@
</span><span class="cx"> 
</span><span class="cx"> bool InspectorFrontendClientLocal::evaluateAsBoolean(const String&amp; expression)
</span><span class="cx"> {
</span><del>-    ScriptValue value = m_frontendPage-&gt;mainFrame().script().executeScript(expression);
</del><ins>+    Deprecated::ScriptValue value = m_frontendPage-&gt;mainFrame().script().executeScript(expression);
</ins><span class="cx">     return value.toString(mainWorldExecState(&amp;m_frontendPage-&gt;mainFrame())) == &quot;true&quot;;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorFrontendHostcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorFrontendHost.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorFrontendHost.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorFrontendHost.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -46,6 +46,7 @@
</span><span class="cx"> #include &quot;InspectorAgent.h&quot;
</span><span class="cx"> #include &quot;InspectorController.h&quot;
</span><span class="cx"> #include &quot;InspectorFrontendClient.h&quot;
</span><ins>+#include &quot;JSMainThreadExecState.h&quot;
</ins><span class="cx"> #include &quot;MainFrame.h&quot;
</span><span class="cx"> #include &quot;MouseEvent.h&quot;
</span><span class="cx"> #include &quot;Page.h&quot;
</span><span class="lines">@@ -53,29 +54,33 @@
</span><span class="cx"> #include &quot;ResourceError.h&quot;
</span><span class="cx"> #include &quot;ResourceRequest.h&quot;
</span><span class="cx"> #include &quot;ResourceResponse.h&quot;
</span><del>-#include &quot;ScriptFunctionCall.h&quot;
</del><ins>+#include &quot;ScriptGlobalObject.h&quot;
+#include &quot;ScriptState.h&quot;
</ins><span class="cx"> #include &quot;Sound.h&quot;
</span><span class="cx"> #include &quot;UserGestureIndicator.h&quot;
</span><ins>+#include &lt;bindings/ScriptFunctionCall.h&gt;
</ins><span class="cx"> #include &lt;wtf/StdLibExtras.h&gt;
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(CONTEXT_MENUS)
</span><span class="cx"> class FrontendMenuProvider : public ContextMenuProvider {
</span><span class="cx"> public:
</span><del>-    static PassRefPtr&lt;FrontendMenuProvider&gt; create(InspectorFrontendHost* frontendHost, ScriptObject frontendApiObject, const Vector&lt;ContextMenuItem&gt;&amp; items)
</del><ins>+    static PassRefPtr&lt;FrontendMenuProvider&gt; create(InspectorFrontendHost* frontendHost, Deprecated::ScriptObject frontendApiObject, const Vector&lt;ContextMenuItem&gt;&amp; items)
</ins><span class="cx">     {
</span><span class="cx">         return adoptRef(new FrontendMenuProvider(frontendHost, frontendApiObject, items));
</span><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     void disconnect()
</span><span class="cx">     {
</span><del>-        m_frontendApiObject = ScriptObject();
</del><ins>+        m_frontendApiObject = Deprecated::ScriptObject();
</ins><span class="cx">         m_frontendHost = 0;
</span><span class="cx">     }
</span><span class="cx">     
</span><span class="cx"> private:
</span><del>-    FrontendMenuProvider(InspectorFrontendHost* frontendHost, ScriptObject frontendApiObject, const Vector&lt;ContextMenuItem&gt;&amp; items)
</del><ins>+    FrontendMenuProvider(InspectorFrontendHost* frontendHost, Deprecated::ScriptObject frontendApiObject, const Vector&lt;ContextMenuItem&gt;&amp; items)
</ins><span class="cx">         : m_frontendHost(frontendHost)
</span><span class="cx">         , m_frontendApiObject(frontendApiObject)
</span><span class="cx">         , m_items(items)
</span><span class="lines">@@ -99,7 +104,7 @@
</span><span class="cx">             UserGestureIndicator gestureIndicator(DefinitelyProcessingUserGesture);
</span><span class="cx">             int itemNumber = item-&gt;action() - ContextMenuItemBaseCustomTag;
</span><span class="cx"> 
</span><del>-            ScriptFunctionCall function(m_frontendApiObject, &quot;contextMenuItemSelected&quot;);
</del><ins>+            Deprecated::ScriptFunctionCall function(m_frontendApiObject, &quot;contextMenuItemSelected&quot;, WebCore::functionCallHandlerFromAnyThread);
</ins><span class="cx">             function.appendArgument(itemNumber);
</span><span class="cx">             function.call();
</span><span class="cx">         }
</span><span class="lines">@@ -108,7 +113,7 @@
</span><span class="cx">     virtual void contextMenuCleared()
</span><span class="cx">     {
</span><span class="cx">         if (m_frontendHost) {
</span><del>-            ScriptFunctionCall function(m_frontendApiObject, &quot;contextMenuCleared&quot;);
</del><ins>+            Deprecated::ScriptFunctionCall function(m_frontendApiObject, &quot;contextMenuCleared&quot;, WebCore::functionCallHandlerFromAnyThread);
</ins><span class="cx">             function.call();
</span><span class="cx"> 
</span><span class="cx">             m_frontendHost-&gt;m_menuProvider = 0;
</span><span class="lines">@@ -117,7 +122,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     InspectorFrontendHost* m_frontendHost;
</span><del>-    ScriptObject m_frontendApiObject;
</del><ins>+    Deprecated::ScriptObject m_frontendApiObject;
</ins><span class="cx">     Vector&lt;ContextMenuItem&gt; m_items;
</span><span class="cx"> };
</span><span class="cx"> #endif
</span><span class="lines">@@ -272,7 +277,7 @@
</span><span class="cx"> 
</span><span class="cx">     ASSERT(m_frontendPage);
</span><span class="cx">     JSC::ExecState* frontendExecState = execStateFromPage(debuggerWorld(), m_frontendPage);
</span><del>-    ScriptObject frontendApiObject;
</del><ins>+    Deprecated::ScriptObject frontendApiObject;
</ins><span class="cx">     if (!ScriptGlobalObject::get(frontendExecState, &quot;InspectorFrontendAPI&quot;, frontendApiObject)) {
</span><span class="cx">         ASSERT_NOT_REACHED();
</span><span class="cx">         return;
</span><span class="lines">@@ -281,10 +286,11 @@
</span><span class="cx">     m_frontendPage-&gt;contextMenuController().showContextMenu(event, menuProvider);
</span><span class="cx">     m_menuProvider = menuProvider.get();
</span><span class="cx"> }
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx"> void InspectorFrontendHost::dispatchEventAsContextMenuEvent(Event* event)
</span><span class="cx"> {
</span><del>-#if USE(ACCESSIBILITY_CONTEXT_MENUS)
</del><ins>+#if ENABLE(CONTEXT_MENUS) &amp;&amp; USE(ACCESSIBILITY_CONTEXT_MENUS)
</ins><span class="cx">     if (!event || !event-&gt;isMouseEvent())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="lines">@@ -297,7 +303,6 @@
</span><span class="cx">     UNUSED_PARAM(event);
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><del>-#endif
</del><span class="cx"> 
</span><span class="cx"> String InspectorFrontendHost::loadResourceSynchronously(const String&amp; url)
</span><span class="cx"> {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorHeapProfilerAgentcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorHeapProfilerAgent.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorHeapProfilerAgent.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorHeapProfilerAgent.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -39,6 +39,8 @@
</span><span class="cx"> #include &quot;InstrumentingAgents.h&quot;
</span><span class="cx"> #include &quot;ScriptProfiler.h&quot;
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> static const char* const UserInitiatedProfileNameHeap = &quot;org.webkit.profiles.user-initiated&quot;;
</span><span class="lines">@@ -49,7 +51,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> InspectorHeapProfilerAgent::InspectorHeapProfilerAgent(InstrumentingAgents* instrumentingAgents, InjectedScriptManager* injectedScriptManager)
</span><del>-    : InspectorBaseAgent(ASCIILiteral(&quot;HeapProfiler&quot;), instrumentingAgents)
</del><ins>+    : InspectorAgentBase(ASCIILiteral(&quot;HeapProfiler&quot;), instrumentingAgents)
</ins><span class="cx">     , m_injectedScriptManager(injectedScriptManager)
</span><span class="cx">     , m_nextUserInitiatedHeapSnapshotNumber(1)
</span><span class="cx">     , m_profileHeadersRequested(false)
</span><span class="lines">@@ -80,7 +82,7 @@
</span><span class="cx">         m_frontendDispatcher-&gt;resetProfiles();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorHeapProfilerAgent::didCreateFrontendAndBackend(InspectorFrontendChannel* frontendChannel, InspectorBackendDispatcher* backendDispatcher)
</del><ins>+void InspectorHeapProfilerAgent::didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel* frontendChannel, InspectorBackendDispatcher* backendDispatcher)
</ins><span class="cx"> {
</span><span class="cx">     m_frontendDispatcher = std::make_unique&lt;InspectorHeapProfilerFrontendDispatcher&gt;(frontendChannel);
</span><span class="cx">     m_backendDispatcher = InspectorHeapProfilerBackendDispatcher::create(backendDispatcher, this);
</span><span class="lines">@@ -99,9 +101,9 @@
</span><span class="cx">     ScriptProfiler::collectGarbage();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::HeapProfiler::ProfileHeader&gt; InspectorHeapProfilerAgent::createSnapshotHeader(const ScriptHeapSnapshot&amp; snapshot)
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::HeapProfiler::ProfileHeader&gt; InspectorHeapProfilerAgent::createSnapshotHeader(const ScriptHeapSnapshot&amp; snapshot)
</ins><span class="cx"> {
</span><del>-    RefPtr&lt;TypeBuilder::HeapProfiler::ProfileHeader&gt; header = TypeBuilder::HeapProfiler::ProfileHeader::create()
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::HeapProfiler::ProfileHeader&gt; header = Inspector::TypeBuilder::HeapProfiler::ProfileHeader::create()
</ins><span class="cx">         .setUid(snapshot.uid())
</span><span class="cx">         .setTitle(snapshot.title());
</span><span class="cx">     header-&gt;setMaxJSObjectId(snapshot.maxSnapshotJSObjectId());
</span><span class="lines">@@ -113,10 +115,10 @@
</span><span class="cx">     *result = ScriptProfiler::hasHeapProfiler();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorHeapProfilerAgent::getProfileHeaders(ErrorString*, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::HeapProfiler::ProfileHeader&gt;&gt;&amp; headers)
</del><ins>+void InspectorHeapProfilerAgent::getProfileHeaders(ErrorString*, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::HeapProfiler::ProfileHeader&gt;&gt;&amp; headers)
</ins><span class="cx"> {
</span><span class="cx">     m_profileHeadersRequested = true;
</span><del>-    headers = TypeBuilder::Array&lt;TypeBuilder::HeapProfiler::ProfileHeader&gt;::create();
</del><ins>+    headers = Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::HeapProfiler::ProfileHeader&gt;::create();
</ins><span class="cx"> 
</span><span class="cx">     IdToHeapSnapshotMap::iterator snapshotsEnd = m_snapshots.end();
</span><span class="cx">     for (IdToHeapSnapshotMap::iterator it = m_snapshots.begin(); it != snapshotsEnd; ++it)
</span><span class="lines">@@ -190,7 +192,7 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorHeapProfilerAgent::getObjectByHeapObjectId(ErrorString* error, const String&amp; heapSnapshotObjectId, const String* objectGroup, RefPtr&lt;TypeBuilder::Runtime::RemoteObject&gt;&amp; result)
</del><ins>+void InspectorHeapProfilerAgent::getObjectByHeapObjectId(ErrorString* error, const String&amp; heapSnapshotObjectId, const String* objectGroup, RefPtr&lt;Inspector::TypeBuilder::Runtime::RemoteObject&gt;&amp; result)
</ins><span class="cx"> {
</span><span class="cx">     bool ok;
</span><span class="cx">     unsigned id = heapSnapshotObjectId.toUInt(&amp;ok);
</span><span class="lines">@@ -198,7 +200,7 @@
</span><span class="cx">         *error = &quot;Invalid heap snapshot object id&quot;;
</span><span class="cx">         return;
</span><span class="cx">     }
</span><del>-    ScriptObject heapObject = ScriptProfiler::objectByHeapObjectId(id);
</del><ins>+    Deprecated::ScriptObject heapObject = ScriptProfiler::objectByHeapObjectId(id);
</ins><span class="cx">     if (heapObject.hasNoValue()) {
</span><span class="cx">         *error = &quot;Object is not available&quot;;
</span><span class="cx">         return;
</span><span class="lines">@@ -220,7 +222,7 @@
</span><span class="cx">         *errorString = &quot;Inspected context has gone&quot;;
</span><span class="cx">         return;
</span><span class="cx">     }
</span><del>-    ScriptValue value = injectedScript.findObjectById(objectId);
</del><ins>+    Deprecated::ScriptValue value = injectedScript.findObjectById(objectId);
</ins><span class="cx">     if (value.hasNoValue() || value.isUndefined()) {
</span><span class="cx">         *errorString = &quot;Object with given id not found&quot;;
</span><span class="cx">         return;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorHeapProfilerAgenth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorHeapProfilerAgent.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorHeapProfilerAgent.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorHeapProfilerAgent.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -33,8 +33,9 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(JAVASCRIPT_DEBUGGER) &amp;&amp; ENABLE(INSPECTOR)
</span><span class="cx"> 
</span><del>-#include &quot;InspectorBaseAgent.h&quot;
</del><ins>+#include &quot;InspectorBackendDispatchers.h&quot;
</ins><span class="cx"> #include &quot;InspectorFrontend.h&quot;
</span><ins>+#include &quot;InspectorWebAgentBase.h&quot;
</ins><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="cx"> #include &lt;wtf/Noncopyable.h&gt;
</span><span class="lines">@@ -49,7 +50,7 @@
</span><span class="cx"> 
</span><span class="cx"> typedef String ErrorString;
</span><span class="cx"> 
</span><del>-class InspectorHeapProfilerAgent : public InspectorBaseAgent, public InspectorHeapProfilerBackendDispatcherHandler {
</del><ins>+class InspectorHeapProfilerAgent : public InspectorAgentBase, public InspectorHeapProfilerBackendDispatcherHandler {
</ins><span class="cx">     WTF_MAKE_NONCOPYABLE(InspectorHeapProfilerAgent); WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><span class="cx">     static PassOwnPtr&lt;InspectorHeapProfilerAgent&gt; create(InstrumentingAgents*, InjectedScriptManager*);
</span><span class="lines">@@ -61,16 +62,16 @@
</span><span class="cx"> 
</span><span class="cx">     virtual void hasHeapProfiler(ErrorString*, bool*);
</span><span class="cx"> 
</span><del>-    virtual void getProfileHeaders(ErrorString*, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::HeapProfiler::ProfileHeader&gt;&gt;&amp;);
</del><ins>+    virtual void getProfileHeaders(ErrorString*, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::HeapProfiler::ProfileHeader&gt;&gt;&amp;);
</ins><span class="cx">     virtual void getHeapSnapshot(ErrorString*, int uid);
</span><span class="cx">     virtual void removeProfile(ErrorString*, int uid);
</span><span class="cx"> 
</span><del>-    virtual void didCreateFrontendAndBackend(InspectorFrontendChannel*, InspectorBackendDispatcher*) OVERRIDE;
</del><ins>+    virtual void didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel*, Inspector::InspectorBackendDispatcher*) OVERRIDE;
</ins><span class="cx">     virtual void willDestroyFrontendAndBackend() OVERRIDE;
</span><span class="cx"> 
</span><span class="cx">     virtual void takeHeapSnapshot(ErrorString*, const bool* reportProgress);
</span><span class="cx"> 
</span><del>-    virtual void getObjectByHeapObjectId(ErrorString*, const String&amp; heapSnapshotObjectId, const String* objectGroup, RefPtr&lt;TypeBuilder::Runtime::RemoteObject&gt;&amp; result);
</del><ins>+    virtual void getObjectByHeapObjectId(ErrorString*, const String&amp; heapSnapshotObjectId, const String* objectGroup, RefPtr&lt;Inspector::TypeBuilder::Runtime::RemoteObject&gt;&amp; result);
</ins><span class="cx">     virtual void getHeapObjectId(ErrorString*, const String&amp; objectId, String* heapSnapshotObjectId);
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="lines">@@ -80,7 +81,7 @@
</span><span class="cx"> 
</span><span class="cx">     void resetFrontendProfiles();
</span><span class="cx"> 
</span><del>-    PassRefPtr&lt;TypeBuilder::HeapProfiler::ProfileHeader&gt; createSnapshotHeader(const ScriptHeapSnapshot&amp;);
</del><ins>+    PassRefPtr&lt;Inspector::TypeBuilder::HeapProfiler::ProfileHeader&gt; createSnapshotHeader(const ScriptHeapSnapshot&amp;);
</ins><span class="cx"> 
</span><span class="cx">     InjectedScriptManager* m_injectedScriptManager;
</span><span class="cx">     std::unique_ptr&lt;InspectorHeapProfilerFrontendDispatcher&gt; m_frontendDispatcher;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorIndexedDBAgentcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorIndexedDBAgent.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorIndexedDBAgent.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorIndexedDBAgent.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -61,27 +61,28 @@
</span><span class="cx"> #include &quot;InjectedScript.h&quot;
</span><span class="cx"> #include &quot;InspectorFrontend.h&quot;
</span><span class="cx"> #include &quot;InspectorPageAgent.h&quot;
</span><del>-#include &quot;InspectorValues.h&quot;
</del><span class="cx"> #include &quot;InstrumentingAgents.h&quot;
</span><span class="cx"> #include &quot;SecurityOrigin.h&quot;
</span><del>-
</del><ins>+#include &lt;inspector/InspectorValues.h&gt;
</ins><span class="cx"> #include &lt;wtf/Vector.h&gt;
</span><span class="cx"> 
</span><del>-using WebCore::TypeBuilder::Array;
-using WebCore::TypeBuilder::IndexedDB::DatabaseWithObjectStores;
-using WebCore::TypeBuilder::IndexedDB::DataEntry;
-using WebCore::TypeBuilder::IndexedDB::Key;
-using WebCore::TypeBuilder::IndexedDB::KeyPath;
-using WebCore::TypeBuilder::IndexedDB::KeyRange;
-using WebCore::TypeBuilder::IndexedDB::ObjectStore;
-using WebCore::TypeBuilder::IndexedDB::ObjectStoreIndex;
</del><ins>+using Inspector::TypeBuilder::Array;
+using Inspector::TypeBuilder::IndexedDB::DatabaseWithObjectStores;
+using Inspector::TypeBuilder::IndexedDB::DataEntry;
+using Inspector::TypeBuilder::IndexedDB::Key;
+using Inspector::TypeBuilder::IndexedDB::KeyPath;
+using Inspector::TypeBuilder::IndexedDB::KeyRange;
+using Inspector::TypeBuilder::IndexedDB::ObjectStore;
+using Inspector::TypeBuilder::IndexedDB::ObjectStoreIndex;
</ins><span class="cx"> 
</span><ins>+typedef Inspector::InspectorBackendDispatcher::CallbackBase RequestCallback;
</ins><span class="cx"> typedef WebCore::InspectorIndexedDBBackendDispatcherHandler::RequestDatabaseNamesCallback RequestDatabaseNamesCallback;
</span><span class="cx"> typedef WebCore::InspectorIndexedDBBackendDispatcherHandler::RequestDatabaseCallback RequestDatabaseCallback;
</span><span class="cx"> typedef WebCore::InspectorIndexedDBBackendDispatcherHandler::RequestDataCallback RequestDataCallback;
</span><del>-typedef WebCore::InspectorBackendDispatcher::CallbackBase RequestCallback;
</del><span class="cx"> typedef WebCore::InspectorIndexedDBBackendDispatcherHandler::ClearObjectStoreCallback ClearObjectStoreCallback;
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> namespace {
</span><span class="lines">@@ -123,7 +124,7 @@
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         RefPtr&lt;DOMStringList&gt; databaseNamesList = requestResult-&gt;domStringList();
</span><del>-        RefPtr&lt;TypeBuilder::Array&lt;String&gt;&gt; databaseNames = TypeBuilder::Array&lt;String&gt;::create();
</del><ins>+        RefPtr&lt;Inspector::TypeBuilder::Array&lt;String&gt;&gt; databaseNames = Inspector::TypeBuilder::Array&lt;String&gt;::create();
</ins><span class="cx">         for (size_t i = 0; i &lt; databaseNamesList-&gt;length(); ++i)
</span><span class="cx">             databaseNames-&gt;addItem(databaseNamesList-&gt;item(i));
</span><span class="cx">         m_requestCallback-&gt;sendSuccess(databaseNames.release());
</span><span class="lines">@@ -250,7 +251,7 @@
</span><span class="cx">         break;
</span><span class="cx">     case IDBKeyPath::ArrayType: {
</span><span class="cx">         keyPath = KeyPath::create().setType(KeyPath::Type::Array);
</span><del>-        RefPtr&lt;TypeBuilder::Array&lt;String&gt;&gt; array = TypeBuilder::Array&lt;String&gt;::create();
</del><ins>+        RefPtr&lt;Inspector::TypeBuilder::Array&lt;String&gt;&gt; array = Inspector::TypeBuilder::Array&lt;String&gt;::create();
</ins><span class="cx">         const Vector&lt;String&gt;&amp; stringArray = idbKeyPath.array();
</span><span class="cx">         for (size_t i = 0; i &lt; stringArray.size(); ++i)
</span><span class="cx">             array-&gt;addItem(stringArray[i]);
</span><span class="lines">@@ -285,12 +286,12 @@
</span><span class="cx"> 
</span><span class="cx">         const IDBDatabaseMetadata databaseMetadata = idbDatabase-&gt;metadata();
</span><span class="cx"> 
</span><del>-        RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::IndexedDB::ObjectStore&gt;&gt; objectStores = TypeBuilder::Array&lt;TypeBuilder::IndexedDB::ObjectStore&gt;::create();
</del><ins>+        RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::IndexedDB::ObjectStore&gt;&gt; objectStores = Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::IndexedDB::ObjectStore&gt;::create();
</ins><span class="cx"> 
</span><span class="cx">         for (IDBDatabaseMetadata::ObjectStoreMap::const_iterator it = databaseMetadata.objectStores.begin(); it != databaseMetadata.objectStores.end(); ++it) {
</span><span class="cx">             const IDBObjectStoreMetadata&amp; objectStoreMetadata = it-&gt;value;
</span><span class="cx"> 
</span><del>-            RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::IndexedDB::ObjectStoreIndex&gt;&gt; indexes = TypeBuilder::Array&lt;TypeBuilder::IndexedDB::ObjectStoreIndex&gt;::create();
</del><ins>+            RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::IndexedDB::ObjectStoreIndex&gt;&gt; indexes = Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::IndexedDB::ObjectStoreIndex&gt;::create();
</ins><span class="cx"> 
</span><span class="cx">             for (IDBObjectStoreMetadata::IndexMap::const_iterator it = objectStoreMetadata.indexes.begin(); it != objectStoreMetadata.indexes.end(); ++it) {
</span><span class="cx">                 const IDBIndexMetadata&amp; indexMetadata = it-&gt;value;
</span><span class="lines">@@ -557,7 +558,7 @@
</span><span class="cx"> } // namespace
</span><span class="cx"> 
</span><span class="cx"> InspectorIndexedDBAgent::InspectorIndexedDBAgent(InstrumentingAgents* instrumentingAgents, InjectedScriptManager* injectedScriptManager, InspectorPageAgent* pageAgent)
</span><del>-    : InspectorBaseAgent(ASCIILiteral(&quot;IndexedDB&quot;), instrumentingAgents)
</del><ins>+    : InspectorAgentBase(ASCIILiteral(&quot;IndexedDB&quot;), instrumentingAgents)
</ins><span class="cx">     , m_injectedScriptManager(injectedScriptManager)
</span><span class="cx">     , m_pageAgent(pageAgent)
</span><span class="cx"> {
</span><span class="lines">@@ -567,7 +568,7 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorIndexedDBAgent::didCreateFrontendAndBackend(InspectorFrontendChannel*, InspectorBackendDispatcher* backendDispatcher)
</del><ins>+void InspectorIndexedDBAgent::didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel*, InspectorBackendDispatcher* backendDispatcher)
</ins><span class="cx"> {
</span><span class="cx">     m_backendDispatcher = InspectorIndexedDBBackendDispatcher::create(backendDispatcher, this);
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorIndexedDBAgenth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorIndexedDBAgent.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorIndexedDBAgent.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorIndexedDBAgent.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -33,7 +33,8 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INSPECTOR) &amp;&amp; ENABLE(INDEXED_DATABASE)
</span><span class="cx"> 
</span><del>-#include &quot;InspectorBaseAgent.h&quot;
</del><ins>+#include &quot;InspectorBackendDispatchers.h&quot;
+#include &quot;InspectorWebAgentBase.h&quot;
</ins><span class="cx"> #include &lt;wtf/PassOwnPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -44,7 +45,7 @@
</span><span class="cx"> 
</span><span class="cx"> typedef String ErrorString;
</span><span class="cx"> 
</span><del>-class InspectorIndexedDBAgent : public InspectorBaseAgent, public InspectorIndexedDBBackendDispatcherHandler {
</del><ins>+class InspectorIndexedDBAgent : public InspectorAgentBase, public InspectorIndexedDBBackendDispatcherHandler {
</ins><span class="cx"> public:
</span><span class="cx">     static PassOwnPtr&lt;InspectorIndexedDBAgent&gt; create(InstrumentingAgents* instrumentingAgents, InjectedScriptManager* injectedScriptManager, InspectorPageAgent* pageAgent)
</span><span class="cx">     {
</span><span class="lines">@@ -52,7 +53,7 @@
</span><span class="cx">     }
</span><span class="cx">     ~InspectorIndexedDBAgent();
</span><span class="cx"> 
</span><del>-    virtual void didCreateFrontendAndBackend(InspectorFrontendChannel*, InspectorBackendDispatcher*) OVERRIDE;
</del><ins>+    virtual void didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel*, Inspector::InspectorBackendDispatcher*) OVERRIDE;
</ins><span class="cx">     virtual void willDestroyFrontendAndBackend() OVERRIDE;
</span><span class="cx"> 
</span><span class="cx">     // Called from the front-end.
</span><span class="lines">@@ -60,7 +61,7 @@
</span><span class="cx">     virtual void disable(ErrorString*);
</span><span class="cx">     virtual void requestDatabaseNames(ErrorString*, const String&amp; securityOrigin, PassRefPtr&lt;RequestDatabaseNamesCallback&gt;);
</span><span class="cx">     virtual void requestDatabase(ErrorString*, const String&amp; securityOrigin, const String&amp; databaseName, PassRefPtr&lt;RequestDatabaseCallback&gt;);
</span><del>-    virtual void requestData(ErrorString*, const String&amp; securityOrigin, const String&amp; databaseName, const String&amp; objectStoreName, const String&amp; indexName, int skipCount, int pageSize, const RefPtr&lt;InspectorObject&gt;* keyRange, PassRefPtr&lt;RequestDataCallback&gt;);
</del><ins>+    virtual void requestData(ErrorString*, const String&amp; securityOrigin, const String&amp; databaseName, const String&amp; objectStoreName, const String&amp; indexName, int skipCount, int pageSize, const RefPtr&lt;Inspector::InspectorObject&gt;* keyRange, PassRefPtr&lt;RequestDataCallback&gt;);
</ins><span class="cx">     virtual void clearObjectStore(ErrorString*, const String&amp; in_securityOrigin, const String&amp; in_databaseName, const String&amp; in_objectStoreName, PassRefPtr&lt;ClearObjectStoreCallback&gt;);
</span><span class="cx"> 
</span><span class="cx"> private:
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorInputAgentcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorInputAgent.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorInputAgent.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorInputAgent.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -49,10 +49,12 @@
</span><span class="cx"> #include &lt;wtf/CurrentTime.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> InspectorInputAgent::InspectorInputAgent(InstrumentingAgents* instrumentingAgents, Page* page)
</span><del>-    : InspectorBaseAgent(ASCIILiteral(&quot;Input&quot;), instrumentingAgents)
</del><ins>+    : InspectorAgentBase(ASCIILiteral(&quot;Input&quot;), instrumentingAgents)
</ins><span class="cx">     , m_page(page)
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="lines">@@ -61,7 +63,7 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorInputAgent::didCreateFrontendAndBackend(InspectorFrontendChannel*, InspectorBackendDispatcher* backendDispatcher)
</del><ins>+void InspectorInputAgent::didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel*, InspectorBackendDispatcher* backendDispatcher)
</ins><span class="cx"> {
</span><span class="cx">     m_backendDispatcher = InspectorInputBackendDispatcher::create(backendDispatcher, this);
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorInputAgenth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorInputAgent.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorInputAgent.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorInputAgent.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -33,8 +33,8 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><span class="cx"> 
</span><del>-#include &quot;InspectorBaseAgent.h&quot;
-
</del><ins>+#include &quot;InspectorBackendDispatchers.h&quot;
+#include &quot;InspectorWebAgentBase.h&quot;
</ins><span class="cx"> #include &lt;wtf/Noncopyable.h&gt;
</span><span class="cx"> #include &lt;wtf/PassOwnPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="lines">@@ -44,7 +44,7 @@
</span><span class="cx"> 
</span><span class="cx"> typedef String ErrorString;
</span><span class="cx"> 
</span><del>-class InspectorInputAgent : public InspectorBaseAgent, public InspectorInputBackendDispatcherHandler {
</del><ins>+class InspectorInputAgent : public InspectorAgentBase, public InspectorInputBackendDispatcherHandler {
</ins><span class="cx">     WTF_MAKE_NONCOPYABLE(InspectorInputAgent);
</span><span class="cx"> public:
</span><span class="cx">     static PassOwnPtr&lt;InspectorInputAgent&gt; create(InstrumentingAgents* instrumentingAgents, Page* page)
</span><span class="lines">@@ -54,7 +54,7 @@
</span><span class="cx"> 
</span><span class="cx">     ~InspectorInputAgent();
</span><span class="cx"> 
</span><del>-    virtual void didCreateFrontendAndBackend(InspectorFrontendChannel*, InspectorBackendDispatcher*) OVERRIDE;
</del><ins>+    virtual void didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel*, Inspector::InspectorBackendDispatcher*) OVERRIDE;
</ins><span class="cx">     virtual void willDestroyFrontendAndBackend() OVERRIDE;
</span><span class="cx"> 
</span><span class="cx">     // Methods called from the frontend for simulating input.
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorInstrumentationcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorInstrumentation.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorInstrumentation.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorInstrumentation.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -83,6 +83,8 @@
</span><span class="cx"> #include &lt;wtf/StdLibExtras.h&gt;
</span><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> static const char* const requestAnimationFrameEventName = &quot;requestAnimationFrame&quot;;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorInstrumentationh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorInstrumentation.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorInstrumentation.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorInstrumentation.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -45,6 +45,10 @@
</span><span class="cx"> #include &quot;WebSocketFrame.h&quot;
</span><span class="cx"> #include &lt;wtf/RefPtr.h&gt;
</span><span class="cx"> 
</span><ins>+namespace Deprecated {
+class ScriptObject;
+}
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class CSSRule;
</span><span class="lines">@@ -77,7 +81,6 @@
</span><span class="cx"> class ScriptArguments;
</span><span class="cx"> class ScriptCallStack;
</span><span class="cx"> class ScriptExecutionContext;
</span><del>-class ScriptObject;
</del><span class="cx"> class ScriptProfile;
</span><span class="cx"> class SecurityOrigin;
</span><span class="cx"> class ShadowRoot;
</span><span class="lines">@@ -276,9 +279,9 @@
</span><span class="cx">     static void didReceiveWebSocketFrameError(Document*, unsigned long identifier, const String&amp; errorMessage);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    static ScriptObject wrapCanvas2DRenderingContextForInstrumentation(Document*, const ScriptObject&amp;);
</del><ins>+    static Deprecated::ScriptObject wrapCanvas2DRenderingContextForInstrumentation(Document*, const Deprecated::ScriptObject&amp;);
</ins><span class="cx"> #if ENABLE(WEBGL)
</span><del>-    static ScriptObject wrapWebGLRenderingContextForInstrumentation(Document*, const ScriptObject&amp;);
</del><ins>+    static Deprecated::ScriptObject wrapWebGLRenderingContextForInstrumentation(Document*, const Deprecated::ScriptObject&amp;);
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     static void networkStateChanged(Page*);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorLayerTreeAgentcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorLayerTreeAgent.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorLayerTreeAgent.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorLayerTreeAgent.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -46,10 +46,12 @@
</span><span class="cx"> #include &quot;RenderLayerCompositor.h&quot;
</span><span class="cx"> #include &quot;RenderView.h&quot;
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> InspectorLayerTreeAgent::InspectorLayerTreeAgent(InstrumentingAgents* instrumentingAgents)
</span><del>-    : InspectorBaseAgent(ASCIILiteral(&quot;LayerTree&quot;), instrumentingAgents)
</del><ins>+    : InspectorAgentBase(ASCIILiteral(&quot;LayerTree&quot;), instrumentingAgents)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -58,7 +60,7 @@
</span><span class="cx">     reset();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorLayerTreeAgent::didCreateFrontendAndBackend(InspectorFrontendChannel* frontendChannel, InspectorBackendDispatcher* backendDispatcher)
</del><ins>+void InspectorLayerTreeAgent::didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel* frontendChannel, InspectorBackendDispatcher* backendDispatcher)
</ins><span class="cx"> {
</span><span class="cx">     m_frontendDispatcher = std::make_unique&lt;InspectorLayerTreeFrontendDispatcher&gt;(frontendChannel);
</span><span class="cx">     m_backendDispatcher = InspectorLayerTreeBackendDispatcher::create(backendDispatcher, this);
</span><span class="lines">@@ -105,9 +107,9 @@
</span><span class="cx">     unbindPseudoElement(pseudoElement);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorLayerTreeAgent::layersForNode(ErrorString* errorString, int nodeId, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::LayerTree::Layer&gt;&gt;&amp; layers)
</del><ins>+void InspectorLayerTreeAgent::layersForNode(ErrorString* errorString, int nodeId, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::LayerTree::Layer&gt;&gt;&amp; layers)
</ins><span class="cx"> {
</span><del>-    layers = TypeBuilder::Array&lt;TypeBuilder::LayerTree::Layer&gt;::create();
</del><ins>+    layers = Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::LayerTree::Layer&gt;::create();
</ins><span class="cx"> 
</span><span class="cx">     Node* node = m_instrumentingAgents-&gt;inspectorDOMAgent()-&gt;nodeForId(nodeId);
</span><span class="cx">     if (!node) {
</span><span class="lines">@@ -124,7 +126,7 @@
</span><span class="cx">     gatherLayersUsingRenderObjectHierarchy(errorString, renderer, layers);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorLayerTreeAgent::gatherLayersUsingRenderObjectHierarchy(ErrorString* errorString, RenderObject* renderer, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::LayerTree::Layer&gt;&gt;&amp; layers)
</del><ins>+void InspectorLayerTreeAgent::gatherLayersUsingRenderObjectHierarchy(ErrorString* errorString, RenderObject* renderer, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::LayerTree::Layer&gt;&gt;&amp; layers)
</ins><span class="cx"> {
</span><span class="cx">     if (renderer-&gt;hasLayer()) {
</span><span class="cx">         gatherLayersUsingRenderLayerHierarchy(errorString, toRenderLayerModelObject(renderer)-&gt;layer(), layers);
</span><span class="lines">@@ -135,7 +137,7 @@
</span><span class="cx">         gatherLayersUsingRenderObjectHierarchy(errorString, renderer, layers);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorLayerTreeAgent::gatherLayersUsingRenderLayerHierarchy(ErrorString* errorString, RenderLayer* renderLayer, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::LayerTree::Layer&gt;&gt;&amp; layers)
</del><ins>+void InspectorLayerTreeAgent::gatherLayersUsingRenderLayerHierarchy(ErrorString* errorString, RenderLayer* renderLayer, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::LayerTree::Layer&gt;&gt;&amp; layers)
</ins><span class="cx"> {
</span><span class="cx">     if (renderLayer-&gt;isComposited())
</span><span class="cx">         layers-&gt;addItem(buildObjectForLayer(errorString, renderLayer));
</span><span class="lines">@@ -144,7 +146,7 @@
</span><span class="cx">         gatherLayersUsingRenderLayerHierarchy(errorString, renderLayer, layers);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::LayerTree::Layer&gt; InspectorLayerTreeAgent::buildObjectForLayer(ErrorString* errorString, RenderLayer* renderLayer)
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::LayerTree::Layer&gt; InspectorLayerTreeAgent::buildObjectForLayer(ErrorString* errorString, RenderLayer* renderLayer)
</ins><span class="cx"> {
</span><span class="cx">     RenderObject* renderer = &amp;renderLayer-&gt;renderer();
</span><span class="cx">     RenderLayerBacking* backing = renderLayer-&gt;backing();
</span><span class="lines">@@ -164,7 +166,7 @@
</span><span class="cx">         node = renderer-&gt;parent()-&gt;element();
</span><span class="cx"> 
</span><span class="cx">     // Basic set of properties.
</span><del>-    RefPtr&lt;TypeBuilder::LayerTree::Layer&gt; layerObject = TypeBuilder::LayerTree::Layer::create()
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::LayerTree::Layer&gt; layerObject = Inspector::TypeBuilder::LayerTree::Layer::create()
</ins><span class="cx">         .setLayerId(bind(renderLayer))
</span><span class="cx">         .setNodeId(idForNode(errorString, node))
</span><span class="cx">         .setBounds(buildObjectForIntRect(renderer-&gt;absoluteBoundingBoxRect()))
</span><span class="lines">@@ -216,16 +218,16 @@
</span><span class="cx">     return nodeId;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::LayerTree::IntRect&gt; InspectorLayerTreeAgent::buildObjectForIntRect(const IntRect&amp; rect)
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::LayerTree::IntRect&gt; InspectorLayerTreeAgent::buildObjectForIntRect(const IntRect&amp; rect)
</ins><span class="cx"> {
</span><del>-    return TypeBuilder::LayerTree::IntRect::create()
</del><ins>+    return Inspector::TypeBuilder::LayerTree::IntRect::create()
</ins><span class="cx">         .setX(rect.x())
</span><span class="cx">         .setY(rect.y())
</span><span class="cx">         .setWidth(rect.width())
</span><span class="cx">         .setHeight(rect.height()).release();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorLayerTreeAgent::reasonsForCompositingLayer(ErrorString* errorString, const String&amp; layerId, RefPtr&lt;TypeBuilder::LayerTree::CompositingReasons&gt;&amp; compositingReasons)
</del><ins>+void InspectorLayerTreeAgent::reasonsForCompositingLayer(ErrorString* errorString, const String&amp; layerId, RefPtr&lt;Inspector::TypeBuilder::LayerTree::CompositingReasons&gt;&amp; compositingReasons)
</ins><span class="cx"> {
</span><span class="cx">     const RenderLayer* renderLayer = m_idToLayer.get(layerId);
</span><span class="cx"> 
</span><span class="lines">@@ -235,7 +237,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     CompositingReasons reasonsBitmask = renderLayer-&gt;compositor().reasonsForCompositing(*renderLayer);
</span><del>-    compositingReasons = TypeBuilder::LayerTree::CompositingReasons::create();
</del><ins>+    compositingReasons = Inspector::TypeBuilder::LayerTree::CompositingReasons::create();
</ins><span class="cx"> 
</span><span class="cx">     if (reasonsBitmask &amp; CompositingReason3DTransform)
</span><span class="cx">         compositingReasons-&gt;setTransform3D(true);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorLayerTreeAgenth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorLayerTreeAgent.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorLayerTreeAgent.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorLayerTreeAgent.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -31,9 +31,10 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><span class="cx"> 
</span><del>-#include &quot;InspectorBaseAgent.h&quot;
</del><ins>+#include &quot;InspectorBackendDispatchers.h&quot;
</ins><span class="cx"> #include &quot;InspectorFrontend.h&quot;
</span><del>-#include &quot;InspectorTypeBuilder.h&quot;
</del><ins>+#include &quot;InspectorWebAgentBase.h&quot;
+#include &quot;InspectorWebTypeBuilders.h&quot;
</ins><span class="cx"> #include &quot;RenderLayer.h&quot;
</span><span class="cx"> #include &lt;wtf/PassOwnPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/PassRefPtr.h&gt;
</span><span class="lines">@@ -46,7 +47,7 @@
</span><span class="cx"> 
</span><span class="cx"> typedef String ErrorString;
</span><span class="cx"> 
</span><del>-class InspectorLayerTreeAgent : public InspectorBaseAgent, public InspectorLayerTreeBackendDispatcherHandler {
</del><ins>+class InspectorLayerTreeAgent : public InspectorAgentBase, public InspectorLayerTreeBackendDispatcherHandler {
</ins><span class="cx"> public:
</span><span class="cx">     static PassOwnPtr&lt;InspectorLayerTreeAgent&gt; create(InstrumentingAgents* instrumentingAgents)
</span><span class="cx">     {
</span><span class="lines">@@ -54,7 +55,7 @@
</span><span class="cx">     }
</span><span class="cx">     ~InspectorLayerTreeAgent();
</span><span class="cx"> 
</span><del>-    virtual void didCreateFrontendAndBackend(InspectorFrontendChannel*, InspectorBackendDispatcher*) OVERRIDE;
</del><ins>+    virtual void didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel*, Inspector::InspectorBackendDispatcher*) OVERRIDE;
</ins><span class="cx">     virtual void willDestroyFrontendAndBackend() OVERRIDE;
</span><span class="cx">     void reset();
</span><span class="cx"> 
</span><span class="lines">@@ -65,8 +66,8 @@
</span><span class="cx">     // Called from the front-end.
</span><span class="cx">     virtual void enable(ErrorString*);
</span><span class="cx">     virtual void disable(ErrorString*);
</span><del>-    virtual void layersForNode(ErrorString*, int nodeId, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::LayerTree::Layer&gt;&gt;&amp;);
-    virtual void reasonsForCompositingLayer(ErrorString*, const String&amp; layerId, RefPtr&lt;TypeBuilder::LayerTree::CompositingReasons&gt;&amp;);
</del><ins>+    virtual void layersForNode(ErrorString*, int nodeId, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::LayerTree::Layer&gt;&gt;&amp;);
+    virtual void reasonsForCompositingLayer(ErrorString*, const String&amp; layerId, RefPtr&lt;Inspector::TypeBuilder::LayerTree::CompositingReasons&gt;&amp;);
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     InspectorLayerTreeAgent(InstrumentingAgents*);
</span><span class="lines">@@ -75,11 +76,11 @@
</span><span class="cx">     String bind(const RenderLayer*);
</span><span class="cx">     void unbind(const RenderLayer*);
</span><span class="cx"> 
</span><del>-    void gatherLayersUsingRenderObjectHierarchy(ErrorString*, RenderObject*, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::LayerTree::Layer&gt;&gt;&amp;);
-    void gatherLayersUsingRenderLayerHierarchy(ErrorString*, RenderLayer*, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::LayerTree::Layer&gt;&gt;&amp;);
</del><ins>+    void gatherLayersUsingRenderObjectHierarchy(ErrorString*, RenderObject*, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::LayerTree::Layer&gt;&gt;&amp;);
+    void gatherLayersUsingRenderLayerHierarchy(ErrorString*, RenderLayer*, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::LayerTree::Layer&gt;&gt;&amp;);
</ins><span class="cx"> 
</span><del>-    PassRefPtr&lt;TypeBuilder::LayerTree::Layer&gt; buildObjectForLayer(ErrorString*, RenderLayer*);
-    PassRefPtr&lt;TypeBuilder::LayerTree::IntRect&gt; buildObjectForIntRect(const IntRect&amp;);
</del><ins>+    PassRefPtr&lt;Inspector::TypeBuilder::LayerTree::Layer&gt; buildObjectForLayer(ErrorString*, RenderLayer*);
+    PassRefPtr&lt;Inspector::TypeBuilder::LayerTree::IntRect&gt; buildObjectForIntRect(const IntRect&amp;);
</ins><span class="cx"> 
</span><span class="cx">     int idForNode(ErrorString*, Node*);
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorMemoryAgentcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorMemoryAgent.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorMemoryAgent.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorMemoryAgent.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -41,13 +41,13 @@
</span><span class="cx"> #include &quot;Frame.h&quot;
</span><span class="cx"> #include &quot;InspectorDOMStorageAgent.h&quot;
</span><span class="cx"> #include &quot;InspectorFrontend.h&quot;
</span><del>-#include &quot;InspectorValues.h&quot;
</del><span class="cx"> #include &quot;InstrumentingAgents.h&quot;
</span><span class="cx"> #include &quot;MemoryCache.h&quot;
</span><span class="cx"> #include &quot;Node.h&quot;
</span><span class="cx"> #include &quot;NodeTraversal.h&quot;
</span><span class="cx"> #include &quot;ScriptProfiler.h&quot;
</span><span class="cx"> #include &quot;StyledElement.h&quot;
</span><ins>+#include &lt;inspector/InspectorValues.h&gt;
</ins><span class="cx"> #include &lt;runtime/ArrayBufferView.h&gt;
</span><span class="cx"> #include &lt;wtf/HashSet.h&gt;
</span><span class="cx"> #include &lt;wtf/OwnPtr.h&gt;
</span><span class="lines">@@ -58,16 +58,18 @@
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><span class="cx"> // Use a type alias instead of 'using' here which would cause a conflict on Mac.
</span><del>-typedef WebCore::TypeBuilder::Memory::MemoryBlock InspectorMemoryBlock;
-typedef WebCore::TypeBuilder::Array&lt;InspectorMemoryBlock&gt; InspectorMemoryBlocks;
</del><ins>+typedef Inspector::TypeBuilder::Memory::MemoryBlock InspectorMemoryBlock;
+typedef Inspector::TypeBuilder::Array&lt;InspectorMemoryBlock&gt; InspectorMemoryBlocks;
</ins><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> InspectorMemoryAgent::~InspectorMemoryAgent()
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorMemoryAgent::didCreateFrontendAndBackend(InspectorFrontendChannel*, InspectorBackendDispatcher* backendDispatcher)
</del><ins>+void InspectorMemoryAgent::didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel*, InspectorBackendDispatcher* backendDispatcher)
</ins><span class="cx"> {
</span><span class="cx">     m_backendDispatcher = InspectorMemoryBackendDispatcher::create(backendDispatcher, this);
</span><span class="cx"> }
</span><span class="lines">@@ -85,7 +87,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> InspectorMemoryAgent::InspectorMemoryAgent(InstrumentingAgents* instrumentingAgents)
</span><del>-    : InspectorBaseAgent(ASCIILiteral(&quot;Memory&quot;), instrumentingAgents)
</del><ins>+    : InspectorAgentBase(ASCIILiteral(&quot;Memory&quot;), instrumentingAgents)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorMemoryAgenth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorMemoryAgent.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorMemoryAgent.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorMemoryAgent.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -33,8 +33,8 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><span class="cx"> 
</span><del>-#include &quot;InspectorBaseAgent.h&quot;
-#include &quot;InspectorFrontend.h&quot;
</del><ins>+#include &quot;InspectorBackendDispatchers.h&quot;
+#include &quot;InspectorWebAgentBase.h&quot;
</ins><span class="cx"> #include &lt;wtf/PassOwnPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/RefPtr.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -45,13 +45,13 @@
</span><span class="cx"> 
</span><span class="cx"> typedef String ErrorString;
</span><span class="cx"> 
</span><del>-class InspectorMemoryAgent : public InspectorBaseAgent, public InspectorMemoryBackendDispatcherHandler {
</del><ins>+class InspectorMemoryAgent : public InspectorAgentBase, public InspectorMemoryBackendDispatcherHandler {
</ins><span class="cx">     WTF_MAKE_NONCOPYABLE(InspectorMemoryAgent);
</span><span class="cx"> public:
</span><span class="cx">     static PassOwnPtr&lt;InspectorMemoryAgent&gt; create(InstrumentingAgents* instrumentingAgents);
</span><span class="cx">     virtual ~InspectorMemoryAgent();
</span><span class="cx"> 
</span><del>-    virtual void didCreateFrontendAndBackend(InspectorFrontendChannel*, InspectorBackendDispatcher*) OVERRIDE;
</del><ins>+    virtual void didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel*, Inspector::InspectorBackendDispatcher*) OVERRIDE;
</ins><span class="cx">     virtual void willDestroyFrontendAndBackend() OVERRIDE;
</span><span class="cx"> 
</span><span class="cx">     virtual void getDOMCounters(ErrorString*, int* documents, int* nodes, int* jsEventListeners);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorOverlaycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorOverlay.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorOverlay.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorOverlay.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -39,7 +39,6 @@
</span><span class="cx"> #include &quot;GraphicsContext.h&quot;
</span><span class="cx"> #include &quot;InspectorClient.h&quot;
</span><span class="cx"> #include &quot;InspectorOverlayPage.h&quot;
</span><del>-#include &quot;InspectorValues.h&quot;
</del><span class="cx"> #include &quot;MainFrame.h&quot;
</span><span class="cx"> #include &quot;Node.h&quot;
</span><span class="cx"> #include &quot;Page.h&quot;
</span><span class="lines">@@ -55,11 +54,14 @@
</span><span class="cx"> #include &quot;RenderView.h&quot;
</span><span class="cx"> #include &quot;ScriptController.h&quot;
</span><span class="cx"> #include &quot;ScriptSourceCode.h&quot;
</span><del>-#include &quot;ScriptValue.h&quot;
</del><span class="cx"> #include &quot;Settings.h&quot;
</span><span class="cx"> #include &quot;StyledElement.h&quot;
</span><ins>+#include &lt;bindings/ScriptValue.h&gt;
+#include &lt;inspector/InspectorValues.h&gt;
</ins><span class="cx"> #include &lt;wtf/text/StringBuilder.h&gt;
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> namespace {
</span><span class="lines">@@ -595,12 +597,12 @@
</span><span class="cx">     LayoutRect shapeBounds = shapeOutsideInfo-&gt;computedShapePhysicalBoundingBox();
</span><span class="cx">     FloatQuad shapeQuad = renderer-&gt;localToAbsoluteQuad(FloatRect(shapeBounds));
</span><span class="cx">     contentsQuadToPage(containingFrame-&gt;page()-&gt;mainFrame().view(), containingFrame-&gt;view(), shapeQuad);
</span><del>-    shapeObject-&gt;setArray(&quot;bounds&quot;, buildArrayForQuad(shapeQuad));
</del><ins>+    shapeObject-&gt;setArray(ASCIILiteral(&quot;bounds&quot;), buildArrayForQuad(shapeQuad));
</ins><span class="cx"> 
</span><del>-    Path path;
-    shapeOutsideInfo-&gt;computedShape().buildPath(path);
</del><ins>+    Shape::DisplayPaths paths;
+    shapeOutsideInfo-&gt;computedShape().buildDisplayPaths(paths);
</ins><span class="cx"> 
</span><del>-    if (path.length()) {
</del><ins>+    if (paths.shape.length()) {
</ins><span class="cx">         RefPtr&lt;InspectorArray&gt; shapePath = InspectorArray::create();
</span><span class="cx">         PathApplyInfo info;
</span><span class="cx">         info.rootView = containingFrame-&gt;page()-&gt;mainFrame().view();
</span><span class="lines">@@ -609,9 +611,18 @@
</span><span class="cx">         info.renderer = renderer;
</span><span class="cx">         info.shapeOutsideInfo = shapeOutsideInfo;
</span><span class="cx"> 
</span><del>-        path.apply(&amp;info, &amp;appendPathSegment);
</del><ins>+        paths.shape.apply(&amp;info, &amp;appendPathSegment);
</ins><span class="cx"> 
</span><del>-        shapeObject-&gt;setArray(&quot;path&quot;, shapePath.release());
</del><ins>+        shapeObject-&gt;setArray(ASCIILiteral(&quot;shape&quot;), shapePath.release());
+
+        if (paths.marginShape.length()) {
+            shapePath = InspectorArray::create();
+            info.array = shapePath.get();
+
+            paths.marginShape.apply(&amp;info, &amp;appendPathSegment);
+
+            shapeObject-&gt;setArray(ASCIILiteral(&quot;marginShape&quot;), shapePath.release());
+        }
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     return shapeObject.release();
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorOverlayh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorOverlay.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorOverlay.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorOverlay.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -32,20 +32,22 @@
</span><span class="cx"> #include &quot;Color.h&quot;
</span><span class="cx"> #include &quot;FloatQuad.h&quot;
</span><span class="cx"> #include &quot;LayoutRect.h&quot;
</span><del>-
</del><span class="cx"> #include &lt;wtf/OwnPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/PassOwnPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/RefPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/Vector.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><ins>+namespace Inspector {
+class InspectorObject;
+class InspectorValue;
+}
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class Color;
</span><span class="cx"> class GraphicsContext;
</span><span class="cx"> class InspectorClient;
</span><del>-class InspectorValue;
-class InspectorObject;
</del><span class="cx"> class IntRect;
</span><span class="cx"> class Node;
</span><span class="cx"> class Page;
</span><span class="lines">@@ -124,7 +126,7 @@
</span><span class="cx"> 
</span><span class="cx">     void didSetSearchingForNode(bool enabled);
</span><span class="cx"> 
</span><del>-    PassRefPtr&lt;InspectorObject&gt; buildObjectForHighlightedNode() const;
</del><ins>+    PassRefPtr&lt;Inspector::InspectorObject&gt; buildObjectForHighlightedNode() const;
</ins><span class="cx"> 
</span><span class="cx">     void freePage();
</span><span class="cx"> private:
</span><span class="lines">@@ -137,7 +139,7 @@
</span><span class="cx">     Page* overlayPage();
</span><span class="cx">     void reset(const IntSize&amp; viewportSize, const IntSize&amp; frameViewFullSize);
</span><span class="cx">     void evaluateInOverlay(const String&amp; method, const String&amp; argument);
</span><del>-    void evaluateInOverlay(const String&amp; method, PassRefPtr&lt;InspectorValue&gt; argument);
</del><ins>+    void evaluateInOverlay(const String&amp; method, PassRefPtr&lt;Inspector::InspectorValue&gt; argument);
</ins><span class="cx"> 
</span><span class="cx">     Page* m_page;
</span><span class="cx">     InspectorClient* m_client;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorOverlayPagejs"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorOverlayPage.js (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorOverlayPage.js        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorOverlayPage.js        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -19,7 +19,8 @@
</span><span class="cx"> const regionNumberStrokeColor = &quot;rgb(61, 127, 204)&quot;;
</span><span class="cx"> 
</span><span class="cx"> // CSS Shapes highlight colors
</span><del>-const shapeHighlightColor = &quot;rgb(255, 105, 180)&quot;;
</del><ins>+const shapeHighlightColor = &quot;rgba(96, 82, 127, 0.8)&quot;;
+const shapeMarginHighlightColor = &quot;rgba(96, 82, 127, 0.6)&quot;;
</ins><span class="cx"> 
</span><span class="cx"> function drawPausedInDebuggerMessage(message)
</span><span class="cx"> {
</span><span class="lines">@@ -562,9 +563,13 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> function _drawShapeHighlight(shapeInfo) {
</span><del>-    if (shapeInfo.path)
-        drawPath(context, shapeInfo.path, shapeHighlightColor);
-    else
</del><ins>+    if (shapeInfo.marginShape)
+        drawPath(context, shapeInfo.marginShape, shapeMarginHighlightColor);
+
+    if (shapeInfo.shape)
+        drawPath(context, shapeInfo.shape, shapeHighlightColor);
+
+    if (!(shapeInfo.shape || shapeInfo.marginShape))
</ins><span class="cx">         drawOutlinedQuad(shapeInfo.bounds, shapeHighlightColor, shapeHighlightColor);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorPageAgentcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorPageAgent.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorPageAgent.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorPageAgent.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -66,7 +66,6 @@
</span><span class="cx"> #include &quot;InspectorFrontend.h&quot;
</span><span class="cx"> #include &quot;InspectorInstrumentation.h&quot;
</span><span class="cx"> #include &quot;InspectorOverlay.h&quot;
</span><del>-#include &quot;InspectorValues.h&quot;
</del><span class="cx"> #include &quot;InstrumentingAgents.h&quot;
</span><span class="cx"> #include &quot;MainFrame.h&quot;
</span><span class="cx"> #include &quot;MemoryCache.h&quot;
</span><span class="lines">@@ -74,12 +73,13 @@
</span><span class="cx"> #include &quot;RegularExpression.h&quot;
</span><span class="cx"> #include &quot;ResourceBuffer.h&quot;
</span><span class="cx"> #include &quot;ScriptController.h&quot;
</span><del>-#include &quot;ScriptObject.h&quot;
</del><span class="cx"> #include &quot;SecurityOrigin.h&quot;
</span><span class="cx"> #include &quot;Settings.h&quot;
</span><span class="cx"> #include &quot;TextEncoding.h&quot;
</span><span class="cx"> #include &quot;TextResourceDecoder.h&quot;
</span><span class="cx"> #include &quot;UserGestureIndicator.h&quot;
</span><ins>+#include &lt;bindings/ScriptValue.h&gt;
+#include &lt;inspector/InspectorValues.h&gt;
</ins><span class="cx"> #include &lt;wtf/CurrentTime.h&gt;
</span><span class="cx"> #include &lt;wtf/ListHashSet.h&gt;
</span><span class="cx"> #include &lt;wtf/Vector.h&gt;
</span><span class="lines">@@ -90,6 +90,8 @@
</span><span class="cx"> #include &quot;LegacyWebArchive.h&quot;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> static bool decodeBuffer(const char* buffer, unsigned size, const String&amp; textEncodingName, String* result)
</span><span class="lines">@@ -297,27 +299,27 @@
</span><span class="cx">     return cachedResource;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-TypeBuilder::Page::ResourceType::Enum InspectorPageAgent::resourceTypeJson(InspectorPageAgent::ResourceType resourceType)
</del><ins>+Inspector::TypeBuilder::Page::ResourceType::Enum InspectorPageAgent::resourceTypeJson(InspectorPageAgent::ResourceType resourceType)
</ins><span class="cx"> {
</span><span class="cx">     switch (resourceType) {
</span><span class="cx">     case DocumentResource:
</span><del>-        return TypeBuilder::Page::ResourceType::Document;
</del><ins>+        return Inspector::TypeBuilder::Page::ResourceType::Document;
</ins><span class="cx">     case ImageResource:
</span><del>-        return TypeBuilder::Page::ResourceType::Image;
</del><ins>+        return Inspector::TypeBuilder::Page::ResourceType::Image;
</ins><span class="cx">     case FontResource:
</span><del>-        return TypeBuilder::Page::ResourceType::Font;
</del><ins>+        return Inspector::TypeBuilder::Page::ResourceType::Font;
</ins><span class="cx">     case StylesheetResource:
</span><del>-        return TypeBuilder::Page::ResourceType::Stylesheet;
</del><ins>+        return Inspector::TypeBuilder::Page::ResourceType::Stylesheet;
</ins><span class="cx">     case ScriptResource:
</span><del>-        return TypeBuilder::Page::ResourceType::Script;
</del><ins>+        return Inspector::TypeBuilder::Page::ResourceType::Script;
</ins><span class="cx">     case XHRResource:
</span><del>-        return TypeBuilder::Page::ResourceType::XHR;
</del><ins>+        return Inspector::TypeBuilder::Page::ResourceType::XHR;
</ins><span class="cx">     case WebSocketResource:
</span><del>-        return TypeBuilder::Page::ResourceType::WebSocket;
</del><ins>+        return Inspector::TypeBuilder::Page::ResourceType::WebSocket;
</ins><span class="cx">     case OtherResource:
</span><del>-        return TypeBuilder::Page::ResourceType::Other;
</del><ins>+        return Inspector::TypeBuilder::Page::ResourceType::Other;
</ins><span class="cx">     }
</span><del>-    return TypeBuilder::Page::ResourceType::Other;
</del><ins>+    return Inspector::TypeBuilder::Page::ResourceType::Other;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> InspectorPageAgent::ResourceType InspectorPageAgent::cachedResourceType(const CachedResource&amp; cachedResource)
</span><span class="lines">@@ -345,13 +347,13 @@
</span><span class="cx">     return InspectorPageAgent::OtherResource;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-TypeBuilder::Page::ResourceType::Enum InspectorPageAgent::cachedResourceTypeJson(const CachedResource&amp; cachedResource)
</del><ins>+Inspector::TypeBuilder::Page::ResourceType::Enum InspectorPageAgent::cachedResourceTypeJson(const CachedResource&amp; cachedResource)
</ins><span class="cx"> {
</span><span class="cx">     return resourceTypeJson(cachedResourceType(cachedResource));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> InspectorPageAgent::InspectorPageAgent(InstrumentingAgents* instrumentingAgents, Page* page, InspectorAgent* inspectorAgent, InjectedScriptManager* injectedScriptManager, InspectorClient* client, InspectorOverlay* overlay)
</span><del>-    : InspectorBaseAgent(ASCIILiteral(&quot;Page&quot;), instrumentingAgents)
</del><ins>+    : InspectorAgentBase(ASCIILiteral(&quot;Page&quot;), instrumentingAgents)
</ins><span class="cx">     , m_page(page)
</span><span class="cx">     , m_inspectorAgent(inspectorAgent)
</span><span class="cx">     , m_injectedScriptManager(injectedScriptManager)
</span><span class="lines">@@ -371,7 +373,7 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorPageAgent::didCreateFrontendAndBackend(InspectorFrontendChannel* frontendChannel, InspectorBackendDispatcher* backendDispatcher)
</del><ins>+void InspectorPageAgent::didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel* frontendChannel, InspectorBackendDispatcher* backendDispatcher)
</ins><span class="cx"> {
</span><span class="cx">     m_frontendDispatcher = std::make_unique&lt;InspectorPageFrontendDispatcher&gt;(frontendChannel);
</span><span class="cx">     m_backendDispatcher = InspectorPageBackendDispatcher::create(backendDispatcher, this);
</span><span class="lines">@@ -460,9 +462,9 @@
</span><span class="cx">     frame.loader().changeLocation(frame.document()-&gt;securityOrigin(), frame.document()-&gt;completeURL(url), &quot;&quot;, false, false);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static PassRefPtr&lt;TypeBuilder::Page::Cookie&gt; buildObjectForCookie(const Cookie&amp; cookie)
</del><ins>+static PassRefPtr&lt;Inspector::TypeBuilder::Page::Cookie&gt; buildObjectForCookie(const Cookie&amp; cookie)
</ins><span class="cx"> {
</span><del>-    return TypeBuilder::Page::Cookie::create()
</del><ins>+    return Inspector::TypeBuilder::Page::Cookie::create()
</ins><span class="cx">         .setName(cookie.name)
</span><span class="cx">         .setValue(cookie.value)
</span><span class="cx">         .setDomain(cookie.domain)
</span><span class="lines">@@ -475,9 +477,9 @@
</span><span class="cx">         .release();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static PassRefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::Page::Cookie&gt;&gt; buildArrayForCookies(ListHashSet&lt;Cookie&gt;&amp; cookiesList)
</del><ins>+static PassRefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Page::Cookie&gt;&gt; buildArrayForCookies(ListHashSet&lt;Cookie&gt;&amp; cookiesList)
</ins><span class="cx"> {
</span><del>-    RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::Page::Cookie&gt;&gt; cookies = TypeBuilder::Array&lt;TypeBuilder::Page::Cookie&gt;::create();
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Page::Cookie&gt;&gt; cookies = Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Page::Cookie&gt;::create();
</ins><span class="cx"> 
</span><span class="cx">     ListHashSet&lt;Cookie&gt;::iterator end = cookiesList.end();
</span><span class="cx">     ListHashSet&lt;Cookie&gt;::iterator it = cookiesList.begin();
</span><span class="lines">@@ -528,7 +530,7 @@
</span><span class="cx">     return result;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorPageAgent::getCookies(ErrorString*, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::Page::Cookie&gt;&gt;&amp; cookies)
</del><ins>+void InspectorPageAgent::getCookies(ErrorString*, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Page::Cookie&gt;&gt;&amp; cookies)
</ins><span class="cx"> {
</span><span class="cx">     // If we can get raw cookies.
</span><span class="cx">     ListHashSet&lt;Cookie&gt; rawCookiesList;
</span><span class="lines">@@ -567,7 +569,7 @@
</span><span class="cx">     if (rawCookiesImplemented)
</span><span class="cx">         cookies = buildArrayForCookies(rawCookiesList);
</span><span class="cx">     else
</span><del>-        cookies = TypeBuilder::Array&lt;TypeBuilder::Page::Cookie&gt;::create();
</del><ins>+        cookies = Inspector::TypeBuilder::Array&lt;TypeBuilder::Page::Cookie&gt;::create();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorPageAgent::deleteCookie(ErrorString*, const String&amp; cookieName, const String&amp; url)
</span><span class="lines">@@ -577,7 +579,7 @@
</span><span class="cx">         WebCore::deleteCookie(frame-&gt;document(), parsedURL, cookieName);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorPageAgent::getResourceTree(ErrorString*, RefPtr&lt;TypeBuilder::Page::FrameResourceTree&gt;&amp; object)
</del><ins>+void InspectorPageAgent::getResourceTree(ErrorString*, RefPtr&lt;Inspector::TypeBuilder::Page::FrameResourceTree&gt;&amp; object)
</ins><span class="cx"> {
</span><span class="cx">     object = buildObjectForFrameTree(&amp;m_page-&gt;mainFrame());
</span><span class="cx"> }
</span><span class="lines">@@ -604,9 +606,9 @@
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorPageAgent::searchInResource(ErrorString*, const String&amp; frameId, const String&amp; url, const String&amp; query, const bool* const optionalCaseSensitive, const bool* const optionalIsRegex, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::Page::SearchMatch&gt;&gt;&amp; results)
</del><ins>+void InspectorPageAgent::searchInResource(ErrorString*, const String&amp; frameId, const String&amp; url, const String&amp; query, const bool* const optionalCaseSensitive, const bool* const optionalIsRegex, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Page::SearchMatch&gt;&gt;&amp; results)
</ins><span class="cx"> {
</span><del>-    results = TypeBuilder::Array&lt;TypeBuilder::Page::SearchMatch&gt;::create();
</del><ins>+    results = Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Page::SearchMatch&gt;::create();
</ins><span class="cx"> 
</span><span class="cx">     bool isRegex = optionalIsRegex ? *optionalIsRegex : false;
</span><span class="cx">     bool caseSensitive = optionalCaseSensitive ? *optionalCaseSensitive : false;
</span><span class="lines">@@ -638,18 +640,18 @@
</span><span class="cx">     results = ContentSearchUtils::searchInTextByLines(content, query, caseSensitive, isRegex);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static PassRefPtr&lt;TypeBuilder::Page::SearchResult&gt; buildObjectForSearchResult(const String&amp; frameId, const String&amp; url, int matchesCount)
</del><ins>+static PassRefPtr&lt;Inspector::TypeBuilder::Page::SearchResult&gt; buildObjectForSearchResult(const String&amp; frameId, const String&amp; url, int matchesCount)
</ins><span class="cx"> {
</span><del>-    return TypeBuilder::Page::SearchResult::create()
</del><ins>+    return Inspector::TypeBuilder::Page::SearchResult::create()
</ins><span class="cx">         .setUrl(url)
</span><span class="cx">         .setFrameId(frameId)
</span><span class="cx">         .setMatchesCount(matchesCount)
</span><span class="cx">         .release();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorPageAgent::searchInResources(ErrorString*, const String&amp; text, const bool* const optionalCaseSensitive, const bool* const optionalIsRegex, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::Page::SearchResult&gt;&gt;&amp; results)
</del><ins>+void InspectorPageAgent::searchInResources(ErrorString*, const String&amp; text, const bool* const optionalCaseSensitive, const bool* const optionalIsRegex, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Page::SearchResult&gt;&gt;&amp; results)
</ins><span class="cx"> {
</span><del>-    RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::Page::SearchResult&gt;&gt; searchResults = TypeBuilder::Array&lt;TypeBuilder::Page::SearchResult&gt;::create();
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Page::SearchResult&gt;&gt; searchResults = Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Page::SearchResult&gt;::create();
</ins><span class="cx"> 
</span><span class="cx">     bool isRegex = optionalIsRegex ? *optionalIsRegex : false;
</span><span class="cx">     bool caseSensitive = optionalCaseSensitive ? *optionalCaseSensitive : false;
</span><span class="lines">@@ -1035,9 +1037,9 @@
</span><span class="cx">     m_frontendDispatcher-&gt;scriptsEnabled(isEnabled);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::Page::Frame&gt; InspectorPageAgent::buildObjectForFrame(Frame* frame)
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::Page::Frame&gt; InspectorPageAgent::buildObjectForFrame(Frame* frame)
</ins><span class="cx"> {
</span><del>-    RefPtr&lt;TypeBuilder::Page::Frame&gt; frameObject = TypeBuilder::Page::Frame::create()
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Page::Frame&gt; frameObject = Inspector::TypeBuilder::Page::Frame::create()
</ins><span class="cx">         .setId(frameId(frame))
</span><span class="cx">         .setLoaderId(loaderId(frame-&gt;loader().documentLoader()))
</span><span class="cx">         .setUrl(frame-&gt;document()-&gt;url().string())
</span><span class="lines">@@ -1055,11 +1057,11 @@
</span><span class="cx">     return frameObject;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::Page::FrameResourceTree&gt; InspectorPageAgent::buildObjectForFrameTree(Frame* frame)
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::Page::FrameResourceTree&gt; InspectorPageAgent::buildObjectForFrameTree(Frame* frame)
</ins><span class="cx"> {
</span><del>-    RefPtr&lt;TypeBuilder::Page::Frame&gt; frameObject = buildObjectForFrame(frame);
-    RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::Page::FrameResourceTree::Resources&gt;&gt; subresources = TypeBuilder::Array&lt;TypeBuilder::Page::FrameResourceTree::Resources&gt;::create();
-    RefPtr&lt;TypeBuilder::Page::FrameResourceTree&gt; result = TypeBuilder::Page::FrameResourceTree::create()
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Page::Frame&gt; frameObject = buildObjectForFrame(frame);
+    RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Page::FrameResourceTree::Resources&gt;&gt; subresources = Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Page::FrameResourceTree::Resources&gt;::create();
+    RefPtr&lt;Inspector::TypeBuilder::Page::FrameResourceTree&gt; result = Inspector::TypeBuilder::Page::FrameResourceTree::create()
</ins><span class="cx">          .setFrame(frameObject)
</span><span class="cx">          .setResources(subresources);
</span><span class="cx"> 
</span><span class="lines">@@ -1067,7 +1069,7 @@
</span><span class="cx">     for (Vector&lt;CachedResource*&gt;::const_iterator it = allResources.begin(); it != allResources.end(); ++it) {
</span><span class="cx">         CachedResource* cachedResource = *it;
</span><span class="cx"> 
</span><del>-        RefPtr&lt;TypeBuilder::Page::FrameResourceTree::Resources&gt; resourceObject = TypeBuilder::Page::FrameResourceTree::Resources::create()
</del><ins>+        RefPtr&lt;Inspector::TypeBuilder::Page::FrameResourceTree::Resources&gt; resourceObject = Inspector::TypeBuilder::Page::FrameResourceTree::Resources::create()
</ins><span class="cx">             .setUrl(cachedResource-&gt;url())
</span><span class="cx">             .setType(cachedResourceTypeJson(*cachedResource))
</span><span class="cx">             .setMimeType(cachedResource-&gt;response().mimeType());
</span><span class="lines">@@ -1081,10 +1083,10 @@
</span><span class="cx">         subresources-&gt;addItem(resourceObject);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::Page::FrameResourceTree&gt;&gt; childrenArray;
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Page::FrameResourceTree&gt;&gt; childrenArray;
</ins><span class="cx">     for (Frame* child = frame-&gt;tree().firstChild(); child; child = child-&gt;tree().nextSibling()) {
</span><span class="cx">         if (!childrenArray) {
</span><del>-            childrenArray = TypeBuilder::Array&lt;TypeBuilder::Page::FrameResourceTree&gt;::create();
</del><ins>+            childrenArray = Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Page::FrameResourceTree&gt;::create();
</ins><span class="cx">             result-&gt;setChildFrames(childrenArray);
</span><span class="cx">         }
</span><span class="cx">         childrenArray-&gt;addItem(buildObjectForFrameTree(child));
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorPageAgenth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorPageAgent.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorPageAgent.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorPageAgent.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -35,8 +35,9 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;DeviceOrientationData.h&quot;
</span><span class="cx"> #include &quot;GeolocationPosition.h&quot;
</span><del>-#include &quot;InspectorBaseAgent.h&quot;
</del><ins>+#include &quot;InspectorBackendDispatchers.h&quot;
</ins><span class="cx"> #include &quot;InspectorFrontend.h&quot;
</span><ins>+#include &quot;InspectorWebAgentBase.h&quot;
</ins><span class="cx"> #include &quot;IntSize.h&quot;
</span><span class="cx"> #include &quot;LayoutRect.h&quot;
</span><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="lines">@@ -44,6 +45,11 @@
</span><span class="cx"> #include &lt;wtf/Vector.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><ins>+namespace Inspector {
+class InspectorArray;
+class InspectorObject;
+}
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class CachedResource;
</span><span class="lines">@@ -54,9 +60,7 @@
</span><span class="cx"> class GraphicsContext;
</span><span class="cx"> class InjectedScriptManager;
</span><span class="cx"> class InspectorAgent;
</span><del>-class InspectorArray;
</del><span class="cx"> class InspectorClient;
</span><del>-class InspectorObject;
</del><span class="cx"> class InspectorOverlay;
</span><span class="cx"> class InstrumentingAgents;
</span><span class="cx"> class URL;
</span><span class="lines">@@ -67,7 +71,7 @@
</span><span class="cx"> 
</span><span class="cx"> typedef String ErrorString;
</span><span class="cx"> 
</span><del>-class InspectorPageAgent : public InspectorBaseAgent, public InspectorPageBackendDispatcherHandler {
</del><ins>+class InspectorPageAgent : public InspectorAgentBase, public InspectorPageBackendDispatcherHandler {
</ins><span class="cx">     WTF_MAKE_NONCOPYABLE(InspectorPageAgent);
</span><span class="cx"> public:
</span><span class="cx">     enum ResourceType {
</span><span class="lines">@@ -90,9 +94,9 @@
</span><span class="cx"> 
</span><span class="cx">     static PassRefPtr&lt;SharedBuffer&gt; resourceData(Frame*, const URL&amp;, String* textEncodingName);
</span><span class="cx">     static CachedResource* cachedResource(Frame*, const URL&amp;);
</span><del>-    static TypeBuilder::Page::ResourceType::Enum resourceTypeJson(ResourceType);
</del><ins>+    static Inspector::TypeBuilder::Page::ResourceType::Enum resourceTypeJson(ResourceType);
</ins><span class="cx">     static ResourceType cachedResourceType(const CachedResource&amp;);
</span><del>-    static TypeBuilder::Page::ResourceType::Enum cachedResourceTypeJson(const CachedResource&amp;);
</del><ins>+    static Inspector::TypeBuilder::Page::ResourceType::Enum cachedResourceTypeJson(const CachedResource&amp;);
</ins><span class="cx"> 
</span><span class="cx">     // Page API for InspectorFrontend
</span><span class="cx">     virtual void enable(ErrorString*);
</span><span class="lines">@@ -101,12 +105,12 @@
</span><span class="cx">     virtual void removeScriptToEvaluateOnLoad(ErrorString*, const String&amp; identifier);
</span><span class="cx">     virtual void reload(ErrorString*, const bool* optionalIgnoreCache, const String* optionalScriptToEvaluateOnLoad, const String* optionalScriptPreprocessor);
</span><span class="cx">     virtual void navigate(ErrorString*, const String&amp; url);
</span><del>-    virtual void getCookies(ErrorString*, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::Page::Cookie&gt;&gt;&amp; cookies);
</del><ins>+    virtual void getCookies(ErrorString*, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Page::Cookie&gt;&gt;&amp; cookies);
</ins><span class="cx">     virtual void deleteCookie(ErrorString*, const String&amp; cookieName, const String&amp; url);
</span><del>-    virtual void getResourceTree(ErrorString*, RefPtr&lt;TypeBuilder::Page::FrameResourceTree&gt;&amp;);
</del><ins>+    virtual void getResourceTree(ErrorString*, RefPtr&lt;Inspector::TypeBuilder::Page::FrameResourceTree&gt;&amp;);
</ins><span class="cx">     virtual void getResourceContent(ErrorString*, const String&amp; frameId, const String&amp; url, String* content, bool* base64Encoded);
</span><del>-    virtual void searchInResource(ErrorString*, const String&amp; frameId, const String&amp; url, const String&amp; query, const bool* optionalCaseSensitive, const bool* optionalIsRegex, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::Page::SearchMatch&gt;&gt;&amp;);
-    virtual void searchInResources(ErrorString*, const String&amp;, const bool* caseSensitive, const bool* isRegex, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::Page::SearchResult&gt;&gt;&amp;);
</del><ins>+    virtual void searchInResource(ErrorString*, const String&amp; frameId, const String&amp; url, const String&amp; query, const bool* optionalCaseSensitive, const bool* optionalIsRegex, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Page::SearchMatch&gt;&gt;&amp;);
+    virtual void searchInResources(ErrorString*, const String&amp;, const bool* caseSensitive, const bool* isRegex, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Page::SearchResult&gt;&gt;&amp;);
</ins><span class="cx">     virtual void setDocumentContent(ErrorString*, const String&amp; frameId, const String&amp; html);
</span><span class="cx">     virtual void canOverrideDeviceMetrics(ErrorString*, bool*);
</span><span class="cx">     virtual void setDeviceMetricsOverride(ErrorString*, int width, int height, double fontScaleFactor, bool fitWindow);
</span><span class="lines">@@ -163,7 +167,7 @@
</span><span class="cx">     void scriptsEnabled(bool isEnabled);
</span><span class="cx"> 
</span><span class="cx">     // Inspector Controller API
</span><del>-    virtual void didCreateFrontendAndBackend(InspectorFrontendChannel*, InspectorBackendDispatcher*) OVERRIDE;
</del><ins>+    virtual void didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel*, Inspector::InspectorBackendDispatcher*) OVERRIDE;
</ins><span class="cx">     virtual void willDestroyFrontendAndBackend() OVERRIDE;
</span><span class="cx"> 
</span><span class="cx">     // Cross-agents API
</span><span class="lines">@@ -190,8 +194,8 @@
</span><span class="cx">     static bool mainResourceContent(Frame*, bool withBase64Encode, String* result);
</span><span class="cx">     static bool dataContent(const char* data, unsigned size, const String&amp; textEncodingName, bool withBase64Encode, String* result);
</span><span class="cx"> 
</span><del>-    PassRefPtr&lt;TypeBuilder::Page::Frame&gt; buildObjectForFrame(Frame*);
-    PassRefPtr&lt;TypeBuilder::Page::FrameResourceTree&gt; buildObjectForFrameTree(Frame*);
</del><ins>+    PassRefPtr&lt;Inspector::TypeBuilder::Page::Frame&gt; buildObjectForFrame(Frame*);
+    PassRefPtr&lt;Inspector::TypeBuilder::Page::FrameResourceTree&gt; buildObjectForFrameTree(Frame*);
</ins><span class="cx">     Page* m_page;
</span><span class="cx">     InspectorAgent* m_inspectorAgent;
</span><span class="cx">     InjectedScriptManager* m_injectedScriptManager;
</span><span class="lines">@@ -218,7 +222,7 @@
</span><span class="cx">     bool m_ignoreScriptsEnabledNotification;
</span><span class="cx">     bool m_showPaintRects;
</span><span class="cx">     String m_emulatedMedia;
</span><del>-    RefPtr&lt;InspectorObject&gt; m_scriptsToEvaluateOnLoad;
</del><ins>+    RefPtr&lt;Inspector::InspectorObject&gt; m_scriptsToEvaluateOnLoad;
</ins><span class="cx">     RefPtr&lt;GeolocationPosition&gt; m_geolocationPosition;
</span><span class="cx">     RefPtr&lt;GeolocationPosition&gt; m_platformGeolocationPosition;
</span><span class="cx">     RefPtr&lt;DeviceOrientationData&gt; m_deviceOrientation;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorProfilerAgentcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorProfilerAgent.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorProfilerAgent.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorProfilerAgent.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -40,20 +40,22 @@
</span><span class="cx"> #include &quot;InjectedScriptHost.h&quot;
</span><span class="cx"> #include &quot;InspectorConsoleAgent.h&quot;
</span><span class="cx"> #include &quot;InspectorFrontend.h&quot;
</span><del>-#include &quot;InspectorValues.h&quot;
</del><span class="cx"> #include &quot;InstrumentingAgents.h&quot;
</span><span class="cx"> #include &quot;URL.h&quot;
</span><span class="cx"> #include &quot;Page.h&quot;
</span><span class="cx"> #include &quot;PageScriptDebugServer.h&quot;
</span><span class="cx"> #include &quot;ScriptHeapSnapshot.h&quot;
</span><del>-#include &quot;ScriptObject.h&quot;
</del><span class="cx"> #include &quot;ScriptProfile.h&quot;
</span><span class="cx"> #include &quot;ScriptProfiler.h&quot;
</span><span class="cx"> #include &quot;WorkerScriptDebugServer.h&quot;
</span><ins>+#include &lt;bindings/ScriptObject.h&gt;
+#include &lt;inspector/InspectorValues.h&gt;
</ins><span class="cx"> #include &lt;wtf/CurrentTime.h&gt;
</span><span class="cx"> #include &lt;wtf/OwnPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/text/StringConcatenate.h&gt;
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> static const char* const UserInitiatedProfileName = &quot;org.webkit.profiles.user-initiated&quot;;
</span><span class="lines">@@ -119,7 +121,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> InspectorProfilerAgent::InspectorProfilerAgent(InstrumentingAgents* instrumentingAgents, InspectorConsoleAgent* consoleAgent, InjectedScriptManager* injectedScriptManager)
</span><del>-    : InspectorBaseAgent(ASCIILiteral(&quot;Profiler&quot;), instrumentingAgents)
</del><ins>+    : InspectorAgentBase(ASCIILiteral(&quot;Profiler&quot;), instrumentingAgents)
</ins><span class="cx">     , m_consoleAgent(consoleAgent)
</span><span class="cx">     , m_injectedScriptManager(injectedScriptManager)
</span><span class="cx">     , m_enabled(false)
</span><span class="lines">@@ -168,19 +170,19 @@
</span><span class="cx">     ScriptProfiler::collectGarbage();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::Profiler::ProfileHeader&gt; InspectorProfilerAgent::createProfileHeader(const ScriptProfile&amp; profile)
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::Profiler::ProfileHeader&gt; InspectorProfilerAgent::createProfileHeader(const ScriptProfile&amp; profile)
</ins><span class="cx"> {
</span><del>-    return TypeBuilder::Profiler::ProfileHeader::create()
-        .setTypeId(TypeBuilder::Profiler::ProfileHeader::TypeId::CPU)
</del><ins>+    return Inspector::TypeBuilder::Profiler::ProfileHeader::create()
+        .setTypeId(Inspector::TypeBuilder::Profiler::ProfileHeader::TypeId::CPU)
</ins><span class="cx">         .setUid(profile.uid())
</span><span class="cx">         .setTitle(profile.title())
</span><span class="cx">         .release();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::Profiler::ProfileHeader&gt; InspectorProfilerAgent::createSnapshotHeader(const ScriptHeapSnapshot&amp; snapshot)
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::Profiler::ProfileHeader&gt; InspectorProfilerAgent::createSnapshotHeader(const ScriptHeapSnapshot&amp; snapshot)
</ins><span class="cx"> {
</span><del>-    RefPtr&lt;TypeBuilder::Profiler::ProfileHeader&gt; header = TypeBuilder::Profiler::ProfileHeader::create()
-        .setTypeId(TypeBuilder::Profiler::ProfileHeader::TypeId::HEAP)
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Profiler::ProfileHeader&gt; header = Inspector::TypeBuilder::Profiler::ProfileHeader::create()
+        .setTypeId(Inspector::TypeBuilder::Profiler::ProfileHeader::TypeId::HEAP)
</ins><span class="cx">         .setUid(snapshot.uid())
</span><span class="cx">         .setTitle(snapshot.title());
</span><span class="cx">     header-&gt;setMaxJSObjectId(snapshot.maxSnapshotJSObjectId());
</span><span class="lines">@@ -240,10 +242,10 @@
</span><span class="cx">     return makeString(UserInitiatedProfileName, '.', String::number(m_currentUserInitiatedProfileNumber));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorProfilerAgent::getProfileHeaders(ErrorString*, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::Profiler::ProfileHeader&gt;&gt;&amp; headers)
</del><ins>+void InspectorProfilerAgent::getProfileHeaders(ErrorString*, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Profiler::ProfileHeader&gt;&gt;&amp; headers)
</ins><span class="cx"> {
</span><span class="cx">     m_profileHeadersRequested = true;
</span><del>-    headers = TypeBuilder::Array&lt;TypeBuilder::Profiler::ProfileHeader&gt;::create();
</del><ins>+    headers = Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Profiler::ProfileHeader&gt;::create();
</ins><span class="cx"> 
</span><span class="cx">     ProfilesMap::iterator profilesEnd = m_profiles.end();
</span><span class="cx">     for (ProfilesMap::iterator it = m_profiles.begin(); it != profilesEnd; ++it)
</span><span class="lines">@@ -268,7 +270,7 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace
</span><span class="cx"> 
</span><del>-void InspectorProfilerAgent::getCPUProfile(ErrorString* errorString, int rawUid, RefPtr&lt;TypeBuilder::Profiler::CPUProfile&gt;&amp; profileObject)
</del><ins>+void InspectorProfilerAgent::getCPUProfile(ErrorString* errorString, int rawUid, RefPtr&lt;Inspector::TypeBuilder::Profiler::CPUProfile&gt;&amp; profileObject)
</ins><span class="cx"> {
</span><span class="cx">     unsigned uid = static_cast&lt;unsigned&gt;(rawUid);
</span><span class="cx">     ProfilesMap::iterator it = m_profiles.find(uid);
</span><span class="lines">@@ -276,7 +278,7 @@
</span><span class="cx">         *errorString = &quot;Profile wasn't found&quot;;
</span><span class="cx">         return;
</span><span class="cx">     }
</span><del>-    profileObject = TypeBuilder::Profiler::CPUProfile::create();
</del><ins>+    profileObject = Inspector::TypeBuilder::Profiler::CPUProfile::create();
</ins><span class="cx">     profileObject-&gt;setHead(it-&gt;value-&gt;buildInspectorObjectForHead());
</span><span class="cx">     profileObject-&gt;setIdleTime(it-&gt;value-&gt;idleTime());
</span><span class="cx"> }
</span><span class="lines">@@ -327,7 +329,7 @@
</span><span class="cx">         m_frontendDispatcher-&gt;resetProfiles();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorProfilerAgent::didCreateFrontendAndBackend(InspectorFrontendChannel* frontendChannel, InspectorBackendDispatcher* backendDispatcher)
</del><ins>+void InspectorProfilerAgent::didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel* frontendChannel, InspectorBackendDispatcher* backendDispatcher)
</ins><span class="cx"> {
</span><span class="cx">     m_frontendDispatcher = std::make_unique&lt;InspectorProfilerFrontendDispatcher&gt;(frontendChannel);
</span><span class="cx">     m_backendDispatcher = InspectorProfilerBackendDispatcher::create(backendDispatcher, this);
</span><span class="lines">@@ -414,7 +416,7 @@
</span><span class="cx">         m_frontendDispatcher-&gt;setRecordingProfile(isProfiling);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorProfilerAgent::getObjectByHeapObjectId(ErrorString* error, const String&amp; heapSnapshotObjectId, const String* objectGroup, RefPtr&lt;TypeBuilder::Runtime::RemoteObject&gt;&amp; result)
</del><ins>+void InspectorProfilerAgent::getObjectByHeapObjectId(ErrorString* error, const String&amp; heapSnapshotObjectId, const String* objectGroup, RefPtr&lt;Inspector::TypeBuilder::Runtime::RemoteObject&gt;&amp; result)
</ins><span class="cx"> {
</span><span class="cx">     bool ok;
</span><span class="cx">     unsigned id = heapSnapshotObjectId.toUInt(&amp;ok);
</span><span class="lines">@@ -422,7 +424,7 @@
</span><span class="cx">         *error = &quot;Invalid heap snapshot object id&quot;;
</span><span class="cx">         return;
</span><span class="cx">     }
</span><del>-    ScriptObject heapObject = ScriptProfiler::objectByHeapObjectId(id);
</del><ins>+    Deprecated::ScriptObject heapObject = ScriptProfiler::objectByHeapObjectId(id);
</ins><span class="cx">     if (heapObject.hasNoValue()) {
</span><span class="cx">         *error = &quot;Object is not available&quot;;
</span><span class="cx">         return;
</span><span class="lines">@@ -444,7 +446,7 @@
</span><span class="cx">         *errorString = &quot;Inspected context has gone&quot;;
</span><span class="cx">         return;
</span><span class="cx">     }
</span><del>-    ScriptValue value = injectedScript.findObjectById(objectId);
</del><ins>+    Deprecated::ScriptValue value = injectedScript.findObjectById(objectId);
</ins><span class="cx">     if (value.hasNoValue() || value.isUndefined()) {
</span><span class="cx">         *errorString = &quot;Object with given id not found&quot;;
</span><span class="cx">         return;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorProfilerAgenth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorProfilerAgent.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorProfilerAgent.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorProfilerAgent.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -32,20 +32,24 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(JAVASCRIPT_DEBUGGER) &amp;&amp; ENABLE(INSPECTOR)
</span><span class="cx"> 
</span><del>-#include &quot;InspectorBaseAgent.h&quot;
</del><ins>+#include &quot;InspectorBackendDispatchers.h&quot;
</ins><span class="cx"> #include &quot;InspectorFrontend.h&quot;
</span><ins>+#include &quot;InspectorWebAgentBase.h&quot;
</ins><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="cx"> #include &lt;wtf/Noncopyable.h&gt;
</span><span class="cx"> #include &lt;wtf/PassOwnPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><ins>+namespace Inspector {
+class InspectorArray;
+class InspectorObject;
+}
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class InjectedScriptManager;
</span><del>-class InspectorArray;
</del><span class="cx"> class InspectorConsoleAgent;
</span><del>-class InspectorObject;
</del><span class="cx"> class InstrumentingAgents;
</span><span class="cx"> class Page;
</span><span class="cx"> class ScriptHeapSnapshot;
</span><span class="lines">@@ -54,7 +58,7 @@
</span><span class="cx"> 
</span><span class="cx"> typedef String ErrorString;
</span><span class="cx"> 
</span><del>-class InspectorProfilerAgent : public InspectorBaseAgent, public InspectorProfilerBackendDispatcherHandler {
</del><ins>+class InspectorProfilerAgent : public InspectorAgentBase, public InspectorProfilerBackendDispatcherHandler {
</ins><span class="cx">     WTF_MAKE_NONCOPYABLE(InspectorProfilerAgent); WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><span class="cx">     static PassOwnPtr&lt;InspectorProfilerAgent&gt; create(InstrumentingAgents*, InspectorConsoleAgent*, Page*, InjectedScriptManager*);
</span><span class="lines">@@ -83,18 +87,18 @@
</span><span class="cx">     void enable(bool skipRecompile);
</span><span class="cx">     bool enabled() const { return m_enabled; }
</span><span class="cx">     String getCurrentUserInitiatedProfileName(bool incrementProfileNumber = false);
</span><del>-    virtual void getProfileHeaders(ErrorString*, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::Profiler::ProfileHeader&gt;&gt;&amp;);
-    virtual void getCPUProfile(ErrorString*, int uid, RefPtr&lt;TypeBuilder::Profiler::CPUProfile&gt;&amp;);
</del><ins>+    virtual void getProfileHeaders(ErrorString*, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Profiler::ProfileHeader&gt;&gt;&amp;);
+    virtual void getCPUProfile(ErrorString*, int uid, RefPtr&lt;Inspector::TypeBuilder::Profiler::CPUProfile&gt;&amp;);
</ins><span class="cx">     virtual void getHeapSnapshot(ErrorString*, int uid);
</span><span class="cx">     virtual void removeProfile(ErrorString*, const String&amp; type, int uid);
</span><span class="cx"> 
</span><del>-    virtual void didCreateFrontendAndBackend(InspectorFrontendChannel*, InspectorBackendDispatcher*) OVERRIDE;
</del><ins>+    virtual void didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel*, Inspector::InspectorBackendDispatcher*) OVERRIDE;
</ins><span class="cx">     virtual void willDestroyFrontendAndBackend() OVERRIDE;
</span><span class="cx"> 
</span><span class="cx">     virtual void takeHeapSnapshot(ErrorString*, const bool* reportProgress);
</span><span class="cx">     void toggleRecordButton(bool isProfiling);
</span><span class="cx"> 
</span><del>-    virtual void getObjectByHeapObjectId(ErrorString*, const String&amp; heapSnapshotObjectId, const String* objectGroup, RefPtr&lt;TypeBuilder::Runtime::RemoteObject&gt;&amp; result);
</del><ins>+    virtual void getObjectByHeapObjectId(ErrorString*, const String&amp; heapSnapshotObjectId, const String* objectGroup, RefPtr&lt;Inspector::TypeBuilder::Runtime::RemoteObject&gt;&amp; result);
</ins><span class="cx">     virtual void getHeapObjectId(ErrorString*, const String&amp; objectId, String* heapSnapshotObjectId);
</span><span class="cx"> 
</span><span class="cx"> protected:
</span><span class="lines">@@ -109,8 +113,8 @@
</span><span class="cx">     void resetFrontendProfiles();
</span><span class="cx">     void restoreEnablement();
</span><span class="cx"> 
</span><del>-    PassRefPtr&lt;TypeBuilder::Profiler::ProfileHeader&gt; createProfileHeader(const ScriptProfile&amp;);
-    PassRefPtr&lt;TypeBuilder::Profiler::ProfileHeader&gt; createSnapshotHeader(const ScriptHeapSnapshot&amp;);
</del><ins>+    PassRefPtr&lt;Inspector::TypeBuilder::Profiler::ProfileHeader&gt; createProfileHeader(const ScriptProfile&amp;);
+    PassRefPtr&lt;Inspector::TypeBuilder::Profiler::ProfileHeader&gt; createSnapshotHeader(const ScriptHeapSnapshot&amp;);
</ins><span class="cx"> 
</span><span class="cx">     InspectorConsoleAgent* m_consoleAgent;
</span><span class="cx">     InjectedScriptManager* m_injectedScriptManager;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorResourceAgentcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorResourceAgent.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorResourceAgent.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorResourceAgent.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -48,7 +48,6 @@
</span><span class="cx"> #include &quot;InspectorClient.h&quot;
</span><span class="cx"> #include &quot;InspectorFrontend.h&quot;
</span><span class="cx"> #include &quot;InspectorPageAgent.h&quot;
</span><del>-#include &quot;InspectorValues.h&quot;
</del><span class="cx"> #include &quot;InstrumentingAgents.h&quot;
</span><span class="cx"> #include &quot;URL.h&quot;
</span><span class="cx"> #include &quot;MemoryCache.h&quot;
</span><span class="lines">@@ -67,16 +66,18 @@
</span><span class="cx"> #include &quot;SubresourceLoader.h&quot;
</span><span class="cx"> #include &quot;WebSocketFrame.h&quot;
</span><span class="cx"> #include &quot;XMLHttpRequest.h&quot;
</span><del>-
</del><ins>+#include &lt;inspector/InspectorValues.h&gt;
</ins><span class="cx"> #include &lt;wtf/CurrentTime.h&gt;
</span><span class="cx"> #include &lt;wtf/HexNumber.h&gt;
</span><span class="cx"> #include &lt;wtf/ListHashSet.h&gt;
</span><span class="cx"> #include &lt;wtf/RefPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/text/StringBuilder.h&gt;
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-void InspectorResourceAgent::didCreateFrontendAndBackend(InspectorFrontendChannel* frontendChannel, InspectorBackendDispatcher* backendDispatcher)
</del><ins>+void InspectorResourceAgent::didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel* frontendChannel, InspectorBackendDispatcher* backendDispatcher)
</ins><span class="cx"> {
</span><span class="cx">     m_frontendDispatcher = std::make_unique&lt;InspectorNetworkFrontendDispatcher&gt;(frontendChannel);
</span><span class="cx">     m_backendDispatcher = InspectorNetworkBackendDispatcher::create(backendDispatcher, this);
</span><span class="lines">@@ -100,9 +101,9 @@
</span><span class="cx">     return headersObject;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static PassRefPtr&lt;TypeBuilder::Network::ResourceTiming&gt; buildObjectForTiming(const ResourceLoadTiming&amp; timing, DocumentLoader* loader)
</del><ins>+static PassRefPtr&lt;Inspector::TypeBuilder::Network::ResourceTiming&gt; buildObjectForTiming(const ResourceLoadTiming&amp; timing, DocumentLoader* loader)
</ins><span class="cx"> {
</span><del>-    return TypeBuilder::Network::ResourceTiming::create()
</del><ins>+    return Inspector::TypeBuilder::Network::ResourceTiming::create()
</ins><span class="cx">         .setRequestTime(loader-&gt;timing()-&gt;monotonicTimeToPseudoWallTime(timing.convertResourceLoadTimeToMonotonicTime(0)))
</span><span class="cx">         .setProxyStart(timing.proxyStart)
</span><span class="cx">         .setProxyEnd(timing.proxyEnd)
</span><span class="lines">@@ -118,9 +119,9 @@
</span><span class="cx">         .release();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static PassRefPtr&lt;TypeBuilder::Network::Request&gt; buildObjectForResourceRequest(const ResourceRequest&amp; request)
</del><ins>+static PassRefPtr&lt;Inspector::TypeBuilder::Network::Request&gt; buildObjectForResourceRequest(const ResourceRequest&amp; request)
</ins><span class="cx"> {
</span><del>-    RefPtr&lt;TypeBuilder::Network::Request&gt; requestObject = TypeBuilder::Network::Request::create()
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Network::Request&gt; requestObject = Inspector::TypeBuilder::Network::Request::create()
</ins><span class="cx">         .setUrl(request.url().string())
</span><span class="cx">         .setMethod(request.httpMethod())
</span><span class="cx">         .setHeaders(buildObjectForHeaders(request.httpHeaderFields()));
</span><span class="lines">@@ -129,7 +130,7 @@
</span><span class="cx">     return requestObject;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static PassRefPtr&lt;TypeBuilder::Network::Response&gt; buildObjectForResourceResponse(const ResourceResponse&amp; response, DocumentLoader* loader)
</del><ins>+static PassRefPtr&lt;Inspector::TypeBuilder::Network::Response&gt; buildObjectForResourceResponse(const ResourceResponse&amp; response, DocumentLoader* loader)
</ins><span class="cx"> {
</span><span class="cx">     if (response.isNull())
</span><span class="cx">         return 0;
</span><span class="lines">@@ -137,7 +138,7 @@
</span><span class="cx">     double status = response.httpStatusCode();
</span><span class="cx">     RefPtr&lt;InspectorObject&gt; headers = buildObjectForHeaders(response.httpHeaderFields());
</span><span class="cx"> 
</span><del>-    RefPtr&lt;TypeBuilder::Network::Response&gt; responseObject = TypeBuilder::Network::Response::create()
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Network::Response&gt; responseObject = Inspector::TypeBuilder::Network::Response::create()
</ins><span class="cx">         .setUrl(response.url().string())
</span><span class="cx">         .setStatus(status)
</span><span class="cx">         .setStatusText(response.httpStatusText())
</span><span class="lines">@@ -153,14 +154,14 @@
</span><span class="cx">     return responseObject;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static PassRefPtr&lt;TypeBuilder::Network::CachedResource&gt; buildObjectForCachedResource(CachedResource* cachedResource, DocumentLoader* loader)
</del><ins>+static PassRefPtr&lt;Inspector::TypeBuilder::Network::CachedResource&gt; buildObjectForCachedResource(CachedResource* cachedResource, DocumentLoader* loader)
</ins><span class="cx"> {
</span><del>-    RefPtr&lt;TypeBuilder::Network::CachedResource&gt; resourceObject = TypeBuilder::Network::CachedResource::create()
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Network::CachedResource&gt; resourceObject = Inspector::TypeBuilder::Network::CachedResource::create()
</ins><span class="cx">         .setUrl(cachedResource-&gt;url())
</span><span class="cx">         .setType(InspectorPageAgent::cachedResourceTypeJson(*cachedResource))
</span><span class="cx">         .setBodySize(cachedResource-&gt;encodedSize());
</span><span class="cx"> 
</span><del>-    RefPtr&lt;TypeBuilder::Network::Response&gt; resourceResponse = buildObjectForResourceResponse(cachedResource-&gt;response(), loader);
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Network::Response&gt; resourceResponse = buildObjectForResourceResponse(cachedResource-&gt;response(), loader);
</ins><span class="cx">     if (resourceResponse)
</span><span class="cx">         resourceObject-&gt;setResponse(resourceResponse);
</span><span class="cx"> 
</span><span class="lines">@@ -216,9 +217,9 @@
</span><span class="cx">         request.setHTTPHeaderField(&quot;Cache-Control&quot;, &quot;no-cache&quot;);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    TypeBuilder::Page::ResourceType::Enum resourceType = InspectorPageAgent::resourceTypeJson(type);
</del><ins>+    Inspector::TypeBuilder::Page::ResourceType::Enum resourceType = InspectorPageAgent::resourceTypeJson(type);
</ins><span class="cx"> 
</span><del>-    RefPtr&lt;TypeBuilder::Network::Initiator&gt; initiatorObject = buildInitiatorObject(loader-&gt;frame() ? loader-&gt;frame()-&gt;document() : 0);
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Network::Initiator&gt; initiatorObject = buildInitiatorObject(loader-&gt;frame() ? loader-&gt;frame()-&gt;document() : 0);
</ins><span class="cx">     m_frontendDispatcher-&gt;requestWillBeSent(requestId, m_pageAgent-&gt;frameId(loader-&gt;frame()), m_pageAgent-&gt;loaderId(loader), loader-&gt;url().string(), buildObjectForResourceRequest(request), currentTime(), initiatorObject, buildObjectForResourceResponse(redirectResponse, loader), type != InspectorPageAgent::OtherResource ? &amp;resourceType : 0);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -230,7 +231,7 @@
</span><span class="cx"> void InspectorResourceAgent::didReceiveResponse(unsigned long identifier, DocumentLoader* loader, const ResourceResponse&amp; response, ResourceLoader* resourceLoader)
</span><span class="cx"> {
</span><span class="cx">     String requestId = IdentifiersFactory::requestId(identifier);
</span><del>-    RefPtr&lt;TypeBuilder::Network::Response&gt; resourceResponse = buildObjectForResourceResponse(response, loader);
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Network::Response&gt; resourceResponse = buildObjectForResourceResponse(response, loader);
</ins><span class="cx"> 
</span><span class="cx">     bool isNotModified = response.httpStatusCode() == 304;
</span><span class="cx"> 
</span><span class="lines">@@ -243,7 +244,7 @@
</span><span class="cx">     if (cachedResource) {
</span><span class="cx">         // Use mime type from cached resource in case the one in response is empty.
</span><span class="cx">         if (resourceResponse &amp;&amp; response.mimeType().isEmpty())
</span><del>-            resourceResponse-&gt;setString(TypeBuilder::Network::Response::MimeType, cachedResource-&gt;response().mimeType());
</del><ins>+            resourceResponse-&gt;setString(Inspector::TypeBuilder::Network::Response::MimeType, cachedResource-&gt;response().mimeType());
</ins><span class="cx">         m_resourcesData-&gt;addCachedResource(requestId, cachedResource);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -335,7 +336,7 @@
</span><span class="cx">         m_resourcesData-&gt;reuseXHRReplayData(requestId, rawRequestId);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    RefPtr&lt;TypeBuilder::Network::Initiator&gt; initiatorObject = buildInitiatorObject(loader-&gt;frame() ? loader-&gt;frame()-&gt;document() : 0);
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Network::Initiator&gt; initiatorObject = buildInitiatorObject(loader-&gt;frame() ? loader-&gt;frame()-&gt;document() : 0);
</ins><span class="cx"> 
</span><span class="cx">     m_frontendDispatcher-&gt;requestServedFromMemoryCache(requestId, frameId, loaderId, loader-&gt;url().string(), currentTime(), initiatorObject, buildObjectForCachedResource(resource, loader));
</span><span class="cx"> }
</span><span class="lines">@@ -440,29 +441,29 @@
</span><span class="cx">         m_styleRecalculationInitiator = buildInitiatorObject(document);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::Network::Initiator&gt; InspectorResourceAgent::buildInitiatorObject(Document* document)
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::Network::Initiator&gt; InspectorResourceAgent::buildInitiatorObject(Document* document)
</ins><span class="cx"> {
</span><span class="cx">     RefPtr&lt;ScriptCallStack&gt; stackTrace = createScriptCallStack(ScriptCallStack::maxCallStackSizeToCapture, true);
</span><span class="cx">     if (stackTrace &amp;&amp; stackTrace-&gt;size() &gt; 0) {
</span><del>-        RefPtr&lt;TypeBuilder::Network::Initiator&gt; initiatorObject = TypeBuilder::Network::Initiator::create()
-            .setType(TypeBuilder::Network::Initiator::Type::Script);
</del><ins>+        RefPtr&lt;Inspector::TypeBuilder::Network::Initiator&gt; initiatorObject = Inspector::TypeBuilder::Network::Initiator::create()
+            .setType(Inspector::TypeBuilder::Network::Initiator::Type::Script);
</ins><span class="cx">         initiatorObject-&gt;setStackTrace(stackTrace-&gt;buildInspectorArray());
</span><span class="cx">         return initiatorObject;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (document &amp;&amp; document-&gt;scriptableDocumentParser()) {
</span><del>-        RefPtr&lt;TypeBuilder::Network::Initiator&gt; initiatorObject = TypeBuilder::Network::Initiator::create()
-            .setType(TypeBuilder::Network::Initiator::Type::Parser);
</del><ins>+        RefPtr&lt;Inspector::TypeBuilder::Network::Initiator&gt; initiatorObject = Inspector::TypeBuilder::Network::Initiator::create()
+            .setType(Inspector::TypeBuilder::Network::Initiator::Type::Parser);
</ins><span class="cx">         initiatorObject-&gt;setUrl(document-&gt;url().string());
</span><del>-        initiatorObject-&gt;setLineNumber(document-&gt;scriptableDocumentParser()-&gt;lineNumber().oneBasedInt());
</del><ins>+        initiatorObject-&gt;setLineNumber(document-&gt;scriptableDocumentParser()-&gt;textPosition().m_line.oneBasedInt());
</ins><span class="cx">         return initiatorObject;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (m_isRecalculatingStyle &amp;&amp; m_styleRecalculationInitiator)
</span><span class="cx">         return m_styleRecalculationInitiator;
</span><span class="cx"> 
</span><del>-    return TypeBuilder::Network::Initiator::create()
-        .setType(TypeBuilder::Network::Initiator::Type::Other)
</del><ins>+    return Inspector::TypeBuilder::Network::Initiator::create()
+        .setType(Inspector::TypeBuilder::Network::Initiator::Type::Other)
</ins><span class="cx">         .release();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -475,14 +476,14 @@
</span><span class="cx"> 
</span><span class="cx"> void InspectorResourceAgent::willSendWebSocketHandshakeRequest(unsigned long identifier, const ResourceRequest&amp; request)
</span><span class="cx"> {
</span><del>-    RefPtr&lt;TypeBuilder::Network::WebSocketRequest&gt; requestObject = TypeBuilder::Network::WebSocketRequest::create()
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Network::WebSocketRequest&gt; requestObject = Inspector::TypeBuilder::Network::WebSocketRequest::create()
</ins><span class="cx">         .setHeaders(buildObjectForHeaders(request.httpHeaderFields()));
</span><span class="cx">     m_frontendDispatcher-&gt;webSocketWillSendHandshakeRequest(IdentifiersFactory::requestId(identifier), currentTime(), requestObject);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorResourceAgent::didReceiveWebSocketHandshakeResponse(unsigned long identifier, const ResourceResponse&amp; response)
</span><span class="cx"> {
</span><del>-    RefPtr&lt;TypeBuilder::Network::WebSocketResponse&gt; responseObject = TypeBuilder::Network::WebSocketResponse::create()
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Network::WebSocketResponse&gt; responseObject = Inspector::TypeBuilder::Network::WebSocketResponse::create()
</ins><span class="cx">         .setStatus(response.httpStatusCode())
</span><span class="cx">         .setStatusText(response.httpStatusText())
</span><span class="cx">         .setHeaders(buildObjectForHeaders(response.httpHeaderFields()));
</span><span class="lines">@@ -496,7 +497,7 @@
</span><span class="cx"> 
</span><span class="cx"> void InspectorResourceAgent::didReceiveWebSocketFrame(unsigned long identifier, const WebSocketFrame&amp; frame)
</span><span class="cx"> {
</span><del>-    RefPtr&lt;TypeBuilder::Network::WebSocketFrame&gt; frameObject = TypeBuilder::Network::WebSocketFrame::create()
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Network::WebSocketFrame&gt; frameObject = Inspector::TypeBuilder::Network::WebSocketFrame::create()
</ins><span class="cx">         .setOpcode(frame.opCode)
</span><span class="cx">         .setMask(frame.masked)
</span><span class="cx">         .setPayloadData(String(frame.payload, frame.payloadLength));
</span><span class="lines">@@ -505,7 +506,7 @@
</span><span class="cx"> 
</span><span class="cx"> void InspectorResourceAgent::didSendWebSocketFrame(unsigned long identifier, const WebSocketFrame&amp; frame)
</span><span class="cx"> {
</span><del>-    RefPtr&lt;TypeBuilder::Network::WebSocketFrame&gt; frameObject = TypeBuilder::Network::WebSocketFrame::create()
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Network::WebSocketFrame&gt; frameObject = Inspector::TypeBuilder::Network::WebSocketFrame::create()
</ins><span class="cx">         .setOpcode(frame.opCode)
</span><span class="cx">         .setMask(frame.masked)
</span><span class="cx">         .setPayloadData(String(frame.payload, frame.payloadLength));
</span><span class="lines">@@ -650,7 +651,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> InspectorResourceAgent::InspectorResourceAgent(InstrumentingAgents* instrumentingAgents, InspectorPageAgent* pageAgent, InspectorClient* client)
</span><del>-    : InspectorBaseAgent(ASCIILiteral(&quot;Network&quot;), instrumentingAgents)
</del><ins>+    : InspectorAgentBase(ASCIILiteral(&quot;Network&quot;), instrumentingAgents)
</ins><span class="cx">     , m_pageAgent(pageAgent)
</span><span class="cx">     , m_client(client)
</span><span class="cx">     , m_resourcesData(adoptPtr(new NetworkResourcesData()))
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorResourceAgenth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorResourceAgent.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorResourceAgent.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorResourceAgent.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -31,9 +31,9 @@
</span><span class="cx"> #ifndef InspectorResourceAgent_h
</span><span class="cx"> #define InspectorResourceAgent_h
</span><span class="cx"> 
</span><del>-#include &quot;InspectorBaseAgent.h&quot;
</del><ins>+#include &quot;InspectorBackendDispatchers.h&quot;
</ins><span class="cx"> #include &quot;InspectorFrontend.h&quot;
</span><del>-
</del><ins>+#include &quot;InspectorWebAgentBase.h&quot;
</ins><span class="cx"> #include &lt;wtf/PassOwnPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/RefCounted.h&gt;
</span><span class="cx"> #include &lt;wtf/Vector.h&gt;
</span><span class="lines">@@ -41,8 +41,9 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><span class="cx"> 
</span><del>-namespace WTF {
-class String;
</del><ins>+namespace Inspector {
+class InspectorArray;
+class InspectorObject;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -53,9 +54,7 @@
</span><span class="cx"> class FormData;
</span><span class="cx"> class Frame;
</span><span class="cx"> class HTTPHeaderMap;
</span><del>-class InspectorArray;
</del><span class="cx"> class InspectorClient;
</span><del>-class InspectorObject;
</del><span class="cx"> class InspectorPageAgent;
</span><span class="cx"> class InstrumentingAgents;
</span><span class="cx"> class URL;
</span><span class="lines">@@ -76,7 +75,7 @@
</span><span class="cx"> 
</span><span class="cx"> typedef String ErrorString;
</span><span class="cx"> 
</span><del>-class InspectorResourceAgent : public InspectorBaseAgent, public InspectorNetworkBackendDispatcherHandler {
</del><ins>+class InspectorResourceAgent : public InspectorAgentBase, public InspectorNetworkBackendDispatcherHandler {
</ins><span class="cx"> public:
</span><span class="cx">     static PassOwnPtr&lt;InspectorResourceAgent&gt; create(InstrumentingAgents* instrumentingAgents, InspectorPageAgent* pageAgent, InspectorClient* client)
</span><span class="cx">     {
</span><span class="lines">@@ -85,7 +84,7 @@
</span><span class="cx"> 
</span><span class="cx">     ~InspectorResourceAgent();
</span><span class="cx"> 
</span><del>-    virtual void didCreateFrontendAndBackend(InspectorFrontendChannel*, InspectorBackendDispatcher*) OVERRIDE;
</del><ins>+    virtual void didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel*, Inspector::InspectorBackendDispatcher*) OVERRIDE;
</ins><span class="cx">     virtual void willDestroyFrontendAndBackend() OVERRIDE;
</span><span class="cx"> 
</span><span class="cx">     void willSendRequest(unsigned long identifier, DocumentLoader*, ResourceRequest&amp;, const ResourceResponse&amp; redirectResponse);
</span><span class="lines">@@ -116,7 +115,7 @@
</span><span class="cx">     void didRecalculateStyle();
</span><span class="cx">     void didScheduleStyleRecalculation(Document*);
</span><span class="cx"> 
</span><del>-    PassRefPtr&lt;TypeBuilder::Network::Initiator&gt; buildInitiatorObject(Document*);
</del><ins>+    PassRefPtr&lt;Inspector::TypeBuilder::Network::Initiator&gt; buildInitiatorObject(Document*);
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEB_SOCKETS)
</span><span class="cx">     void didCreateWebSocket(unsigned long identifier, const URL&amp; requestURL);
</span><span class="lines">@@ -135,7 +134,7 @@
</span><span class="cx">     virtual void enable(ErrorString*);
</span><span class="cx">     virtual void disable(ErrorString*);
</span><span class="cx">     virtual void setUserAgentOverride(ErrorString*, const String&amp; userAgent);
</span><del>-    virtual void setExtraHTTPHeaders(ErrorString*, const RefPtr&lt;InspectorObject&gt;&amp;);
</del><ins>+    virtual void setExtraHTTPHeaders(ErrorString*, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;);
</ins><span class="cx">     virtual void getResponseBody(ErrorString*, const String&amp; requestId, String* content, bool* base64Encoded);
</span><span class="cx"> 
</span><span class="cx">     virtual void replayXHR(ErrorString*, const String&amp; requestId);
</span><span class="lines">@@ -160,12 +159,12 @@
</span><span class="cx">     bool m_enabled;
</span><span class="cx">     bool m_cacheDisabled;
</span><span class="cx">     bool m_loadingXHRSynchronously;
</span><del>-    RefPtr&lt;InspectorObject&gt; m_extraRequestHeaders;
</del><ins>+    RefPtr&lt;Inspector::InspectorObject&gt; m_extraRequestHeaders;
</ins><span class="cx"> 
</span><span class="cx">     typedef HashMap&lt;ThreadableLoaderClient*, RefPtr&lt;XHRReplayData&gt;&gt; PendingXHRReplayDataMap;
</span><span class="cx">     PendingXHRReplayDataMap m_pendingXHRReplayData;
</span><span class="cx">     // FIXME: InspectorResourceAgent should now be aware of style recalculation.
</span><del>-    RefPtr&lt;TypeBuilder::Network::Initiator&gt; m_styleRecalculationInitiator;
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Network::Initiator&gt; m_styleRecalculationInitiator;
</ins><span class="cx">     bool m_isRecalculatingStyle;
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorRuntimeAgentcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorRuntimeAgent.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorRuntimeAgent.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorRuntimeAgent.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -36,8 +36,8 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;InjectedScript.h&quot;
</span><span class="cx"> #include &quot;InjectedScriptManager.h&quot;
</span><del>-#include &quot;InspectorValues.h&quot;
</del><span class="cx"> #include &quot;JSDOMWindowBase.h&quot;
</span><ins>+#include &lt;inspector/InspectorValues.h&gt;
</ins><span class="cx"> #include &lt;parser/ParserError.h&gt;
</span><span class="cx"> #include &lt;parser/SourceCode.h&gt;
</span><span class="cx"> #include &lt;runtime/Completion.h&gt;
</span><span class="lines">@@ -50,6 +50,8 @@
</span><span class="cx"> 
</span><span class="cx"> using namespace JSC;
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> static bool asBool(const bool* const b)
</span><span class="lines">@@ -58,7 +60,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> InspectorRuntimeAgent::InspectorRuntimeAgent(InstrumentingAgents* instrumentingAgents, InjectedScriptManager* injectedScriptManager)
</span><del>-    : InspectorBaseAgent(ASCIILiteral(&quot;Runtime&quot;), instrumentingAgents)
</del><ins>+    : InspectorAgentBase(ASCIILiteral(&quot;Runtime&quot;), instrumentingAgents)
</ins><span class="cx">     , m_enabled(false)
</span><span class="cx">     , m_injectedScriptManager(injectedScriptManager)
</span><span class="cx"> #if ENABLE(JAVASCRIPT_DEBUGGER)
</span><span class="lines">@@ -82,15 +84,15 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-static PassRefPtr&lt;TypeBuilder::Runtime::ErrorRange&gt; buildErrorRangeObject(const JSTokenLocation&amp; tokenLocation)
</del><ins>+static PassRefPtr&lt;Inspector::TypeBuilder::Runtime::ErrorRange&gt; buildErrorRangeObject(const JSTokenLocation&amp; tokenLocation)
</ins><span class="cx"> {
</span><del>-    RefPtr&lt;TypeBuilder::Runtime::ErrorRange&gt; result = TypeBuilder::Runtime::ErrorRange::create()
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Runtime::ErrorRange&gt; result = Inspector::TypeBuilder::Runtime::ErrorRange::create()
</ins><span class="cx">         .setStartOffset(tokenLocation.startOffset)
</span><span class="cx">         .setEndOffset(tokenLocation.endOffset);
</span><span class="cx">     return result.release();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorRuntimeAgent::parse(ErrorString*, const String&amp; expression, TypeBuilder::Runtime::SyntaxErrorType::Enum* result, TypeBuilder::OptOutput&lt;String&gt;* message, RefPtr&lt;TypeBuilder::Runtime::ErrorRange&gt;&amp; range)
</del><ins>+void InspectorRuntimeAgent::parse(ErrorString*, const String&amp; expression, Inspector::TypeBuilder::Runtime::SyntaxErrorType::Enum* result, Inspector::TypeBuilder::OptOutput&lt;String&gt;* message, RefPtr&lt;Inspector::TypeBuilder::Runtime::ErrorRange&gt;&amp; range)
</ins><span class="cx"> {
</span><span class="cx">     VM* vm = JSDOMWindowBase::commonVM();
</span><span class="cx">     JSLockHolder lock(vm);
</span><span class="lines">@@ -100,16 +102,16 @@
</span><span class="cx"> 
</span><span class="cx">     switch (error.m_syntaxErrorType) {
</span><span class="cx">     case ParserError::SyntaxErrorNone:
</span><del>-        *result = TypeBuilder::Runtime::SyntaxErrorType::None;
</del><ins>+        *result = Inspector::TypeBuilder::Runtime::SyntaxErrorType::None;
</ins><span class="cx">         break;
</span><span class="cx">     case ParserError::SyntaxErrorIrrecoverable:
</span><del>-        *result = TypeBuilder::Runtime::SyntaxErrorType::Irrecoverable;
</del><ins>+        *result = Inspector::TypeBuilder::Runtime::SyntaxErrorType::Irrecoverable;
</ins><span class="cx">         break;
</span><span class="cx">     case ParserError::SyntaxErrorUnterminatedLiteral:
</span><del>-        *result = TypeBuilder::Runtime::SyntaxErrorType::UnterminatedLiteral;
</del><ins>+        *result = Inspector::TypeBuilder::Runtime::SyntaxErrorType::UnterminatedLiteral;
</ins><span class="cx">         break;
</span><span class="cx">     case ParserError::SyntaxErrorRecoverable:
</span><del>-        *result = TypeBuilder::Runtime::SyntaxErrorType::Recoverable;
</del><ins>+        *result = Inspector::TypeBuilder::Runtime::SyntaxErrorType::Recoverable;
</ins><span class="cx">         break;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -119,7 +121,7 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorRuntimeAgent::evaluate(ErrorString* errorString, const String&amp; expression, const String* const objectGroup, const bool* const includeCommandLineAPI, const bool* const doNotPauseOnExceptionsAndMuteConsole, const int* executionContextId, const bool* const returnByValue, const bool* generatePreview, RefPtr&lt;TypeBuilder::Runtime::RemoteObject&gt;&amp; result, TypeBuilder::OptOutput&lt;bool&gt;* wasThrown)
</del><ins>+void InspectorRuntimeAgent::evaluate(ErrorString* errorString, const String&amp; expression, const String* const objectGroup, const bool* const includeCommandLineAPI, const bool* const doNotPauseOnExceptionsAndMuteConsole, const int* executionContextId, const bool* const returnByValue, const bool* generatePreview, RefPtr&lt;Inspector::TypeBuilder::Runtime::RemoteObject&gt;&amp; result, Inspector::TypeBuilder::OptOutput&lt;bool&gt;* wasThrown)
</ins><span class="cx"> {
</span><span class="cx">     InjectedScript injectedScript = injectedScriptForEval(errorString, executionContextId);
</span><span class="cx">     if (injectedScript.hasNoValue())
</span><span class="lines">@@ -142,7 +144,7 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorRuntimeAgent::callFunctionOn(ErrorString* errorString, const String&amp; objectId, const String&amp; expression, const RefPtr&lt;InspectorArray&gt;* const optionalArguments, const bool* const doNotPauseOnExceptionsAndMuteConsole, const bool* const returnByValue, const bool* generatePreview, RefPtr&lt;TypeBuilder::Runtime::RemoteObject&gt;&amp; result, TypeBuilder::OptOutput&lt;bool&gt;* wasThrown)
</del><ins>+void InspectorRuntimeAgent::callFunctionOn(ErrorString* errorString, const String&amp; objectId, const String&amp; expression, const RefPtr&lt;InspectorArray&gt;* const optionalArguments, const bool* const doNotPauseOnExceptionsAndMuteConsole, const bool* const returnByValue, const bool* generatePreview, RefPtr&lt;Inspector::TypeBuilder::Runtime::RemoteObject&gt;&amp; result, Inspector::TypeBuilder::OptOutput&lt;bool&gt;* wasThrown)
</ins><span class="cx"> {
</span><span class="cx">     InjectedScript injectedScript = m_injectedScriptManager-&gt;injectedScriptForObjectId(objectId);
</span><span class="cx">     if (injectedScript.hasNoValue()) {
</span><span class="lines">@@ -171,7 +173,7 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorRuntimeAgent::getProperties(ErrorString* errorString, const String&amp; objectId, const bool* const ownProperties, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::Runtime::PropertyDescriptor&gt;&gt;&amp; result, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::Runtime::InternalPropertyDescriptor&gt;&gt;&amp; internalProperties)
</del><ins>+void InspectorRuntimeAgent::getProperties(ErrorString* errorString, const String&amp; objectId, const bool* const ownProperties, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Runtime::PropertyDescriptor&gt;&gt;&amp; result, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Runtime::InternalPropertyDescriptor&gt;&gt;&amp; internalProperties)
</ins><span class="cx"> {
</span><span class="cx">     InjectedScript injectedScript = m_injectedScriptManager-&gt;injectedScriptForObjectId(objectId);
</span><span class="cx">     if (injectedScript.hasNoValue()) {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorRuntimeAgenth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorRuntimeAgent.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorRuntimeAgent.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorRuntimeAgent.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -33,34 +33,37 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><span class="cx"> 
</span><del>-#include &quot;InspectorBaseAgent.h&quot;
</del><ins>+#include &quot;InspectorBackendDispatchers.h&quot;
+#include &quot;InspectorWebAgentBase.h&quot;
</ins><span class="cx"> #include &quot;ScriptState.h&quot;
</span><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><span class="cx"> #include &lt;wtf/Noncopyable.h&gt;
</span><span class="cx"> 
</span><ins>+namespace Inspector {
+class InspectorArray;
+class InspectorObject;
+class InspectorValue;
+}
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class InjectedScript;
</span><span class="cx"> class InjectedScriptManager;
</span><del>-class InspectorArray;
-class InspectorObject;
-class InspectorValue;
</del><span class="cx"> class InstrumentingAgents;
</span><span class="cx"> class ScriptDebugServer;
</span><span class="cx"> class WorkerGlobalScope;
</span><span class="cx"> 
</span><span class="cx"> typedef String ErrorString;
</span><span class="cx"> 
</span><del>-class InspectorRuntimeAgent : public InspectorBaseAgent, public InspectorRuntimeBackendDispatcherHandler {
</del><ins>+class InspectorRuntimeAgent : public InspectorAgentBase, public InspectorRuntimeBackendDispatcherHandler {
</ins><span class="cx">     WTF_MAKE_NONCOPYABLE(InspectorRuntimeAgent);
</span><span class="cx"> public:
</span><span class="cx">     virtual ~InspectorRuntimeAgent();
</span><span class="cx"> 
</span><del>-    bool enabled() const { return m_enabled; }
</del><span class="cx">     // Part of the protocol.
</span><span class="cx">     virtual void enable(ErrorString*) { m_enabled = true; }
</span><span class="cx">     virtual void disable(ErrorString*) { m_enabled = false; }
</span><del>-    virtual void parse(ErrorString*, const String&amp; expression, TypeBuilder::Runtime::SyntaxErrorType::Enum* result, TypeBuilder::OptOutput&lt;String&gt;* message, RefPtr&lt;TypeBuilder::Runtime::ErrorRange&gt;&amp;);
</del><ins>+    virtual void parse(ErrorString*, const String&amp; expression, Inspector::TypeBuilder::Runtime::SyntaxErrorType::Enum* result, Inspector::TypeBuilder::OptOutput&lt;String&gt;* message, RefPtr&lt;Inspector::TypeBuilder::Runtime::ErrorRange&gt;&amp;);
</ins><span class="cx">     virtual void evaluate(ErrorString*,
</span><span class="cx">                   const String&amp; expression,
</span><span class="cx">                   const String* objectGroup,
</span><span class="lines">@@ -69,19 +72,19 @@
</span><span class="cx">                   const int* executionContextId,
</span><span class="cx">                   const bool* returnByValue,
</span><span class="cx">                   const bool* generatePreview,
</span><del>-                  RefPtr&lt;TypeBuilder::Runtime::RemoteObject&gt;&amp; result,
-                  TypeBuilder::OptOutput&lt;bool&gt;* wasThrown);
</del><ins>+                  RefPtr&lt;Inspector::TypeBuilder::Runtime::RemoteObject&gt;&amp; result,
+                  Inspector::TypeBuilder::OptOutput&lt;bool&gt;* wasThrown);
</ins><span class="cx">     virtual void callFunctionOn(ErrorString*,
</span><span class="cx">                         const String&amp; objectId,
</span><span class="cx">                         const String&amp; expression,
</span><del>-                        const RefPtr&lt;InspectorArray&gt;* optionalArguments,
</del><ins>+                        const RefPtr&lt;Inspector::InspectorArray&gt;* optionalArguments,
</ins><span class="cx">                         const bool* doNotPauseOnExceptionsAndMuteConsole,
</span><span class="cx">                         const bool* returnByValue,
</span><span class="cx">                         const bool* generatePreview,
</span><del>-                        RefPtr&lt;TypeBuilder::Runtime::RemoteObject&gt;&amp; result,
-                        TypeBuilder::OptOutput&lt;bool&gt;* wasThrown);
</del><ins>+                        RefPtr&lt;Inspector::TypeBuilder::Runtime::RemoteObject&gt;&amp; result,
+                        Inspector::TypeBuilder::OptOutput&lt;bool&gt;* wasThrown);
</ins><span class="cx">     virtual void releaseObject(ErrorString*, const String&amp; objectId);
</span><del>-    virtual void getProperties(ErrorString*, const String&amp; objectId, const bool* ownProperties, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::Runtime::PropertyDescriptor&gt;&gt;&amp; result, RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::Runtime::InternalPropertyDescriptor&gt;&gt;&amp; internalProperties);
</del><ins>+    virtual void getProperties(ErrorString*, const String&amp; objectId, const bool* ownProperties, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Runtime::PropertyDescriptor&gt;&gt;&amp; result, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Runtime::InternalPropertyDescriptor&gt;&gt;&amp; internalProperties);
</ins><span class="cx">     virtual void releaseObjectGroup(ErrorString*, const String&amp; objectGroup);
</span><span class="cx">     virtual void run(ErrorString*);
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorStyleSheetcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorStyleSheet.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorStyleSheet.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorStyleSheet.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -49,7 +49,6 @@
</span><span class="cx"> #include &quot;HTMLStyleElement.h&quot;
</span><span class="cx"> #include &quot;InspectorCSSAgent.h&quot;
</span><span class="cx"> #include &quot;InspectorPageAgent.h&quot;
</span><del>-#include &quot;InspectorValues.h&quot;
</del><span class="cx"> #include &quot;Node.h&quot;
</span><span class="cx"> #include &quot;RegularExpression.h&quot;
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><span class="lines">@@ -60,13 +59,13 @@
</span><span class="cx"> #include &quot;StyleSheetContents.h&quot;
</span><span class="cx"> #include &quot;StyleSheetList.h&quot;
</span><span class="cx"> #include &quot;WebKitCSSKeyframesRule.h&quot;
</span><del>-
</del><ins>+#include &lt;inspector/InspectorValues.h&gt;
</ins><span class="cx"> #include &lt;wtf/OwnPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/PassOwnPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/Vector.h&gt;
</span><span class="cx"> #include &lt;wtf/text/StringBuilder.h&gt;
</span><span class="cx"> 
</span><del>-using WebCore::TypeBuilder::Array;
</del><ins>+using Inspector::TypeBuilder::Array;
</ins><span class="cx"> using WebCore::RuleSourceDataList;
</span><span class="cx"> using WebCore::CSSRuleSourceData;
</span><span class="cx"> 
</span><span class="lines">@@ -144,6 +143,8 @@
</span><span class="cx">     return m_sourceData-&gt;at(index);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> enum MediaListSource {
</span><span class="lines">@@ -153,14 +154,14 @@
</span><span class="cx">     MediaListSourceImportRule
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-static PassRefPtr&lt;TypeBuilder::CSS::SourceRange&gt; buildSourceRangeObject(const SourceRange&amp; range, Vector&lt;size_t&gt;* lineEndings)
</del><ins>+static PassRefPtr&lt;Inspector::TypeBuilder::CSS::SourceRange&gt; buildSourceRangeObject(const SourceRange&amp; range, Vector&lt;size_t&gt;* lineEndings)
</ins><span class="cx"> {
</span><span class="cx">     if (!lineEndings)
</span><span class="cx">         return 0;
</span><span class="cx">     TextPosition start = ContentSearchUtils::textPositionFromOffset(range.start, *lineEndings);
</span><span class="cx">     TextPosition end = ContentSearchUtils::textPositionFromOffset(range.end, *lineEndings);
</span><span class="cx"> 
</span><del>-    RefPtr&lt;TypeBuilder::CSS::SourceRange&gt; result = TypeBuilder::CSS::SourceRange::create()
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::CSS::SourceRange&gt; result = Inspector::TypeBuilder::CSS::SourceRange::create()
</ins><span class="cx">         .setStartLine(start.m_line.zeroBasedInt())
</span><span class="cx">         .setStartColumn(start.m_column.zeroBasedInt())
</span><span class="cx">         .setEndLine(end.m_line.zeroBasedInt())
</span><span class="lines">@@ -168,26 +169,26 @@
</span><span class="cx">     return result.release();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static PassRefPtr&lt;TypeBuilder::CSS::CSSMedia&gt; buildMediaObject(const MediaList* media, MediaListSource mediaListSource, const String&amp; sourceURL)
</del><ins>+static PassRefPtr&lt;Inspector::TypeBuilder::CSS::CSSMedia&gt; buildMediaObject(const MediaList* media, MediaListSource mediaListSource, const String&amp; sourceURL)
</ins><span class="cx"> {
</span><span class="cx">     // Make certain compilers happy by initializing |source| up-front.
</span><del>-    TypeBuilder::CSS::CSSMedia::Source::Enum source = TypeBuilder::CSS::CSSMedia::Source::InlineSheet;
</del><ins>+    Inspector::TypeBuilder::CSS::CSSMedia::Source::Enum source = Inspector::TypeBuilder::CSS::CSSMedia::Source::InlineSheet;
</ins><span class="cx">     switch (mediaListSource) {
</span><span class="cx">     case MediaListSourceMediaRule:
</span><del>-        source = TypeBuilder::CSS::CSSMedia::Source::MediaRule;
</del><ins>+        source = Inspector::TypeBuilder::CSS::CSSMedia::Source::MediaRule;
</ins><span class="cx">         break;
</span><span class="cx">     case MediaListSourceImportRule:
</span><del>-        source = TypeBuilder::CSS::CSSMedia::Source::ImportRule;
</del><ins>+        source = Inspector::TypeBuilder::CSS::CSSMedia::Source::ImportRule;
</ins><span class="cx">         break;
</span><span class="cx">     case MediaListSourceLinkedSheet:
</span><del>-        source = TypeBuilder::CSS::CSSMedia::Source::LinkedSheet;
</del><ins>+        source = Inspector::TypeBuilder::CSS::CSSMedia::Source::LinkedSheet;
</ins><span class="cx">         break;
</span><span class="cx">     case MediaListSourceInlineSheet:
</span><del>-        source = TypeBuilder::CSS::CSSMedia::Source::InlineSheet;
</del><ins>+        source = Inspector::TypeBuilder::CSS::CSSMedia::Source::InlineSheet;
</ins><span class="cx">         break;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    RefPtr&lt;TypeBuilder::CSS::CSSMedia&gt; mediaObject = TypeBuilder::CSS::CSSMedia::create()
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::CSS::CSSMedia&gt; mediaObject = Inspector::TypeBuilder::CSS::CSSMedia::create()
</ins><span class="cx">         .setText(media-&gt;mediaText())
</span><span class="cx">         .setSource(source);
</span><span class="cx"> 
</span><span class="lines">@@ -238,7 +239,7 @@
</span><span class="cx">     return 0;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static void fillMediaListChain(CSSRule* rule, Array&lt;TypeBuilder::CSS::CSSMedia&gt;* mediaArray)
</del><ins>+static void fillMediaListChain(CSSRule* rule, Array&lt;Inspector::TypeBuilder::CSS::CSSMedia&gt;* mediaArray)
</ins><span class="cx"> {
</span><span class="cx">     MediaList* mediaList;
</span><span class="cx">     CSSRule* parentRule = rule;
</span><span class="lines">@@ -316,11 +317,11 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::CSS::CSSStyle&gt; InspectorStyle::buildObjectForStyle() const
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::CSS::CSSStyle&gt; InspectorStyle::buildObjectForStyle() const
</ins><span class="cx"> {
</span><del>-    RefPtr&lt;TypeBuilder::CSS::CSSStyle&gt; result = styleWithProperties();
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::CSS::CSSStyle&gt; result = styleWithProperties();
</ins><span class="cx">     if (!m_styleId.isEmpty())
</span><del>-        result-&gt;setStyleId(m_styleId.asProtocolValue&lt;TypeBuilder::CSS::CSSStyleId&gt;());
</del><ins>+        result-&gt;setStyleId(m_styleId.asProtocolValue&lt;Inspector::TypeBuilder::CSS::CSSStyleId&gt;());
</ins><span class="cx"> 
</span><span class="cx">     result-&gt;setWidth(m_style-&gt;getPropertyValue(&quot;width&quot;));
</span><span class="cx">     result-&gt;setHeight(m_style-&gt;getPropertyValue(&quot;height&quot;));
</span><span class="lines">@@ -332,15 +333,15 @@
</span><span class="cx">     return result.release();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::CSS::CSSComputedStyleProperty&gt;&gt; InspectorStyle::buildArrayForComputedStyle() const
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::CSSComputedStyleProperty&gt;&gt; InspectorStyle::buildArrayForComputedStyle() const
</ins><span class="cx"> {
</span><del>-    RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::CSS::CSSComputedStyleProperty&gt;&gt; result = TypeBuilder::Array&lt;TypeBuilder::CSS::CSSComputedStyleProperty&gt;::create();
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::CSSComputedStyleProperty&gt;&gt; result = Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::CSSComputedStyleProperty&gt;::create();
</ins><span class="cx">     Vector&lt;InspectorStyleProperty&gt; properties;
</span><span class="cx">     populateAllProperties(&amp;properties);
</span><span class="cx"> 
</span><span class="cx">     for (Vector&lt;InspectorStyleProperty&gt;::iterator it = properties.begin(), itEnd = properties.end(); it != itEnd; ++it) {
</span><span class="cx">         const CSSPropertySourceData&amp; propertyEntry = it-&gt;sourceData;
</span><del>-        RefPtr&lt;TypeBuilder::CSS::CSSComputedStyleProperty&gt; entry = TypeBuilder::CSS::CSSComputedStyleProperty::create()
</del><ins>+        RefPtr&lt;Inspector::TypeBuilder::CSS::CSSComputedStyleProperty&gt; entry = Inspector::TypeBuilder::CSS::CSSComputedStyleProperty::create()
</ins><span class="cx">             .setName(propertyEntry.name)
</span><span class="cx">             .setValue(propertyEntry.value);
</span><span class="cx">         result-&gt;addItem(entry);
</span><span class="lines">@@ -519,14 +520,14 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::CSS::CSSStyle&gt; InspectorStyle::styleWithProperties() const
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::CSS::CSSStyle&gt; InspectorStyle::styleWithProperties() const
</ins><span class="cx"> {
</span><span class="cx">     Vector&lt;InspectorStyleProperty&gt; properties;
</span><span class="cx">     populateAllProperties(&amp;properties);
</span><span class="cx"> 
</span><del>-    RefPtr&lt;Array&lt;TypeBuilder::CSS::CSSProperty&gt;&gt; propertiesObject = Array&lt;TypeBuilder::CSS::CSSProperty&gt;::create();
-    RefPtr&lt;Array&lt;TypeBuilder::CSS::ShorthandEntry&gt;&gt; shorthandEntries = Array&lt;TypeBuilder::CSS::ShorthandEntry&gt;::create();
-    HashMap&lt;String, RefPtr&lt;TypeBuilder::CSS::CSSProperty&gt;&gt; propertyNameToPreviousActiveProperty;
</del><ins>+    RefPtr&lt;Array&lt;Inspector::TypeBuilder::CSS::CSSProperty&gt;&gt; propertiesObject = Array&lt;Inspector::TypeBuilder::CSS::CSSProperty&gt;::create();
+    RefPtr&lt;Array&lt;Inspector::TypeBuilder::CSS::ShorthandEntry&gt;&gt; shorthandEntries = Array&lt;Inspector::TypeBuilder::CSS::ShorthandEntry&gt;::create();
+    HashMap&lt;String, RefPtr&lt;Inspector::TypeBuilder::CSS::CSSProperty&gt;&gt; propertyNameToPreviousActiveProperty;
</ins><span class="cx">     HashSet&lt;String&gt; foundShorthands;
</span><span class="cx">     String previousPriority;
</span><span class="cx">     String previousStatus;
</span><span class="lines">@@ -538,9 +539,9 @@
</span><span class="cx">         const CSSPropertySourceData&amp; propertyEntry = it-&gt;sourceData;
</span><span class="cx">         const String&amp; name = propertyEntry.name;
</span><span class="cx"> 
</span><del>-        TypeBuilder::CSS::CSSProperty::Status::Enum status = it-&gt;disabled ? TypeBuilder::CSS::CSSProperty::Status::Disabled : TypeBuilder::CSS::CSSProperty::Status::Active;
</del><ins>+        Inspector::TypeBuilder::CSS::CSSProperty::Status::Enum status = it-&gt;disabled ? Inspector::TypeBuilder::CSS::CSSProperty::Status::Disabled : Inspector::TypeBuilder::CSS::CSSProperty::Status::Active;
</ins><span class="cx"> 
</span><del>-        RefPtr&lt;TypeBuilder::CSS::CSSProperty&gt; property = TypeBuilder::CSS::CSSProperty::create()
</del><ins>+        RefPtr&lt;Inspector::TypeBuilder::CSS::CSSProperty&gt; property = Inspector::TypeBuilder::CSS::CSSProperty::create()
</ins><span class="cx">             .setName(name)
</span><span class="cx">             .setValue(propertyEntry.value);
</span><span class="cx"> 
</span><span class="lines">@@ -573,22 +574,22 @@
</span><span class="cx">                 CSSPropertyID propertyId = cssPropertyID(name);
</span><span class="cx">                 // Canonicalize property names to treat non-prefixed and vendor-prefixed property names the same (opacity vs. -webkit-opacity).
</span><span class="cx">                 String canonicalPropertyName = propertyId ? getPropertyNameString(propertyId) : name;
</span><del>-                HashMap&lt;String, RefPtr&lt;TypeBuilder::CSS::CSSProperty&gt;&gt;::iterator activeIt = propertyNameToPreviousActiveProperty.find(canonicalPropertyName);
</del><ins>+                HashMap&lt;String, RefPtr&lt;Inspector::TypeBuilder::CSS::CSSProperty&gt;&gt;::iterator activeIt = propertyNameToPreviousActiveProperty.find(canonicalPropertyName);
</ins><span class="cx">                 if (activeIt != propertyNameToPreviousActiveProperty.end()) {
</span><span class="cx">                     if (propertyEntry.parsedOk) {
</span><del>-                        bool successPriority = activeIt-&gt;value-&gt;getString(TypeBuilder::CSS::CSSProperty::Priority, &amp;previousPriority);
-                        bool successStatus = activeIt-&gt;value-&gt;getString(TypeBuilder::CSS::CSSProperty::Status, &amp;previousStatus);
</del><ins>+                        bool successPriority = activeIt-&gt;value-&gt;getString(Inspector::TypeBuilder::CSS::CSSProperty::Priority, &amp;previousPriority);
+                        bool successStatus = activeIt-&gt;value-&gt;getString(Inspector::TypeBuilder::CSS::CSSProperty::Status, &amp;previousStatus);
</ins><span class="cx">                         if (successStatus &amp;&amp; previousStatus != &quot;inactive&quot;) {
</span><span class="cx">                             if (propertyEntry.important || !successPriority) // Priority not set == &quot;not important&quot;.
</span><span class="cx">                                 shouldInactivate = true;
</span><del>-                            else if (status == TypeBuilder::CSS::CSSProperty::Status::Active) {
</del><ins>+                            else if (status == Inspector::TypeBuilder::CSS::CSSProperty::Status::Active) {
</ins><span class="cx">                                 // Inactivate a non-important property following the same-named important property.
</span><del>-                                status = TypeBuilder::CSS::CSSProperty::Status::Inactive;
</del><ins>+                                status = Inspector::TypeBuilder::CSS::CSSProperty::Status::Inactive;
</ins><span class="cx">                             }
</span><span class="cx">                         }
</span><span class="cx">                     } else {
</span><span class="cx">                         bool previousParsedOk;
</span><del>-                        bool success = activeIt-&gt;value-&gt;getBoolean(TypeBuilder::CSS::CSSProperty::ParsedOk, &amp;previousParsedOk);
</del><ins>+                        bool success = activeIt-&gt;value-&gt;getBoolean(Inspector::TypeBuilder::CSS::CSSProperty::ParsedOk, &amp;previousParsedOk);
</ins><span class="cx">                         if (success &amp;&amp; !previousParsedOk)
</span><span class="cx">                             shouldInactivate = true;
</span><span class="cx">                     }
</span><span class="lines">@@ -596,7 +597,7 @@
</span><span class="cx">                     propertyNameToPreviousActiveProperty.set(canonicalPropertyName, property);
</span><span class="cx"> 
</span><span class="cx">                 if (shouldInactivate) {
</span><del>-                    activeIt-&gt;value-&gt;setStatus(TypeBuilder::CSS::CSSProperty::Status::Inactive);
</del><ins>+                    activeIt-&gt;value-&gt;setStatus(Inspector::TypeBuilder::CSS::CSSProperty::Status::Inactive);
</ins><span class="cx">                     propertyNameToPreviousActiveProperty.set(canonicalPropertyName, property);
</span><span class="cx">                 }
</span><span class="cx">             } else {
</span><span class="lines">@@ -604,13 +605,13 @@
</span><span class="cx">                 // Default &quot;implicit&quot; == false.
</span><span class="cx">                 if (implicit)
</span><span class="cx">                     property-&gt;setImplicit(true);
</span><del>-                status = TypeBuilder::CSS::CSSProperty::Status::Style;
</del><ins>+                status = Inspector::TypeBuilder::CSS::CSSProperty::Status::Style;
</ins><span class="cx"> 
</span><span class="cx">                 String shorthand = m_style-&gt;getPropertyShorthand(name);
</span><span class="cx">                 if (!shorthand.isEmpty()) {
</span><span class="cx">                     if (!foundShorthands.contains(shorthand)) {
</span><span class="cx">                         foundShorthands.add(shorthand);
</span><del>-                        RefPtr&lt;TypeBuilder::CSS::ShorthandEntry&gt; entry = TypeBuilder::CSS::ShorthandEntry::create()
</del><ins>+                        RefPtr&lt;Inspector::TypeBuilder::CSS::ShorthandEntry&gt; entry = Inspector::TypeBuilder::CSS::ShorthandEntry::create()
</ins><span class="cx">                             .setName(shorthand)
</span><span class="cx">                             .setValue(shorthandValue(shorthand));
</span><span class="cx">                         shorthandEntries-&gt;addItem(entry);
</span><span class="lines">@@ -620,11 +621,11 @@
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         // Default &quot;status&quot; == &quot;style&quot;.
</span><del>-        if (status != TypeBuilder::CSS::CSSProperty::Status::Style)
</del><ins>+        if (status != Inspector::TypeBuilder::CSS::CSSProperty::Status::Style)
</ins><span class="cx">             property-&gt;setStatus(status);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    RefPtr&lt;TypeBuilder::CSS::CSSStyle&gt; result = TypeBuilder::CSS::CSSStyle::create()
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::CSS::CSSStyle&gt; result = Inspector::TypeBuilder::CSS::CSSStyle::create()
</ins><span class="cx">         .setCssProperties(propertiesObject)
</span><span class="cx">         .setShorthandEntries(shorthandEntries);
</span><span class="cx">     return result.release();
</span><span class="lines">@@ -759,7 +760,7 @@
</span><span class="cx">     return m_format;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;InspectorStyleSheet&gt; InspectorStyleSheet::create(InspectorPageAgent* pageAgent, const String&amp; id, PassRefPtr&lt;CSSStyleSheet&gt; pageStyleSheet, TypeBuilder::CSS::StyleSheetOrigin::Enum origin, const String&amp; documentURL, Listener* listener)
</del><ins>+PassRefPtr&lt;InspectorStyleSheet&gt; InspectorStyleSheet::create(InspectorPageAgent* pageAgent, const String&amp; id, PassRefPtr&lt;CSSStyleSheet&gt; pageStyleSheet, Inspector::TypeBuilder::CSS::StyleSheetOrigin::Enum origin, const String&amp; documentURL, Listener* listener)
</ins><span class="cx"> {
</span><span class="cx">     return adoptRef(new InspectorStyleSheet(pageAgent, id, pageStyleSheet, origin, documentURL, listener));
</span><span class="cx"> }
</span><span class="lines">@@ -772,7 +773,7 @@
</span><span class="cx">     return emptyString();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-InspectorStyleSheet::InspectorStyleSheet(InspectorPageAgent* pageAgent, const String&amp; id, PassRefPtr&lt;CSSStyleSheet&gt; pageStyleSheet, TypeBuilder::CSS::StyleSheetOrigin::Enum origin, const String&amp; documentURL, Listener* listener)
</del><ins>+InspectorStyleSheet::InspectorStyleSheet(InspectorPageAgent* pageAgent, const String&amp; id, PassRefPtr&lt;CSSStyleSheet&gt; pageStyleSheet, Inspector::TypeBuilder::CSS::StyleSheetOrigin::Enum origin, const String&amp; documentURL, Listener* listener)
</ins><span class="cx">     : m_pageAgent(pageAgent)
</span><span class="cx">     , m_id(id)
</span><span class="cx">     , m_pageStyleSheet(pageStyleSheet)
</span><span class="lines">@@ -963,7 +964,7 @@
</span><span class="cx"> 
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::CSS::CSSStyleSheetBody&gt; InspectorStyleSheet::buildObjectForStyleSheet()
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::CSS::CSSStyleSheetBody&gt; InspectorStyleSheet::buildObjectForStyleSheet()
</ins><span class="cx"> {
</span><span class="cx">     CSSStyleSheet* styleSheet = pageStyleSheet();
</span><span class="cx">     if (!styleSheet)
</span><span class="lines">@@ -971,7 +972,7 @@
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;CSSRuleList&gt; cssRuleList = asCSSRuleList(styleSheet);
</span><span class="cx"> 
</span><del>-    RefPtr&lt;TypeBuilder::CSS::CSSStyleSheetBody&gt; result = TypeBuilder::CSS::CSSStyleSheetBody::create()
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::CSS::CSSStyleSheetBody&gt; result = Inspector::TypeBuilder::CSS::CSSStyleSheetBody::create()
</ins><span class="cx">         .setStyleSheetId(id())
</span><span class="cx">         .setRules(buildArrayForRuleList(cssRuleList.get()));
</span><span class="cx"> 
</span><span class="lines">@@ -983,7 +984,7 @@
</span><span class="cx">     return result.release();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::CSS::CSSStyleSheetHeader&gt; InspectorStyleSheet::buildObjectForStyleSheetInfo()
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::CSS::CSSStyleSheetHeader&gt; InspectorStyleSheet::buildObjectForStyleSheetInfo()
</ins><span class="cx"> {
</span><span class="cx">     CSSStyleSheet* styleSheet = pageStyleSheet();
</span><span class="cx">     if (!styleSheet)
</span><span class="lines">@@ -991,7 +992,7 @@
</span><span class="cx"> 
</span><span class="cx">     Document* document = styleSheet-&gt;ownerDocument();
</span><span class="cx">     Frame* frame = document ? document-&gt;frame() : 0;
</span><del>-    RefPtr&lt;TypeBuilder::CSS::CSSStyleSheetHeader&gt; result = TypeBuilder::CSS::CSSStyleSheetHeader::create()
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::CSS::CSSStyleSheetHeader&gt; result = Inspector::TypeBuilder::CSS::CSSStyleSheetHeader::create()
</ins><span class="cx">         .setStyleSheetId(id())
</span><span class="cx">         .setOrigin(m_origin)
</span><span class="cx">         .setDisabled(styleSheet-&gt;disabled())
</span><span class="lines">@@ -1002,10 +1003,10 @@
</span><span class="cx">     return result.release();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static PassRefPtr&lt;TypeBuilder::Array&lt;String&gt;&gt; selectorsFromSource(const CSSRuleSourceData* sourceData, const String&amp; sheetText)
</del><ins>+static PassRefPtr&lt;Inspector::TypeBuilder::Array&lt;String&gt;&gt; selectorsFromSource(const CSSRuleSourceData* sourceData, const String&amp; sheetText)
</ins><span class="cx"> {
</span><span class="cx">     DEFINE_STATIC_LOCAL(RegularExpression, comment, (&quot;/\\*[^]*?\\*/&quot;, TextCaseSensitive, MultilineEnabled));
</span><del>-    RefPtr&lt;TypeBuilder::Array&lt;String&gt;&gt; result = TypeBuilder::Array&lt;String&gt;::create();
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Array&lt;String&gt;&gt; result = Inspector::TypeBuilder::Array&lt;String&gt;::create();
</ins><span class="cx">     const SelectorRangeList&amp; ranges = sourceData-&gt;selectorRanges;
</span><span class="cx">     for (size_t i = 0, size = ranges.size(); i &lt; size; ++i) {
</span><span class="cx">         const SourceRange&amp; range = ranges.at(i);
</span><span class="lines">@@ -1018,12 +1019,12 @@
</span><span class="cx">     return result.release();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::CSS::SelectorList&gt; InspectorStyleSheet::buildObjectForSelectorList(CSSStyleRule* rule)
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::CSS::SelectorList&gt; InspectorStyleSheet::buildObjectForSelectorList(CSSStyleRule* rule)
</ins><span class="cx"> {
</span><span class="cx">     RefPtr&lt;CSSRuleSourceData&gt; sourceData;
</span><span class="cx">     if (ensureParsedDataReady())
</span><span class="cx">         sourceData = ruleSourceDataFor(rule-&gt;style());
</span><del>-    RefPtr&lt;TypeBuilder::Array&lt;String&gt;&gt; selectors;
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Array&lt;String&gt;&gt; selectors;
</ins><span class="cx"> 
</span><span class="cx">     // This intentionally does not rely on the source data to avoid catching the trailing comments (before the declaration starting '{').
</span><span class="cx">     String selectorText = rule-&gt;selectorText();
</span><span class="lines">@@ -1031,12 +1032,12 @@
</span><span class="cx">     if (sourceData)
</span><span class="cx">         selectors = selectorsFromSource(sourceData.get(), m_parsedStyleSheet-&gt;text());
</span><span class="cx">     else {
</span><del>-        selectors = TypeBuilder::Array&lt;String&gt;::create();
</del><ins>+        selectors = Inspector::TypeBuilder::Array&lt;String&gt;::create();
</ins><span class="cx">         const CSSSelectorList&amp; selectorList = rule-&gt;styleRule()-&gt;selectorList();
</span><span class="cx">         for (const CSSSelector* selector = selectorList.first(); selector; selector = CSSSelectorList::next(selector))
</span><span class="cx">             selectors-&gt;addItem(selector-&gt;selectorText());
</span><span class="cx">     }
</span><del>-    RefPtr&lt;TypeBuilder::CSS::SelectorList&gt; result = TypeBuilder::CSS::SelectorList::create()
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::CSS::SelectorList&gt; result = Inspector::TypeBuilder::CSS::SelectorList::create()
</ins><span class="cx">         .setSelectors(selectors)
</span><span class="cx">         .setText(selectorText)
</span><span class="cx">         .release();
</span><span class="lines">@@ -1045,29 +1046,29 @@
</span><span class="cx">     return result.release();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::CSS::CSSRule&gt; InspectorStyleSheet::buildObjectForRule(CSSStyleRule* rule)
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::CSS::CSSRule&gt; InspectorStyleSheet::buildObjectForRule(CSSStyleRule* rule)
</ins><span class="cx"> {
</span><span class="cx">     CSSStyleSheet* styleSheet = pageStyleSheet();
</span><span class="cx">     if (!styleSheet)
</span><span class="cx">         return 0;
</span><span class="cx"> 
</span><del>-    RefPtr&lt;TypeBuilder::CSS::CSSRule&gt; result = TypeBuilder::CSS::CSSRule::create()
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::CSS::CSSRule&gt; result = Inspector::TypeBuilder::CSS::CSSRule::create()
</ins><span class="cx">         .setSelectorList(buildObjectForSelectorList(rule))
</span><span class="cx">         .setSourceLine(rule-&gt;styleRule()-&gt;sourceLine())
</span><span class="cx">         .setOrigin(m_origin)
</span><span class="cx">         .setStyle(buildObjectForStyle(rule-&gt;style()));
</span><span class="cx"> 
</span><span class="cx">     // &quot;sourceURL&quot; is present only for regular rules, otherwise &quot;origin&quot; should be used in the frontend.
</span><del>-    if (m_origin == TypeBuilder::CSS::StyleSheetOrigin::Regular)
</del><ins>+    if (m_origin == Inspector::TypeBuilder::CSS::StyleSheetOrigin::Regular)
</ins><span class="cx">         result-&gt;setSourceURL(finalURL());
</span><span class="cx"> 
</span><span class="cx">     if (canBind()) {
</span><span class="cx">         InspectorCSSId id(ruleId(rule));
</span><span class="cx">         if (!id.isEmpty())
</span><del>-            result-&gt;setRuleId(id.asProtocolValue&lt;TypeBuilder::CSS::CSSRuleId&gt;());
</del><ins>+            result-&gt;setRuleId(id.asProtocolValue&lt;Inspector::TypeBuilder::CSS::CSSRuleId&gt;());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    RefPtr&lt;Array&lt;TypeBuilder::CSS::CSSMedia&gt;&gt; mediaArray = Array&lt;TypeBuilder::CSS::CSSMedia&gt;::create();
</del><ins>+    RefPtr&lt;Array&lt;Inspector::TypeBuilder::CSS::CSSMedia&gt;&gt; mediaArray = Array&lt;Inspector::TypeBuilder::CSS::CSSMedia&gt;::create();
</ins><span class="cx"> 
</span><span class="cx">     fillMediaListChain(rule, mediaArray.get());
</span><span class="cx">     if (mediaArray-&gt;length())
</span><span class="lines">@@ -1076,7 +1077,7 @@
</span><span class="cx">     return result.release();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::CSS::CSSStyle&gt; InspectorStyleSheet::buildObjectForStyle(CSSStyleDeclaration* style)
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::CSS::CSSStyle&gt; InspectorStyleSheet::buildObjectForStyle(CSSStyleDeclaration* style)
</ins><span class="cx"> {
</span><span class="cx">     RefPtr&lt;CSSRuleSourceData&gt; sourceData;
</span><span class="cx">     if (ensureParsedDataReady())
</span><span class="lines">@@ -1084,13 +1085,13 @@
</span><span class="cx"> 
</span><span class="cx">     InspectorCSSId id = ruleOrStyleId(style);
</span><span class="cx">     if (id.isEmpty()) {
</span><del>-        RefPtr&lt;TypeBuilder::CSS::CSSStyle&gt; bogusStyle = TypeBuilder::CSS::CSSStyle::create()
-            .setCssProperties(Array&lt;TypeBuilder::CSS::CSSProperty&gt;::create())
-            .setShorthandEntries(Array&lt;TypeBuilder::CSS::ShorthandEntry&gt;::create());
</del><ins>+        RefPtr&lt;Inspector::TypeBuilder::CSS::CSSStyle&gt; bogusStyle = Inspector::TypeBuilder::CSS::CSSStyle::create()
+            .setCssProperties(Array&lt;Inspector::TypeBuilder::CSS::CSSProperty&gt;::create())
+            .setShorthandEntries(Array&lt;Inspector::TypeBuilder::CSS::ShorthandEntry&gt;::create());
</ins><span class="cx">         return bogusStyle.release();
</span><span class="cx">     }
</span><span class="cx">     RefPtr&lt;InspectorStyle&gt; inspectorStyle = inspectorStyleForId(id);
</span><del>-    RefPtr&lt;TypeBuilder::CSS::CSSStyle&gt; result = inspectorStyle-&gt;buildObjectForStyle();
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::CSS::CSSStyle&gt; result = inspectorStyle-&gt;buildObjectForStyle();
</ins><span class="cx"> 
</span><span class="cx">     // Style text cannot be retrieved without stylesheet, so set cssText here.
</span><span class="cx">     if (sourceData) {
</span><span class="lines">@@ -1374,7 +1375,7 @@
</span><span class="cx"> 
</span><span class="cx"> bool InspectorStyleSheet::resourceStyleSheetText(String* result) const
</span><span class="cx"> {
</span><del>-    if (m_origin == TypeBuilder::CSS::StyleSheetOrigin::User || m_origin == TypeBuilder::CSS::StyleSheetOrigin::UserAgent)
</del><ins>+    if (m_origin == Inspector::TypeBuilder::CSS::StyleSheetOrigin::User || m_origin == Inspector::TypeBuilder::CSS::StyleSheetOrigin::UserAgent)
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     if (!m_pageStyleSheet || !ownerDocument() || !ownerDocument()-&gt;frame())
</span><span class="lines">@@ -1406,9 +1407,9 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::CSS::CSSRule&gt;&gt; InspectorStyleSheet::buildArrayForRuleList(CSSRuleList* ruleList)
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::CSSRule&gt;&gt; InspectorStyleSheet::buildArrayForRuleList(CSSRuleList* ruleList)
</ins><span class="cx"> {
</span><del>-    RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::CSS::CSSRule&gt;&gt; result = TypeBuilder::Array&lt;TypeBuilder::CSS::CSSRule&gt;::create();
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::CSSRule&gt;&gt; result = Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::CSSRule&gt;::create();
</ins><span class="cx">     if (!ruleList)
</span><span class="cx">         return result.release();
</span><span class="cx"> 
</span><span class="lines">@@ -1440,12 +1441,12 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;InspectorStyleSheetForInlineStyle&gt; InspectorStyleSheetForInlineStyle::create(InspectorPageAgent* pageAgent, const String&amp; id, PassRefPtr&lt;Element&gt; element, TypeBuilder::CSS::StyleSheetOrigin::Enum origin, Listener* listener)
</del><ins>+PassRefPtr&lt;InspectorStyleSheetForInlineStyle&gt; InspectorStyleSheetForInlineStyle::create(InspectorPageAgent* pageAgent, const String&amp; id, PassRefPtr&lt;Element&gt; element, Inspector::TypeBuilder::CSS::StyleSheetOrigin::Enum origin, Listener* listener)
</ins><span class="cx"> {
</span><span class="cx">     return adoptRef(new InspectorStyleSheetForInlineStyle(pageAgent, id, element, origin, listener));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-InspectorStyleSheetForInlineStyle::InspectorStyleSheetForInlineStyle(InspectorPageAgent* pageAgent, const String&amp; id, PassRefPtr&lt;Element&gt; element, TypeBuilder::CSS::StyleSheetOrigin::Enum origin, Listener* listener)
</del><ins>+InspectorStyleSheetForInlineStyle::InspectorStyleSheetForInlineStyle(InspectorPageAgent* pageAgent, const String&amp; id, PassRefPtr&lt;Element&gt; element, Inspector::TypeBuilder::CSS::StyleSheetOrigin::Enum origin, Listener* listener)
</ins><span class="cx">     : InspectorStyleSheet(pageAgent, id, 0, origin, &quot;&quot;, listener)
</span><span class="cx">     , m_element(element)
</span><span class="cx">     , m_ruleSourceData(0)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorStyleSheeth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorStyleSheet.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorStyleSheet.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorStyleSheet.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -29,9 +29,8 @@
</span><span class="cx"> #include &quot;CSSStyleDeclaration.h&quot;
</span><span class="cx"> #include &quot;ExceptionCode.h&quot;
</span><span class="cx"> #include &quot;InspectorStyleTextEditor.h&quot;
</span><del>-#include &quot;InspectorTypeBuilder.h&quot;
-#include &quot;InspectorValues.h&quot;
-
</del><ins>+#include &quot;InspectorWebTypeBuilders.h&quot;
+#include &lt;inspector/InspectorValues.h&gt;
</ins><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="cx"> #include &lt;wtf/HashSet.h&gt;
</span><span class="cx"> #include &lt;wtf/PassRefPtr.h&gt;
</span><span class="lines">@@ -64,12 +63,12 @@
</span><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    explicit InspectorCSSId(RefPtr&lt;InspectorObject&gt; value)
</del><ins>+    explicit InspectorCSSId(RefPtr&lt;Inspector::InspectorObject&gt; value)
</ins><span class="cx">     {
</span><span class="cx">         if (!value-&gt;getString(&quot;styleSheetId&quot;, &amp;m_styleSheetId))
</span><span class="cx">             return;
</span><span class="cx">         
</span><del>-        RefPtr&lt;InspectorValue&gt; ordinalValue = value-&gt;get(&quot;ordinal&quot;);
</del><ins>+        RefPtr&lt;Inspector::InspectorValue&gt; ordinalValue = value-&gt;get(&quot;ordinal&quot;);
</ins><span class="cx">         if (!ordinalValue || !ordinalValue-&gt;asNumber(&amp;m_ordinal))
</span><span class="cx">             m_styleSheetId = &quot;&quot;;
</span><span class="cx">     }
</span><span class="lines">@@ -85,7 +84,7 @@
</span><span class="cx">     const String&amp; styleSheetId() const { return m_styleSheetId; }
</span><span class="cx">     unsigned ordinal() const { return m_ordinal; }
</span><span class="cx"> 
</span><del>-    // ID type is either TypeBuilder::CSS::CSSStyleId or TypeBuilder::CSS::CSSRuleId.
</del><ins>+    // ID type is either Inspector::TypeBuilder::CSS::CSSStyleId or Inspector::TypeBuilder::CSS::CSSRuleId.
</ins><span class="cx">     template&lt;typename ID&gt;
</span><span class="cx">     PassRefPtr&lt;ID&gt; asProtocolValue() const
</span><span class="cx">     {
</span><span class="lines">@@ -140,8 +139,8 @@
</span><span class="cx">     virtual ~InspectorStyle();
</span><span class="cx"> 
</span><span class="cx">     CSSStyleDeclaration* cssStyle() const { return m_style.get(); }
</span><del>-    PassRefPtr&lt;TypeBuilder::CSS::CSSStyle&gt; buildObjectForStyle() const;
-    PassRefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::CSS::CSSComputedStyleProperty&gt;&gt; buildArrayForComputedStyle() const;
</del><ins>+    PassRefPtr&lt;Inspector::TypeBuilder::CSS::CSSStyle&gt; buildObjectForStyle() const;
+    PassRefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::CSSComputedStyleProperty&gt;&gt; buildArrayForComputedStyle() const;
</ins><span class="cx">     bool hasDisabledProperties() const { return !m_disabledProperties.isEmpty(); }
</span><span class="cx">     bool setPropertyText(unsigned index, const String&amp; text, bool overwrite, String* oldText, ExceptionCode&amp;);
</span><span class="cx">     bool toggleProperty(unsigned index, bool disable, ExceptionCode&amp;);
</span><span class="lines">@@ -157,7 +156,7 @@
</span><span class="cx">     bool applyStyleText(const String&amp; text) { ExceptionCode ec = 0; return setText(text, ec); }
</span><span class="cx"> 
</span><span class="cx">     bool populateAllProperties(Vector&lt;InspectorStyleProperty&gt;* result) const;
</span><del>-    PassRefPtr&lt;TypeBuilder::CSS::CSSStyle&gt; styleWithProperties() const;
</del><ins>+    PassRefPtr&lt;Inspector::TypeBuilder::CSS::CSSStyle&gt; styleWithProperties() const;
</ins><span class="cx">     PassRefPtr&lt;CSSRuleSourceData&gt; extractSourceData() const;
</span><span class="cx">     String shorthandValue(const String&amp; shorthandProperty) const;
</span><span class="cx">     String shorthandPriority(const String&amp; shorthandProperty) const;
</span><span class="lines">@@ -182,7 +181,7 @@
</span><span class="cx">     };
</span><span class="cx"> 
</span><span class="cx">     typedef HashMap&lt;CSSStyleDeclaration*, RefPtr&lt;InspectorStyle&gt;&gt; InspectorStyleMap;
</span><del>-    static PassRefPtr&lt;InspectorStyleSheet&gt; create(InspectorPageAgent*, const String&amp; id, PassRefPtr&lt;CSSStyleSheet&gt; pageStyleSheet, TypeBuilder::CSS::StyleSheetOrigin::Enum, const String&amp; documentURL, Listener*);
</del><ins>+    static PassRefPtr&lt;InspectorStyleSheet&gt; create(InspectorPageAgent*, const String&amp; id, PassRefPtr&lt;CSSStyleSheet&gt; pageStyleSheet, Inspector::TypeBuilder::CSS::StyleSheetOrigin::Enum, const String&amp; documentURL, Listener*);
</ins><span class="cx">     static String styleSheetURL(CSSStyleSheet* pageStyleSheet);
</span><span class="cx"> 
</span><span class="cx">     virtual ~InspectorStyleSheet();
</span><span class="lines">@@ -197,10 +196,10 @@
</span><span class="cx">     CSSStyleRule* addRule(const String&amp; selector, ExceptionCode&amp;);
</span><span class="cx">     bool deleteRule(const InspectorCSSId&amp;, ExceptionCode&amp;);
</span><span class="cx">     CSSStyleRule* ruleForId(const InspectorCSSId&amp;) const;
</span><del>-    PassRefPtr&lt;TypeBuilder::CSS::CSSStyleSheetBody&gt; buildObjectForStyleSheet();
-    PassRefPtr&lt;TypeBuilder::CSS::CSSStyleSheetHeader&gt; buildObjectForStyleSheetInfo();
-    PassRefPtr&lt;TypeBuilder::CSS::CSSRule&gt; buildObjectForRule(CSSStyleRule*);
-    PassRefPtr&lt;TypeBuilder::CSS::CSSStyle&gt; buildObjectForStyle(CSSStyleDeclaration*);
</del><ins>+    PassRefPtr&lt;Inspector::TypeBuilder::CSS::CSSStyleSheetBody&gt; buildObjectForStyleSheet();
+    PassRefPtr&lt;Inspector::TypeBuilder::CSS::CSSStyleSheetHeader&gt; buildObjectForStyleSheetInfo();
+    PassRefPtr&lt;Inspector::TypeBuilder::CSS::CSSRule&gt; buildObjectForRule(CSSStyleRule*);
+    PassRefPtr&lt;Inspector::TypeBuilder::CSS::CSSStyle&gt; buildObjectForStyle(CSSStyleDeclaration*);
</ins><span class="cx">     bool setStyleText(const InspectorCSSId&amp;, const String&amp; text, String* oldText, ExceptionCode&amp;);
</span><span class="cx">     bool setPropertyText(const InspectorCSSId&amp;, unsigned propertyIndex, const String&amp; text, bool overwrite, String* oldPropertyText, ExceptionCode&amp;);
</span><span class="cx">     bool toggleProperty(const InspectorCSSId&amp;, unsigned propertyIndex, bool disable, ExceptionCode&amp;);
</span><span class="lines">@@ -213,9 +212,9 @@
</span><span class="cx">     InspectorCSSId styleId(CSSStyleDeclaration* style) const { return ruleOrStyleId(style); }
</span><span class="cx"> 
</span><span class="cx"> protected:
</span><del>-    InspectorStyleSheet(InspectorPageAgent*, const String&amp; id, PassRefPtr&lt;CSSStyleSheet&gt; pageStyleSheet, TypeBuilder::CSS::StyleSheetOrigin::Enum, const String&amp; documentURL, Listener*);
</del><ins>+    InspectorStyleSheet(InspectorPageAgent*, const String&amp; id, PassRefPtr&lt;CSSStyleSheet&gt; pageStyleSheet, Inspector::TypeBuilder::CSS::StyleSheetOrigin::Enum, const String&amp; documentURL, Listener*);
</ins><span class="cx"> 
</span><del>-    bool canBind() const { return m_origin != TypeBuilder::CSS::StyleSheetOrigin::UserAgent &amp;&amp; m_origin != TypeBuilder::CSS::StyleSheetOrigin::User; }
</del><ins>+    bool canBind() const { return m_origin != Inspector::TypeBuilder::CSS::StyleSheetOrigin::UserAgent &amp;&amp; m_origin != Inspector::TypeBuilder::CSS::StyleSheetOrigin::User; }
</ins><span class="cx">     InspectorCSSId ruleOrStyleId(CSSStyleDeclaration* style) const;
</span><span class="cx">     virtual Document* ownerDocument() const;
</span><span class="cx">     virtual RefPtr&lt;CSSRuleSourceData&gt; ruleSourceDataFor(CSSStyleDeclaration* style) const;
</span><span class="lines">@@ -243,13 +242,13 @@
</span><span class="cx">     bool originalStyleSheetText(String* result) const;
</span><span class="cx">     bool resourceStyleSheetText(String* result) const;
</span><span class="cx">     bool inlineStyleSheetText(String* result) const;
</span><del>-    PassRefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::CSS::CSSRule&gt;&gt; buildArrayForRuleList(CSSRuleList*);
-    PassRefPtr&lt;TypeBuilder::CSS::SelectorList&gt; buildObjectForSelectorList(CSSStyleRule*);
</del><ins>+    PassRefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::CSS::CSSRule&gt;&gt; buildArrayForRuleList(CSSRuleList*);
+    PassRefPtr&lt;Inspector::TypeBuilder::CSS::SelectorList&gt; buildObjectForSelectorList(CSSStyleRule*);
</ins><span class="cx"> 
</span><span class="cx">     InspectorPageAgent* m_pageAgent;
</span><span class="cx">     String m_id;
</span><span class="cx">     RefPtr&lt;CSSStyleSheet&gt; m_pageStyleSheet;
</span><del>-    TypeBuilder::CSS::StyleSheetOrigin::Enum m_origin;
</del><ins>+    Inspector::TypeBuilder::CSS::StyleSheetOrigin::Enum m_origin;
</ins><span class="cx">     String m_documentURL;
</span><span class="cx">     bool m_isRevalidating;
</span><span class="cx">     ParsedStyleSheet* m_parsedStyleSheet;
</span><span class="lines">@@ -260,14 +259,14 @@
</span><span class="cx"> 
</span><span class="cx"> class InspectorStyleSheetForInlineStyle : public InspectorStyleSheet {
</span><span class="cx"> public:
</span><del>-    static PassRefPtr&lt;InspectorStyleSheetForInlineStyle&gt; create(InspectorPageAgent*, const String&amp; id, PassRefPtr&lt;Element&gt;, TypeBuilder::CSS::StyleSheetOrigin::Enum, Listener*);
</del><ins>+    static PassRefPtr&lt;InspectorStyleSheetForInlineStyle&gt; create(InspectorPageAgent*, const String&amp; id, PassRefPtr&lt;Element&gt;, Inspector::TypeBuilder::CSS::StyleSheetOrigin::Enum, Listener*);
</ins><span class="cx"> 
</span><span class="cx">     void didModifyElementAttribute();
</span><span class="cx">     virtual bool getText(String* result) const;
</span><span class="cx">     virtual CSSStyleDeclaration* styleForId(const InspectorCSSId&amp; id) const { ASSERT_UNUSED(id, !id.ordinal()); return inlineStyle(); }
</span><span class="cx"> 
</span><span class="cx"> protected:
</span><del>-    InspectorStyleSheetForInlineStyle(InspectorPageAgent*, const String&amp; id, PassRefPtr&lt;Element&gt;, TypeBuilder::CSS::StyleSheetOrigin::Enum, Listener*);
</del><ins>+    InspectorStyleSheetForInlineStyle(InspectorPageAgent*, const String&amp; id, PassRefPtr&lt;Element&gt;, Inspector::TypeBuilder::CSS::StyleSheetOrigin::Enum, Listener*);
</ins><span class="cx"> 
</span><span class="cx">     virtual Document* ownerDocument() const;
</span><span class="cx">     virtual RefPtr&lt;CSSRuleSourceData&gt; ruleSourceDataFor(CSSStyleDeclaration* style) const { ASSERT_UNUSED(style, style == inlineStyle()); return m_ruleSourceData; }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorStyleTextEditorcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorStyleTextEditor.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorStyleTextEditor.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorStyleTextEditor.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -32,6 +32,8 @@
</span><span class="cx"> #include &quot;HTMLParserIdioms.h&quot;
</span><span class="cx"> #include &quot;InspectorStyleSheet.h&quot;
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> InspectorStyleTextEditor::InspectorStyleTextEditor(Vector&lt;InspectorStyleProperty&gt;* allProperties, Vector&lt;InspectorStyleProperty&gt;* disabledProperties, const String&amp; styleText, const NewLineAndWhitespace&amp; format)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorTimelineAgentcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorTimelineAgent.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorTimelineAgent.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorTimelineAgent.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -54,6 +54,8 @@
</span><span class="cx"> #include &quot;TimelineRecordFactory.h&quot;
</span><span class="cx"> #include &lt;wtf/CurrentTime.h&gt;
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> void TimelineTimeConverter::reset()
</span><span class="lines">@@ -65,7 +67,7 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorTimelineAgent::didCreateFrontendAndBackend(InspectorFrontendChannel* frontendChannel, InspectorBackendDispatcher* backendDispatcher)
</del><ins>+void InspectorTimelineAgent::didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel* frontendChannel, InspectorBackendDispatcher* backendDispatcher)
</ins><span class="cx"> {
</span><span class="cx">     m_frontendDispatcher = std::make_unique&lt;InspectorTimelineFrontendDispatcher&gt;(frontendChannel);
</span><span class="cx">     m_backendDispatcher = InspectorTimelineBackendDispatcher::create(backendDispatcher, this);
</span><span class="lines">@@ -422,99 +424,99 @@
</span><span class="cx">     innerAddRecordToTimeline(record, type);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static TypeBuilder::Timeline::EventType::Enum toProtocol(TimelineRecordType type)
</del><ins>+static Inspector::TypeBuilder::Timeline::EventType::Enum toProtocol(TimelineRecordType type)
</ins><span class="cx"> {
</span><span class="cx">     switch (type) {
</span><span class="cx">     case TimelineRecordType::EventDispatch:
</span><del>-        return TypeBuilder::Timeline::EventType::EventDispatch;
</del><ins>+        return Inspector::TypeBuilder::Timeline::EventType::EventDispatch;
</ins><span class="cx">     case TimelineRecordType::BeginFrame:
</span><del>-        return TypeBuilder::Timeline::EventType::BeginFrame;
</del><ins>+        return Inspector::TypeBuilder::Timeline::EventType::BeginFrame;
</ins><span class="cx">     case TimelineRecordType::ScheduleStyleRecalculation:
</span><del>-        return TypeBuilder::Timeline::EventType::ScheduleStyleRecalculation;
</del><ins>+        return Inspector::TypeBuilder::Timeline::EventType::ScheduleStyleRecalculation;
</ins><span class="cx">     case TimelineRecordType::RecalculateStyles:
</span><del>-        return TypeBuilder::Timeline::EventType::RecalculateStyles;
</del><ins>+        return Inspector::TypeBuilder::Timeline::EventType::RecalculateStyles;
</ins><span class="cx">     case TimelineRecordType::InvalidateLayout:
</span><del>-        return TypeBuilder::Timeline::EventType::InvalidateLayout;
</del><ins>+        return Inspector::TypeBuilder::Timeline::EventType::InvalidateLayout;
</ins><span class="cx">     case TimelineRecordType::Layout:
</span><del>-        return TypeBuilder::Timeline::EventType::Layout;
</del><ins>+        return Inspector::TypeBuilder::Timeline::EventType::Layout;
</ins><span class="cx">     case TimelineRecordType::Paint:
</span><del>-        return TypeBuilder::Timeline::EventType::Paint;
</del><ins>+        return Inspector::TypeBuilder::Timeline::EventType::Paint;
</ins><span class="cx">     case TimelineRecordType::ScrollLayer:
</span><del>-        return TypeBuilder::Timeline::EventType::ScrollLayer;
</del><ins>+        return Inspector::TypeBuilder::Timeline::EventType::ScrollLayer;
</ins><span class="cx">     case TimelineRecordType::ResizeImage:
</span><del>-        return TypeBuilder::Timeline::EventType::ResizeImage;
</del><ins>+        return Inspector::TypeBuilder::Timeline::EventType::ResizeImage;
</ins><span class="cx">     case TimelineRecordType::CompositeLayers:
</span><del>-        return TypeBuilder::Timeline::EventType::CompositeLayers;
</del><ins>+        return Inspector::TypeBuilder::Timeline::EventType::CompositeLayers;
</ins><span class="cx"> 
</span><span class="cx">     case TimelineRecordType::ParseHTML:
</span><del>-        return TypeBuilder::Timeline::EventType::ParseHTML;
</del><ins>+        return Inspector::TypeBuilder::Timeline::EventType::ParseHTML;
</ins><span class="cx"> 
</span><span class="cx">     case TimelineRecordType::TimerInstall:
</span><del>-        return TypeBuilder::Timeline::EventType::TimerInstall;
</del><ins>+        return Inspector::TypeBuilder::Timeline::EventType::TimerInstall;
</ins><span class="cx">     case TimelineRecordType::TimerRemove:
</span><del>-        return TypeBuilder::Timeline::EventType::TimerRemove;
</del><ins>+        return Inspector::TypeBuilder::Timeline::EventType::TimerRemove;
</ins><span class="cx">     case TimelineRecordType::TimerFire:
</span><del>-        return TypeBuilder::Timeline::EventType::TimerFire;
</del><ins>+        return Inspector::TypeBuilder::Timeline::EventType::TimerFire;
</ins><span class="cx"> 
</span><span class="cx">     case TimelineRecordType::EvaluateScript:
</span><del>-        return TypeBuilder::Timeline::EventType::EvaluateScript;
</del><ins>+        return Inspector::TypeBuilder::Timeline::EventType::EvaluateScript;
</ins><span class="cx"> 
</span><span class="cx">     case TimelineRecordType::MarkLoad:
</span><del>-        return TypeBuilder::Timeline::EventType::MarkLoad;
</del><ins>+        return Inspector::TypeBuilder::Timeline::EventType::MarkLoad;
</ins><span class="cx">     case TimelineRecordType::MarkDOMContent:
</span><del>-        return TypeBuilder::Timeline::EventType::MarkDOMContent;
</del><ins>+        return Inspector::TypeBuilder::Timeline::EventType::MarkDOMContent;
</ins><span class="cx"> 
</span><span class="cx">     case TimelineRecordType::TimeStamp:
</span><del>-        return TypeBuilder::Timeline::EventType::TimeStamp;
</del><ins>+        return Inspector::TypeBuilder::Timeline::EventType::TimeStamp;
</ins><span class="cx">     case TimelineRecordType::Time:
</span><del>-        return TypeBuilder::Timeline::EventType::Time;
</del><ins>+        return Inspector::TypeBuilder::Timeline::EventType::Time;
</ins><span class="cx">     case TimelineRecordType::TimeEnd:
</span><del>-        return TypeBuilder::Timeline::EventType::TimeEnd;
</del><ins>+        return Inspector::TypeBuilder::Timeline::EventType::TimeEnd;
</ins><span class="cx"> 
</span><span class="cx">     case TimelineRecordType::ScheduleResourceRequest:
</span><del>-        return TypeBuilder::Timeline::EventType::ScheduleResourceRequest;
</del><ins>+        return Inspector::TypeBuilder::Timeline::EventType::ScheduleResourceRequest;
</ins><span class="cx">     case TimelineRecordType::ResourceSendRequest:
</span><del>-        return TypeBuilder::Timeline::EventType::ResourceSendRequest;
</del><ins>+        return Inspector::TypeBuilder::Timeline::EventType::ResourceSendRequest;
</ins><span class="cx">     case TimelineRecordType::ResourceReceiveResponse:
</span><del>-        return TypeBuilder::Timeline::EventType::ResourceReceiveResponse;
</del><ins>+        return Inspector::TypeBuilder::Timeline::EventType::ResourceReceiveResponse;
</ins><span class="cx">     case TimelineRecordType::ResourceReceivedData:
</span><del>-        return TypeBuilder::Timeline::EventType::ResourceReceivedData;
</del><ins>+        return Inspector::TypeBuilder::Timeline::EventType::ResourceReceivedData;
</ins><span class="cx">     case TimelineRecordType::ResourceFinish:
</span><del>-        return TypeBuilder::Timeline::EventType::ResourceFinish;
</del><ins>+        return Inspector::TypeBuilder::Timeline::EventType::ResourceFinish;
</ins><span class="cx"> 
</span><span class="cx">     case TimelineRecordType::XHRReadyStateChange:
</span><del>-        return TypeBuilder::Timeline::EventType::XHRReadyStateChange;
</del><ins>+        return Inspector::TypeBuilder::Timeline::EventType::XHRReadyStateChange;
</ins><span class="cx">     case TimelineRecordType::XHRLoad:
</span><del>-        return TypeBuilder::Timeline::EventType::XHRLoad;
</del><ins>+        return Inspector::TypeBuilder::Timeline::EventType::XHRLoad;
</ins><span class="cx"> 
</span><span class="cx">     case TimelineRecordType::FunctionCall:
</span><del>-        return TypeBuilder::Timeline::EventType::FunctionCall;
</del><ins>+        return Inspector::TypeBuilder::Timeline::EventType::FunctionCall;
</ins><span class="cx"> 
</span><span class="cx">     case TimelineRecordType::RequestAnimationFrame:
</span><del>-        return TypeBuilder::Timeline::EventType::RequestAnimationFrame;
</del><ins>+        return Inspector::TypeBuilder::Timeline::EventType::RequestAnimationFrame;
</ins><span class="cx">     case TimelineRecordType::CancelAnimationFrame:
</span><del>-        return TypeBuilder::Timeline::EventType::CancelAnimationFrame;
</del><ins>+        return Inspector::TypeBuilder::Timeline::EventType::CancelAnimationFrame;
</ins><span class="cx">     case TimelineRecordType::FireAnimationFrame:
</span><del>-        return TypeBuilder::Timeline::EventType::FireAnimationFrame;
</del><ins>+        return Inspector::TypeBuilder::Timeline::EventType::FireAnimationFrame;
</ins><span class="cx"> 
</span><span class="cx">     case TimelineRecordType::WebSocketCreate:
</span><del>-        return TypeBuilder::Timeline::EventType::WebSocketCreate;
</del><ins>+        return Inspector::TypeBuilder::Timeline::EventType::WebSocketCreate;
</ins><span class="cx">     case TimelineRecordType::WebSocketSendHandshakeRequest:
</span><del>-        return TypeBuilder::Timeline::EventType::WebSocketSendHandshakeRequest;
</del><ins>+        return Inspector::TypeBuilder::Timeline::EventType::WebSocketSendHandshakeRequest;
</ins><span class="cx">     case TimelineRecordType::WebSocketReceiveHandshakeResponse:
</span><del>-        return TypeBuilder::Timeline::EventType::WebSocketReceiveHandshakeResponse;
</del><ins>+        return Inspector::TypeBuilder::Timeline::EventType::WebSocketReceiveHandshakeResponse;
</ins><span class="cx">     case TimelineRecordType::WebSocketDestroy:
</span><del>-        return TypeBuilder::Timeline::EventType::WebSocketDestroy;
</del><ins>+        return Inspector::TypeBuilder::Timeline::EventType::WebSocketDestroy;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    return TypeBuilder::Timeline::EventType::TimeStamp;
</del><ins>+    return Inspector::TypeBuilder::Timeline::EventType::TimeStamp;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorTimelineAgent::innerAddRecordToTimeline(PassRefPtr&lt;InspectorObject&gt; prpRecord, TimelineRecordType type)
</span><span class="cx"> {
</span><del>-    prpRecord-&gt;setString(&quot;type&quot;, TypeBuilder::getEnumConstantValue(toProtocol(type)));
</del><ins>+    prpRecord-&gt;setString(&quot;type&quot;, Inspector::TypeBuilder::getEnumConstantValue(toProtocol(type)));
</ins><span class="cx"> 
</span><del>-    RefPtr&lt;TypeBuilder::Timeline::TimelineEvent&gt; record = TypeBuilder::Timeline::TimelineEvent::runtimeCast(prpRecord);
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Timeline::TimelineEvent&gt; record = Inspector::TypeBuilder::Timeline::TimelineEvent::runtimeCast(prpRecord);
</ins><span class="cx"> 
</span><span class="cx">     setDOMCounters(record.get());
</span><span class="cx"> 
</span><span class="lines">@@ -531,7 +533,7 @@
</span><span class="cx">     return JSDOMWindow::commonVM()-&gt;heap.size();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorTimelineAgent::setDOMCounters(TypeBuilder::Timeline::TimelineEvent* record)
</del><ins>+void InspectorTimelineAgent::setDOMCounters(Inspector::TypeBuilder::Timeline::TimelineEvent* record)
</ins><span class="cx"> {
</span><span class="cx">     record-&gt;setUsedHeapSize(usedHeapSize());
</span><span class="cx"> 
</span><span class="lines">@@ -543,7 +545,7 @@
</span><span class="cx">             nodeCount = InspectorCounters::counterValue(InspectorCounters::NodeCounter);
</span><span class="cx">         }
</span><span class="cx">         int listenerCount = ThreadLocalInspectorCounters::current().counterValue(ThreadLocalInspectorCounters::JSEventListenerCounter);
</span><del>-        RefPtr&lt;TypeBuilder::Timeline::DOMCounters&gt; counters = TypeBuilder::Timeline::DOMCounters::create()
</del><ins>+        RefPtr&lt;Inspector::TypeBuilder::Timeline::DOMCounters&gt; counters = Inspector::TypeBuilder::Timeline::DOMCounters::create()
</ins><span class="cx">             .setDocuments(documentCount)
</span><span class="cx">             .setNodes(nodeCount)
</span><span class="cx">             .setJsEventListeners(listenerCount);
</span><span class="lines">@@ -580,7 +582,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> InspectorTimelineAgent::InspectorTimelineAgent(InstrumentingAgents* instrumentingAgents, InspectorPageAgent* pageAgent, InspectorMemoryAgent* memoryAgent, InspectorType type, InspectorClient* client)
</span><del>-    : InspectorBaseAgent(ASCIILiteral(&quot;Timeline&quot;), instrumentingAgents)
</del><ins>+    : InspectorAgentBase(ASCIILiteral(&quot;Timeline&quot;), instrumentingAgents)
</ins><span class="cx">     , m_pageAgent(pageAgent)
</span><span class="cx">     , m_memoryAgent(memoryAgent)
</span><span class="cx">     , m_id(1)
</span><span class="lines">@@ -604,7 +606,7 @@
</span><span class="cx"> void InspectorTimelineAgent::sendEvent(PassRefPtr&lt;InspectorObject&gt; event)
</span><span class="cx"> {
</span><span class="cx">     // FIXME: runtimeCast is a hack. We do it because we can't build TimelineEvent directly now.
</span><del>-    RefPtr&lt;TypeBuilder::Timeline::TimelineEvent&gt; recordChecked = TypeBuilder::Timeline::TimelineEvent::runtimeCast(event);
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Timeline::TimelineEvent&gt; recordChecked = Inspector::TypeBuilder::Timeline::TimelineEvent::runtimeCast(event);
</ins><span class="cx">     m_frontendDispatcher-&gt;eventRecorded(recordChecked.release());
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorTimelineAgenth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorTimelineAgent.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorTimelineAgent.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorTimelineAgent.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -33,10 +33,11 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><span class="cx"> 
</span><del>-#include &quot;InspectorBaseAgent.h&quot;
</del><ins>+#include &quot;InspectorBackendDispatchers.h&quot;
</ins><span class="cx"> #include &quot;InspectorFrontend.h&quot;
</span><del>-#include &quot;InspectorValues.h&quot;
</del><ins>+#include &quot;InspectorWebAgentBase.h&quot;
</ins><span class="cx"> #include &quot;LayoutRect.h&quot;
</span><ins>+#include &lt;inspector/InspectorValues.h&gt;
</ins><span class="cx"> #include &lt;wtf/PassOwnPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/Vector.h&gt;
</span><span class="cx"> #include &lt;wtf/WeakPtr.h&gt;
</span><span class="lines">@@ -121,7 +122,7 @@
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> class InspectorTimelineAgent
</span><del>-    : public InspectorBaseAgent
</del><ins>+    : public InspectorAgentBase
</ins><span class="cx">     , public InspectorTimelineBackendDispatcherHandler {
</span><span class="cx">     WTF_MAKE_NONCOPYABLE(InspectorTimelineAgent);
</span><span class="cx"> public:
</span><span class="lines">@@ -134,7 +135,7 @@
</span><span class="cx"> 
</span><span class="cx">     ~InspectorTimelineAgent();
</span><span class="cx"> 
</span><del>-    virtual void didCreateFrontendAndBackend(InspectorFrontendChannel*, InspectorBackendDispatcher*) OVERRIDE;
</del><ins>+    virtual void didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel*, Inspector::InspectorBackendDispatcher*) OVERRIDE;
</ins><span class="cx">     virtual void willDestroyFrontendAndBackend() OVERRIDE;
</span><span class="cx"> 
</span><span class="cx">     virtual void start(ErrorString*, const int* maxCallStackDepth, const bool* includeDomCounters);
</span><span class="lines">@@ -220,33 +221,33 @@
</span><span class="cx">     friend class TimelineRecordStack;
</span><span class="cx"> 
</span><span class="cx">     struct TimelineRecordEntry {
</span><del>-        TimelineRecordEntry(PassRefPtr&lt;InspectorObject&gt; record, PassRefPtr&lt;InspectorObject&gt; data, PassRefPtr&lt;InspectorArray&gt; children, TimelineRecordType type, size_t usedHeapSizeAtStart)
</del><ins>+        TimelineRecordEntry(PassRefPtr&lt;Inspector::InspectorObject&gt; record, PassRefPtr&lt;Inspector::InspectorObject&gt; data, PassRefPtr&lt;Inspector::InspectorArray&gt; children, TimelineRecordType type, size_t usedHeapSizeAtStart)
</ins><span class="cx">             : record(record), data(data), children(children), type(type), usedHeapSizeAtStart(usedHeapSizeAtStart)
</span><span class="cx">         {
</span><span class="cx">         }
</span><del>-        RefPtr&lt;InspectorObject&gt; record;
-        RefPtr&lt;InspectorObject&gt; data;
-        RefPtr&lt;InspectorArray&gt; children;
</del><ins>+        RefPtr&lt;Inspector::InspectorObject&gt; record;
+        RefPtr&lt;Inspector::InspectorObject&gt; data;
+        RefPtr&lt;Inspector::InspectorArray&gt; children;
</ins><span class="cx">         TimelineRecordType type;
</span><span class="cx">         size_t usedHeapSizeAtStart;
</span><span class="cx">     };
</span><span class="cx"> 
</span><span class="cx">     InspectorTimelineAgent(InstrumentingAgents*, InspectorPageAgent*, InspectorMemoryAgent*, InspectorType, InspectorClient*);
</span><span class="cx"> 
</span><del>-    void sendEvent(PassRefPtr&lt;InspectorObject&gt;);
-    void appendRecord(PassRefPtr&lt;InspectorObject&gt; data, TimelineRecordType, bool captureCallStack, Frame*);
-    void pushCurrentRecord(PassRefPtr&lt;InspectorObject&gt;, TimelineRecordType, bool captureCallStack, Frame*);
</del><ins>+    void sendEvent(PassRefPtr&lt;Inspector::InspectorObject&gt;);
+    void appendRecord(PassRefPtr&lt;Inspector::InspectorObject&gt; data, TimelineRecordType, bool captureCallStack, Frame*);
+    void pushCurrentRecord(PassRefPtr&lt;Inspector::InspectorObject&gt;, TimelineRecordType, bool captureCallStack, Frame*);
</ins><span class="cx"> 
</span><del>-    void setDOMCounters(TypeBuilder::Timeline::TimelineEvent* record);
-    void setFrameIdentifier(InspectorObject* record, Frame*);
</del><ins>+    void setDOMCounters(Inspector::TypeBuilder::Timeline::TimelineEvent* record);
+    void setFrameIdentifier(Inspector::InspectorObject* record, Frame*);
</ins><span class="cx"> 
</span><span class="cx">     void didCompleteCurrentRecord(TimelineRecordType);
</span><span class="cx"> 
</span><del>-    void setHeapSizeStatistics(InspectorObject* record);
</del><ins>+    void setHeapSizeStatistics(Inspector::InspectorObject* record);
</ins><span class="cx">     void commitFrameRecord();
</span><span class="cx"> 
</span><del>-    void addRecordToTimeline(PassRefPtr&lt;InspectorObject&gt;, TimelineRecordType);
-    void innerAddRecordToTimeline(PassRefPtr&lt;InspectorObject&gt;, TimelineRecordType);
</del><ins>+    void addRecordToTimeline(PassRefPtr&lt;Inspector::InspectorObject&gt;, TimelineRecordType);
+    void innerAddRecordToTimeline(PassRefPtr&lt;Inspector::InspectorObject&gt;, TimelineRecordType);
</ins><span class="cx">     void clearRecordStack();
</span><span class="cx"> 
</span><span class="cx">     void localToPageQuad(const RenderObject&amp;, const LayoutRect&amp;, FloatQuad*);
</span><span class="lines">@@ -266,7 +267,7 @@
</span><span class="cx"> 
</span><span class="cx">     int m_id;
</span><span class="cx">     int m_maxCallStackDepth;
</span><del>-    RefPtr&lt;InspectorObject&gt; m_pendingFrameRecord;
</del><ins>+    RefPtr&lt;Inspector::InspectorObject&gt; m_pendingFrameRecord;
</ins><span class="cx">     InspectorType m_inspectorType;
</span><span class="cx">     InspectorClient* m_client;
</span><span class="cx">     WeakPtrFactory&lt;InspectorTimelineAgent&gt; m_weakFactory;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorValuescpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorValues.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorValues.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorValues.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,836 +0,0 @@
</span><del>-/*
- * Copyright (C) 2010 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include &quot;config.h&quot;
-#include &quot;InspectorValues.h&quot;
-
-#include &lt;wtf/DecimalNumber.h&gt;
-#include &lt;wtf/dtoa.h&gt;
-#include &lt;wtf/text/StringBuilder.h&gt;
-
-namespace WebCore {
-
-namespace {
-
-static const int stackLimit = 1000;
-
-enum Token {
-    OBJECT_BEGIN,
-    OBJECT_END,
-    ARRAY_BEGIN,
-    ARRAY_END,
-    STRING,
-    NUMBER,
-    BOOL_TRUE,
-    BOOL_FALSE,
-    NULL_TOKEN,
-    LIST_SEPARATOR,
-    OBJECT_PAIR_SEPARATOR,
-    INVALID_TOKEN,
-};
-
-const char* const nullString = &quot;null&quot;;
-const char* const trueString = &quot;true&quot;;
-const char* const falseString = &quot;false&quot;;
-
-bool parseConstToken(const UChar* start, const UChar* end, const UChar** tokenEnd, const char* token)
-{
-    while (start &lt; end &amp;&amp; *token != '\0' &amp;&amp; *start++ == *token++) { }
-    if (*token != '\0')
-        return false;
-    *tokenEnd = start;
-    return true;
-}
-
-bool readInt(const UChar* start, const UChar* end, const UChar** tokenEnd, bool canHaveLeadingZeros)
-{
-    if (start == end)
-        return false;
-    bool haveLeadingZero = '0' == *start;
-    int length = 0;
-    while (start &lt; end &amp;&amp; '0' &lt;= *start &amp;&amp; *start &lt;= '9') {
-        ++start;
-        ++length;
-    }
-    if (!length)
-        return false;
-    if (!canHaveLeadingZeros &amp;&amp; length &gt; 1 &amp;&amp; haveLeadingZero)
-        return false;
-    *tokenEnd = start;
-    return true;
-}
-
-bool parseNumberToken(const UChar* start, const UChar* end, const UChar** tokenEnd)
-{
-    // We just grab the number here.  We validate the size in DecodeNumber.
-    // According   to RFC4627, a valid number is: [minus] int [frac] [exp]
-    if (start == end)
-        return false;
-    UChar c = *start;
-    if ('-' == c)
-        ++start;
-
-    if (!readInt(start, end, &amp;start, false))
-        return false;
-    if (start == end) {
-        *tokenEnd = start;
-        return true;
-    }
-
-    // Optional fraction part
-    c = *start;
-    if ('.' == c) {
-        ++start;
-        if (!readInt(start, end, &amp;start, true))
-            return false;
-        if (start == end) {
-            *tokenEnd = start;
-            return true;
-        }
-        c = *start;
-    }
-
-    // Optional exponent part
-    if ('e' == c || 'E' == c) {
-        ++start;
-        if (start == end)
-            return false;
-        c = *start;
-        if ('-' == c || '+' == c) {
-            ++start;
-            if (start == end)
-                return false;
-        }
-        if (!readInt(start, end, &amp;start, true))
-            return false;
-    }
-
-    *tokenEnd = start;
-    return true;
-}
-
-bool readHexDigits(const UChar* start, const UChar* end, const UChar** tokenEnd, int digits)
-{
-    if (end - start &lt; digits)
-        return false;
-    for (int i = 0; i &lt; digits; ++i) {
-        UChar c = *start++;
-        if (!(('0' &lt;= c &amp;&amp; c &lt;= '9') || ('a' &lt;= c &amp;&amp; c &lt;= 'f') || ('A' &lt;= c &amp;&amp; c &lt;= 'F')))
-            return false;
-    }
-    *tokenEnd = start;
-    return true;
-}
-
-bool parseStringToken(const UChar* start, const UChar* end, const UChar** tokenEnd)
-{
-    while (start &lt; end) {
-        UChar c = *start++;
-        if ('\\' == c) {
-            c = *start++;
-            // Make sure the escaped char is valid.
-            switch (c) {
-            case 'x':
-                if (!readHexDigits(start, end, &amp;start, 2))
-                    return false;
-                break;
-            case 'u':
-                if (!readHexDigits(start, end, &amp;start, 4))
-                    return false;
-                break;
-            case '\\':
-            case '/':
-            case 'b':
-            case 'f':
-            case 'n':
-            case 'r':
-            case 't':
-            case 'v':
-            case '&quot;':
-                break;
-            default:
-                return false;
-            }
-        } else if ('&quot;' == c) {
-            *tokenEnd = start;
-            return true;
-        }
-    }
-    return false;
-}
-
-Token parseToken(const UChar* start, const UChar* end, const UChar** tokenStart, const UChar** tokenEnd)
-{
-    while (start &lt; end &amp;&amp; isSpaceOrNewline(*start))
-        ++start;
-
-    if (start == end)
-        return INVALID_TOKEN;
-
-    *tokenStart = start;
-
-    switch (*start) {
-    case 'n':
-        if (parseConstToken(start, end, tokenEnd, nullString))
-            return NULL_TOKEN;
-        break;
-    case 't':
-        if (parseConstToken(start, end, tokenEnd, trueString))
-            return BOOL_TRUE;
-        break;
-    case 'f':
-        if (parseConstToken(start, end, tokenEnd, falseString))
-            return BOOL_FALSE;
-        break;
-    case '[':
-        *tokenEnd = start + 1;
-        return ARRAY_BEGIN;
-    case ']':
-        *tokenEnd = start + 1;
-        return ARRAY_END;
-    case ',':
-        *tokenEnd = start + 1;
-        return LIST_SEPARATOR;
-    case '{':
-        *tokenEnd = start + 1;
-        return OBJECT_BEGIN;
-    case '}':
-        *tokenEnd = start + 1;
-        return OBJECT_END;
-    case ':':
-        *tokenEnd = start + 1;
-        return OBJECT_PAIR_SEPARATOR;
-    case '0':
-    case '1':
-    case '2':
-    case '3':
-    case '4':
-    case '5':
-    case '6':
-    case '7':
-    case '8':
-    case '9':
-    case '-':
-        if (parseNumberToken(start, end, tokenEnd))
-            return NUMBER;
-        break;
-    case '&quot;':
-        if (parseStringToken(start + 1, end, tokenEnd))
-            return STRING;
-        break;
-    }
-    return INVALID_TOKEN;
-}
-
-inline int hexToInt(UChar c)
-{
-    if ('0' &lt;= c &amp;&amp; c &lt;= '9')
-        return c - '0';
-    if ('A' &lt;= c &amp;&amp; c &lt;= 'F')
-        return c - 'A' + 10;
-    if ('a' &lt;= c &amp;&amp; c &lt;= 'f')
-        return c - 'a' + 10;
-    ASSERT_NOT_REACHED();
-    return 0;
-}
-
-bool decodeString(const UChar* start, const UChar* end, StringBuilder* output)
-{
-    while (start &lt; end) {
-        UChar c = *start++;
-        if ('\\' != c) {
-            output-&gt;append(c);
-            continue;
-        }
-        c = *start++;
-        switch (c) {
-        case '&quot;':
-        case '/':
-        case '\\':
-            break;
-        case 'b':
-            c = '\b';
-            break;
-        case 'f':
-            c = '\f';
-            break;
-        case 'n':
-            c = '\n';
-            break;
-        case 'r':
-            c = '\r';
-            break;
-        case 't':
-            c = '\t';
-            break;
-        case 'v':
-            c = '\v';
-            break;
-        case 'x':
-            c = (hexToInt(*start) &lt;&lt; 4) +
-                hexToInt(*(start + 1));
-            start += 2;
-            break;
-        case 'u':
-            c = (hexToInt(*start) &lt;&lt; 12) +
-                (hexToInt(*(start + 1)) &lt;&lt; 8) +
-                (hexToInt(*(start + 2)) &lt;&lt; 4) +
-                hexToInt(*(start + 3));
-            start += 4;
-            break;
-        default:
-            return false;
-        }
-        output-&gt;append(c);
-    }
-    return true;
-}
-
-bool decodeString(const UChar* start, const UChar* end, String* output)
-{
-    if (start == end) {
-        *output = &quot;&quot;;
-        return true;
-    }
-    if (start &gt; end)
-        return false;
-    StringBuilder buffer;
-    buffer.reserveCapacity(end - start);
-    if (!decodeString(start, end, &amp;buffer))
-        return false;
-    *output = buffer.toString();
-    return true;
-}
-
-PassRefPtr&lt;InspectorValue&gt; buildValue(const UChar* start, const UChar* end, const UChar** valueTokenEnd, int depth)
-{
-    if (depth &gt; stackLimit)
-        return 0;
-
-    RefPtr&lt;InspectorValue&gt; result;
-    const UChar* tokenStart;
-    const UChar* tokenEnd;
-    Token token = parseToken(start, end, &amp;tokenStart, &amp;tokenEnd);
-    switch (token) {
-    case INVALID_TOKEN:
-        return 0;
-    case NULL_TOKEN:
-        result = InspectorValue::null();
-        break;
-    case BOOL_TRUE:
-        result = InspectorBasicValue::create(true);
-        break;
-    case BOOL_FALSE:
-        result = InspectorBasicValue::create(false);
-        break;
-    case NUMBER: {
-        bool ok;
-        double value = charactersToDouble(tokenStart, tokenEnd - tokenStart, &amp;ok);
-        if (!ok)
-            return 0;
-        result = InspectorBasicValue::create(value);
-        break;
-    }
-    case STRING: {
-        String value;
-        bool ok = decodeString(tokenStart + 1, tokenEnd - 1, &amp;value);
-        if (!ok)
-            return 0;
-        result = InspectorString::create(value);
-        break;
-    }
-    case ARRAY_BEGIN: {
-        RefPtr&lt;InspectorArray&gt; array = InspectorArray::create();
-        start = tokenEnd;
-        token = parseToken(start, end, &amp;tokenStart, &amp;tokenEnd);
-        while (token != ARRAY_END) {
-            RefPtr&lt;InspectorValue&gt; arrayNode = buildValue(start, end, &amp;tokenEnd, depth + 1);
-            if (!arrayNode)
-                return 0;
-            array-&gt;pushValue(arrayNode);
-
-            // After a list value, we expect a comma or the end of the list.
-            start = tokenEnd;
-            token = parseToken(start, end, &amp;tokenStart, &amp;tokenEnd);
-            if (token == LIST_SEPARATOR) {
-                start = tokenEnd;
-                token = parseToken(start, end, &amp;tokenStart, &amp;tokenEnd);
-                if (token == ARRAY_END)
-                    return 0;
-            } else if (token != ARRAY_END) {
-                // Unexpected value after list value.  Bail out.
-                return 0;
-            }
-        }
-        if (token != ARRAY_END)
-            return 0;
-        result = array.release();
-        break;
-    }
-    case OBJECT_BEGIN: {
-        RefPtr&lt;InspectorObject&gt; object = InspectorObject::create();
-        start = tokenEnd;
-        token = parseToken(start, end, &amp;tokenStart, &amp;tokenEnd);
-        while (token != OBJECT_END) {
-            if (token != STRING)
-                return 0;
-            String key;
-            if (!decodeString(tokenStart + 1, tokenEnd - 1, &amp;key))
-                return 0;
-            start = tokenEnd;
-
-            token = parseToken(start, end, &amp;tokenStart, &amp;tokenEnd);
-            if (token != OBJECT_PAIR_SEPARATOR)
-                return 0;
-            start = tokenEnd;
-
-            RefPtr&lt;InspectorValue&gt; value = buildValue(start, end, &amp;tokenEnd, depth + 1);
-            if (!value)
-                return 0;
-            object-&gt;setValue(key, value);
-            start = tokenEnd;
-
-            // After a key/value pair, we expect a comma or the end of the
-            // object.
-            token = parseToken(start, end, &amp;tokenStart, &amp;tokenEnd);
-            if (token == LIST_SEPARATOR) {
-                start = tokenEnd;
-                token = parseToken(start, end, &amp;tokenStart, &amp;tokenEnd);
-                 if (token == OBJECT_END)
-                    return 0;
-            } else if (token != OBJECT_END) {
-                // Unexpected value after last object value.  Bail out.
-                return 0;
-            }
-        }
-        if (token != OBJECT_END)
-            return 0;
-        result = object.release();
-        break;
-    }
-
-    default:
-        // We got a token that's not a value.
-        return 0;
-    }
-    *valueTokenEnd = tokenEnd;
-    return result.release();
-}
-
-inline bool escapeChar(UChar c, StringBuilder* dst)
-{
-    switch (c) {
-    case '\b': dst-&gt;append(&quot;\\b&quot;, 2); break;
-    case '\f': dst-&gt;append(&quot;\\f&quot;, 2); break;
-    case '\n': dst-&gt;append(&quot;\\n&quot;, 2); break;
-    case '\r': dst-&gt;append(&quot;\\r&quot;, 2); break;
-    case '\t': dst-&gt;append(&quot;\\t&quot;, 2); break;
-    case '\\': dst-&gt;append(&quot;\\\\&quot;, 2); break;
-    case '&quot;': dst-&gt;append(&quot;\\\&quot;&quot;, 2); break;
-    default:
-        return false;
-    }
-    return true;
-}
-
-inline void doubleQuoteString(const String&amp; str, StringBuilder* dst)
-{
-    dst-&gt;append('&quot;');
-    for (unsigned i = 0; i &lt; str.length(); ++i) {
-        UChar c = str[i];
-        if (!escapeChar(c, dst)) {
-            if (c &lt; 32 || c &gt; 126 || c == '&lt;' || c == '&gt;') {
-                // 1. Escaping &lt;, &gt; to prevent script execution.
-                // 2. Technically, we could also pass through c &gt; 126 as UTF8, but this
-                //    is also optional.  It would also be a pain to implement here.
-                unsigned int symbol = static_cast&lt;unsigned int&gt;(c);
-                String symbolCode = String::format(&quot;\\u%04X&quot;, symbol);
-                dst-&gt;append(symbolCode.characters(), symbolCode.length());
-            } else
-                dst-&gt;append(c);
-        }
-    }
-    dst-&gt;append('&quot;');
-}
-
-} // anonymous namespace
-
-bool InspectorValue::asBoolean(bool*) const
-{
-    return false;
-}
-
-bool InspectorValue::asNumber(double*) const
-{
-    return false;
-}
-
-bool InspectorValue::asNumber(long*) const
-{
-    return false;
-}
-
-bool InspectorValue::asNumber(int*) const
-{
-    return false;
-}
-
-bool InspectorValue::asNumber(unsigned long*) const
-{
-    return false;
-}
-
-bool InspectorValue::asNumber(unsigned int*) const
-{
-    return false;
-}
-
-bool InspectorValue::asString(String*) const
-{
-    return false;
-}
-
-bool InspectorValue::asValue(RefPtr&lt;InspectorValue&gt;* output)
-{
-    *output = this;
-    return true;
-}
-
-bool InspectorValue::asObject(RefPtr&lt;InspectorObject&gt;*)
-{
-    return false;
-}
-
-bool InspectorValue::asArray(RefPtr&lt;InspectorArray&gt;*)
-{
-    return false;
-}
-
-PassRefPtr&lt;InspectorObject&gt; InspectorValue::asObject()
-{
-    return 0;
-}
-
-PassRefPtr&lt;InspectorArray&gt; InspectorValue::asArray()
-{
-    return 0;
-}
-
-PassRefPtr&lt;InspectorValue&gt; InspectorValue::parseJSON(const String&amp; json)
-{
-    const UChar* start = json.characters();
-    const UChar* end = json.characters() + json.length();
-    const UChar *tokenEnd;
-    RefPtr&lt;InspectorValue&gt; value = buildValue(start, end, &amp;tokenEnd, 0);
-    if (!value || tokenEnd != end)
-        return 0;
-    return value.release();
-}
-
-String InspectorValue::toJSONString() const
-{
-    StringBuilder result;
-    result.reserveCapacity(512);
-    writeJSON(&amp;result);
-    return result.toString();
-}
-
-void InspectorValue::writeJSON(StringBuilder* output) const
-{
-    ASSERT(m_type == TypeNull);
-    output-&gt;append(nullString, 4);
-}
-
-bool InspectorBasicValue::asBoolean(bool* output) const
-{
-    if (type() != TypeBoolean)
-        return false;
-    *output = m_boolValue;
-    return true;
-}
-
-bool InspectorBasicValue::asNumber(double* output) const
-{
-    if (type() != TypeNumber)
-        return false;
-    *output = m_doubleValue;
-    return true;
-}
-
-bool InspectorBasicValue::asNumber(long* output) const
-{
-    if (type() != TypeNumber)
-        return false;
-    *output = static_cast&lt;long&gt;(m_doubleValue);
-    return true;
-}
-
-bool InspectorBasicValue::asNumber(int* output) const
-{
-    if (type() != TypeNumber)
-        return false;
-    *output = static_cast&lt;int&gt;(m_doubleValue);
-    return true;
-}
-
-bool InspectorBasicValue::asNumber(unsigned long* output) const
-{
-    if (type() != TypeNumber)
-        return false;
-    *output = static_cast&lt;unsigned long&gt;(m_doubleValue);
-    return true;
-}
-
-bool InspectorBasicValue::asNumber(unsigned int* output) const
-{
-    if (type() != TypeNumber)
-        return false;
-    *output = static_cast&lt;unsigned int&gt;(m_doubleValue);
-    return true;
-}
-
-void InspectorBasicValue::writeJSON(StringBuilder* output) const
-{
-    ASSERT(type() == TypeBoolean || type() == TypeNumber);
-    if (type() == TypeBoolean) {
-        if (m_boolValue)
-            output-&gt;append(trueString, 4);
-        else
-            output-&gt;append(falseString, 5);
-    } else if (type() == TypeNumber) {
-        NumberToLStringBuffer buffer;
-        if (!std::isfinite(m_doubleValue)) {
-            output-&gt;append(nullString, 4);
-            return;
-        }
-        DecimalNumber decimal = m_doubleValue;
-        unsigned length = 0;
-        if (decimal.bufferLengthForStringDecimal() &gt; WTF::NumberToStringBufferLength) {
-            // Not enough room for decimal. Use exponential format.
-            if (decimal.bufferLengthForStringExponential() &gt; WTF::NumberToStringBufferLength) {
-                // Fallback for an abnormal case if it's too little even for exponential.
-                output-&gt;append(&quot;NaN&quot;, 3);
-                return;
-            }
-            length = decimal.toStringExponential(buffer, WTF::NumberToStringBufferLength);
-        } else
-            length = decimal.toStringDecimal(buffer, WTF::NumberToStringBufferLength);
-        output-&gt;append(buffer, length);
-    }
-}
-
-bool InspectorString::asString(String* output) const
-{
-    *output = m_stringValue;
-    return true;
-}
-
-void InspectorString::writeJSON(StringBuilder* output) const
-{
-    ASSERT(type() == TypeString);
-    doubleQuoteString(m_stringValue, output);
-}
-
-InspectorObjectBase::~InspectorObjectBase()
-{
-}
-
-bool InspectorObjectBase::asObject(RefPtr&lt;InspectorObject&gt;* output)
-{
-    COMPILE_ASSERT(sizeof(InspectorObject) == sizeof(InspectorObjectBase), cannot_cast);
-    *output = static_cast&lt;InspectorObject*&gt;(this);
-    return true;
-}
-
-PassRefPtr&lt;InspectorObject&gt; InspectorObjectBase::asObject()
-{
-    return openAccessors();
-}
-
-InspectorObject* InspectorObjectBase::openAccessors()
-{
-    COMPILE_ASSERT(sizeof(InspectorObject) == sizeof(InspectorObjectBase), cannot_cast);
-    return static_cast&lt;InspectorObject*&gt;(this);
-}
-
-bool InspectorObjectBase::getBoolean(const String&amp; name, bool* output) const
-{
-    RefPtr&lt;InspectorValue&gt; value = get(name);
-    if (!value)
-        return false;
-    return value-&gt;asBoolean(output);
-}
-
-bool InspectorObjectBase::getString(const String&amp; name, String* output) const
-{
-    RefPtr&lt;InspectorValue&gt; value = get(name);
-    if (!value)
-        return false;
-    return value-&gt;asString(output);
-}
-
-PassRefPtr&lt;InspectorObject&gt; InspectorObjectBase::getObject(const String&amp; name) const
-{
-    PassRefPtr&lt;InspectorValue&gt; value = get(name);
-    if (!value)
-        return 0;
-    return value-&gt;asObject();
-}
-
-PassRefPtr&lt;InspectorArray&gt; InspectorObjectBase::getArray(const String&amp; name) const
-{
-    PassRefPtr&lt;InspectorValue&gt; value = get(name);
-    if (!value)
-        return 0;
-    return value-&gt;asArray();
-}
-
-PassRefPtr&lt;InspectorValue&gt; InspectorObjectBase::get(const String&amp; name) const
-{
-    Dictionary::const_iterator it = m_data.find(name);
-    if (it == m_data.end())
-        return 0;
-    return it-&gt;value;
-}
-
-void InspectorObjectBase::remove(const String&amp; name)
-{
-    m_data.remove(name);
-    for (size_t i = 0; i &lt; m_order.size(); ++i) {
-        if (m_order[i] == name) {
-            m_order.remove(i);
-            break;
-        }
-    }
-}
-
-void InspectorObjectBase::writeJSON(StringBuilder* output) const
-{
-    output-&gt;append('{');
-    for (size_t i = 0; i &lt; m_order.size(); ++i) {
-        Dictionary::const_iterator it = m_data.find(m_order[i]);
-        ASSERT(it != m_data.end());
-        if (i)
-            output-&gt;append(',');
-        doubleQuoteString(it-&gt;key, output);
-        output-&gt;append(':');
-        it-&gt;value-&gt;writeJSON(output);
-    }
-    output-&gt;append('}');
-}
-
-InspectorObjectBase::InspectorObjectBase()
-    : InspectorValue(TypeObject)
-    , m_data()
-    , m_order()
-{
-}
-
-InspectorArrayBase::~InspectorArrayBase()
-{
-}
-
-bool InspectorArrayBase::asArray(RefPtr&lt;InspectorArray&gt;* output)
-{
-    COMPILE_ASSERT(sizeof(InspectorArrayBase) == sizeof(InspectorArray), cannot_cast);
-    *output = static_cast&lt;InspectorArray*&gt;(this);
-    return true;
-}
-
-PassRefPtr&lt;InspectorArray&gt; InspectorArrayBase::asArray()
-{
-    COMPILE_ASSERT(sizeof(InspectorArrayBase) == sizeof(InspectorArray), cannot_cast);
-    return static_cast&lt;InspectorArray*&gt;(this);
-}
-
-void InspectorArrayBase::writeJSON(StringBuilder* output) const
-{
-    output-&gt;append('[');
-    for (Vector&lt;RefPtr&lt;InspectorValue&gt;&gt;::const_iterator it = m_data.begin(); it != m_data.end(); ++it) {
-        if (it != m_data.begin())
-            output-&gt;append(',');
-        (*it)-&gt;writeJSON(output);
-    }
-    output-&gt;append(']');
-}
-
-InspectorArrayBase::InspectorArrayBase()
-    : InspectorValue(TypeArray)
-    , m_data()
-{
-}
-
-PassRefPtr&lt;InspectorValue&gt; InspectorArrayBase::get(size_t index)
-{
-    ASSERT_WITH_SECURITY_IMPLICATION(index &lt; m_data.size());
-    return m_data[index];
-}
-
-PassRefPtr&lt;InspectorObject&gt; InspectorObject::create()
-{
-    return adoptRef(new InspectorObject);
-}
-
-PassRefPtr&lt;InspectorArray&gt; InspectorArray::create()
-{
-    return adoptRef(new InspectorArray);
-}
-
-PassRefPtr&lt;InspectorValue&gt; InspectorValue::null()
-{
-    return adoptRef(new InspectorValue);
-}
-
-PassRefPtr&lt;InspectorString&gt; InspectorString::create(const String&amp; value)
-{
-    return adoptRef(new InspectorString(value));
-}
-
-PassRefPtr&lt;InspectorString&gt; InspectorString::create(const char* value)
-{
-    return adoptRef(new InspectorString(value));
-}
-
-PassRefPtr&lt;InspectorBasicValue&gt; InspectorBasicValue::create(bool value)
-{
-    return adoptRef(new InspectorBasicValue(value));
-}
-
-PassRefPtr&lt;InspectorBasicValue&gt; InspectorBasicValue::create(int value)
-{
-    return adoptRef(new InspectorBasicValue(value));
-}
-
-PassRefPtr&lt;InspectorBasicValue&gt; InspectorBasicValue::create(double value)
-{
-    return adoptRef(new InspectorBasicValue(value));
-}
-
-} // namespace WebCore
</del></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorValuesh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorValues.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorValues.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorValues.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,368 +0,0 @@
</span><del>-/*
- * Copyright (C) 2009 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef InspectorValues_h
-#define InspectorValues_h
-
-#include &lt;wtf/Forward.h&gt;
-#include &lt;wtf/HashMap.h&gt;
-#include &lt;wtf/RefCounted.h&gt;
-#include &lt;wtf/Vector.h&gt;
-#include &lt;wtf/text/StringHash.h&gt;
-#include &lt;wtf/text/WTFString.h&gt;
-
-namespace WebCore {
-
-class InspectorArray;
-class InspectorObject;
-
-class InspectorValue : public RefCounted&lt;InspectorValue&gt; {
-public:
-    static const int maxDepth = 1000;
-
-    InspectorValue() : m_type(TypeNull) { }
-    virtual ~InspectorValue() { }
-
-    static PassRefPtr&lt;InspectorValue&gt; null();
-
-    typedef enum {
-        TypeNull = 0,
-        TypeBoolean,
-        TypeNumber,
-        TypeString,
-        TypeObject,
-        TypeArray
-    } Type;
-
-    Type type() const { return m_type; }
-
-    bool isNull() const { return m_type == TypeNull; }
-
-    virtual bool asBoolean(bool* output) const;
-    virtual bool asNumber(double* output) const;
-    virtual bool asNumber(long* output) const;
-    virtual bool asNumber(int* output) const;
-    virtual bool asNumber(unsigned long* output) const;
-    virtual bool asNumber(unsigned int* output) const;
-    virtual bool asString(String* output) const;
-    virtual bool asValue(RefPtr&lt;InspectorValue&gt;* output);
-    virtual bool asObject(RefPtr&lt;InspectorObject&gt;* output);
-    virtual bool asArray(RefPtr&lt;InspectorArray&gt;* output);
-    virtual PassRefPtr&lt;InspectorObject&gt; asObject();
-    virtual PassRefPtr&lt;InspectorArray&gt; asArray();
-
-    static PassRefPtr&lt;InspectorValue&gt; parseJSON(const String&amp; json);
-
-    String toJSONString() const;
-    virtual void writeJSON(StringBuilder* output) const;
-
-protected:
-    explicit InspectorValue(Type type) : m_type(type) { }
-
-private:
-    Type m_type;
-};
-
-class InspectorBasicValue : public InspectorValue {
-public:
-
-    static PassRefPtr&lt;InspectorBasicValue&gt; create(bool);
-    static PassRefPtr&lt;InspectorBasicValue&gt; create(int);
-    static PassRefPtr&lt;InspectorBasicValue&gt; create(double);
-
-    virtual bool asBoolean(bool* output) const OVERRIDE;
-    virtual bool asNumber(double* output) const OVERRIDE;
-    virtual bool asNumber(long* output) const OVERRIDE;
-    virtual bool asNumber(int* output) const OVERRIDE;
-    virtual bool asNumber(unsigned long* output) const OVERRIDE;
-    virtual bool asNumber(unsigned* output) const OVERRIDE;
-
-    virtual void writeJSON(StringBuilder* output) const OVERRIDE;
-
-private:
-    explicit InspectorBasicValue(bool value) : InspectorValue(TypeBoolean), m_boolValue(value) { }
-    explicit InspectorBasicValue(int value) : InspectorValue(TypeNumber), m_doubleValue((double)value) { }
-    explicit InspectorBasicValue(double value) : InspectorValue(TypeNumber), m_doubleValue(value) { }
-
-    union {
-        bool m_boolValue;
-        double m_doubleValue;
-    };
-};
-
-class InspectorString : public InspectorValue {
-public:
-    static PassRefPtr&lt;InspectorString&gt; create(const String&amp;);
-    static PassRefPtr&lt;InspectorString&gt; create(const char*);
-
-    virtual bool asString(String* output) const OVERRIDE;
-
-    virtual void writeJSON(StringBuilder* output) const OVERRIDE;
-
-private:
-    explicit InspectorString(const String&amp; value) : InspectorValue(TypeString), m_stringValue(value) { }
-    explicit InspectorString(const char* value) : InspectorValue(TypeString), m_stringValue(value) { }
-
-    String m_stringValue;
-};
-
-class InspectorObjectBase : public InspectorValue {
-private:
-    typedef HashMap&lt;String, RefPtr&lt;InspectorValue&gt;&gt; Dictionary;
-
-public:
-    typedef Dictionary::iterator iterator;
-    typedef Dictionary::const_iterator const_iterator;
-
-    virtual PassRefPtr&lt;InspectorObject&gt; asObject() OVERRIDE;
-    InspectorObject* openAccessors();
-
-protected:
-    virtual ~InspectorObjectBase();
-
-    virtual bool asObject(RefPtr&lt;InspectorObject&gt;* output) OVERRIDE;
-
-    void setBoolean(const String&amp; name, bool);
-    void setNumber(const String&amp; name, double);
-    void setString(const String&amp; name, const String&amp;);
-    void setValue(const String&amp; name, PassRefPtr&lt;InspectorValue&gt;);
-    void setObject(const String&amp; name, PassRefPtr&lt;InspectorObject&gt;);
-    void setArray(const String&amp; name, PassRefPtr&lt;InspectorArray&gt;);
-
-    iterator find(const String&amp; name);
-    const_iterator find(const String&amp; name) const;
-    bool getBoolean(const String&amp; name, bool* output) const;
-    template&lt;class T&gt; bool getNumber(const String&amp; name, T* output) const
-    {
-        RefPtr&lt;InspectorValue&gt; value = get(name);
-        if (!value)
-            return false;
-        return value-&gt;asNumber(output);
-    }
-    bool getString(const String&amp; name, String* output) const;
-    PassRefPtr&lt;InspectorObject&gt; getObject(const String&amp; name) const;
-    PassRefPtr&lt;InspectorArray&gt; getArray(const String&amp; name) const;
-    PassRefPtr&lt;InspectorValue&gt; get(const String&amp; name) const;
-
-    void remove(const String&amp; name);
-
-    virtual void writeJSON(StringBuilder* output) const OVERRIDE;
-
-    iterator begin() { return m_data.begin(); }
-    iterator end() { return m_data.end(); }
-    const_iterator begin() const { return m_data.begin(); }
-    const_iterator end() const { return m_data.end(); }
-
-    int size() const { return m_data.size(); }
-
-protected:
-    InspectorObjectBase();
-
-private:
-    Dictionary m_data;
-    Vector&lt;String&gt; m_order;
-};
-
-class InspectorObject : public InspectorObjectBase {
-public:
-    static PassRefPtr&lt;InspectorObject&gt; create();
-
-    using InspectorObjectBase::asObject;
-
-    using InspectorObjectBase::setBoolean;
-    using InspectorObjectBase::setNumber;
-    using InspectorObjectBase::setString;
-    using InspectorObjectBase::setValue;
-    using InspectorObjectBase::setObject;
-    using InspectorObjectBase::setArray;
-
-    using InspectorObjectBase::find;
-    using InspectorObjectBase::getBoolean;
-    using InspectorObjectBase::getNumber;
-    using InspectorObjectBase::getString;
-    using InspectorObjectBase::getObject;
-    using InspectorObjectBase::getArray;
-    using InspectorObjectBase::get;
-
-    using InspectorObjectBase::remove;
-
-    using InspectorObjectBase::begin;
-    using InspectorObjectBase::end;
-
-    using InspectorObjectBase::size;
-};
-
-
-class InspectorArrayBase : public InspectorValue {
-public:
-    typedef Vector&lt;RefPtr&lt;InspectorValue&gt;&gt;::iterator iterator;
-    typedef Vector&lt;RefPtr&lt;InspectorValue&gt;&gt;::const_iterator const_iterator;
-
-    virtual PassRefPtr&lt;InspectorArray&gt; asArray() OVERRIDE;
-
-    unsigned length() const { return m_data.size(); }
-
-protected:
-    virtual ~InspectorArrayBase();
-
-    virtual bool asArray(RefPtr&lt;InspectorArray&gt;* output) OVERRIDE;
-
-    void pushBoolean(bool);
-    void pushInt(int);
-    void pushNumber(double);
-    void pushString(const String&amp;);
-    void pushValue(PassRefPtr&lt;InspectorValue&gt;);
-    void pushObject(PassRefPtr&lt;InspectorObject&gt;);
-    void pushArray(PassRefPtr&lt;InspectorArray&gt;);
-
-    PassRefPtr&lt;InspectorValue&gt; get(size_t index);
-
-    virtual void writeJSON(StringBuilder* output) const OVERRIDE;
-
-    iterator begin() { return m_data.begin(); }
-    iterator end() { return m_data.end(); }
-    const_iterator begin() const { return m_data.begin(); }
-    const_iterator end() const { return m_data.end(); }
-
-protected:
-    InspectorArrayBase();
-
-private:
-    Vector&lt;RefPtr&lt;InspectorValue&gt;&gt; m_data;
-};
-
-class InspectorArray : public InspectorArrayBase {
-public:
-    static PassRefPtr&lt;InspectorArray&gt; create();
-
-    using InspectorArrayBase::asArray;
-
-    using InspectorArrayBase::pushBoolean;
-    using InspectorArrayBase::pushInt;
-    using InspectorArrayBase::pushNumber;
-    using InspectorArrayBase::pushString;
-    using InspectorArrayBase::pushValue;
-    using InspectorArrayBase::pushObject;
-    using InspectorArrayBase::pushArray;
-
-    using InspectorArrayBase::get;
-
-    using InspectorArrayBase::begin;
-    using InspectorArrayBase::end;
-};
-
-
-inline InspectorObjectBase::iterator InspectorObjectBase::find(const String&amp; name)
-{
-    return m_data.find(name);
-}
-
-inline InspectorObjectBase::const_iterator InspectorObjectBase::find(const String&amp; name) const
-{
-    return m_data.find(name);
-}
-
-inline void InspectorObjectBase::setBoolean(const String&amp; name, bool value)
-{
-    setValue(name, InspectorBasicValue::create(value));
-}
-
-inline void InspectorObjectBase::setNumber(const String&amp; name, double value)
-{
-    setValue(name, InspectorBasicValue::create(value));
-}
-
-inline void InspectorObjectBase::setString(const String&amp; name, const String&amp; value)
-{
-    setValue(name, InspectorString::create(value));
-}
-
-inline void InspectorObjectBase::setValue(const String&amp; name, PassRefPtr&lt;InspectorValue&gt; value)
-{
-    ASSERT(value);
-    if (m_data.set(name, value).isNewEntry)
-        m_order.append(name);
-}
-
-inline void InspectorObjectBase::setObject(const String&amp; name, PassRefPtr&lt;InspectorObject&gt; value)
-{
-    ASSERT(value);
-    if (m_data.set(name, value).isNewEntry)
-        m_order.append(name);
-}
-
-inline void InspectorObjectBase::setArray(const String&amp; name, PassRefPtr&lt;InspectorArray&gt; value)
-{
-    ASSERT(value);
-    if (m_data.set(name, value).isNewEntry)
-        m_order.append(name);
-}
-
-inline void InspectorArrayBase::pushBoolean(bool value)
-{
-    m_data.append(InspectorBasicValue::create(value));
-}
-
-inline void InspectorArrayBase::pushInt(int value)
-{
-    m_data.append(InspectorBasicValue::create(value));
-}
-
-inline void InspectorArrayBase::pushNumber(double value)
-{
-    m_data.append(InspectorBasicValue::create(value));
-}
-
-inline void InspectorArrayBase::pushString(const String&amp; value)
-{
-    m_data.append(InspectorString::create(value));
-}
-
-inline void InspectorArrayBase::pushValue(PassRefPtr&lt;InspectorValue&gt; value)
-{
-    ASSERT(value);
-    m_data.append(value);
-}
-
-inline void InspectorArrayBase::pushObject(PassRefPtr&lt;InspectorObject&gt; value)
-{
-    ASSERT(value);
-    m_data.append(value);
-}
-
-inline void InspectorArrayBase::pushArray(PassRefPtr&lt;InspectorArray&gt; value)
-{
-    ASSERT(value);
-    m_data.append(value);
-}
-
-} // namespace WebCore
-
-#endif // !defined(InspectorValues_h)
</del></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorWebAgentBaseh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/inspector/InspectorWebAgentBase.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorWebAgentBase.h                                (rev 0)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorWebAgentBase.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,51 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All Rights Reserved.
+ * Copyright (C) 2011 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef InspectorWebAgentBase_h
+#define InspectorWebAgentBase_h
+
+#include &quot;InspectorForwarding.h&quot;
+#include &lt;inspector/InspectorAgentBase.h&gt;
+#include &lt;wtf/text/WTFString.h&gt;
+
+namespace WebCore {
+
+class InstrumentingAgents;
+
+class InspectorAgentBase : public Inspector::InspectorAgentBase {
+protected:
+    InspectorAgentBase(const String&amp; name, InstrumentingAgents* instrumentingAgents)
+        : Inspector::InspectorAgentBase(name)
+        , m_instrumentingAgents(instrumentingAgents)
+    {
+    }
+
+    InstrumentingAgents* m_instrumentingAgents;
+};
+    
+} // namespace WebCore
+
+#endif // !defined(InspectorWebAgentBase_h)
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorWorkerAgentcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorWorkerAgent.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorWorkerAgent.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorWorkerAgent.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -36,13 +36,15 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;InspectorForwarding.h&quot;
</span><span class="cx"> #include &quot;InspectorFrontend.h&quot;
</span><del>-#include &quot;InspectorValues.h&quot;
</del><span class="cx"> #include &quot;InstrumentingAgents.h&quot;
</span><span class="cx"> #include &quot;URL.h&quot;
</span><span class="cx"> #include &quot;WorkerGlobalScopeProxy.h&quot;
</span><ins>+#include &lt;inspector/InspectorValues.h&gt;
</ins><span class="cx"> #include &lt;wtf/PassOwnPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/RefPtr.h&gt;
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class InspectorWorkerAgent::WorkerFrontendChannel : public WorkerGlobalScopeProxy::PageInspector {
</span><span class="lines">@@ -107,7 +109,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> InspectorWorkerAgent::InspectorWorkerAgent(InstrumentingAgents* instrumentingAgents)
</span><del>-    : InspectorBaseAgent(ASCIILiteral(&quot;Worker&quot;), instrumentingAgents)
</del><ins>+    : InspectorAgentBase(ASCIILiteral(&quot;Worker&quot;), instrumentingAgents)
</ins><span class="cx">     , m_enabled(false)
</span><span class="cx">     , m_shouldPauseDedicatedWorkerOnStart(false)
</span><span class="cx"> {
</span><span class="lines">@@ -119,7 +121,7 @@
</span><span class="cx">     m_instrumentingAgents-&gt;setInspectorWorkerAgent(0);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorWorkerAgent::didCreateFrontendAndBackend(InspectorFrontendChannel* frontendChannel, InspectorBackendDispatcher* backendDispatcher)
</del><ins>+void InspectorWorkerAgent::didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel* frontendChannel, InspectorBackendDispatcher* backendDispatcher)
</ins><span class="cx"> {
</span><span class="cx">     m_frontendDispatcher = std::make_unique&lt;InspectorWorkerFrontendDispatcher&gt;(frontendChannel);
</span><span class="cx">     m_backendDispatcher = InspectorWorkerBackendDispatcher::create(backendDispatcher, this);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInspectorWorkerAgenth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InspectorWorkerAgent.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InspectorWorkerAgent.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InspectorWorkerAgent.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -31,12 +31,16 @@
</span><span class="cx"> #ifndef InspectorWorkerAgent_h
</span><span class="cx"> #define InspectorWorkerAgent_h
</span><span class="cx"> 
</span><del>-#include &quot;InspectorBaseAgent.h&quot;
</del><ins>+#include &quot;InspectorBackendDispatchers.h&quot;
+#include &quot;InspectorWebAgentBase.h&quot;
</ins><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="cx"> 
</span><ins>+namespace Inspector {
+class InspectorObject;
+}
+
</ins><span class="cx"> namespace WebCore {
</span><del>-class InspectorObject;
</del><span class="cx"> class InspectorWorkerFrontendDispatcher;
</span><span class="cx"> class InstrumentingAgents;
</span><span class="cx"> class URL;
</span><span class="lines">@@ -44,12 +48,12 @@
</span><span class="cx"> 
</span><span class="cx"> typedef String ErrorString;
</span><span class="cx"> 
</span><del>-class InspectorWorkerAgent : public InspectorBaseAgent, public InspectorWorkerBackendDispatcherHandler {
</del><ins>+class InspectorWorkerAgent : public InspectorAgentBase, public InspectorWorkerBackendDispatcherHandler {
</ins><span class="cx"> public:
</span><span class="cx">     static PassOwnPtr&lt;InspectorWorkerAgent&gt; create(InstrumentingAgents*);
</span><span class="cx">     ~InspectorWorkerAgent();
</span><span class="cx"> 
</span><del>-    virtual void didCreateFrontendAndBackend(InspectorFrontendChannel*, InspectorBackendDispatcher*) OVERRIDE;
</del><ins>+    virtual void didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel*, Inspector::InspectorBackendDispatcher*) OVERRIDE;
</ins><span class="cx">     virtual void willDestroyFrontendAndBackend() OVERRIDE;
</span><span class="cx"> 
</span><span class="cx">     // Called from InspectorInstrumentation
</span><span class="lines">@@ -63,7 +67,7 @@
</span><span class="cx">     virtual void canInspectWorkers(ErrorString*, bool*);
</span><span class="cx">     virtual void connectToWorker(ErrorString*, int workerId);
</span><span class="cx">     virtual void disconnectFromWorker(ErrorString*, int workerId);
</span><del>-    virtual void sendMessageToWorker(ErrorString*, int workerId, const RefPtr&lt;InspectorObject&gt;&amp; message);
</del><ins>+    virtual void sendMessageToWorker(ErrorString*, int workerId, const RefPtr&lt;Inspector::InspectorObject&gt;&amp; message);
</ins><span class="cx">     virtual void setAutoconnectToWorkers(ErrorString*, bool value);
</span><span class="cx"> 
</span><span class="cx"> private:
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorInstrumentingAgentscpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/InstrumentingAgents.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/InstrumentingAgents.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/InstrumentingAgents.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -40,6 +40,8 @@
</span><span class="cx"> #include &quot;WorkerInspectorController.h&quot;
</span><span class="cx"> #include &lt;wtf/MainThread.h&gt;
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> InstrumentingAgents::InstrumentingAgents()
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorNetworkResourcesDatacpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/NetworkResourcesData.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/NetworkResourcesData.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/NetworkResourcesData.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -46,6 +46,8 @@
</span><span class="cx"> static size_t maximumSingleResourceContentSize = 10 * 1000 * 1000;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorPageConsoleAgentcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/PageConsoleAgent.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/PageConsoleAgent.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/PageConsoleAgent.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -40,8 +40,9 @@
</span><span class="cx"> #include &quot;InspectorAgent.h&quot;
</span><span class="cx"> #include &quot;InspectorDOMAgent.h&quot;
</span><span class="cx"> #include &quot;Node.h&quot;
</span><del>-#include &quot;ScriptObject.h&quot;
</del><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> PageConsoleAgent::PageConsoleAgent(InstrumentingAgents* instrumentingAgents, InspectorAgent* inspectorAgent, InjectedScriptManager* injectedScriptManager, InspectorDOMAgent* domAgent)
</span><span class="lines">@@ -66,7 +67,7 @@
</span><span class="cx"> class InspectableNode : public InjectedScriptHost::InspectableObject {
</span><span class="cx"> public:
</span><span class="cx">     explicit InspectableNode(Node* node) : m_node(node) { }
</span><del>-    virtual ScriptValue get(JSC::ExecState* state)
</del><ins>+    virtual Deprecated::ScriptValue get(JSC::ExecState* state)
</ins><span class="cx">     {
</span><span class="cx">         return InjectedScriptHost::nodeAsScriptValue(state, m_node);
</span><span class="cx">     }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorPageDebuggerAgentcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/PageDebuggerAgent.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/PageDebuggerAgent.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/PageDebuggerAgent.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -41,6 +41,8 @@
</span><span class="cx"> #include &quot;PageConsole.h&quot;
</span><span class="cx"> #include &quot;PageScriptDebugServer.h&quot;
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> PassOwnPtr&lt;PageDebuggerAgent&gt; PageDebuggerAgent::create(InstrumentingAgents* instrumentingAgents, InspectorPageAgent* pageAgent, InjectedScriptManager* injectedScriptManager, InspectorOverlay* overlay)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorPageDebuggerAgenth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/PageDebuggerAgent.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/PageDebuggerAgent.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/PageDebuggerAgent.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -32,6 +32,7 @@
</span><span class="cx"> #define PageDebuggerAgent_h
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(JAVASCRIPT_DEBUGGER) &amp;&amp; ENABLE(INSPECTOR)
</span><ins>+
</ins><span class="cx"> #include &quot;InspectorDebuggerAgent.h&quot;
</span><span class="cx"> #include &quot;PageScriptDebugServer.h&quot;
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorPageRuntimeAgentcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/PageRuntimeAgent.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/PageRuntimeAgent.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/PageRuntimeAgent.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -45,8 +45,10 @@
</span><span class="cx"> #include &quot;ScriptController.h&quot;
</span><span class="cx"> #include &quot;SecurityOrigin.h&quot;
</span><span class="cx"> 
</span><del>-using WebCore::TypeBuilder::Runtime::ExecutionContextDescription;
</del><ins>+using Inspector::TypeBuilder::Runtime::ExecutionContextDescription;
</ins><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> PageRuntimeAgent::PageRuntimeAgent(InstrumentingAgents* instrumentingAgents, InjectedScriptManager* injectedScriptManager, Page* page, InspectorPageAgent* pageAgent)
</span><span class="lines">@@ -63,7 +65,7 @@
</span><span class="cx">     m_instrumentingAgents-&gt;setPageRuntimeAgent(0);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void PageRuntimeAgent::didCreateFrontendAndBackend(InspectorFrontendChannel* frontendChannel, InspectorBackendDispatcher* backendDispatcher)
</del><ins>+void PageRuntimeAgent::didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel* frontendChannel, InspectorBackendDispatcher* backendDispatcher)
</ins><span class="cx"> {
</span><span class="cx">     m_frontendDispatcher = std::make_unique&lt;InspectorRuntimeFrontendDispatcher&gt;(frontendChannel);
</span><span class="cx">     m_backendDispatcher = InspectorRuntimeBackendDispatcher::create(backendDispatcher, this);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorPageRuntimeAgenth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/PageRuntimeAgent.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/PageRuntimeAgent.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/PageRuntimeAgent.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -51,7 +51,7 @@
</span><span class="cx">         return adoptPtr(new PageRuntimeAgent(instrumentingAgents, injectedScriptManager, page, pageAgent));
</span><span class="cx">     }
</span><span class="cx">     virtual ~PageRuntimeAgent();
</span><del>-    virtual void didCreateFrontendAndBackend(InspectorFrontendChannel*, InspectorBackendDispatcher*) OVERRIDE;
</del><ins>+    virtual void didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel*, Inspector::InspectorBackendDispatcher*) OVERRIDE;
</ins><span class="cx">     virtual void willDestroyFrontendAndBackend() OVERRIDE;
</span><span class="cx">     virtual void enable(ErrorString*);
</span><span class="cx">     virtual void disable(ErrorString*);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorScriptArgumentscpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/ScriptArguments.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/ScriptArguments.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/ScriptArguments.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -31,16 +31,16 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;ScriptArguments.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;ScriptValue.h&quot;
</del><ins>+#include &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;ScriptArguments&gt; ScriptArguments::create(JSC::ExecState* scriptState, Vector&lt;ScriptValue&gt;&amp; arguments)
</del><ins>+PassRefPtr&lt;ScriptArguments&gt; ScriptArguments::create(JSC::ExecState* scriptState, Vector&lt;Deprecated::ScriptValue&gt;&amp; arguments)
</ins><span class="cx"> {
</span><span class="cx">     return adoptRef(new ScriptArguments(scriptState, arguments));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-ScriptArguments::ScriptArguments(JSC::ExecState* scriptState, Vector&lt;ScriptValue&gt;&amp; arguments)
</del><ins>+ScriptArguments::ScriptArguments(JSC::ExecState* scriptState, Vector&lt;Deprecated::ScriptValue&gt;&amp; arguments)
</ins><span class="cx">     : m_globalObject(scriptState-&gt;vm(), scriptState-&gt;lexicalGlobalObject())
</span><span class="cx"> {
</span><span class="cx">     m_arguments.swap(arguments);
</span><span class="lines">@@ -50,7 +50,7 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-const ScriptValue &amp;ScriptArguments::argumentAt(size_t index) const
</del><ins>+const Deprecated::ScriptValue &amp;ScriptArguments::argumentAt(size_t index) const
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(m_arguments.size() &gt; index);
</span><span class="cx">     return m_arguments[index];
</span><span class="lines">@@ -68,7 +68,7 @@
</span><span class="cx">     if (!argumentCount())
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    const ScriptValue&amp; value = argumentAt(0);
</del><ins>+    const Deprecated::ScriptValue&amp; value = argumentAt(0);
</ins><span class="cx">     if (checkForNullOrUndefined &amp;&amp; (value.isNull() || value.isUndefined()))
</span><span class="cx">         return false;
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorScriptArgumentsh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/ScriptArguments.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/ScriptArguments.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/ScriptArguments.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,10 +1,10 @@
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (c) 2010 Google Inc. All rights reserved.
</span><del>- * 
</del><ins>+ *
</ins><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions are
</span><span class="cx">  * met:
</span><del>- * 
</del><ins>+ *
</ins><span class="cx">  *     * Redistributions of source code must retain the above copyright
</span><span class="cx">  * notice, this list of conditions and the following disclaimer.
</span><span class="cx">  *     * Redistributions in binary form must reproduce the above
</span><span class="lines">@@ -14,7 +14,7 @@
</span><span class="cx">  *     * Neither the name of Google Inc. nor the names of its
</span><span class="cx">  * contributors may be used to endorse or promote products derived from
</span><span class="cx">  * this software without specific prior written permission.
</span><del>- * 
</del><ins>+ *
</ins><span class="cx">  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
</span><span class="cx">  * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
</span><span class="cx">  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
</span><span class="lines">@@ -37,6 +37,10 @@
</span><span class="cx"> #include &lt;wtf/Vector.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><ins>+namespace Deprecated {
+class ScriptValue;
+}
+
</ins><span class="cx"> namespace JSC {
</span><span class="cx"> class ExecState;
</span><span class="cx"> class JSGlobalObject;
</span><span class="lines">@@ -44,15 +48,13 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-class ScriptValue;
-
</del><span class="cx"> class ScriptArguments : public RefCounted&lt;ScriptArguments&gt; {
</span><span class="cx"> public:
</span><del>-    static PassRefPtr&lt;ScriptArguments&gt; create(JSC::ExecState*, Vector&lt;ScriptValue&gt;&amp; arguments);
</del><ins>+    static PassRefPtr&lt;ScriptArguments&gt; create(JSC::ExecState*, Vector&lt;Deprecated::ScriptValue&gt;&amp; arguments);
</ins><span class="cx"> 
</span><span class="cx">     ~ScriptArguments();
</span><span class="cx"> 
</span><del>-    const ScriptValue&amp; argumentAt(size_t) const;
</del><ins>+    const Deprecated::ScriptValue&amp; argumentAt(size_t) const;
</ins><span class="cx">     size_t argumentCount() const { return m_arguments.size(); }
</span><span class="cx"> 
</span><span class="cx">     JSC::ExecState* globalState() const;
</span><span class="lines">@@ -61,10 +63,10 @@
</span><span class="cx">     bool isEqual(ScriptArguments*) const;
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    ScriptArguments(JSC::ExecState*, Vector&lt;ScriptValue&gt;&amp; arguments);
</del><ins>+    ScriptArguments(JSC::ExecState*, Vector&lt;Deprecated::ScriptValue&gt;&amp; arguments);
</ins><span class="cx"> 
</span><span class="cx">     JSC::Strong&lt;JSC::JSGlobalObject&gt; m_globalObject;
</span><del>-    Vector&lt;ScriptValue&gt; m_arguments;
</del><ins>+    Vector&lt;Deprecated::ScriptValue&gt; m_arguments;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorScriptCallFramecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/ScriptCallFrame.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/ScriptCallFrame.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/ScriptCallFrame.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -32,9 +32,11 @@
</span><span class="cx"> #include &quot;ScriptCallFrame.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;InspectorFrontend.h&quot;
</span><del>-#include &quot;InspectorValues.h&quot;
</del><ins>+#include &lt;inspector/InspectorValues.h&gt;
</ins><span class="cx"> #include &lt;wtf/RefPtr.h&gt;
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> ScriptCallFrame::ScriptCallFrame(const String&amp; functionName, const String&amp; scriptName, unsigned lineNumber, unsigned column)
</span><span class="lines">@@ -58,9 +60,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><del>-PassRefPtr&lt;TypeBuilder::Console::CallFrame&gt; ScriptCallFrame::buildInspectorObject() const
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::Console::CallFrame&gt; ScriptCallFrame::buildInspectorObject() const
</ins><span class="cx"> {
</span><del>-    return TypeBuilder::Console::CallFrame::create()
</del><ins>+    return Inspector::TypeBuilder::Console::CallFrame::create()
</ins><span class="cx">         .setFunctionName(m_functionName)
</span><span class="cx">         .setUrl(m_scriptName)
</span><span class="cx">         .setLineNumber(m_lineNumber)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorScriptCallFrameh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/ScriptCallFrame.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/ScriptCallFrame.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/ScriptCallFrame.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -32,16 +32,18 @@
</span><span class="cx"> #define ScriptCallFrame_h
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><del>-#include &quot;InspectorTypeBuilder.h&quot;
</del><ins>+#include &quot;InspectorWebTypeBuilders.h&quot;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><ins>+namespace Inspector {
+class InspectorObject;
+}
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-class InspectorObject;
-
</del><span class="cx"> class ScriptCallFrame  {
</span><span class="cx"> public:
</span><span class="cx">     ScriptCallFrame(const String&amp; functionName, const String&amp; scriptName, unsigned lineNumber, unsigned column);
</span><span class="lines">@@ -55,7 +57,7 @@
</span><span class="cx">     bool isEqual(const ScriptCallFrame&amp;) const;
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><del>-    PassRefPtr&lt;TypeBuilder::Console::CallFrame&gt; buildInspectorObject() const;
</del><ins>+    PassRefPtr&lt;Inspector::TypeBuilder::Console::CallFrame&gt; buildInspectorObject() const;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> private:
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorScriptCallStackcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/ScriptCallStack.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/ScriptCallStack.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/ScriptCallStack.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -31,9 +31,11 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;ScriptCallStack.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;InspectorTypeBuilder.h&quot;
-#include &quot;InspectorValues.h&quot;
</del><ins>+#include &quot;InspectorWebTypeBuilders.h&quot;
+#include &lt;inspector/InspectorValues.h&gt;
</ins><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> PassRefPtr&lt;ScriptCallStack&gt; ScriptCallStack::create(Vector&lt;ScriptCallFrame&gt;&amp; frames)
</span><span class="lines">@@ -79,9 +81,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><del>-PassRefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::Console::CallFrame&gt;&gt; ScriptCallStack::buildInspectorArray() const
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Console::CallFrame&gt;&gt; ScriptCallStack::buildInspectorArray() const
</ins><span class="cx"> {
</span><del>-    RefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::Console::CallFrame&gt;&gt; frames = TypeBuilder::Array&lt;TypeBuilder::Console::CallFrame&gt;::create();
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Console::CallFrame&gt;&gt; frames = Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Console::CallFrame&gt;::create();
</ins><span class="cx">     for (size_t i = 0; i &lt; m_frames.size(); i++)
</span><span class="cx">         frames-&gt;addItem(m_frames.at(i).buildInspectorObject());
</span><span class="cx">     return frames;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorScriptCallStackh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/ScriptCallStack.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/ScriptCallStack.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/ScriptCallStack.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -32,7 +32,7 @@
</span><span class="cx"> #define ScriptCallStack_h
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><del>-#include &quot;InspectorTypeBuilder.h&quot;
</del><ins>+#include &quot;InspectorWebTypeBuilders.h&quot;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #include &quot;ScriptCallFrame.h&quot;
</span><span class="lines">@@ -42,8 +42,6 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-class InspectorArray;
-
</del><span class="cx"> class ScriptCallStack : public RefCounted&lt;ScriptCallStack&gt; {
</span><span class="cx"> public:
</span><span class="cx">     static const size_t maxCallStackSizeToCapture = 200;
</span><span class="lines">@@ -58,7 +56,7 @@
</span><span class="cx">     bool isEqual(ScriptCallStack*) const;
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><del>-    PassRefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::Console::CallFrame&gt;&gt; buildInspectorArray() const;
</del><ins>+    PassRefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Console::CallFrame&gt;&gt; buildInspectorArray() const;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> private:
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorScriptDebugListenerh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/ScriptDebugListener.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/ScriptDebugListener.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/ScriptDebugListener.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -37,9 +37,12 @@
</span><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><del>-namespace WebCore {
</del><ins>+namespace Deprecated {
</ins><span class="cx"> class ScriptValue;
</span><ins>+}
</ins><span class="cx"> 
</span><ins>+namespace WebCore {
+
</ins><span class="cx"> class ScriptDebugListener {
</span><span class="cx"> public:
</span><span class="cx">     class Script {
</span><span class="lines">@@ -68,7 +71,7 @@
</span><span class="cx"> 
</span><span class="cx">     virtual void didParseSource(SourceID, const Script&amp;) = 0;
</span><span class="cx">     virtual void failedToParseSource(const String&amp; url, const String&amp; data, int firstLine, int errorLine, const String&amp; errorMessage) = 0;
</span><del>-    virtual void didPause(JSC::ExecState*, const ScriptValue&amp; callFrames, const ScriptValue&amp; exception) = 0;
</del><ins>+    virtual void didPause(JSC::ExecState*, const Deprecated::ScriptValue&amp; callFrames, const Deprecated::ScriptValue&amp; exception) = 0;
</ins><span class="cx">     virtual void didContinue() = 0;
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorTimelineRecordFactorycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/TimelineRecordFactory.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/TimelineRecordFactory.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/TimelineRecordFactory.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -36,15 +36,17 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;Event.h&quot;
</span><span class="cx"> #include &quot;FloatQuad.h&quot;
</span><del>-#include &quot;InspectorValues.h&quot;
</del><span class="cx"> #include &quot;IntRect.h&quot;
</span><span class="cx"> #include &quot;LayoutRect.h&quot;
</span><span class="cx"> #include &quot;ResourceRequest.h&quot;
</span><span class="cx"> #include &quot;ResourceResponse.h&quot;
</span><span class="cx"> #include &quot;ScriptCallStack.h&quot;
</span><span class="cx"> #include &quot;ScriptCallStackFactory.h&quot;
</span><ins>+#include &lt;inspector/InspectorValues.h&gt;
</ins><span class="cx"> #include &lt;wtf/CurrentTime.h&gt;
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> PassRefPtr&lt;InspectorObject&gt; TimelineRecordFactory::createGenericRecord(double startTime, int maxCallStackDepth)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorTimelineRecordFactoryh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/TimelineRecordFactory.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/TimelineRecordFactory.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/TimelineRecordFactory.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -31,9 +31,8 @@
</span><span class="cx"> #ifndef TimelineRecordFactory_h
</span><span class="cx"> #define TimelineRecordFactory_h
</span><span class="cx"> 
</span><del>-#include &quot;InspectorValues.h&quot;
</del><span class="cx"> #include &quot;URL.h&quot;
</span><del>-#include &quot;LayoutRect.h&quot;
</del><ins>+#include &lt;inspector/InspectorValues.h&gt;
</ins><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -41,64 +40,62 @@
</span><span class="cx"> 
</span><span class="cx">     class Event;
</span><span class="cx">     class FloatQuad;
</span><del>-    class InspectorObject;
-    class IntRect;
</del><span class="cx">     class ResourceRequest;
</span><span class="cx">     class ResourceResponse;
</span><span class="cx"> 
</span><span class="cx">     class TimelineRecordFactory {
</span><span class="cx">     public:
</span><del>-        static PassRefPtr&lt;InspectorObject&gt; createGenericRecord(double startTime, int maxCallStackDepth);
-        static PassRefPtr&lt;InspectorObject&gt; createBackgroundRecord(double startTime, const String&amp; thread);
</del><ins>+        static PassRefPtr&lt;Inspector::InspectorObject&gt; createGenericRecord(double startTime, int maxCallStackDepth);
+        static PassRefPtr&lt;Inspector::InspectorObject&gt; createBackgroundRecord(double startTime, const String&amp; thread);
</ins><span class="cx"> 
</span><del>-        static PassRefPtr&lt;InspectorObject&gt; createGCEventData(const size_t usedHeapSizeDelta);
</del><ins>+        static PassRefPtr&lt;Inspector::InspectorObject&gt; createGCEventData(const size_t usedHeapSizeDelta);
</ins><span class="cx"> 
</span><del>-        static PassRefPtr&lt;InspectorObject&gt; createFunctionCallData(const String&amp; scriptName, int scriptLine);
</del><ins>+        static PassRefPtr&lt;Inspector::InspectorObject&gt; createFunctionCallData(const String&amp; scriptName, int scriptLine);
</ins><span class="cx"> 
</span><del>-        static PassRefPtr&lt;InspectorObject&gt; createEventDispatchData(const Event&amp;);
</del><ins>+        static PassRefPtr&lt;Inspector::InspectorObject&gt; createEventDispatchData(const Event&amp;);
</ins><span class="cx"> 
</span><del>-        static PassRefPtr&lt;InspectorObject&gt; createGenericTimerData(int timerId);
</del><ins>+        static PassRefPtr&lt;Inspector::InspectorObject&gt; createGenericTimerData(int timerId);
</ins><span class="cx"> 
</span><del>-        static PassRefPtr&lt;InspectorObject&gt; createTimerInstallData(int timerId, int timeout, bool singleShot);
</del><ins>+        static PassRefPtr&lt;Inspector::InspectorObject&gt; createTimerInstallData(int timerId, int timeout, bool singleShot);
</ins><span class="cx"> 
</span><del>-        static PassRefPtr&lt;InspectorObject&gt; createXHRReadyStateChangeData(const String&amp; url, int readyState);
</del><ins>+        static PassRefPtr&lt;Inspector::InspectorObject&gt; createXHRReadyStateChangeData(const String&amp; url, int readyState);
</ins><span class="cx"> 
</span><del>-        static PassRefPtr&lt;InspectorObject&gt; createXHRLoadData(const String&amp; url);
</del><ins>+        static PassRefPtr&lt;Inspector::InspectorObject&gt; createXHRLoadData(const String&amp; url);
</ins><span class="cx"> 
</span><del>-        static PassRefPtr&lt;InspectorObject&gt; createEvaluateScriptData(const String&amp;, double lineNumber);
</del><ins>+        static PassRefPtr&lt;Inspector::InspectorObject&gt; createEvaluateScriptData(const String&amp;, double lineNumber);
</ins><span class="cx"> 
</span><del>-        static PassRefPtr&lt;InspectorObject&gt; createTimeStampData(const String&amp;);
</del><ins>+        static PassRefPtr&lt;Inspector::InspectorObject&gt; createTimeStampData(const String&amp;);
</ins><span class="cx"> 
</span><del>-        static PassRefPtr&lt;InspectorObject&gt; createResourceSendRequestData(const String&amp; requestId, const ResourceRequest&amp;);
</del><ins>+        static PassRefPtr&lt;Inspector::InspectorObject&gt; createResourceSendRequestData(const String&amp; requestId, const ResourceRequest&amp;);
</ins><span class="cx"> 
</span><del>-        static PassRefPtr&lt;InspectorObject&gt; createScheduleResourceRequestData(const String&amp;);
</del><ins>+        static PassRefPtr&lt;Inspector::InspectorObject&gt; createScheduleResourceRequestData(const String&amp;);
</ins><span class="cx"> 
</span><del>-        static PassRefPtr&lt;InspectorObject&gt; createResourceReceiveResponseData(const String&amp; requestId, const ResourceResponse&amp;);
</del><ins>+        static PassRefPtr&lt;Inspector::InspectorObject&gt; createResourceReceiveResponseData(const String&amp; requestId, const ResourceResponse&amp;);
</ins><span class="cx"> 
</span><del>-        static PassRefPtr&lt;InspectorObject&gt; createReceiveResourceData(const String&amp; requestId, int length);
</del><ins>+        static PassRefPtr&lt;Inspector::InspectorObject&gt; createReceiveResourceData(const String&amp; requestId, int length);
</ins><span class="cx"> 
</span><del>-        static PassRefPtr&lt;InspectorObject&gt; createResourceFinishData(const String&amp; requestId, bool didFail, double finishTime);
</del><ins>+        static PassRefPtr&lt;Inspector::InspectorObject&gt; createResourceFinishData(const String&amp; requestId, bool didFail, double finishTime);
</ins><span class="cx"> 
</span><del>-        static PassRefPtr&lt;InspectorObject&gt; createLayoutData(unsigned dirtyObjects, unsigned totalObjects, bool partialLayout);
</del><ins>+        static PassRefPtr&lt;Inspector::InspectorObject&gt; createLayoutData(unsigned dirtyObjects, unsigned totalObjects, bool partialLayout);
</ins><span class="cx"> 
</span><del>-        static PassRefPtr&lt;InspectorObject&gt; createDecodeImageData(const String&amp; imageType);
</del><ins>+        static PassRefPtr&lt;Inspector::InspectorObject&gt; createDecodeImageData(const String&amp; imageType);
</ins><span class="cx"> 
</span><del>-        static PassRefPtr&lt;InspectorObject&gt; createResizeImageData(bool shouldCache);
</del><ins>+        static PassRefPtr&lt;Inspector::InspectorObject&gt; createResizeImageData(bool shouldCache);
</ins><span class="cx"> 
</span><del>-        static PassRefPtr&lt;InspectorObject&gt; createMarkData(bool isMainFrame);
</del><ins>+        static PassRefPtr&lt;Inspector::InspectorObject&gt; createMarkData(bool isMainFrame);
</ins><span class="cx"> 
</span><del>-        static PassRefPtr&lt;InspectorObject&gt; createParseHTMLData(unsigned startLine);
</del><ins>+        static PassRefPtr&lt;Inspector::InspectorObject&gt; createParseHTMLData(unsigned startLine);
</ins><span class="cx"> 
</span><del>-        static PassRefPtr&lt;InspectorObject&gt; createAnimationFrameData(int callbackId);
</del><ins>+        static PassRefPtr&lt;Inspector::InspectorObject&gt; createAnimationFrameData(int callbackId);
</ins><span class="cx"> 
</span><del>-        static PassRefPtr&lt;InspectorObject&gt; createPaintData(const FloatQuad&amp;);
</del><ins>+        static PassRefPtr&lt;Inspector::InspectorObject&gt; createPaintData(const FloatQuad&amp;);
</ins><span class="cx"> 
</span><del>-        static void appendLayoutRoot(InspectorObject* data, const FloatQuad&amp;);
</del><ins>+        static void appendLayoutRoot(Inspector::InspectorObject* data, const FloatQuad&amp;);
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEB_SOCKETS)
</span><del>-        static inline PassRefPtr&lt;InspectorObject&gt; createWebSocketCreateData(unsigned long identifier, const URL&amp; url, const String&amp; protocol)
</del><ins>+        static inline PassRefPtr&lt;Inspector::InspectorObject&gt; createWebSocketCreateData(unsigned long identifier, const URL&amp; url, const String&amp; protocol)
</ins><span class="cx">         {
</span><del>-            RefPtr&lt;InspectorObject&gt; data = InspectorObject::create();
</del><ins>+            RefPtr&lt;Inspector::InspectorObject&gt; data = Inspector::InspectorObject::create();
</ins><span class="cx">             data-&gt;setNumber(&quot;identifier&quot;, identifier);
</span><span class="cx">             data-&gt;setString(&quot;url&quot;, url.string());
</span><span class="cx">             if (!protocol.isNull())
</span><span class="lines">@@ -106,9 +103,9 @@
</span><span class="cx">             return data.release();
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        static inline PassRefPtr&lt;InspectorObject&gt; createGenericWebSocketData(unsigned long identifier)
</del><ins>+        static inline PassRefPtr&lt;Inspector::InspectorObject&gt; createGenericWebSocketData(unsigned long identifier)
</ins><span class="cx">         {
</span><del>-            RefPtr&lt;InspectorObject&gt; data = InspectorObject::create();
</del><ins>+            RefPtr&lt;Inspector::InspectorObject&gt; data = Inspector::InspectorObject::create();
</ins><span class="cx">             data-&gt;setNumber(&quot;identifier&quot;, identifier);
</span><span class="cx">             return data.release();
</span><span class="cx">         }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorWorkerConsoleAgentcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/WorkerConsoleAgent.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/WorkerConsoleAgent.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/WorkerConsoleAgent.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -34,6 +34,8 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;WorkerConsoleAgent.h&quot;
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> WorkerConsoleAgent::WorkerConsoleAgent(InstrumentingAgents* instrumentingAgents, InjectedScriptManager* injectedScriptManager)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorWorkerDebuggerAgentcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/WorkerDebuggerAgent.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/WorkerDebuggerAgent.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/WorkerDebuggerAgent.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -38,6 +38,8 @@
</span><span class="cx"> #include &quot;WorkerThread.h&quot;
</span><span class="cx"> #include &lt;wtf/MessageQueue.h&gt;
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> namespace {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorWorkerInspectorControllercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/WorkerInspectorController.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/WorkerInspectorController.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/WorkerInspectorController.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -51,8 +51,11 @@
</span><span class="cx"> #include &quot;WorkerReportingProxy.h&quot;
</span><span class="cx"> #include &quot;WorkerRuntimeAgent.h&quot;
</span><span class="cx"> #include &quot;WorkerThread.h&quot;
</span><ins>+#include &lt;inspector/InspectorBackendDispatcher.h&gt;
</ins><span class="cx"> #include &lt;wtf/PassOwnPtr.h&gt;
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> namespace {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorWorkerInspectorControllerh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/WorkerInspectorController.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/WorkerInspectorController.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/WorkerInspectorController.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -33,19 +33,21 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><span class="cx"> 
</span><del>-#include &quot;InspectorAgentRegistry.h&quot;
-#include &quot;InspectorBaseAgent.h&quot;
</del><ins>+#include &quot;InspectorWebAgentBase.h&quot;
+#include &lt;inspector/InspectorAgentRegistry.h&gt;
</ins><span class="cx"> #include &lt;wtf/FastMalloc.h&gt;
</span><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><span class="cx"> #include &lt;wtf/Noncopyable.h&gt;
</span><span class="cx"> #include &lt;wtf/OwnPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/RefPtr.h&gt;
</span><span class="cx"> 
</span><ins>+namespace Inspector {
+class InspectorBackendDispatcher;
+}
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class InjectedScriptManager;
</span><del>-class InspectorBackendDispatcher;
-class InspectorFrontendChannel;
</del><span class="cx"> class InspectorInstrumentation;
</span><span class="cx"> class InspectorRuntimeAgent;
</span><span class="cx"> class InstrumentingAgents;
</span><span class="lines">@@ -72,9 +74,9 @@
</span><span class="cx">     RefPtr&lt;InstrumentingAgents&gt; m_instrumentingAgents;
</span><span class="cx">     OwnPtr&lt;InjectedScriptManager&gt; m_injectedScriptManager;
</span><span class="cx">     InspectorRuntimeAgent* m_runtimeAgent;
</span><del>-    InspectorAgentRegistry m_agents;
</del><ins>+    Inspector::InspectorAgentRegistry m_agents;
</ins><span class="cx">     OwnPtr&lt;InspectorFrontendChannel&gt; m_frontendChannel;
</span><del>-    RefPtr&lt;InspectorBackendDispatcher&gt; m_backendDispatcher;
</del><ins>+    RefPtr&lt;Inspector::InspectorBackendDispatcher&gt; m_backendDispatcher;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorWorkerRuntimeAgentcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/WorkerRuntimeAgent.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/WorkerRuntimeAgent.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/WorkerRuntimeAgent.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -42,6 +42,8 @@
</span><span class="cx"> #include &quot;WorkerRunLoop.h&quot;
</span><span class="cx"> #include &quot;WorkerThread.h&quot;
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> WorkerRuntimeAgent::WorkerRuntimeAgent(InstrumentingAgents* instrumentingAgents, InjectedScriptManager* injectedScriptManager, WorkerGlobalScope* workerGlobalScope)
</span><span class="lines">@@ -57,7 +59,7 @@
</span><span class="cx">     m_instrumentingAgents-&gt;setWorkerRuntimeAgent(0);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WorkerRuntimeAgent::didCreateFrontendAndBackend(InspectorFrontendChannel*, InspectorBackendDispatcher* backendDispatcher)
</del><ins>+void WorkerRuntimeAgent::didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel*, InspectorBackendDispatcher* backendDispatcher)
</ins><span class="cx"> {
</span><span class="cx">     m_backendDispatcher = InspectorRuntimeBackendDispatcher::create(backendDispatcher, this);
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorWorkerRuntimeAgenth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/WorkerRuntimeAgent.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/WorkerRuntimeAgent.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/WorkerRuntimeAgent.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx">     }
</span><span class="cx">     virtual ~WorkerRuntimeAgent();
</span><span class="cx"> 
</span><del>-    virtual void didCreateFrontendAndBackend(InspectorFrontendChannel*, InspectorBackendDispatcher*) OVERRIDE;
</del><ins>+    virtual void didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel*, Inspector::InspectorBackendDispatcher*) OVERRIDE;
</ins><span class="cx">     virtual void willDestroyFrontendAndBackend() OVERRIDE;
</span><span class="cx"> 
</span><span class="cx">     // Protocol commands.
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreinspectorprotocolRuntimejson"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/inspector/protocol/Runtime.json (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/inspector/protocol/Runtime.json        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/inspector/protocol/Runtime.json        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -82,6 +82,11 @@
</span><span class="cx">             &quot;description&quot;: &quot;Id of an execution context.&quot;
</span><span class="cx">         },
</span><span class="cx">         {
</span><ins>+            &quot;id&quot;: &quot;RuntimeFrameId&quot;,
+            &quot;type&quot;: &quot;string&quot;,
+            &quot;description&quot;: &quot;Unique frame identifier. FIXME: This duplicates Network.FrameId.&quot;
+        },
+        {
</ins><span class="cx">             &quot;id&quot;: &quot;ExecutionContextDescription&quot;,
</span><span class="cx">             &quot;type&quot;: &quot;object&quot;,
</span><span class="cx">             &quot;description&quot;: &quot;Description of an isolated world.&quot;,
</span><span class="lines">@@ -89,7 +94,7 @@
</span><span class="cx">                 { &quot;name&quot;: &quot;id&quot;, &quot;$ref&quot;: &quot;ExecutionContextId&quot;, &quot;description&quot;: &quot;Unique id of the execution context. It can be used to specify in which execution context script evaluation should be performed.&quot; },
</span><span class="cx">                 { &quot;name&quot;: &quot;isPageContext&quot;, &quot;type&quot;: &quot;boolean&quot;, &quot;description&quot;: &quot;True if this is a context where inpspected web page scripts run. False if it is a content script isolated context.&quot; },
</span><span class="cx">                 { &quot;name&quot;: &quot;name&quot;, &quot;type&quot;: &quot;string&quot;, &quot;description&quot;: &quot;Human readable name describing given context.&quot;},
</span><del>-                { &quot;name&quot;: &quot;frameId&quot;, &quot;$ref&quot;: &quot;Network.FrameId&quot;, &quot;description&quot;: &quot;Id of the owning frame.&quot; }
</del><ins>+                { &quot;name&quot;: &quot;frameId&quot;, &quot;$ref&quot;: &quot;RuntimeFrameId&quot;, &quot;description&quot;: &quot;Id of the owning frame.&quot; }
</ins><span class="cx">             ]
</span><span class="cx">         },
</span><span class="cx">         {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreloaderarchivecfLegacyWebArchivecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/loader/archive/cf/LegacyWebArchive.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/loader/archive/cf/LegacyWebArchive.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/loader/archive/cf/LegacyWebArchive.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -494,7 +494,7 @@
</span><span class="cx">     Vector&lt;Node*&gt; nodeList;
</span><span class="cx">     String markupString = documentTypeString(document) + createMarkup(*range, &amp;nodeList, AnnotateForInterchange);
</span><span class="cx"> 
</span><del>-    return create(markupString, frame, nodeList, 0);
</del><ins>+    return create(markupString, frame, nodeList, nullptr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> PassRefPtr&lt;LegacyWebArchive&gt; LegacyWebArchive::create(const String&amp; markupString, Frame* frame, const Vector&lt;Node*&gt;&amp; nodes, std::function&lt;bool (Frame&amp;)&gt; frameFilter)
</span><span class="lines">@@ -601,7 +601,7 @@
</span><span class="cx">         builder.append(createMarkup(*selectionRange, &amp;nodeList, AnnotateForInterchange));
</span><span class="cx"> 
</span><span class="cx">     String markupString = builder.toString();
</span><del>-    RefPtr&lt;LegacyWebArchive&gt; archive = create(markupString, frame, nodeList, 0);
</del><ins>+    RefPtr&lt;LegacyWebArchive&gt; archive = create(markupString, frame, nodeList, nullptr);
</ins><span class="cx">     
</span><span class="cx">     if (!document-&gt;isFrameSet())
</span><span class="cx">         return archive.release();
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreloadercacheCachedImageh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/loader/cache/CachedImage.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/loader/cache/CachedImage.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/loader/cache/CachedImage.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -24,6 +24,7 @@
</span><span class="cx"> #define CachedImage_h
</span><span class="cx"> 
</span><span class="cx"> #include &quot;CachedResource.h&quot;
</span><ins>+#include &quot;Image.h&quot;
</ins><span class="cx"> #include &quot;ImageObserver.h&quot;
</span><span class="cx"> #include &quot;IntRect.h&quot;
</span><span class="cx"> #include &quot;IntSizeHash.h&quot;
</span><span class="lines">@@ -119,6 +120,8 @@
</span><span class="cx">     virtual bool isImage() const OVERRIDE { return true; }
</span><span class="cx">     virtual bool stillNeedsLoad() const OVERRIDE { return !errorOccurred() &amp;&amp; status() == Unknown &amp;&amp; !isLoading(); }
</span><span class="cx"> 
</span><ins>+    virtual bool decodedDataIsPurgeable() const OVERRIDE { return m_image &amp;&amp; m_image-&gt;decodedDataIsPurgeable(); }
+
</ins><span class="cx">     // ImageObserver
</span><span class="cx">     virtual void decodedSizeChanged(const Image*, int delta) OVERRIDE;
</span><span class="cx">     virtual void didDraw(const Image*) OVERRIDE;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreloadercacheCachedResourceh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/loader/cache/CachedResource.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/loader/cache/CachedResource.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/loader/cache/CachedResource.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -149,6 +149,8 @@
</span><span class="cx">     unsigned encodedSize() const { return m_encodedSize; }
</span><span class="cx">     unsigned decodedSize() const { return m_decodedSize; }
</span><span class="cx">     unsigned overheadSize() const;
</span><ins>+
+    virtual bool decodedDataIsPurgeable() const { return false; }
</ins><span class="cx">     
</span><span class="cx">     bool isLoaded() const { return !m_loading; } // FIXME. Method name is inaccurate. Loading might not have started yet.
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreloadercacheMemoryCachecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/loader/cache/MemoryCache.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/loader/cache/MemoryCache.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/loader/cache/MemoryCache.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -266,6 +266,11 @@
</span><span class="cx">             if (elapsedTime &lt; cMinDelayBeforeLiveDecodedPrune)
</span><span class="cx">                 return;
</span><span class="cx"> 
</span><ins>+            if (current-&gt;decodedDataIsPurgeable()) {
+                current = prev;
+                continue;
+            }
+
</ins><span class="cx">             // Destroy our decoded data. This will remove us from 
</span><span class="cx">             // m_liveDecodedResources, and possibly move us to a different LRU 
</span><span class="cx">             // list in m_allResources.
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorepageConsolecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/page/Console.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/page/Console.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/page/Console.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -47,9 +47,9 @@
</span><span class="cx"> #include &quot;ScriptCallStackFactory.h&quot;
</span><span class="cx"> #include &quot;ScriptProfile.h&quot;
</span><span class="cx"> #include &quot;ScriptProfiler.h&quot;
</span><del>-#include &quot;ScriptValue.h&quot;
</del><span class="cx"> #include &quot;ScriptableDocumentParser.h&quot;
</span><span class="cx"> #include &quot;Settings.h&quot;
</span><ins>+#include &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> #include &lt;stdio.h&gt;
</span><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="lines">@@ -92,7 +92,7 @@
</span><span class="cx">     if (!page-&gt;settings().logsPageMessagesToSystemConsoleEnabled() &amp;&amp; !PageConsole::shouldPrintExceptions())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    PageConsole::printSourceURLAndLine(lastCaller.sourceURL(), lastCaller.lineNumber());
</del><ins>+    PageConsole::printSourceURLAndPosition(lastCaller.sourceURL(), lastCaller.lineNumber());
</ins><span class="cx">     PageConsole::printMessageSourceAndLevelPrefix(ConsoleAPIMessageSource, level);
</span><span class="cx"> 
</span><span class="cx">     for (size_t i = 0; i &lt; arguments-&gt;argumentCount(); ++i) {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorepageContentSecurityPolicycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/page/ContentSecurityPolicy.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/page/ContentSecurityPolicy.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/page/ContentSecurityPolicy.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -35,7 +35,6 @@
</span><span class="cx"> #include &quot;FormDataList.h&quot;
</span><span class="cx"> #include &quot;Frame.h&quot;
</span><span class="cx"> #include &quot;InspectorInstrumentation.h&quot;
</span><del>-#include &quot;InspectorValues.h&quot;
</del><span class="cx"> #include &quot;URL.h&quot;
</span><span class="cx"> #include &quot;PingLoader.h&quot;
</span><span class="cx"> #include &quot;RuntimeEnabledFeatures.h&quot;
</span><span class="lines">@@ -46,10 +45,13 @@
</span><span class="cx"> #include &quot;SecurityOrigin.h&quot;
</span><span class="cx"> #include &quot;SecurityPolicyViolationEvent.h&quot;
</span><span class="cx"> #include &quot;TextEncoding.h&quot;
</span><ins>+#include &lt;inspector/InspectorValues.h&gt;
</ins><span class="cx"> #include &lt;wtf/HashSet.h&gt;
</span><span class="cx"> #include &lt;wtf/text/TextPosition.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> // Normally WebKit uses &quot;static&quot; for internal linkage, but using &quot;static&quot; for
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorepageFramecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/page/Frame.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/page/Frame.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/page/Frame.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -86,7 +86,6 @@
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><span class="cx"> #include &quot;ScriptController.h&quot;
</span><span class="cx"> #include &quot;ScriptSourceCode.h&quot;
</span><del>-#include &quot;ScriptValue.h&quot;
</del><span class="cx"> #include &quot;ScrollingCoordinator.h&quot;
</span><span class="cx"> #include &quot;Settings.h&quot;
</span><span class="cx"> #include &quot;StyleProperties.h&quot;
</span><span class="lines">@@ -104,6 +103,7 @@
</span><span class="cx"> #include &quot;markup.h&quot;
</span><span class="cx"> #include &quot;npruntime_impl.h&quot;
</span><span class="cx"> #include &quot;runtime_root.h&quot;
</span><ins>+#include &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> #include &lt;wtf/PassOwnPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/RefCountedLeakCounter.h&gt;
</span><span class="cx"> #include &lt;wtf/StdLibExtras.h&gt;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorepageFrameViewcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/page/FrameView.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/page/FrameView.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/page/FrameView.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -141,15 +141,15 @@
</span><span class="cx">     return flags;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-Pagination::Mode paginationModeForRenderStyle(RenderStyle* style)
</del><ins>+Pagination::Mode paginationModeForRenderStyle(const RenderStyle&amp; style)
</ins><span class="cx"> {
</span><del>-    EOverflow overflow = style-&gt;overflowY();
</del><ins>+    EOverflow overflow = style.overflowY();
</ins><span class="cx">     if (overflow != OPAGEDX &amp;&amp; overflow != OPAGEDY)
</span><span class="cx">         return Pagination::Unpaginated;
</span><span class="cx"> 
</span><del>-    bool isHorizontalWritingMode = style-&gt;isHorizontalWritingMode();
-    TextDirection textDirection = style-&gt;direction();
-    WritingMode writingMode = style-&gt;writingMode();
</del><ins>+    bool isHorizontalWritingMode = style.isHorizontalWritingMode();
+    TextDirection textDirection = style.direction();
+    WritingMode writingMode = style.writingMode();
</ins><span class="cx"> 
</span><span class="cx">     // paged-x always corresponds to LeftToRightPaginated or RightToLeftPaginated. If the WritingMode
</span><span class="cx">     // is horizontal, then we use TextDirection to choose between those options. If the WritingMode
</span><span class="lines">@@ -205,7 +205,7 @@
</span><span class="cx"> 
</span><span class="cx">     if (frame.isMainFrame()) {
</span><span class="cx">         ScrollableArea::setVerticalScrollElasticity(ScrollElasticityAllowed);
</span><del>-        ScrollableArea::setHorizontalScrollElasticity(ScrollElasticityAllowed);
</del><ins>+        ScrollableArea::setHorizontalScrollElasticity(ScrollElasticityAutomatic);
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -673,7 +673,7 @@
</span><span class="cx"> 
</span><span class="cx">     EOverflow overflowY = documentOrBodyRenderer-&gt;style().overflowY();
</span><span class="cx">     if (overflowY == OPAGEDX || overflowY == OPAGEDY) {
</span><del>-        pagination.mode = WebCore::paginationModeForRenderStyle(&amp;documentOrBodyRenderer-&gt;style());
</del><ins>+        pagination.mode = WebCore::paginationModeForRenderStyle(documentOrBodyRenderer-&gt;style());
</ins><span class="cx">         pagination.gap = static_cast&lt;unsigned&gt;(documentOrBodyRenderer-&gt;style().columnGap());
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorepageFrameViewh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/page/FrameView.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/page/FrameView.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/page/FrameView.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -58,7 +58,7 @@
</span><span class="cx"> class RenderView;
</span><span class="cx"> class RenderWidget;
</span><span class="cx"> 
</span><del>-Pagination::Mode paginationModeForRenderStyle(RenderStyle*);
</del><ins>+Pagination::Mode paginationModeForRenderStyle(const RenderStyle&amp;);
</ins><span class="cx"> 
</span><span class="cx"> typedef unsigned long long DOMTimeStamp;
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorepagePagecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/page/Page.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/page/Page.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/page/Page.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -487,6 +487,20 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void Page::jettisonStyleResolversInAllDocuments()
+{
+    if (!allPages)
+        return;
+
+    for (auto it = allPages-&gt;begin(), end = allPages-&gt;end(); it != end; ++it) {
+        Page&amp; page = **it;
+        for (Frame* frame = &amp;page.mainFrame(); frame; frame = frame-&gt;tree().traverseNext()) {
+            if (Document* document = frame-&gt;document())
+                document-&gt;clearStyleResolver();
+        }
+    }
+}
+
</ins><span class="cx"> void Page::refreshPlugins(bool reload)
</span><span class="cx"> {
</span><span class="cx">     if (!allPages)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorepagePageh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/page/Page.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/page/Page.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/page/Page.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -111,6 +111,7 @@
</span><span class="cx"> 
</span><span class="cx"> public:
</span><span class="cx">     static void updateStyleForAllPagesAfterGlobalChangeInEnvironment();
</span><ins>+    static void jettisonStyleResolversInAllDocuments();
</ins><span class="cx"> 
</span><span class="cx">     // It is up to the platform to ensure that non-null clients are provided where required.
</span><span class="cx">     struct PageClients {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorepagePageConsolecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/page/PageConsole.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/page/PageConsole.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/page/PageConsole.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -42,9 +42,9 @@
</span><span class="cx"> #include &quot;ScriptArguments.h&quot;
</span><span class="cx"> #include &quot;ScriptCallStack.h&quot;
</span><span class="cx"> #include &quot;ScriptCallStackFactory.h&quot;
</span><del>-#include &quot;ScriptValue.h&quot;
</del><span class="cx"> #include &quot;ScriptableDocumentParser.h&quot;
</span><span class="cx"> #include &quot;Settings.h&quot;
</span><ins>+#include &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> #include &lt;stdio.h&gt;
</span><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="lines">@@ -64,11 +64,11 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void PageConsole::printSourceURLAndLine(const String&amp; sourceURL, unsigned lineNumber)
</del><ins>+void PageConsole::printSourceURLAndPosition(const String&amp; sourceURL, unsigned lineNumber, unsigned columnNumber)
</ins><span class="cx"> {
</span><span class="cx">     if (!sourceURL.isEmpty()) {
</span><del>-        if (lineNumber &gt; 0)
-            printf(&quot;%s:%d: &quot;, sourceURL.utf8().data(), lineNumber);
</del><ins>+        if (lineNumber &gt; 0 &amp;&amp; columnNumber &gt; 0)
+            printf(&quot;%s:%u:%u: &quot;, sourceURL.utf8().data(), lineNumber, columnNumber);
</ins><span class="cx">         else
</span><span class="cx">             printf(&quot;%s: &quot;, sourceURL.utf8().data());
</span><span class="cx">     }
</span><span class="lines">@@ -142,18 +142,22 @@
</span><span class="cx">     String url;
</span><span class="cx">     if (document)
</span><span class="cx">         url = document-&gt;url().string();
</span><del>-    // FIXME: &lt;http://webkit.org/b/114319&gt; PageConsole::addMessage should automatically determine column number alongside line number.
</del><span class="cx">     // FIXME: The below code attempts to determine line numbers for parser generated errors, but this is not the only reason why we can get here.
</span><span class="cx">     // For example, if we are still parsing and get a WebSocket network error, it will be erroneously attributed to a line where parsing was paused.
</span><span class="cx">     // Also, we should determine line numbers for script generated messages (e.g. calling getImageData on a canvas).
</span><span class="cx">     // We probably need to split this function into multiple ones, as appropriate for different call sites. Or maybe decide based on MessageSource.
</span><ins>+    // https://bugs.webkit.org/show_bug.cgi?id=125340
</ins><span class="cx">     unsigned line = 0;
</span><ins>+    unsigned column = 0;
</ins><span class="cx">     if (document &amp;&amp; document-&gt;parsing() &amp;&amp; !document-&gt;isInDocumentWrite() &amp;&amp; document-&gt;scriptableDocumentParser()) {
</span><span class="cx">         ScriptableDocumentParser* parser = document-&gt;scriptableDocumentParser();
</span><del>-        if (!parser-&gt;isWaitingForScripts() &amp;&amp; !JSMainThreadExecState::currentState())
-            line = parser-&gt;lineNumber().oneBasedInt();
</del><ins>+        if (!parser-&gt;isWaitingForScripts() &amp;&amp; !JSMainThreadExecState::currentState()) {
+            TextPosition position = parser-&gt;textPosition();
+            line = position.m_line.oneBasedInt();
+            column = position.m_column.oneBasedInt();
+        }
</ins><span class="cx">     }
</span><del>-    addMessage(source, level, message, url, line, 0, 0, 0, requestIdentifier);
</del><ins>+    addMessage(source, level, message, url, line, column, 0, 0, requestIdentifier);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void PageConsole::addMessage(MessageSource source, MessageLevel level, const String&amp; message, PassRefPtr&lt;ScriptCallStack&gt; callStack)
</span><span class="lines">@@ -182,7 +186,7 @@
</span><span class="cx">     if (!m_page.settings().logsPageMessagesToSystemConsoleEnabled() &amp;&amp; !shouldPrintExceptions())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    printSourceURLAndLine(url, lineNumber);
</del><ins>+    printSourceURLAndPosition(url, lineNumber, columnNumber);
</ins><span class="cx">     printMessageSourceAndLevelPrefix(source, level);
</span><span class="cx"> 
</span><span class="cx">     printf(&quot; %s\n&quot;, message.utf8().data());
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorepagePageConsoleh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/page/PageConsole.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/page/PageConsole.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/page/PageConsole.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx">     PageConsole(Page&amp;);
</span><span class="cx">     ~PageConsole();
</span><span class="cx"> 
</span><del>-    static void printSourceURLAndLine(const String&amp; sourceURL, unsigned lineNumber);
</del><ins>+    static void printSourceURLAndPosition(const String&amp; sourceURL, unsigned lineNumber, unsigned columnNumber = 0);
</ins><span class="cx">     static void printMessageSourceAndLevelPrefix(MessageSource, MessageLevel);
</span><span class="cx"> 
</span><span class="cx">     void addMessage(MessageSource, MessageLevel, const String&amp; message, const String&amp; sourceURL, unsigned lineNumber, unsigned columnNumber, PassRefPtr&lt;ScriptCallStack&gt; = 0, JSC::ExecState* = 0, unsigned long requestIdentifier = 0);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorepageSettingsin"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/page/Settings.in (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/page/Settings.in        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/page/Settings.in        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -213,3 +213,4 @@
</span><span class="cx"> simpleLineLayoutDebugBordersEnabled initial=false, setNeedsStyleRecalcInAllFrames=1
</span><span class="cx"> 
</span><span class="cx"> backgroundShouldExtendBeyondPage initial=false
</span><ins>+mediaSourceEnabled initial=false
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCorepageanimationCSSPropertyAnimationcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/page/animation/CSSPropertyAnimation.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/page/animation/CSSPropertyAnimation.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/page/animation/CSSPropertyAnimation.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -217,11 +217,11 @@
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;StyleCachedImage&gt; styledImage = StyleCachedImage::create(image);
</span><span class="cx">     auto imageValue = CSSImageValue::create(image-&gt;url(), styledImage.get());
</span><del>-    RefPtr&lt;CSSValue&gt; filterValue = ComputedStyleExtractor::valueForFilter(anim-&gt;renderer(), &amp;anim-&gt;renderer()-&gt;style(), filterResult, DoNotAdjustPixelValues);
-    RefPtr&lt;CSSFilterImageValue&gt; result = CSSFilterImageValue::create(std::move(imageValue), filterValue);
-    result-&gt;setFilterOperations(filterResult);
</del><ins>+    auto filterValue = ComputedStyleExtractor::valueForFilter(anim-&gt;renderer(), &amp;anim-&gt;renderer()-&gt;style(), filterResult, DoNotAdjustPixelValues);
</ins><span class="cx"> 
</span><del>-    return StyleGeneratedImage::create(result.get());
</del><ins>+    auto result = CSSFilterImageValue::create(std::move(imageValue), std::move(filterValue));
+    result.get().setFilterOperations(filterResult);
+    return StyleGeneratedImage::create(std::move(result));
</ins><span class="cx"> }
</span><span class="cx"> #endif // ENABLE(CSS_FILTERS)
</span><span class="cx"> 
</span><span class="lines">@@ -284,11 +284,10 @@
</span><span class="cx"> 
</span><span class="cx">     auto fromImageValue = CSSImageValue::create(fromStyleImage-&gt;cachedImage()-&gt;url(), fromStyleImage);
</span><span class="cx">     auto toImageValue = CSSImageValue::create(toStyleImage-&gt;cachedImage()-&gt;url(), toStyleImage);
</span><del>-    RefPtr&lt;CSSCrossfadeValue&gt; crossfadeValue = CSSCrossfadeValue::create(std::move(fromImageValue), std::move(toImageValue));
</del><span class="cx"> 
</span><del>-    crossfadeValue-&gt;setPercentage(CSSPrimitiveValue::create(progress, CSSPrimitiveValue::CSS_NUMBER));
-
-    return StyleGeneratedImage::create(crossfadeValue.get());
</del><ins>+    auto crossfadeValue = CSSCrossfadeValue::create(std::move(fromImageValue), std::move(toImageValue));
+    crossfadeValue.get().setPercentage(CSSPrimitiveValue::create(progress, CSSPrimitiveValue::CSS_NUMBER));
+    return StyleGeneratedImage::create(std::move(crossfadeValue));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static inline PassRefPtr&lt;StyleImage&gt; blendFunc(const AnimationBase* anim, StyleImage* from, StyleImage* to, double progress)
</span><span class="lines">@@ -298,42 +297,42 @@
</span><span class="cx"> 
</span><span class="cx">     // Animation between two generated images. Cross fade for all other cases.
</span><span class="cx">     if (from-&gt;isGeneratedImage() &amp;&amp; to-&gt;isGeneratedImage()) {
</span><del>-        CSSImageGeneratorValue* fromGenerated = toStyleGeneratedImage(from)-&gt;imageValue();
-        CSSImageGeneratorValue* toGenerated = toStyleGeneratedImage(to)-&gt;imageValue();
</del><ins>+        CSSImageGeneratorValue&amp; fromGenerated = toStyleGeneratedImage(from)-&gt;imageValue();
+        CSSImageGeneratorValue&amp; toGenerated = toStyleGeneratedImage(to)-&gt;imageValue();
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(CSS_FILTERS)
</span><del>-        if (fromGenerated-&gt;isFilterImageValue() &amp;&amp; toGenerated-&gt;isFilterImageValue()) {
</del><ins>+        if (fromGenerated.isFilterImageValue() &amp;&amp; toGenerated.isFilterImageValue()) {
</ins><span class="cx">             // Animation of generated images just possible if input images are equal.
</span><span class="cx">             // Otherwise fall back to cross fade animation.
</span><del>-            CSSFilterImageValue&amp; fromFilter = *toCSSFilterImageValue(fromGenerated);
-            CSSFilterImageValue&amp; toFilter = *toCSSFilterImageValue(toGenerated);
</del><ins>+            CSSFilterImageValue&amp; fromFilter = toCSSFilterImageValue(fromGenerated);
+            CSSFilterImageValue&amp; toFilter = toCSSFilterImageValue(toGenerated);
</ins><span class="cx">             if (fromFilter.equalInputImages(toFilter) &amp;&amp; fromFilter.cachedImage())
</span><span class="cx">                 return blendFilter(anim, fromFilter.cachedImage(), fromFilter.filterOperations(), toFilter.filterOperations(), progress);
</span><span class="cx">         }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-        if (fromGenerated-&gt;isCrossfadeValue() &amp;&amp; toGenerated-&gt;isCrossfadeValue()) {
-            CSSCrossfadeValue&amp; fromCrossfade = *toCSSCrossfadeValue(fromGenerated);
-            CSSCrossfadeValue&amp; toCrossfade = *toCSSCrossfadeValue(toGenerated);
</del><ins>+        if (fromGenerated.isCrossfadeValue() &amp;&amp; toGenerated.isCrossfadeValue()) {
+            CSSCrossfadeValue&amp; fromCrossfade = toCSSCrossfadeValue(fromGenerated);
+            CSSCrossfadeValue&amp; toCrossfade = toCSSCrossfadeValue(toGenerated);
</ins><span class="cx">             if (fromCrossfade.equalInputImages(toCrossfade))
</span><del>-                return StyleGeneratedImage::create(toCrossfade.blend(fromCrossfade, progress).get());
</del><ins>+                return StyleGeneratedImage::create(*toCrossfade.blend(fromCrossfade, progress));
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         // FIXME: Add support for animation between two *gradient() functions.
</span><span class="cx">         // https://bugs.webkit.org/show_bug.cgi?id=119956
</span><span class="cx"> #if ENABLE(CSS_FILTERS)
</span><span class="cx">     } else if (from-&gt;isGeneratedImage() &amp;&amp; to-&gt;isCachedImage()) {
</span><del>-        CSSImageGeneratorValue* fromGenerated = toStyleGeneratedImage(from)-&gt;imageValue();
-        if (fromGenerated-&gt;isFilterImageValue()) {
-            CSSFilterImageValue&amp; fromFilter = *toCSSFilterImageValue(fromGenerated);
</del><ins>+        CSSImageGeneratorValue&amp; fromGenerated = toStyleGeneratedImage(from)-&gt;imageValue();
+        if (fromGenerated.isFilterImageValue()) {
+            CSSFilterImageValue&amp; fromFilter = toCSSFilterImageValue(fromGenerated);
</ins><span class="cx">             if (fromFilter.cachedImage() &amp;&amp; static_cast&lt;StyleCachedImage*&gt;(to)-&gt;cachedImage() == fromFilter.cachedImage())
</span><span class="cx">                 return blendFilter(anim, fromFilter.cachedImage(), fromFilter.filterOperations(), FilterOperations(), progress);
</span><span class="cx">         }
</span><span class="cx">         // FIXME: Add interpolation between cross-fade and image source.
</span><span class="cx">     } else if (from-&gt;isCachedImage() &amp;&amp; to-&gt;isGeneratedImage()) {
</span><del>-        CSSImageGeneratorValue* toGenerated = toStyleGeneratedImage(to)-&gt;imageValue();
-        if (toGenerated-&gt;isFilterImageValue()) {
-            CSSFilterImageValue&amp; toFilter = *toCSSFilterImageValue(toGenerated);
</del><ins>+        CSSImageGeneratorValue&amp; toGenerated = toStyleGeneratedImage(to)-&gt;imageValue();
+        if (toGenerated.isFilterImageValue()) {
+            CSSFilterImageValue&amp; toFilter = toCSSFilterImageValue(toGenerated);
</ins><span class="cx">             if (toFilter.cachedImage() &amp;&amp; static_cast&lt;StyleCachedImage*&gt;(from)-&gt;cachedImage() == toFilter.cachedImage())     
</span><span class="cx">                 return blendFilter(anim, toFilter.cachedImage(), FilterOperations(), toFilter.filterOperations(), progress);
</span><span class="cx">         }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformCrossThreadCopiercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/CrossThreadCopier.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/CrossThreadCopier.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/CrossThreadCopier.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -40,6 +40,10 @@
</span><span class="cx"> #include &lt;wtf/Assertions.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><ins>+#if ENABLE(INDEXED_DATABASE)
+#include &quot;IDBDatabaseMetadata.h&quot;
+#endif
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> CrossThreadCopierBase&lt;false, false, URL&gt;::Type CrossThreadCopierBase&lt;false, false, URL&gt;::copy(const URL&amp; url)
</span><span class="lines">@@ -67,6 +71,15 @@
</span><span class="cx">     return response.copyData();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if ENABLE(INDEXED_DATABASE)
+
+CrossThreadCopierBase&lt;false, false, IDBDatabaseMetadata&gt;::Type CrossThreadCopierBase&lt;false, false, IDBDatabaseMetadata&gt;::copy(const IDBDatabaseMetadata&amp; metadata)
+{
+    return metadata.isolatedCopy();
+}
+
+#endif
+
</ins><span class="cx"> // Test CrossThreadCopier using COMPILE_ASSERT.
</span><span class="cx"> 
</span><span class="cx"> // Verify that ThreadSafeRefCounted objects get handled correctly.
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformCrossThreadCopierh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/CrossThreadCopier.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/CrossThreadCopier.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/CrossThreadCopier.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -145,6 +145,14 @@
</span><span class="cx">         static Type copy(const ResourceResponse&amp;);
</span><span class="cx">     };
</span><span class="cx"> 
</span><ins>+#if ENABLE(INDEXED_DATABASE)
+    struct IDBDatabaseMetadata;
+    template&lt;&gt; struct CrossThreadCopierBase&lt;false, false, IDBDatabaseMetadata&gt; {
+        typedef IDBDatabaseMetadata Type;
+        static Type copy(const IDBDatabaseMetadata&amp;);
+    };
+#endif
+
</ins><span class="cx">     template&lt;typename T&gt;
</span><span class="cx">     struct CrossThreadCopier : public CrossThreadCopierBase&lt;CrossThreadCopierBaseHelper::IsConvertibleToInteger&lt;T&gt;::value, CrossThreadCopierBaseHelper::IsThreadSafeRefCountedPointer&lt;T&gt;::value, T&gt; {
</span><span class="cx">     };
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformMediaSampleh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/MediaSample.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/MediaSample.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/MediaSample.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -33,14 +33,17 @@
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class MockSampleBox;
</span><ins>+typedef struct opaqueCMSampleBuffer *CMSampleBufferRef;
</ins><span class="cx"> 
</span><span class="cx"> struct PlatformSample {
</span><span class="cx">     enum {
</span><span class="cx">         None,
</span><span class="cx">         MockSampleBoxType,
</span><ins>+        CMSampleBufferType,
</ins><span class="cx">     } type;
</span><span class="cx">     union {
</span><span class="cx">         MockSampleBox* mockSampleBox;
</span><ins>+        CMSampleBufferRef cmSampleBuffer;
</ins><span class="cx">     } sample;
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="lines">@@ -56,9 +59,13 @@
</span><span class="cx">     enum SampleFlags {
</span><span class="cx">         None = 0,
</span><span class="cx">         IsSync = 1 &lt;&lt; 0,
</span><ins>+        NonDisplaying = 1 &lt;&lt; 1,
</ins><span class="cx">     };
</span><span class="cx">     virtual SampleFlags flags() const = 0;
</span><span class="cx">     virtual PlatformSample platformSample() = 0;
</span><ins>+
+    bool isSync() const { return flags() &amp; IsSync; }
+    bool isNonDisplaying() const { return flags() &amp; NonDisplaying; }
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformSharedBuffercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/SharedBuffer.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/SharedBuffer.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/SharedBuffer.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -231,7 +231,7 @@
</span><span class="cx">         return;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    char* destination;
</del><ins>+    char* destination = 0;
</ins><span class="cx">     m_purgeableBuffer = PurgeableBuffer::createUninitialized(m_size, destination);
</span><span class="cx">     if (!m_purgeableBuffer)
</span><span class="cx">         return;
</span><span class="lines">@@ -454,7 +454,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-#if !USE(CF)
</del><ins>+#if !USE(CF) &amp;&amp; !USE(SOUP)
</ins><span class="cx"> 
</span><span class="cx"> inline void SharedBuffer::clearPlatformData()
</span><span class="cx"> {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformSharedBufferh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/SharedBuffer.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/SharedBuffer.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/SharedBuffer.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -37,6 +37,10 @@
</span><span class="cx"> #include &lt;wtf/RetainPtr.h&gt;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if USE(SOUP)
+#include &quot;GOwnPtrSoup.h&quot;
+#endif
+
</ins><span class="cx"> #if PLATFORM(MAC)
</span><span class="cx"> OBJC_CLASS NSData;
</span><span class="cx"> #endif
</span><span class="lines">@@ -87,6 +91,10 @@
</span><span class="cx">     static PassRefPtr&lt;SharedBuffer&gt; wrapCFData(CFDataRef);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if USE(SOUP)
+    static PassRefPtr&lt;SharedBuffer&gt; wrapSoupBuffer(SoupBuffer*);
+#endif
+
</ins><span class="cx">     // Calling this function will force internal segmented buffers
</span><span class="cx">     // to be merged into a flat buffer. Use getSomeData() whenever possible
</span><span class="cx">     // for better performance.
</span><span class="lines">@@ -197,6 +205,11 @@
</span><span class="cx">     explicit SharedBuffer(CFDataRef);
</span><span class="cx">     RetainPtr&lt;CFDataRef&gt; m_cfData;
</span><span class="cx"> #endif
</span><ins>+
+#if USE(SOUP)
+    explicit SharedBuffer(SoupBuffer*);
+    GOwnPtr&lt;SoupBuffer&gt; m_soupBuffer;
+#endif
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> PassRefPtr&lt;SharedBuffer&gt; utf8Buffer(const String&amp;);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformglibBatteryProviderUPowercpp"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/platform/glib/BatteryProviderUPower.cpp (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/glib/BatteryProviderUPower.cpp                                (rev 0)
+++ branches/jsCStack/Source/WebCore/platform/glib/BatteryProviderUPower.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,137 @@
</span><ins>+/*
+ * Copyright (C) 2013 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;BatteryProviderUPower.h&quot;
+
+#if ENABLE(BATTERY_STATUS)
+
+#include &quot;BatteryProviderUPowerClient.h&quot;
+#include &lt;cmath&gt;
+#include &lt;limits&gt;
+#include &lt;wtf/gobject/GOwnPtr.h&gt;
+
+using namespace WebCore;
+
+static void powerDeviceAlterationCallback(UpClient* upowerClient, UpDevice* upowerDevice, BatteryProviderUPower* provider)
+{
+    UpDeviceKind deviceKind;
+    g_object_get(upowerDevice, &quot;kind&quot;, &amp;deviceKind, nullptr);
+    if (deviceKind != UP_DEVICE_KIND_BATTERY)
+        return;
+
+    provider-&gt;updateBatteryStatus();
+}
+
+BatteryProviderUPower::BatteryProviderUPower(BatteryProviderUPowerClient* client)
+    : m_client(client)
+    , m_isUpdating(false)
+{
+    ASSERT(m_client);
+}
+
+void BatteryProviderUPower::startUpdating()
+{
+    ASSERT(!m_upowerClient);
+    m_upowerClient = adoptGRef(up_client_new());
+
+    GOwnPtr&lt;GError&gt; error;
+    if (!up_client_enumerate_devices_sync(m_upowerClient.get(), 0, &amp;error.outPtr())) {
+        m_client-&gt;updateBatteryStatus(NotAvailable);
+        return;
+    }
+
+    g_signal_connect(m_upowerClient.get(), &quot;device-changed&quot;, G_CALLBACK(powerDeviceAlterationCallback), this);
+    g_signal_connect(m_upowerClient.get(), &quot;device-added&quot;, G_CALLBACK(powerDeviceAlterationCallback), this);
+    g_signal_connect(m_upowerClient.get(), &quot;device-removed&quot;, G_CALLBACK(powerDeviceAlterationCallback), this);
+
+    m_isUpdating = true;
+    updateBatteryStatus();
+}
+
+void BatteryProviderUPower::stopUpdating()
+{
+    m_upowerClient.clear();
+    m_isUpdating = false;
+}
+
+void BatteryProviderUPower::updateBatteryStatus()
+{
+    if (!m_isUpdating)
+        return;
+
+    GPtrArray* devices = up_client_get_devices(m_upowerClient.get());
+    if (!devices) {
+        m_client-&gt;updateBatteryStatus(NotAvailable);
+        return;
+    }
+
+    unsigned numOfBatteryDevices = 0;
+    double combinedEnergyCapacityCurrent = 0, combinedEnergyCapacityFull = 0, combinedEnergyRate = 0;
+
+    for (unsigned i = 0; i &lt; devices-&gt;len; i++) {
+        UpDevice* device = static_cast&lt;UpDevice*&gt;(g_ptr_array_index(devices, i));
+        UpDeviceKind deviceKind;
+        UpDeviceState deviceState;
+        bool isPresent;
+        double energyCapacityCurrent = 0, energyCapacityEmpty = 0, energyCapacityFull = 0, energyRate = 0;
+
+        g_object_get(device,
+            &quot;energy&quot;, &amp;energyCapacityCurrent,
+            &quot;energy-empty&quot;, &amp;energyCapacityEmpty,
+            &quot;energy-full&quot;, &amp;energyCapacityFull,
+            &quot;energy-rate&quot;, &amp;energyRate,
+            &quot;is-present&quot;, &amp;isPresent,
+            &quot;kind&quot;, &amp;deviceKind,
+            &quot;state&quot;, &amp;deviceState,
+            nullptr);
+
+        if (deviceKind != UP_DEVICE_KIND_BATTERY || !isPresent)
+            continue;
+
+        numOfBatteryDevices++;
+        combinedEnergyCapacityCurrent += energyCapacityCurrent - energyCapacityEmpty;
+        combinedEnergyCapacityFull += energyCapacityFull;
+        // Added energy rate should be signed according to the charging/discharging state.
+        combinedEnergyRate += deviceState == UP_DEVICE_STATE_DISCHARGING ? -energyRate : energyRate;
+    }
+
+    g_ptr_array_unref(devices);
+
+    if (!numOfBatteryDevices) {
+        m_client-&gt;updateBatteryStatus(NotAvailable);
+        return;
+    }
+
+    double level = 0;
+    if (combinedEnergyCapacityFull &gt; 0)
+        level = combinedEnergyCapacityCurrent / combinedEnergyCapacityFull;
+
+    if (combinedEnergyRate &gt;= 0) {
+        double chargingTime = std::numeric_limits&lt;double&gt;::infinity();
+        if (combinedEnergyRate)
+            chargingTime = 3600 * (combinedEnergyCapacityFull - combinedEnergyCapacityCurrent) / combinedEnergyRate;
+        m_client-&gt;updateBatteryStatus(Charging, chargingTime, level);
+    } else {
+        double dischargingTime = 3600 * combinedEnergyCapacityCurrent / std::abs(combinedEnergyRate);
+        m_client-&gt;updateBatteryStatus(Discharging, dischargingTime, level);
+    }
+}
+
+#endif // ENABLE(BATTERY_STATUS)
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformglibBatteryProviderUPowerh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/platform/glib/BatteryProviderUPower.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/glib/BatteryProviderUPower.h                                (rev 0)
+++ branches/jsCStack/Source/WebCore/platform/glib/BatteryProviderUPower.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,53 @@
</span><ins>+/*
+ * Copyright (C) 2013 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef BatteryProviderUPower_h
+#define BatteryProviderUPower_h
+
+#if ENABLE(BATTERY_STATUS)
+
+#include &lt;libupower-glib/upower.h&gt;
+#include &lt;wtf/gobject/GRefPtr.h&gt;
+
+namespace WebCore {
+
+class BatteryProviderUPowerClient;
+
+class BatteryProviderUPower {
+public:
+    BatteryProviderUPower(BatteryProviderUPowerClient*);
+
+    void startUpdating();
+    void stopUpdating();
+
+    void updateBatteryStatus();
+
+private:
+    BatteryProviderUPowerClient* m_client;
+
+    GRefPtr&lt;UpClient&gt; m_upowerClient;
+
+    bool m_isUpdating;
+};
+
+}
+
+#endif // ENABLE(BATTERY_STATUS)
+
+#endif // BatteryProviderUPower_h
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformglibBatteryProviderUPowerClienth"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/platform/glib/BatteryProviderUPowerClient.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/glib/BatteryProviderUPowerClient.h                                (rev 0)
+++ branches/jsCStack/Source/WebCore/platform/glib/BatteryProviderUPowerClient.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,42 @@
</span><ins>+/*
+ * Copyright (C) 2013 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef BatteryProviderUPowerClient_h
+#define BatteryProviderUPowerClient_h
+
+#if ENABLE(BATTERY_STATUS)
+
+namespace WebCore {
+
+enum BatteryProviderUPowerStatus {
+    NotAvailable = 0,
+    Charging,
+    Discharging,
+};
+
+class BatteryProviderUPowerClient {
+public:
+    virtual void updateBatteryStatus(BatteryProviderUPowerStatus, double secondsRemaining = 0, double batteryLevel = 0) = 0;
+};
+
+}
+
+#endif // ENABLE(BATTERY_STATUS)
+
+#endif // BatteryProviderUPowerClient_h
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformgraphicsBitmapImagecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/graphics/BitmapImage.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/graphics/BitmapImage.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/graphics/BitmapImage.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -102,6 +102,11 @@
</span><span class="cx">     // to one frame at a time.
</span><span class="cx">     static const unsigned cLargeAnimationCutoff = 5242880;
</span><span class="cx"> 
</span><ins>+    // If decoded data is purgeable, the operating system will
+    // take care of throwing it away when the system is under pressure.
+    if (decodedDataIsPurgeable())
+        return;
+
</ins><span class="cx">     // If we have decoded frames but there is no encoded data, we shouldn't destroy
</span><span class="cx">     // the decoded image since we won't be able to reconstruct it later.
</span><span class="cx">     if (!data() &amp;&amp; m_frames.size())
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformgraphicsBitmapImageh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/graphics/BitmapImage.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/graphics/BitmapImage.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/graphics/BitmapImage.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -260,6 +260,15 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> private:
</span><ins>+    virtual bool decodedDataIsPurgeable() const OVERRIDE
+    {
+#if PLATFORM(MAC) &amp;&amp; !PLATFORM(IOS) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 1090
+        return true;
+#else
+        return false;
+#endif
+    }
+
</ins><span class="cx">     ImageSource m_source;
</span><span class="cx">     mutable IntSize m_size; // The size to use for the overall image (will just be the size of the first image).
</span><span class="cx">     mutable IntSize m_sizeRespectingOrientation;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformgraphicsFontcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/graphics/Font.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/graphics/Font.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/graphics/Font.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -216,6 +216,12 @@
</span><span class="cx">     fontGlyphsCache().clear();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void clearWidthCaches()
+{
+    for (auto it = fontGlyphsCache().begin(), end = fontGlyphsCache().end(); it != end; ++it)
+        it-&gt;value-&gt;glyphs.get().widthCache().clear();
+}
+
</ins><span class="cx"> static unsigned makeFontSelectorFlags(const FontDescription&amp; description)
</span><span class="cx"> {
</span><span class="cx">     return static_cast&lt;unsigned&gt;(description.script()) &lt;&lt; 1 | static_cast&lt;unsigned&gt;(description.smallCaps());
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformgraphicsFonth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/graphics/Font.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/graphics/Font.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/graphics/Font.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -309,6 +309,7 @@
</span><span class="cx"> 
</span><span class="cx"> void invalidateFontGlyphsCache();
</span><span class="cx"> void pruneUnreferencedEntriesFromFontGlyphsCache();
</span><ins>+void clearWidthCaches();
</ins><span class="cx"> 
</span><span class="cx"> inline Font::~Font()
</span><span class="cx"> {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformgraphicsGlyphMetricsMaph"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/graphics/GlyphMetricsMap.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/graphics/GlyphMetricsMap.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/graphics/GlyphMetricsMap.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -30,7 +30,7 @@
</span><span class="cx"> #define GlyphMetricsMap_h
</span><span class="cx"> 
</span><span class="cx"> #include &quot;Glyph.h&quot;
</span><del>-#include &lt;wtf/FixedArray.h&gt;
</del><ins>+#include &lt;array&gt;
</ins><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="cx"> #include &lt;wtf/OwnPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/PassOwnPtr.h&gt;
</span><span class="lines">@@ -57,7 +57,7 @@
</span><span class="cx"> private:
</span><span class="cx">     struct GlyphMetricsPage {
</span><span class="cx">         static const size_t size = 256; // Usually covers Latin-1 in a single page.
</span><del>-        FixedArray&lt;T, size&gt; m_metrics;
</del><ins>+        std::array&lt;T, size&gt; m_metrics;
</ins><span class="cx"> 
</span><span class="cx">         T metricsForGlyph(Glyph glyph) const { return m_metrics[glyph % size]; }
</span><span class="cx">         void setMetricsForGlyph(Glyph glyph, const T&amp; metrics)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformgraphicsImageh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/graphics/Image.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/graphics/Image.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/graphics/Image.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -124,6 +124,7 @@
</span><span class="cx">     virtual String filenameExtension() const { return String(); } // null string if unknown
</span><span class="cx"> 
</span><span class="cx">     virtual void destroyDecodedData(bool destroyAll = true) = 0;
</span><ins>+    virtual bool decodedDataIsPurgeable() const { return false; }
</ins><span class="cx"> 
</span><span class="cx">     SharedBuffer* data() { return m_encodedImageData.get(); }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformgraphicsMediaPlayercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/graphics/MediaPlayer.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/graphics/MediaPlayer.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/graphics/MediaPlayer.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -57,7 +57,10 @@
</span><span class="cx"> #include &quot;MediaPlayerPrivateQTKit.h&quot;
</span><span class="cx"> #if USE(AVFOUNDATION)
</span><span class="cx"> #include &quot;MediaPlayerPrivateAVFoundationObjC.h&quot;
</span><ins>+#if ENABLE(MEDIA_SOURCE)
+#include &quot;MediaPlayerPrivateMediaSourceAVFObjC.h&quot;
</ins><span class="cx"> #endif
</span><ins>+#endif
</ins><span class="cx"> #elif OS(WINCE)
</span><span class="cx"> #include &quot;MediaPlayerPrivateWinCE.h&quot;
</span><span class="cx"> #define PlatformMediaEngineClassName MediaPlayerPrivate
</span><span class="lines">@@ -213,6 +216,9 @@
</span><span class="cx">         if (Settings::isAVFoundationEnabled()) {
</span><span class="cx"> #if PLATFORM(MAC) || PLATFORM(IOS)
</span><span class="cx">             MediaPlayerPrivateAVFoundationObjC::registerMediaEngine(addMediaEngine);
</span><ins>+#if ENABLE(MEDIA_SOURCE)
+            MediaPlayerPrivateMediaSourceAVFObjC::registerMediaEngine(addMediaEngine);
+#endif
</ins><span class="cx"> #elif PLATFORM(WIN)
</span><span class="cx">             MediaPlayerPrivateAVFoundationCF::registerMediaEngine(addMediaEngine);
</span><span class="cx"> #endif
</span><span class="lines">@@ -1233,6 +1239,40 @@
</span><span class="cx">     return m_private-&gt;fileSize();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if ENABLE(MEDIA_SOURCE)
+unsigned long MediaPlayer::totalVideoFrames()
+{
+    if (!m_private)
+        return 0;
+
+    return m_private-&gt;totalVideoFrames();
+}
+
+unsigned long MediaPlayer::droppedVideoFrames()
+{
+    if (!m_private)
+        return 0;
+
+    return m_private-&gt;droppedVideoFrames();
+}
+
+unsigned long MediaPlayer::corruptedVideoFrames()
+{
+    if (!m_private)
+        return 0;
+
+    return m_private-&gt;corruptedVideoFrames();
+}
+
+double MediaPlayer::totalFrameDelay()
+{
+    if (!m_private)
+        return 0;
+
+    return m_private-&gt;totalFrameDelay();
+}
+#endif
+
</ins><span class="cx"> void MediaPlayerFactorySupport::callRegisterMediaEngine(MediaEngineRegister registerMediaEngine)
</span><span class="cx"> {
</span><span class="cx">     registerMediaEngine(addMediaEngine);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformgraphicsMediaPlayerh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/graphics/MediaPlayer.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/graphics/MediaPlayer.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/graphics/MediaPlayer.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -43,8 +43,9 @@
</span><span class="cx"> #include &lt;runtime/Uint8Array.h&gt;
</span><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><span class="cx"> #include &lt;wtf/HashSet.h&gt;
</span><ins>+#include &lt;wtf/MediaTime.h&gt;
+#include &lt;wtf/Noncopyable.h&gt;
</ins><span class="cx"> #include &lt;wtf/OwnPtr.h&gt;
</span><del>-#include &lt;wtf/Noncopyable.h&gt;
</del><span class="cx"> #include &lt;wtf/PassOwnPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/text/StringHash.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -56,6 +57,7 @@
</span><span class="cx"> #include &quot;PlatformTextTrackMenu.h&quot;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+OBJC_CLASS AVAsset;
</ins><span class="cx"> OBJC_CLASS AVPlayer;
</span><span class="cx"> OBJC_CLASS QTMovie;
</span><span class="cx"> 
</span><span class="lines">@@ -86,7 +88,8 @@
</span><span class="cx">         ChromiumMediaPlayerType,
</span><span class="cx">         QtMediaPlayerType,
</span><span class="cx">         AVFoundationMediaPlayerType,
</span><del>-        AVFoundationCFMediaPlayerType
</del><ins>+        AVFoundationCFMediaPlayerType,
+        AVFoundationAssetType,
</ins><span class="cx">     } type;
</span><span class="cx"> 
</span><span class="cx">     union {
</span><span class="lines">@@ -97,6 +100,7 @@
</span><span class="cx">         MediaPlayerPrivateInterface* qtMediaPlayer;
</span><span class="cx">         AVPlayer* avfMediaPlayer;
</span><span class="cx">         AVCFPlayer* avcfMediaPlayer;
</span><ins>+        AVAsset* avfAsset;
</ins><span class="cx">     } media;
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="lines">@@ -510,6 +514,13 @@
</span><span class="cx"> 
</span><span class="cx">     unsigned long long fileSize() const;
</span><span class="cx"> 
</span><ins>+#if ENABLE(MEDIA_SOURCE)
+    unsigned long totalVideoFrames();
+    unsigned long droppedVideoFrames();
+    unsigned long corruptedVideoFrames();
+    double totalFrameDelay();
+#endif
+
</ins><span class="cx"> private:
</span><span class="cx">     MediaPlayer(MediaPlayerClient*);
</span><span class="cx">     MediaPlayerFactory* nextBestMediaEngine(MediaPlayerFactory*) const;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformgraphicsMediaPlayerPrivateh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/graphics/MediaPlayerPrivate.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/graphics/MediaPlayerPrivate.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/graphics/MediaPlayerPrivate.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -79,7 +79,7 @@
</span><span class="cx"> 
</span><span class="cx">     virtual void seek(float) { }
</span><span class="cx">     virtual void seekDouble(double time) { seek(time); }
</span><del>-    virtual void seekWithTolerance(double time, double, double) { seek(time); }
</del><ins>+    virtual void seekWithTolerance(double time, double, double) { seekDouble(time); }
</ins><span class="cx"> 
</span><span class="cx">     virtual bool seeking() const = 0;
</span><span class="cx"> 
</span><span class="lines">@@ -215,6 +215,13 @@
</span><span class="cx">     virtual size_t extraMemoryCost() const { return 0; }
</span><span class="cx">     
</span><span class="cx">     virtual unsigned long long fileSize() const { return 0; }
</span><ins>+
+#if ENABLE(MEDIA_SOURCE)
+    virtual unsigned long totalVideoFrames() { return 0; }
+    virtual unsigned long droppedVideoFrames() { return 0; }
+    virtual unsigned long corruptedVideoFrames() { return 0; }
+    virtual double totalFrameDelay() { return 0; }
+#endif
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformgraphicsavfoundationobjcAudioTrackPrivateMediaSourceAVFObjCcpp"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/platform/graphics/avfoundation/objc/AudioTrackPrivateMediaSourceAVFObjC.cpp (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/graphics/avfoundation/objc/AudioTrackPrivateMediaSourceAVFObjC.cpp                                (rev 0)
+++ branches/jsCStack/Source/WebCore/platform/graphics/avfoundation/objc/AudioTrackPrivateMediaSourceAVFObjC.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,164 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#include &quot;config.h&quot;
+#include &quot;AudioTrackPrivateMediaSourceAVFObjC.h&quot;
+
+#if ENABLE(MEDIA_SOURCE) &amp;&amp; ENABLE(VIDEO_TRACK)
+
+#include &quot;AVTrackPrivateAVFObjCImpl.h&quot;
+#include &quot;SourceBufferPrivateAVFObjC.h&quot;
+
+namespace WebCore {
+
+AudioTrackPrivateMediaSourceAVFObjC::AudioTrackPrivateMediaSourceAVFObjC(AVAssetTrack* track, SourceBufferPrivateAVFObjC* parent)
+    : m_impl(std::make_unique&lt;AVTrackPrivateAVFObjCImpl&gt;(track))
+    , m_parent(parent)
+    , m_trackID(-1)
+    , m_enabled(false)
+{
+    resetPropertiesFromTrack();
+}
+
+void AudioTrackPrivateMediaSourceAVFObjC::resetPropertiesFromTrack()
+{
+    m_trackID = m_impl-&gt;trackID();
+
+    setKind(m_impl-&gt;audioKind());
+    setId(m_impl-&gt;id());
+    setLabel(m_impl-&gt;label());
+    setLanguage(m_impl-&gt;language());
+}
+
+void AudioTrackPrivateMediaSourceAVFObjC::setAssetTrack(AVAssetTrack *track)
+{
+    m_impl = std::make_unique&lt;AVTrackPrivateAVFObjCImpl&gt;(track);
+    resetPropertiesFromTrack();
+}
+
+AVAssetTrack* AudioTrackPrivateMediaSourceAVFObjC::assetTrack()
+{
+    return m_impl-&gt;assetTrack();
+}
+
+bool AudioTrackPrivateMediaSourceAVFObjC::enabled() const
+{
+    return m_enabled;
+}
+
+void AudioTrackPrivateMediaSourceAVFObjC::setEnabled(bool enabled)
+{
+    if (m_enabled == enabled)
+        return;
+
+    m_enabled = enabled;
+    m_parent-&gt;trackDidChangeEnabled(this);
+}
+
+}
+
+#endif
+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#include &quot;config.h&quot;
+#include &quot;AudioTrackPrivateMediaSourceAVFObjC.h&quot;
+
+#if ENABLE(MEDIA_SOURCE) &amp;&amp; ENABLE(VIDEO_TRACK)
+
+#include &quot;AVTrackPrivateAVFObjCImpl.h&quot;
+#include &quot;SourceBufferPrivateAVFObjC.h&quot;
+
+namespace WebCore {
+
+AudioTrackPrivateMediaSourceAVFObjC::AudioTrackPrivateMediaSourceAVFObjC(AVAssetTrack* track, SourceBufferPrivateAVFObjC* parent)
+    : m_impl(std::make_unique&lt;AVTrackPrivateAVFObjCImpl&gt;(track))
+    , m_parent(parent)
+    , m_trackID(-1)
+    , m_enabled(false)
+{
+    resetPropertiesFromTrack();
+}
+
+void AudioTrackPrivateMediaSourceAVFObjC::resetPropertiesFromTrack()
+{
+    m_trackID = m_impl-&gt;trackID();
+
+    setKind(m_impl-&gt;audioKind());
+    setId(m_impl-&gt;id());
+    setLabel(m_impl-&gt;label());
+    setLanguage(m_impl-&gt;language());
+}
+
+void AudioTrackPrivateMediaSourceAVFObjC::setAssetTrack(AVAssetTrack *track)
+{
+    m_impl = std::make_unique&lt;AVTrackPrivateAVFObjCImpl&gt;(track);
+    resetPropertiesFromTrack();
+}
+
+AVAssetTrack* AudioTrackPrivateMediaSourceAVFObjC::assetTrack()
+{
+    return m_impl-&gt;assetTrack();
+}
+
+bool AudioTrackPrivateMediaSourceAVFObjC::enabled() const
+{
+    return m_enabled;
+}
+
+void AudioTrackPrivateMediaSourceAVFObjC::setEnabled(bool enabled)
+{
+    if (m_enabled == enabled)
+        return;
+
+    m_enabled = enabled;
+    m_parent-&gt;trackDidChangeEnabled(this);
+}
+
+}
+
+#endif
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformgraphicsavfoundationobjcAudioTrackPrivateMediaSourceAVFObjCh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/platform/graphics/avfoundation/objc/AudioTrackPrivateMediaSourceAVFObjC.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/graphics/avfoundation/objc/AudioTrackPrivateMediaSourceAVFObjC.h                                (rev 0)
+++ branches/jsCStack/Source/WebCore/platform/graphics/avfoundation/objc/AudioTrackPrivateMediaSourceAVFObjC.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,144 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#ifndef AudioTrackPrivateMediaSourceAVFObjC_h
+#define AudioTrackPrivateMediaSourceAVFObjC_h
+
+#include &quot;AudioTrackPrivateAVF.h&quot;
+
+#if ENABLE(MEDIA_SOURCE) &amp;&amp; ENABLE(VIDEO_TRACK)
+
+OBJC_CLASS AVAssetTrack;
+OBJC_CLASS AVPlayerItemTrack;
+
+namespace WebCore {
+
+class AVTrackPrivateAVFObjCImpl;
+class SourceBufferPrivateAVFObjC;
+
+class AudioTrackPrivateMediaSourceAVFObjC FINAL : public AudioTrackPrivateAVF {
+    WTF_MAKE_NONCOPYABLE(AudioTrackPrivateMediaSourceAVFObjC)
+public:
+    static RefPtr&lt;AudioTrackPrivateMediaSourceAVFObjC&gt; create(AVAssetTrack* track, SourceBufferPrivateAVFObjC* parent)
+    {
+        return adoptRef(new AudioTrackPrivateMediaSourceAVFObjC(track, parent));
+    }
+
+    virtual bool enabled() const OVERRIDE;
+    virtual void setEnabled(bool) OVERRIDE;
+
+    void setAssetTrack(AVAssetTrack*);
+    AVAssetTrack* assetTrack();
+
+    int trackID() { return m_trackID; }
+
+private:
+    explicit AudioTrackPrivateMediaSourceAVFObjC(AVAssetTrack*, SourceBufferPrivateAVFObjC* parent);
+    
+    void resetPropertiesFromTrack();
+
+    std::unique_ptr&lt;AVTrackPrivateAVFObjCImpl&gt; m_impl;
+    SourceBufferPrivateAVFObjC* m_parent;
+    int m_trackID;
+    bool m_enabled;
+};
+
+}
+
+#endif // ENABLE(MEDIA_SOURCE) &amp;&amp; ENABLE(VIDEO_TRACK)
+
+#endif
+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#ifndef AudioTrackPrivateMediaSourceAVFObjC_h
+#define AudioTrackPrivateMediaSourceAVFObjC_h
+
+#include &quot;AudioTrackPrivateAVF.h&quot;
+
+#if ENABLE(MEDIA_SOURCE) &amp;&amp; ENABLE(VIDEO_TRACK)
+
+OBJC_CLASS AVAssetTrack;
+OBJC_CLASS AVPlayerItemTrack;
+
+namespace WebCore {
+
+class AVTrackPrivateAVFObjCImpl;
+class SourceBufferPrivateAVFObjC;
+
+class AudioTrackPrivateMediaSourceAVFObjC FINAL : public AudioTrackPrivateAVF {
+    WTF_MAKE_NONCOPYABLE(AudioTrackPrivateMediaSourceAVFObjC)
+public:
+    static RefPtr&lt;AudioTrackPrivateMediaSourceAVFObjC&gt; create(AVAssetTrack* track, SourceBufferPrivateAVFObjC* parent)
+    {
+        return adoptRef(new AudioTrackPrivateMediaSourceAVFObjC(track, parent));
+    }
+
+    virtual bool enabled() const OVERRIDE;
+    virtual void setEnabled(bool) OVERRIDE;
+
+    void setAssetTrack(AVAssetTrack*);
+    AVAssetTrack* assetTrack();
+
+    int trackID() { return m_trackID; }
+
+private:
+    explicit AudioTrackPrivateMediaSourceAVFObjC(AVAssetTrack*, SourceBufferPrivateAVFObjC* parent);
+    
+    void resetPropertiesFromTrack();
+
+    std::unique_ptr&lt;AVTrackPrivateAVFObjCImpl&gt; m_impl;
+    SourceBufferPrivateAVFObjC* m_parent;
+    int m_trackID;
+    bool m_enabled;
+};
+
+}
+
+#endif // ENABLE(MEDIA_SOURCE) &amp;&amp; ENABLE(VIDEO_TRACK)
+
+#endif
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformgraphicsavfoundationobjcMediaPlayerPrivateMediaSourceAVFObjCh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h                                (rev 0)
+++ branches/jsCStack/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,329 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef MediaPlayerPrivateMediaSourceAVFObjC_h
+#define MediaPlayerPrivateMediaSourceAVFObjC_h
+
+#if ENABLE(MEDIA_SOURCE) &amp;&amp; USE(AVFOUNDATION)
+
+#include &quot;MediaPlayerPrivate.h&quot;
+#include &quot;SourceBufferPrivateClient.h&quot;
+#include &lt;wtf/MediaTime.h&gt;
+
+OBJC_CLASS AVAsset;
+OBJC_CLASS AVSampleBufferDisplayLayer;
+
+typedef struct OpaqueCMTimebase* CMTimebaseRef;
+
+namespace WebCore {
+
+class PlatformClockCM;
+class MediaSourcePrivateAVFObjC;
+
+class MediaPlayerPrivateMediaSourceAVFObjC : public MediaPlayerPrivateInterface {
+public:
+    MediaPlayerPrivateMediaSourceAVFObjC(MediaPlayer*);
+    virtual ~MediaPlayerPrivateMediaSourceAVFObjC();
+
+    static void registerMediaEngine(MediaEngineRegistrar);
+
+    void addDisplayLayer(AVSampleBufferDisplayLayer*);
+    void removeDisplayLayer(AVSampleBufferDisplayLayer*);
+
+    virtual MediaPlayer::NetworkState networkState() const OVERRIDE;
+    virtual MediaPlayer::ReadyState readyState() const OVERRIDE;
+    void setReadyState(MediaPlayer::ReadyState);
+    void setNetworkState(MediaPlayer::NetworkState);
+
+    void seekInternal(double, double, double);
+    void setLoadingProgresssed(bool flag) { m_loadingProgressed = flag; }
+    void setHasAvailableVideoFrame(bool flag) { m_hasAvailableVideoFrame = flag; }
+
+private:
+    // MediaPlayerPrivateInterface
+    virtual void load(const String&amp; url) OVERRIDE;
+    virtual void load(const String&amp; url, PassRefPtr&lt;HTMLMediaSource&gt;) OVERRIDE;
+    virtual void cancelLoad() OVERRIDE;
+
+    virtual void prepareToPlay() OVERRIDE;
+    virtual PlatformMedia platformMedia() const OVERRIDE;
+#if USE(ACCELERATED_COMPOSITING)
+    virtual PlatformLayer* platformLayer() const OVERRIDE;
+#endif
+
+    virtual void play() OVERRIDE;
+    void playInternal();
+
+    virtual void pause() OVERRIDE;
+    void pauseInternal();
+
+    virtual bool paused() const OVERRIDE;
+
+    virtual bool supportsScanning() const OVERRIDE;
+
+    virtual IntSize naturalSize() const OVERRIDE;
+
+    virtual bool hasVideo() const OVERRIDE;
+    virtual bool hasAudio() const OVERRIDE;
+
+    virtual void setVisible(bool) OVERRIDE;
+
+    virtual double durationDouble() const OVERRIDE;
+    virtual double currentTimeDouble() const OVERRIDE;
+    virtual double startTimeDouble() const OVERRIDE;
+    virtual double initialTime() const OVERRIDE;
+
+    virtual void seekWithTolerance(double time, double negativeThreshold, double positiveThreshold) OVERRIDE;
+    virtual bool seeking() const OVERRIDE;
+    virtual void setRateDouble(double) OVERRIDE;
+
+    virtual PassRefPtr&lt;TimeRanges&gt; seekable() const OVERRIDE;
+    virtual double maxTimeSeekableDouble() const OVERRIDE;
+    virtual double minTimeSeekable() const OVERRIDE;
+    virtual PassRefPtr&lt;TimeRanges&gt; buffered() const OVERRIDE;
+
+    virtual bool didLoadingProgress() const OVERRIDE;
+
+    virtual void setSize(const IntSize&amp;) OVERRIDE;
+
+    virtual void paint(GraphicsContext*, const IntRect&amp;) OVERRIDE;
+    virtual void paintCurrentFrameInContext(GraphicsContext*, const IntRect&amp;) OVERRIDE;
+
+    virtual bool hasAvailableVideoFrame() const OVERRIDE;
+
+#if USE(ACCELERATED_COMPOSITING)
+    virtual bool supportsAcceleratedRendering() const OVERRIDE;
+    // called when the rendering system flips the into or out of accelerated rendering mode.
+    virtual void acceleratedRenderingStateChanged() OVERRIDE;
+#endif
+
+    virtual MediaPlayer::MovieLoadType movieLoadType() const OVERRIDE;
+
+    virtual void prepareForRendering() OVERRIDE;
+
+    virtual String engineDescription() const OVERRIDE;
+
+    virtual String languageOfPrimaryAudioTrack() const OVERRIDE;
+
+    virtual size_t extraMemoryCost() const OVERRIDE;
+
+    virtual unsigned long totalVideoFrames() OVERRIDE;
+    virtual unsigned long droppedVideoFrames() OVERRIDE;
+    virtual unsigned long corruptedVideoFrames() OVERRIDE;
+    virtual double totalFrameDelay() OVERRIDE;
+
+    void ensureLayer();
+    void destroyLayer();
+    void durationChanged();
+
+    // MediaPlayer Factory Methods
+    static PassOwnPtr&lt;MediaPlayerPrivateInterface&gt; create(MediaPlayer*);
+    static bool isAvailable();
+    static void getSupportedTypes(HashSet&lt;String&gt;&amp; types);
+    static MediaPlayer::SupportsType supportsType(const MediaEngineSupportParameters&amp;);
+
+    friend class MediaSourcePrivateAVFObjC;
+
+    MediaPlayer* m_player;
+    RefPtr&lt;HTMLMediaSource&gt; m_mediaSource;
+    RefPtr&lt;MediaSourcePrivateAVFObjC&gt; m_mediaSourcePrivate;
+    RetainPtr&lt;AVAsset&gt; m_asset;
+    RetainPtr&lt;AVSampleBufferDisplayLayer&gt; m_sampleBufferDisplayLayer;
+    std::unique_ptr&lt;PlatformClockCM&gt; m_clock;
+    MediaPlayer::NetworkState m_networkState;
+    MediaPlayer::ReadyState m_readyState;
+    bool m_seeking;
+    mutable bool m_loadingProgressed;
+    bool m_hasAvailableVideoFrame;
+};
+
+}
+
+#endif // ENABLE(MEDIA_SOURCE) &amp;&amp; USE(AVFOUNDATION)
+
+#endif // MediaPlayerPrivateMediaSourceAVFObjC_h
+
+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef MediaPlayerPrivateMediaSourceAVFObjC_h
+#define MediaPlayerPrivateMediaSourceAVFObjC_h
+
+#if ENABLE(MEDIA_SOURCE) &amp;&amp; USE(AVFOUNDATION)
+
+#include &quot;MediaPlayerPrivate.h&quot;
+#include &quot;SourceBufferPrivateClient.h&quot;
+#include &lt;wtf/MediaTime.h&gt;
+
+OBJC_CLASS AVAsset;
+OBJC_CLASS AVSampleBufferDisplayLayer;
+
+typedef struct OpaqueCMTimebase* CMTimebaseRef;
+
+namespace WebCore {
+
+class PlatformClockCM;
+class MediaSourcePrivateAVFObjC;
+
+class MediaPlayerPrivateMediaSourceAVFObjC : public MediaPlayerPrivateInterface {
+public:
+    MediaPlayerPrivateMediaSourceAVFObjC(MediaPlayer*);
+    virtual ~MediaPlayerPrivateMediaSourceAVFObjC();
+
+    static void registerMediaEngine(MediaEngineRegistrar);
+
+    void addDisplayLayer(AVSampleBufferDisplayLayer*);
+    void removeDisplayLayer(AVSampleBufferDisplayLayer*);
+
+    virtual MediaPlayer::NetworkState networkState() const OVERRIDE;
+    virtual MediaPlayer::ReadyState readyState() const OVERRIDE;
+    void setReadyState(MediaPlayer::ReadyState);
+    void setNetworkState(MediaPlayer::NetworkState);
+
+    void seekInternal(double, double, double);
+    void setLoadingProgresssed(bool flag) { m_loadingProgressed = flag; }
+    void setHasAvailableVideoFrame(bool flag) { m_hasAvailableVideoFrame = flag; }
+
+private:
+    // MediaPlayerPrivateInterface
+    virtual void load(const String&amp; url) OVERRIDE;
+    virtual void load(const String&amp; url, PassRefPtr&lt;HTMLMediaSource&gt;) OVERRIDE;
+    virtual void cancelLoad() OVERRIDE;
+
+    virtual void prepareToPlay() OVERRIDE;
+    virtual PlatformMedia platformMedia() const OVERRIDE;
+#if USE(ACCELERATED_COMPOSITING)
+    virtual PlatformLayer* platformLayer() const OVERRIDE;
+#endif
+
+    virtual void play() OVERRIDE;
+    void playInternal();
+
+    virtual void pause() OVERRIDE;
+    void pauseInternal();
+
+    virtual bool paused() const OVERRIDE;
+
+    virtual bool supportsScanning() const OVERRIDE;
+
+    virtual IntSize naturalSize() const OVERRIDE;
+
+    virtual bool hasVideo() const OVERRIDE;
+    virtual bool hasAudio() const OVERRIDE;
+
+    virtual void setVisible(bool) OVERRIDE;
+
+    virtual double durationDouble() const OVERRIDE;
+    virtual double currentTimeDouble() const OVERRIDE;
+    virtual double startTimeDouble() const OVERRIDE;
+    virtual double initialTime() const OVERRIDE;
+
+    virtual void seekWithTolerance(double time, double negativeThreshold, double positiveThreshold) OVERRIDE;
+    virtual bool seeking() const OVERRIDE;
+    virtual void setRateDouble(double) OVERRIDE;
+
+    virtual PassRefPtr&lt;TimeRanges&gt; seekable() const OVERRIDE;
+    virtual double maxTimeSeekableDouble() const OVERRIDE;
+    virtual double minTimeSeekable() const OVERRIDE;
+    virtual PassRefPtr&lt;TimeRanges&gt; buffered() const OVERRIDE;
+
+    virtual bool didLoadingProgress() const OVERRIDE;
+
+    virtual void setSize(const IntSize&amp;) OVERRIDE;
+
+    virtual void paint(GraphicsContext*, const IntRect&amp;) OVERRIDE;
+    virtual void paintCurrentFrameInContext(GraphicsContext*, const IntRect&amp;) OVERRIDE;
+
+    virtual bool hasAvailableVideoFrame() const OVERRIDE;
+
+#if USE(ACCELERATED_COMPOSITING)
+    virtual bool supportsAcceleratedRendering() const OVERRIDE;
+    // called when the rendering system flips the into or out of accelerated rendering mode.
+    virtual void acceleratedRenderingStateChanged() OVERRIDE;
+#endif
+
+    virtual MediaPlayer::MovieLoadType movieLoadType() const OVERRIDE;
+
+    virtual void prepareForRendering() OVERRIDE;
+
+    virtual String engineDescription() const OVERRIDE;
+
+    virtual String languageOfPrimaryAudioTrack() const OVERRIDE;
+
+    virtual size_t extraMemoryCost() const OVERRIDE;
+
+    void ensureLayer();
+    void destroyLayer();
+    void durationChanged();
+
+    // MediaPlayer Factory Methods
+    static PassOwnPtr&lt;MediaPlayerPrivateInterface&gt; create(MediaPlayer*);
+    static bool isAvailable();
+    static void getSupportedTypes(HashSet&lt;String&gt;&amp; types);
+    static MediaPlayer::SupportsType supportsType(const MediaEngineSupportParameters&amp;);
+
+    friend class MediaSourcePrivateAVFObjC;
+
+    MediaPlayer* m_player;
+    RefPtr&lt;HTMLMediaSource&gt; m_mediaSource;
+    RefPtr&lt;MediaSourcePrivateAVFObjC&gt; m_mediaSourcePrivate;
+    RetainPtr&lt;AVAsset&gt; m_asset;
+    RetainPtr&lt;AVSampleBufferDisplayLayer&gt; m_sampleBufferDisplayLayer;
+    std::unique_ptr&lt;PlatformClockCM&gt; m_clock;
+    MediaPlayer::NetworkState m_networkState;
+    MediaPlayer::ReadyState m_readyState;
+    bool m_seeking;
+    mutable bool m_loadingProgressed;
+    bool m_hasAvailableVideoFrame;
+};
+
+}
+
+#endif // ENABLE(MEDIA_SOURCE) &amp;&amp; USE(AVFOUNDATION)
+
+#endif // MediaPlayerPrivateMediaSourceAVFObjC_h
+
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformgraphicsavfoundationobjcMediaPlayerPrivateMediaSourceAVFObjCmm"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm                                (rev 0)
+++ branches/jsCStack/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,911 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#import &quot;config.h&quot;
+#import &quot;MediaPlayerPrivateMediaSourceAVFObjC.h&quot;
+
+#if ENABLE(MEDIA_SOURCE) &amp;&amp; USE(AVFOUNDATION)
+
+#import &quot;HTMLMediaSource.h&quot;
+#import &quot;MediaSourcePrivateAVFObjC.h&quot;
+#import &quot;PlatformClockCM.h&quot;
+#import &quot;SoftLinking.h&quot;
+#import &lt;AVFoundation/AVSampleBufferDisplayLayer.h&gt;
+#import &lt;AVFoundation/AVAsset.h&gt;
+#import &lt;CoreMedia/CMSync.h&gt;
+#import &lt;objc_runtime.h&gt;
+#import &lt;wtf/NeverDestroyed.h&gt;
+#import &lt;wtf/Functional.h&gt;
+#import &lt;wtf/MainThread.h&gt;
+
+#pragma mark -
+#pragma mark Soft Linking
+
+SOFT_LINK_FRAMEWORK_OPTIONAL(AVFoundation)
+SOFT_LINK_FRAMEWORK_OPTIONAL(CoreMedia)
+
+SOFT_LINK_CLASS_OPTIONAL(AVFoundation, AVAsset)
+SOFT_LINK_CLASS_OPTIONAL(AVFoundation, AVURLAsset)
+SOFT_LINK_CLASS_OPTIONAL(AVFoundation, AVSampleBufferDisplayLayer)
+SOFT_LINK_CLASS_OPTIONAL(AVFoundation, AVStreamDataParser)
+SOFT_LINK_CLASS_OPTIONAL(AVFoundation, AVVideoPerformanceMetrics)
+
+#pragma mark -
+#pragma mark AVVideoPerformanceMetrics
+
+@interface AVVideoPerformanceMetrics : NSObject
+- (unsigned long)totalNumberOfVideoFrames;
+- (unsigned long)numberOfDroppedVideoFrames;
+- (unsigned long)numberOfCorruptedVideoFrames;
+- (double)totalFrameDelay;
+@end
+
+@interface AVSampleBufferDisplayLayer (WebCoreAVSampleBufferDisplayLayerPrivate)
+- (AVVideoPerformanceMetrics *)videoPerformanceMetrics;
+@end
+
+namespace WebCore {
+
+#pragma mark -
+#pragma mark MediaPlayerPrivateMediaSourceAVFObjC
+
+MediaPlayerPrivateMediaSourceAVFObjC::MediaPlayerPrivateMediaSourceAVFObjC(MediaPlayer* player)
+    : m_player(player)
+    , m_clock(new PlatformClockCM())
+    , m_networkState(MediaPlayer::Empty)
+    , m_readyState(MediaPlayer::HaveNothing)
+    , m_seeking(false)
+    , m_loadingProgressed(false)
+{
+}
+
+MediaPlayerPrivateMediaSourceAVFObjC::~MediaPlayerPrivateMediaSourceAVFObjC()
+{
+}
+
+#pragma mark -
+#pragma mark MediaPlayer Factory Methods
+
+void MediaPlayerPrivateMediaSourceAVFObjC::registerMediaEngine(MediaEngineRegistrar registrar)
+{
+    if (isAvailable())
+        registrar(create, getSupportedTypes, supportsType, 0, 0, 0);
+}
+
+PassOwnPtr&lt;MediaPlayerPrivateInterface&gt; MediaPlayerPrivateMediaSourceAVFObjC::create(MediaPlayer* player)
+{
+    return adoptPtr(new MediaPlayerPrivateMediaSourceAVFObjC(player));
+}
+
+bool MediaPlayerPrivateMediaSourceAVFObjC::isAvailable()
+{
+    return AVFoundationLibrary() &amp;&amp; CoreMediaLibrary() &amp;&amp; getAVStreamDataParserClass();
+}
+
+static HashSet&lt;String&gt; mimeTypeCache()
+{
+    DEFINE_STATIC_LOCAL(HashSet&lt;String&gt;, cache, ());
+    static bool typeListInitialized = false;
+
+    if (typeListInitialized)
+        return cache;
+    typeListInitialized = true;
+
+    NSArray *types = [getAVURLAssetClass() audiovisualMIMETypes];
+    for (NSString *mimeType in types)
+        cache.add(mimeType);
+    
+    return cache;
+} 
+
+void MediaPlayerPrivateMediaSourceAVFObjC::getSupportedTypes(HashSet&lt;String&gt;&amp; types)
+{
+    types = mimeTypeCache();
+}
+
+MediaPlayer::SupportsType MediaPlayerPrivateMediaSourceAVFObjC::supportsType(const MediaEngineSupportParameters&amp; parameters)
+{
+    // This engine does not support non-media-source sources.
+    if (!parameters.isMediaSource)
+        return MediaPlayer::IsNotSupported;
+
+    if (!mimeTypeCache().contains(parameters.type))
+        return MediaPlayer::IsNotSupported;
+
+    // The spec says:
+    // &quot;Implementors are encouraged to return &quot;maybe&quot; unless the type can be confidently established as being supported or not.&quot;
+    if (parameters.codecs.isEmpty())
+        return MediaPlayer::MayBeSupported;
+
+    NSString *typeString = [NSString stringWithFormat:@&quot;%@; codecs=\&quot;%@\&quot;&quot;, (NSString *)parameters.type, (NSString *)parameters.codecs];
+    return [getAVURLAssetClass() isPlayableExtendedMIMEType:typeString] ? MediaPlayer::IsSupported : MediaPlayer::MayBeSupported;;
+}
+
+#pragma mark -
+#pragma mark MediaPlayerPrivateInterface Overrides
+
+void MediaPlayerPrivateMediaSourceAVFObjC::load(const String&amp;)
+{
+    ASSERT_NOT_REACHED();
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::load(const String&amp; url, PassRefPtr&lt;HTMLMediaSource&gt; source)
+{
+    UNUSED_PARAM(url);
+
+    m_mediaSource = source;
+    m_mediaSourcePrivate = MediaSourcePrivateAVFObjC::create(this);
+
+    m_mediaSource-&gt;setPrivateAndOpen(*m_mediaSourcePrivate);
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::cancelLoad()
+{
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::prepareToPlay()
+{
+}
+
+PlatformMedia MediaPlayerPrivateMediaSourceAVFObjC::platformMedia() const
+{
+    PlatformMedia pm;
+    pm.type = PlatformMedia::AVFoundationAssetType;
+    pm.media.avfAsset = m_asset.get();
+    return pm;
+}
+
+#if USE(ACCELERATED_COMPOSITING)
+PlatformLayer* MediaPlayerPrivateMediaSourceAVFObjC::platformLayer() const
+{
+    return m_sampleBufferDisplayLayer.get();
+}
+#endif
+
+void MediaPlayerPrivateMediaSourceAVFObjC::play()
+{
+    callOnMainThread(WTF::bind(&amp;MediaPlayerPrivateMediaSourceAVFObjC::playInternal, this));
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::playInternal()
+{
+    m_clock-&gt;start();
+    m_player-&gt;rateChanged();
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::pause()
+{
+    callOnMainThread(WTF::bind(&amp;MediaPlayerPrivateMediaSourceAVFObjC::pauseInternal, this));
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::pauseInternal()
+{
+    m_clock-&gt;stop();
+    m_player-&gt;rateChanged();
+}
+
+bool MediaPlayerPrivateMediaSourceAVFObjC::paused() const
+{
+    return !m_clock-&gt;isRunning();
+}
+
+bool MediaPlayerPrivateMediaSourceAVFObjC::supportsScanning() const
+{
+    return true;
+}
+
+IntSize MediaPlayerPrivateMediaSourceAVFObjC::naturalSize() const
+{
+    // FIXME(125156): Report the intrinsic size of the enabled video track.
+    return IntSize();
+}
+
+bool MediaPlayerPrivateMediaSourceAVFObjC::hasVideo() const
+{
+    return m_mediaSourcePrivate-&gt;hasVideo();
+}
+
+bool MediaPlayerPrivateMediaSourceAVFObjC::hasAudio() const
+{
+    return m_mediaSourcePrivate-&gt;hasAudio();
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::setVisible(bool)
+{
+    // No-op.
+}
+
+double MediaPlayerPrivateMediaSourceAVFObjC::durationDouble() const
+{
+    return m_mediaSource-&gt;duration();
+}
+
+double MediaPlayerPrivateMediaSourceAVFObjC::currentTimeDouble() const
+{
+    return m_clock-&gt;currentTime();
+}
+
+double MediaPlayerPrivateMediaSourceAVFObjC::startTimeDouble() const
+{
+    return 0;
+}
+
+double MediaPlayerPrivateMediaSourceAVFObjC::initialTime() const
+{
+    return 0;
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::seekWithTolerance(double time, double negativeThreshold, double positiveThreshold)
+{
+    m_seeking = true;
+    callOnMainThread(WTF::bind(&amp;MediaPlayerPrivateMediaSourceAVFObjC::seekInternal, this, time, negativeThreshold, positiveThreshold));
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::seekInternal(double time, double negativeThreshold, double positiveThreshold)
+{
+    MediaTime seekTime = m_mediaSourcePrivate-&gt;seekToTime(MediaTime::createWithDouble(time), MediaTime::createWithDouble(positiveThreshold), MediaTime::createWithDouble(negativeThreshold));
+    m_clock-&gt;setCurrentMediaTime(seekTime);
+    m_seeking = false;
+    m_player-&gt;timeChanged();
+}
+
+bool MediaPlayerPrivateMediaSourceAVFObjC::seeking() const
+{
+    return m_seeking;
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::setRateDouble(double rate)
+{
+    m_clock-&gt;setPlayRate(rate);
+    m_player-&gt;rateChanged();
+}
+
+MediaPlayer::NetworkState MediaPlayerPrivateMediaSourceAVFObjC::networkState() const
+{
+    return m_networkState;
+}
+
+MediaPlayer::ReadyState MediaPlayerPrivateMediaSourceAVFObjC::readyState() const
+{
+    return m_readyState;
+}
+
+PassRefPtr&lt;TimeRanges&gt; MediaPlayerPrivateMediaSourceAVFObjC::seekable() const
+{
+    return TimeRanges::create(minTimeSeekable(), maxTimeSeekableDouble());
+}
+
+double MediaPlayerPrivateMediaSourceAVFObjC::maxTimeSeekableDouble() const
+{
+    return durationDouble();
+}
+
+double MediaPlayerPrivateMediaSourceAVFObjC::minTimeSeekable() const
+{
+    return startTimeDouble();
+}
+
+PassRefPtr&lt;TimeRanges&gt; MediaPlayerPrivateMediaSourceAVFObjC::buffered() const
+{
+    return m_mediaSource-&gt;buffered();
+}
+
+bool MediaPlayerPrivateMediaSourceAVFObjC::didLoadingProgress() const
+{
+    bool loadingProgressed = m_loadingProgressed;
+    m_loadingProgressed = false;
+    return loadingProgressed;
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::setSize(const IntSize&amp;)
+{
+    // No-op.
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::paint(GraphicsContext*, const IntRect&amp;)
+{
+    // FIXME(125157): Implement painting.
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::paintCurrentFrameInContext(GraphicsContext*, const IntRect&amp;)
+{
+    // FIXME(125157): Implement painting.
+}
+
+bool MediaPlayerPrivateMediaSourceAVFObjC::hasAvailableVideoFrame() const
+{
+    return m_hasAvailableVideoFrame;
+}
+
+#if USE(ACCELERATED_COMPOSITING)
+bool MediaPlayerPrivateMediaSourceAVFObjC::supportsAcceleratedRendering() const
+{
+    return true;
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::acceleratedRenderingStateChanged()
+{
+    if (m_player-&gt;mediaPlayerClient()-&gt;mediaPlayerRenderingCanBeAccelerated(m_player))
+        ensureLayer();
+    else
+        destroyLayer();
+}
+#endif
+
+MediaPlayer::MovieLoadType MediaPlayerPrivateMediaSourceAVFObjC::movieLoadType() const
+{
+    return MediaPlayer::StoredStream;
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::prepareForRendering()
+{
+    // No-op.
+}
+
+String MediaPlayerPrivateMediaSourceAVFObjC::engineDescription() const
+{
+    static NeverDestroyed&lt;String&gt; description(ASCIILiteral(&quot;AVFoundation MediaSource Engine&quot;));
+    return description;
+}
+
+String MediaPlayerPrivateMediaSourceAVFObjC::languageOfPrimaryAudioTrack() const
+{
+    // FIXME(125158): implement languageOfPrimaryAudioTrack()
+    return emptyString();
+}
+
+size_t MediaPlayerPrivateMediaSourceAVFObjC::extraMemoryCost() const
+{
+    return 0;
+}
+
+unsigned long MediaPlayerPrivateMediaSourceAVFObjC::totalVideoFrames()
+{
+    return [[m_sampleBufferDisplayLayer videoPerformanceMetrics] totalNumberOfVideoFrames];
+}
+
+unsigned long MediaPlayerPrivateMediaSourceAVFObjC::droppedVideoFrames()
+{
+    return [[m_sampleBufferDisplayLayer videoPerformanceMetrics] numberOfDroppedVideoFrames];
+}
+
+unsigned long MediaPlayerPrivateMediaSourceAVFObjC::corruptedVideoFrames()
+{
+    return [[m_sampleBufferDisplayLayer videoPerformanceMetrics] numberOfCorruptedVideoFrames];
+}
+
+double MediaPlayerPrivateMediaSourceAVFObjC::totalFrameDelay()
+{
+    return [[m_sampleBufferDisplayLayer videoPerformanceMetrics] totalFrameDelay];
+}
+
+#pragma mark -
+#pragma mark Utility Methods
+
+void MediaPlayerPrivateMediaSourceAVFObjC::ensureLayer()
+{
+    if (m_sampleBufferDisplayLayer)
+        return;
+
+    m_sampleBufferDisplayLayer = adoptNS([[getAVSampleBufferDisplayLayerClass() alloc] init]);
+    [m_sampleBufferDisplayLayer setControlTimebase:m_clock-&gt;timebase()];
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::destroyLayer()
+{
+    if (!m_sampleBufferDisplayLayer)
+        return;
+
+    [m_sampleBufferDisplayLayer setControlTimebase:0];
+    m_sampleBufferDisplayLayer = nullptr;
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::durationChanged()
+{
+    m_player-&gt;durationChanged();
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::setReadyState(MediaPlayer::ReadyState readyState)
+{
+    if (m_readyState == readyState)
+        return;
+
+    m_readyState = readyState;
+    m_player-&gt;readyStateChanged();
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::setNetworkState(MediaPlayer::NetworkState networkState)
+{
+    if (m_networkState == networkState)
+        return;
+
+    m_networkState = networkState;
+    m_player-&gt;networkStateChanged();
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::addDisplayLayer(AVSampleBufferDisplayLayer* displayLayer)
+{
+    ASSERT(displayLayer);
+    if (displayLayer == m_sampleBufferDisplayLayer)
+        return;
+
+    m_sampleBufferDisplayLayer = displayLayer;
+    [m_sampleBufferDisplayLayer setControlTimebase:m_clock-&gt;timebase()];
+    m_player-&gt;mediaPlayerClient()-&gt;mediaPlayerRenderingModeChanged(m_player);
+
+    // FIXME: move this somewhere appropriate:
+    m_player-&gt;firstVideoFrameAvailable();
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::removeDisplayLayer(AVSampleBufferDisplayLayer* displayLayer)
+{
+    if (displayLayer != m_sampleBufferDisplayLayer)
+        return;
+
+    m_sampleBufferDisplayLayer = nullptr;
+    m_player-&gt;mediaPlayerClient()-&gt;mediaPlayerRenderingModeChanged(m_player);
+}
+
+}
+
+#endif
+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#import &quot;config.h&quot;
+#import &quot;MediaPlayerPrivateMediaSourceAVFObjC.h&quot;
+
+#if ENABLE(MEDIA_SOURCE) &amp;&amp; USE(AVFOUNDATION)
+
+#import &quot;HTMLMediaSource.h&quot;
+#import &quot;MediaSourcePrivateAVFObjC.h&quot;
+#import &quot;PlatformClockCM.h&quot;
+#import &quot;SoftLinking.h&quot;
+#import &lt;AVFoundation/AVSampleBufferDisplayLayer.h&gt;
+#import &lt;AVFoundation/AVAsset.h&gt;
+#import &lt;CoreMedia/CMSync.h&gt;
+#import &lt;objc_runtime.h&gt;
+#import &lt;wtf/NeverDestroyed.h&gt;
+#import &lt;wtf/Functional.h&gt;
+#import &lt;wtf/MainThread.h&gt;
+
+#pragma mark -
+#pragma mark Soft Linking
+
+SOFT_LINK_FRAMEWORK_OPTIONAL(AVFoundation)
+SOFT_LINK_FRAMEWORK_OPTIONAL(CoreMedia)
+
+SOFT_LINK_CLASS_OPTIONAL(AVFoundation, AVAsset)
+SOFT_LINK_CLASS_OPTIONAL(AVFoundation, AVURLAsset)
+SOFT_LINK_CLASS_OPTIONAL(AVFoundation, AVSampleBufferDisplayLayer)
+SOFT_LINK_CLASS_OPTIONAL(AVFoundation, AVStreamDataParser)
+
+namespace WebCore {
+
+#pragma mark -
+#pragma mark MediaPlayerPrivateMediaSourceAVFObjC
+
+MediaPlayerPrivateMediaSourceAVFObjC::MediaPlayerPrivateMediaSourceAVFObjC(MediaPlayer* player)
+    : m_player(player)
+    , m_clock(new PlatformClockCM())
+    , m_networkState(MediaPlayer::Empty)
+    , m_readyState(MediaPlayer::HaveNothing)
+    , m_seeking(false)
+    , m_loadingProgressed(false)
+{
+}
+
+MediaPlayerPrivateMediaSourceAVFObjC::~MediaPlayerPrivateMediaSourceAVFObjC()
+{
+}
+
+#pragma mark -
+#pragma mark MediaPlayer Factory Methods
+
+void MediaPlayerPrivateMediaSourceAVFObjC::registerMediaEngine(MediaEngineRegistrar registrar)
+{
+    if (isAvailable())
+        registrar(create, getSupportedTypes, supportsType, 0, 0, 0);
+}
+
+PassOwnPtr&lt;MediaPlayerPrivateInterface&gt; MediaPlayerPrivateMediaSourceAVFObjC::create(MediaPlayer* player)
+{
+    return adoptPtr(new MediaPlayerPrivateMediaSourceAVFObjC(player));
+}
+
+bool MediaPlayerPrivateMediaSourceAVFObjC::isAvailable()
+{
+    return AVFoundationLibrary() &amp;&amp; CoreMediaLibrary() &amp;&amp; getAVStreamDataParserClass();
+}
+
+static HashSet&lt;String&gt; mimeTypeCache()
+{
+    DEFINE_STATIC_LOCAL(HashSet&lt;String&gt;, cache, ());
+    static bool typeListInitialized = false;
+
+    if (typeListInitialized)
+        return cache;
+    typeListInitialized = true;
+
+    NSArray *types = [getAVURLAssetClass() audiovisualMIMETypes];
+    for (NSString *mimeType in types)
+        cache.add(mimeType);
+    
+    return cache;
+} 
+
+void MediaPlayerPrivateMediaSourceAVFObjC::getSupportedTypes(HashSet&lt;String&gt;&amp; types)
+{
+    types = mimeTypeCache();
+}
+
+MediaPlayer::SupportsType MediaPlayerPrivateMediaSourceAVFObjC::supportsType(const MediaEngineSupportParameters&amp; parameters)
+{
+    // This engine does not support non-media-source sources.
+    if (!parameters.isMediaSource)
+        return MediaPlayer::IsNotSupported;
+
+    if (!mimeTypeCache().contains(parameters.type))
+        return MediaPlayer::IsNotSupported;
+
+    // The spec says:
+    // &quot;Implementors are encouraged to return &quot;maybe&quot; unless the type can be confidently established as being supported or not.&quot;
+    if (parameters.codecs.isEmpty())
+        return MediaPlayer::MayBeSupported;
+
+    NSString *typeString = [NSString stringWithFormat:@&quot;%@; codecs=\&quot;%@\&quot;&quot;, (NSString *)parameters.type, (NSString *)parameters.codecs];
+    return [getAVURLAssetClass() isPlayableExtendedMIMEType:typeString] ? MediaPlayer::IsSupported : MediaPlayer::MayBeSupported;;
+}
+
+#pragma mark -
+#pragma mark MediaPlayerPrivateInterface Overrides
+
+void MediaPlayerPrivateMediaSourceAVFObjC::load(const String&amp;)
+{
+    ASSERT_NOT_REACHED();
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::load(const String&amp; url, PassRefPtr&lt;HTMLMediaSource&gt; source)
+{
+    UNUSED_PARAM(url);
+
+    m_mediaSource = source;
+    m_mediaSourcePrivate = MediaSourcePrivateAVFObjC::create(this);
+
+    m_mediaSource-&gt;setPrivateAndOpen(*m_mediaSourcePrivate);
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::cancelLoad()
+{
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::prepareToPlay()
+{
+}
+
+PlatformMedia MediaPlayerPrivateMediaSourceAVFObjC::platformMedia() const
+{
+    PlatformMedia pm;
+    pm.type = PlatformMedia::AVFoundationAssetType;
+    pm.media.avfAsset = m_asset.get();
+    return pm;
+}
+
+#if USE(ACCELERATED_COMPOSITING)
+PlatformLayer* MediaPlayerPrivateMediaSourceAVFObjC::platformLayer() const
+{
+    return m_sampleBufferDisplayLayer.get();
+}
+#endif
+
+void MediaPlayerPrivateMediaSourceAVFObjC::play()
+{
+    callOnMainThread(WTF::bind(&amp;MediaPlayerPrivateMediaSourceAVFObjC::playInternal, this));
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::playInternal()
+{
+    m_clock-&gt;start();
+    m_player-&gt;rateChanged();
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::pause()
+{
+    callOnMainThread(WTF::bind(&amp;MediaPlayerPrivateMediaSourceAVFObjC::pauseInternal, this));
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::pauseInternal()
+{
+    m_clock-&gt;stop();
+    m_player-&gt;rateChanged();
+}
+
+bool MediaPlayerPrivateMediaSourceAVFObjC::paused() const
+{
+    return !m_clock-&gt;isRunning();
+}
+
+bool MediaPlayerPrivateMediaSourceAVFObjC::supportsScanning() const
+{
+    return true;
+}
+
+IntSize MediaPlayerPrivateMediaSourceAVFObjC::naturalSize() const
+{
+    // FIXME(125156): Report the intrinsic size of the enabled video track.
+    return IntSize();
+}
+
+bool MediaPlayerPrivateMediaSourceAVFObjC::hasVideo() const
+{
+    return m_mediaSourcePrivate-&gt;hasVideo();
+}
+
+bool MediaPlayerPrivateMediaSourceAVFObjC::hasAudio() const
+{
+    return m_mediaSourcePrivate-&gt;hasAudio();
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::setVisible(bool)
+{
+    // No-op.
+}
+
+double MediaPlayerPrivateMediaSourceAVFObjC::durationDouble() const
+{
+    return m_mediaSource-&gt;duration();
+}
+
+double MediaPlayerPrivateMediaSourceAVFObjC::currentTimeDouble() const
+{
+    return m_clock-&gt;currentTime();
+}
+
+double MediaPlayerPrivateMediaSourceAVFObjC::startTimeDouble() const
+{
+    return 0;
+}
+
+double MediaPlayerPrivateMediaSourceAVFObjC::initialTime() const
+{
+    return 0;
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::seekWithTolerance(double time, double negativeThreshold, double positiveThreshold)
+{
+    m_seeking = true;
+    callOnMainThread(WTF::bind(&amp;MediaPlayerPrivateMediaSourceAVFObjC::seekInternal, this, time, negativeThreshold, positiveThreshold));
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::seekInternal(double time, double negativeThreshold, double positiveThreshold)
+{
+    MediaTime seekTime = m_mediaSourcePrivate-&gt;seekToTime(MediaTime::createWithDouble(time), MediaTime::createWithDouble(positiveThreshold), MediaTime::createWithDouble(negativeThreshold));
+    m_clock-&gt;setCurrentMediaTime(seekTime);
+    m_seeking = false;
+    m_player-&gt;timeChanged();
+}
+
+bool MediaPlayerPrivateMediaSourceAVFObjC::seeking() const
+{
+    return m_seeking;
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::setRateDouble(double rate)
+{
+    m_clock-&gt;setPlayRate(rate);
+    m_player-&gt;rateChanged();
+}
+
+MediaPlayer::NetworkState MediaPlayerPrivateMediaSourceAVFObjC::networkState() const
+{
+    return m_networkState;
+}
+
+MediaPlayer::ReadyState MediaPlayerPrivateMediaSourceAVFObjC::readyState() const
+{
+    return m_readyState;
+}
+
+PassRefPtr&lt;TimeRanges&gt; MediaPlayerPrivateMediaSourceAVFObjC::seekable() const
+{
+    return TimeRanges::create(minTimeSeekable(), maxTimeSeekableDouble());
+}
+
+double MediaPlayerPrivateMediaSourceAVFObjC::maxTimeSeekableDouble() const
+{
+    return durationDouble();
+}
+
+double MediaPlayerPrivateMediaSourceAVFObjC::minTimeSeekable() const
+{
+    return startTimeDouble();
+}
+
+PassRefPtr&lt;TimeRanges&gt; MediaPlayerPrivateMediaSourceAVFObjC::buffered() const
+{
+    return m_mediaSource-&gt;buffered();
+}
+
+bool MediaPlayerPrivateMediaSourceAVFObjC::didLoadingProgress() const
+{
+    bool loadingProgressed = m_loadingProgressed;
+    m_loadingProgressed = false;
+    return loadingProgressed;
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::setSize(const IntSize&amp;)
+{
+    // No-op.
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::paint(GraphicsContext*, const IntRect&amp;)
+{
+    // FIXME(125157): Implement painting.
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::paintCurrentFrameInContext(GraphicsContext*, const IntRect&amp;)
+{
+    // FIXME(125157): Implement painting.
+}
+
+bool MediaPlayerPrivateMediaSourceAVFObjC::hasAvailableVideoFrame() const
+{
+    return m_hasAvailableVideoFrame;
+}
+
+#if USE(ACCELERATED_COMPOSITING)
+bool MediaPlayerPrivateMediaSourceAVFObjC::supportsAcceleratedRendering() const
+{
+    return true;
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::acceleratedRenderingStateChanged()
+{
+    if (m_player-&gt;mediaPlayerClient()-&gt;mediaPlayerRenderingCanBeAccelerated(m_player))
+        ensureLayer();
+    else
+        destroyLayer();
+}
+#endif
+
+MediaPlayer::MovieLoadType MediaPlayerPrivateMediaSourceAVFObjC::movieLoadType() const
+{
+    return MediaPlayer::StoredStream;
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::prepareForRendering()
+{
+    // No-op.
+}
+
+String MediaPlayerPrivateMediaSourceAVFObjC::engineDescription() const
+{
+    static NeverDestroyed&lt;String&gt; description(ASCIILiteral(&quot;AVFoundation MediaSource Engine&quot;));
+    return description;
+}
+
+String MediaPlayerPrivateMediaSourceAVFObjC::languageOfPrimaryAudioTrack() const
+{
+    // FIXME(125158): implement languageOfPrimaryAudioTrack()
+    return emptyString();
+}
+
+size_t MediaPlayerPrivateMediaSourceAVFObjC::extraMemoryCost() const
+{
+    return 0;
+}
+
+#pragma mark -
+#pragma mark Utility Methods
+
+void MediaPlayerPrivateMediaSourceAVFObjC::ensureLayer()
+{
+    if (m_sampleBufferDisplayLayer)
+        return;
+
+    m_sampleBufferDisplayLayer = adoptNS([[getAVSampleBufferDisplayLayerClass() alloc] init]);
+    [m_sampleBufferDisplayLayer setControlTimebase:m_clock-&gt;timebase()];
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::destroyLayer()
+{
+    if (!m_sampleBufferDisplayLayer)
+        return;
+
+    [m_sampleBufferDisplayLayer setControlTimebase:0];
+    m_sampleBufferDisplayLayer = nullptr;
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::durationChanged()
+{
+    m_player-&gt;durationChanged();
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::setReadyState(MediaPlayer::ReadyState readyState)
+{
+    if (m_readyState == readyState)
+        return;
+
+    m_readyState = readyState;
+    m_player-&gt;readyStateChanged();
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::setNetworkState(MediaPlayer::NetworkState networkState)
+{
+    if (m_networkState == networkState)
+        return;
+
+    m_networkState = networkState;
+    m_player-&gt;networkStateChanged();
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::addDisplayLayer(AVSampleBufferDisplayLayer* displayLayer)
+{
+    ASSERT(displayLayer);
+    if (displayLayer == m_sampleBufferDisplayLayer)
+        return;
+
+    m_sampleBufferDisplayLayer = displayLayer;
+    [m_sampleBufferDisplayLayer setControlTimebase:m_clock-&gt;timebase()];
+    m_player-&gt;mediaPlayerClient()-&gt;mediaPlayerRenderingModeChanged(m_player);
+
+    // FIXME: move this somewhere appropriate:
+    m_player-&gt;firstVideoFrameAvailable();
+}
+
+void MediaPlayerPrivateMediaSourceAVFObjC::removeDisplayLayer(AVSampleBufferDisplayLayer* displayLayer)
+{
+    if (displayLayer != m_sampleBufferDisplayLayer)
+        return;
+
+    m_sampleBufferDisplayLayer = nullptr;
+    m_player-&gt;mediaPlayerClient()-&gt;mediaPlayerRenderingModeChanged(m_player);
+}
+
+}
+
+#endif
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformgraphicsavfoundationobjcMediaSourcePrivateAVFObjCh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.h                                (rev 0)
+++ branches/jsCStack/Source/WebCore/platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,182 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#ifndef MediaSourcePrivateAVFObjC_h
+#define MediaSourcePrivateAVFObjC_h
+
+#if ENABLE(MEDIA_SOURCE) &amp;&amp; USE(AVFOUNDATION)
+
+#include &quot;MediaSourcePrivate.h&quot;
+#include &lt;wtf/HashMap.h&gt;
+#include &lt;wtf/RefPtr.h&gt;
+#include &lt;wtf/RetainPtr.h&gt;
+#include &lt;wtf/Vector.h&gt;
+
+OBJC_CLASS AVAsset;
+OBJC_CLASS AVStreamDataParser;
+OBJC_CLASS NSError;
+OBJC_CLASS NSObject;
+typedef struct opaqueCMSampleBuffer *CMSampleBufferRef;
+
+namespace WebCore {
+
+class MediaPlayerPrivateMediaSourceAVFObjC;
+class SourceBufferPrivateAVFObjC;
+class TimeRanges;
+
+class MediaSourcePrivateAVFObjC FINAL : public MediaSourcePrivate {
+public:
+    static RefPtr&lt;MediaSourcePrivateAVFObjC&gt; create(MediaPlayerPrivateMediaSourceAVFObjC*);
+    virtual ~MediaSourcePrivateAVFObjC();
+
+    MediaPlayerPrivateMediaSourceAVFObjC* player() const { return m_player; }
+    const Vector&lt;SourceBufferPrivateAVFObjC*&gt;&amp; activeSourceBuffers() const { return m_activeSourceBuffers; }
+
+    virtual AddStatus addSourceBuffer(const ContentType&amp;, RefPtr&lt;SourceBufferPrivate&gt;&amp;) OVERRIDE;
+    virtual double duration() OVERRIDE;
+    virtual void setDuration(double) OVERRIDE;
+    virtual void markEndOfStream(EndOfStreamStatus) OVERRIDE;
+    virtual void unmarkEndOfStream() OVERRIDE;
+    virtual MediaPlayer::ReadyState readyState() const OVERRIDE;
+    virtual void setReadyState(MediaPlayer::ReadyState) OVERRIDE;
+
+    bool hasAudio() const;
+    bool hasVideo() const;
+
+    MediaTime seekToTime(MediaTime, MediaTime negativeThreshold, MediaTime positiveThreshold);
+
+private:
+    MediaSourcePrivateAVFObjC(MediaPlayerPrivateMediaSourceAVFObjC*);
+
+    void sourceBufferPrivateDidChangeActiveState(SourceBufferPrivateAVFObjC*, bool active);
+    void sourceBufferPrivateDidReceiveInitializationSegment(SourceBufferPrivateAVFObjC*);
+    void monitorSourceBuffers();
+    void removeSourceBuffer(SourceBufferPrivate*);
+
+    friend class SourceBufferPrivateAVFObjC;
+
+    MediaPlayerPrivateMediaSourceAVFObjC* m_player;
+    double m_duration;
+    Vector&lt;RefPtr&lt;SourceBufferPrivateAVFObjC&gt;&gt; m_sourceBuffers;
+    Vector&lt;SourceBufferPrivateAVFObjC*&gt; m_activeSourceBuffers;
+    bool m_isEnded;
+};
+
+}
+
+#endif // ENABLE(MEDIA_SOURCE) &amp;&amp; USE(AVFOUNDATION)
+
+#endif
+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#ifndef MediaSourcePrivateAVFObjC_h
+#define MediaSourcePrivateAVFObjC_h
+
+#if ENABLE(MEDIA_SOURCE) &amp;&amp; USE(AVFOUNDATION)
+
+#include &quot;MediaSourcePrivate.h&quot;
+#include &lt;wtf/HashMap.h&gt;
+#include &lt;wtf/RefPtr.h&gt;
+#include &lt;wtf/RetainPtr.h&gt;
+#include &lt;wtf/Vector.h&gt;
+
+OBJC_CLASS AVAsset;
+OBJC_CLASS AVStreamDataParser;
+OBJC_CLASS NSError;
+OBJC_CLASS NSObject;
+typedef struct opaqueCMSampleBuffer *CMSampleBufferRef;
+
+namespace WebCore {
+
+class MediaPlayerPrivateMediaSourceAVFObjC;
+class SourceBufferPrivateAVFObjC;
+class TimeRanges;
+
+class MediaSourcePrivateAVFObjC FINAL : public MediaSourcePrivate {
+public:
+    static RefPtr&lt;MediaSourcePrivateAVFObjC&gt; create(MediaPlayerPrivateMediaSourceAVFObjC*);
+    virtual ~MediaSourcePrivateAVFObjC();
+
+    MediaPlayerPrivateMediaSourceAVFObjC* player() const { return m_player; }
+    const Vector&lt;SourceBufferPrivateAVFObjC*&gt;&amp; activeSourceBuffers() const { return m_activeSourceBuffers; }
+
+    virtual AddStatus addSourceBuffer(const ContentType&amp;, RefPtr&lt;SourceBufferPrivate&gt;&amp;) OVERRIDE;
+    virtual double duration() OVERRIDE;
+    virtual void setDuration(double) OVERRIDE;
+    virtual void markEndOfStream(EndOfStreamStatus) OVERRIDE;
+    virtual void unmarkEndOfStream() OVERRIDE;
+    virtual MediaPlayer::ReadyState readyState() const OVERRIDE;
+    virtual void setReadyState(MediaPlayer::ReadyState) OVERRIDE;
+
+    bool hasAudio() const;
+    bool hasVideo() const;
+
+    MediaTime seekToTime(MediaTime, MediaTime negativeThreshold, MediaTime positiveThreshold);
+
+private:
+    MediaSourcePrivateAVFObjC(MediaPlayerPrivateMediaSourceAVFObjC*);
+
+    void sourceBufferPrivateDidChangeActiveState(SourceBufferPrivateAVFObjC*, bool active);
+    void sourceBufferPrivateDidReceiveInitializationSegment(SourceBufferPrivateAVFObjC*);
+    void monitorSourceBuffers();
+    void removeSourceBuffer(SourceBufferPrivate*);
+
+    friend class SourceBufferPrivateAVFObjC;
+
+    MediaPlayerPrivateMediaSourceAVFObjC* m_player;
+    double m_duration;
+    Vector&lt;RefPtr&lt;SourceBufferPrivateAVFObjC&gt;&gt; m_sourceBuffers;
+    Vector&lt;SourceBufferPrivateAVFObjC*&gt; m_activeSourceBuffers;
+    bool m_isEnded;
+};
+
+}
+
+#endif // ENABLE(MEDIA_SOURCE) &amp;&amp; USE(AVFOUNDATION)
+
+#endif
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformgraphicsavfoundationobjcMediaSourcePrivateAVFObjCmm"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.mm (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.mm                                (rev 0)
+++ branches/jsCStack/Source/WebCore/platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,353 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#include &quot;config.h&quot;
+#include &quot;MediaSourcePrivateAVFObjC.h&quot;
+
+#if ENABLE(MEDIA_SOURCE) &amp;&amp; USE(AVFOUNDATION)
+
+#import &quot;ContentType.h&quot;
+#import &quot;ExceptionCodePlaceholder.h&quot;
+#import &quot;MediaPlayerPrivateMediaSourceAVFObjC.h&quot;
+#import &quot;SourceBufferPrivateAVFObjC.h&quot;
+#import &quot;NotImplemented.h&quot;
+#import &quot;SoftLinking.h&quot;
+#import &lt;objc/runtime.h&gt;
+#import &lt;wtf/text/AtomicString.h&gt;
+#import &lt;wtf/text/StringBuilder.h&gt;
+
+namespace WebCore {
+
+#pragma mark -
+#pragma mark MediaSourcePrivateAVFObjC
+
+RefPtr&lt;MediaSourcePrivateAVFObjC&gt; MediaSourcePrivateAVFObjC::create(MediaPlayerPrivateMediaSourceAVFObjC* parent)
+{
+    return adoptRef(new MediaSourcePrivateAVFObjC(parent));
+}
+
+MediaSourcePrivateAVFObjC::MediaSourcePrivateAVFObjC(MediaPlayerPrivateMediaSourceAVFObjC* parent)
+    : m_player(parent)
+    , m_duration(std::numeric_limits&lt;double&gt;::quiet_NaN())
+    , m_isEnded(false)
+{
+}
+
+MediaSourcePrivateAVFObjC::~MediaSourcePrivateAVFObjC()
+{
+    for (auto it = m_sourceBuffers.begin(), end = m_sourceBuffers.end(); it != end; ++it)
+        (*it)-&gt;clearMediaSource();
+}
+
+MediaSourcePrivate::AddStatus MediaSourcePrivateAVFObjC::addSourceBuffer(const ContentType&amp; contentType, RefPtr&lt;SourceBufferPrivate&gt;&amp; outPrivate)
+{
+    MediaEngineSupportParameters parameters;
+    parameters.isMediaSource = true;
+    parameters.type = contentType.type();
+    parameters.codecs = contentType.parameter(ASCIILiteral(&quot;codecs&quot;));
+    if (MediaPlayerPrivateMediaSourceAVFObjC::supportsType(parameters) == MediaPlayer::IsNotSupported)
+        return NotSupported;
+
+    m_sourceBuffers.append(SourceBufferPrivateAVFObjC::create(this));
+    outPrivate = m_sourceBuffers.last();
+
+    return Ok;
+}
+
+void MediaSourcePrivateAVFObjC::removeSourceBuffer(SourceBufferPrivate* buffer)
+{
+    ASSERT(m_sourceBuffers.contains(buffer));
+
+    size_t pos = m_activeSourceBuffers.find(buffer);
+    if (pos != notFound)
+        m_activeSourceBuffers.remove(pos);
+
+    pos = m_sourceBuffers.find(buffer);
+    m_sourceBuffers.remove(pos);
+}
+
+double MediaSourcePrivateAVFObjC::duration()
+{
+    return m_duration;
+}
+
+void MediaSourcePrivateAVFObjC::setDuration(double duration)
+{
+    if (duration == m_duration)
+        return;
+
+    m_duration = duration;
+}
+
+void MediaSourcePrivateAVFObjC::markEndOfStream(EndOfStreamStatus status)
+{
+    if (status == EosNoError)
+        m_player-&gt;setNetworkState(MediaPlayer::Loaded);
+    m_isEnded = true;
+}
+
+void MediaSourcePrivateAVFObjC::unmarkEndOfStream() 
+{
+    // FIXME(125159): implement unmarkEndOfStream()
+    m_isEnded = false;
+}
+
+MediaPlayer::ReadyState MediaSourcePrivateAVFObjC::readyState() const
+{
+    return m_player-&gt;readyState();
+}
+
+void MediaSourcePrivateAVFObjC::setReadyState(MediaPlayer::ReadyState readyState)
+{
+    m_player-&gt;setReadyState(readyState);
+}
+
+void MediaSourcePrivateAVFObjC::sourceBufferPrivateDidChangeActiveState(SourceBufferPrivateAVFObjC* buffer, bool active)
+{
+    if (active &amp;&amp; !m_activeSourceBuffers.contains(buffer))
+        m_activeSourceBuffers.append(buffer);
+
+    if (!active) {
+        size_t position = m_activeSourceBuffers.find(buffer);
+        if (position != notFound)
+            m_activeSourceBuffers.remove(position);
+    }
+}
+
+static bool MediaSourcePrivateAVFObjCHasAudio(PassRefPtr&lt;SourceBufferPrivateAVFObjC&gt; prpSourceBuffer)
+{
+    RefPtr&lt;SourceBufferPrivateAVFObjC&gt; sourceBuffer = prpSourceBuffer;
+    return sourceBuffer-&gt;hasAudio();
+}
+
+bool MediaSourcePrivateAVFObjC::hasAudio() const
+{
+    return std::any_of(m_activeSourceBuffers.begin(), m_activeSourceBuffers.end(), MediaSourcePrivateAVFObjCHasAudio);
+}
+
+static bool MediaSourcePrivateAVFObjCHasVideo(PassRefPtr&lt;SourceBufferPrivateAVFObjC&gt; prpSourceBuffer)
+{
+    RefPtr&lt;SourceBufferPrivateAVFObjC&gt; sourceBuffer = prpSourceBuffer;
+    return sourceBuffer-&gt;hasVideo();
+}
+
+bool MediaSourcePrivateAVFObjC::hasVideo() const
+{
+    return std::any_of(m_activeSourceBuffers.begin(), m_activeSourceBuffers.end(), MediaSourcePrivateAVFObjCHasVideo);
+}
+
+MediaTime MediaSourcePrivateAVFObjC::seekToTime(MediaTime targetTime, MediaTime negativeThreshold, MediaTime positiveThreshold)
+{
+    MediaTime seekTime = targetTime;
+    for (auto it = m_activeSourceBuffers.begin(), end = m_activeSourceBuffers.end(); it != end; ++it) {
+        MediaTime sourceSeekTime = (*it)-&gt;fastSeekTimeForMediaTime(targetTime, negativeThreshold, positiveThreshold);
+        if (abs(targetTime - sourceSeekTime) &gt; abs(targetTime - seekTime))
+            seekTime = sourceSeekTime;
+    }
+
+    for (auto it = m_activeSourceBuffers.begin(), end = m_activeSourceBuffers.end(); it != end; ++it)
+        (*it)-&gt;seekToTime(seekTime);
+
+    return seekTime;
+}
+
+}
+
+#endif // ENABLE(MEDIA_SOURCE) &amp;&amp; USE(AVFOUNDATION)
+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#include &quot;config.h&quot;
+#include &quot;MediaSourcePrivateAVFObjC.h&quot;
+
+#if ENABLE(MEDIA_SOURCE) &amp;&amp; USE(AVFOUNDATION)
+
+#import &quot;ContentType.h&quot;
+#import &quot;ExceptionCodePlaceholder.h&quot;
+#import &quot;MediaPlayerPrivateMediaSourceAVFObjC.h&quot;
+#import &quot;SourceBufferPrivateAVFObjC.h&quot;
+#import &quot;NotImplemented.h&quot;
+#import &quot;SoftLinking.h&quot;
+#import &lt;objc/runtime.h&gt;
+#import &lt;wtf/text/AtomicString.h&gt;
+#import &lt;wtf/text/StringBuilder.h&gt;
+
+namespace WebCore {
+
+#pragma mark -
+#pragma mark MediaSourcePrivateAVFObjC
+
+RefPtr&lt;MediaSourcePrivateAVFObjC&gt; MediaSourcePrivateAVFObjC::create(MediaPlayerPrivateMediaSourceAVFObjC* parent)
+{
+    return adoptRef(new MediaSourcePrivateAVFObjC(parent));
+}
+
+MediaSourcePrivateAVFObjC::MediaSourcePrivateAVFObjC(MediaPlayerPrivateMediaSourceAVFObjC* parent)
+    : m_player(parent)
+    , m_duration(std::numeric_limits&lt;double&gt;::quiet_NaN())
+    , m_isEnded(false)
+{
+}
+
+MediaSourcePrivateAVFObjC::~MediaSourcePrivateAVFObjC()
+{
+}
+
+MediaSourcePrivate::AddStatus MediaSourcePrivateAVFObjC::addSourceBuffer(const ContentType&amp; contentType, RefPtr&lt;SourceBufferPrivate&gt;&amp; outPrivate)
+{
+    MediaEngineSupportParameters parameters;
+    parameters.isMediaSource = true;
+    parameters.type = contentType.type();
+    parameters.codecs = contentType.parameter(ASCIILiteral(&quot;codecs&quot;));
+    if (MediaPlayerPrivateMediaSourceAVFObjC::supportsType(parameters) == MediaPlayer::IsNotSupported)
+        return NotSupported;
+
+    m_sourceBuffers.append(SourceBufferPrivateAVFObjC::create(this));
+    outPrivate = m_sourceBuffers.last();
+
+    return Ok;
+}
+
+void MediaSourcePrivateAVFObjC::removeSourceBuffer(SourceBufferPrivate* buffer)
+{
+    ASSERT(m_sourceBuffers.contains(buffer));
+
+    size_t pos = m_activeSourceBuffers.find(buffer);
+    if (pos != notFound)
+        m_activeSourceBuffers.remove(pos);
+
+    pos = m_sourceBuffers.find(buffer);
+    m_sourceBuffers.remove(pos);
+}
+
+double MediaSourcePrivateAVFObjC::duration()
+{
+    return m_duration;
+}
+
+void MediaSourcePrivateAVFObjC::setDuration(double duration)
+{
+    if (duration == m_duration)
+        return;
+
+    m_duration = duration;
+}
+
+void MediaSourcePrivateAVFObjC::markEndOfStream(EndOfStreamStatus) 
+{
+    // FIXME(125159): implement markEndOfStream()
+    m_isEnded = true;
+}
+
+void MediaSourcePrivateAVFObjC::unmarkEndOfStream() 
+{
+    // FIXME(125159): implement unmarkEndOfStream()
+    m_isEnded = false;
+}
+
+MediaPlayer::ReadyState MediaSourcePrivateAVFObjC::readyState() const
+{
+    return m_player-&gt;readyState();
+}
+
+void MediaSourcePrivateAVFObjC::setReadyState(MediaPlayer::ReadyState readyState)
+{
+    m_player-&gt;setReadyState(readyState);
+}
+
+void MediaSourcePrivateAVFObjC::sourceBufferPrivateDidChangeActiveState(SourceBufferPrivateAVFObjC* buffer, bool active)
+{
+    if (active &amp;&amp; !m_activeSourceBuffers.contains(buffer))
+        m_activeSourceBuffers.append(buffer);
+
+    if (!active) {
+        size_t position = m_activeSourceBuffers.find(buffer);
+        if (position != notFound)
+            m_activeSourceBuffers.remove(position);
+    }
+}
+
+static bool MediaSourcePrivateAVFObjCHasAudio(PassRefPtr&lt;SourceBufferPrivateAVFObjC&gt; prpSourceBuffer)
+{
+    RefPtr&lt;SourceBufferPrivateAVFObjC&gt; sourceBuffer = prpSourceBuffer;
+    return sourceBuffer-&gt;hasAudio();
+}
+
+bool MediaSourcePrivateAVFObjC::hasAudio() const
+{
+    return std::any_of(m_activeSourceBuffers.begin(), m_activeSourceBuffers.end(), MediaSourcePrivateAVFObjCHasAudio);
+}
+
+static bool MediaSourcePrivateAVFObjCHasVideo(PassRefPtr&lt;SourceBufferPrivateAVFObjC&gt; prpSourceBuffer)
+{
+    RefPtr&lt;SourceBufferPrivateAVFObjC&gt; sourceBuffer = prpSourceBuffer;
+    return sourceBuffer-&gt;hasVideo();
+}
+
+bool MediaSourcePrivateAVFObjC::hasVideo() const
+{
+    return std::any_of(m_activeSourceBuffers.begin(), m_activeSourceBuffers.end(), MediaSourcePrivateAVFObjCHasVideo);
+}
+
+MediaTime MediaSourcePrivateAVFObjC::seekToTime(MediaTime targetTime, MediaTime negativeThreshold, MediaTime positiveThreshold)
+{
+    MediaTime seekTime = targetTime;
+    for (auto it = m_activeSourceBuffers.begin(), end = m_activeSourceBuffers.end(); it != end; ++it) {
+        MediaTime sourceSeekTime = (*it)-&gt;fastSeekTimeForMediaTime(targetTime, negativeThreshold, positiveThreshold);
+        if (abs(targetTime - sourceSeekTime) &gt; abs(targetTime - seekTime))
+            seekTime = sourceSeekTime;
+    }
+
+    for (auto it = m_activeSourceBuffers.begin(), end = m_activeSourceBuffers.end(); it != end; ++it)
+        (*it)-&gt;seekToTime(seekTime);
+
+    return seekTime;
+}
+
+}
+
+#endif // ENABLE(MEDIA_SOURCE) &amp;&amp; USE(AVFOUNDATION)
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformgraphicsavfoundationobjcSourceBufferPrivateAVFObjCh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h                                (rev 0)
+++ branches/jsCStack/Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,232 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#ifndef SourceBufferPrivateAVFObjC_h
+#define SourceBufferPrivateAVFObjC_h
+
+#if ENABLE(MEDIA_SOURCE) &amp;&amp; USE(AVFOUNDATION)
+
+#include &quot;SourceBufferPrivate.h&quot;
+#include &lt;wtf/Deque.h&gt;
+#include &lt;wtf/HashMap.h&gt;
+#include &lt;wtf/MediaTime.h&gt;
+#include &lt;wtf/RefPtr.h&gt;
+#include &lt;wtf/RetainPtr.h&gt;
+#include &lt;wtf/Vector.h&gt;
+#include &lt;wtf/text/AtomicString.h&gt;
+
+OBJC_CLASS AVAsset;
+OBJC_CLASS AVStreamDataParser;
+OBJC_CLASS AVSampleBufferDisplayLayer;
+OBJC_CLASS NSError;
+OBJC_CLASS NSObject;
+typedef struct opaqueCMSampleBuffer *CMSampleBufferRef;
+typedef const struct opaqueCMFormatDescription *CMFormatDescriptionRef;
+
+namespace WebCore {
+
+class MediaSourcePrivateAVFObjC;
+class TimeRanges;
+class AudioTrackPrivate;
+class VideoTrackPrivate;
+class AudioTrackPrivateMediaSourceAVFObjC;
+class VideoTrackPrivateMediaSourceAVFObjC;
+
+class SourceBufferPrivateAVFObjC FINAL : public SourceBufferPrivate {
+public:
+    static RefPtr&lt;SourceBufferPrivateAVFObjC&gt; create(MediaSourcePrivateAVFObjC*);
+    virtual ~SourceBufferPrivateAVFObjC();
+
+    void clearMediaSource() { m_mediaSource = nullptr; }
+
+    // AVStreamDataParser delegate methods
+    void didParseStreamDataAsAsset(AVAsset*);
+    void didFailToParseStreamDataWithError(NSError*);
+    void didProvideMediaDataForTrackID(int trackID, CMSampleBufferRef, const String&amp; mediaType, unsigned flags);
+    void didReachEndOfTrackWithTrackID(int trackID, const String&amp; mediaType);
+
+    bool processCodedFrame(int trackID, CMSampleBufferRef, const String&amp; mediaType);
+
+    bool hasVideo() const;
+    bool hasAudio() const;
+
+    void trackDidChangeEnabled(VideoTrackPrivateMediaSourceAVFObjC*);
+    void trackDidChangeEnabled(AudioTrackPrivateMediaSourceAVFObjC*);
+
+    void seekToTime(MediaTime);
+    MediaTime fastSeekTimeForMediaTime(MediaTime, MediaTime negativeThreshold, MediaTime positiveThreshold);
+
+private:
+    explicit SourceBufferPrivateAVFObjC(MediaSourcePrivateAVFObjC*);
+
+    // SourceBufferPrivate overrides
+    virtual void setClient(SourceBufferPrivateClient*) OVERRIDE;
+    virtual AppendResult append(const unsigned char* data, unsigned length) OVERRIDE;
+    virtual void abort() OVERRIDE;
+    virtual void removedFromMediaSource() OVERRIDE;
+    virtual MediaPlayer::ReadyState readyState() const OVERRIDE;
+    virtual void setReadyState(MediaPlayer::ReadyState) OVERRIDE;
+    virtual void evictCodedFrames() OVERRIDE;
+    virtual bool isFull() OVERRIDE;
+    virtual void flushAndEnqueueNonDisplayingSamples(Vector&lt;RefPtr&lt;MediaSample&gt;&gt;, AtomicString trackID) OVERRIDE;
+    virtual void enqueueSample(PassRefPtr&lt;MediaSample&gt;, AtomicString trackID) OVERRIDE;
+    virtual bool isReadyForMoreSamples() OVERRIDE;
+    virtual void setActive(bool) OVERRIDE;
+
+    Vector&lt;RefPtr&lt;VideoTrackPrivate&gt;&gt; m_videoTracks;
+    Vector&lt;RefPtr&lt;AudioTrackPrivate&gt;&gt; m_audioTracks;
+
+    RetainPtr&lt;AVStreamDataParser&gt; m_parser;
+    RetainPtr&lt;AVAsset&gt; m_asset;
+    RetainPtr&lt;AVSampleBufferDisplayLayer&gt; m_displayLayer;
+    RetainPtr&lt;NSObject&gt; m_delegate;
+
+    MediaSourcePrivateAVFObjC* m_mediaSource;
+    SourceBufferPrivateClient* m_client;
+
+    bool m_parsingSucceeded;
+    int m_enabledVideoTrackID;
+};
+
+}
+
+#endif // ENABLE(MEDIA_SOURCE) &amp;&amp; USE(AVFOUNDATION)
+
+#endif
+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#ifndef SourceBufferPrivateAVFObjC_h
+#define SourceBufferPrivateAVFObjC_h
+
+#if ENABLE(MEDIA_SOURCE) &amp;&amp; USE(AVFOUNDATION)
+
+#include &quot;SourceBufferPrivate.h&quot;
+#include &lt;wtf/Deque.h&gt;
+#include &lt;wtf/HashMap.h&gt;
+#include &lt;wtf/MediaTime.h&gt;
+#include &lt;wtf/RefPtr.h&gt;
+#include &lt;wtf/RetainPtr.h&gt;
+#include &lt;wtf/Vector.h&gt;
+#include &lt;wtf/text/AtomicString.h&gt;
+
+OBJC_CLASS AVAsset;
+OBJC_CLASS AVStreamDataParser;
+OBJC_CLASS AVSampleBufferDisplayLayer;
+OBJC_CLASS NSError;
+OBJC_CLASS NSObject;
+typedef struct opaqueCMSampleBuffer *CMSampleBufferRef;
+typedef const struct opaqueCMFormatDescription *CMFormatDescriptionRef;
+
+namespace WebCore {
+
+class MediaSourcePrivateAVFObjC;
+class TimeRanges;
+class AudioTrackPrivate;
+class VideoTrackPrivate;
+class AudioTrackPrivateMediaSourceAVFObjC;
+class VideoTrackPrivateMediaSourceAVFObjC;
+
+class SourceBufferPrivateAVFObjC FINAL : public SourceBufferPrivate {
+public:
+    static RefPtr&lt;SourceBufferPrivateAVFObjC&gt; create(MediaSourcePrivateAVFObjC*);
+    virtual ~SourceBufferPrivateAVFObjC();
+
+    // AVStreamDataParser delegate methods
+    void didParseStreamDataAsAsset(AVAsset*);
+    void didFailToParseStreamDataWithError(NSError*);
+    void didProvideMediaDataForTrackID(int trackID, CMSampleBufferRef, const String&amp; mediaType, unsigned flags);
+    void didReachEndOfTrackWithTrackID(int trackID, const String&amp; mediaType);
+
+    bool processCodedFrame(int trackID, CMSampleBufferRef, const String&amp; mediaType);
+
+    bool hasVideo() const;
+    bool hasAudio() const;
+
+    void trackDidChangeEnabled(VideoTrackPrivateMediaSourceAVFObjC*);
+    void trackDidChangeEnabled(AudioTrackPrivateMediaSourceAVFObjC*);
+
+    void seekToTime(MediaTime);
+    MediaTime fastSeekTimeForMediaTime(MediaTime, MediaTime negativeThreshold, MediaTime positiveThreshold);
+
+private:
+    explicit SourceBufferPrivateAVFObjC(MediaSourcePrivateAVFObjC*);
+
+    // SourceBufferPrivate overrides
+    virtual void setClient(SourceBufferPrivateClient*) OVERRIDE;
+    virtual AppendResult append(const unsigned char* data, unsigned length) OVERRIDE;
+    virtual void abort() OVERRIDE;
+    virtual void removedFromMediaSource() OVERRIDE;
+    virtual MediaPlayer::ReadyState readyState() const OVERRIDE;
+    virtual void setReadyState(MediaPlayer::ReadyState) OVERRIDE;
+    virtual void evictCodedFrames() OVERRIDE;
+    virtual bool isFull() OVERRIDE;
+    virtual void flushAndEnqueueNonDisplayingSamples(Vector&lt;RefPtr&lt;MediaSample&gt;&gt;, AtomicString trackID) OVERRIDE;
+    virtual void enqueueSample(PassRefPtr&lt;MediaSample&gt;, AtomicString trackID) OVERRIDE;
+    virtual bool isReadyForMoreSamples() OVERRIDE;
+    virtual void setActive(bool) OVERRIDE;
+
+    Vector&lt;RefPtr&lt;VideoTrackPrivate&gt;&gt; m_videoTracks;
+    Vector&lt;RefPtr&lt;AudioTrackPrivate&gt;&gt; m_audioTracks;
+
+    RetainPtr&lt;AVStreamDataParser&gt; m_parser;
+    RetainPtr&lt;AVAsset&gt; m_asset;
+    RetainPtr&lt;AVSampleBufferDisplayLayer&gt; m_displayLayer;
+    RetainPtr&lt;NSObject&gt; m_delegate;
+
+    MediaSourcePrivateAVFObjC* m_parent;
+    SourceBufferPrivateClient* m_client;
+
+    bool m_parsingSucceeded;
+    int m_enabledVideoTrackID;
+};
+
+}
+
+#endif // ENABLE(MEDIA_SOURCE) &amp;&amp; USE(AVFOUNDATION)
+
+#endif
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformgraphicsavfoundationobjcSourceBufferPrivateAVFObjCmm"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm                                (rev 0)
+++ branches/jsCStack/Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,1118 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#import &quot;config.h&quot;
+#import &quot;SourceBufferPrivateAVFObjC.h&quot;
+
+#if ENABLE(MEDIA_SOURCE) &amp;&amp; USE(AVFOUNDATION)
+
+#import &quot;ExceptionCodePlaceholder.h&quot;
+#import &quot;Logging.h&quot;
+#import &quot;MediaDescription.h&quot;
+#import &quot;MediaPlayerPrivateMediaSourceAVFObjC.h&quot;
+#import &quot;MediaSample.h&quot;
+#import &quot;MediaSourcePrivateAVFObjC.h&quot;
+#import &quot;MediaTimeMac.h&quot;
+#import &quot;NotImplemented.h&quot;
+#import &quot;SoftLinking.h&quot;
+#import &quot;SourceBufferPrivateClient.h&quot;
+#import &quot;TimeRanges.h&quot;
+#import &quot;AudioTrackPrivateMediaSourceAVFObjC.h&quot;
+#import &quot;VideoTrackPrivateMediaSourceAVFObjC.h&quot;
+#import &quot;InbandTextTrackPrivateAVFObjC.h&quot;
+#import &lt;AVFoundation/AVAssetTrack.h&gt;
+#import &lt;AVFoundation/AVSampleBufferDisplayLayer.h&gt;
+#import &lt;objc/runtime.h&gt;
+#import &lt;wtf/text/AtomicString.h&gt;
+#import &lt;wtf/text/CString.h&gt;
+#import &lt;wtf/HashCountedSet.h&gt;
+#import &lt;wtf/WeakPtr.h&gt;
+#import &lt;map&gt;
+
+#pragma mark -
+#pragma mark Soft Linking
+
+SOFT_LINK_FRAMEWORK_OPTIONAL(AVFoundation)
+SOFT_LINK_FRAMEWORK_OPTIONAL(CoreMedia)
+
+SOFT_LINK_CLASS(AVFoundation, AVAssetTrack)
+SOFT_LINK_CLASS(AVFoundation, AVStreamDataParser)
+SOFT_LINK_CLASS(AVFoundation, AVSampleBufferDisplayLayer)
+
+SOFT_LINK_POINTER_OPTIONAL(AVFoundation, AVMediaTypeVideo, NSString *)
+SOFT_LINK_POINTER_OPTIONAL(AVFoundation, AVMediaTypeAudio, NSString *)
+SOFT_LINK_POINTER_OPTIONAL(AVFoundation, AVMediaTypeText, NSString *)
+
+SOFT_LINK_CONSTANT(CoreMedia, kCMTimeZero, CMTime);
+SOFT_LINK_CONSTANT(CoreMedia, kCMTimeInvalid, CMTime);
+SOFT_LINK_CONSTANT(CoreMedia, kCMSampleAttachmentKey_DoNotDisplay, CFStringRef)
+SOFT_LINK_CONSTANT(CoreMedia, kCMSampleAttachmentKey_NotSync, CFStringRef)
+SOFT_LINK_CONSTANT(CoreMedia, kCMSampleBufferAttachmentKey_DrainAfterDecoding, CFStringRef)
+SOFT_LINK_CONSTANT(CoreMedia, kCMSampleBufferAttachmentKey_ResetDecoderBeforeDecoding, CFStringRef)
+SOFT_LINK_CONSTANT(CoreMedia, kCMSampleBufferAttachmentKey_EmptyMedia, CFStringRef)
+SOFT_LINK_CONSTANT(CoreMedia, kCMSampleBufferAttachmentKey_DisplayEmptyMediaImmediately, CFStringRef)
+
+SOFT_LINK_CONSTANT(AVFoundation, AVMediaCharacteristicVisual, NSString*)
+SOFT_LINK_CONSTANT(AVFoundation, AVMediaCharacteristicAudible, NSString*)
+SOFT_LINK_CONSTANT(AVFoundation, AVMediaCharacteristicLegible, NSString*)
+
+SOFT_LINK(CoreMedia, CMFormatDescriptionGetMediaType, CMMediaType, (CMFormatDescriptionRef desc), (desc))
+SOFT_LINK(CoreMedia, CMSampleBufferCreate, OSStatus, (CFAllocatorRef allocator, CMBlockBufferRef dataBuffer, Boolean dataReady, CMSampleBufferMakeDataReadyCallback makeDataReadyCallback, void *makeDataReadyRefcon, CMFormatDescriptionRef formatDescription, CMItemCount numSamples, CMItemCount numSampleTimingEntries, const CMSampleTimingInfo *sampleTimingArray, CMItemCount numSampleSizeEntries, const size_t *sampleSizeArray, CMSampleBufferRef *sBufOut), (allocator, dataBuffer, dataReady, makeDataReadyCallback, makeDataReadyRefcon, formatDescription, numSamples, numSampleTimingEntries, sampleTimingArray, numSampleSizeEntries, sampleSizeArray, sBufOut))
+SOFT_LINK(CoreMedia, CMSampleBufferCreateCopy, OSStatus, (CFAllocatorRef allocator, CMSampleBufferRef sbuf, CMSampleBufferRef *sbufCopyOut), (allocator, sbuf, sbufCopyOut))
+SOFT_LINK(CoreMedia, CMSampleBufferCallForEachSample, OSStatus, (CMSampleBufferRef sbuf, OSStatus (*callback)( CMSampleBufferRef sampleBuffer, CMItemCount index, void *refcon), void *refcon), (sbuf, callback, refcon))
+SOFT_LINK(CoreMedia, CMSampleBufferGetDecodeTimeStamp, CMTime, (CMSampleBufferRef sbuf), (sbuf))
+SOFT_LINK(CoreMedia, CMSampleBufferGetDuration, CMTime, (CMSampleBufferRef sbuf), (sbuf))
+SOFT_LINK(CoreMedia, CMSampleBufferGetPresentationTimeStamp, CMTime, (CMSampleBufferRef sbuf), (sbuf))
+SOFT_LINK(CoreMedia, CMSampleBufferGetSampleAttachmentsArray, CFArrayRef, (CMSampleBufferRef sbuf, Boolean createIfNecessary), (sbuf, createIfNecessary))
+SOFT_LINK(CoreMedia, CMFormatDescriptionGetMediaSubType, FourCharCode, (CMFormatDescriptionRef desc), (desc))
+SOFT_LINK(CoreMedia, CMSetAttachment, void, (CMAttachmentBearerRef target, CFStringRef key, CFTypeRef value, CMAttachmentMode attachmentMode), (target, key, value, attachmentMode))
+
+#define AVMediaTypeVideo getAVMediaTypeVideo()
+#define AVMediaTypeAudio getAVMediaTypeAudio()
+#define AVMediaTypeText getAVMediaTypeText()
+#define kCMTimeZero getkCMTimeZero()
+#define kCMTimeInvalid getkCMTimeInvalid()
+#define kCMSampleAttachmentKey_NotSync getkCMSampleAttachmentKey_NotSync()
+#define kCMSampleAttachmentKey_DoNotDisplay getkCMSampleAttachmentKey_DoNotDisplay()
+#define kCMSampleBufferAttachmentKey_ResetDecoderBeforeDecoding getkCMSampleBufferAttachmentKey_ResetDecoderBeforeDecoding()
+#define kCMSampleBufferAttachmentKey_DrainAfterDecoding getkCMSampleBufferAttachmentKey_DrainAfterDecoding()
+#define kCMSampleBufferAttachmentKey_EmptyMedia getkCMSampleBufferAttachmentKey_EmptyMedia()
+#define kCMSampleBufferAttachmentKey_DisplayEmptyMediaImmediately getkCMSampleBufferAttachmentKey_DisplayEmptyMediaImmediately()
+
+#define AVMediaCharacteristicVisual getAVMediaCharacteristicVisual()
+#define AVMediaCharacteristicAudible getAVMediaCharacteristicAudible()
+#define AVMediaCharacteristicLegible getAVMediaCharacteristicLegible()
+
+#pragma mark -
+#pragma mark AVStreamDataParser
+@class AVStreamDataParserInternal;
+
+NS_CLASS_AVAILABLE(TBD, TBD)
+@interface AVStreamDataParser : NSObject
+- (void)setDelegate:(id)delegate;
+- (void)appendStreamData:(NSData *)data;
+- (void)setShouldProvideMediaData:(BOOL)shouldProvideMediaData forTrackID:(CMPersistentTrackID)trackID;
+- (BOOL)shouldProvideMediaDataForTrackID:(CMPersistentTrackID)trackID;
+@end
+
+#pragma mark -
+#pragma mark WebAVStreamDataParserListener
+
+@interface WebAVStreamDataParserListener : NSObject {
+    WebCore::SourceBufferPrivateAVFObjC* _parent;
+    AVStreamDataParser* _parser;
+}
+- (id)initWithParser:(AVStreamDataParser*)parser parent:(WebCore::SourceBufferPrivateAVFObjC*)parent;
+@end
+
+@implementation WebAVStreamDataParserListener
+- (id)initWithParser:(AVStreamDataParser*)parser parent:(WebCore::SourceBufferPrivateAVFObjC*)parent
+{
+    self = [super init];
+    if (!self)
+        return nil;
+
+    ASSERT(parent);
+    _parent = parent;
+    _parser = parser;
+    [_parser setDelegate:self];
+    return self;
+}
+
+- (void)dealloc
+{
+    [_parser setDelegate:nil];
+    [super dealloc];
+}
+
+- (void)streamDataParser:(AVStreamDataParser *)streamDataParser didParseStreamDataAsAsset:(AVAsset *)asset
+{
+#if ASSERT_DISABLED
+    UNUSED_PARAM(streamDataParser);
+#endif
+    ASSERT(streamDataParser == _parser);
+    _parent-&gt;didParseStreamDataAsAsset(asset);
+}
+
+- (void)streamDataParser:(AVStreamDataParser *)streamDataParser didFailToParseStreamDataWithError:(NSError *)error
+{
+#if ASSERT_DISABLED
+    UNUSED_PARAM(streamDataParser);
+#endif
+    ASSERT(streamDataParser == _parser);
+    _parent-&gt;didFailToParseStreamDataWithError(error);
+}
+
+- (void)streamDataParser:(AVStreamDataParser *)streamDataParser didProvideMediaData:(CMSampleBufferRef)mediaData forTrackID:(CMPersistentTrackID)trackID mediaType:(NSString *)mediaType flags:(NSUInteger)flags
+{
+#if ASSERT_DISABLED
+    UNUSED_PARAM(streamDataParser);
+#endif
+    ASSERT(streamDataParser == _parser);
+    _parent-&gt;didProvideMediaDataForTrackID(trackID, mediaData, mediaType, flags);
+}
+
+- (void)streamDataParser:(AVStreamDataParser *)streamDataParser didReachEndOfTrackWithTrackID:(CMPersistentTrackID)trackID mediaType:(NSString *)mediaType
+{
+#if ASSERT_DISABLED
+    UNUSED_PARAM(streamDataParser);
+#endif
+    ASSERT(streamDataParser == _parser);
+    _parent-&gt;didReachEndOfTrackWithTrackID(trackID, mediaType);
+}
+@end
+
+namespace WebCore {
+
+#pragma mark -
+#pragma mark MediaSampleAVFObjC
+
+class MediaSampleAVFObjC FINAL : public MediaSample {
+public:
+    static RefPtr&lt;MediaSampleAVFObjC&gt; create(CMSampleBufferRef sample, int trackID) { return adoptRef(new MediaSampleAVFObjC(sample, trackID)); }
+    virtual ~MediaSampleAVFObjC() { }
+
+    virtual MediaTime presentationTime() const OVERRIDE { return toMediaTime(CMSampleBufferGetPresentationTimeStamp(m_sample.get())); }
+    virtual MediaTime decodeTime() const OVERRIDE { return toMediaTime(CMSampleBufferGetDecodeTimeStamp(m_sample.get())); }
+    virtual MediaTime duration() const OVERRIDE { return toMediaTime(CMSampleBufferGetDuration(m_sample.get())); }
+    virtual AtomicString trackID() const OVERRIDE { return m_id; }
+
+    virtual SampleFlags flags() const OVERRIDE;
+    virtual PlatformSample platformSample() OVERRIDE;
+
+protected:
+    MediaSampleAVFObjC(CMSampleBufferRef sample, int trackID)
+        : m_sample(sample)
+        , m_id(String::format(&quot;%d&quot;, trackID))
+    {
+    }
+
+    RetainPtr&lt;CMSampleBufferRef&gt; m_sample;
+    AtomicString m_id;
+};
+
+PlatformSample MediaSampleAVFObjC::platformSample()
+{
+    PlatformSample sample = { PlatformSample::CMSampleBufferType, { .cmSampleBuffer = m_sample.get() } };
+    return sample;
+}
+
+static bool CMSampleBufferIsRandomAccess(CMSampleBufferRef sample)
+{
+    CFArrayRef attachments = CMSampleBufferGetSampleAttachmentsArray(sample, false);
+    for (CFIndex i = 0, count = CFArrayGetCount(attachments); i &lt; count; ++i) {
+        CFDictionaryRef attachmentDict = (CFDictionaryRef)CFArrayGetValueAtIndex(attachments, i);
+        if (!CFDictionaryContainsKey(attachmentDict, kCMSampleAttachmentKey_NotSync))
+            return true;
+    }
+    return false;
+}
+
+MediaSample::SampleFlags MediaSampleAVFObjC::flags() const
+{
+    int returnValue = MediaSample::None;
+
+    if (CMSampleBufferIsRandomAccess(m_sample.get()))
+        returnValue |= MediaSample::IsSync;
+
+    return SampleFlags(returnValue);
+}
+
+#pragma mark -
+#pragma mark MediaDescriptionAVFObjC
+
+class MediaDescriptionAVFObjC FINAL : public MediaDescription {
+public:
+    static RefPtr&lt;MediaDescriptionAVFObjC&gt; create(AVAssetTrack* track) { return adoptRef(new MediaDescriptionAVFObjC(track)); }
+    virtual ~MediaDescriptionAVFObjC() { }
+
+    virtual AtomicString codec() const OVERRIDE { return m_codec; }
+    virtual bool isVideo() const OVERRIDE { return m_isVideo; }
+    virtual bool isAudio() const OVERRIDE { return m_isAudio; }
+    virtual bool isText() const OVERRIDE { return m_isText; }
+    
+protected:
+    MediaDescriptionAVFObjC(AVAssetTrack* track)
+        : m_isVideo([track hasMediaCharacteristic:AVMediaCharacteristicVisual])
+        , m_isAudio([track hasMediaCharacteristic:AVMediaCharacteristicAudible])
+        , m_isText([track hasMediaCharacteristic:AVMediaCharacteristicLegible])
+    {
+        NSArray* formatDescriptions = [track formatDescriptions];
+        CMFormatDescriptionRef description = [formatDescriptions count] ? (CMFormatDescriptionRef)[formatDescriptions objectAtIndex:0] : 0;
+        if (description) {
+            FourCharCode codec = CMFormatDescriptionGetMediaSubType(description);
+            m_codec = AtomicString(reinterpret_cast&lt;LChar*&gt;(&amp;codec), 4);
+        }
+    }
+
+    AtomicString m_codec;
+    bool m_isVideo;
+    bool m_isAudio;
+    bool m_isText;
+};
+
+#pragma mark -
+#pragma mark SourceBufferPrivateAVFObjC
+
+RefPtr&lt;SourceBufferPrivateAVFObjC&gt; SourceBufferPrivateAVFObjC::create(MediaSourcePrivateAVFObjC* parent)
+{
+    return adoptRef(new SourceBufferPrivateAVFObjC(parent));
+}
+
+SourceBufferPrivateAVFObjC::SourceBufferPrivateAVFObjC(MediaSourcePrivateAVFObjC* parent)
+    : m_parser(adoptNS([[getAVStreamDataParserClass() alloc] init]))
+    , m_delegate(adoptNS([[WebAVStreamDataParserListener alloc] initWithParser:m_parser.get() parent:this]))
+    , m_mediaSource(parent)
+    , m_client(0)
+    , m_parsingSucceeded(true)
+{
+}
+
+SourceBufferPrivateAVFObjC::~SourceBufferPrivateAVFObjC()
+{
+    if (m_displayLayer) {
+        if (m_mediaSource)
+            m_mediaSource-&gt;player()-&gt;removeDisplayLayer(m_displayLayer.get());
+        [m_displayLayer flushAndRemoveImage];
+        [m_displayLayer stopRequestingMediaData];
+        m_displayLayer = nullptr;
+    }
+}
+
+void SourceBufferPrivateAVFObjC::didParseStreamDataAsAsset(AVAsset* asset)
+{
+    LOG(Media, &quot;SourceBufferPrivateAVFObjC::didParseStreamDataAsAsset(%p)&quot;, this);
+
+    m_asset = asset;
+
+    SourceBufferPrivateClient::InitializationSegment segment;
+    segment.duration = toMediaTime([m_asset duration]);
+
+    for (AVAssetTrack* track in [m_asset tracks]) {
+        if ([track hasMediaCharacteristic:AVMediaCharacteristicVisual]) {
+            SourceBufferPrivateClient::InitializationSegment::VideoTrackInformation info;
+            info.track = VideoTrackPrivateMediaSourceAVFObjC::create(track, this);
+            info.description = MediaDescriptionAVFObjC::create(track);
+            segment.videoTracks.append(info);
+        } else if ([track hasMediaCharacteristic:AVMediaCharacteristicAudible]) {
+            SourceBufferPrivateClient::InitializationSegment::AudioTrackInformation info;
+            info.track = AudioTrackPrivateMediaSourceAVFObjC::create(track, this);
+            info.description = MediaDescriptionAVFObjC::create(track);
+            segment.audioTracks.append(info);
+        }
+
+        // FIXME(125161): Add TextTrack support
+    }
+
+    if (m_client)
+        m_client-&gt;sourceBufferPrivateDidReceiveInitializationSegment(this, segment);
+}
+
+void SourceBufferPrivateAVFObjC::didFailToParseStreamDataWithError(NSError* error)
+{
+#if LOG_DISABLED
+    UNUSED_PARAM(error);
+#endif
+    LOG(Media, &quot;SourceBufferPrivateAVFObjC::didFailToParseStreamDataWithError(%p) - error:\&quot;%s\&quot;&quot;, this, String([error description]).utf8().data());
+
+    m_parsingSucceeded = false;
+}
+
+struct ProcessCodedFrameInfo {
+    SourceBufferPrivateAVFObjC* sourceBuffer;
+    int trackID;
+    const String&amp; mediaType;
+};
+
+static OSStatus callProcessCodedFrameForEachSample(CMSampleBufferRef sampleBuffer, CMItemCount, void *refcon)
+{
+    ProcessCodedFrameInfo* info = static_cast&lt;ProcessCodedFrameInfo*&gt;(refcon);
+    return info-&gt;sourceBuffer-&gt;processCodedFrame(info-&gt;trackID, sampleBuffer, info-&gt;mediaType);
+}
+
+void SourceBufferPrivateAVFObjC::didProvideMediaDataForTrackID(int trackID, CMSampleBufferRef sampleBuffer, const String&amp; mediaType, unsigned flags)
+{
+    UNUSED_PARAM(flags);
+
+    ProcessCodedFrameInfo info = {this, trackID, mediaType};
+    CMSampleBufferCallForEachSample(sampleBuffer, &amp;callProcessCodedFrameForEachSample, &amp;info);
+}
+
+bool SourceBufferPrivateAVFObjC::processCodedFrame(int trackID, CMSampleBufferRef sampleBuffer, const String&amp;)
+{
+    if (m_client)
+        m_client-&gt;sourceBufferPrivateDidReceiveSample(this, MediaSampleAVFObjC::create(sampleBuffer, trackID));
+
+    return true;
+}
+
+void SourceBufferPrivateAVFObjC::didReachEndOfTrackWithTrackID(int trackID, const String&amp; mediaType)
+{
+    UNUSED_PARAM(mediaType);
+    UNUSED_PARAM(trackID);
+    notImplemented();
+}
+
+void SourceBufferPrivateAVFObjC::setClient(SourceBufferPrivateClient* client)
+{
+    m_client = client;
+}
+
+SourceBufferPrivate::AppendResult SourceBufferPrivateAVFObjC::append(const unsigned char* data, unsigned length)
+{
+    m_parsingSucceeded = true;
+
+    LOG(Media, &quot;SourceBufferPrivateAVFObjC::append(%p) - data:%p, length:%d&quot;, this, data, length);
+    [m_parser appendStreamData:[NSData dataWithBytes:data length:length]];
+
+    if (m_parsingSucceeded &amp;&amp; m_mediaSource)
+        m_mediaSource-&gt;player()-&gt;setLoadingProgresssed(true);
+
+    return m_parsingSucceeded ? AppendSucceeded : ParsingFailed;
+}
+
+void SourceBufferPrivateAVFObjC::abort()
+{
+    notImplemented();
+}
+
+void SourceBufferPrivateAVFObjC::removedFromMediaSource()
+{
+    if (m_displayLayer) {
+        if (m_mediaSource)
+            m_mediaSource-&gt;player()-&gt;removeDisplayLayer(m_displayLayer.get());
+        [m_displayLayer flush];
+        [m_displayLayer stopRequestingMediaData];
+        m_displayLayer = nullptr;
+    }
+
+    if (m_mediaSource)
+        m_mediaSource-&gt;removeSourceBuffer(this);
+}
+
+MediaPlayer::ReadyState SourceBufferPrivateAVFObjC::readyState() const
+{
+    return m_mediaSource ? m_mediaSource-&gt;player()-&gt;readyState() : MediaPlayer::HaveNothing;
+}
+
+void SourceBufferPrivateAVFObjC::setReadyState(MediaPlayer::ReadyState readyState)
+{
+    if (m_mediaSource)
+        m_mediaSource-&gt;player()-&gt;setReadyState(readyState);
+}
+
+void SourceBufferPrivateAVFObjC::evictCodedFrames()
+{
+    notImplemented();
+}
+
+bool SourceBufferPrivateAVFObjC::isFull()
+{
+    notImplemented();
+    return false;
+}
+
+
+bool SourceBufferPrivateAVFObjC::hasVideo() const
+{
+    if (!m_client)
+        return false;
+
+    return m_client-&gt;sourceBufferPrivateHasVideo(this);
+}
+
+bool SourceBufferPrivateAVFObjC::hasAudio() const
+{
+    if (!m_client)
+        return false;
+
+    return m_client-&gt;sourceBufferPrivateHasAudio(this);
+}
+
+void SourceBufferPrivateAVFObjC::trackDidChangeEnabled(VideoTrackPrivateMediaSourceAVFObjC* track)
+{
+    int trackID = track-&gt;trackID();
+    if (!track-&gt;selected() &amp;&amp; m_enabledVideoTrackID == trackID) {
+        m_enabledVideoTrackID = -1;
+        [m_parser setShouldProvideMediaData:NO forTrackID:trackID];
+        if (m_mediaSource)
+            m_mediaSource-&gt;player()-&gt;removeDisplayLayer(m_displayLayer.get());
+    } else if (track-&gt;selected()) {
+        m_enabledVideoTrackID = trackID;
+        [m_parser setShouldProvideMediaData:YES forTrackID:trackID];
+        if (!m_displayLayer) {
+            m_displayLayer = [[getAVSampleBufferDisplayLayerClass() alloc] init];
+            [m_displayLayer requestMediaDataWhenReadyOnQueue:dispatch_get_main_queue() usingBlock:^{
+                if (m_client)
+                    m_client-&gt;sourceBufferPrivateDidBecomeReadyForMoreSamples(this);
+            }];
+            if (m_mediaSource)
+                m_mediaSource-&gt;player()-&gt;addDisplayLayer(m_displayLayer.get());
+        }
+    }
+}
+
+void SourceBufferPrivateAVFObjC::trackDidChangeEnabled(AudioTrackPrivateMediaSourceAVFObjC*)
+{
+    // No-op.
+}
+
+static RetainPtr&lt;CMSampleBufferRef&gt; createNonDisplayingCopy(CMSampleBufferRef sampleBuffer)
+{
+    CMSampleBufferRef newSampleBuffer = 0;
+    CMSampleBufferCreateCopy(kCFAllocatorDefault, sampleBuffer, &amp;newSampleBuffer);
+    if (!newSampleBuffer)
+        return sampleBuffer;
+
+    CFArrayRef attachmentsArray = CMSampleBufferGetSampleAttachmentsArray(newSampleBuffer, true);
+    for (CFIndex i = 0; i &lt; CFArrayGetCount(attachmentsArray); ++i) {
+        CFMutableDictionaryRef attachments = (CFMutableDictionaryRef)CFArrayGetValueAtIndex(attachmentsArray, i);
+        CFDictionarySetValue(attachments, kCMSampleAttachmentKey_DoNotDisplay, kCFBooleanTrue);
+    }
+
+    return adoptCF(newSampleBuffer);
+}
+
+void SourceBufferPrivateAVFObjC::flushAndEnqueueNonDisplayingSamples(Vector&lt;RefPtr&lt;MediaSample&gt;&gt; mediaSamples, AtomicString trackID)
+{
+    if (trackID.toInt() != m_enabledVideoTrackID)
+        return;
+
+    LOG(Media, &quot;SourceBufferPrivateAVFObjC::flushAndEnqueueNonDisplayingSamples(%p) samples: %d samples, trackId: %d&quot;, this, mediaSamples.size(), trackID.toInt());
+
+    [m_displayLayer flush];
+
+    for (auto it = mediaSamples.begin(), end = mediaSamples.end(); it != end; ++it) {
+        RefPtr&lt;MediaSample&gt;&amp; mediaSample = *it;
+
+        PlatformSample platformSample = mediaSample-&gt;platformSample();
+        ASSERT(platformSample.type == PlatformSample::CMSampleBufferType);
+
+        RetainPtr&lt;CMSampleBufferRef&gt; sampleBuffer = createNonDisplayingCopy(platformSample.sample.cmSampleBuffer);
+
+        [m_displayLayer enqueueSampleBuffer:sampleBuffer.get()];
+    }
+
+    if (m_mediaSource)
+        m_mediaSource-&gt;player()-&gt;setHasAvailableVideoFrame(false);
+}
+
+void SourceBufferPrivateAVFObjC::enqueueSample(PassRefPtr&lt;MediaSample&gt; prpMediaSample, AtomicString trackID)
+{
+    if (trackID.toInt() != m_enabledVideoTrackID)
+        return;
+
+    RefPtr&lt;MediaSample&gt; mediaSample = prpMediaSample;
+
+    PlatformSample platformSample = mediaSample-&gt;platformSample();
+    if (platformSample.type != PlatformSample::CMSampleBufferType)
+        return;
+
+    [m_displayLayer enqueueSampleBuffer:platformSample.sample.cmSampleBuffer];
+    if (m_mediaSource)
+        m_mediaSource-&gt;player()-&gt;setHasAvailableVideoFrame(true);
+}
+
+bool SourceBufferPrivateAVFObjC::isReadyForMoreSamples()
+{
+    return [m_displayLayer isReadyForMoreMediaData];
+}
+
+void SourceBufferPrivateAVFObjC::setActive(bool isActive)
+{
+    if (m_mediaSource)
+        m_mediaSource-&gt;sourceBufferPrivateDidChangeActiveState(this, isActive);
+}
+
+MediaTime SourceBufferPrivateAVFObjC::fastSeekTimeForMediaTime(MediaTime time, MediaTime negativeThreshold, MediaTime positiveThreshold)
+{
+    if (m_client)
+        return m_client-&gt;sourceBufferPrivateFastSeekTimeForMediaTime(this, time, negativeThreshold, positiveThreshold);
+    return time;
+}
+
+void SourceBufferPrivateAVFObjC::seekToTime(MediaTime time)
+{
+    if (m_client)
+        m_client-&gt;sourceBufferPrivateSeekToTime(this, time);
+}
+
+}
+
+#endif // ENABLE(MEDIA_SOURCE) &amp;&amp; USE(AVFOUNDATION)
+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#import &quot;config.h&quot;
+#import &quot;SourceBufferPrivateAVFObjC.h&quot;
+
+#if ENABLE(MEDIA_SOURCE) &amp;&amp; USE(AVFOUNDATION)
+
+#import &quot;ExceptionCodePlaceholder.h&quot;
+#import &quot;Logging.h&quot;
+#import &quot;MediaDescription.h&quot;
+#import &quot;MediaPlayerPrivateMediaSourceAVFObjC.h&quot;
+#import &quot;MediaSample.h&quot;
+#import &quot;MediaSourcePrivateAVFObjC.h&quot;
+#import &quot;MediaTimeMac.h&quot;
+#import &quot;NotImplemented.h&quot;
+#import &quot;SoftLinking.h&quot;
+#import &quot;SourceBufferPrivateClient.h&quot;
+#import &quot;TimeRanges.h&quot;
+#import &quot;AudioTrackPrivateMediaSourceAVFObjC.h&quot;
+#import &quot;VideoTrackPrivateMediaSourceAVFObjC.h&quot;
+#import &quot;InbandTextTrackPrivateAVFObjC.h&quot;
+#import &lt;AVFoundation/AVAssetTrack.h&gt;
+#import &lt;AVFoundation/AVSampleBufferDisplayLayer.h&gt;
+#import &lt;objc/runtime.h&gt;
+#import &lt;wtf/text/AtomicString.h&gt;
+#import &lt;wtf/text/CString.h&gt;
+#import &lt;wtf/HashCountedSet.h&gt;
+#import &lt;wtf/WeakPtr.h&gt;
+#import &lt;map&gt;
+
+#pragma mark -
+#pragma mark Soft Linking
+
+SOFT_LINK_FRAMEWORK_OPTIONAL(AVFoundation)
+SOFT_LINK_FRAMEWORK_OPTIONAL(CoreMedia)
+
+SOFT_LINK_CLASS(AVFoundation, AVAssetTrack)
+SOFT_LINK_CLASS(AVFoundation, AVStreamDataParser)
+SOFT_LINK_CLASS(AVFoundation, AVSampleBufferDisplayLayer)
+
+SOFT_LINK_POINTER_OPTIONAL(AVFoundation, AVMediaTypeVideo, NSString *)
+SOFT_LINK_POINTER_OPTIONAL(AVFoundation, AVMediaTypeAudio, NSString *)
+SOFT_LINK_POINTER_OPTIONAL(AVFoundation, AVMediaTypeText, NSString *)
+
+SOFT_LINK_CONSTANT(CoreMedia, kCMTimeZero, CMTime);
+SOFT_LINK_CONSTANT(CoreMedia, kCMTimeInvalid, CMTime);
+SOFT_LINK_CONSTANT(CoreMedia, kCMSampleAttachmentKey_DoNotDisplay, CFStringRef)
+SOFT_LINK_CONSTANT(CoreMedia, kCMSampleAttachmentKey_NotSync, CFStringRef)
+SOFT_LINK_CONSTANT(CoreMedia, kCMSampleBufferAttachmentKey_DrainAfterDecoding, CFStringRef)
+SOFT_LINK_CONSTANT(CoreMedia, kCMSampleBufferAttachmentKey_ResetDecoderBeforeDecoding, CFStringRef)
+SOFT_LINK_CONSTANT(CoreMedia, kCMSampleBufferAttachmentKey_EmptyMedia, CFStringRef)
+SOFT_LINK_CONSTANT(CoreMedia, kCMSampleBufferAttachmentKey_DisplayEmptyMediaImmediately, CFStringRef)
+
+SOFT_LINK_CONSTANT(AVFoundation, AVMediaCharacteristicVisual, NSString*)
+SOFT_LINK_CONSTANT(AVFoundation, AVMediaCharacteristicAudible, NSString*)
+SOFT_LINK_CONSTANT(AVFoundation, AVMediaCharacteristicLegible, NSString*)
+
+SOFT_LINK(CoreMedia, CMFormatDescriptionGetMediaType, CMMediaType, (CMFormatDescriptionRef desc), (desc))
+SOFT_LINK(CoreMedia, CMSampleBufferCreate, OSStatus, (CFAllocatorRef allocator, CMBlockBufferRef dataBuffer, Boolean dataReady, CMSampleBufferMakeDataReadyCallback makeDataReadyCallback, void *makeDataReadyRefcon, CMFormatDescriptionRef formatDescription, CMItemCount numSamples, CMItemCount numSampleTimingEntries, const CMSampleTimingInfo *sampleTimingArray, CMItemCount numSampleSizeEntries, const size_t *sampleSizeArray, CMSampleBufferRef *sBufOut), (allocator, dataBuffer, dataReady, makeDataReadyCallback, makeDataReadyRefcon, formatDescription, numSamples, numSampleTimingEntries, sampleTimingArray, numSampleSizeEntries, sampleSizeArray, sBufOut))
+SOFT_LINK(CoreMedia, CMSampleBufferCreateCopy, OSStatus, (CFAllocatorRef allocator, CMSampleBufferRef sbuf, CMSampleBufferRef *sbufCopyOut), (allocator, sbuf, sbufCopyOut))
+SOFT_LINK(CoreMedia, CMSampleBufferCallForEachSample, OSStatus, (CMSampleBufferRef sbuf, OSStatus (*callback)( CMSampleBufferRef sampleBuffer, CMItemCount index, void *refcon), void *refcon), (sbuf, callback, refcon))
+SOFT_LINK(CoreMedia, CMSampleBufferGetDecodeTimeStamp, CMTime, (CMSampleBufferRef sbuf), (sbuf))
+SOFT_LINK(CoreMedia, CMSampleBufferGetDuration, CMTime, (CMSampleBufferRef sbuf), (sbuf))
+SOFT_LINK(CoreMedia, CMSampleBufferGetPresentationTimeStamp, CMTime, (CMSampleBufferRef sbuf), (sbuf))
+SOFT_LINK(CoreMedia, CMSampleBufferGetSampleAttachmentsArray, CFArrayRef, (CMSampleBufferRef sbuf, Boolean createIfNecessary), (sbuf, createIfNecessary))
+SOFT_LINK(CoreMedia, CMFormatDescriptionGetMediaSubType, FourCharCode, (CMFormatDescriptionRef desc), (desc))
+SOFT_LINK(CoreMedia, CMSetAttachment, void, (CMAttachmentBearerRef target, CFStringRef key, CFTypeRef value, CMAttachmentMode attachmentMode), (target, key, value, attachmentMode))
+
+#define AVMediaTypeVideo getAVMediaTypeVideo()
+#define AVMediaTypeAudio getAVMediaTypeAudio()
+#define AVMediaTypeText getAVMediaTypeText()
+#define kCMTimeZero getkCMTimeZero()
+#define kCMTimeInvalid getkCMTimeInvalid()
+#define kCMSampleAttachmentKey_NotSync getkCMSampleAttachmentKey_NotSync()
+#define kCMSampleAttachmentKey_DoNotDisplay getkCMSampleAttachmentKey_DoNotDisplay()
+#define kCMSampleBufferAttachmentKey_ResetDecoderBeforeDecoding getkCMSampleBufferAttachmentKey_ResetDecoderBeforeDecoding()
+#define kCMSampleBufferAttachmentKey_DrainAfterDecoding getkCMSampleBufferAttachmentKey_DrainAfterDecoding()
+#define kCMSampleBufferAttachmentKey_EmptyMedia getkCMSampleBufferAttachmentKey_EmptyMedia()
+#define kCMSampleBufferAttachmentKey_DisplayEmptyMediaImmediately getkCMSampleBufferAttachmentKey_DisplayEmptyMediaImmediately()
+
+#define AVMediaCharacteristicVisual getAVMediaCharacteristicVisual()
+#define AVMediaCharacteristicAudible getAVMediaCharacteristicAudible()
+#define AVMediaCharacteristicLegible getAVMediaCharacteristicLegible()
+
+#pragma mark -
+#pragma mark AVStreamDataParser
+@class AVStreamDataParserInternal;
+
+NS_CLASS_AVAILABLE(TBD, TBD)
+@interface AVStreamDataParser : NSObject
+- (void)setDelegate:(id)delegate;
+- (void)appendStreamData:(NSData *)data;
+- (void)setShouldProvideMediaData:(BOOL)shouldProvideMediaData forTrackID:(CMPersistentTrackID)trackID;
+- (BOOL)shouldProvideMediaDataForTrackID:(CMPersistentTrackID)trackID;
+@end
+
+#pragma mark -
+#pragma mark WebAVStreamDataParserListener
+
+@interface WebAVStreamDataParserListener : NSObject {
+    WebCore::SourceBufferPrivateAVFObjC* _parent;
+    AVStreamDataParser* _parser;
+}
+- (id)initWithParser:(AVStreamDataParser*)parser parent:(WebCore::SourceBufferPrivateAVFObjC*)parent;
+@end
+
+@implementation WebAVStreamDataParserListener
+- (id)initWithParser:(AVStreamDataParser*)parser parent:(WebCore::SourceBufferPrivateAVFObjC*)parent
+{
+    self = [super init];
+    if (!self)
+        return nil;
+
+    ASSERT(parent);
+    _parent = parent;
+    _parser = parser;
+    [_parser setDelegate:self];
+    return self;
+}
+
+- (void)dealloc
+{
+    [_parser setDelegate:nil];
+    [super dealloc];
+}
+
+- (void)streamDataParser:(AVStreamDataParser *)streamDataParser didParseStreamDataAsAsset:(AVAsset *)asset
+{
+#if ASSERT_DISABLED
+    UNUSED_PARAM(streamDataParser);
+#endif
+    ASSERT(streamDataParser == _parser);
+    _parent-&gt;didParseStreamDataAsAsset(asset);
+}
+
+- (void)streamDataParser:(AVStreamDataParser *)streamDataParser didFailToParseStreamDataWithError:(NSError *)error
+{
+#if ASSERT_DISABLED
+    UNUSED_PARAM(streamDataParser);
+#endif
+    ASSERT(streamDataParser == _parser);
+    _parent-&gt;didFailToParseStreamDataWithError(error);
+}
+
+- (void)streamDataParser:(AVStreamDataParser *)streamDataParser didProvideMediaData:(CMSampleBufferRef)mediaData forTrackID:(CMPersistentTrackID)trackID mediaType:(NSString *)mediaType flags:(NSUInteger)flags
+{
+#if ASSERT_DISABLED
+    UNUSED_PARAM(streamDataParser);
+#endif
+    ASSERT(streamDataParser == _parser);
+    _parent-&gt;didProvideMediaDataForTrackID(trackID, mediaData, mediaType, flags);
+}
+
+- (void)streamDataParser:(AVStreamDataParser *)streamDataParser didReachEndOfTrackWithTrackID:(CMPersistentTrackID)trackID mediaType:(NSString *)mediaType
+{
+#if ASSERT_DISABLED
+    UNUSED_PARAM(streamDataParser);
+#endif
+    ASSERT(streamDataParser == _parser);
+    _parent-&gt;didReachEndOfTrackWithTrackID(trackID, mediaType);
+}
+@end
+
+namespace WebCore {
+
+#pragma mark -
+#pragma mark MediaSampleAVFObjC
+
+class MediaSampleAVFObjC FINAL : public MediaSample {
+public:
+    static RefPtr&lt;MediaSampleAVFObjC&gt; create(CMSampleBufferRef sample, int trackID) { return adoptRef(new MediaSampleAVFObjC(sample, trackID)); }
+    virtual ~MediaSampleAVFObjC() { }
+
+    virtual MediaTime presentationTime() const OVERRIDE { return toMediaTime(CMSampleBufferGetPresentationTimeStamp(m_sample.get())); }
+    virtual MediaTime decodeTime() const OVERRIDE { return toMediaTime(CMSampleBufferGetDecodeTimeStamp(m_sample.get())); }
+    virtual MediaTime duration() const OVERRIDE { return toMediaTime(CMSampleBufferGetDuration(m_sample.get())); }
+    virtual AtomicString trackID() const OVERRIDE { return m_id; }
+
+    virtual SampleFlags flags() const OVERRIDE;
+    virtual PlatformSample platformSample() OVERRIDE;
+
+protected:
+    MediaSampleAVFObjC(CMSampleBufferRef sample, int trackID)
+        : m_sample(sample)
+        , m_id(String::format(&quot;%d&quot;, trackID))
+    {
+    }
+
+    RetainPtr&lt;CMSampleBufferRef&gt; m_sample;
+    AtomicString m_id;
+};
+
+PlatformSample MediaSampleAVFObjC::platformSample()
+{
+    PlatformSample sample = { PlatformSample::CMSampleBufferType, { .cmSampleBuffer = m_sample.get() } };
+    return sample;
+}
+
+static bool CMSampleBufferIsRandomAccess(CMSampleBufferRef sample)
+{
+    CFArrayRef attachments = CMSampleBufferGetSampleAttachmentsArray(sample, false);
+    for (CFIndex i = 0, count = CFArrayGetCount(attachments); i &lt; count; ++i) {
+        CFDictionaryRef attachmentDict = (CFDictionaryRef)CFArrayGetValueAtIndex(attachments, i);
+        if (!CFDictionaryContainsKey(attachmentDict, kCMSampleAttachmentKey_NotSync))
+            return true;
+    }
+    return false;
+}
+
+MediaSample::SampleFlags MediaSampleAVFObjC::flags() const
+{
+    int returnValue = MediaSample::None;
+
+    if (CMSampleBufferIsRandomAccess(m_sample.get()))
+        returnValue |= MediaSample::IsSync;
+
+    return SampleFlags(returnValue);
+}
+
+#pragma mark -
+#pragma mark MediaDescriptionAVFObjC
+
+class MediaDescriptionAVFObjC FINAL : public MediaDescription {
+public:
+    static RefPtr&lt;MediaDescriptionAVFObjC&gt; create(AVAssetTrack* track) { return adoptRef(new MediaDescriptionAVFObjC(track)); }
+    virtual ~MediaDescriptionAVFObjC() { }
+
+    virtual AtomicString codec() const OVERRIDE { return m_codec; }
+    virtual bool isVideo() const OVERRIDE { return m_isVideo; }
+    virtual bool isAudio() const OVERRIDE { return m_isAudio; }
+    virtual bool isText() const OVERRIDE { return m_isText; }
+    
+protected:
+    MediaDescriptionAVFObjC(AVAssetTrack* track)
+        : m_isVideo([track hasMediaCharacteristic:AVMediaCharacteristicVisual])
+        , m_isAudio([track hasMediaCharacteristic:AVMediaCharacteristicAudible])
+        , m_isText([track hasMediaCharacteristic:AVMediaCharacteristicLegible])
+    {
+        NSArray* formatDescriptions = [track formatDescriptions];
+        CMFormatDescriptionRef description = [formatDescriptions count] ? (CMFormatDescriptionRef)[formatDescriptions objectAtIndex:0] : 0;
+        if (description) {
+            FourCharCode codec = CMFormatDescriptionGetMediaSubType(description);
+            m_codec = AtomicString(reinterpret_cast&lt;LChar*&gt;(&amp;codec), 4);
+        }
+    }
+
+    AtomicString m_codec;
+    bool m_isVideo;
+    bool m_isAudio;
+    bool m_isText;
+};
+
+#pragma mark -
+#pragma mark SourceBufferPrivateAVFObjC
+
+RefPtr&lt;SourceBufferPrivateAVFObjC&gt; SourceBufferPrivateAVFObjC::create(MediaSourcePrivateAVFObjC* parent)
+{
+    return adoptRef(new SourceBufferPrivateAVFObjC(parent));
+}
+
+SourceBufferPrivateAVFObjC::SourceBufferPrivateAVFObjC(MediaSourcePrivateAVFObjC* parent)
+    : m_parser(adoptNS([[getAVStreamDataParserClass() alloc] init]))
+    , m_delegate(adoptNS([[WebAVStreamDataParserListener alloc] initWithParser:m_parser.get() parent:this]))
+    , m_parent(parent)
+    , m_client(0)
+    , m_parsingSucceeded(true)
+{
+}
+
+SourceBufferPrivateAVFObjC::~SourceBufferPrivateAVFObjC()
+{
+    if (m_displayLayer) {
+        m_parent-&gt;player()-&gt;removeDisplayLayer(m_displayLayer.get());
+        [m_displayLayer flushAndRemoveImage];
+        [m_displayLayer stopRequestingMediaData];
+        m_displayLayer = nullptr;
+    }
+}
+
+void SourceBufferPrivateAVFObjC::didParseStreamDataAsAsset(AVAsset* asset)
+{
+    LOG(Media, &quot;SourceBufferPrivateAVFObjC::didParseStreamDataAsAsset(%p)&quot;, this);
+
+    m_asset = asset;
+
+    SourceBufferPrivateClient::InitializationSegment segment;
+    segment.duration = toMediaTime([m_asset duration]);
+
+    for (AVAssetTrack* track in [m_asset tracks]) {
+        if ([track hasMediaCharacteristic:AVMediaCharacteristicVisual]) {
+            SourceBufferPrivateClient::InitializationSegment::VideoTrackInformation info;
+            info.track = VideoTrackPrivateMediaSourceAVFObjC::create(track, this);
+            info.description = MediaDescriptionAVFObjC::create(track);
+            segment.videoTracks.append(info);
+        } else if ([track hasMediaCharacteristic:AVMediaCharacteristicAudible]) {
+            SourceBufferPrivateClient::InitializationSegment::AudioTrackInformation info;
+            info.track = AudioTrackPrivateMediaSourceAVFObjC::create(track, this);
+            info.description = MediaDescriptionAVFObjC::create(track);
+            segment.audioTracks.append(info);
+        }
+
+        // FIXME(125161): Add TextTrack support
+    }
+
+    if (m_client)
+        m_client-&gt;sourceBufferPrivateDidReceiveInitializationSegment(this, segment);
+}
+
+void SourceBufferPrivateAVFObjC::didFailToParseStreamDataWithError(NSError* error)
+{
+#if LOG_DISABLED
+    UNUSED_PARAM(error);
+#endif
+    LOG(Media, &quot;SourceBufferPrivateAVFObjC::didFailToParseStreamDataWithError(%p) - error:\&quot;%s\&quot;&quot;, this, String([error description]).utf8().data());
+
+    m_parsingSucceeded = false;
+}
+
+struct ProcessCodedFrameInfo {
+    SourceBufferPrivateAVFObjC* sourceBuffer;
+    int trackID;
+    const String&amp; mediaType;
+};
+
+static OSStatus callProcessCodedFrameForEachSample(CMSampleBufferRef sampleBuffer, CMItemCount, void *refcon)
+{
+    ProcessCodedFrameInfo* info = static_cast&lt;ProcessCodedFrameInfo*&gt;(refcon);
+    return info-&gt;sourceBuffer-&gt;processCodedFrame(info-&gt;trackID, sampleBuffer, info-&gt;mediaType);
+}
+
+void SourceBufferPrivateAVFObjC::didProvideMediaDataForTrackID(int trackID, CMSampleBufferRef sampleBuffer, const String&amp; mediaType, unsigned flags)
+{
+    UNUSED_PARAM(flags);
+
+    ProcessCodedFrameInfo info = {this, trackID, mediaType};
+    CMSampleBufferCallForEachSample(sampleBuffer, &amp;callProcessCodedFrameForEachSample, &amp;info);
+}
+
+bool SourceBufferPrivateAVFObjC::processCodedFrame(int trackID, CMSampleBufferRef sampleBuffer, const String&amp;)
+{
+    if (m_client)
+        m_client-&gt;sourceBufferPrivateDidReceiveSample(this, MediaSampleAVFObjC::create(sampleBuffer, trackID));
+
+    return true;
+}
+
+void SourceBufferPrivateAVFObjC::didReachEndOfTrackWithTrackID(int trackID, const String&amp; mediaType)
+{
+    UNUSED_PARAM(mediaType);
+    UNUSED_PARAM(trackID);
+    notImplemented();
+}
+
+void SourceBufferPrivateAVFObjC::setClient(SourceBufferPrivateClient* client)
+{
+    m_client = client;
+}
+
+SourceBufferPrivate::AppendResult SourceBufferPrivateAVFObjC::append(const unsigned char* data, unsigned length)
+{
+    m_parsingSucceeded = true;
+
+    LOG(Media, &quot;SourceBufferPrivateAVFObjC::append(%p) - data:%p, length:%d&quot;, this, data, length);
+    [m_parser appendStreamData:[NSData dataWithBytes:data length:length]];
+
+    if (m_parsingSucceeded)
+        m_parent-&gt;player()-&gt;setLoadingProgresssed(true);
+
+    return m_parsingSucceeded ? AppendSucceeded : ParsingFailed;
+}
+
+void SourceBufferPrivateAVFObjC::abort()
+{
+    notImplemented();
+}
+
+void SourceBufferPrivateAVFObjC::removedFromMediaSource()
+{
+    if (m_displayLayer) {
+        m_parent-&gt;player()-&gt;removeDisplayLayer(m_displayLayer.get());
+        [m_displayLayer flush];
+        [m_displayLayer stopRequestingMediaData];
+        m_displayLayer = nullptr;
+    }
+
+    m_parent-&gt;removeSourceBuffer(this);
+}
+
+MediaPlayer::ReadyState SourceBufferPrivateAVFObjC::readyState() const
+{
+    return m_parent-&gt;player()-&gt;readyState();
+}
+
+void SourceBufferPrivateAVFObjC::setReadyState(MediaPlayer::ReadyState readyState)
+{
+    m_parent-&gt;player()-&gt;setReadyState(readyState);
+}
+
+void SourceBufferPrivateAVFObjC::evictCodedFrames()
+{
+    notImplemented();
+}
+
+bool SourceBufferPrivateAVFObjC::isFull()
+{
+    notImplemented();
+    return false;
+}
+
+
+bool SourceBufferPrivateAVFObjC::hasVideo() const
+{
+    if (!m_client)
+        return false;
+
+    return m_client-&gt;sourceBufferPrivateHasVideo(this);
+}
+
+bool SourceBufferPrivateAVFObjC::hasAudio() const
+{
+    if (!m_client)
+        return false;
+
+    return m_client-&gt;sourceBufferPrivateHasAudio(this);
+}
+
+void SourceBufferPrivateAVFObjC::trackDidChangeEnabled(VideoTrackPrivateMediaSourceAVFObjC* track)
+{
+    int trackID = track-&gt;trackID();
+    if (!track-&gt;selected() &amp;&amp; m_enabledVideoTrackID == trackID) {
+        m_enabledVideoTrackID = -1;
+        [m_parser setShouldProvideMediaData:NO forTrackID:trackID];
+    } else if (track-&gt;selected()) {
+        m_enabledVideoTrackID = trackID;
+        [m_parser setShouldProvideMediaData:YES forTrackID:trackID];
+        if (!m_displayLayer) {
+            m_displayLayer = [[getAVSampleBufferDisplayLayerClass() alloc] init];
+            [m_displayLayer requestMediaDataWhenReadyOnQueue:dispatch_get_main_queue() usingBlock:^{
+                if (m_client)
+                    m_client-&gt;sourceBufferPrivateDidBecomeReadyForMoreSamples(this);
+            }];
+            m_parent-&gt;player()-&gt;addDisplayLayer(m_displayLayer.get());
+        }
+    }
+}
+
+void SourceBufferPrivateAVFObjC::trackDidChangeEnabled(AudioTrackPrivateMediaSourceAVFObjC*)
+{
+    // No-op.
+}
+
+static RetainPtr&lt;CMSampleBufferRef&gt; createNonDisplayingCopy(CMSampleBufferRef sampleBuffer)
+{
+    CMSampleBufferRef newSampleBuffer = 0;
+    CMSampleBufferCreateCopy(kCFAllocatorDefault, sampleBuffer, &amp;newSampleBuffer);
+    if (!newSampleBuffer)
+        return sampleBuffer;
+
+    CFArrayRef attachmentsArray = CMSampleBufferGetSampleAttachmentsArray(newSampleBuffer, true);
+    for (CFIndex i = 0; i &lt; CFArrayGetCount(attachmentsArray); ++i) {
+        CFMutableDictionaryRef attachments = (CFMutableDictionaryRef)CFArrayGetValueAtIndex(attachmentsArray, i);
+        CFDictionarySetValue(attachments, kCMSampleAttachmentKey_DoNotDisplay, kCFBooleanTrue);
+    }
+
+    return adoptCF(newSampleBuffer);
+}
+
+void SourceBufferPrivateAVFObjC::flushAndEnqueueNonDisplayingSamples(Vector&lt;RefPtr&lt;MediaSample&gt;&gt; mediaSamples, AtomicString trackID)
+{
+    if (trackID.toInt() != m_enabledVideoTrackID)
+        return;
+
+    LOG(Media, &quot;SourceBufferPrivateAVFObjC::flushAndEnqueueNonDisplayingSamples(%p) samples: %d samples, trackId: %d&quot;, this, mediaSamples.size(), trackID.toInt());
+
+    [m_displayLayer flush];
+
+    for (auto it = mediaSamples.begin(), end = mediaSamples.end(); it != end; ++it) {
+        RefPtr&lt;MediaSample&gt;&amp; mediaSample = *it;
+
+        PlatformSample platformSample = mediaSample-&gt;platformSample();
+        ASSERT(platformSample.type == PlatformSample::CMSampleBufferType);
+
+        RetainPtr&lt;CMSampleBufferRef&gt; sampleBuffer = createNonDisplayingCopy(platformSample.sample.cmSampleBuffer);
+
+        [m_displayLayer enqueueSampleBuffer:sampleBuffer.get()];
+    }
+
+    m_parent-&gt;player()-&gt;setHasAvailableVideoFrame(false);
+}
+
+void SourceBufferPrivateAVFObjC::enqueueSample(PassRefPtr&lt;MediaSample&gt; prpMediaSample, AtomicString trackID)
+{
+    if (trackID.toInt() != m_enabledVideoTrackID)
+        return;
+
+    RefPtr&lt;MediaSample&gt; mediaSample = prpMediaSample;
+
+    PlatformSample platformSample = mediaSample-&gt;platformSample();
+    if (platformSample.type != PlatformSample::CMSampleBufferType)
+        return;
+
+    [m_displayLayer enqueueSampleBuffer:platformSample.sample.cmSampleBuffer];
+    m_parent-&gt;player()-&gt;setHasAvailableVideoFrame(true);
+}
+
+bool SourceBufferPrivateAVFObjC::isReadyForMoreSamples()
+{
+    return [m_displayLayer isReadyForMoreMediaData];
+}
+
+void SourceBufferPrivateAVFObjC::setActive(bool isActive)
+{
+    m_parent-&gt;sourceBufferPrivateDidChangeActiveState(this, isActive);
+}
+
+MediaTime SourceBufferPrivateAVFObjC::fastSeekTimeForMediaTime(MediaTime time, MediaTime negativeThreshold, MediaTime positiveThreshold)
+{
+    if (m_client)
+        return m_client-&gt;sourceBufferPrivateFastSeekTimeForMediaTime(this, time, negativeThreshold, positiveThreshold);
+    return time;
+}
+
+void SourceBufferPrivateAVFObjC::seekToTime(MediaTime time)
+{
+    if (m_client)
+        m_client-&gt;sourceBufferPrivateSeekToTime(this, time);
+}
+
+}
+
+#endif // ENABLE(MEDIA_SOURCE) &amp;&amp; USE(AVFOUNDATION)
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformgraphicsavfoundationobjcVideoTrackPrivateMediaSourceAVFObjCh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/platform/graphics/avfoundation/objc/VideoTrackPrivateMediaSourceAVFObjC.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/graphics/avfoundation/objc/VideoTrackPrivateMediaSourceAVFObjC.h                                (rev 0)
+++ branches/jsCStack/Source/WebCore/platform/graphics/avfoundation/objc/VideoTrackPrivateMediaSourceAVFObjC.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,144 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#ifndef VideoTrackPrivateMediaSourceAVFObjC_h
+#define VideoTrackPrivateMediaSourceAVFObjC_h
+
+#include &quot;VideoTrackPrivateAVF.h&quot;
+
+#if ENABLE(MEDIA_SOURCE) &amp;&amp; ENABLE(VIDEO_TRACK)
+
+OBJC_CLASS AVAssetTrack;
+OBJC_CLASS AVPlayerItemTrack;
+
+namespace WebCore {
+
+class AVTrackPrivateAVFObjCImpl;
+class SourceBufferPrivateAVFObjC;
+
+class VideoTrackPrivateMediaSourceAVFObjC FINAL : public VideoTrackPrivateAVF {
+    WTF_MAKE_NONCOPYABLE(VideoTrackPrivateMediaSourceAVFObjC)
+public:
+    static RefPtr&lt;VideoTrackPrivateMediaSourceAVFObjC&gt; create(AVAssetTrack* track, SourceBufferPrivateAVFObjC* parent)
+    {
+        return adoptRef(new VideoTrackPrivateMediaSourceAVFObjC(track, parent));
+    }
+
+    virtual bool selected() const OVERRIDE;
+    virtual void setSelected(bool) OVERRIDE;
+
+    void setAssetTrack(AVAssetTrack*);
+    AVAssetTrack* assetTrack();
+
+    int trackID() { return m_trackID; }
+
+private:
+    explicit VideoTrackPrivateMediaSourceAVFObjC(AVAssetTrack*, SourceBufferPrivateAVFObjC* parent);
+    
+    void resetPropertiesFromTrack();
+
+    std::unique_ptr&lt;AVTrackPrivateAVFObjCImpl&gt; m_impl;
+    SourceBufferPrivateAVFObjC* m_parent;
+    int m_trackID;
+    bool m_selected;
+};
+
+}
+
+#endif // ENABLE(MEDIA_SOURCE) &amp;&amp; ENABLE(VIDEO_TRACK)
+
+#endif
+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#ifndef VideoTrackPrivateMediaSourceAVFObjC_h
+#define VideoTrackPrivateMediaSourceAVFObjC_h
+
+#include &quot;VideoTrackPrivateAVF.h&quot;
+
+#if ENABLE(MEDIA_SOURCE) &amp;&amp; ENABLE(VIDEO_TRACK)
+
+OBJC_CLASS AVAssetTrack;
+OBJC_CLASS AVPlayerItemTrack;
+
+namespace WebCore {
+
+class AVTrackPrivateAVFObjCImpl;
+class SourceBufferPrivateAVFObjC;
+
+class VideoTrackPrivateMediaSourceAVFObjC FINAL : public VideoTrackPrivateAVF {
+    WTF_MAKE_NONCOPYABLE(VideoTrackPrivateMediaSourceAVFObjC)
+public:
+    static RefPtr&lt;VideoTrackPrivateMediaSourceAVFObjC&gt; create(AVAssetTrack* track, SourceBufferPrivateAVFObjC* parent)
+    {
+        return adoptRef(new VideoTrackPrivateMediaSourceAVFObjC(track, parent));
+    }
+
+    virtual bool selected() const OVERRIDE;
+    virtual void setSelected(bool) OVERRIDE;
+
+    void setAssetTrack(AVAssetTrack*);
+    AVAssetTrack* assetTrack();
+
+    int trackID() { return m_trackID; }
+
+private:
+    explicit VideoTrackPrivateMediaSourceAVFObjC(AVAssetTrack*, SourceBufferPrivateAVFObjC* parent);
+    
+    void resetPropertiesFromTrack();
+
+    std::unique_ptr&lt;AVTrackPrivateAVFObjCImpl&gt; m_impl;
+    SourceBufferPrivateAVFObjC* m_parent;
+    int m_trackID;
+    bool m_selected;
+};
+
+}
+
+#endif // ENABLE(MEDIA_SOURCE) &amp;&amp; ENABLE(VIDEO_TRACK)
+
+#endif
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformgraphicsgstreamerTextCombinerGStreamercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/graphics/gstreamer/TextCombinerGStreamer.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/graphics/gstreamer/TextCombinerGStreamer.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/graphics/gstreamer/TextCombinerGStreamer.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -111,7 +111,8 @@
</span><span class="cx">     switch (propertyId) {
</span><span class="cx">     case PROP_PAD_TAGS:
</span><span class="cx">         GST_OBJECT_LOCK(object);
</span><del>-        g_value_set_boxed(value, pad-&gt;tags);
</del><ins>+        if (pad-&gt;tags)
+            g_value_take_boxed(value, gst_tag_list_copy(pad-&gt;tags));
</ins><span class="cx">         GST_OBJECT_UNLOCK(object);
</span><span class="cx">         break;
</span><span class="cx">     default:
</span><span class="lines">@@ -202,7 +203,13 @@
</span><span class="cx">         gst_event_parse_tag(event, &amp;tags);
</span><span class="cx">         ASSERT(tags);
</span><span class="cx"> 
</span><del>-        combinerPad-&gt;tags = gst_tag_list_merge(combinerPad-&gt;tags, tags, GST_TAG_MERGE_REPLACE);
</del><ins>+        GST_OBJECT_LOCK(pad);
+        if (!combinerPad-&gt;tags)
+            combinerPad-&gt;tags = gst_tag_list_copy(tags);
+        else
+            gst_tag_list_insert(combinerPad-&gt;tags, tags, GST_TAG_MERGE_REPLACE);
+        GST_OBJECT_UNLOCK(pad);
+
</ins><span class="cx">         g_object_notify(G_OBJECT(pad), &quot;tags&quot;);
</span><span class="cx">         break;
</span><span class="cx">     }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformgraphicsgstreamerTrackPrivateBaseGStreamercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -75,7 +75,9 @@
</span><span class="cx">     g_signal_connect(m_pad.get(), &quot;notify::active&quot;, G_CALLBACK(trackPrivateActiveChangedCallback), this);
</span><span class="cx">     g_signal_connect(m_pad.get(), &quot;notify::tags&quot;, G_CALLBACK(trackPrivateTagsChangedCallback), this);
</span><span class="cx"> 
</span><del>-    notifyTrackOfTagsChanged();
</del><ins>+    // We can't call notifyTrackOfTagsChanged() directly, because we need tagsChanged()
+    // to setup m_tags.
+    tagsChanged();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> TrackPrivateBaseGStreamer::~TrackPrivateBaseGStreamer()
</span><span class="lines">@@ -100,6 +102,7 @@
</span><span class="cx">         g_source_remove(m_tagTimerHandler);
</span><span class="cx"> 
</span><span class="cx">     m_pad.clear();
</span><ins>+    m_tags.clear();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void TrackPrivateBaseGStreamer::activeChanged()
</span><span class="lines">@@ -114,6 +117,14 @@
</span><span class="cx"> {
</span><span class="cx">     if (m_tagTimerHandler)
</span><span class="cx">         g_source_remove(m_tagTimerHandler);
</span><ins>+
+    GRefPtr&lt;GstTagList&gt; tags;
+    g_object_get(m_pad.get(), &quot;tags&quot;, &amp;tags.outPtr(), NULL);
+    {
+        MutexLocker lock(m_tagMutex);
+        m_tags.swap(tags);
+    }
+
</ins><span class="cx">     m_tagTimerHandler = g_timeout_add(0,
</span><span class="cx">         reinterpret_cast&lt;GSourceFunc&gt;(trackPrivateTagsChangeTimeoutCallback), this);
</span><span class="cx"> }
</span><span class="lines">@@ -149,7 +160,10 @@
</span><span class="cx"> 
</span><span class="cx">     TrackPrivateBaseClient* client = m_owner-&gt;client();
</span><span class="cx">     GRefPtr&lt;GstTagList&gt; tags;
</span><del>-    g_object_get(m_pad.get(), &quot;tags&quot;, &amp;tags.outPtr(), NULL);
</del><ins>+    {
+        MutexLocker lock(m_tagMutex);
+        tags.swap(m_tags);
+    }
</ins><span class="cx">     if (!tags)
</span><span class="cx">         return;
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformgraphicsgstreamerTrackPrivateBaseGStreamerh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/graphics/gstreamer/TrackPrivateBaseGStreamer.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/graphics/gstreamer/TrackPrivateBaseGStreamer.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/graphics/gstreamer/TrackPrivateBaseGStreamer.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -29,6 +29,7 @@
</span><span class="cx"> #if ENABLE(VIDEO) &amp;&amp; USE(GSTREAMER) &amp;&amp; ENABLE(VIDEO_TRACK)
</span><span class="cx"> 
</span><span class="cx"> #include &quot;GRefPtrGStreamer.h&quot;
</span><ins>+#include &lt;wtf/ThreadingPrimitives.h&gt;
</ins><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -67,6 +68,9 @@
</span><span class="cx">     TrackPrivateBase* m_owner;
</span><span class="cx">     guint m_activeTimerHandler;
</span><span class="cx">     guint m_tagTimerHandler;
</span><ins>+
+    Mutex m_tagMutex;
+    GRefPtr&lt;GstTagList&gt; m_tags;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformgraphicsgstreamerWebKitWebSourceGStreamercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -35,6 +35,7 @@
</span><span class="cx"> #include &quot;ResourceHandleClient.h&quot;
</span><span class="cx"> #include &quot;ResourceRequest.h&quot;
</span><span class="cx"> #include &quot;ResourceResponse.h&quot;
</span><ins>+#include &quot;SharedBuffer.h&quot;
</ins><span class="cx"> #include &lt;gst/app/gstappsrc.h&gt;
</span><span class="cx"> #include &lt;gst/gst.h&gt;
</span><span class="cx"> #include &lt;gst/pbutils/missing-plugins.h&gt;
</span><span class="lines">@@ -99,6 +100,7 @@
</span><span class="cx">         virtual void willSendRequest(ResourceHandle*, ResourceRequest&amp;, const ResourceResponse&amp;);
</span><span class="cx">         virtual void didReceiveResponse(ResourceHandle*, const ResourceResponse&amp;);
</span><span class="cx">         virtual void didReceiveData(ResourceHandle*, const char*, int, int);
</span><ins>+        virtual void didReceiveBuffer(ResourceHandle*, PassRefPtr&lt;SharedBuffer&gt;, int encodedLength);
</ins><span class="cx">         virtual void didFinishLoading(ResourceHandle*, double /*finishTime*/);
</span><span class="cx">         virtual void didFail(ResourceHandle*, const ResourceError&amp;);
</span><span class="cx">         virtual void wasBlocked(ResourceHandle*);
</span><span class="lines">@@ -1117,9 +1119,20 @@
</span><span class="cx"> 
</span><span class="cx"> void ResourceHandleStreamingClient::didReceiveData(ResourceHandle*, const char* data, int length, int)
</span><span class="cx"> {
</span><del>-    handleDataReceived(data, length);
</del><ins>+    ASSERT_NOT_REACHED();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void ResourceHandleStreamingClient::didReceiveBuffer(ResourceHandle*, PassRefPtr&lt;SharedBuffer&gt; buffer, int /* encodedLength */)
+{
+    // This pattern is suggested by SharedBuffer.h.
+    const char* segment;
+    unsigned position = 0;
+    while (unsigned length = buffer-&gt;getSomeData(segment, position)) {
+        handleDataReceived(segment, length);
+        position += length;
+    }
+}
+
</ins><span class="cx"> void ResourceHandleStreamingClient::didFinishLoading(ResourceHandle*, double)
</span><span class="cx"> {
</span><span class="cx">     handleNotifyFinished();
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformgraphicsopenglGraphicsContext3DOpenGLCommoncpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1365,8 +1365,10 @@
</span><span class="cx"> {
</span><span class="cx">     makeContextCurrent();
</span><span class="cx"> 
</span><ins>+#if !USE(OPENGL_ES_2)
</ins><span class="cx">     if (type == HALF_FLOAT_OES)
</span><span class="cx">         type = GL_HALF_FLOAT_ARB;
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx">     // FIXME: we will need to deal with PixelStore params when dealing with image buffers that differ from the subimage size.
</span><span class="cx">     ::glTexSubImage2D(target, level, xoff, yoff, width, height, format, type, pixels);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformgtkUserAgentGtkcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/gtk/UserAgentGtk.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/gtk/UserAgentGtk.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/gtk/UserAgentGtk.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -30,13 +30,10 @@
</span><span class="cx"> 
</span><span class="cx"> #if OS(UNIX)
</span><span class="cx"> #include &lt;sys/utsname.h&gt;
</span><del>-#elif OS(WINDOWS)
-#include &quot;SystemInfo.h&quot;
</del><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-#if OS(DARWIN) || OS(UNIX)
</del><span class="cx"> static const char* cpuDescriptionForUAString()
</span><span class="cx"> {
</span><span class="cx"> #if CPU(PPC) || CPU(PPC64)
</span><span class="lines">@@ -49,38 +46,16 @@
</span><span class="cx">     return &quot;Unknown&quot;;
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><del>-#endif
</del><span class="cx"> 
</span><del>-static const char* platformForUAString()
-{
-#if PLATFORM(X11)
-    return &quot;X11&quot;;
-#elif OS(WINDOWS)
-    return &quot;&quot;;
-#elif PLATFORM(MAC)
-    return &quot;Macintosh&quot;;
-#elif defined(GDK_WINDOWING_DIRECTFB)
-    return &quot;DirectFB&quot;;
-#else
-    return &quot;Unknown&quot;;
-#endif
-}
-
</del><span class="cx"> static String platformVersionForUAString()
</span><span class="cx"> {
</span><span class="cx">     DEFINE_STATIC_LOCAL(String, uaOSVersion, (String()));
</span><span class="cx">     if (!uaOSVersion.isEmpty())
</span><span class="cx">         return uaOSVersion;
</span><span class="cx"> 
</span><del>-#if OS(WINDOWS)
-    uaOSVersion = windowsVersionForUAString();
-#elif OS(DARWIN) || OS(UNIX)
</del><span class="cx">     // We will always claim to be Safari in Mac OS X, since Safari in Linux triggers the iOS path on
</span><span class="cx">     // some websites.
</span><span class="cx">     uaOSVersion = String::format(&quot;%s Mac OS X&quot;, cpuDescriptionForUAString());
</span><del>-#else
-    uaOSVersion = String(&quot;Unknown&quot;);
-#endif
</del><span class="cx">     return uaOSVersion;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -95,9 +70,9 @@
</span><span class="cx">     // wrong can cause sites to load the wrong JavaScript, CSS, or custom fonts. In some cases
</span><span class="cx">     // sites won't load resources at all.
</span><span class="cx">     DEFINE_STATIC_LOCAL(const CString, uaVersion, (String::format(&quot;%i.%i&quot;, USER_AGENT_GTK_MAJOR_VERSION, USER_AGENT_GTK_MINOR_VERSION).utf8()));
</span><del>-    DEFINE_STATIC_LOCAL(const String, staticUA, (String::format(&quot;Mozilla/5.0 (%s; %s) AppleWebKit/%s (KHTML, like Gecko) Safari/%s&quot;,
-                                                                platformForUAString(), platformVersionForUAString().utf8().data(),
-                                                                uaVersion.data(), uaVersion.data())));
</del><ins>+    DEFINE_STATIC_LOCAL(const String, staticUA, (String::format(&quot;Mozilla/5.0 (Macintosh; %s) AppleWebKit/%s (KHTML, like Gecko) Safari/%s&quot;,
+        platformVersionForUAString().utf8().data(), uaVersion.data(), uaVersion.data())));
+
</ins><span class="cx">     if (applicationName.isEmpty())
</span><span class="cx">         return staticUA;
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformgtkWidgetBackingStoreGtkX11cpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/gtk/WidgetBackingStoreGtkX11.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/gtk/WidgetBackingStoreGtkX11.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/gtk/WidgetBackingStoreGtkX11.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -51,6 +51,8 @@
</span><span class="cx"> 
</span><span class="cx"> WidgetBackingStoreGtkX11::~WidgetBackingStoreGtkX11()
</span><span class="cx"> {
</span><ins>+    // The pixmap needs to exist when the surface is destroyed, so begin by clearing it.
+    m_surface.clear();
</ins><span class="cx">     XFreePixmap(m_display, m_pixmap);
</span><span class="cx">     XFreeGC(m_display, m_gc);
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformmacMemoryPressureHandlerMacmm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/mac/MemoryPressureHandlerMac.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/mac/MemoryPressureHandlerMac.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/mac/MemoryPressureHandlerMac.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -30,6 +30,7 @@
</span><span class="cx"> #import &lt;WebCore/GCController.h&gt;
</span><span class="cx"> #import &lt;WebCore/FontCache.h&gt;
</span><span class="cx"> #import &lt;WebCore/MemoryCache.h&gt;
</span><ins>+#import &lt;WebCore/Page.h&gt;
</ins><span class="cx"> #import &lt;WebCore/PageCache.h&gt;
</span><span class="cx"> #import &lt;WebCore/LayerPool.h&gt;
</span><span class="cx"> #import &lt;WebCore/ScrollingThread.h&gt;
</span><span class="lines">@@ -161,6 +162,10 @@
</span><span class="cx"> 
</span><span class="cx">     cssValuePool().drain();
</span><span class="cx"> 
</span><ins>+    clearWidthCaches();
+
+    Page::jettisonStyleResolversInAllDocuments();
+
</ins><span class="cx">     gcController().discardAllCompiledCode();
</span><span class="cx"> 
</span><span class="cx">     // FastMalloc has lock-free thread specific caches that can only be cleared from the thread itself.
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformmacPlatformClockCMh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/mac/PlatformClockCM.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/mac/PlatformClockCM.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/mac/PlatformClockCM.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -55,6 +55,8 @@
</span><span class="cx">     virtual void stop() OVERRIDE;
</span><span class="cx">     virtual bool isRunning() const OVERRIDE { return m_running; }
</span><span class="cx"> 
</span><ins>+    CMTimebaseRef timebase() const { return m_timebase.get(); }
+
</ins><span class="cx"> private:
</span><span class="cx">     void initializeWithTimingSource(CMClockRef);
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformmacScrollbarThemeMacmm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/mac/ScrollbarThemeMac.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/mac/ScrollbarThemeMac.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/mac/ScrollbarThemeMac.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -26,6 +26,7 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;ScrollbarThemeMac.h&quot;
</span><span class="cx"> 
</span><ins>+#include &quot;BlockExceptions.h&quot;
</ins><span class="cx"> #include &quot;ColorMac.h&quot;
</span><span class="cx"> #include &quot;ImageBuffer.h&quot;
</span><span class="cx"> #include &quot;GraphicsLayer.h&quot;
</span><span class="lines">@@ -221,10 +222,12 @@
</span><span class="cx"> 
</span><span class="cx"> int ScrollbarThemeMac::scrollbarThickness(ScrollbarControlSize controlSize)
</span><span class="cx"> {
</span><ins>+    BEGIN_BLOCK_OBJC_EXCEPTIONS;
</ins><span class="cx">     ScrollbarPainter scrollbarPainter = [NSClassFromString(@&quot;NSScrollerImp&quot;) scrollerImpWithStyle:recommendedScrollerStyle() controlSize:controlSize horizontal:NO replacingScrollerImp:nil];
</span><span class="cx">     if (supportsExpandedScrollbars())
</span><span class="cx">         [scrollbarPainter setExpanded:YES];
</span><span class="cx">     return [scrollbarPainter trackBoxWidth];
</span><ins>+    END_BLOCK_OBJC_EXCEPTIONS;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool ScrollbarThemeMac::usesOverlayScrollbars() const
</span><span class="lines">@@ -239,6 +242,7 @@
</span><span class="cx"> 
</span><span class="cx"> void ScrollbarThemeMac::updateScrollbarOverlayStyle(ScrollbarThemeClient* scrollbar)
</span><span class="cx"> {
</span><ins>+    BEGIN_BLOCK_OBJC_EXCEPTIONS;
</ins><span class="cx">     ScrollbarPainter painter = painterForScrollbar(scrollbar);
</span><span class="cx">     switch (scrollbar-&gt;scrollbarOverlayStyle()) {
</span><span class="cx">     case ScrollbarOverlayStyleDefault:
</span><span class="lines">@@ -251,6 +255,7 @@
</span><span class="cx">         [painter setKnobStyle:NSScrollerKnobStyleLight];
</span><span class="cx">         break;
</span><span class="cx">     }
</span><ins>+    END_BLOCK_OBJC_EXCEPTIONS;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> double ScrollbarThemeMac::initialAutoscrollTimerDelay()
</span><span class="lines">@@ -420,7 +425,9 @@
</span><span class="cx"> 
</span><span class="cx"> int ScrollbarThemeMac::minimumThumbLength(ScrollbarThemeClient* scrollbar)
</span><span class="cx"> {
</span><ins>+    BEGIN_BLOCK_OBJC_EXCEPTIONS;
</ins><span class="cx">     return [scrollbarMap()-&gt;get(scrollbar) knobMinLength];
</span><ins>+    END_BLOCK_OBJC_EXCEPTIONS;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool ScrollbarThemeMac::shouldCenterOnThumb(ScrollbarThemeClient*, const PlatformMouseEvent&amp; evt)
</span><span class="lines">@@ -457,26 +464,31 @@
</span><span class="cx"> 
</span><span class="cx"> void ScrollbarThemeMac::updateEnabledState(ScrollbarThemeClient* scrollbar)
</span><span class="cx"> {
</span><ins>+    BEGIN_BLOCK_OBJC_EXCEPTIONS;
</ins><span class="cx">     [scrollbarMap()-&gt;get(scrollbar) setEnabled:scrollbar-&gt;enabled()];
</span><ins>+    END_BLOCK_OBJC_EXCEPTIONS;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void ScrollbarThemeMac::setPaintCharacteristicsForScrollbar(ScrollbarThemeClient* scrollbar)
</span><span class="cx"> {
</span><ins>+    BEGIN_BLOCK_OBJC_EXCEPTIONS;
</ins><span class="cx">     ScrollbarPainter painter = painterForScrollbar(scrollbar);
</span><span class="cx"> 
</span><span class="cx">     float value;
</span><span class="cx">     float overhang;
</span><span class="cx">     ScrollableArea::computeScrollbarValueAndOverhang(scrollbar-&gt;currentPos(), scrollbar-&gt;totalSize(), scrollbar-&gt;visibleSize(), value, overhang);
</span><del>-    float proportion = (static_cast&lt;CGFloat&gt;(scrollbar-&gt;visibleSize()) - overhang) / scrollbar-&gt;totalSize();
</del><ins>+    float proportion = scrollbar-&gt;totalSize() &gt; 0 ? (static_cast&lt;CGFloat&gt;(scrollbar-&gt;visibleSize()) - overhang) / scrollbar-&gt;totalSize() : 1;
</ins><span class="cx"> 
</span><span class="cx">     [painter setEnabled:scrollbar-&gt;enabled()];
</span><span class="cx">     [painter setBoundsSize:scrollbar-&gt;frameRect().size()];
</span><span class="cx">     [painter setDoubleValue:value];
</span><span class="cx">     [painter setKnobProportion:proportion];
</span><ins>+    END_BLOCK_OBJC_EXCEPTIONS;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static void scrollbarPainterPaint(ScrollbarPainter scrollbarPainter, bool enabled)
</span><span class="cx"> {
</span><ins>+    BEGIN_BLOCK_OBJC_EXCEPTIONS;
</ins><span class="cx">     // Use rectForPart: here; it will take the expansion transition progress into account.
</span><span class="cx">     NSRect trackRect = [scrollbarPainter rectForPart:NSScrollerKnobSlot];
</span><span class="cx">     [scrollbarPainter drawKnobSlotInRect:trackRect highlight:NO];
</span><span class="lines">@@ -485,6 +497,7 @@
</span><span class="cx">     // call drawKnob.
</span><span class="cx">     if (enabled)
</span><span class="cx">         [scrollbarPainter drawKnob];
</span><ins>+    END_BLOCK_OBJC_EXCEPTIONS;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool ScrollbarThemeMac::paint(ScrollbarThemeClient* scrollbar, GraphicsContext* context, const IntRect&amp; damageRect)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformmacSoftLinkingh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/mac/SoftLinking.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/mac/SoftLinking.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/mac/SoftLinking.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -118,6 +118,24 @@
</span><span class="cx">         return class##className; \
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+#define SOFT_LINK_CLASS_OPTIONAL(framework, className) \
+    static Class init##className(); \
+    static Class (*get##className##Class)() = init##className; \
+    static Class class##className; \
+    \
+    static Class className##Function() \
+    { \
+        return class##className; \
+    }\
+    \
+    static Class init##className() \
+    { \
+        framework##Library(); \
+        class##className = objc_getClass(#className); \
+        get##className##Class = className##Function; \
+        return class##className; \
+    }
+
</ins><span class="cx"> #define SOFT_LINK_POINTER(framework, name, type) \
</span><span class="cx">     static type init##name(); \
</span><span class="cx">     static type (*get##name)() = init##name; \
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformmediastreamRTCPeerConnectionHandlercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/mediastream/RTCPeerConnectionHandler.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/mediastream/RTCPeerConnectionHandler.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/mediastream/RTCPeerConnectionHandler.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,5 +1,6 @@
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2012 Google Inc. All rights reserved.
</span><ins>+ * Copyright (C) 2013 Nokia Corporation and/or its subsidiary(-ies).
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions are
</span><span class="lines">@@ -34,6 +35,8 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;RTCPeerConnectionHandler.h&quot;
</span><span class="cx"> 
</span><ins>+#include &lt;wtf/NeverDestroyed.h&gt;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> class RTCPeerConnectionHandlerClient;
</span><span class="cx"> 
</span><span class="lines">@@ -44,6 +47,30 @@
</span><span class="cx"> 
</span><span class="cx"> CreatePeerConnectionHandler RTCPeerConnectionHandler::create = createHandler;
</span><span class="cx"> 
</span><ins>+const AtomicString&amp; RTCPeerConnectionHandler::incompatibleConstraintsErrorName()
+{
+    static NeverDestroyed&lt;AtomicString&gt; incompatibleConstraints(&quot;IncompatibleConstraintsError&quot;, AtomicString::ConstructFromLiteral);
+    return incompatibleConstraints;
+}
+
+const AtomicString&amp; RTCPeerConnectionHandler::invalidSessionDescriptionErrorName()
+{
+    static NeverDestroyed&lt;AtomicString&gt; invalidSessionDescription(&quot;InvalidSessionDescriptionError&quot;, AtomicString::ConstructFromLiteral);
+    return invalidSessionDescription;
+}
+
+const AtomicString&amp; RTCPeerConnectionHandler::incompatibleSessionDescriptionErrorName()
+{
+    static NeverDestroyed&lt;AtomicString&gt; incompatibleSessionDescription(&quot;IncompatibleSessionDescriptionError&quot;, AtomicString::ConstructFromLiteral);
+    return incompatibleSessionDescription;
+}
+
+const AtomicString&amp; RTCPeerConnectionHandler::internalErrorName()
+{
+    static NeverDestroyed&lt;AtomicString&gt; internal(&quot;InternalError&quot;, AtomicString::ConstructFromLiteral);
+    return internal;
+}
+
</ins><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(MEDIA_STREAM)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformmediastreamRTCPeerConnectionHandlerh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/mediastream/RTCPeerConnectionHandler.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/mediastream/RTCPeerConnectionHandler.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/mediastream/RTCPeerConnectionHandler.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,5 +1,6 @@
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2012 Google Inc. All rights reserved.
</span><ins>+ * Copyright (C) 2013 Nokia Corporation and/or its subsidiary(-ies).
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -74,6 +75,11 @@
</span><span class="cx">     static CreatePeerConnectionHandler create;
</span><span class="cx">     virtual ~RTCPeerConnectionHandler() { }
</span><span class="cx"> 
</span><ins>+    static const AtomicString&amp; incompatibleConstraintsErrorName();
+    static const AtomicString&amp; invalidSessionDescriptionErrorName();
+    static const AtomicString&amp; incompatibleSessionDescriptionErrorName();
+    static const AtomicString&amp; internalErrorName();
+
</ins><span class="cx">     virtual bool initialize(PassRefPtr&lt;RTCConfiguration&gt;, PassRefPtr&lt;MediaConstraints&gt;) = 0;
</span><span class="cx"> 
</span><span class="cx">     virtual void createOffer(PassRefPtr&lt;RTCSessionDescriptionRequest&gt;, PassRefPtr&lt;MediaConstraints&gt;) = 0;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformmockRTCNotifiersMockcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/mock/RTCNotifiersMock.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/mock/RTCNotifiersMock.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/mock/RTCNotifiersMock.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -29,6 +29,7 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;RTCNotifiersMock.h&quot;
</span><span class="cx"> 
</span><ins>+#include &quot;DOMError.h&quot;
</ins><span class="cx"> #include &quot;RTCDataChannelHandlerMock.h&quot;
</span><span class="cx"> #include &quot;RTCSessionDescriptionDescriptor.h&quot;
</span><span class="cx"> #include &quot;RTCSessionDescriptionRequest.h&quot;
</span><span class="lines">@@ -36,9 +37,10 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-SessionRequestNotifier::SessionRequestNotifier(PassRefPtr&lt;RTCSessionDescriptionRequest&gt; request, PassRefPtr&lt;RTCSessionDescriptionDescriptor&gt; descriptor)
</del><ins>+SessionRequestNotifier::SessionRequestNotifier(PassRefPtr&lt;RTCSessionDescriptionRequest&gt; request, PassRefPtr&lt;RTCSessionDescriptionDescriptor&gt; descriptor, const String&amp; errorName)
</ins><span class="cx">     : m_request(request)
</span><span class="cx">     , m_descriptor(descriptor)
</span><ins>+    , m_errorName(errorName)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -47,12 +49,13 @@
</span><span class="cx">     if (m_descriptor)
</span><span class="cx">         m_request-&gt;requestSucceeded(m_descriptor);
</span><span class="cx">     else
</span><del>-        m_request-&gt;requestFailed(&quot;TEST_ERROR&quot;);
</del><ins>+        m_request-&gt;requestFailed(m_errorName);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-VoidRequestNotifier::VoidRequestNotifier(PassRefPtr&lt;RTCVoidRequest&gt; request, bool success)
</del><ins>+VoidRequestNotifier::VoidRequestNotifier(PassRefPtr&lt;RTCVoidRequest&gt; request, bool success, const String&amp; errorName)
</ins><span class="cx">     : m_request(request)
</span><span class="cx">     , m_success(success)
</span><ins>+    , m_errorName(errorName)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -61,7 +64,7 @@
</span><span class="cx">     if (m_success)
</span><span class="cx">         m_request-&gt;requestSucceeded();
</span><span class="cx">     else
</span><del>-        m_request-&gt;requestFailed(&quot;TEST_ERROR&quot;);
</del><ins>+        m_request-&gt;requestFailed(m_errorName);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> IceConnectionNotifier::IceConnectionNotifier(RTCPeerConnectionHandlerClient* client, RTCPeerConnectionHandlerClient::IceConnectionState connectionState, RTCPeerConnectionHandlerClient::IceGatheringState gatheringState)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformmockRTCNotifiersMockh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/mock/RTCNotifiersMock.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/mock/RTCNotifiersMock.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/mock/RTCNotifiersMock.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -33,6 +33,7 @@
</span><span class="cx"> #include &quot;TimerEventBasedMock.h&quot;
</span><span class="cx"> #include &lt;wtf/PassRefPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/RefPtr.h&gt;
</span><ins>+#include &lt;wtf/text/WTFString.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -42,24 +43,26 @@
</span><span class="cx"> 
</span><span class="cx"> class SessionRequestNotifier : public MockNotifier {
</span><span class="cx"> public:
</span><del>-    SessionRequestNotifier(PassRefPtr&lt;RTCSessionDescriptionRequest&gt;, PassRefPtr&lt;RTCSessionDescriptionDescriptor&gt;);
</del><ins>+    SessionRequestNotifier(PassRefPtr&lt;RTCSessionDescriptionRequest&gt;, PassRefPtr&lt;RTCSessionDescriptionDescriptor&gt;, const String&amp; = emptyString());
</ins><span class="cx"> 
</span><span class="cx">     void fire() OVERRIDE;
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     RefPtr&lt;RTCSessionDescriptionRequest&gt; m_request;
</span><span class="cx">     RefPtr&lt;RTCSessionDescriptionDescriptor&gt; m_descriptor;
</span><ins>+    String m_errorName;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> class VoidRequestNotifier : public MockNotifier {
</span><span class="cx"> public:
</span><del>-    VoidRequestNotifier(PassRefPtr&lt;RTCVoidRequest&gt;, bool);
</del><ins>+    VoidRequestNotifier(PassRefPtr&lt;RTCVoidRequest&gt;, bool, const String&amp; = emptyString());
</ins><span class="cx"> 
</span><span class="cx">     void fire() OVERRIDE;
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     RefPtr&lt;RTCVoidRequest&gt; m_request;
</span><span class="cx">     bool m_success;
</span><ins>+    String m_errorName;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> class IceConnectionNotifier : public MockNotifier {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformmockRTCPeerConnectionHandlerMockcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/mock/RTCPeerConnectionHandlerMock.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/mock/RTCPeerConnectionHandlerMock.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/mock/RTCPeerConnectionHandlerMock.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -66,10 +66,10 @@
</span><span class="cx"> {
</span><span class="cx">     String succeedValue;
</span><span class="cx">     RefPtr&lt;SessionRequestNotifier&gt; notifier;
</span><del>-    if (constraints-&gt;getMandatoryConstraintValue(&quot;succeed&quot;, succeedValue) &amp;&amp; succeedValue == &quot;true&quot;)
</del><ins>+    if (constraints-&gt;getMandatoryConstraintValue(&quot;succeed&quot;, succeedValue) &amp;&amp; succeedValue == &quot;false&quot;)
+        notifier = adoptRef(new SessionRequestNotifier(request, 0, RTCPeerConnectionHandler::incompatibleConstraintsErrorName()));
+    else
</ins><span class="cx">         notifier = adoptRef(new SessionRequestNotifier(request, RTCSessionDescriptionDescriptor::create(&quot;offer&quot;, &quot;local&quot;)));
</span><del>-    else
-        notifier = adoptRef(new SessionRequestNotifier(request, 0));
</del><span class="cx"> 
</span><span class="cx">     m_timerEvents.append(adoptRef(new TimerEvent(this, notifier)));
</span><span class="cx"> }
</span><span class="lines">@@ -79,8 +79,8 @@
</span><span class="cx">     RefPtr&lt;SessionRequestNotifier&gt; notifier;
</span><span class="cx">     // We can only create an answer if we have already had an offer and the remote session description is stored.
</span><span class="cx">     String succeedValue;
</span><del>-    if (!m_remoteSessionDescription.get() || (constraints-&gt;getMandatoryConstraintValue(&quot;succeed&quot;, succeedValue) &amp;&amp; succeedValue == &quot;false&quot;))
-        notifier = adoptRef(new SessionRequestNotifier(request, 0));
</del><ins>+    if (constraints-&gt;getMandatoryConstraintValue(&quot;succeed&quot;, succeedValue) &amp;&amp; succeedValue == &quot;false&quot;)
+        notifier = adoptRef(new SessionRequestNotifier(request, 0, RTCPeerConnectionHandler::incompatibleConstraintsErrorName()));
</ins><span class="cx">     else
</span><span class="cx">         notifier = adoptRef(new SessionRequestNotifier(request, RTCSessionDescriptionDescriptor::create(&quot;answer&quot;, &quot;local&quot;)));
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformmockmediasourceMockBoxh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/mock/mediasource/MockBox.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/mock/mediasource/MockBox.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/mock/mediasource/MockBox.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -129,8 +129,16 @@
</span><span class="cx">     int32_t trackID() const { return m_trackID; }
</span><span class="cx">     uint8_t flags() const { return m_flags; }
</span><span class="cx"> 
</span><del>-    enum { IsSync = 1 &lt;&lt; 0 };
</del><ins>+    enum {
+        IsSync = 1 &lt;&lt; 0,
+        IsCorrupted = 1 &lt;&lt; 1,
+        IsDropped = 1 &lt;&lt; 2,
+        IsDelayed = 1 &lt;&lt; 3,
+    };
</ins><span class="cx">     bool isSync() const { return m_flags &amp; IsSync; }
</span><ins>+    bool isCorrupted() const { return m_flags &amp; IsCorrupted; }
+    bool isDropped() const { return m_flags &amp; IsDropped; }
+    bool isDelayed() const { return m_flags &amp; IsDelayed; }
</ins><span class="cx"> 
</span><span class="cx"> protected:
</span><span class="cx">     MediaTime m_presentationTimestamp;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformmockmediasourceMockMediaPlayerMediaSourcecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/mock/mediasource/MockMediaPlayerMediaSource.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/mock/mediasource/MockMediaPlayerMediaSource.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/mock/mediasource/MockMediaPlayerMediaSource.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -236,6 +236,35 @@
</span><span class="cx">     m_player-&gt;readyStateChanged();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void MockMediaPlayerMediaSource::setNetworkState(MediaPlayer::NetworkState networkState)
+{
+    if (networkState == m_networkState)
+        return;
+
+    m_networkState = networkState;
+    m_player-&gt;networkStateChanged();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+unsigned long MockMediaPlayerMediaSource::totalVideoFrames()
+{
+    return m_mediaSourcePrivate ? m_mediaSourcePrivate-&gt;totalVideoFrames() : 0;
+}
+
+unsigned long MockMediaPlayerMediaSource::droppedVideoFrames()
+{
+    return m_mediaSourcePrivate ? m_mediaSourcePrivate-&gt;droppedVideoFrames() : 0;
+}
+
+unsigned long MockMediaPlayerMediaSource::corruptedVideoFrames()
+{
+    return m_mediaSourcePrivate ? m_mediaSourcePrivate-&gt;corruptedVideoFrames() : 0;
+}
+
+double MockMediaPlayerMediaSource::totalFrameDelay()
+{
+    return m_mediaSourcePrivate ? m_mediaSourcePrivate-&gt;totalFrameDelay() : 0;
+}
+
+}
+
</ins><span class="cx"> #endif
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformmockmediasourceMockMediaPlayerMediaSourceh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/mock/mediasource/MockMediaPlayerMediaSource.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/mock/mediasource/MockMediaPlayerMediaSource.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/mock/mediasource/MockMediaPlayerMediaSource.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -51,6 +51,7 @@
</span><span class="cx"> 
</span><span class="cx">     virtual MediaPlayer::ReadyState readyState() const OVERRIDE;
</span><span class="cx">     void setReadyState(MediaPlayer::ReadyState);
</span><ins>+    void setNetworkState(MediaPlayer::NetworkState);
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     MockMediaPlayerMediaSource(MediaPlayer*);
</span><span class="lines">@@ -76,6 +77,10 @@
</span><span class="cx">     virtual double currentTimeDouble() const OVERRIDE;
</span><span class="cx">     virtual double durationDouble() const OVERRIDE;
</span><span class="cx">     virtual void seekWithTolerance(double time, double, double) OVERRIDE;
</span><ins>+    virtual unsigned long totalVideoFrames() OVERRIDE;
+    virtual unsigned long droppedVideoFrames() OVERRIDE;
+    virtual unsigned long corruptedVideoFrames() OVERRIDE;
+    virtual double totalFrameDelay() OVERRIDE;
</ins><span class="cx"> 
</span><span class="cx">     MediaPlayer* m_player;
</span><span class="cx">     RefPtr&lt;HTMLMediaSource&gt; m_mediaSource;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformmockmediasourceMockMediaSourcePrivatecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/mock/mediasource/MockMediaSourcePrivate.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/mock/mediasource/MockMediaSourcePrivate.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/mock/mediasource/MockMediaSourcePrivate.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -42,13 +42,19 @@
</span><span class="cx"> 
</span><span class="cx"> MockMediaSourcePrivate::MockMediaSourcePrivate(MockMediaPlayerMediaSource* parent)
</span><span class="cx">     : m_player(parent)
</span><del>-    , m_duration(0)
</del><ins>+    , m_duration(std::numeric_limits&lt;float&gt;::quiet_NaN())
</ins><span class="cx">     , m_isEnded(false)
</span><ins>+    , m_totalVideoFrames(0)
+    , m_droppedVideoFrames(0)
+    , m_corruptedVideoFrames(0)
+    , m_totalFrameDelay(0)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> MockMediaSourcePrivate::~MockMediaSourcePrivate()
</span><span class="cx"> {
</span><ins>+    for (auto it = m_sourceBuffers.begin(), end = m_sourceBuffers.end(); it != end; ++it)
+        (*it)-&gt;clearMediaSource();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> MediaSourcePrivate::AddStatus MockMediaSourcePrivate::addSourceBuffer(const ContentType&amp; contentType, RefPtr&lt;SourceBufferPrivate&gt;&amp; outPrivate)
</span><span class="lines">@@ -94,7 +100,8 @@
</span><span class="cx"> 
</span><span class="cx"> void MockMediaSourcePrivate::markEndOfStream(EndOfStreamStatus status)
</span><span class="cx"> {
</span><del>-    UNUSED_PARAM(status);
</del><ins>+    if (status == EosNoError)
+        m_player-&gt;setNetworkState(MediaPlayer::Loaded);
</ins><span class="cx">     m_isEnded = true;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformmockmediasourceMockMediaSourcePrivateh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/mock/mediasource/MockMediaSourcePrivate.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/mock/mediasource/MockMediaSourcePrivate.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/mock/mediasource/MockMediaSourcePrivate.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -52,6 +52,16 @@
</span><span class="cx">     void seekToTime(const MediaTime&amp;);
</span><span class="cx">     MediaTime seekToTime(const MediaTime&amp;, const MediaTime&amp; negativeThreshold, const MediaTime&amp; positiveThreshold);
</span><span class="cx"> 
</span><ins>+    unsigned long totalVideoFrames() const { return m_totalVideoFrames; }
+    unsigned long droppedVideoFrames() const  { return m_droppedVideoFrames; }
+    unsigned long corruptedVideoFrames() const { return m_corruptedVideoFrames; }
+    double totalFrameDelay() const { return m_totalFrameDelay; }
+
+    void incrementTotalVideoFrames() { ++m_totalVideoFrames; }
+    void incrementDroppedFrames() { ++m_droppedVideoFrames; }
+    void incrementCorruptedFrames() { ++m_corruptedVideoFrames; }
+    void incrementTotalFrameDelayBy(double delay) { m_totalFrameDelay += delay; }
+
</ins><span class="cx"> private:
</span><span class="cx">     MockMediaSourcePrivate(MockMediaPlayerMediaSource*);
</span><span class="cx"> 
</span><span class="lines">@@ -74,6 +84,11 @@
</span><span class="cx">     Vector&lt;RefPtr&lt;MockSourceBufferPrivate&gt;&gt; m_sourceBuffers;
</span><span class="cx">     Vector&lt;MockSourceBufferPrivate*&gt; m_activeSourceBuffers;
</span><span class="cx">     bool m_isEnded;
</span><ins>+
+    unsigned long m_totalVideoFrames;
+    unsigned long m_droppedVideoFrames;
+    unsigned long m_corruptedVideoFrames;
+    double m_totalFrameDelay;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformmockmediasourceMockSourceBufferPrivatecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/mock/mediasource/MockSourceBufferPrivate.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/mock/mediasource/MockSourceBufferPrivate.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/mock/mediasource/MockSourceBufferPrivate.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -100,7 +100,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> MockSourceBufferPrivate::MockSourceBufferPrivate(MockMediaSourcePrivate* parent)
</span><del>-    : m_parent(parent)
</del><ins>+    : m_mediaSource(parent)
</ins><span class="cx">     , m_client(0)
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="lines">@@ -187,17 +187,19 @@
</span><span class="cx"> 
</span><span class="cx"> void MockSourceBufferPrivate::removedFromMediaSource()
</span><span class="cx"> {
</span><del>-    m_parent-&gt;removeSourceBuffer(this);
</del><ins>+    if (m_mediaSource)
+        m_mediaSource-&gt;removeSourceBuffer(this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> MediaPlayer::ReadyState MockSourceBufferPrivate::readyState() const
</span><span class="cx"> {
</span><del>-    return m_parent-&gt;player()-&gt;readyState();
</del><ins>+    return m_mediaSource ? m_mediaSource-&gt;player()-&gt;readyState() : MediaPlayer::HaveNothing;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MockSourceBufferPrivate::setReadyState(MediaPlayer::ReadyState readyState)
</span><span class="cx"> {
</span><del>-    m_parent-&gt;player()-&gt;setReadyState(readyState);
</del><ins>+    if (m_mediaSource)
+        m_mediaSource-&gt;player()-&gt;setReadyState(readyState);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MockSourceBufferPrivate::evictCodedFrames()
</span><span class="lines">@@ -212,9 +214,32 @@
</span><span class="cx"> 
</span><span class="cx"> void MockSourceBufferPrivate::setActive(bool isActive)
</span><span class="cx"> {
</span><del>-    m_parent-&gt;sourceBufferPrivateDidChangeActiveState(this, isActive);
</del><ins>+    if (m_mediaSource)
+        m_mediaSource-&gt;sourceBufferPrivateDidChangeActiveState(this, isActive);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void MockSourceBufferPrivate::enqueueSample(PassRefPtr&lt;MediaSample&gt; sample, AtomicString)
+{
+    if (!m_mediaSource || !sample)
+        return;
+
+    PlatformSample platformSample = sample-&gt;platformSample();
+    if (platformSample.type != PlatformSample::MockSampleBoxType)
+        return;
+
+    MockSampleBox* box = platformSample.sample.mockSampleBox;
+    if (!box)
+        return;
+
+    m_mediaSource-&gt;incrementTotalVideoFrames();
+    if (box-&gt;isCorrupted())
+        m_mediaSource-&gt;incrementCorruptedFrames();
+    if (box-&gt;isDropped())
+        m_mediaSource-&gt;incrementDroppedFrames();
+    if (box-&gt;isDelayed())
+        m_mediaSource-&gt;incrementTotalFrameDelayBy(1);
+}
+
</ins><span class="cx"> bool MockSourceBufferPrivate::hasVideo() const
</span><span class="cx"> {
</span><span class="cx">     if (!m_client)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformmockmediasourceMockSourceBufferPrivateh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/mock/mediasource/MockSourceBufferPrivate.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/mock/mediasource/MockSourceBufferPrivate.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/mock/mediasource/MockSourceBufferPrivate.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -50,6 +50,8 @@
</span><span class="cx">     static RefPtr&lt;MockSourceBufferPrivate&gt; create(MockMediaSourcePrivate*);
</span><span class="cx">     virtual ~MockSourceBufferPrivate();
</span><span class="cx"> 
</span><ins>+    void clearMediaSource() { m_mediaSource = nullptr; }
+
</ins><span class="cx">     bool hasVideo() const;
</span><span class="cx">     bool hasAudio() const;
</span><span class="cx"> 
</span><span class="lines">@@ -70,14 +72,14 @@
</span><span class="cx">     virtual bool isFull() OVERRIDE;
</span><span class="cx"> 
</span><span class="cx">     virtual void flushAndEnqueueNonDisplayingSamples(Vector&lt;RefPtr&lt;MediaSample&gt;&gt;, AtomicString) OVERRIDE { }
</span><del>-    virtual void enqueueSample(PassRefPtr&lt;MediaSample&gt;, AtomicString) OVERRIDE { }
</del><ins>+    virtual void enqueueSample(PassRefPtr&lt;MediaSample&gt;, AtomicString) OVERRIDE;
</ins><span class="cx">     virtual bool isReadyForMoreSamples() OVERRIDE { return true; }
</span><span class="cx">     virtual void setActive(bool) OVERRIDE;
</span><span class="cx"> 
</span><span class="cx">     void didReceiveInitializationSegment(const MockInitializationBox&amp;);
</span><span class="cx">     void didReceiveSample(const MockSampleBox&amp;);
</span><span class="cx"> 
</span><del>-    MockMediaSourcePrivate* m_parent;
</del><ins>+    MockMediaSourcePrivate* m_mediaSource;
</ins><span class="cx">     SourceBufferPrivateClient* m_client;
</span><span class="cx"> 
</span><span class="cx">     Vector&lt;char&gt; m_inputBuffer;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformnetworkResourceHandlecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/network/ResourceHandle.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/network/ResourceHandle.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/network/ResourceHandle.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -147,7 +147,7 @@
</span><span class="cx">     d-&gt;m_client = client;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-#if !PLATFORM(MAC)
</del><ins>+#if !PLATFORM(MAC) &amp;&amp; !USE(CFNETWORK)
</ins><span class="cx"> // ResourceHandle never uses async client calls on these platforms yet.
</span><span class="cx"> void ResourceHandle::continueWillSendRequest(const ResourceRequest&amp;)
</span><span class="cx"> {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformnetworkResourceHandleh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/network/ResourceHandle.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/network/ResourceHandle.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/network/ResourceHandle.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -69,10 +69,10 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if USE(CFNETWORK)
</span><ins>+typedef const struct _CFCachedURLResponse* CFCachedURLResponseRef;
</ins><span class="cx"> typedef struct _CFURLConnection* CFURLConnectionRef;
</span><span class="cx"> typedef int CFHTTPCookieStorageAcceptPolicy;
</span><span class="cx"> typedef struct OpaqueCFHTTPCookieStorage* CFHTTPCookieStorageRef;
</span><del>-typedef struct CFURLConnectionClient_V6 CFURLConnectionClient_V6;
</del><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(MAC) || USE(CFNETWORK)
</span><span class="lines">@@ -142,7 +142,6 @@
</span><span class="cx">     const ResourceRequest&amp; currentRequest() const;
</span><span class="cx">     static void setHostAllowsAnyHTTPSCertificate(const String&amp;);
</span><span class="cx">     static void setClientCertificate(const String&amp; host, CFDataRef);
</span><del>-    static CFURLConnectionClient_V6* connectionClientCallbacks();
</del><span class="cx"> 
</span><span class="cx"> #if USE(QUICK_LOOK)
</span><span class="cx">     QuickLookHandle* quickLookHandle() { return m_quickLook.get(); }
</span><span class="lines">@@ -180,6 +179,7 @@
</span><span class="cx">     void sendPendingRequest();
</span><span class="cx">     bool cancelledOrClientless();
</span><span class="cx">     void ensureReadBuffer();
</span><ins>+    size_t currentStreamPosition() const;
</ins><span class="cx">     static SoupSession* defaultSession();
</span><span class="cx">     static SoupSession* createTestingSession();
</span><span class="cx">     static SoupSession* createPrivateBrowsingSession();
</span><span class="lines">@@ -214,8 +214,10 @@
</span><span class="cx">     void continueCanAuthenticateAgainstProtectionSpace(bool);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-#if PLATFORM(MAC)
</del><span class="cx">     // Called in response to ResourceHandleClient::willCacheResponseAsync().
</span><ins>+#if USE(CFNETWORK)
+    void continueWillCacheResponse(CFCachedURLResponseRef);
+#elif PLATFORM(MAC)
</ins><span class="cx">     void continueWillCacheResponse(NSCachedURLResponse *);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformnetworkResourceHandleClientcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/network/ResourceHandleClient.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/network/ResourceHandleClient.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/network/ResourceHandleClient.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -61,7 +61,12 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-#if PLATFORM(MAC)
</del><ins>+#if USE(CFNETWORK)
+void ResourceHandleClient::willCacheResponseAsync(ResourceHandle* handle, CFCachedURLResponseRef response)
+{
+    handle-&gt;continueWillCacheResponse(response);
+}
+#elif PLATFORM(MAC)
</ins><span class="cx"> void ResourceHandleClient::willCacheResponseAsync(ResourceHandle* handle, NSCachedURLResponse *response)
</span><span class="cx"> {
</span><span class="cx">     handle-&gt;continueWillCacheResponse(response);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformnetworkResourceHandleClienth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/network/ResourceHandleClient.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/network/ResourceHandleClient.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/network/ResourceHandleClient.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -89,8 +89,10 @@
</span><span class="cx">         // Client will pass an updated request using ResourceHandle::continueCanAuthenticateAgainstProtectionSpace() when ready.
</span><span class="cx">         virtual void canAuthenticateAgainstProtectionSpaceAsync(ResourceHandle*, const ProtectionSpace&amp;);
</span><span class="cx"> #endif
</span><del>-#if PLATFORM(MAC) &amp;&amp; !USE(CFNETWORK)
</del><span class="cx">         // Client will pass an updated request using ResourceHandle::continueWillCacheResponse() when ready.
</span><ins>+#if USE(CFNETWORK)
+        virtual void willCacheResponseAsync(ResourceHandle*, CFCachedURLResponseRef);
+#elif PLATFORM(MAC)
</ins><span class="cx">         virtual void willCacheResponseAsync(ResourceHandle*, NSCachedURLResponse *);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformnetworkResourceHandleInternalh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/network/ResourceHandleInternal.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/network/ResourceHandleInternal.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/network/ResourceHandleInternal.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -33,6 +33,7 @@
</span><span class="cx"> #include &quot;Timer.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #if USE(CFNETWORK)
</span><ins>+#include &quot;ResourceHandleCFURLConnectionDelegate.h&quot;
</ins><span class="cx"> #include &lt;CFNetwork/CFURLConnectionPriv.h&gt;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -106,11 +107,10 @@
</span><span class="cx"> #endif
</span><span class="cx"> #if USE(SOUP)
</span><span class="cx">             , m_cancelled(false)
</span><del>-            , m_readBufferPtr(0)
-            , m_readBufferSize(0)
</del><span class="cx">             , m_bodySize(0)
</span><span class="cx">             , m_bodyDataSent(0)
</span><span class="cx">             , m_redirectCount(0)
</span><ins>+            , m_previousPosition(0)
</ins><span class="cx"> #endif
</span><span class="cx"> #if PLATFORM(MAC)
</span><span class="cx">             , m_startWhenScheduled(false)
</span><span class="lines">@@ -148,6 +148,7 @@
</span><span class="cx"> #if USE(CFNETWORK)
</span><span class="cx">         RetainPtr&lt;CFURLConnectionRef&gt; m_connection;
</span><span class="cx">         ResourceRequest m_currentRequest;
</span><ins>+        RefPtr&lt;ResourceHandleCFURLConnectionDelegate&gt; m_connectionDelegate;
</ins><span class="cx"> #endif
</span><span class="cx"> #if PLATFORM(MAC) &amp;&amp; !USE(CFNETWORK)
</span><span class="cx">         RetainPtr&lt;NSURLConnection&gt; m_connection;
</span><span class="lines">@@ -196,13 +197,12 @@
</span><span class="cx">         GRefPtr&lt;GCancellable&gt; m_cancellable;
</span><span class="cx">         GRefPtr&lt;GAsyncResult&gt; m_deferredResult;
</span><span class="cx">         GRefPtr&lt;GSource&gt; m_timeoutSource;
</span><del>-        GOwnPtr&lt;char&gt; m_defaultReadBuffer;
-        char* m_readBufferPtr;
-        size_t m_readBufferSize;
</del><ins>+        GOwnPtr&lt;SoupBuffer&gt; m_soupBuffer;
</ins><span class="cx">         unsigned long m_bodySize;
</span><span class="cx">         unsigned long m_bodyDataSent;
</span><span class="cx">         SoupSession* soupSession();
</span><span class="cx">         int m_redirectCount;
</span><ins>+        size_t m_previousPosition;
</ins><span class="cx"> #endif
</span><span class="cx"> #if PLATFORM(GTK)
</span><span class="cx">         struct {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformnetworkcfResourceHandleCFNetcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -34,15 +34,14 @@
</span><span class="cx"> #include &quot;FormDataStreamCFNet.h&quot;
</span><span class="cx"> #include &quot;Frame.h&quot;
</span><span class="cx"> #include &quot;FrameLoader.h&quot;
</span><del>-#include &quot;LoaderRunLoopCF.h&quot;
</del><span class="cx"> #include &quot;Logging.h&quot;
</span><del>-#include &quot;MIMETypeRegistry.h&quot;
</del><span class="cx"> #include &quot;NetworkingContext.h&quot;
</span><span class="cx"> #include &quot;ResourceError.h&quot;
</span><span class="cx"> #include &quot;ResourceHandleClient.h&quot;
</span><span class="cx"> #include &quot;ResourceResponse.h&quot;
</span><span class="cx"> #include &quot;SharedBuffer.h&quot;
</span><span class="cx"> #include &quot;SynchronousLoaderClient.h&quot;
</span><ins>+#include &quot;SynchronousResourceHandleCFURLConnectionDelegate.h&quot;
</ins><span class="cx"> #include &lt;CFNetwork/CFNetwork.h&gt;
</span><span class="cx"> #include &lt;sys/stat.h&gt;
</span><span class="cx"> #include &lt;sys/types.h&gt;
</span><span class="lines">@@ -52,11 +51,8 @@
</span><span class="cx"> #include &lt;wtf/text/Base64.h&gt;
</span><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><span class="cx"> 
</span><del>-#if PLATFORM(IOS)
-#include &quot;WebCoreThread.h&quot;
-#endif // PLATFORM(IOS)
-
</del><span class="cx"> #if PLATFORM(MAC)
</span><ins>+#include &quot;ResourceHandleCFURLConnectionDelegateWithOperationQueue.h&quot;
</ins><span class="cx"> #include &quot;WebCoreSystemInterface.h&quot;
</span><span class="cx"> #if USE(CFNETWORK)
</span><span class="cx"> #include &quot;WebCoreURLResponse.h&quot;
</span><span class="lines">@@ -96,15 +92,6 @@
</span><span class="cx">     return certs;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-#if !PLATFORM(MAC)
-static void setDefaultMIMEType(CFURLResponseRef response)
-{
-    static CFStringRef defaultMIMETypeString = defaultMIMEType().createCFString().leakRef();
-    
-    CFURLResponseSetMIMEType(response, defaultMIMETypeString);
-}
-#endif
-
</del><span class="cx"> static void applyBasicAuthorizationHeader(ResourceRequest&amp; request, const Credential&amp; credential)
</span><span class="cx"> {
</span><span class="cx">     String authenticationHeader = &quot;Basic &quot; + base64Encode(String(credential.user() + &quot;:&quot; + credential.password()).utf8());
</span><span class="lines">@@ -112,291 +99,11 @@
</span><span class="cx">     request.addHTTPHeaderField(&quot;Authorization&quot;, authenticationHeader);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static RetainPtr&lt;CFURLResponseRef&gt; synthesizeRedirectResponseIfNecessary(const ResourceRequest&amp; currentRequest, CFURLRequestRef newRequest, CFURLResponseRef cfRedirectResponse)
-{
-    if (cfRedirectResponse)
-        return cfRedirectResponse;
-
-    CFURLRef newURL = CFURLRequestGetURL(newRequest);
-    RetainPtr&lt;CFStringRef&gt; newScheme = adoptCF(CFURLCopyScheme(newURL));
-
-    // If the protocols of the new request and the current request match, this is not an HSTS redirect and we shouldn't synthesize a redirect response.
-    if (currentRequest.url().protocol() == String(newScheme.get()))
-        return 0;
-
-    RetainPtr&lt;CFURLRef&gt; currentURL = currentRequest.url().createCFURL();
-    RetainPtr&lt;CFHTTPMessageRef&gt; responseMessage = adoptCF(CFHTTPMessageCreateResponse(0, 302, 0, kCFHTTPVersion1_1));
-    RetainPtr&lt;CFURLRef&gt; newAbsoluteURL = adoptCF(CFURLCopyAbsoluteURL(newURL));
-    CFHTTPMessageSetHeaderFieldValue(responseMessage.get(), CFSTR(&quot;Location&quot;), CFURLGetString(newAbsoluteURL.get()));
-    CFHTTPMessageSetHeaderFieldValue(responseMessage.get(), CFSTR(&quot;Cache-Control&quot;), CFSTR(&quot;no-store&quot;));
-
-    RetainPtr&lt;CFURLResponseRef&gt; newResponse = adoptCF(CFURLResponseCreateWithHTTPResponse(0, currentURL.get(), responseMessage.get(), kCFURLCacheStorageNotAllowed));
-    return newResponse;
-}
-
-static CFURLRequestRef willSendRequest(CFURLConnectionRef conn, CFURLRequestRef cfRequest, CFURLResponseRef originalRedirectResponse, const void* clientInfo)
-{
-#if LOG_DISABLED
-    UNUSED_PARAM(conn);
-#endif
-    ResourceHandle* handle = static_cast&lt;ResourceHandle*&gt;(const_cast&lt;void*&gt;(clientInfo));
-    RetainPtr&lt;CFURLResponseRef&gt; redirectResponse = synthesizeRedirectResponseIfNecessary(handle-&gt;currentRequest(), cfRequest, originalRedirectResponse);
-
-    if (!redirectResponse) {
-        CFRetain(cfRequest);
-        return cfRequest;
-    }
-
-    LOG(Network, &quot;CFNet - willSendRequest(conn=%p, handle=%p) (%s)&quot;, conn, handle, handle-&gt;firstRequest().url().string().utf8().data());
-
-    ResourceRequest request;
-    if (redirectResponse) {
-        CFHTTPMessageRef httpMessage = CFURLResponseGetHTTPResponse(redirectResponse.get());
-        if (httpMessage &amp;&amp; CFHTTPMessageGetResponseStatusCode(httpMessage) == 307) {
-            RetainPtr&lt;CFStringRef&gt; lastHTTPMethod = handle-&gt;lastHTTPMethod().createCFString();
-            RetainPtr&lt;CFStringRef&gt; newMethod = adoptCF(CFURLRequestCopyHTTPRequestMethod(cfRequest));
-            if (CFStringCompareWithOptions(lastHTTPMethod.get(), newMethod.get(), CFRangeMake(0, CFStringGetLength(lastHTTPMethod.get())), kCFCompareCaseInsensitive)) {
-                RetainPtr&lt;CFMutableURLRequestRef&gt; mutableRequest = adoptCF(CFURLRequestCreateMutableCopy(0, cfRequest));
-                wkSetRequestStorageSession(handle-&gt;storageSession(), mutableRequest.get());
-                CFURLRequestSetHTTPRequestMethod(mutableRequest.get(), lastHTTPMethod.get());
-
-                FormData* body = handle-&gt;firstRequest().httpBody();
-                if (!equalIgnoringCase(handle-&gt;firstRequest().httpMethod(), &quot;GET&quot;) &amp;&amp; body &amp;&amp; !body-&gt;isEmpty())
-                    WebCore::setHTTPBody(mutableRequest.get(), body);
-
-                String originalContentType = handle-&gt;firstRequest().httpContentType();
-                if (!originalContentType.isEmpty())
-                    CFURLRequestSetHTTPHeaderFieldValue(mutableRequest.get(), CFSTR(&quot;Content-Type&quot;), originalContentType.createCFString().get());
-
-                request = mutableRequest.get();
-            }
-        }
-    }
-    if (request.isNull())
-        request = cfRequest;
-
-    // Should not set Referer after a redirect from a secure resource to non-secure one.
-    if (!request.url().protocolIs(&quot;https&quot;) &amp;&amp; protocolIs(request.httpReferrer(), &quot;https&quot;) &amp;&amp; handle-&gt;context()-&gt;shouldClearReferrerOnHTTPSToHTTPRedirect())
-        request.clearHTTPReferrer();
-
-    handle-&gt;willSendRequest(request, redirectResponse.get());
-
-    if (request.isNull())
-        return 0;
-
-    cfRequest = request.cfURLRequest(UpdateHTTPBody);
-
-    CFRetain(cfRequest);
-    return cfRequest;
-}
-
-static void didReceiveResponse(CFURLConnectionRef conn, CFURLResponseRef cfResponse, const void* clientInfo)
-{
-#if LOG_DISABLED &amp;&amp; !USE(QUICK_LOOK)
-    UNUSED_PARAM(conn);
-#endif
-    ResourceHandle* handle = static_cast&lt;ResourceHandle*&gt;(const_cast&lt;void*&gt;(clientInfo));
-
-    LOG(Network, &quot;CFNet - didReceiveResponse(conn=%p, handle=%p) (%s)&quot;, conn, handle, handle-&gt;firstRequest().url().string().utf8().data());
-
-    if (!handle-&gt;client())
-        return;
-
-#if PLATFORM(MAC)
-    // Avoid MIME type sniffing if the response comes back as 304 Not Modified.
-    CFHTTPMessageRef msg = wkGetCFURLResponseHTTPResponse(cfResponse);
-    int statusCode = msg ? CFHTTPMessageGetResponseStatusCode(msg) : 0;
-
-    if (statusCode != 304)
-        adjustMIMETypeIfNecessary(cfResponse);
-
-#if !PLATFORM(IOS)
-    if (_CFURLRequestCopyProtocolPropertyForKey(handle-&gt;firstRequest().cfURLRequest(DoNotUpdateHTTPBody), CFSTR(&quot;ForceHTMLMIMEType&quot;)))
-        wkSetCFURLResponseMIMEType(cfResponse, CFSTR(&quot;text/html&quot;));
-#endif // !PLATFORM(IOS)
-#else
-    if (!CFURLResponseGetMIMEType(cfResponse)) {
-        // We should never be applying the default MIMEType if we told the networking layer to do content sniffing for handle.
-        ASSERT(!handle-&gt;shouldContentSniff());
-        setDefaultMIMEType(cfResponse);
-    }
-#endif
-
-#if USE(QUICK_LOOK)
-    handle-&gt;setQuickLookHandle(QuickLookHandle::create(handle, conn, cfResponse));
-    if (handle-&gt;quickLookHandle())
-        cfResponse = handle-&gt;quickLookHandle()-&gt;cfResponse();
-#endif
-    
-    handle-&gt;client()-&gt;didReceiveResponse(handle, cfResponse);
-}
-
-#if USE(NETWORK_CFDATA_ARRAY_CALLBACK)
-static void didReceiveDataArray(CFURLConnectionRef conn, CFArrayRef dataArray, const void* clientInfo)
-{
-#if LOG_DISABLED
-    UNUSED_PARAM(conn);
-#endif
-    ResourceHandle* handle = static_cast&lt;ResourceHandle*&gt;(const_cast&lt;void*&gt;(clientInfo));
-    if (!handle-&gt;client())
-        return;
-
-    LOG(Network, &quot;CFNet - didReceiveDataArray(conn=%p, handle=%p, arrayLength=%ld) (%s)&quot;, conn, handle, CFArrayGetCount(dataArray), handle-&gt;firstRequest().url().string().utf8().data());
-
-#if USE(QUICK_LOOK)
-    if (handle-&gt;quickLookHandle() &amp;&amp; handle-&gt;quickLookHandle()-&gt;didReceiveDataArray(dataArray))
-        return;
-#endif
-
-    handle-&gt;handleDataArray(dataArray);
-}
-#endif
-
-static void didReceiveData(CFURLConnectionRef conn, CFDataRef data, CFIndex originalLength, const void* clientInfo)
-{
-    ResourceHandle* handle = static_cast&lt;ResourceHandle*&gt;(const_cast&lt;void*&gt;(clientInfo));
-
-#if LOG_DISABLED
-    UNUSED_PARAM(conn);
-#else
-    CFIndex length = CFDataGetLength(data);
-    LOG(Network, &quot;CFNet - didReceiveData(conn=%p, handle=%p, bytes=%ld) (%s)&quot;, conn, handle, length, handle-&gt;firstRequest().url().string().utf8().data());
-#endif
-
-#if USE(QUICK_LOOK)
-    if (handle-&gt;quickLookHandle() &amp;&amp; handle-&gt;quickLookHandle()-&gt;didReceiveData(data))
-        return;
-#endif
-
-    if (ResourceHandleClient* client = handle-&gt;client())
-        client-&gt;didReceiveBuffer(handle, SharedBuffer::wrapCFData(data), originalLength);
-}
-
-static void didSendBodyData(CFURLConnectionRef, CFIndex, CFIndex totalBytesWritten, CFIndex totalBytesExpectedToWrite, const void *clientInfo)
-{
-    ResourceHandle* handle = static_cast&lt;ResourceHandle*&gt;(const_cast&lt;void*&gt;(clientInfo));
-    if (!handle || !handle-&gt;client())
-        return;
-    handle-&gt;client()-&gt;didSendData(handle, totalBytesWritten, totalBytesExpectedToWrite);
-}
-
-static Boolean shouldUseCredentialStorageCallback(CFURLConnectionRef conn, const void* clientInfo)
-{
-#if LOG_DISABLED
-    UNUSED_PARAM(conn);
-#endif
-    ResourceHandle* handle = const_cast&lt;ResourceHandle*&gt;(static_cast&lt;const ResourceHandle*&gt;(clientInfo));
-
-    LOG(Network, &quot;CFNet - shouldUseCredentialStorage(conn=%p, handle=%p) (%s)&quot;, conn, handle, handle-&gt;firstRequest().url().string().utf8().data());
-
-    if (!handle)
-        return false;
-
-    return handle-&gt;shouldUseCredentialStorage();
-}
-
-static void didFinishLoading(CFURLConnectionRef conn, const void* clientInfo)
-{
-#if LOG_DISABLED
-    UNUSED_PARAM(conn);
-#endif
-    ResourceHandle* handle = static_cast&lt;ResourceHandle*&gt;(const_cast&lt;void*&gt;(clientInfo));
-
-    LOG(Network, &quot;CFNet - didFinishLoading(conn=%p, handle=%p) (%s)&quot;, conn, handle, handle-&gt;firstRequest().url().string().utf8().data());
-
-#if USE(QUICK_LOOK)
-    if (handle-&gt;quickLookHandle() &amp;&amp; handle-&gt;quickLookHandle()-&gt;didFinishLoading())
-        return;
-#endif
-
-    if (handle-&gt;client())
-        handle-&gt;client()-&gt;didFinishLoading(handle, 0);
-}
-
-static void didFail(CFURLConnectionRef conn, CFErrorRef error, const void* clientInfo)
-{
-#if LOG_DISABLED
-    UNUSED_PARAM(conn);
-#endif
-    ResourceHandle* handle = static_cast&lt;ResourceHandle*&gt;(const_cast&lt;void*&gt;(clientInfo));
-
-    LOG(Network, &quot;CFNet - didFail(conn=%p, handle=%p, error = %p) (%s)&quot;, conn, handle, error, handle-&gt;firstRequest().url().string().utf8().data());
-
-#if USE(QUICK_LOOK)
-    if (handle-&gt;quickLookHandle())
-        handle-&gt;quickLookHandle()-&gt;didFail();
-#endif
-
-    if (handle-&gt;client())
-        handle-&gt;client()-&gt;didFail(handle, ResourceError(error));
-}
-
-static CFCachedURLResponseRef willCacheResponse(CFURLConnectionRef, CFCachedURLResponseRef cachedResponse, const void* clientInfo)
-{
-    ResourceHandle* handle = static_cast&lt;ResourceHandle*&gt;(const_cast&lt;void*&gt;(clientInfo));
-
-#if PLATFORM(WIN)
-    // Workaround for &lt;rdar://problem/6300990&gt; Caching does not respect Vary HTTP header.
-    // FIXME: WebCore cache has issues with Vary, too (bug 58797, bug 71509).
-    CFURLResponseRef wrappedResponse = CFCachedURLResponseGetWrappedResponse(cachedResponse);
-    if (CFHTTPMessageRef httpResponse = CFURLResponseGetHTTPResponse(wrappedResponse)) {
-        ASSERT(CFHTTPMessageIsHeaderComplete(httpResponse));
-        RetainPtr&lt;CFStringRef&gt; varyValue = adoptCF(CFHTTPMessageCopyHeaderFieldValue(httpResponse, CFSTR(&quot;Vary&quot;)));
-        if (varyValue)
-            return 0;
-    }
-#endif // PLATFORM(WIN)
-
-#if PLATFORM(WIN)
-    if (handle-&gt;client() &amp;&amp; !handle-&gt;client()-&gt;shouldCacheResponse(handle, cachedResponse))
-        return 0;
-#else
-    CFCachedURLResponseRef newResponse = handle-&gt;client()-&gt;willCacheResponse(handle, cachedResponse);
-    if (newResponse != cachedResponse)
-        return newResponse;
-#endif
-
-    CFRetain(cachedResponse);
-
-    return cachedResponse;
-}
-
-static void didReceiveChallenge(CFURLConnectionRef conn, CFURLAuthChallengeRef challenge, const void* clientInfo)
-{
-#if LOG_DISABLED
-    UNUSED_PARAM(conn);
-#endif
-    ResourceHandle* handle = static_cast&lt;ResourceHandle*&gt;(const_cast&lt;void*&gt;(clientInfo));
-    ASSERT(handle);
-    LOG(Network, &quot;CFNet - didReceiveChallenge(conn=%p, handle=%p (%s)&quot;, conn, handle, handle-&gt;firstRequest().url().string().utf8().data());
-
-    handle-&gt;didReceiveAuthenticationChallenge(AuthenticationChallenge(challenge, handle));
-}
-
-#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
-static Boolean canRespondToProtectionSpace(CFURLConnectionRef conn, CFURLProtectionSpaceRef protectionSpace, const void* clientInfo)
-{
-#if LOG_DISABLED
-    UNUSED_PARAM(conn);
-#endif
-    ResourceHandle* handle = static_cast&lt;ResourceHandle*&gt;(const_cast&lt;void*&gt;(clientInfo));
-    ASSERT(handle);
-
-    LOG(Network, &quot;CFNet - canRespondToProtectionSpace(conn=%p, handle=%p (%s)&quot;, conn, handle, handle-&gt;firstRequest().url().string().utf8().data());
-
-#if PLATFORM(IOS)
-    ProtectionSpace coreProtectionSpace = core(protectionSpace);
-    if (coreProtectionSpace.authenticationScheme() == ProtectionSpaceAuthenticationSchemeUnknown)
-        return false;
-    return handle-&gt;canAuthenticateAgainstProtectionSpace(coreProtectionSpace);
-#else
-    return handle-&gt;canAuthenticateAgainstProtectionSpace(core(protectionSpace));
-#endif
-}
-#endif
-
</del><span class="cx"> ResourceHandleInternal::~ResourceHandleInternal()
</span><span class="cx"> {
</span><ins>+    if (m_connectionDelegate)
+        m_connectionDelegate-&gt;releaseHandle();
+
</ins><span class="cx">     if (m_connection) {
</span><span class="cx">         LOG(Network, &quot;CFNet - Cancelling connection %p (%s)&quot;, m_connection.get(), m_firstRequest.url().string().utf8().data());
</span><span class="cx">         CFURLConnectionCancel(m_connection.get());
</span><span class="lines">@@ -477,9 +184,6 @@
</span><span class="cx">     }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    CFURLConnectionClient_V6 client = *ResourceHandle::connectionClientCallbacks();
-    client.clientInfo = this;
-
</del><span class="cx">     CFMutableDictionaryRef streamProperties  = CFDictionaryCreateMutable(0, 0, &amp;kCFTypeDictionaryKeyCallBacks, &amp;kCFTypeDictionaryValueCallBacks);
</span><span class="cx">     if (!shouldUseCredentialStorage)
</span><span class="cx">         CFDictionarySetValue(streamProperties, CFSTR(&quot;_kCFURLConnectionSessionID&quot;), CFSTR(&quot;WebKitPrivateSession&quot;));
</span><span class="lines">@@ -499,9 +203,20 @@
</span><span class="cx">     CFDictionaryAddValue(propertiesDictionary.get(), kCFURLConnectionSocketStreamProperties, streamProperties);
</span><span class="cx">     CFRelease(streamProperties);
</span><span class="cx"> 
</span><del>-#if PLATFORM(IOS)
-    CFURLRequestSetShouldStartSynchronously(request.get(), 1);
</del><ins>+
+
+#if PLATFORM(MAC)
+    if (client() &amp;&amp; client()-&gt;usesAsyncCallbacks())
+        d-&gt;m_connectionDelegate = adoptRef(new ResourceHandleCFURLConnectionDelegateWithOperationQueue(this));
+    else
+        d-&gt;m_connectionDelegate = adoptRef(new SynchronousResourceHandleCFURLConnectionDelegate(this));
+#else
+    d-&gt;m_connectionDelegate = adoptRef(new SynchronousResourceHandleCFURLConnectionDelegate(this));
</ins><span class="cx"> #endif
</span><ins>+    d-&gt;m_connectionDelegate-&gt;setupRequest(request.get());
+
+    CFURLConnectionClient_V6 client = d-&gt;m_connectionDelegate-&gt;makeConnectionClient();
+
</ins><span class="cx">     d-&gt;m_connection = adoptCF(CFURLConnectionCreateWithProperties(0, request.get(), reinterpret_cast&lt;CFURLConnectionClient*&gt;(&amp;client), propertiesDictionary.get()));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -521,14 +236,7 @@
</span><span class="cx"> 
</span><span class="cx">     createCFURLConnection(shouldUseCredentialStorage, d-&gt;m_shouldContentSniff, client()-&gt;connectionProperties(this).get());
</span><span class="cx"> 
</span><del>-#if PLATFORM(WIN)
-    CFURLConnectionScheduleWithCurrentMessageQueue(d-&gt;m_connection.get());
-#elif PLATFORM(IOS)
-    CFURLConnectionScheduleWithRunLoop(d-&gt;m_connection.get(), WebThreadRunLoop(), kCFRunLoopDefaultMode);
-#else
-    CFURLConnectionScheduleWithRunLoop(d-&gt;m_connection.get(), CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
-#endif
-    CFURLConnectionScheduleDownloadWithRunLoop(d-&gt;m_connection.get(), loaderRunLoop(), kCFRunLoopDefaultMode);
</del><ins>+    d-&gt;m_connectionDelegate-&gt;setupConnectionScheduling(d-&gt;m_connection.get());
</ins><span class="cx">     CFURLConnectionStart(d-&gt;m_connection.get());
</span><span class="cx"> 
</span><span class="cx">     LOG(Network, &quot;CFNet - Starting URL %s (handle=%p, conn=%p)&quot;, firstRequest().url().string().utf8().data(), this, d-&gt;m_connection.get());
</span><span class="lines">@@ -584,9 +292,12 @@
</span><span class="cx"> bool ResourceHandle::shouldUseCredentialStorage()
</span><span class="cx"> {
</span><span class="cx">     LOG(Network, &quot;CFNet - shouldUseCredentialStorage()&quot;);
</span><del>-    if (client())
-        return client()-&gt;shouldUseCredentialStorage(this);
-
</del><ins>+    if (ResourceHandleClient* client = this-&gt;client()) {
+        if (client-&gt;usesAsyncCallbacks())
+            client-&gt;shouldUseCredentialStorageAsync(this);
+        else
+            return client-&gt;shouldUseCredentialStorage(this);
+    }
</ins><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -656,9 +367,12 @@
</span><span class="cx"> #if USE(PROTECTION_SPACE_AUTH_CALLBACK)
</span><span class="cx"> bool ResourceHandle::canAuthenticateAgainstProtectionSpace(const ProtectionSpace&amp; protectionSpace)
</span><span class="cx"> {
</span><del>-    if (client())
-        return client()-&gt;canAuthenticateAgainstProtectionSpace(this, protectionSpace);
-
</del><ins>+    if (ResourceHandleClient* client = this-&gt;client()) {
+        if (client-&gt;usesAsyncCallbacks())
+            client-&gt;canAuthenticateAgainstProtectionSpaceAsync(this, protectionSpace);
+        else
+            return client-&gt;canAuthenticateAgainstProtectionSpace(this, protectionSpace);
+    }
</ins><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="lines">@@ -843,6 +557,36 @@
</span><span class="cx"> {
</span><span class="cx">     return d-&gt;m_currentRequest;
</span><span class="cx"> }
</span><ins>+
+void ResourceHandle::continueWillSendRequest(const ResourceRequest&amp; request)
+{
+    ResourceRequest requestResult = request;
+    if (!requestResult.isNull())
+        requestResult.setStorageSession(d-&gt;m_storageSession.get());
+    d-&gt;m_connectionDelegate-&gt;continueWillSendRequest(requestResult.cfURLRequest(UpdateHTTPBody));
+}
+
+void ResourceHandle::continueDidReceiveResponse()
+{
+    d-&gt;m_connectionDelegate-&gt;continueDidReceiveResponse();
+}
+
+void ResourceHandle::continueShouldUseCredentialStorage(bool useCredentialStorage)
+{
+    d-&gt;m_connectionDelegate-&gt;continueShouldUseCredentialStorage(useCredentialStorage);
+}
+
+#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
+void ResourceHandle::continueCanAuthenticateAgainstProtectionSpace(bool canAuthenticate)
+{
+    d-&gt;m_connectionDelegate-&gt;continueCanAuthenticateAgainstProtectionSpace(canAuthenticate);
+}
+#endif
+
+void ResourceHandle::continueWillCacheResponse(CFCachedURLResponseRef response)
+{
+    d-&gt;m_connectionDelegate-&gt;continueWillCacheResponse(response);
+}
</ins><span class="cx"> #endif // USE(CFNETWORK)
</span><span class="cx"> 
</span><span class="cx"> #if USE(NETWORK_CFDATA_ARRAY_CALLBACK)
</span><span class="lines">@@ -877,24 +621,4 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-#if USE(CFNETWORK)
-CFURLConnectionClient_V6* ResourceHandle::connectionClientCallbacks()
-{
-    static CFURLConnectionClient_V6 client = { 6, 0, 0, 0, 0, WebCore::willSendRequest, didReceiveResponse, didReceiveData, 0, didFinishLoading, didFail, willCacheResponse, didReceiveChallenge, didSendBodyData, shouldUseCredentialStorageCallback, 0,
-#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
-        canRespondToProtectionSpace,
-#else
-        0,
-#endif
-        0,
-#if USE(NETWORK_CFDATA_ARRAY_CALLBACK)
-        didReceiveDataArray
-#else
-        0
-#endif
-    };
-    return &amp;client;
-}
-#endif // USE(QUICK_LOOK) &amp;&amp; USE(CFNETWORK)
-
</del><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformnetworkcfResourceHandleCFURLConnectionDelegatecpp"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegate.cpp (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegate.cpp                                (rev 0)
+++ branches/jsCStack/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegate.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,205 @@
</span><ins>+/*
+ * Copyright (C) 2004-2013 Apple Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;ResourceHandleCFURLConnectionDelegate.h&quot;
+
+#if USE(CFNETWORK)
+
+#include &quot;FormDataStreamCFNet.h&quot;
+#include &quot;NetworkingContext.h&quot;
+#include &quot;ResourceHandle.h&quot;
+
+#if PLATFORM(MAC)
+#include &quot;WebCoreSystemInterface.h&quot;
+#endif
+
+#if PLATFORM(WIN)
+#include &lt;WebKitSystemInterface/WebKitSystemInterface.h&gt;
+#endif
+
+namespace WebCore {
+
+ResourceHandleCFURLConnectionDelegate::ResourceHandleCFURLConnectionDelegate(ResourceHandle* handle)
+    : m_handle(handle)
+{
+}
+
+ResourceHandleCFURLConnectionDelegate::~ResourceHandleCFURLConnectionDelegate()
+{
+}
+
+void ResourceHandleCFURLConnectionDelegate::releaseHandle()
+{
+    m_handle = nullptr;
+}
+
+CFURLRequestRef ResourceHandleCFURLConnectionDelegate::willSendRequestCallback(CFURLConnectionRef, CFURLRequestRef cfRequest, CFURLResponseRef originalRedirectResponse, const void* clientInfo)
+{
+    return static_cast&lt;ResourceHandleCFURLConnectionDelegate*&gt;(const_cast&lt;void*&gt;(clientInfo))-&gt;willSendRequest(cfRequest, originalRedirectResponse);
+}
+
+void ResourceHandleCFURLConnectionDelegate::didReceiveResponseCallback(CFURLConnectionRef, CFURLResponseRef cfResponse, const void* clientInfo)
+{
+    static_cast&lt;ResourceHandleCFURLConnectionDelegate*&gt;(const_cast&lt;void*&gt;(clientInfo))-&gt;didReceiveResponse(cfResponse);
+}
+
+void ResourceHandleCFURLConnectionDelegate::didReceiveDataCallback(CFURLConnectionRef, CFDataRef data, CFIndex originalLength, const void* clientInfo)
+{
+    static_cast&lt;ResourceHandleCFURLConnectionDelegate*&gt;(const_cast&lt;void*&gt;(clientInfo))-&gt;didReceiveData(data, originalLength);
+}
+
+void ResourceHandleCFURLConnectionDelegate::didFinishLoadingCallback(CFURLConnectionRef, const void* clientInfo)
+{
+    static_cast&lt;ResourceHandleCFURLConnectionDelegate*&gt;(const_cast&lt;void*&gt;(clientInfo))-&gt;didFinishLoading();
+}
+
+void ResourceHandleCFURLConnectionDelegate::didFailCallback(CFURLConnectionRef, CFErrorRef error, const void* clientInfo)
+{
+    static_cast&lt;ResourceHandleCFURLConnectionDelegate*&gt;(const_cast&lt;void*&gt;(clientInfo))-&gt;didFail(error);
+}
+
+CFCachedURLResponseRef ResourceHandleCFURLConnectionDelegate::willCacheResponseCallback(CFURLConnectionRef, CFCachedURLResponseRef cachedResponse, const void* clientInfo)
+{
+    return static_cast&lt;ResourceHandleCFURLConnectionDelegate*&gt;(const_cast&lt;void*&gt;(clientInfo))-&gt;willCacheResponse(cachedResponse);
+}
+
+void ResourceHandleCFURLConnectionDelegate::didReceiveChallengeCallback(CFURLConnectionRef, CFURLAuthChallengeRef challenge, const void* clientInfo)
+{
+    static_cast&lt;ResourceHandleCFURLConnectionDelegate*&gt;(const_cast&lt;void*&gt;(clientInfo))-&gt;didReceiveChallenge(challenge);
+}
+
+void ResourceHandleCFURLConnectionDelegate::didSendBodyDataCallback(CFURLConnectionRef, CFIndex, CFIndex totalBytesWritten, CFIndex totalBytesExpectedToWrite, const void *clientInfo)
+{
+    static_cast&lt;ResourceHandleCFURLConnectionDelegate*&gt;(const_cast&lt;void*&gt;(clientInfo))-&gt;didSendBodyData(totalBytesWritten, totalBytesExpectedToWrite);
+}
+
+Boolean ResourceHandleCFURLConnectionDelegate::shouldUseCredentialStorageCallback(CFURLConnectionRef, const void* clientInfo)
+{
+    return static_cast&lt;ResourceHandleCFURLConnectionDelegate*&gt;(const_cast&lt;void*&gt;(clientInfo))-&gt;shouldUseCredentialStorage();
+
+}
+
+#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
+Boolean ResourceHandleCFURLConnectionDelegate::canRespondToProtectionSpaceCallback(CFURLConnectionRef, CFURLProtectionSpaceRef protectionSpace, const void* clientInfo)
+{
+    return static_cast&lt;ResourceHandleCFURLConnectionDelegate*&gt;(const_cast&lt;void*&gt;(clientInfo))-&gt;canRespondToProtectionSpace(protectionSpace);
+}
+#endif // USE(PROTECTION_SPACE_AUTH_CALLBACK)
+
+#if USE(NETWORK_CFDATA_ARRAY_CALLBACK)
+void ResourceHandleCFURLConnectionDelegate::didReceiveDataArrayCallback(CFURLConnectionRef, CFArrayRef dataArray, const void* clientInfo)
+{
+    static_cast&lt;ResourceHandleCFURLConnectionDelegate*&gt;(const_cast&lt;void*&gt;(clientInfo))-&gt;didReceiveDataArray(dataArray);
+}
+#endif // USE(NETWORK_CFDATA_ARRAY_CALLBACK)
+
+RetainPtr&lt;CFURLResponseRef&gt; ResourceHandleCFURLConnectionDelegate::synthesizeRedirectResponseIfNecessary(CFURLRequestRef newRequest, CFURLResponseRef cfRedirectResponse)
+{
+    if (cfRedirectResponse)
+        return cfRedirectResponse;
+
+    CFURLRef newURL = CFURLRequestGetURL(newRequest);
+    RetainPtr&lt;CFStringRef&gt; newScheme = adoptCF(CFURLCopyScheme(newURL));
+
+    // If the protocols of the new request and the current request match, this is not an HSTS redirect and we shouldn't synthesize a redirect response.
+    const ResourceRequest&amp; currentRequest = m_handle-&gt;currentRequest();
+    if (currentRequest.url().protocol() == String(newScheme.get()))
+        return nullptr;
+
+    RetainPtr&lt;CFURLRef&gt; currentURL = currentRequest.url().createCFURL();
+    RetainPtr&lt;CFHTTPMessageRef&gt; responseMessage = adoptCF(CFHTTPMessageCreateResponse(0, 302, 0, kCFHTTPVersion1_1));
+    RetainPtr&lt;CFURLRef&gt; newAbsoluteURL = adoptCF(CFURLCopyAbsoluteURL(newURL));
+    CFHTTPMessageSetHeaderFieldValue(responseMessage.get(), CFSTR(&quot;Location&quot;), CFURLGetString(newAbsoluteURL.get()));
+    CFHTTPMessageSetHeaderFieldValue(responseMessage.get(), CFSTR(&quot;Cache-Control&quot;), CFSTR(&quot;no-store&quot;));
+
+    RetainPtr&lt;CFURLResponseRef&gt; newResponse = adoptCF(CFURLResponseCreateWithHTTPResponse(0, currentURL.get(), responseMessage.get(), kCFURLCacheStorageNotAllowed));
+    return newResponse;
+}
+
+ResourceRequest ResourceHandleCFURLConnectionDelegate::createResourceRequest(CFURLRequestRef cfRequest, CFURLResponseRef redirectResponse)
+{
+    ResourceRequest request;
+    CFHTTPMessageRef httpMessage = CFURLResponseGetHTTPResponse(redirectResponse);
+    if (httpMessage &amp;&amp; CFHTTPMessageGetResponseStatusCode(httpMessage) == 307) {
+        RetainPtr&lt;CFStringRef&gt; lastHTTPMethod = m_handle-&gt;lastHTTPMethod().createCFString();
+        RetainPtr&lt;CFStringRef&gt; newMethod = adoptCF(CFURLRequestCopyHTTPRequestMethod(cfRequest));
+        if (CFStringCompareWithOptions(lastHTTPMethod.get(), newMethod.get(), CFRangeMake(0, CFStringGetLength(lastHTTPMethod.get())), kCFCompareCaseInsensitive)) {
+            RetainPtr&lt;CFMutableURLRequestRef&gt; mutableRequest = adoptCF(CFURLRequestCreateMutableCopy(0, cfRequest));
+            wkSetRequestStorageSession(m_handle-&gt;storageSession(), mutableRequest.get());
+            CFURLRequestSetHTTPRequestMethod(mutableRequest.get(), lastHTTPMethod.get());
+
+            FormData* body = m_handle-&gt;firstRequest().httpBody();
+            if (!equalIgnoringCase(m_handle-&gt;firstRequest().httpMethod(), &quot;GET&quot;) &amp;&amp; body &amp;&amp; !body-&gt;isEmpty())
+                WebCore::setHTTPBody(mutableRequest.get(), body);
+
+            String originalContentType = m_handle-&gt;firstRequest().httpContentType();
+            if (!originalContentType.isEmpty())
+                CFURLRequestSetHTTPHeaderFieldValue(mutableRequest.get(), CFSTR(&quot;Content-Type&quot;), originalContentType.createCFString().get());
+
+            request = mutableRequest.get();
+        }
+    }
+
+    if (request.isNull())
+        request = cfRequest;
+
+    if (!request.url().protocolIs(&quot;https&quot;) &amp;&amp; protocolIs(request.httpReferrer(), &quot;https&quot;) &amp;&amp; m_handle-&gt;context()-&gt;shouldClearReferrerOnHTTPSToHTTPRedirect())
+        request.clearHTTPReferrer();
+    return request;
+}
+
+CFURLConnectionClient_V6 ResourceHandleCFURLConnectionDelegate::makeConnectionClient() const
+{
+    CFURLConnectionClient_V6 client = { 6, this, 0, 0, 0,
+        &amp;ResourceHandleCFURLConnectionDelegate::willSendRequestCallback,
+        &amp;ResourceHandleCFURLConnectionDelegate::didReceiveResponseCallback,
+        &amp;ResourceHandleCFURLConnectionDelegate::didReceiveDataCallback,
+        0,
+        &amp;ResourceHandleCFURLConnectionDelegate::didFinishLoadingCallback,
+        &amp;ResourceHandleCFURLConnectionDelegate::didFailCallback,
+        &amp;ResourceHandleCFURLConnectionDelegate::willCacheResponseCallback,
+        &amp;ResourceHandleCFURLConnectionDelegate::didReceiveChallengeCallback,
+        &amp;ResourceHandleCFURLConnectionDelegate::didSendBodyDataCallback,
+        &amp;ResourceHandleCFURLConnectionDelegate::shouldUseCredentialStorageCallback,
+        0,
+#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
+        &amp;ResourceHandleCFURLConnectionDelegate::canRespondToProtectionSpaceCallback,
+#else
+        0,
+#endif
+        0,
+#if USE(NETWORK_CFDATA_ARRAY_CALLBACK)
+        &amp;ResourceHandleCFURLConnectionDelegate::didReceiveDataArrayCallback
+#else
+        0
+#endif
+    };
+    return client;
+}
+
+} // namespace WebCore.
+
+#endif // USE(CFNETWORK)
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformnetworkcfResourceHandleCFURLConnectionDelegateh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegate.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegate.h                                (rev 0)
+++ branches/jsCStack/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegate.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,103 @@
</span><ins>+/*
+ * Copyright (C) 2004-2013 Apple Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef ResourceHandleCFURLConnectionDelegate_h
+#define ResourceHandleCFURLConnectionDelegate_h
+
+#if USE(CFNETWORK)
+
+#include &quot;ResourceRequest.h&quot;
+#include &lt;CFNetwork/CFURLConnectionPriv.h&gt;
+#include &lt;wtf/RetainPtr.h&gt;
+#include &lt;wtf/ThreadSafeRefCounted.h&gt;
+
+namespace WebCore {
+
+class ResourceHandle;
+
+class ResourceHandleCFURLConnectionDelegate : public ThreadSafeRefCounted&lt;ResourceHandleCFURLConnectionDelegate&gt; {
+public:
+    ResourceHandleCFURLConnectionDelegate(ResourceHandle*);
+    virtual ~ResourceHandleCFURLConnectionDelegate();
+
+    CFURLConnectionClient_V6 makeConnectionClient() const;
+    virtual void setupRequest(CFMutableURLRequestRef) = 0;
+    virtual void setupConnectionScheduling(CFURLConnectionRef) = 0;
+    void releaseHandle();
+
+    virtual void continueWillSendRequest(CFURLRequestRef) = 0;
+    virtual void continueDidReceiveResponse() = 0;
+    virtual void continueShouldUseCredentialStorage(bool) = 0;
+    virtual void continueWillCacheResponse(CFCachedURLResponseRef) = 0;
+#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
+    virtual void continueCanAuthenticateAgainstProtectionSpace(bool) = 0;
+#endif // USE(PROTECTION_SPACE_AUTH_CALLBACK)
+
+protected:
+    RetainPtr&lt;CFURLResponseRef&gt; synthesizeRedirectResponseIfNecessary(CFURLRequestRef, CFURLResponseRef);
+    ResourceRequest createResourceRequest(CFURLRequestRef, CFURLResponseRef);
+
+private:
+    static CFURLRequestRef willSendRequestCallback(CFURLConnectionRef, CFURLRequestRef, CFURLResponseRef, const void* clientInfo);
+    static void didReceiveResponseCallback(CFURLConnectionRef, CFURLResponseRef, const void* clientInfo);
+    static void didReceiveDataCallback(CFURLConnectionRef, CFDataRef, CFIndex originalLength, const void* clientInfo);
+    static void didFinishLoadingCallback(CFURLConnectionRef, const void* clientInfo);
+    static void didFailCallback(CFURLConnectionRef, CFErrorRef, const void* clientInfo);
+    static CFCachedURLResponseRef willCacheResponseCallback(CFURLConnectionRef, CFCachedURLResponseRef, const void* clientInfo);
+    static void didReceiveChallengeCallback(CFURLConnectionRef, CFURLAuthChallengeRef, const void* clientInfo);
+    static void didSendBodyDataCallback(CFURLConnectionRef, CFIndex, CFIndex totalBytesWritten, CFIndex totalBytesExpectedToWrite, const void *clientInfo);
+    static Boolean shouldUseCredentialStorageCallback(CFURLConnectionRef, const void* clientInfo);
+#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
+    static Boolean canRespondToProtectionSpaceCallback(CFURLConnectionRef, CFURLProtectionSpaceRef, const void* clientInfo);
+#endif // USE(PROTECTION_SPACE_AUTH_CALLBACK)
+#if USE(NETWORK_CFDATA_ARRAY_CALLBACK)
+    static void didReceiveDataArrayCallback(CFURLConnectionRef, CFArrayRef, const void* clientInfo);
+#endif // USE(NETWORK_CFDATA_ARRAY_CALLBACK)
+
+    virtual CFURLRequestRef willSendRequest(CFURLRequestRef, CFURLResponseRef) = 0;
+    virtual void didReceiveResponse(CFURLResponseRef) = 0;
+    virtual void didReceiveData(CFDataRef, CFIndex originalLength) = 0;
+    virtual void didFinishLoading() = 0;
+    virtual void didFail(CFErrorRef) = 0;
+    virtual CFCachedURLResponseRef willCacheResponse(CFCachedURLResponseRef) = 0;
+    virtual void didReceiveChallenge(CFURLAuthChallengeRef) = 0;
+    virtual void didSendBodyData(CFIndex totalBytesWritten, CFIndex totalBytesExpectedToWrite) = 0;
+    virtual Boolean shouldUseCredentialStorage() = 0;
+#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
+    virtual Boolean canRespondToProtectionSpace(CFURLProtectionSpaceRef) = 0;
+#endif // USE(PROTECTION_SPACE_AUTH_CALLBACK)
+#if USE(NETWORK_CFDATA_ARRAY_CALLBACK)
+    virtual void didReceiveDataArray(CFArrayRef dataArray) = 0;
+#endif // USE(NETWORK_CFDATA_ARRAY_CALLBACK)
+
+protected:
+    ResourceHandle* m_handle;
+};
+
+} // namespace WebCore.
+
+#endif // USE(CFNETWORK)
+
+#endif // ResourceHandleCFURLConnectionDelegate_h
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformnetworkcfResourceHandleCFURLConnectionDelegateWithOperationQueuecpp"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp                                (rev 0)
+++ branches/jsCStack/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,314 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;ResourceHandleCFURLConnectionDelegateWithOperationQueue.h&quot;
+
+#if USE(CFNETWORK)
+
+#include &quot;AuthenticationCF.h&quot;
+#include &quot;AuthenticationChallenge.h&quot;
+#include &quot;Logging.h&quot;
+#include &quot;ResourceHandle.h&quot;
+#include &quot;ResourceHandleClient.h&quot;
+#include &quot;ResourceResponse.h&quot;
+#include &quot;SharedBuffer.h&quot;
+#include &quot;WebCoreSystemInterface.h&quot;
+#include &quot;WebCoreURLResponse.h&quot;
+#include &lt;wtf/text/CString.h&gt;
+#include &lt;wtf/text/WTFString.h&gt;
+
+namespace WebCore {
+
+ResourceHandleCFURLConnectionDelegateWithOperationQueue::ResourceHandleCFURLConnectionDelegateWithOperationQueue(ResourceHandle* handle)
+    : ResourceHandleCFURLConnectionDelegate(handle)
+    , m_queue(dispatch_queue_create(&quot;com.apple.WebCore/CFNetwork&quot;, DISPATCH_QUEUE_SERIAL))
+    , m_semaphore(dispatch_semaphore_create(0))
+{
+    dispatch_queue_t backgroundQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);
+    dispatch_set_target_queue(m_queue, backgroundQueue);
+}
+
+ResourceHandleCFURLConnectionDelegateWithOperationQueue::~ResourceHandleCFURLConnectionDelegateWithOperationQueue()
+{
+    dispatch_release(m_semaphore);
+    dispatch_release(m_queue);
+}
+
+bool ResourceHandleCFURLConnectionDelegateWithOperationQueue::hasHandle() const
+{
+    return !!m_handle;
+}
+
+void ResourceHandleCFURLConnectionDelegateWithOperationQueue::setupRequest(CFMutableURLRequestRef)
+{
+}
+
+void ResourceHandleCFURLConnectionDelegateWithOperationQueue::setupConnectionScheduling(CFURLConnectionRef connection)
+{
+    CFURLConnectionSetDelegateDispatchQueue(connection, m_queue);
+}
+
+CFURLRequestRef ResourceHandleCFURLConnectionDelegateWithOperationQueue::willSendRequest(CFURLRequestRef cfRequest, CFURLResponseRef originalRedirectResponse)
+{
+    RefPtr&lt;ResourceHandleCFURLConnectionDelegateWithOperationQueue&gt; protector(this);
+
+    dispatch_async(dispatch_get_main_queue(), ^{
+        if (!protector-&gt;hasHandle()) {
+            continueWillSendRequest(nullptr);
+            return;
+        }
+
+        LOG(Network, &quot;CFNet - ResourceHandleCFURLConnectionDelegateWithOperationQueue::willSendRequest(handle=%p) (%s)&quot;, m_handle, m_handle-&gt;firstRequest().url().string().utf8().data());
+
+        RetainPtr&lt;CFURLResponseRef&gt; redirectResponse = synthesizeRedirectResponseIfNecessary(cfRequest, originalRedirectResponse);
+        if (!redirectResponse) {
+            m_handle-&gt;continueWillSendRequest(cfRequest);
+            return;
+        }
+
+        ResourceRequest request = createResourceRequest(cfRequest, redirectResponse.get());
+        m_handle-&gt;willSendRequest(request, redirectResponse.get());
+    });
+
+    dispatch_semaphore_wait(m_semaphore, DISPATCH_TIME_FOREVER);
+
+    return m_requestResult.leakRef();
+}
+
+void ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveResponse(CFURLResponseRef cfResponse)
+{
+    RefPtr&lt;ResourceHandleCFURLConnectionDelegateWithOperationQueue&gt; protector(this);
+
+    dispatch_async(dispatch_get_main_queue(), ^{
+        if (!protector-&gt;hasHandle()) {
+            continueDidReceiveResponse();
+            return;
+        }
+
+        LOG(Network, &quot;CFNet - ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveResponse(handle=%p) (%s)&quot;, m_handle, m_handle-&gt;firstRequest().url().string().utf8().data());
+
+        // Avoid MIME type sniffing if the response comes back as 304 Not Modified.
+        CFHTTPMessageRef msg = wkGetCFURLResponseHTTPResponse(cfResponse);
+        int statusCode = msg ? CFHTTPMessageGetResponseStatusCode(msg) : 0;
+
+        if (statusCode != 304)
+            adjustMIMETypeIfNecessary(cfResponse);
+
+#if !PLATFORM(IOS)
+        if (_CFURLRequestCopyProtocolPropertyForKey(m_handle-&gt;firstRequest().cfURLRequest(DoNotUpdateHTTPBody), CFSTR(&quot;ForceHTMLMIMEType&quot;)))
+            wkSetCFURLResponseMIMEType(cfResponse, CFSTR(&quot;text/html&quot;));
+#endif // !PLATFORM(IOS)
+
+        m_handle-&gt;client()-&gt;didReceiveResponseAsync(m_handle, cfResponse);
+    });
+    dispatch_semaphore_wait(m_semaphore, DISPATCH_TIME_FOREVER);
+}
+
+void ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveData(CFDataRef data, CFIndex originalLength)
+{
+    RefPtr&lt;ResourceHandleCFURLConnectionDelegateWithOperationQueue&gt; protector(this);
+    CFRetain(data);
+
+    dispatch_async(dispatch_get_main_queue(), ^{
+        if (protector-&gt;hasHandle()) {
+            LOG(Network, &quot;CFNet - ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveData(handle=%p) (%s)&quot;, m_handle, m_handle-&gt;firstRequest().url().string().utf8().data());
+
+            m_handle-&gt;client()-&gt;didReceiveBuffer(m_handle, SharedBuffer::wrapCFData(data), originalLength);
+        }
+
+        CFRelease(data);
+    });
+}
+
+void ResourceHandleCFURLConnectionDelegateWithOperationQueue::didFinishLoading()
+{
+    RefPtr&lt;ResourceHandleCFURLConnectionDelegateWithOperationQueue&gt; protector(this);
+    dispatch_async(dispatch_get_main_queue(), ^{
+        if (!protector-&gt;hasHandle())
+            return;
+
+        LOG(Network, &quot;CFNet - ResourceHandleCFURLConnectionDelegateWithOperationQueue::didFinishLoading(handle=%p) (%s)&quot;, m_handle, m_handle-&gt;firstRequest().url().string().utf8().data());
+
+        m_handle-&gt;client()-&gt;didFinishLoading(m_handle, 0);
+    });
+}
+
+void ResourceHandleCFURLConnectionDelegateWithOperationQueue::didFail(CFErrorRef error)
+{
+    RefPtr&lt;ResourceHandleCFURLConnectionDelegateWithOperationQueue&gt; protector(this);
+    CFRetain(error);
+    dispatch_async(dispatch_get_main_queue(), ^{
+        if (protector-&gt;hasHandle()) {
+            LOG(Network, &quot;CFNet - ResourceHandleCFURLConnectionDelegateWithOperationQueue::didFail(handle=%p) (%s)&quot;, m_handle, m_handle-&gt;firstRequest().url().string().utf8().data());
+
+            m_handle-&gt;client()-&gt;didFail(m_handle, ResourceError(error));
+        }
+
+        CFRelease(error);
+    });
+}
+
+CFCachedURLResponseRef ResourceHandleCFURLConnectionDelegateWithOperationQueue::willCacheResponse(CFCachedURLResponseRef cachedResponse)
+{
+    RefPtr&lt;ResourceHandleCFURLConnectionDelegateWithOperationQueue&gt; protector(this);
+
+    dispatch_async(dispatch_get_main_queue(), ^{
+        if (!protector-&gt;hasHandle()) {
+            continueWillCacheResponse(nullptr);
+            return;
+        }
+
+        LOG(Network, &quot;CFNet - ResourceHandleCFURLConnectionDelegateWithOperationQueue::willCacheResponse(handle=%p) (%s)&quot;, m_handle, m_handle-&gt;firstRequest().url().string().utf8().data());
+
+        m_handle-&gt;client()-&gt;willCacheResponseAsync(m_handle, cachedResponse);
+    });
+    dispatch_semaphore_wait(m_semaphore, DISPATCH_TIME_FOREVER);
+    return m_cachedResponseResult.leakRef();
+}
+
+void ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveChallenge(CFURLAuthChallengeRef challenge)
+{
+    RefPtr&lt;ResourceHandleCFURLConnectionDelegateWithOperationQueue&gt; protector(this);
+    CFRetain(challenge);
+    dispatch_async(dispatch_get_main_queue(), ^{
+        if (protector-&gt;hasHandle()) {
+            LOG(Network, &quot;CFNet - ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveChallenge(handle=%p) (%s)&quot;, m_handle, m_handle-&gt;firstRequest().url().string().utf8().data());
+
+            m_handle-&gt;didReceiveAuthenticationChallenge(AuthenticationChallenge(challenge, m_handle));
+        }
+
+        CFRelease(challenge);
+    });
+}
+
+void ResourceHandleCFURLConnectionDelegateWithOperationQueue::didSendBodyData(CFIndex totalBytesWritten, CFIndex totalBytesExpectedToWrite)
+{
+    RefPtr&lt;ResourceHandleCFURLConnectionDelegateWithOperationQueue&gt; protector(this);
+    dispatch_async(dispatch_get_main_queue(), ^{
+        if (!protector-&gt;hasHandle())
+            return;
+
+        LOG(Network, &quot;CFNet - ResourceHandleCFURLConnectionDelegateWithOperationQueue::didSendBodyData(handle=%p) (%s)&quot;, m_handle, m_handle-&gt;firstRequest().url().string().utf8().data());
+
+        m_handle-&gt;client()-&gt;didSendData(m_handle, totalBytesWritten, totalBytesExpectedToWrite);
+    });
+}
+
+Boolean ResourceHandleCFURLConnectionDelegateWithOperationQueue::shouldUseCredentialStorage()
+{
+    RefPtr&lt;ResourceHandleCFURLConnectionDelegateWithOperationQueue&gt; protector(this);
+
+    dispatch_async(dispatch_get_main_queue(), ^{
+        if (!protector-&gt;hasHandle()) {
+            continueShouldUseCredentialStorage(false);
+            return;
+        }
+
+        LOG(Network, &quot;CFNet - ResourceHandleCFURLConnectionDelegateWithOperationQueue::shouldUseCredentialStorage(handle=%p) (%s)&quot;, m_handle, m_handle-&gt;firstRequest().url().string().utf8().data());
+
+        m_handle-&gt;shouldUseCredentialStorage();
+    });
+    dispatch_semaphore_wait(m_semaphore, DISPATCH_TIME_FOREVER);
+    return m_boolResult;
+}
+
+#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
+Boolean ResourceHandleCFURLConnectionDelegateWithOperationQueue::canRespondToProtectionSpace(CFURLProtectionSpaceRef protectionSpace)
+{
+    RefPtr&lt;ResourceHandleCFURLConnectionDelegateWithOperationQueue&gt; protector(this);
+
+    dispatch_async(dispatch_get_main_queue(), ^{
+        if (!protector-&gt;hasHandle()) {
+            continueCanAuthenticateAgainstProtectionSpace(false);
+            return;
+        }
+
+        LOG(Network, &quot;CFNet - ResourceHandleCFURLConnectionDelegateWithOperationQueue::canRespondToProtectionSpace(handle=%p) (%s)&quot;, m_handle, m_handle-&gt;firstRequest().url().string().utf8().data());
+
+        ProtectionSpace coreProtectionSpace = core(protectionSpace);
+#if PLATFORM(IOS)
+        if (coreProtectionSpace.authenticationScheme() == ProtectionSpaceAuthenticationSchemeUnknown) {
+            m_boolResult = false;
+            dispatch_semaphore_signal(m_semaphore);
+            return;
+        }
+#endif // PLATFORM(IOS)
+        m_handle-&gt;canAuthenticateAgainstProtectionSpace(coreProtectionSpace);
+    });
+    dispatch_semaphore_wait(m_semaphore, DISPATCH_TIME_FOREVER);
+    return m_boolResult;
+}
+#endif // USE(PROTECTION_SPACE_AUTH_CALLBACK)
+
+#if USE(NETWORK_CFDATA_ARRAY_CALLBACK)
+void ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveDataArray(CFArrayRef dataArray)
+{
+    RefPtr&lt;ResourceHandleCFURLConnectionDelegateWithOperationQueue&gt; protector(this);
+    CFRetain(dataArray);
+    dispatch_async(dispatch_get_main_queue(), ^{
+        if (protector-&gt;hasHandle()) {
+            LOG(Network, &quot;CFNet - ResourceHandleCFURLConnectionDelegateWithOperationQueue::didSendBodyData(handle=%p) (%s)&quot;, m_handle, m_handle-&gt;firstRequest().url().string().utf8().data());
+
+            m_handle-&gt;handleDataArray(dataArray);
+        }
+        CFRelease(dataArray);
+    });
+}
+#endif // USE(NETWORK_CFDATA_ARRAY_CALLBACK)
+
+void ResourceHandleCFURLConnectionDelegateWithOperationQueue::continueWillSendRequest(CFURLRequestRef request)
+{
+    m_requestResult = request;
+    dispatch_semaphore_signal(m_semaphore);
+}
+
+void ResourceHandleCFURLConnectionDelegateWithOperationQueue::continueDidReceiveResponse()
+{
+    dispatch_semaphore_signal(m_semaphore);
+}
+
+void ResourceHandleCFURLConnectionDelegateWithOperationQueue::continueShouldUseCredentialStorage(bool shouldUseCredentialStorage)
+{
+    m_boolResult = shouldUseCredentialStorage;
+    dispatch_semaphore_signal(m_semaphore);
+}
+
+void ResourceHandleCFURLConnectionDelegateWithOperationQueue::continueWillCacheResponse(CFCachedURLResponseRef response)
+{
+    m_cachedResponseResult = response;
+    dispatch_semaphore_signal(m_semaphore);
+}
+
+#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
+void ResourceHandleCFURLConnectionDelegateWithOperationQueue::continueCanAuthenticateAgainstProtectionSpace(bool canAuthenticate)
+{
+    m_boolResult = canAuthenticate;
+    dispatch_semaphore_signal(m_semaphore);
+}
+#endif // USE(PROTECTION_SPACE_AUTH_CALLBACK)
+} // namespace WebCore
+
+#endif // USE(CFNETWORK)
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformnetworkcfResourceHandleCFURLConnectionDelegateWithOperationQueueh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.h                                (rev 0)
+++ branches/jsCStack/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,85 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef ResourceHandleCFURLConnectionDelegateWithOperationQueue_h
+#define ResourceHandleCFURLConnectionDelegateWithOperationQueue_h
+
+#if USE(CFNETWORK)
+
+#include &quot;ResourceHandleCFURLConnectionDelegate.h&quot;
+#include &lt;CFNetwork/CFNetwork.h&gt;
+#include &lt;dispatch/queue.h&gt;
+#include &lt;dispatch/semaphore.h&gt;
+
+namespace WebCore {
+
+class ResourceHandleCFURLConnectionDelegateWithOperationQueue FINAL : public ResourceHandleCFURLConnectionDelegate {
+public:
+    ResourceHandleCFURLConnectionDelegateWithOperationQueue(ResourceHandle*);
+    virtual ~ResourceHandleCFURLConnectionDelegateWithOperationQueue();
+
+private:
+    bool hasHandle() const;
+
+    virtual void setupRequest(CFMutableURLRequestRef) OVERRIDE;
+    virtual void setupConnectionScheduling(CFURLConnectionRef) OVERRIDE;
+
+    virtual CFURLRequestRef willSendRequest(CFURLRequestRef, CFURLResponseRef) OVERRIDE;
+    virtual void didReceiveResponse(CFURLResponseRef) OVERRIDE;
+    virtual void didReceiveData(CFDataRef, CFIndex originalLength) OVERRIDE;
+    virtual void didFinishLoading() OVERRIDE;
+    virtual void didFail(CFErrorRef) OVERRIDE;
+    virtual CFCachedURLResponseRef willCacheResponse(CFCachedURLResponseRef) OVERRIDE;
+    virtual void didReceiveChallenge(CFURLAuthChallengeRef) OVERRIDE;
+    virtual void didSendBodyData(CFIndex totalBytesWritten, CFIndex totalBytesExpectedToWrite) OVERRIDE;
+    virtual Boolean shouldUseCredentialStorage() OVERRIDE;
+#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
+    virtual Boolean canRespondToProtectionSpace(CFURLProtectionSpaceRef) OVERRIDE;
+#endif // USE(PROTECTION_SPACE_AUTH_CALLBACK)
+#if USE(NETWORK_CFDATA_ARRAY_CALLBACK)
+    virtual void didReceiveDataArray(CFArrayRef dataArray) OVERRIDE;
+#endif // USE(NETWORK_CFDATA_ARRAY_CALLBACK)
+
+    virtual void continueWillSendRequest(CFURLRequestRef) OVERRIDE;
+    virtual void continueDidReceiveResponse() OVERRIDE;
+    virtual void continueShouldUseCredentialStorage(bool) OVERRIDE;
+    virtual void continueWillCacheResponse(CFCachedURLResponseRef) OVERRIDE;
+#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
+    virtual void continueCanAuthenticateAgainstProtectionSpace(bool) OVERRIDE;
+#endif // USE(PROTECTION_SPACE_AUTH_CALLBACK)
+
+    dispatch_queue_t m_queue;
+    dispatch_semaphore_t m_semaphore;
+
+    RetainPtr&lt;CFURLRequestRef&gt; m_requestResult;
+    RetainPtr&lt;CFCachedURLResponseRef&gt; m_cachedResponseResult;
+    bool m_boolResult;
+};
+
+} // namespace WebCore.
+
+#endif // USE(CFNETWORK)
+
+#endif // ResourceHandleCFURLConnectionDelegateWithOperationQueue_h
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformnetworkcfSynchronousResourceHandleCFURLConnectionDelegatecpp"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.cpp (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.cpp                                (rev 0)
+++ branches/jsCStack/Source/WebCore/platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,304 @@
</span><ins>+/*
+ * Copyright (C) 2004-2013 Apple Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;SynchronousResourceHandleCFURLConnectionDelegate.h&quot;
+
+#if USE(CFNETWORK)
+
+#include &quot;AuthenticationCF.h&quot;
+#include &quot;AuthenticationChallenge.h&quot;
+#include &quot;LoaderRunLoopCF.h&quot;
+#include &quot;Logging.h&quot;
+#include &quot;ResourceHandle.h&quot;
+#include &quot;ResourceHandleClient.h&quot;
+#include &quot;ResourceResponse.h&quot;
+#include &quot;SharedBuffer.h&quot;
+#include &lt;wtf/RetainPtr.h&gt;
+#include &lt;wtf/text/CString.h&gt;
+#include &lt;wtf/text/WTFString.h&gt;
+
+#if PLATFORM(MAC)
+#include &quot;WebCoreSystemInterface.h&quot;
+#include &quot;WebCoreURLResponse.h&quot;
+#endif // PLATFORM(MAC)
+
+#if PLATFORM(IOS)
+#include &quot;WebCoreThread.h&quot;
+#endif // PLATFORM(IOS)
+
+#if PLATFORM(WIN)
+#include &quot;MIMETypeRegistry.h&quot;
+#endif // PLATFORM(WIN)
+
+namespace WebCore {
+
+SynchronousResourceHandleCFURLConnectionDelegate::SynchronousResourceHandleCFURLConnectionDelegate(ResourceHandle* handle)
+    : ResourceHandleCFURLConnectionDelegate(handle)
+{
+}
+
+void SynchronousResourceHandleCFURLConnectionDelegate::setupRequest(CFMutableURLRequestRef request)
+{
+#if PLATFORM(IOS)
+    CFURLRequestSetShouldStartSynchronously(request, 1);
+#endif
+}
+
+void SynchronousResourceHandleCFURLConnectionDelegate::setupConnectionScheduling(CFURLConnectionRef connection)
+{
+#if PLATFORM(WIN)
+    CFURLConnectionScheduleWithCurrentMessageQueue(connection);
+#elif PLATFORM(IOS)
+    CFURLConnectionScheduleWithRunLoop(connection, WebThreadRunLoop(), kCFRunLoopDefaultMode);
+#else
+    CFURLConnectionScheduleWithRunLoop(connection, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
+#endif
+    CFURLConnectionScheduleDownloadWithRunLoop(connection, loaderRunLoop(), kCFRunLoopDefaultMode);
+}
+
+CFURLRequestRef SynchronousResourceHandleCFURLConnectionDelegate::willSendRequest(CFURLRequestRef cfRequest, CFURLResponseRef originalRedirectResponse)
+{
+    RetainPtr&lt;CFURLResponseRef&gt; redirectResponse = synthesizeRedirectResponseIfNecessary(cfRequest, originalRedirectResponse);
+
+    if (!redirectResponse) {
+        CFRetain(cfRequest);
+        return cfRequest;
+    }
+
+    LOG(Network, &quot;CFNet - SynchronousResourceHandleCFURLConnectionDelegate::willSendRequest(handle=%p) (%s)&quot;, m_handle, m_handle-&gt;firstRequest().url().string().utf8().data());
+
+    ResourceRequest request = createResourceRequest(cfRequest, redirectResponse.get());
+    m_handle-&gt;willSendRequest(request, redirectResponse.get());
+
+    if (request.isNull())
+        return 0;
+
+    cfRequest = request.cfURLRequest(UpdateHTTPBody);
+
+    CFRetain(cfRequest);
+    return cfRequest;
+}
+
+#if !PLATFORM(MAC)
+static void setDefaultMIMEType(CFURLResponseRef response)
+{
+    static CFStringRef defaultMIMETypeString = defaultMIMEType().createCFString().leakRef();
+    
+    CFURLResponseSetMIMEType(response, defaultMIMETypeString);
+}
+#endif // !PLATFORM(MAC)
+
+void SynchronousResourceHandleCFURLConnectionDelegate::didReceiveResponse(CFURLResponseRef cfResponse)
+{
+    LOG(Network, &quot;CFNet - SynchronousResourceHandleCFURLConnectionDelegate::didReceiveResponse(handle=%p) (%s)&quot;, m_handle, m_handle-&gt;firstRequest().url().string().utf8().data());
+
+    if (!m_handle-&gt;client())
+        return;
+
+#if PLATFORM(MAC)
+    // Avoid MIME type sniffing if the response comes back as 304 Not Modified.
+    CFHTTPMessageRef msg = wkGetCFURLResponseHTTPResponse(cfResponse);
+    int statusCode = msg ? CFHTTPMessageGetResponseStatusCode(msg) : 0;
+
+    if (statusCode != 304)
+        adjustMIMETypeIfNecessary(cfResponse);
+
+#if !PLATFORM(IOS)
+    if (_CFURLRequestCopyProtocolPropertyForKey(m_handle-&gt;firstRequest().cfURLRequest(DoNotUpdateHTTPBody), CFSTR(&quot;ForceHTMLMIMEType&quot;)))
+        wkSetCFURLResponseMIMEType(cfResponse, CFSTR(&quot;text/html&quot;));
+#endif // !PLATFORM(IOS)
+#else
+    if (!CFURLResponseGetMIMEType(cfResponse)) {
+        // We should never be applying the default MIMEType if we told the networking layer to do content sniffing for handle.
+        ASSERT(!m_handle-&gt;shouldContentSniff());
+        setDefaultMIMEType(cfResponse);
+    }
+#endif
+
+#if USE(QUICK_LOOK)
+    m_handle-&gt;setQuickLookHandle(QuickLookHandle::create(m_handle, this, cfResponse));
+    if (m_handle-&gt;quickLookHandle())
+        cfResponse = m_handle-&gt;quickLookHandle()-&gt;cfResponse();
+#endif
+
+    m_handle-&gt;client()-&gt;didReceiveResponse(m_handle, cfResponse);
+}
+
+void SynchronousResourceHandleCFURLConnectionDelegate::didReceiveData(CFDataRef data, CFIndex originalLength)
+{
+    LOG(Network, &quot;CFNet - SynchronousResourceHandleCFURLConnectionDelegate::didReceiveData(handle=%p, bytes=%ld) (%s)&quot;, m_handle, CFDataGetLength(data), m_handle-&gt;firstRequest().url().string().utf8().data());
+
+#if USE(QUICK_LOOK)
+    if (m_handle-&gt;quickLookHandle() &amp;&amp; m_handle-&gt;quickLookHandle()-&gt;didReceiveData(data))
+        return;
+#endif
+
+    if (ResourceHandleClient* client = m_handle-&gt;client())
+        client-&gt;didReceiveBuffer(m_handle, SharedBuffer::wrapCFData(data), originalLength);
+}
+
+void SynchronousResourceHandleCFURLConnectionDelegate::didFinishLoading()
+{
+    LOG(Network, &quot;CFNet - SynchronousResourceHandleCFURLConnectionDelegate::didFinishLoading(handle=%p) (%s)&quot;, m_handle, m_handle-&gt;firstRequest().url().string().utf8().data());
+
+#if USE(QUICK_LOOK)
+    if (m_handle-&gt;quickLookHandle() &amp;&amp; m_handle-&gt;quickLookHandle()-&gt;didFinishLoading())
+        return;
+#endif
+
+    if (ResourceHandleClient* client = m_handle-&gt;client())
+        client-&gt;didFinishLoading(m_handle, 0);
+}
+
+void SynchronousResourceHandleCFURLConnectionDelegate::didFail(CFErrorRef error)
+{
+    LOG(Network, &quot;CFNet - SynchronousResourceHandleCFURLConnectionDelegate::didFail(handle=%p, error = %p) (%s)&quot;, m_handle, error, m_handle-&gt;firstRequest().url().string().utf8().data());
+
+#if USE(QUICK_LOOK)
+    if (QuickLookHandle* quickLookHandle = m_handle-&gt;quickLookHandle())
+        quickLookHandle-&gt;didFail();
+#endif
+
+    if (ResourceHandleClient* client = m_handle-&gt;client())
+        client-&gt;didFail(m_handle, ResourceError(error));
+}
+
+CFCachedURLResponseRef SynchronousResourceHandleCFURLConnectionDelegate::willCacheResponse(CFCachedURLResponseRef cachedResponse)
+{
+#if PLATFORM(WIN)
+    // Workaround for &lt;rdar://problem/6300990&gt; Caching does not respect Vary HTTP header.
+    // FIXME: WebCore cache has issues with Vary, too (bug 58797, bug 71509).
+    CFURLResponseRef wrappedResponse = CFCachedURLResponseGetWrappedResponse(cachedResponse);
+    if (CFHTTPMessageRef httpResponse = CFURLResponseGetHTTPResponse(wrappedResponse)) {
+        ASSERT(CFHTTPMessageIsHeaderComplete(httpResponse));
+        RetainPtr&lt;CFStringRef&gt; varyValue = adoptCF(CFHTTPMessageCopyHeaderFieldValue(httpResponse, CFSTR(&quot;Vary&quot;)));
+        if (varyValue)
+            return 0;
+    }
+#endif // PLATFORM(WIN)
+
+#if PLATFORM(WIN)
+    if (m_handle-&gt;client() &amp;&amp; !m_handle-&gt;client()-&gt;shouldCacheResponse(m_handle, cachedResponse))
+        return 0;
+#else
+    CFCachedURLResponseRef newResponse = m_handle-&gt;client()-&gt;willCacheResponse(m_handle, cachedResponse);
+    if (newResponse != cachedResponse)
+        return newResponse;
+#endif
+
+    CFRetain(cachedResponse);
+    return cachedResponse;
+}
+
+void SynchronousResourceHandleCFURLConnectionDelegate::didReceiveChallenge(CFURLAuthChallengeRef challenge)
+{
+    LOG(Network, &quot;CFNet - SynchronousResourceHandleCFURLConnectionDelegate::didReceiveChallenge(handle=%p (%s)&quot;, m_handle, m_handle-&gt;firstRequest().url().string().utf8().data());
+
+    m_handle-&gt;didReceiveAuthenticationChallenge(AuthenticationChallenge(challenge, m_handle));
+}
+
+void SynchronousResourceHandleCFURLConnectionDelegate::didSendBodyData(CFIndex totalBytesWritten, CFIndex totalBytesExpectedToWrite)
+{
+    if (!m_handle || !m_handle-&gt;client())
+        return;
+    m_handle-&gt;client()-&gt;didSendData(m_handle, totalBytesWritten, totalBytesExpectedToWrite);
+}
+
+Boolean SynchronousResourceHandleCFURLConnectionDelegate::shouldUseCredentialStorage()
+{
+    LOG(Network, &quot;CFNet - SynchronousResourceHandleCFURLConnectionDelegate::shouldUseCredentialStorage(handle=%p) (%s)&quot;, m_handle, m_handle-&gt;firstRequest().url().string().utf8().data());
+
+    if (!m_handle)
+        return false;
+
+    return m_handle-&gt;shouldUseCredentialStorage();
+}
+
+#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
+Boolean SynchronousResourceHandleCFURLConnectionDelegate::canRespondToProtectionSpace(CFURLProtectionSpaceRef protectionSpace)
+{
+    ASSERT(m_handle);
+
+    LOG(Network, &quot;CFNet - SynchronousResourceHandleCFURLConnectionDelegate::canRespondToProtectionSpace(handle=%p (%s)&quot;, m_handle, m_handle-&gt;firstRequest().url().string().utf8().data());
+
+#if PLATFORM(IOS)
+    ProtectionSpace coreProtectionSpace = core(protectionSpace);
+    if (coreProtectionSpace.authenticationScheme() == ProtectionSpaceAuthenticationSchemeUnknown)
+        return false;
+    return m_handle-&gt;canAuthenticateAgainstProtectionSpace(coreProtectionSpace);
+#else
+    return m_handle-&gt;canAuthenticateAgainstProtectionSpace(core(protectionSpace));
+#endif
+}
+#endif // USE(PROTECTION_SPACE_AUTH_CALLBACK)
+
+#if USE(NETWORK_CFDATA_ARRAY_CALLBACK)
+void SynchronousResourceHandleCFURLConnectionDelegate::didReceiveDataArray(CFArrayRef dataArray)
+{
+    if (!m_handle-&gt;client())
+        return;
+
+    LOG(Network, &quot;CFNet - SynchronousResourceHandleCFURLConnectionDelegate::didReceiveDataArray(handle=%p, arrayLength=%ld) (%s)&quot;, m_handle, CFArrayGetCount(dataArray), m_handle-&gt;firstRequest().url().string().utf8().data());
+
+#if USE(QUICK_LOOK)
+    if (m_handle-&gt;quickLookHandle() &amp;&amp; m_handle-&gt;quickLookHandle()-&gt;didReceiveDataArray(dataArray))
+        return;
+#endif
+
+    m_handle-&gt;handleDataArray(dataArray);
+}
+#endif // USE(NETWORK_CFDATA_ARRAY_CALLBACK)
+
+void SynchronousResourceHandleCFURLConnectionDelegate::continueWillSendRequest(CFURLRequestRef)
+{
+    ASSERT_NOT_REACHED();
+}
+
+void SynchronousResourceHandleCFURLConnectionDelegate::continueDidReceiveResponse()
+{
+    ASSERT_NOT_REACHED();
+}
+
+void SynchronousResourceHandleCFURLConnectionDelegate::continueShouldUseCredentialStorage(bool)
+{
+    ASSERT_NOT_REACHED();
+}
+
+void SynchronousResourceHandleCFURLConnectionDelegate::continueWillCacheResponse(CFCachedURLResponseRef)
+{
+    ASSERT_NOT_REACHED();
+}
+
+#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
+void SynchronousResourceHandleCFURLConnectionDelegate::continueCanAuthenticateAgainstProtectionSpace(bool)
+{
+    ASSERT_NOT_REACHED();
+}
+#endif // USE(PROTECTION_SPACE_AUTH_CALLBACK)
+
+} // namespace WebCore.
+
+#endif
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformnetworkcfSynchronousResourceHandleCFURLConnectionDelegateh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.h                                (rev 0)
+++ branches/jsCStack/Source/WebCore/platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,73 @@
</span><ins>+/*
+ * Copyright (C) 2004-2013 Apple Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef SynchronousResourceHandleCFURLConnectionDelegate_h
+#define SynchronousResourceHandleCFURLConnectionDelegate_h
+
+#if USE(CFNETWORK)
+
+#include &quot;ResourceHandleCFURLConnectionDelegate.h&quot;
+
+namespace WebCore {
+
+class SynchronousResourceHandleCFURLConnectionDelegate FINAL : public ResourceHandleCFURLConnectionDelegate {
+public:
+    SynchronousResourceHandleCFURLConnectionDelegate(ResourceHandle*);
+
+    virtual void didReceiveData(CFDataRef, CFIndex originalLength) OVERRIDE;
+    virtual void didFinishLoading() OVERRIDE;
+    virtual void didFail(CFErrorRef) OVERRIDE;
+#if USE(NETWORK_CFDATA_ARRAY_CALLBACK)
+    virtual void didReceiveDataArray(CFArrayRef dataArray) OVERRIDE;
+#endif // USE(NETWORK_CFDATA_ARRAY_CALLBACK)
+
+private:
+    virtual void setupRequest(CFMutableURLRequestRef) OVERRIDE;
+    virtual void setupConnectionScheduling(CFURLConnectionRef) OVERRIDE;
+
+    virtual CFURLRequestRef willSendRequest(CFURLRequestRef, CFURLResponseRef) OVERRIDE;
+    virtual void didReceiveResponse(CFURLResponseRef) OVERRIDE;
+    virtual CFCachedURLResponseRef willCacheResponse(CFCachedURLResponseRef) OVERRIDE;
+    virtual void didReceiveChallenge(CFURLAuthChallengeRef) OVERRIDE;
+    virtual void didSendBodyData(CFIndex totalBytesWritten, CFIndex totalBytesExpectedToWrite) OVERRIDE;
+    virtual Boolean shouldUseCredentialStorage() OVERRIDE;
+#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
+    virtual Boolean canRespondToProtectionSpace(CFURLProtectionSpaceRef) OVERRIDE;
+#endif // USE(PROTECTION_SPACE_AUTH_CALLBACK)
+
+    virtual void continueWillSendRequest(CFURLRequestRef) OVERRIDE;
+    virtual void continueDidReceiveResponse() OVERRIDE;
+    virtual void continueShouldUseCredentialStorage(bool) OVERRIDE;
+    virtual void continueWillCacheResponse(CFCachedURLResponseRef) OVERRIDE;
+#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
+    virtual void continueCanAuthenticateAgainstProtectionSpace(bool) OVERRIDE;
+#endif // USE(PROTECTION_SPACE_AUTH_CALLBACK)
+};
+
+} // namespace WebCore.
+
+#endif // USE(CFNETWORK)
+
+#endif // ResourceHandleCFURLConnectionDelegate_h
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformnetworkcurlCurlCacheEntrycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/network/curl/CurlCacheEntry.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/network/curl/CurlCacheEntry.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/network/curl/CurlCacheEntry.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -206,11 +206,11 @@
</span><span class="cx">     MD5 md5;
</span><span class="cx">     md5.addBytes(reinterpret_cast&lt;const uint8_t*&gt;(url.data()), url.length());
</span><span class="cx"> 
</span><del>-    Vector&lt;uint8_t, 16&gt; sum;
</del><ins>+    MD5::Digest sum;
</ins><span class="cx">     md5.checksum(sum);
</span><span class="cx">     uint8_t* rawdata = sum.data();
</span><span class="cx"> 
</span><del>-    for (unsigned i = 0; i &lt; 16; i++)
</del><ins>+    for (size_t i = 0; i &lt; MD5::hashSize; i++)
</ins><span class="cx">         appendByteAsHex(rawdata[i], m_basename, Lowercase);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformnetworkmacCertificateInfoh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/platform/network/mac/CertificateInfo.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/network/mac/CertificateInfo.h                                (rev 0)
+++ branches/jsCStack/Source/WebCore/platform/network/mac/CertificateInfo.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,53 @@
</span><ins>+/*
+ * Copyright (C) 2010 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef CertificateInfo_h
+#define CertificateInfo_h
+
+#include &lt;WebCore/ResourceResponse.h&gt;
+#include &lt;wtf/RetainPtr.h&gt;
+
+namespace WebCore {
+
+class CertificateInfo {
+public:
+    CertificateInfo();
+    explicit CertificateInfo(const ResourceResponse&amp;);
+    explicit CertificateInfo(CFArrayRef certificateChain);
+
+    void setCertificateChain(CFArrayRef certificateChain) { m_certificateChain = certificateChain; }
+    CFArrayRef certificateChain() const { return m_certificateChain.get(); }
+
+#ifndef NDEBUG
+    void dump() const;
+#endif
+
+private:
+    RetainPtr&lt;CFArrayRef&gt; m_certificateChain;
+};
+
+} // namespace WebKit
+
+#endif // CertificateInfo_h
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformnetworkmacCertificateInfoMacmm"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/platform/network/mac/CertificateInfoMac.mm (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/network/mac/CertificateInfoMac.mm                                (rev 0)
+++ branches/jsCStack/Source/WebCore/platform/network/mac/CertificateInfoMac.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,59 @@
</span><ins>+/*
+ * Copyright (C) 2010 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;config.h&quot;
+#import &quot;CertificateInfo.h&quot;
+
+namespace WebCore {
+
+CertificateInfo::CertificateInfo()
+{
+}
+
+CertificateInfo::CertificateInfo(const ResourceResponse&amp; response)
+    : m_certificateChain(response.certificateChain())
+{
+}
+
+CertificateInfo::CertificateInfo(CFArrayRef certificateChain)
+    : m_certificateChain(certificateChain)
+{
+}
+
+#ifndef NDEBUG
+void CertificateInfo::dump() const
+{
+    unsigned entries = m_certificateChain ? CFArrayGetCount(m_certificateChain.get()) : 0;
+
+    NSLog(@&quot;CertificateInfo\n&quot;);
+    NSLog(@&quot;  Entries: %d\n&quot;, entries);
+    for (unsigned i = 0; i &lt; entries; ++i) {
+        RetainPtr&lt;CFStringRef&gt; summary = adoptCF(SecCertificateCopySubjectSummary((SecCertificateRef)CFArrayGetValueAtIndex(m_certificateChain.get(), i)));
+        NSLog(@&quot;  %@&quot;, (NSString *)summary.get());
+    }
+}
+#endif
+
+} // namespace WebCore
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformnetworkmacWebCoreResourceHandleAsDelegatemm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsDelegate.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsDelegate.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsDelegate.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -255,12 +255,6 @@
</span><span class="cx">     if (!m_handle || !m_handle-&gt;client())
</span><span class="cx">         return nil;
</span><span class="cx"> 
</span><del>-    // Workaround for &lt;rdar://problem/6300990&gt; Caching does not respect Vary HTTP header.
-    // FIXME: WebCore cache has issues with Vary, too (bug 58797, bug 71509).
-    if ([[cachedResponse response] isKindOfClass:[NSHTTPURLResponse class]]
-        &amp;&amp; [[(NSHTTPURLResponse *)[cachedResponse response] allHeaderFields] objectForKey:@&quot;Vary&quot;])
-        return nil;
-
</del><span class="cx">     return m_handle-&gt;client()-&gt;willCacheResponse(m_handle, cachedResponse);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformnetworkmacWebCoreResourceHandleAsOperationQueueDelegatemm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -369,15 +369,6 @@
</span><span class="cx">             return;
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        // Workaround for &lt;rdar://problem/6300990&gt; Caching does not respect Vary HTTP header.
-        // FIXME: WebCore cache has issues with Vary, too (bug 58797, bug 71509).
-        if ([[cachedResponse response] isKindOfClass:[NSHTTPURLResponse class]]
-            &amp;&amp; [[(NSHTTPURLResponse *)[cachedResponse response] allHeaderFields] objectForKey:@&quot;Vary&quot;]) {
-            m_cachedResponseResult = nullptr;
-            dispatch_semaphore_signal(m_semaphore);
-            return;
-        }
-
</del><span class="cx">         m_handle-&gt;client()-&gt;willCacheResponseAsync(m_handle, cachedResponse);
</span><span class="cx">     });
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformnetworksoupCertificateInfocpp"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/platform/network/soup/CertificateInfo.cpp (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/network/soup/CertificateInfo.cpp                                (rev 0)
+++ branches/jsCStack/Source/WebCore/platform/network/soup/CertificateInfo.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,62 @@
</span><ins>+/*
+ * Copyright (C) 2012 Igalia S.L.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;CertificateInfo.h&quot;
+
+#include &lt;ResourceError.h&gt;
+#include &lt;ResourceResponse.h&gt;
+#include &lt;libsoup/soup.h&gt;
+
+namespace WebCore {
+
+CertificateInfo::CertificateInfo()
+    : m_tlsErrors(static_cast&lt;GTlsCertificateFlags&gt;(0))
+{
+}
+
+CertificateInfo::CertificateInfo(const ResourceResponse&amp; response)
+    : m_certificate(response.soupMessageCertificate())
+    , m_tlsErrors(response.soupMessageTLSErrors())
+{
+}
+
+CertificateInfo::CertificateInfo(const ResourceError&amp; resourceError)
+    : m_certificate(resourceError.certificate())
+    , m_tlsErrors(static_cast&lt;GTlsCertificateFlags&gt;(resourceError.tlsErrors()))
+{
+}
+
+CertificateInfo::CertificateInfo(GTlsCertificate* certificate, GTlsCertificateFlags tlsErrors)
+    : m_certificate(certificate)
+    , m_tlsErrors(tlsErrors)
+{
+}
+
+CertificateInfo::~CertificateInfo()
+{
+}
+
+} // namespace WebCore
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformnetworksoupCertificateInfoh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/platform/network/soup/CertificateInfo.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/network/soup/CertificateInfo.h                                (rev 0)
+++ branches/jsCStack/Source/WebCore/platform/network/soup/CertificateInfo.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,58 @@
</span><ins>+/*
+ * Copyright (C) 2010 Apple Inc. All rights reserved.
+ * Portions Copyright (c) 2010 Motorola Mobility, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef CertificateInfo_h
+#define CertificateInfo_h
+
+#include &lt;libsoup/soup.h&gt;
+#include &lt;wtf/gobject/GRefPtr.h&gt;
+
+namespace WebCore {
+
+class ResourceError;
+class ResourceResponse;
+
+class CertificateInfo {
+public:
+    CertificateInfo();
+    explicit CertificateInfo(const WebCore::ResourceResponse&amp;);
+    explicit CertificateInfo(const WebCore::ResourceError&amp;);
+    explicit CertificateInfo(GTlsCertificate*, GTlsCertificateFlags);
+    ~CertificateInfo();
+
+    GTlsCertificate* certificate() const { return m_certificate.get(); }
+    void setCertificate(GTlsCertificate* certificate) { m_certificate = certificate; }
+    GTlsCertificateFlags tlsErrors() const { return m_tlsErrors; }
+    void setTLSErrors(GTlsCertificateFlags tlsErrors) { m_tlsErrors = tlsErrors; }
+
+private:
+    GRefPtr&lt;GTlsCertificate&gt; m_certificate;
+    GTlsCertificateFlags m_tlsErrors;
+};
+
+} // namespace WebCore
+
+#endif // CertificateInfo_h
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformnetworksoupGOwnPtrSoupcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/network/soup/GOwnPtrSoup.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/network/soup/GOwnPtrSoup.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/network/soup/GOwnPtrSoup.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -42,4 +42,10 @@
</span><span class="cx">         soup_message_headers_free(ptr);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+template &lt;&gt; void freeOwnedGPtr&lt;SoupBuffer&gt;(SoupBuffer* ptr)
+{
+    if (ptr)
+        soup_buffer_free(ptr);
</ins><span class="cx"> }
</span><ins>+
+} // namespace WTF
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformnetworksoupGOwnPtrSouph"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/network/soup/GOwnPtrSoup.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/network/soup/GOwnPtrSoup.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/network/soup/GOwnPtrSoup.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -20,17 +20,17 @@
</span><span class="cx"> #ifndef GOwnPtrSoup_h
</span><span class="cx"> #define GOwnPtrSoup_h
</span><span class="cx"> 
</span><ins>+// We need to include libsoup headers here because the way that SoupBuffer
+// is defined is not compatible with forward declaration.
+#include &lt;libsoup/soup.h&gt;
</ins><span class="cx"> #include &lt;wtf/gobject/GOwnPtr.h&gt;
</span><span class="cx"> 
</span><del>-typedef struct _SoupURI SoupURI;
-typedef struct _SoupCookie SoupCookie;
-typedef struct SoupMessageHeaders SoupMessageHeaders;
-
</del><span class="cx"> namespace WTF {
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; void freeOwnedGPtr&lt;SoupURI&gt;(SoupURI* ptr);
</span><span class="cx"> template&lt;&gt; void freeOwnedGPtr&lt;SoupCookie&gt;(SoupCookie* ptr);
</span><span class="cx"> template&lt;&gt; void freeOwnedGPtr&lt;SoupMessageHeaders&gt;(SoupMessageHeaders*);
</span><ins>+template&lt;&gt; void freeOwnedGPtr&lt;SoupBuffer&gt;(SoupBuffer*);
</ins><span class="cx"> 
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformnetworksoupResourceHandleSoupcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -4,7 +4,7 @@
</span><span class="cx">  * Copyright (C) 2008 Xan Lopez &lt;xan@gnome.org&gt;
</span><span class="cx">  * Copyright (C) 2008, 2010 Collabora Ltd.
</span><span class="cx">  * Copyright (C) 2009 Holger Hans Peter Freyther
</span><del>- * Copyright (C) 2009 Gustavo Noronha Silva &lt;gns@gnome.org&gt;
</del><ins>+ * Copyright (C) 2009, 2013 Gustavo Noronha Silva &lt;gns@gnome.org&gt;
</ins><span class="cx">  * Copyright (C) 2009 Christian Dywan &lt;christian@imendio.com&gt;
</span><span class="cx">  * Copyright (C) 2009, 2010, 2011, 2012 Igalia S.L.
</span><span class="cx">  * Copyright (C) 2009 John Kjellberg &lt;john.kjellberg@power.alstom.com&gt;
</span><span class="lines">@@ -82,7 +82,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static bool loadingSynchronousRequest = false;
</span><del>-static const size_t defaultReadBufferSize = 8192;
</del><ins>+static const size_t gDefaultReadBufferSize = 8192;
</ins><span class="cx"> 
</span><span class="cx"> class WebCoreSynchronousLoader : public ResourceHandleClient {
</span><span class="cx">     WTF_MAKE_NONCOPYABLE(WebCoreSynchronousLoader);
</span><span class="lines">@@ -146,9 +146,20 @@
</span><span class="cx"> 
</span><span class="cx">     virtual void didReceiveData(ResourceHandle*, const char* data, int length, int)
</span><span class="cx">     {
</span><del>-        m_data.append(data, length);
</del><ins>+        ASSERT_NOT_REACHED();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    virtual void didReceiveBuffer(ResourceHandle*, PassRefPtr&lt;SharedBuffer&gt; buffer, int /* encodedLength */)
+    {
+        // This pattern is suggested by SharedBuffer.h.
+        const char* segment;
+        unsigned position = 0;
+        while (unsigned length = buffer-&gt;getSomeData(segment, position)) {
+            m_data.append(segment, length);
+            position += length;
+        }
+    }
+
</ins><span class="cx">     virtual void didFinishLoading(ResourceHandle*, double)
</span><span class="cx">     {
</span><span class="cx">         if (g_main_loop_is_running(m_mainLoop.get()))
</span><span class="lines">@@ -208,7 +219,7 @@
</span><span class="cx">         SHA1 sha1;
</span><span class="cx">         sha1.addBytes(certificateData-&gt;data, certificateData-&gt;len);
</span><span class="cx"> 
</span><del>-        Vector&lt;uint8_t, SHA1::hashSize&gt; digest;
</del><ins>+        SHA1::Digest digest;
</ins><span class="cx">         sha1.computeHash(digest);
</span><span class="cx"> 
</span><span class="cx">         return base64Encode(reinterpret_cast&lt;const char*&gt;(digest.data()), SHA1::hashSize);
</span><span class="lines">@@ -301,21 +312,20 @@
</span><span class="cx"> {
</span><span class="cx">     ResourceHandleInternal* d = getInternal();
</span><span class="cx"> 
</span><ins>+    if (d-&gt;m_soupBuffer)
+        return;
+
+    // Non-NetworkProcess clients are able to give a buffer to the ResourceHandle to avoid expensive copies. If
+    // we do get a buffer from the client, we want the client to free it, so we create the soup buffer with
+    // SOUP_MEMORY_TEMPORARY.
</ins><span class="cx">     size_t bufferSize;
</span><del>-    char* bufferPtr = client()-&gt;getOrCreateReadBuffer(defaultReadBufferSize, bufferSize);
-    if (bufferPtr) {
-        d-&gt;m_defaultReadBuffer.clear();
-        d-&gt;m_readBufferPtr = bufferPtr;
-        d-&gt;m_readBufferSize = bufferSize;
-    } else if (!d-&gt;m_defaultReadBuffer) {
-        d-&gt;m_defaultReadBuffer.set(static_cast&lt;char*&gt;(g_malloc(defaultReadBufferSize)));
-        d-&gt;m_readBufferPtr = d-&gt;m_defaultReadBuffer.get();
-        d-&gt;m_readBufferSize = defaultReadBufferSize;
-    } else
-        d-&gt;m_readBufferPtr = d-&gt;m_defaultReadBuffer.get();
</del><ins>+    char* bufferFromClient = client()-&gt;getOrCreateReadBuffer(gDefaultReadBufferSize, bufferSize);
+    if (bufferFromClient)
+        d-&gt;m_soupBuffer.set(soup_buffer_new(SOUP_MEMORY_TEMPORARY, bufferFromClient, bufferSize));
+    else
+        d-&gt;m_soupBuffer.set(soup_buffer_new(SOUP_MEMORY_TAKE, static_cast&lt;char*&gt;(g_malloc(gDefaultReadBufferSize)), gDefaultReadBufferSize));
</ins><span class="cx"> 
</span><del>-    ASSERT(d-&gt;m_readBufferPtr);
-    ASSERT(d-&gt;m_readBufferSize);
</del><ins>+    ASSERT(d-&gt;m_soupBuffer);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static bool isAuthenticationFailureStatusCode(int httpStatusCode)
</span><span class="lines">@@ -524,7 +534,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (bytesSkipped &gt; 0) {
</span><del>-        g_input_stream_skip_async(d-&gt;m_inputStream.get(), defaultReadBufferSize, G_PRIORITY_DEFAULT,
</del><ins>+        g_input_stream_skip_async(d-&gt;m_inputStream.get(), gDefaultReadBufferSize, G_PRIORITY_DEFAULT,
</ins><span class="cx">             d-&gt;m_cancellable.get(), redirectSkipCallback, handle.get());
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="lines">@@ -557,6 +567,7 @@
</span><span class="cx">     d-&gt;m_inputStream.clear();
</span><span class="cx">     d-&gt;m_multipartInputStream.clear();
</span><span class="cx">     d-&gt;m_cancellable.clear();
</span><ins>+    d-&gt;m_soupBuffer.clear();
</ins><span class="cx"> 
</span><span class="cx">     if (d-&gt;m_soupMessage) {
</span><span class="cx">         g_signal_handlers_disconnect_matched(d-&gt;m_soupMessage.get(), G_SIGNAL_MATCH_DATA,
</span><span class="lines">@@ -565,11 +576,6 @@
</span><span class="cx">         d-&gt;m_soupMessage.clear();
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (d-&gt;m_readBufferPtr)
-        d-&gt;m_readBufferPtr = 0;
-    if (!d-&gt;m_defaultReadBuffer)
-        d-&gt;m_readBufferSize = 0;
-
</del><span class="cx">     if (d-&gt;m_timeoutSource) {
</span><span class="cx">         g_source_destroy(d-&gt;m_timeoutSource.get());
</span><span class="cx">         d-&gt;m_timeoutSource.clear();
</span><span class="lines">@@ -600,6 +606,18 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+size_t ResourceHandle::currentStreamPosition() const
+{
+    GInputStream* baseStream = d-&gt;m_inputStream.get();
+    while (!G_IS_SEEKABLE(baseStream) &amp;&amp; G_IS_FILTER_INPUT_STREAM(baseStream))
+        baseStream = g_filter_input_stream_get_base_stream(G_FILTER_INPUT_STREAM(baseStream));
+
+    if (!G_IS_SEEKABLE(baseStream))
+        return 0;
+
+    return g_seekable_tell(G_SEEKABLE(baseStream));
+}
+
</ins><span class="cx"> static void nextMultipartResponsePartCallback(GObject* /*source*/, GAsyncResult* result, gpointer data)
</span><span class="cx"> {
</span><span class="cx">     RefPtr&lt;ResourceHandle&gt; handle = static_cast&lt;ResourceHandle*&gt;(data);
</span><span class="lines">@@ -638,8 +656,10 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    d-&gt;m_previousPosition = 0;
+
</ins><span class="cx">     handle-&gt;ensureReadBuffer();
</span><del>-    g_input_stream_read_async(d-&gt;m_inputStream.get(), d-&gt;m_readBufferPtr, d-&gt;m_readBufferSize,
</del><ins>+    g_input_stream_read_async(d-&gt;m_inputStream.get(), const_cast&lt;char*&gt;(d-&gt;m_soupBuffer-&gt;data), d-&gt;m_soupBuffer-&gt;length,
</ins><span class="cx">         G_PRIORITY_DEFAULT, d-&gt;m_cancellable.get(), readCallback, handle.get());
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -669,12 +689,10 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT(!d-&gt;m_readBufferPtr);
-
</del><span class="cx">     if (soupMessage) {
</span><span class="cx">         if (SOUP_STATUS_IS_REDIRECTION(soupMessage-&gt;status_code) &amp;&amp; shouldRedirect(handle.get())) {
</span><span class="cx">             d-&gt;m_inputStream = inputStream;
</span><del>-            g_input_stream_skip_async(d-&gt;m_inputStream.get(), defaultReadBufferSize, G_PRIORITY_DEFAULT,
</del><ins>+            g_input_stream_skip_async(d-&gt;m_inputStream.get(), gDefaultReadBufferSize, G_PRIORITY_DEFAULT,
</ins><span class="cx">                 d-&gt;m_cancellable.get(), redirectSkipCallback, handle.get());
</span><span class="cx">             return;
</span><span class="cx">         }
</span><span class="lines">@@ -715,7 +733,7 @@
</span><span class="cx">     d-&gt;m_inputStream = inputStream;
</span><span class="cx"> 
</span><span class="cx">     handle-&gt;ensureReadBuffer();
</span><del>-    g_input_stream_read_async(d-&gt;m_inputStream.get(), d-&gt;m_readBufferPtr, d-&gt;m_readBufferSize,
</del><ins>+    g_input_stream_read_async(d-&gt;m_inputStream.get(), const_cast&lt;char*&gt;(d-&gt;m_soupBuffer-&gt;data), d-&gt;m_soupBuffer-&gt;length,
</ins><span class="cx">         G_PRIORITY_DEFAULT, d-&gt;m_cancellable.get(), readCallback, handle.get());
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1332,16 +1350,23 @@
</span><span class="cx">     // It's mandatory to have sent a response before sending data
</span><span class="cx">     ASSERT(!d-&gt;m_response.isNull());
</span><span class="cx"> 
</span><del>-    handle-&gt;client()-&gt;didReceiveData(handle.get(), d-&gt;m_readBufferPtr, bytesRead, bytesRead);
</del><ins>+    size_t currentPosition = handle-&gt;currentStreamPosition();
+    size_t encodedDataLength = currentPosition ? currentPosition - d-&gt;m_previousPosition : bytesRead;
</ins><span class="cx"> 
</span><del>-    // didReceiveData may cancel the load, which may release the last reference.
</del><ins>+    ASSERT(d-&gt;m_soupBuffer);
+    d-&gt;m_soupBuffer-&gt;length = bytesRead; // The buffer might be larger than the number of bytes read. SharedBuffer looks at the length property.
+    handle-&gt;client()-&gt;didReceiveBuffer(handle.get(), SharedBuffer::wrapSoupBuffer(d-&gt;m_soupBuffer.release()), encodedDataLength);
+
+    d-&gt;m_previousPosition = currentPosition;
+
+    // didReceiveBuffer may cancel the load, which may release the last reference.
</ins><span class="cx">     if (handle-&gt;cancelledOrClientless()) {
</span><span class="cx">         cleanupSoupRequestOperation(handle.get());
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     handle-&gt;ensureReadBuffer();
</span><del>-    g_input_stream_read_async(d-&gt;m_inputStream.get(), d-&gt;m_readBufferPtr, d-&gt;m_readBufferSize, G_PRIORITY_DEFAULT,
</del><ins>+    g_input_stream_read_async(d-&gt;m_inputStream.get(), const_cast&lt;char*&gt;(d-&gt;m_soupBuffer-&gt;data), d-&gt;m_soupBuffer-&gt;length, G_PRIORITY_DEFAULT,
</ins><span class="cx">         d-&gt;m_cancellable.get(), readCallback, handle.get());
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformsoupSharedBufferSoupcpp"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/platform/soup/SharedBufferSoup.cpp (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/soup/SharedBufferSoup.cpp                                (rev 0)
+++ branches/jsCStack/Source/WebCore/platform/soup/SharedBufferSoup.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,79 @@
</span><ins>+/*
+ * Copyright (C) 2013 Company 100 Inc.
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public
+ *  License as published by the Free Software Foundation; either
+ *  version 2 of the License, or (at your option) any later version.
+ *
+ *  This library is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this library; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#include &quot;config.h&quot;
+#include &quot;SharedBuffer.h&quot;
+
+#include &quot;PurgeableBuffer.h&quot;
+#include &lt;libsoup/soup.h&gt;
+
+namespace WebCore {
+
+SharedBuffer::SharedBuffer(SoupBuffer* soupBuffer)
+    : m_size(0)
+{
+    ASSERT(soupBuffer);
+    m_soupBuffer.set(soupBuffer);
+}
+
+PassRefPtr&lt;SharedBuffer&gt; SharedBuffer::wrapSoupBuffer(SoupBuffer* soupBuffer)
+{
+    return adoptRef(new SharedBuffer(soupBuffer));
+}
+
+void SharedBuffer::clearPlatformData()
+{
+    m_soupBuffer.clear();
+}
+
+void SharedBuffer::tryReplaceContentsWithPlatformBuffer(SharedBuffer* newContents)
+{
+    ASSERT_NOT_REACHED();
+}
+
+void SharedBuffer::maybeTransferPlatformData()
+{
+    if (!m_soupBuffer)
+        return;
+
+    ASSERT(!m_size);
+
+    // Hang on to the m_soupBuffer pointer in a local pointer as append() will re-enter maybeTransferPlatformData()
+    // and we need to make sure to early return when it does.
+    GOwnPtr&lt;SoupBuffer&gt; soupBuffer;
+    soupBuffer.swap(m_soupBuffer);
+
+    append(soupBuffer-&gt;data, soupBuffer-&gt;length);
+}
+
+bool SharedBuffer::hasPlatformData() const
+{
+    return m_soupBuffer;
+}
+
+const char* SharedBuffer::platformData() const
+{
+    return m_soupBuffer-&gt;data;
+}
+
+unsigned SharedBuffer::platformDataSize() const
+{
+    return m_soupBuffer-&gt;length;
+}
+
+} // namespace WebCore
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformtextTextBoundariescpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/text/TextBoundaries.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/text/TextBoundaries.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/text/TextBoundaries.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -97,6 +97,14 @@
</span><span class="cx">     *start = textBreakPrevious(it);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void findEndWordBoundary(const UChar* chars, int len, int position, int* end)
+{
+    TextBreakIterator* it = wordBreakIterator(chars, len);
+    *end = textBreakFollowing(it, position);
+    if (*end &lt; 0)
+        *end = textBreakLast(it);
+}
+
</ins><span class="cx"> #endif // !PLATFORM(MAC)
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformtextTextBoundariesh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/text/TextBoundaries.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/text/TextBoundaries.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/text/TextBoundaries.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -45,6 +45,7 @@
</span><span class="cx">     int startOfLastWordBoundaryContext(const UChar* characters, int length);
</span><span class="cx"> 
</span><span class="cx">     void findWordBoundary(const UChar*, int len, int position, int* start, int* end);
</span><ins>+    void findEndWordBoundary(const UChar*, int len, int position, int* end);
</ins><span class="cx">     int findNextWordFromIndex(const UChar*, int len, int position, bool forward);
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreplatformtextmacTextBoundariesmm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/platform/text/mac/TextBoundaries.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/platform/text/mac/TextBoundaries.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/platform/text/mac/TextBoundaries.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -40,6 +40,17 @@
</span><span class="cx">     *end = range.location + range.length;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void findEndWordBoundary(const UChar* chars, int len, int position, int* end)
+{
+    NSString* string = [[NSString alloc] initWithCharactersNoCopy:const_cast&lt;unichar*&gt;(chars)
+        length:len freeWhenDone:NO];
+    NSAttributedString* attr = [[NSAttributedString alloc] initWithString:string];
+    NSRange range = [attr doubleClickAtIndex:(position &gt;= len) ? len - 1 : position];
+    [attr release];
+    [string release];
+    *end = range.location + range.length;
+}
+
</ins><span class="cx"> int findNextWordFromIndex(const UChar* chars, int len, int position, bool forward)
</span><span class="cx"> {   
</span><span class="cx">     NSString* string = [[NSString alloc] initWithCharactersNoCopy:const_cast&lt;unichar*&gt;(chars)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorepluginsPluginViewcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/plugins/PluginView.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/plugins/PluginView.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/plugins/PluginView.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -61,7 +61,6 @@
</span><span class="cx"> #include &quot;RenderBox.h&quot;
</span><span class="cx"> #include &quot;RenderObject.h&quot;
</span><span class="cx"> #include &quot;ScriptController.h&quot;
</span><del>-#include &quot;ScriptValue.h&quot;
</del><span class="cx"> #include &quot;SecurityOrigin.h&quot;
</span><span class="cx"> #include &quot;Settings.h&quot;
</span><span class="cx"> #include &quot;UserGestureIndicator.h&quot;
</span><span class="lines">@@ -69,6 +68,7 @@
</span><span class="cx"> #include &quot;c_instance.h&quot;
</span><span class="cx"> #include &quot;npruntime_impl.h&quot;
</span><span class="cx"> #include &quot;runtime_root.h&quot;
</span><ins>+#include &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> #include &lt;runtime/JSCJSValue.h&gt;
</span><span class="cx"> #include &lt;runtime/JSLock.h&gt;
</span><span class="cx"> #include &lt;wtf/ASCIICType.h&gt;
</span><span class="lines">@@ -467,7 +467,7 @@
</span><span class="cx">     
</span><span class="cx">     // Executing a script can cause the plugin view to be destroyed, so we keep a reference to it.
</span><span class="cx">     RefPtr&lt;PluginView&gt; protector(this);
</span><del>-    ScriptValue result = m_parentFrame-&gt;script().executeScript(jsString, request-&gt;shouldAllowPopups());
</del><ins>+    Deprecated::ScriptValue result = m_parentFrame-&gt;script().executeScript(jsString, request-&gt;shouldAllowPopups());
</ins><span class="cx"> 
</span><span class="cx">     if (targetFrameName.isNull()) {
</span><span class="cx">         String resultString;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingAutoTableLayoutcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/AutoTableLayout.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/AutoTableLayout.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/AutoTableLayout.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -63,7 +63,7 @@
</span><span class="cx">                 if (current.inColSpan || !cell)
</span><span class="cx">                     continue;
</span><span class="cx"> 
</span><del>-                bool cellHasContent = cell-&gt;firstChild() || cell-&gt;style().hasBorder() || cell-&gt;style().hasPadding();
</del><ins>+                bool cellHasContent = cell-&gt;firstChild() || cell-&gt;style().hasBorder() || cell-&gt;style().hasPadding() || cell-&gt;style().hasBackground();
</ins><span class="cx">                 if (cellHasContent)
</span><span class="cx">                     columnLayout.emptyCellsOnly = false;
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingInlineBoxcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/InlineBox.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/InlineBox.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/InlineBox.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -42,14 +42,14 @@
</span><span class="cx">     FloatPoint b;
</span><span class="cx">     float c;
</span><span class="cx">     uint32_t d : 32;
</span><del>-#if !ASSERT_DISABLED
</del><ins>+#if !ASSERT_WITH_SECURITY_IMPLICATION_DISABLED
</ins><span class="cx">     bool f;
</span><span class="cx"> #endif
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> COMPILE_ASSERT(sizeof(InlineBox) == sizeof(SameSizeAsInlineBox), InlineBox_size_guard);
</span><span class="cx"> 
</span><del>-#if !ASSERT_DISABLED
</del><ins>+#if !ASSERT_WITH_SECURITY_IMPLICATION_DISABLED
</ins><span class="cx"> InlineBox::~InlineBox()
</span><span class="cx"> {
</span><span class="cx">     if (!m_hasBadParent &amp;&amp; m_parent)
</span><span class="lines">@@ -193,6 +193,15 @@
</span><span class="cx">     return m_bitfields.nextOnLineExists();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+bool InlineBox::previousOnLineExists() const
+{
+    if (!parent())
+        return false;
+    if (prevOnLine())
+        return true;
+    return parent()-&gt;previousOnLineExists();
+}
+
</ins><span class="cx"> InlineBox* InlineBox::nextLeafChild() const
</span><span class="cx"> {
</span><span class="cx">     InlineBox* leaf = 0;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingInlineBoxh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/InlineBox.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/InlineBox.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/InlineBox.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -131,6 +131,7 @@
</span><span class="cx">         m_prev = prev;
</span><span class="cx">     }
</span><span class="cx">     bool nextOnLineExists() const;
</span><ins>+    bool previousOnLineExists() const;
</ins><span class="cx"> 
</span><span class="cx">     virtual bool isLeaf() const { return true; }
</span><span class="cx">     
</span><span class="lines">@@ -235,7 +236,7 @@
</span><span class="cx">     // visibleLeftEdge, visibleRightEdge are in the parent's coordinate system.
</span><span class="cx">     virtual float placeEllipsisBox(bool ltr, float visibleLeftEdge, float visibleRightEdge, float ellipsisWidth, float &amp;truncatedWidth, bool&amp;);
</span><span class="cx"> 
</span><del>-#if !ASSERT_DISABLED
</del><ins>+#if !ASSERT_WITH_SECURITY_IMPLICATION_DISABLED
</ins><span class="cx">     void setHasBadParent();
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -367,7 +368,7 @@
</span><span class="cx">         , m_parent(nullptr)
</span><span class="cx">         , m_renderer(renderer)
</span><span class="cx">         , m_logicalWidth(0)
</span><del>-#if !ASSERT_DISABLED
</del><ins>+#if !ASSERT_WITH_SECURITY_IMPLICATION_DISABLED
</ins><span class="cx">         , m_hasBadParent(false)
</span><span class="cx"> #endif
</span><span class="cx">     {
</span><span class="lines">@@ -382,7 +383,7 @@
</span><span class="cx">         , m_topLeft(topLeft)
</span><span class="cx">         , m_logicalWidth(logicalWidth)
</span><span class="cx">         , m_bitfields(firstLine, constructed, dirty, extracted, isHorizontal)
</span><del>-#if !ASSERT_DISABLED
</del><ins>+#if !ASSERT_WITH_SECURITY_IMPLICATION_DISABLED
</ins><span class="cx">         , m_hasBadParent(false)
</span><span class="cx"> #endif
</span><span class="cx">     {
</span><span class="lines">@@ -407,7 +408,7 @@
</span><span class="cx">     // For InlineFlowBox and InlineTextBox
</span><span class="cx">     bool extracted() const { return m_bitfields.extracted(); }
</span><span class="cx"> 
</span><del>-#if !ASSERT_DISABLED
</del><ins>+#if !ASSERT_WITH_SECURITY_IMPLICATION_DISABLED
</ins><span class="cx"> private:
</span><span class="cx">     bool m_hasBadParent;
</span><span class="cx"> #endif
</span><span class="lines">@@ -416,13 +417,13 @@
</span><span class="cx"> #define INLINE_BOX_OBJECT_TYPE_CASTS(ToValueTypeName, predicate) \
</span><span class="cx">     TYPE_CASTS_BASE(ToValueTypeName, InlineBox, object, object-&gt;predicate, object.predicate)
</span><span class="cx"> 
</span><del>-#if ASSERT_DISABLED
</del><ins>+#if ASSERT_WITH_SECURITY_IMPLICATION_DISABLED
</ins><span class="cx"> inline InlineBox::~InlineBox()
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-#if !ASSERT_DISABLED
</del><ins>+#if !ASSERT_WITH_SECURITY_IMPLICATION_DISABLED
</ins><span class="cx"> inline void InlineBox::setHasBadParent()
</span><span class="cx"> {
</span><span class="cx">     m_hasBadParent = true;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingInlineElementBoxcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/InlineElementBox.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/InlineElementBox.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/InlineElementBox.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -26,6 +26,7 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;InlineElementBox.h&quot;
</span><span class="cx"> 
</span><ins>+#include &quot;InlineFlowBox.h&quot;
</ins><span class="cx"> #include &quot;PaintInfo.h&quot;
</span><span class="cx"> #include &quot;RenderBlock.h&quot;
</span><span class="cx"> #include &quot;RenderBox.h&quot;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingInlineFlowBoxcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/InlineFlowBox.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/InlineFlowBox.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/InlineFlowBox.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -49,15 +49,14 @@
</span><span class="cx"> 
</span><span class="cx"> COMPILE_ASSERT(sizeof(InlineFlowBox) == sizeof(SameSizeAsInlineFlowBox), InlineFlowBox_should_stay_small);
</span><span class="cx"> 
</span><del>-#ifndef NDEBUG
-
</del><ins>+#if !ASSERT_WITH_SECURITY_IMPLICATION_DISABLED
</ins><span class="cx"> InlineFlowBox::~InlineFlowBox()
</span><span class="cx"> {
</span><del>-    if (!m_hasBadChildList)
</del><ins>+    if (!m_hasBadChildList) {
</ins><span class="cx">         for (InlineBox* child = firstChild(); child; child = child-&gt;nextOnLine())
</span><span class="cx">             child-&gt;setHasBadParent();
</span><ins>+    }
</ins><span class="cx"> }
</span><del>-
</del><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> LayoutUnit InlineFlowBox::getFlowSpacingLogicalWidth()
</span><span class="lines">@@ -1666,8 +1665,8 @@
</span><span class="cx"> 
</span><span class="cx"> void InlineFlowBox::checkConsistency() const
</span><span class="cx"> {
</span><ins>+    ASSERT_WITH_SECURITY_IMPLICATION(!m_hasBadChildList);
</ins><span class="cx"> #ifdef CHECK_CONSISTENCY
</span><del>-    ASSERT(!m_hasBadChildList);
</del><span class="cx">     const InlineBox* prev = 0;
</span><span class="cx">     for (const InlineBox* child = m_firstChild; child; child = child-&gt;nextOnLine()) {
</span><span class="cx">         ASSERT(child-&gt;parent() == this);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingInlineFlowBoxh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/InlineFlowBox.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/InlineFlowBox.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/InlineFlowBox.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -53,7 +53,7 @@
</span><span class="cx">         , m_hasAnnotationsBefore(false)
</span><span class="cx">         , m_hasAnnotationsAfter(false)
</span><span class="cx">         , m_isFirstAfterPageBreak(false)
</span><del>-#ifndef NDEBUG
</del><ins>+#if !ASSERT_WITH_SECURITY_IMPLICATION_DISABLED
</ins><span class="cx">         , m_hasBadChildList(false)
</span><span class="cx"> #endif
</span><span class="cx">     {
</span><span class="lines">@@ -66,9 +66,11 @@
</span><span class="cx">         m_hasTextDescendants = m_hasTextChildren;
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+#if !ASSERT_WITH_SECURITY_IMPLICATION_DISABLED
+    virtual ~InlineFlowBox();
+#endif
+
</ins><span class="cx"> #ifndef NDEBUG
</span><del>-    virtual ~InlineFlowBox();
-    
</del><span class="cx">     virtual void showLineTreeAndMark(const InlineBox* = 0, const char* = 0, const InlineBox* = 0, const char* = 0, const RenderObject* = 0, int = 0) const OVERRIDE;
</span><span class="cx">     virtual const char* boxName() const OVERRIDE;
</span><span class="cx"> #endif
</span><span class="lines">@@ -340,7 +342,7 @@
</span><span class="cx"> 
</span><span class="cx">     // End of RootInlineBox-specific members.
</span><span class="cx"> 
</span><del>-#ifndef NDEBUG
</del><ins>+#if !ASSERT_WITH_SECURITY_IMPLICATION_DISABLED
</ins><span class="cx"> private:
</span><span class="cx">     unsigned m_hasBadChildList : 1;
</span><span class="cx"> #endif
</span><span class="lines">@@ -356,7 +358,7 @@
</span><span class="cx"> 
</span><span class="cx"> inline void InlineFlowBox::setHasBadChildList()
</span><span class="cx"> {
</span><del>-#ifndef NDEBUG
</del><ins>+#if !ASSERT_WITH_SECURITY_IMPLICATION_DISABLED
</ins><span class="cx">     m_hasBadChildList = true;
</span><span class="cx"> #endif
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingInlineIteratorh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/InlineIterator.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/InlineIterator.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/InlineIterator.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -39,16 +39,16 @@
</span><span class="cx">     InlineIterator()
</span><span class="cx">         : m_root(0)
</span><span class="cx">         , m_renderer(0)
</span><ins>+        , m_nextBreakablePosition(-1)
</ins><span class="cx">         , m_pos(0)
</span><del>-        , m_nextBreakablePosition(-1)
</del><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     InlineIterator(RenderElement* root, RenderObject* o, unsigned p)
</span><span class="cx">         : m_root(root)
</span><span class="cx">         , m_renderer(o)
</span><ins>+        , m_nextBreakablePosition(-1)
</ins><span class="cx">         , m_pos(p)
</span><del>-        , m_nextBreakablePosition(-1)
</del><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -70,6 +70,8 @@
</span><span class="cx">     void setRenderer(RenderObject* renderer) { m_renderer = renderer; }
</span><span class="cx">     unsigned offset() const { return m_pos; }
</span><span class="cx">     RenderElement* root() const { return m_root; }
</span><ins>+    int nextBreakablePosition() const { return m_nextBreakablePosition; }
+    void setNextBreakablePosition(int position) { m_nextBreakablePosition = position; }
</ins><span class="cx"> 
</span><span class="cx">     void fastIncrementInTextNode();
</span><span class="cx">     void increment(InlineBidiResolver* = 0);
</span><span class="lines">@@ -95,10 +97,11 @@
</span><span class="cx">     RenderElement* m_root;
</span><span class="cx">     RenderObject* m_renderer;
</span><span class="cx"> 
</span><ins>+    int m_nextBreakablePosition;
+
</ins><span class="cx"> // FIXME: These should be private.
</span><span class="cx"> public:
</span><span class="cx">     unsigned m_pos;
</span><del>-    int m_nextBreakablePosition;
</del><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> inline bool operator==(const InlineIterator&amp; it1, const InlineIterator&amp; it2)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingInlineTextBoxcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/InlineTextBox.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/InlineTextBox.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/InlineTextBox.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -716,7 +716,13 @@
</span><span class="cx"> 
</span><span class="cx">     GraphicsContextStateSaver stateSaver(*context);
</span><span class="cx"> 
</span><ins>+#if !PLATFORM(IOS)
+    // FIXME: Is this color still applicable as of Mavericks? for non-Mac ports? We should
+    // be able to move this color information to RenderStyle.
</ins><span class="cx">     Color c = Color(225, 221, 85);
</span><ins>+#else
+    Color c = style.compositionFillColor();
+#endif
</ins><span class="cx">     
</span><span class="cx">     updateGraphicsContext(*context, TextPaintStyle(c, style.colorSpace())); // Don't draw text at all!
</span><span class="cx"> 
</span><span class="lines">@@ -1001,8 +1007,24 @@
</span><span class="cx">     
</span><span class="cx">     // Use a special function for underlines to get the positioning exactly right.
</span><span class="cx">     bool isPrinting = renderer().document().printing();
</span><ins>+#if !PLATFORM(IOS)
</ins><span class="cx">     context.setStrokeThickness(textDecorationThickness);
</span><ins>+#else
+    // On iOS we want to draw crisp decorations. The function drawLineForText takes the context's
+    // strokeThickness and renders that at device pixel scale (i.e. a strokeThickness of 1 will
+    // produce a 1 device pixel line, so thinner on retina than non-retina). We will also scale
+    // our thickness based on the size of the font. Since our default size is 16px we'll use that
+    // as a scale reference.
+    float pageScale = 1;
+    if (Page* page = renderer().frame().page())
+        pageScale = page-&gt;pageScaleFactor();
</ins><span class="cx"> 
</span><ins>+    const float textDecorationBaseFontSize = 16;
+    float fontSizeScaling = renderer().style().fontSize() / textDecorationBaseFontSize;
+    float strokeThickness = roundf(textDecorationThickness * fontSizeScaling * pageScale);
+    context.setStrokeThickness(strokeThickness);
+#endif
+
</ins><span class="cx">     bool linesAreOpaque = !isPrinting &amp;&amp; (!(decoration &amp; TextDecorationUnderline) || underline.alpha() == 255) &amp;&amp; (!(decoration &amp; TextDecorationOverline) || overline.alpha() == 255) &amp;&amp; (!(decoration &amp; TextDecorationLineThrough) || linethrough.alpha() == 255);
</span><span class="cx"> 
</span><span class="cx">     const RenderStyle&amp; lineStyle = this-&gt;lineStyle();
</span><span class="lines">@@ -1164,6 +1186,11 @@
</span><span class="cx">         return GraphicsContext::DocumentMarkerAutocorrectionReplacementLineStyle;
</span><span class="cx">     case DocumentMarker::DictationAlternatives:
</span><span class="cx">         return GraphicsContext::DocumentMarkerDictationAlternativesLineStyle;
</span><ins>+#if PLATFORM(IOS)
+    case DocumentMarker::DictationPhraseWithAlternatives:
+        // FIXME: Rename TextCheckingDictationPhraseWithAlternativesLineStyle and remove the PLATFORM(IOS)-guard.
+        return GraphicsContext::TextCheckingDictationPhraseWithAlternativesLineStyle;
+#endif
</ins><span class="cx">     default:
</span><span class="cx">         ASSERT_NOT_REACHED();
</span><span class="cx">         return GraphicsContext::DocumentMarkerSpellingLineStyle;
</span><span class="lines">@@ -1304,6 +1331,10 @@
</span><span class="cx">             case DocumentMarker::CorrectionIndicator:
</span><span class="cx">             case DocumentMarker::Replacement:
</span><span class="cx">             case DocumentMarker::DictationAlternatives:
</span><ins>+#if PLATFORM(IOS)
+            // FIXME: Remove the PLATFORM(IOS)-guard.
+            case DocumentMarker::DictationPhraseWithAlternatives:
+#endif
</ins><span class="cx">                 if (background)
</span><span class="cx">                     continue;
</span><span class="cx">                 break;
</span><span class="lines">@@ -1334,6 +1365,12 @@
</span><span class="cx">             case DocumentMarker::Grammar:
</span><span class="cx">                 paintDocumentMarker(pt, boxOrigin, marker, style, font, true);
</span><span class="cx">                 break;
</span><ins>+#if PLATFORM(IOS)
+            // FIXME: See &lt;rdar://problem/8933352&gt;. Also, remove the PLATFORM(IOS)-guard.
+            case DocumentMarker::DictationPhraseWithAlternatives:
+                paintDocumentMarker(pt, boxOrigin, marker, style, font, true);
+                break;
+#endif
</ins><span class="cx">             case DocumentMarker::TextMatch:
</span><span class="cx">                 paintTextMatchMarker(pt, boxOrigin, marker, style, font);
</span><span class="cx">                 break;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderBlockcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderBlock.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderBlock.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderBlock.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -2210,7 +2210,12 @@
</span><span class="cx">         flipForWritingMode(overflowBox);
</span><span class="cx">         overflowBox.inflate(maximalOutlineSize(paintInfo.phase));
</span><span class="cx">         overflowBox.moveBy(adjustedPaintOffset);
</span><del>-        if (!overflowBox.intersects(paintInfo.rect))
</del><ins>+        if (!overflowBox.intersects(paintInfo.rect)
+#if PLATFORM(IOS)
+            // FIXME: This may be applicable to non-iOS ports.
+            &amp;&amp; (!hasLayer() || !layer()-&gt;isComposited())
+#endif
+        )
</ins><span class="cx">             return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -3559,6 +3564,15 @@
</span><span class="cx">     // If we can't find an ancestor to check editability on, or editability is unchanged, we recur like normal
</span><span class="cx">     if (isEditingBoundary(ancestor, child))
</span><span class="cx">         return child.positionForPoint(pointInChildCoordinates);
</span><ins>+    
+#if PLATFORM(IOS)
+    // On iOS we want to constrain VisiblePositions to the editable region closest to the input position, so
+    // we will allow descent from non-edtiable to editable content.
+    // FIXME: This constraining must be done at a higher level once we implement contentEditable. For now, if something
+    // is editable, the whole document will be.
+    if (childElement-&gt;isContentEditable() &amp;&amp; !ancestor-&gt;element()-&gt;isContentEditable())
+        return child.positionForPoint(pointInChildCoordinates);
+#endif
</ins><span class="cx"> 
</span><span class="cx">     // Otherwise return before or after the child, depending on if the click was to the logical left or logical right of the child
</span><span class="cx">     LayoutUnit childMiddle = parent.logicalWidthForChild(child) / 2;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderBlockh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderBlock.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderBlock.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderBlock.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -25,25 +25,21 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;ColumnInfo.h&quot;
</span><span class="cx"> #include &quot;GapRects.h&quot;
</span><del>-#include &quot;PODIntervalTree.h&quot;
</del><span class="cx"> #include &quot;RenderBox.h&quot;
</span><del>-#include &quot;RootInlineBox.h&quot;
-#include &quot;TextBreakIterator.h&quot;
</del><span class="cx"> #include &quot;TextRun.h&quot;
</span><span class="cx"> #include &lt;wtf/OwnPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/ListHashSet.h&gt;
</span><span class="cx"> 
</span><del>-#if ENABLE(CSS_SHAPES)
-#include &quot;ShapeInsideInfo.h&quot;
-#include &quot;ShapeValue.h&quot;
-#endif
-
</del><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class LineLayoutState;
</span><span class="cx"> class LogicalSelectionOffsetCaches;
</span><span class="cx"> class RenderInline;
</span><span class="cx"> class RenderText;
</span><ins>+#if ENABLE(CSS_SHAPES)
+class ShapeInsideInfo;
+class ShapeValue;
+#endif
</ins><span class="cx"> 
</span><span class="cx"> struct BidiRun;
</span><span class="cx"> struct PaintInfo;
</span><span class="lines">@@ -441,6 +437,9 @@
</span><span class="cx"> 
</span><span class="cx">     void setDesiredColumnCountAndWidth(int, LayoutUnit);
</span><span class="cx"> 
</span><ins>+    LayoutUnit logicalLeftSelectionOffset(RenderBlock&amp; rootBlock, LayoutUnit position, const LogicalSelectionOffsetCaches&amp;);
+    LayoutUnit logicalRightSelectionOffset(RenderBlock&amp; rootBlock, LayoutUnit position, const LogicalSelectionOffsetCaches&amp;);
+
</ins><span class="cx"> public:
</span><span class="cx">     virtual void computeOverflow(LayoutUnit oldClientAfterEdge, bool recomputeFloats = false);
</span><span class="cx">     void clearLayoutOverflow();
</span><span class="lines">@@ -561,9 +560,7 @@
</span><span class="cx">         LayoutUnit&amp; lastLogicalTop, LayoutUnit&amp; lastLogicalLeft, LayoutUnit&amp; lastLogicalRight, const LogicalSelectionOffsetCaches&amp;, const PaintInfo*);
</span><span class="cx">     LayoutRect blockSelectionGap(RenderBlock&amp; rootBlock, const LayoutPoint&amp; rootBlockPhysicalPosition, const LayoutSize&amp; offsetFromRootBlock,
</span><span class="cx">         LayoutUnit lastLogicalTop, LayoutUnit lastLogicalLeft, LayoutUnit lastLogicalRight, LayoutUnit logicalBottom, const LogicalSelectionOffsetCaches&amp;, const PaintInfo*);
</span><del>-    LayoutUnit logicalLeftSelectionOffset(RenderBlock&amp; rootBlock, LayoutUnit position, const LogicalSelectionOffsetCaches&amp;);
-    LayoutUnit logicalRightSelectionOffset(RenderBlock&amp; rootBlock, LayoutUnit position, const LogicalSelectionOffsetCaches&amp;);
-    
</del><ins>+
</ins><span class="cx">     // FIXME-BLOCKFLOW: Remove virtualizaion when all callers have moved to RenderBlockFlow
</span><span class="cx">     virtual void clipOutFloatingObjects(RenderBlock&amp;, const PaintInfo*, const LayoutPoint&amp;, const LayoutSize&amp;) { };
</span><span class="cx">     friend class LogicalSelectionOffsetCaches;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderBlockFlowcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderBlockFlow.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderBlockFlow.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderBlockFlow.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -40,6 +40,10 @@
</span><span class="cx"> #include &quot;VerticalPositionCache.h&quot;
</span><span class="cx"> #include &quot;VisiblePosition.h&quot;
</span><span class="cx"> 
</span><ins>+#if ENABLE(CSS_SHAPES)
+#include &quot;ShapeInsideInfo.h&quot;
+#endif
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> bool RenderBlock::s_canPropagateFloatIntoSibling = false;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderBlockLineLayoutcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderBlockLineLayout.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderBlockLineLayout.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderBlockLineLayout.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -865,16 +865,6 @@
</span><span class="cx">     lastRootBox()-&gt;appendFloat(floatingObject-&gt;renderer());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-// FIXME: This should be a BidiStatus constructor or create method.
-static inline BidiStatus statusWithDirection(TextDirection textDirection, bool isOverride)
-{
-    UCharDirection direction = textDirection == LTR ? U_LEFT_TO_RIGHT : U_RIGHT_TO_LEFT;
-    RefPtr&lt;BidiContext&gt; context = BidiContext::create(textDirection == LTR ? 0 : 1, direction, isOverride, FromStyleOrDOM);
-
-    // This copies BidiStatus and may churn the ref on BidiContext. I doubt it matters.
-    return BidiStatus(direction, direction, direction, context.release());
-}
-
</del><span class="cx"> // FIXME: BidiResolver should have this logic.
</span><span class="cx"> static inline void constructBidiRunsForSegment(InlineBidiResolver&amp; topResolver, BidiRunList&lt;BidiRun&gt;&amp; bidiRuns, const InlineIterator&amp; endOfRuns, VisualDirectionOverride override, bool previousLineBrokeCleanly)
</span><span class="cx"> {
</span><span class="lines">@@ -907,7 +897,7 @@
</span><span class="cx">             ASSERT(unicodeBidi == Isolate || unicodeBidi == IsolateOverride);
</span><span class="cx">             direction = isolatedInline-&gt;style().direction();
</span><span class="cx">         }
</span><del>-        isolatedResolver.setStatus(statusWithDirection(direction, isOverride(unicodeBidi)));
</del><ins>+        isolatedResolver.setStatus(BidiStatus(direction, isOverride(unicodeBidi)));
</ins><span class="cx"> 
</span><span class="cx">         // FIXME: The fact that we have to construct an Iterator here
</span><span class="cx">         // currently prevents this code from moving into BidiResolver.
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderBoxcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderBox.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderBox.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderBox.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -62,6 +62,10 @@
</span><span class="cx"> #include &quot;RenderLayerCompositor.h&quot;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+#include &quot;Settings.h&quot;
+#endif
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> using namespace HTMLNames;
</span><span class="lines">@@ -596,6 +600,18 @@
</span><span class="cx">     return std::max(logicalHeight, computeContentLogicalHeight(styleToUse.logicalMinHeight()));
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+RoundedRect::Radii RenderBox::borderRadii() const
+{
+    RenderStyle&amp; style = this-&gt;style();
+    LayoutRect bounds = frameRect();
+
+    unsigned borderLeft = style.borderLeftWidth();
+    unsigned borderTop = style.borderTopWidth();
+    bounds.moveBy(LayoutPoint(borderLeft, borderTop));
+    bounds.contract(borderLeft + style.borderRightWidth(), borderTop + style.borderBottomWidth());
+    return style.getRoundedBorderFor(bounds).radii();
+}
+
</ins><span class="cx"> IntRect RenderBox::absoluteContentBox() const
</span><span class="cx"> {
</span><span class="cx">     // This is wrong with transforms and flipped writing modes.
</span><span class="lines">@@ -1159,6 +1175,14 @@
</span><span class="cx">     LayoutRect paintRect = borderBoxRectInRegion(paintInfo.renderRegion);
</span><span class="cx">     paintRect.moveBy(paintOffset);
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+    // Workaround for &lt;rdar://problem/6209763&gt;. Force the painting bounds of checkboxes and radio controls to be square.
+    if (style().appearance() == CheckboxPart || style().appearance() == RadioPart) {
+        int width = std::min(paintRect.width(), paintRect.height());
+        int height = width;
+        paintRect = IntRect(paintRect.x(), paintRect.y() + (this-&gt;height() - height) / 2, width, height); // Vertically center the checkbox, like on desktop
+    }
+#endif
</ins><span class="cx">     BackgroundBleedAvoidance bleedAvoidance = determineBackgroundBleedAvoidance(paintInfo.context);
</span><span class="cx"> 
</span><span class="cx">     // FIXME: Should eventually give the theme control over whether the box shadow should paint, since controls could have
</span><span class="lines">@@ -2109,9 +2133,15 @@
</span><span class="cx">     rect.setLocation(topLeft);
</span><span class="cx">     if (o-&gt;hasOverflowClip()) {
</span><span class="cx">         RenderBox* containerBox = toRenderBox(o);
</span><ins>+#if PLATFORM(IOS)
+        if (!containerBox-&gt;layer() || !containerBox-&gt;layer()-&gt;hasAcceleratedTouchScrolling()) {
+#endif
</ins><span class="cx">         containerBox-&gt;applyCachedClipAndScrollOffsetForRepaint(rect);
</span><span class="cx">         if (rect.isEmpty())
</span><span class="cx">             return;
</span><ins>+#if PLATFORM(IOS)
+        } 
+#endif
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (containerSkipped) {
</span><span class="lines">@@ -2902,6 +2932,33 @@
</span><span class="cx">     return constrainLogicalHeightByMinMax(availableLogicalHeightUsing(style().logicalHeight(), heightType));
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+static inline int customContainingBlockWidth(const RenderView&amp; view, const RenderBox&amp; containingBlockBox)
+{
+    return view.frameView().customFixedPositionLayoutRect().width() - containingBlockBox.borderLeft() - containingBlockBox.borderRight() - containingBlockBox.verticalScrollbarWidth();
+}
+
+static inline int customContainingBlockHeight(const RenderView&amp; view, const RenderBox&amp; containingBlockBox)
+{
+    return view.frameView().customFixedPositionLayoutRect().height() - containingBlockBox.borderTop() - containingBlockBox.borderBottom() - containingBlockBox.horizontalScrollbarHeight();
+}
+
+static int customContainingBlockLogicalWidth(const RenderStyle&amp; style, const RenderView&amp; view, const RenderBox&amp; containingBlockBox)
+{
+    return style.isHorizontalWritingMode() ? customContainingBlockWidth(view, containingBlockBox) : customContainingBlockHeight(view, containingBlockBox);
+}
+
+static int customContainingBlockLogicalHeight(const RenderStyle&amp; style, const RenderView&amp; view, const RenderBox&amp; containingBlockBox)
+{
+    return style.isHorizontalWritingMode() ? customContainingBlockHeight(view, containingBlockBox) : customContainingBlockWidth(view, containingBlockBox);
+}
+
+static inline int customContainingBlockAvailableLogicalHeight(const RenderStyle&amp; style, const RenderView&amp; view)
+{
+    return style.isHorizontalWritingMode() ? view.frameView().customFixedPositionLayoutRect().height() : view.frameView().customFixedPositionLayoutRect().width();
+}
+#endif
+
</ins><span class="cx"> LayoutUnit RenderBox::availableLogicalHeightUsing(const Length&amp; h, AvailableLogicalHeightType heightType) const
</span><span class="cx"> {
</span><span class="cx">     // We need to stop here, since we don't want to increase the height of the table
</span><span class="lines">@@ -2914,9 +2971,21 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (h.isPercent() &amp;&amp; isOutOfFlowPositioned() &amp;&amp; !isRenderFlowThread()) {
</span><ins>+#if PLATFORM(IOS)
+        RenderBlock* containingBlock = this-&gt;containingBlock();
+        // If we're fixed, and our container is the RenderView, use the custom fixed position rect for sizing.
+        if (containingBlock-&gt;isRenderView()) {
+            RenderView&amp; view = toRenderView(*containingBlock);
+            if (view.hasCustomFixedPosition(*this))
+                return adjustContentBoxLogicalHeightForBoxSizing(valueForLength(h, customContainingBlockAvailableLogicalHeight(containingBlock-&gt;style(), view)));
+        }
+
+        return adjustContentBoxLogicalHeightForBoxSizing(valueForLength(h, containingBlock-&gt;availableLogicalHeight(heightType)));
+#else
</ins><span class="cx">         // FIXME: This is wrong if the containingBlock has a perpendicular writing mode.
</span><span class="cx">         LayoutUnit availableHeight = containingBlockLogicalHeightForPositioned(containingBlock());
</span><span class="cx">         return adjustContentBoxLogicalHeightForBoxSizing(valueForLength(h, availableHeight));
</span><ins>+#endif
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     LayoutUnit heightIncludingScrollbar = computeContentAndScrollbarLogicalHeightUsing(h);
</span><span class="lines">@@ -2981,8 +3050,15 @@
</span><span class="cx"> 
</span><span class="cx">     if (containingBlock-&gt;isBox()) {
</span><span class="cx">         RenderFlowThread* flowThread = flowThreadContainingBlock();
</span><del>-        if (!flowThread)
</del><ins>+        if (!flowThread) {
+#if PLATFORM(IOS)
+            if (view().hasCustomFixedPosition(*this)) {
+                const RenderBox&amp; containingBlockBox = toRenderBox(*containingBlock);
+                return customContainingBlockLogicalWidth(containingBlockBox.style(), &amp;view(), containingBlockBox);
+            }
+#endif
</ins><span class="cx">             return toRenderBox(containingBlock)-&gt;clientLogicalWidth();
</span><ins>+        }
</ins><span class="cx"> 
</span><span class="cx">         if (containingBlock-&gt;isRenderNamedFlowThread() &amp;&amp; style().position() == FixedPosition)
</span><span class="cx">             return containingBlock-&gt;view().clientLogicalWidth();
</span><span class="lines">@@ -3038,6 +3114,10 @@
</span><span class="cx">         return containingBlockLogicalWidthForPositioned(containingBlock, 0, false);
</span><span class="cx"> 
</span><span class="cx">     if (containingBlock-&gt;isBox()) {
</span><ins>+#if PLATFORM(IOS)
+        if (view().hasCustomFixedPosition(*this))
+            return customContainingBlockLogicalHeight(style(), view(), toRenderBox(*containingBlock));
+#endif
</ins><span class="cx">         const RenderBlock* cb = toRenderBlock(containingBlock);
</span><span class="cx">         LayoutUnit result = cb-&gt;clientLogicalHeight();
</span><span class="cx">         RenderFlowThread* flowThread = flowThreadContainingBlock();
</span><span class="lines">@@ -4460,7 +4540,11 @@
</span><span class="cx">         rect.unite(layoutOverflowRect());
</span><span class="cx"> 
</span><span class="cx">     bool hasTransform = hasLayer() &amp;&amp; layer()-&gt;transform();
</span><ins>+#if PLATFORM(IOS)
+    if (isInFlowPositioned() || (hasTransform &amp;&amp; document().settings()-&gt;shouldTransformsAffectOverflow())) {
+#else
</ins><span class="cx">     if (isInFlowPositioned() || hasTransform) {
</span><ins>+#endif
</ins><span class="cx">         // If we are relatively positioned or if we have a transform, then we have to convert
</span><span class="cx">         // this rectangle into physical coordinates, apply relative positioning and transforms
</span><span class="cx">         // to it, and then convert it back.
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderBoxh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderBox.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderBox.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderBox.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -157,6 +157,8 @@
</span><span class="cx">     IntRect pixelSnappedBorderBoxRect() const { return IntRect(IntPoint(), m_frameRect.pixelSnappedSize()); }
</span><span class="cx">     virtual IntRect borderBoundingBox() const OVERRIDE FINAL { return pixelSnappedBorderBoxRect(); }
</span><span class="cx"> 
</span><ins>+    RoundedRect::Radii borderRadii() const;
+
</ins><span class="cx">     // The content area of the box (excludes padding - and intrinsic padding for table cells, etc... - and border).
</span><span class="cx">     LayoutRect contentBoxRect() const { return LayoutRect(borderLeft() + paddingLeft(), borderTop() + paddingTop(), contentWidth(), contentHeight()); }
</span><span class="cx">     // The content box in absolute coords. Ignores transforms.
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderBoxModelObjectcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderBoxModelObject.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderBoxModelObject.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderBoxModelObject.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -432,7 +432,11 @@
</span><span class="cx">         FloatPoint scrollOffset = FloatPoint() + enclosingClippingLayer-&gt;scrollOffset();
</span><span class="cx">         constrainingRect.setLocation(scrollOffset);
</span><span class="cx">     } else {
</span><ins>+#if PLATFORM(IOS)
+        LayoutRect viewportRect = view().frameView().customFixedPositionLayoutRect();
+#else
</ins><span class="cx">         LayoutRect viewportRect = view().frameView().viewportConstrainedVisibleContentRect();
</span><ins>+#endif
</ins><span class="cx">         float scale = view().frameView().frame().frameScaleFactor();
</span><span class="cx">         viewportRect.scale(1 / scale);
</span><span class="cx">         constrainingRect = viewportRect;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderButtoncpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderButton.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderButton.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderButton.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -29,6 +29,10 @@
</span><span class="cx"> #include &quot;RenderTheme.h&quot;
</span><span class="cx"> #include &quot;StyleInheritedData.h&quot;
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+#include &quot;RenderThemeIOS.h&quot;
+#endif
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> using namespace HTMLNames;
</span><span class="lines">@@ -192,4 +196,14 @@
</span><span class="cx">     repaint();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+void RenderButton::layout()
+{
+    RenderFlexibleBox::layout();
+
+    // FIXME: We should not be adjusting styles during layout. See &lt;rdar://problem/7675493&gt;.
+    RenderThemeIOS::adjustRoundBorderRadius(style(), this);
+}
+#endif
+
</ins><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderElementcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderElement.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderElement.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderElement.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -846,6 +846,10 @@
</span><span class="cx">         if (visibilityChanged)
</span><span class="cx">             document().setAnnotatedRegionsDirty(true);
</span><span class="cx"> #endif
</span><ins>+#if PLATFORM(IOS) &amp;&amp; ENABLE(TOUCH_EVENTS)
+        if (visibilityChanged)
+            document().dirtyTouchEventRects();
+#endif
</ins><span class="cx">         if (visibilityChanged) {
</span><span class="cx">             if (AXObjectCache* cache = document().existingAXObjectCache())
</span><span class="cx">                 cache-&gt;childrenChanged(parent());
</span><span class="lines">@@ -923,6 +927,7 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if !PLATFORM(IOS)
</ins><span class="cx"> static bool areNonIdenticalCursorListsEqual(const RenderStyle* a, const RenderStyle* b)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(a-&gt;cursors() != b-&gt;cursors());
</span><span class="lines">@@ -933,6 +938,7 @@
</span><span class="cx"> {
</span><span class="cx">     return a-&gt;cursor() == b-&gt;cursor() &amp;&amp; (a-&gt;cursors() == b-&gt;cursors() || areNonIdenticalCursorListsEqual(a, b));
</span><span class="cx"> }
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx"> void RenderElement::styleDidChange(StyleDifference diff, const RenderStyle* oldStyle)
</span><span class="cx"> {
</span><span class="lines">@@ -972,8 +978,10 @@
</span><span class="cx">     // Don't check for repaint here; we need to wait until the layer has been
</span><span class="cx">     // updated by subclasses before we know if we have to repaint (in setStyle()).
</span><span class="cx"> 
</span><ins>+#if !PLATFORM(IOS)
</ins><span class="cx">     if (oldStyle &amp;&amp; !areCursorsEqual(oldStyle, &amp;style()))
</span><span class="cx">         frame().eventHandler().scheduleCursorUpdate();
</span><ins>+#endif
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RenderElement::insertedIntoTree()
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderEmbeddedObjectcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderEmbeddedObject.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderEmbeddedObject.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderEmbeddedObject.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -134,10 +134,16 @@
</span><span class="cx"> 
</span><span class="cx"> bool RenderEmbeddedObject::allowsAcceleratedCompositing() const
</span><span class="cx"> {
</span><ins>+#if PLATFORM(IOS)
+    // The timing of layer creation is different on the phone, since the plugin can only be manipulated from the main thread.
+    return widget() &amp;&amp; widget()-&gt;isPluginViewBase() &amp;&amp; toPluginViewBase(widget())-&gt;willProvidePluginLayer();
+#else
</ins><span class="cx">     return widget() &amp;&amp; widget()-&gt;isPluginViewBase() &amp;&amp; toPluginViewBase(widget())-&gt;platformLayer();
</span><ins>+#endif
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if !PLATFORM(IOS)
</ins><span class="cx"> static String unavailablePluginReplacementText(RenderEmbeddedObject::PluginUnavailabilityReason pluginUnavailabilityReason)
</span><span class="cx"> {
</span><span class="cx">     switch (pluginUnavailabilityReason) {
</span><span class="lines">@@ -154,6 +160,7 @@
</span><span class="cx">     ASSERT_NOT_REACHED();
</span><span class="cx">     return String();
</span><span class="cx"> }
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx"> static bool shouldUnavailablePluginMessageBeButton(Document&amp; document, RenderEmbeddedObject::PluginUnavailabilityReason pluginUnavailabilityReason)
</span><span class="cx"> {
</span><span class="lines">@@ -163,11 +170,19 @@
</span><span class="cx"> 
</span><span class="cx"> void RenderEmbeddedObject::setPluginUnavailabilityReason(PluginUnavailabilityReason pluginUnavailabilityReason)
</span><span class="cx"> {
</span><ins>+#if PLATFORM(IOS)
+    UNUSED_PARAM(pluginUnavailabilityReason);
+#else
</ins><span class="cx">     setPluginUnavailabilityReasonWithDescription(pluginUnavailabilityReason, unavailablePluginReplacementText(pluginUnavailabilityReason));
</span><ins>+#endif
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RenderEmbeddedObject::setPluginUnavailabilityReasonWithDescription(PluginUnavailabilityReason pluginUnavailabilityReason, const String&amp; description)
</span><span class="cx"> {
</span><ins>+#if PLATFORM(IOS)
+    UNUSED_PARAM(pluginUnavailabilityReason);
+    UNUSED_PARAM(description);
+#else
</ins><span class="cx">     ASSERT(!m_isPluginUnavailable);
</span><span class="cx">     m_isPluginUnavailable = true;
</span><span class="cx">     m_pluginUnavailabilityReason = pluginUnavailabilityReason;
</span><span class="lines">@@ -176,6 +191,7 @@
</span><span class="cx">         m_unavailablePluginReplacementText = unavailablePluginReplacementText(pluginUnavailabilityReason);
</span><span class="cx">     else
</span><span class="cx">         m_unavailablePluginReplacementText = description;
</span><ins>+#endif
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RenderEmbeddedObject::setUnavailablePluginIndicatorIsPressed(bool pressed)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderFileUploadControlcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderFileUploadControl.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderFileUploadControl.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderFileUploadControl.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -37,15 +37,25 @@
</span><span class="cx"> #include &quot;VisiblePosition.h&quot;
</span><span class="cx"> #include &lt;math.h&gt;
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+#include &quot;StringTruncator.h&quot;
+#endif
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> using namespace HTMLNames;
</span><span class="cx"> 
</span><span class="cx"> const int afterButtonSpacing = 4;
</span><ins>+#if !PLATFORM(IOS)
</ins><span class="cx"> const int iconHeight = 16;
</span><span class="cx"> const int iconWidth = 16;
</span><span class="cx"> const int iconFilenameSpacing = 2;
</span><span class="cx"> const int defaultWidthNumChars = 34;
</span><ins>+#else
+// On iOS the icon height matches the button height, to maximize the icon size.
+const int iconFilenameSpacing = afterButtonSpacing;
+const int defaultWidthNumChars = 38;
+#endif
</ins><span class="cx"> const int buttonShadowHeight = 2;
</span><span class="cx"> 
</span><span class="cx"> RenderFileUploadControl::RenderFileUploadControl(HTMLInputElement&amp; input, PassRef&lt;RenderStyle&gt; style)
</span><span class="lines">@@ -93,8 +103,18 @@
</span><span class="cx">     return (node &amp;&amp; node-&gt;renderBox()) ? node-&gt;renderBox()-&gt;pixelSnappedWidth() : 0;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+static int nodeHeight(Node* node)
+{
+    return (node &amp;&amp; node-&gt;renderBox()) ? node-&gt;renderBox()-&gt;pixelSnappedHeight() : 0;
+}
+#endif
+
</ins><span class="cx"> int RenderFileUploadControl::maxFilenameWidth() const
</span><span class="cx"> {
</span><ins>+#if PLATFORM(IOS)
+    int iconWidth = nodeHeight(uploadButton());
+#endif
</ins><span class="cx">     return std::max(0, contentBoxRect().pixelSnappedWidth() - nodeWidth(uploadButton()) - afterButtonSpacing
</span><span class="cx">         - (inputElement().icon() ? iconWidth + iconFilenameSpacing : 0));
</span><span class="cx"> }
</span><span class="lines">@@ -121,6 +141,10 @@
</span><span class="cx">         TextRun textRun = constructTextRun(this, font, displayedFilename, style(), TextRun::AllowTrailingExpansion, RespectDirection | RespectDirectionOverride);
</span><span class="cx">         textRun.disableRoundingHacks();
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+        int iconHeight = nodeHeight(uploadButton());
+        int iconWidth = iconHeight;
+#endif
</ins><span class="cx">         // Determine where the filename should be placed
</span><span class="cx">         LayoutUnit contentLeft = paintOffset.x() + borderLeft() + paddingLeft();
</span><span class="cx">         HTMLInputElement* button = uploadButton();
</span><span class="lines">@@ -158,8 +182,17 @@
</span><span class="cx">             else
</span><span class="cx">                 iconX = contentLeft + contentWidth() - buttonWidth - afterButtonSpacing - iconWidth;
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+            if (RenderButton* buttonRenderer = toRenderButton(button-&gt;renderer())) {
+                // Draw the file icon and decorations.
+                IntRect iconRect(iconX, iconY, iconWidth, iconHeight);
+                RenderTheme::FileUploadDecorations decorationsType = inputElement().files()-&gt;length() == 1 ? RenderTheme::SingleFile : RenderTheme::MultipleFiles;
+                theme()-&gt;paintFileUploadIconDecorations(this, buttonRenderer, paintInfo, iconRect, inputElement().icon(), decorationsType);
+            }
+#else
</ins><span class="cx">             // Draw the file icon
</span><span class="cx">             inputElement().icon()-&gt;paint(paintInfo.context, IntRect(roundToInt(iconX), roundToInt(iconY), iconWidth, iconHeight));
</span><ins>+#endif
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -241,6 +274,10 @@
</span><span class="cx"> String RenderFileUploadControl::fileTextValue() const
</span><span class="cx"> {
</span><span class="cx">     ASSERT(inputElement().files());
</span><ins>+#if PLATFORM(IOS)
+    if (inputElement().files()-&gt;length())
+        return StringTruncator::rightTruncate(inputElement().displayString(), maxFilenameWidth(), style().font(), StringTruncator::EnableRoundingHacks);
+#endif
</ins><span class="cx">     return theme()-&gt;fileListNameForWidth(inputElement().files(), style().font(), maxFilenameWidth(), inputElement().multiple());
</span><span class="cx"> }
</span><span class="cx">     
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderFrameSetcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderFrameSet.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderFrameSet.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderFrameSet.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -514,7 +514,12 @@
</span><span class="cx">             if (width != child-&gt;width() || height != child-&gt;height()) {
</span><span class="cx">                 child-&gt;setWidth(width);
</span><span class="cx">                 child-&gt;setHeight(height);
</span><ins>+#if PLATFORM(IOS)
+                // FIXME: Is this iOS-specific?
+                child-&gt;setNeedsLayout(MarkOnlyThis);
+#else
</ins><span class="cx">                 child-&gt;setNeedsLayout();
</span><ins>+#endif
</ins><span class="cx">                 child-&gt;layout();
</span><span class="cx">             }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderIFrameh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderIFrame.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderIFrame.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderIFrame.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -54,7 +54,12 @@
</span><span class="cx"> 
</span><span class="cx">     virtual bool isRenderIFrame() const OVERRIDE { return true; }
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+    // FIXME: Do we still need this workaround to avoid breaking layout tests?
+    virtual const char* renderName() const OVERRIDE { return &quot;RenderPartObject&quot;; }
+#else
</ins><span class="cx">     virtual const char* renderName() const OVERRIDE { return &quot;RenderIFrame&quot;; }
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx">     virtual bool requiresLayer() const OVERRIDE;
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderImagecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderImage.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderImage.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderImage.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -47,8 +47,71 @@
</span><span class="cx"> #include &quot;SVGImage.h&quot;
</span><span class="cx"> #include &lt;wtf/StackStats.h&gt;
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+#include &quot;LogicalSelectionOffsetCaches.h&quot;
+#include &quot;SelectionRect.h&quot;
+#endif
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+// FIXME: This doesn't behave correctly for floating or positioned images, but WebCore doesn't handle those well
+// during selection creation yet anyway.
+// FIXME: We can't tell whether or not we contain the start or end of the selected Range using only the offsets
+// of the start and end, we need to know the whole Position.
+void RenderImage::collectSelectionRects(Vector&lt;SelectionRect&gt;&amp; rects, unsigned, unsigned)
+{
+    RenderBlock* containingBlock = this-&gt;containingBlock();
+
+    IntRect imageRect;
+    // FIXME: It doesn't make sense to package line bounds into SelectionRects. We should find
+    // the right and left extent of the selection once for the entire selected Range, perhaps
+    // using the Range's common ancestor.
+    IntRect lineExtentRect;
+    bool isFirstOnLine = false;
+    bool isLastOnLine = false;
+
+    InlineBox* inlineBox = inlineBoxWrapper();
+    if (!inlineBox) {
+        // This is a block image.
+        imageRect = IntRect(0, 0, width(), height());
+        isFirstOnLine = true;
+        isLastOnLine = true;
+        lineExtentRect = imageRect;
+        if (containingBlock-&gt;isHorizontalWritingMode()) {
+            lineExtentRect.setX(containingBlock-&gt;x());
+            lineExtentRect.setWidth(containingBlock-&gt;width());
+        } else {
+            lineExtentRect.setY(containingBlock-&gt;y());
+            lineExtentRect.setHeight(containingBlock-&gt;height());
+        }
+    } else {
+        LayoutUnit selectionTop = !containingBlock-&gt;style().isFlippedBlocksWritingMode() ? inlineBox-&gt;root().selectionTop() - logicalTop() : logicalBottom() - inlineBox-&gt;root().selectionBottom();
+        imageRect = IntRect(0,  selectionTop, logicalWidth(), inlineBox-&gt;root().selectionHeight());
+        isFirstOnLine = !inlineBox-&gt;previousOnLineExists();
+        isLastOnLine = !inlineBox-&gt;nextOnLineExists();
+        LogicalSelectionOffsetCaches cache(*containingBlock);
+        LayoutUnit leftOffset = containingBlock-&gt;logicalLeftSelectionOffset(*containingBlock, inlineBox-&gt;logicalTop(), cache);
+        LayoutUnit rightOffset = containingBlock-&gt;logicalRightSelectionOffset(*containingBlock, inlineBox-&gt;logicalTop(), cache);
+        lineExtentRect = IntRect(leftOffset - logicalLeft(), imageRect.y(), rightOffset - leftOffset, imageRect.height());
+        if (!inlineBox-&gt;isHorizontal()) {
+            imageRect = imageRect.transposedRect();
+            lineExtentRect = lineExtentRect.transposedRect();
+        }
+    }
+
+    bool isFixed = false;
+    IntRect absoluteBounds = localToAbsoluteQuad(FloatRect(imageRect), false, &amp;isFixed).enclosingBoundingBox();
+    IntRect lineExtentBounds = localToAbsoluteQuad(FloatRect(lineExtentRect)).enclosingBoundingBox();
+    if (!containingBlock-&gt;isHorizontalWritingMode())
+        lineExtentBounds = lineExtentBounds.transposedRect();
+
+    // FIXME: We should consider either making SelectionRect a struct or better organize its optional fields into
+    // an auxiliary struct to simplify its initialization.
+    rects.append(SelectionRect(absoluteBounds, containingBlock-&gt;style().direction(), lineExtentBounds.x(), lineExtentBounds.maxX(), lineExtentBounds.maxY(), 0, false /* line break */, isFirstOnLine, isLastOnLine, false /* contains start */, false /* contains end */, containingBlock-&gt;style().isHorizontalWritingMode(), isFixed, false /* ruby text */, columnNumberForOffset(absoluteBounds.x())));
+}
+#endif
+
</ins><span class="cx"> using namespace HTMLNames;
</span><span class="cx"> 
</span><span class="cx"> RenderImage::RenderImage(Element&amp; element, PassRef&lt;RenderStyle&gt; style)
</span><span class="lines">@@ -462,6 +525,9 @@
</span><span class="cx">     
</span><span class="cx"> void RenderImage::paintAreaElementFocusRing(PaintInfo&amp; paintInfo)
</span><span class="cx"> {
</span><ins>+#if PLATFORM(IOS)
+    UNUSED_PARAM(paintInfo);
+#else
</ins><span class="cx">     if (document().printing() || !frame().selection().isFocusedAndActive())
</span><span class="cx">         return;
</span><span class="cx">     
</span><span class="lines">@@ -493,6 +559,7 @@
</span><span class="cx">     paintInfo.context-&gt;drawFocusRing(path, outlineWidth,
</span><span class="cx">         areaElementStyle-&gt;outlineOffset(),
</span><span class="cx">         areaElementStyle-&gt;visitedDependentColor(CSSPropertyOutlineColor));
</span><ins>+#endif
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RenderImage::areaElementFocusChanged(HTMLAreaElement* element)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderImageh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderImage.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderImage.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderImage.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -56,6 +56,10 @@
</span><span class="cx">     void areaElementFocusChanged(HTMLAreaElement*);
</span><span class="cx"> 
</span><span class="cx">     void highQualityRepaintTimerFired(Timer&lt;RenderImage&gt;*);
</span><ins>+    
+#if PLATFORM(IOS)
+    virtual void collectSelectionRects(Vector&lt;SelectionRect&gt;&amp;, unsigned, unsigned) OVERRIDE;
+#endif
</ins><span class="cx"> 
</span><span class="cx">     void setIsGeneratedContent(bool generated = true) { m_isGeneratedContent = generated; }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderImageResourcecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderImageResource.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderImageResource.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderImageResource.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -91,7 +91,7 @@
</span><span class="cx"> 
</span><span class="cx"> PassRefPtr&lt;Image&gt; RenderImageResource::image(int, int) const
</span><span class="cx"> {
</span><del>-    return m_cachedImage ? m_cachedImage-&gt;imageForRenderer(m_renderer) : nullImage();
</del><ins>+    return m_cachedImage ? m_cachedImage-&gt;imageForRenderer(m_renderer) : Image::nullImage();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool RenderImageResource::errorOccurred() const
</span><span class="lines">@@ -106,16 +106,6 @@
</span><span class="cx">         m_cachedImage-&gt;setContainerSizeForRenderer(m_renderer, imageContainerSize, m_renderer-&gt;style().effectiveZoom());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-Image* RenderImageResource::nullImage()
-{
-    return Image::nullImage();
-}
-
-bool RenderImageResource::usesImageContainerSize() const
-{
-    return m_cachedImage ? m_cachedImage-&gt;usesImageContainerSize() : false;
-}
-
</del><span class="cx"> bool RenderImageResource::imageHasRelativeWidth() const
</span><span class="cx"> {
</span><span class="cx">     return m_cachedImage ? m_cachedImage-&gt;imageHasRelativeWidth() : false;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderImageResourceh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderImageResource.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderImageResource.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderImageResource.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -27,12 +27,12 @@
</span><span class="cx"> #define RenderImageResource_h
</span><span class="cx"> 
</span><span class="cx"> #include &quot;CachedResourceHandle.h&quot;
</span><del>-#include &quot;Image.h&quot;
-#include &quot;LayoutSize.h&quot;
</del><span class="cx"> #include &quot;StyleImage.h&quot;
</span><ins>+#include &lt;wtf/PassOwnPtr.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><ins>+class CachedImage;
</ins><span class="cx"> class RenderElement;
</span><span class="cx"> 
</span><span class="cx"> class RenderImageResource {
</span><span class="lines">@@ -58,7 +58,6 @@
</span><span class="cx">     virtual bool errorOccurred() const;
</span><span class="cx"> 
</span><span class="cx">     virtual void setContainerSizeForRenderer(const IntSize&amp;);
</span><del>-    virtual bool usesImageContainerSize() const;
</del><span class="cx">     virtual bool imageHasRelativeWidth() const;
</span><span class="cx">     virtual bool imageHasRelativeHeight() const;
</span><span class="cx"> 
</span><span class="lines">@@ -69,11 +68,9 @@
</span><span class="cx"> 
</span><span class="cx"> protected:
</span><span class="cx">     RenderImageResource();
</span><ins>+
</ins><span class="cx">     RenderElement* m_renderer;
</span><span class="cx">     CachedResourceHandle&lt;CachedImage&gt; m_cachedImage;
</span><del>-
-private:
-    static Image* nullImage();
</del><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderImageResourceStyleImageh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderImageResourceStyleImage.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderImageResourceStyleImage.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderImageResourceStyleImage.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -52,7 +52,6 @@
</span><span class="cx">     virtual bool errorOccurred() const OVERRIDE { return m_styleImage-&gt;errorOccurred(); }
</span><span class="cx"> 
</span><span class="cx">     virtual void setContainerSizeForRenderer(const IntSize&amp;) OVERRIDE;
</span><del>-    virtual bool usesImageContainerSize() const OVERRIDE { return m_styleImage-&gt;usesImageContainerSize(); }
</del><span class="cx">     virtual bool imageHasRelativeWidth() const OVERRIDE { return m_styleImage-&gt;imageHasRelativeWidth(); }
</span><span class="cx">     virtual bool imageHasRelativeHeight() const OVERRIDE { return m_styleImage-&gt;imageHasRelativeHeight(); }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderInlinecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderInline.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderInline.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderInline.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -697,6 +697,14 @@
</span><span class="cx">         continuation-&gt;absoluteQuads(quads, wasFixed);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+void RenderInline::absoluteQuadsForSelection(Vector&lt;FloatQuad&gt;&amp; quads) const
+{
+    AbsoluteQuadsGeneratorContext context(this, quads);
+    generateLineBoxRects(context);
+}
+#endif
+
</ins><span class="cx"> LayoutUnit RenderInline::offsetLeft() const
</span><span class="cx"> {
</span><span class="cx">     LayoutPoint topLeft;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderInlineh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderInline.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderInline.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderInline.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -68,6 +68,10 @@
</span><span class="cx">     InlineBox* firstLineBoxIncludingCulling() const { return alwaysCreateLineBoxes() ? firstLineBox() : culledInlineFirstLineBox(); }
</span><span class="cx">     InlineBox* lastLineBoxIncludingCulling() const { return alwaysCreateLineBoxes() ? lastLineBox() : culledInlineLastLineBox(); }
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+    virtual void absoluteQuadsForSelection(Vector&lt;FloatQuad&gt;&amp; quads) const OVERRIDE;
+#endif
+
</ins><span class="cx">     virtual RenderBoxModelObject* virtualContinuation() const OVERRIDE FINAL { return continuation(); }
</span><span class="cx">     RenderInline* inlineElementContinuation() const;
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderLayercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderLayer.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderLayer.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderLayer.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -182,6 +182,12 @@
</span><span class="cx">     , m_indirectCompositingReason(NoIndirectCompositingReason)
</span><span class="cx">     , m_viewportConstrainedNotCompositedReason(NoNotCompositedReason)
</span><span class="cx"> #endif
</span><ins>+#if PLATFORM(IOS)
+    , m_adjustForIOSCaretWhenScrolling(false)
+    , m_registeredAsTouchEventListenerForScrolling(false)
+    , m_inUserScroll(false)
+    , m_requiresScrollBoundsOriginUpdate(false)
+#endif
</ins><span class="cx">     , m_containsDirtyOverlayScrollbars(false)
</span><span class="cx">     , m_updatingMarqueePosition(false)
</span><span class="cx"> #if !ASSERT_DISABLED
</span><span class="lines">@@ -237,6 +243,9 @@
</span><span class="cx">     renderer().view().frameView().removeScrollableArea(this);
</span><span class="cx"> 
</span><span class="cx">     if (!renderer().documentBeingDestroyed()) {
</span><ins>+#if PLATFORM(IOS)
+        unregisterAsTouchEventListenerForScrolling();
+#endif
</ins><span class="cx">         if (Element* element = renderer().element())
</span><span class="cx">             element-&gt;setSavedLayerScrollOffset(m_scrollOffset);
</span><span class="cx">     }
</span><span class="lines">@@ -1767,6 +1776,14 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+void RenderLayer::willBeDestroyed()
+{
+    if (RenderLayerBacking* layerBacking = backing())
+        layerBacking-&gt;layerWillBeDestroyed();
+}
+#endif
+
</ins><span class="cx"> void RenderLayer::addChild(RenderLayer* child, RenderLayer* beforeChild)
</span><span class="cx"> {
</span><span class="cx">     RenderLayer* prevSibling = beforeChild ? beforeChild-&gt;previousSibling() : lastChild();
</span><span class="lines">@@ -2084,6 +2101,55 @@
</span><span class="cx">     rect.move(-delta.x(), -delta.y());
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+bool RenderLayer::hasAcceleratedTouchScrolling() const
+{
+#if ENABLE(ACCELERATED_OVERFLOW_SCROLLING)
+    if (!scrollsOverflow())
+        return false;
+    
+    Settings* settings = renderer().document().settings();
+
+    // FIXME: settings should not be null at this point. If you find a reliable way to hit this assertion, please file a bug.
+    // See &lt;rdar://problem/10266101&gt;.
+    ASSERT(settings);
+
+    return renderer().style().useTouchOverflowScrolling() || (settings &amp;&amp; settings-&gt;alwaysUseAcceleratedOverflowScroll());
+#else
+    return false;
+#endif
+}
+
+#if PLATFORM(IOS) &amp;&amp; ENABLE(TOUCH_EVENTS)
+bool RenderLayer::handleTouchEvent(const PlatformTouchEvent&amp; touchEvent)
+{
+    // If we have accelerated scrolling, let the scrolling be handled outside of WebKit.
+    if (hasAcceleratedTouchScrolling())
+        return false;
+
+    return ScrollableArea::handleTouchEvent(touchEvent);
+}
+#endif
+
+void RenderLayer::registerAsTouchEventListenerForScrolling()
+{
+    if (!renderer().element() || m_registeredAsTouchEventListenerForScrolling)
+        return;
+    
+    renderer().document().addTouchEventListener(renderer().element());
+    m_registeredAsTouchEventListenerForScrolling = true;
+}
+
+void RenderLayer::unregisterAsTouchEventListenerForScrolling()
+{
+    if (!renderer().element() || !m_registeredAsTouchEventListenerForScrolling)
+        return;
+
+    renderer().document().removeTouchEventListener(renderer().element());
+    m_registeredAsTouchEventListenerForScrolling = false;
+}
+#endif // PLATFORM(IOS)
+
</ins><span class="cx"> #if USE(ACCELERATED_COMPOSITING)
</span><span class="cx"> 
</span><span class="cx"> bool RenderLayer::usesCompositedScrolling() const
</span><span class="lines">@@ -2107,9 +2173,11 @@
</span><span class="cx">             &amp;&amp; canBeStackingContainer()
</span><span class="cx">             &amp;&amp; !hasOutOfFlowPositionedDescendant();
</span><span class="cx"> 
</span><del>-#if ENABLE(ACCELERATED_OVERFLOW_SCROLLING)
</del><ins>+#if !PLATFORM(IOS) &amp;&amp; ENABLE(ACCELERATED_OVERFLOW_SCROLLING)
</ins><span class="cx">         m_needsCompositedScrolling = forceUseCompositedScrolling || renderer().style().useTouchOverflowScrolling();
</span><span class="cx"> #else
</span><ins>+        // On iOS we don't want to opt into accelerated composited scrolling, which creates scroll bar
+        // layers in WebCore, because we use UIKit to composite our scroll bars.
</ins><span class="cx">         m_needsCompositedScrolling = forceUseCompositedScrolling;
</span><span class="cx"> #endif
</span><span class="cx">         // We gather a boolean value for use with Google UMA histograms to
</span><span class="lines">@@ -2241,6 +2309,17 @@
</span><span class="cx">         // Ensure that the dimensions will be computed if they need to be (for overflow:hidden blocks).
</span><span class="cx">         if (m_scrollDimensionsDirty)
</span><span class="cx">             computeScrollDimensions();
</span><ins>+#if PLATFORM(IOS)
+        if (adjustForIOSCaretWhenScrolling()) {
+            int maxX = scrollWidth() - box-&gt;clientWidth();
+            if (x &gt; maxX - caretWidth) {
+                x += caretWidth;
+                if (x &lt;= caretWidth)
+                    x = 0;
+            } else if (x &lt; m_scrollOffset.width() - caretWidth)
+                x -= caretWidth;
+        }
+#endif
</ins><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     // FIXME: Eventually, we will want to perform a blit.  For now never
</span><span class="lines">@@ -2249,8 +2328,13 @@
</span><span class="cx">     // is either occluded by another layer or clipped by an enclosing
</span><span class="cx">     // layer or contains fixed backgrounds, etc.).
</span><span class="cx">     IntSize newScrollOffset = IntSize(x - scrollOrigin().x(), y - scrollOrigin().y());
</span><del>-    if (m_scrollOffset == newScrollOffset)
</del><ins>+    if (m_scrollOffset == newScrollOffset) {
+#if PLATFORM(IOS)
+        if (m_requiresScrollBoundsOriginUpdate)
+            updateCompositingLayersAfterScroll();
+#endif
</ins><span class="cx">         return;
</span><ins>+}
</ins><span class="cx">     m_scrollOffset = newScrollOffset;
</span><span class="cx"> 
</span><span class="cx">     InspectorInstrumentation::willScrollLayer(&amp;renderer().frame());
</span><span class="lines">@@ -2276,6 +2360,10 @@
</span><span class="cx">             // when that completes.
</span><span class="cx">             updateCompositingLayersAfterScroll();
</span><span class="cx">         }
</span><ins>+
+#if PLATFORM(IOS) &amp;&amp; ENABLE(TOUCH_EVENTS)
+        renderer().document().dirtyTouchEventRects();
+#endif
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     Frame&amp; frame = renderer().frame();
</span><span class="lines">@@ -2296,7 +2384,11 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     // Just schedule a full repaint of our object.
</span><ins>+#if PLATFORM(IOS)
+    if (!hasAcceleratedTouchScrolling())
+#else
</ins><span class="cx">     if (requiresRepaint)
</span><ins>+#endif
</ins><span class="cx">         renderer().repaintUsingContainer(repaintContainer, pixelSnappedIntRect(m_repaintRect));
</span><span class="cx"> 
</span><span class="cx">     // Schedule the scroll DOM event.
</span><span class="lines">@@ -2386,10 +2478,15 @@
</span><span class="cx">                     parentLayer = 0;
</span><span class="cx">             }
</span><span class="cx">         } else {
</span><ins>+#if !PLATFORM(IOS)
</ins><span class="cx">             LayoutRect viewRect = frameView.visibleContentRect();
</span><span class="cx">             LayoutRect visibleRectRelativeToDocument = viewRect;
</span><span class="cx">             IntSize scrollOffsetRelativeToDocument = frameView.scrollOffsetRelativeToDocument();
</span><span class="cx">             visibleRectRelativeToDocument.setLocation(IntPoint(scrollOffsetRelativeToDocument.width(), scrollOffsetRelativeToDocument.height()));
</span><ins>+#else
+            LayoutRect viewRect = frameView.actualVisibleContentRect();
+            LayoutRect visibleRectRelativeToDocument = viewRect;
+#endif
</ins><span class="cx"> 
</span><span class="cx">             LayoutRect r = getRectToExpose(viewRect, visibleRectRelativeToDocument, rect, alignX, alignY);
</span><span class="cx">                 
</span><span class="lines">@@ -2624,6 +2721,13 @@
</span><span class="cx">     if (scrollbarInclusion == IncludeScrollbars) {
</span><span class="cx">         verticalScrollbarWidth = (verticalScrollbar() &amp;&amp; !verticalScrollbar()-&gt;isOverlayScrollbar()) ? verticalScrollbar()-&gt;width() : 0;
</span><span class="cx">         horizontalScrollbarHeight = (horizontalScrollbar() &amp;&amp; !horizontalScrollbar()-&gt;isOverlayScrollbar()) ? horizontalScrollbar()-&gt;height() : 0;
</span><ins>+
+#if PLATFORM(IOS)
+        if (hasAcceleratedTouchScrolling()) {
+            verticalScrollbarWidth = 0;
+            horizontalScrollbarHeight = 0;
+        }
+#endif
</ins><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     return IntRect(IntPoint(scrollXOffset(), scrollYOffset()),
</span><span class="lines">@@ -2761,6 +2865,27 @@
</span><span class="cx">     return renderer().view().frameView().shouldSuspendScrollAnimations();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+void RenderLayer::didStartScroll()
+{
+    if (Page* page = renderer().frame().page())
+        page-&gt;chrome().client().didStartOverflowScroll();
+}
+
+void RenderLayer::didEndScroll()
+{
+    if (Page* page = renderer().frame().page())
+        page-&gt;chrome().client().didEndOverflowScroll();
+}
+    
+void RenderLayer::didUpdateScroll()
+{
+    // Send this notification when we scroll, since this is how we keep selection updated.
+    if (Page* page = renderer().frame().page())
+        page-&gt;chrome().client().didLayout(ChromeClient::Scroll);
+}
+#endif
+
</ins><span class="cx"> IntPoint RenderLayer::lastKnownMousePosition() const
</span><span class="cx"> {
</span><span class="cx">     return renderer().frame().eventHandler().lastKnownMousePosition();
</span><span class="lines">@@ -2832,6 +2957,12 @@
</span><span class="cx"> 
</span><span class="cx"> void RenderLayer::invalidateScrollbarRect(Scrollbar* scrollbar, const IntRect&amp; rect)
</span><span class="cx"> {
</span><ins>+#if PLATFORM(IOS)
+    // No need to invalidate scrollbars if we're using accelerated scrolling.
+    if (hasAcceleratedTouchScrolling())
+        return;
+#endif
+
</ins><span class="cx"> #if USE(ACCELERATED_COMPOSITING)
</span><span class="cx">     if (scrollbar == m_vBar.get()) {
</span><span class="cx">         if (GraphicsLayer* layer = layerForVerticalScrollbar()) {
</span><span class="lines">@@ -2863,6 +2994,12 @@
</span><span class="cx"> 
</span><span class="cx"> void RenderLayer::invalidateScrollCornerRect(const IntRect&amp; rect)
</span><span class="cx"> {
</span><ins>+#if PLATFORM(IOS)
+    // No need to invalidate the scroll corner if we're using accelerated scrolling.
+    if (hasAcceleratedTouchScrolling())
+        return;
+#endif
+
</ins><span class="cx"> #if USE(ACCELERATED_COMPOSITING)
</span><span class="cx">     if (GraphicsLayer* layer = layerForScrollCorner()) {
</span><span class="cx">         layer-&gt;setNeedsDisplayInRect(rect);
</span><span class="lines">@@ -2984,6 +3121,12 @@
</span><span class="cx"> {
</span><span class="cx">     if (!m_vBar || (m_vBar-&gt;isOverlayScrollbar() &amp;&amp; (relevancy == IgnoreOverlayScrollbarSize || !m_vBar-&gt;shouldParticipateInHitTesting())))
</span><span class="cx">         return 0;
</span><ins>+
+#if PLATFORM(IOS)
+    if (hasAcceleratedTouchScrolling()) 
+        return 0;
+#endif
+
</ins><span class="cx">     return m_vBar-&gt;width();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -2991,6 +3134,12 @@
</span><span class="cx"> {
</span><span class="cx">     if (!m_hBar || (m_hBar-&gt;isOverlayScrollbar() &amp;&amp; (relevancy == IgnoreOverlayScrollbarSize || !m_hBar-&gt;shouldParticipateInHitTesting())))
</span><span class="cx">         return 0;
</span><ins>+
+#if PLATFORM(IOS)
+    if (hasAcceleratedTouchScrolling()) 
+        return 0;
+#endif
+
</ins><span class="cx">     return m_hBar-&gt;height();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -3219,8 +3368,18 @@
</span><span class="cx">         // Layout may cause us to be at an invalid scroll position. In this case we need
</span><span class="cx">         // to pull our scroll offsets back to the max (or push them up to the min).
</span><span class="cx">         IntSize clampedScrollOffset = clampScrollOffset(scrollOffset());
</span><ins>+#if PLATFORM(IOS)
+        // FIXME: This looks wrong. The caret adjust mode should only be enabled on editing related entry points.
+        // This code was added to fix an issue where the text insertion point would always be drawn on the right edge
+        // of a text field whose content overflowed its bounds. See &lt;rdar://problem/15579797&gt; for more details.
+        setAdjustForIOSCaretWhenScrolling(true);
+#endif
</ins><span class="cx">         if (clampedScrollOffset != scrollOffset())
</span><span class="cx">             scrollToOffset(clampedScrollOffset);
</span><ins>+
+#if PLATFORM(IOS)
+        setAdjustForIOSCaretWhenScrolling(false);
+#endif
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     updateScrollbarsAfterLayout();
</span><span class="lines">@@ -3260,6 +3419,12 @@
</span><span class="cx">     if (!renderer().hasOverflowClip())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+    // Don't render (custom) scrollbars if we have accelerated scrolling.
+    if (hasAcceleratedTouchScrolling())
+        return;
+#endif
+
</ins><span class="cx">     // Overlay scrollbars paint in a second pass through the layer tree so that they will paint
</span><span class="cx">     // on top of everything else. If this is the normal painting pass, paintingOverlayControls
</span><span class="cx">     // will be false, and we should just tell the root layer that there are overlay scrollbars
</span><span class="lines">@@ -5243,7 +5408,11 @@
</span><span class="cx">         clipRects.setOverflowClipRect(clipRects.posClipRect());
</span><span class="cx">     
</span><span class="cx">     // Update the clip rects that will be passed to child layers.
</span><ins>+#if PLATFORM(IOS)
+    if (renderer().hasClipOrOverflowClip() &amp;&amp; (clipRectsContext.respectOverflowClip == RespectOverflowClip || this != clipRectsContext.rootLayer)) {
+#else
</ins><span class="cx">     if ((renderer().hasOverflowClip() &amp;&amp; (clipRectsContext.respectOverflowClip == RespectOverflowClip || this != clipRectsContext.rootLayer)) || renderer().hasClip()) {
</span><ins>+#endif
</ins><span class="cx">         // This layer establishes a clip of some kind.
</span><span class="cx"> 
</span><span class="cx">         // This offset cannot use convertToLayerCoords, because sometimes our rootLayer may be across
</span><span class="lines">@@ -6183,6 +6352,9 @@
</span><span class="cx"> #if ENABLE(CSS_FILTERS)
</span><span class="cx">         &amp;&amp; !renderer().hasFilter()
</span><span class="cx"> #endif
</span><ins>+#if PLATFORM(IOS)
+            &amp;&amp; !hasAcceleratedTouchScrolling()
+#endif
</ins><span class="cx"> #if ENABLE(CSS_COMPOSITING)
</span><span class="cx">         &amp;&amp; !renderer().hasBlendMode()
</span><span class="cx"> #endif
</span><span class="lines">@@ -6397,7 +6569,7 @@
</span><span class="cx"> 
</span><span class="cx"> #endif // USE(ACCELERATED_COMPOSITING)
</span><span class="cx"> 
</span><del>-void RenderLayer::styleChanged(StyleDifference, const RenderStyle* oldStyle)
</del><ins>+void RenderLayer::styleChanged(StyleDifference diff, const RenderStyle* oldStyle)
</ins><span class="cx"> {
</span><span class="cx">     bool isNormalFlowOnly = shouldBeNormalFlowOnly();
</span><span class="cx">     if (isNormalFlowOnly != m_isNormalFlowOnly) {
</span><span class="lines">@@ -6477,6 +6649,13 @@
</span><span class="cx">     }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS) &amp;&amp; ENABLE(TOUCH_EVENTS)
+    if (diff == StyleDifferenceRecompositeLayer || diff &gt;= StyleDifferenceLayoutPositionedMovementOnly)
+        renderer().document().dirtyTouchEventRects();
+#else
+    UNUSED_PARAM(diff);
+#endif
+
</ins><span class="cx"> #if ENABLE(CSS_FILTERS)
</span><span class="cx">     updateOrRemoveFilterEffectRenderer();
</span><span class="cx"> #if USE(ACCELERATED_COMPOSITING)
</span><span class="lines">@@ -6510,6 +6689,18 @@
</span><span class="cx">         updateNeedsCompositedScrolling();
</span><span class="cx"> #endif
</span><span class="cx">     }
</span><ins>+
+#if PLATFORM(IOS)
+    if (addedOrRemoved) {
+        if (isScrollable &amp;&amp; !hasAcceleratedTouchScrolling())
+            registerAsTouchEventListenerForScrolling();
+        else {
+            // We only need the touch listener for unaccelerated overflow scrolling, so if we became
+            // accelerated, remove ourselves as a touch event listener.
+            unregisterAsTouchEventListenerForScrolling();
+        }
+    }
+#endif
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RenderLayer::updateScrollCornerStyle()
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderLayerh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderLayer.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderLayer.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderLayer.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -320,6 +320,10 @@
</span><span class="cx">     explicit RenderLayer(RenderLayerModelObject&amp;);
</span><span class="cx">     virtual ~RenderLayer();
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+    // Called before the renderer's widget (if any) has been nulled out.
+    void willBeDestroyed();
+#endif
</ins><span class="cx">     String name() const;
</span><span class="cx"> 
</span><span class="cx">     RenderLayerModelObject&amp; renderer() const { return m_renderer; }
</span><span class="lines">@@ -420,6 +424,27 @@
</span><span class="cx">     virtual Scrollbar* verticalScrollbar() const OVERRIDE { return m_vBar.get(); }
</span><span class="cx">     virtual ScrollableArea* enclosingScrollableArea() const OVERRIDE;
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+#if ENABLE(TOUCH_EVENTS)
+    virtual bool handleTouchEvent(const PlatformTouchEvent&amp;) OVERRIDE;
+    virtual bool isTouchScrollable() const OVERRIDE { return true; }
+#endif
+    virtual bool isOverflowScroll() const OVERRIDE { return true; }
+    
+    virtual void didStartScroll() OVERRIDE;
+    virtual void didEndScroll() OVERRIDE;
+    virtual void didUpdateScroll() OVERRIDE;
+    virtual void setIsUserScroll(bool isUserScroll) OVERRIDE { m_inUserScroll = isUserScroll; }
+
+    bool isInUserScroll() const { return m_inUserScroll; }
+
+    bool requiresScrollBoundsOriginUpdate() const { return m_requiresScrollBoundsOriginUpdate; }
+    void setRequiresScrollBoundsOriginUpdate(bool requiresUpdate = true) { m_requiresScrollBoundsOriginUpdate = requiresUpdate; }
+
+    bool hasAcceleratedTouchScrolling() const;
+
+#endif
+
</ins><span class="cx">     int verticalScrollbarWidth(OverlayScrollbarSizeRelevancy = IgnoreOverlayScrollbarSize) const;
</span><span class="cx">     int horizontalScrollbarHeight(OverlayScrollbarSizeRelevancy = IgnoreOverlayScrollbarSize) const;
</span><span class="cx"> 
</span><span class="lines">@@ -728,6 +753,11 @@
</span><span class="cx">     void setStaticInlinePosition(LayoutUnit position) { m_staticInlinePosition = position; }
</span><span class="cx">     void setStaticBlockPosition(LayoutUnit position) { m_staticBlockPosition = position; }
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+    bool adjustForIOSCaretWhenScrolling() const { return m_adjustForIOSCaretWhenScrolling; }
+    void setAdjustForIOSCaretWhenScrolling(bool adjustForIOSCaretWhenScrolling) { m_adjustForIOSCaretWhenScrolling = adjustForIOSCaretWhenScrolling; }
+#endif
+
</ins><span class="cx">     bool hasTransform() const { return renderer().hasTransform(); }
</span><span class="cx">     // Note that this transform has the transform-origin baked in.
</span><span class="cx">     TransformationMatrix* transform() const { return m_transform.get(); }
</span><span class="lines">@@ -1044,6 +1074,11 @@
</span><span class="cx">     virtual IntRect scrollableAreaBoundingBox() const OVERRIDE;
</span><span class="cx">     virtual bool updatesScrollLayerPositionOnMainThread() const OVERRIDE { return true; }
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+    void registerAsTouchEventListenerForScrolling();
+    void unregisterAsTouchEventListenerForScrolling();
+#endif
+
</ins><span class="cx">     // Rectangle encompassing the scroll corner and resizer rect.
</span><span class="cx">     IntRect scrollCornerAndResizerRect() const;
</span><span class="cx"> 
</span><span class="lines">@@ -1204,6 +1239,13 @@
</span><span class="cx">     unsigned m_viewportConstrainedNotCompositedReason : 2;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+    bool m_adjustForIOSCaretWhenScrolling : 1;
+    bool m_registeredAsTouchEventListenerForScrolling : 1;
+    bool m_inUserScroll : 1;
+    bool m_requiresScrollBoundsOriginUpdate : 1;
+#endif
+
</ins><span class="cx">     bool m_containsDirtyOverlayScrollbars : 1;
</span><span class="cx">     bool m_updatingMarqueePosition : 1;
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderLayerBackingcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderLayerBacking.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderLayerBacking.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderLayerBacking.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -312,8 +312,11 @@
</span><span class="cx">         m_childContainmentLayer = createGraphicsLayer(&quot;TiledBacking Flattening Layer&quot;);
</span><span class="cx"> 
</span><span class="cx">     if (m_isMainFrameRenderViewLayer) {
</span><ins>+#if !PLATFORM(IOS)
+        // Page scale is applied above the RenderView on iOS.
</ins><span class="cx">         m_graphicsLayer-&gt;setContentsOpaque(true);
</span><span class="cx">         m_graphicsLayer-&gt;setAppliesPageScale();
</span><ins>+#endif
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(MAC) &amp;&amp; USE(CA)
</span><span class="lines">@@ -334,6 +337,18 @@
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+void RenderLayerBacking::layerWillBeDestroyed()
+{
+    RenderObject&amp; renderer = this-&gt;renderer();
+    if (renderer.isEmbeddedObject() &amp;&amp; toRenderEmbeddedObject(renderer).allowsAcceleratedCompositing()) {
+        PluginViewBase* pluginViewBase = toPluginViewBase(toRenderWidget(renderer).widget());
+        if (pluginViewBase &amp;&amp; m_graphicsLayer-&gt;contentsLayerForMedia())
+            pluginViewBase-&gt;detachPluginLayer();
+    }
+}
+#endif
+
</ins><span class="cx"> void RenderLayerBacking::destroyGraphicsLayers()
</span><span class="cx"> {
</span><span class="cx">     if (m_graphicsLayer) {
</span><span class="lines">@@ -395,27 +410,48 @@
</span><span class="cx">         || (style.transformOriginY().type() == Fixed &amp;&amp; style.transformOriginY().value());
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+// FIXME: We should merge the concept of RenderLayer::{hasAcceleratedTouchScrolling, needsCompositedScrolling}()
+// so that we can remove this iOS-specific variant.
+static bool layerOrAncestorIsTransformedOrScrolling(RenderLayer&amp; layer)
+{
+    for (RenderLayer* curr = &amp;layer; curr; curr = curr-&gt;parent()) {
+        if (curr-&gt;hasTransform() || curr-&gt;hasAcceleratedTouchScrolling())
+            return true;
+    }
+
+    return false;
+}
+#else
</ins><span class="cx"> static bool layerOrAncestorIsTransformedOrUsingCompositedScrolling(RenderLayer&amp; layer)
</span><span class="cx"> {
</span><span class="cx">     for (RenderLayer* curr = &amp;layer; curr; curr = curr-&gt;parent()) {
</span><span class="cx">         if (curr-&gt;hasTransform() || curr-&gt;needsCompositedScrolling())
</span><span class="cx">             return true;
</span><span class="cx">     }
</span><del>-    
</del><ins>+
</ins><span class="cx">     return false;
</span><span class="cx"> }
</span><del>-
</del><ins>+#endif
+    
</ins><span class="cx"> bool RenderLayerBacking::shouldClipCompositedBounds() const
</span><span class="cx"> {
</span><ins>+#if !PLATFORM(IOS)
</ins><span class="cx">     // Scrollbar layers use this layer for relative positioning, so don't clip.
</span><span class="cx">     if (layerForHorizontalScrollbar() || layerForVerticalScrollbar())
</span><span class="cx">         return false;
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx">     if (m_usingTiledCacheLayer)
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><ins>+#if !PLATFORM(IOS)
</ins><span class="cx">     if (layerOrAncestorIsTransformedOrUsingCompositedScrolling(m_owningLayer))
</span><span class="cx">         return false;
</span><ins>+#else
+    if (layerOrAncestorIsTransformedOrScrolling(m_owningLayer))
+        return false;
+#endif
</ins><span class="cx"> 
</span><span class="cx">     if (m_owningLayer.isFlowThreadCollectingGraphicsLayersUnderRegions())
</span><span class="cx">         return false;
</span><span class="lines">@@ -516,9 +552,15 @@
</span><span class="cx">     
</span><span class="cx">     bool needsDescendentsClippingLayer = compositor().clipsCompositingDescendants(m_owningLayer);
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
</ins><span class="cx">     // Our scrolling layer will clip.
</span><ins>+    if (m_owningLayer.hasAcceleratedTouchScrolling())
+        needsDescendentsClippingLayer = false;
+#else
+    // Our scrolling layer will clip.
</ins><span class="cx">     if (m_owningLayer.needsCompositedScrolling())
</span><span class="cx">         needsDescendentsClippingLayer = false;
</span><ins>+#endif // PLATFORM(IOS)
</ins><span class="cx"> 
</span><span class="cx">     if (updateAncestorClippingLayer(compositor().clippedByAncestor(m_owningLayer)))
</span><span class="cx">         layerConfigChanged = true;
</span><span class="lines">@@ -529,8 +571,13 @@
</span><span class="cx">     if (updateOverflowControlsLayers(requiresHorizontalScrollbarLayer(), requiresVerticalScrollbarLayer(), requiresScrollCornerLayer()))
</span><span class="cx">         layerConfigChanged = true;
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+    if (updateScrollingLayers(m_owningLayer.hasAcceleratedTouchScrolling()))
+        layerConfigChanged = true;
+#else
</ins><span class="cx">     if (updateScrollingLayers(m_owningLayer.needsCompositedScrolling()))
</span><span class="cx">         layerConfigChanged = true;
</span><ins>+#endif // PLATFORM(IOS)
</ins><span class="cx"> 
</span><span class="cx">     if (layerConfigChanged)
</span><span class="cx">         updateInternalHierarchy();
</span><span class="lines">@@ -562,8 +609,15 @@
</span><span class="cx"> 
</span><span class="cx">     if (renderer().isEmbeddedObject() &amp;&amp; toRenderEmbeddedObject(&amp;renderer())-&gt;allowsAcceleratedCompositing()) {
</span><span class="cx">         PluginViewBase* pluginViewBase = toPluginViewBase(toRenderWidget(&amp;renderer())-&gt;widget());
</span><ins>+#if PLATFORM(IOS)
+        if (pluginViewBase &amp;&amp; !m_graphicsLayer-&gt;contentsLayerForMedia()) {
+            pluginViewBase-&gt;detachPluginLayer();
+            pluginViewBase-&gt;attachPluginLayer();
+        }
+#else
</ins><span class="cx">         if (!pluginViewBase-&gt;shouldNotAddLayer())
</span><span class="cx">             m_graphicsLayer-&gt;setContentsToMedia(pluginViewBase-&gt;platformLayer());
</span><ins>+#endif
</ins><span class="cx">     }
</span><span class="cx"> #if ENABLE(VIDEO)
</span><span class="cx">     else if (renderer().isVideo()) {
</span><span class="lines">@@ -669,6 +723,18 @@
</span><span class="cx">     else
</span><span class="cx">         graphicsLayerParentLocation = renderer().view().documentRect().location();
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+    if (compAncestor &amp;&amp; compAncestor-&gt;hasAcceleratedTouchScrolling()) {
+        RenderBox* renderBox = toRenderBox(&amp;compAncestor-&gt;renderer());
+        IntRect paddingBox(renderBox-&gt;borderLeft(), renderBox-&gt;borderTop(),
+            renderBox-&gt;width() - renderBox-&gt;borderLeft() - renderBox-&gt;borderRight(),
+            renderBox-&gt;height() - renderBox-&gt;borderTop() - renderBox-&gt;borderBottom());
+
+        IntSize scrollOffset = compAncestor-&gt;scrolledContentOffset();
+        graphicsLayerParentLocation = paddingBox.location() - scrollOffset;
+    }
+#endif
+
</ins><span class="cx">     if (compAncestor &amp;&amp; compAncestor-&gt;needsCompositedScrolling()) {
</span><span class="cx">         RenderBox&amp; renderBox = toRenderBox(compAncestor-&gt;renderer());
</span><span class="cx">         IntSize scrollOffset = compAncestor-&gt;scrolledContentOffset();
</span><span class="lines">@@ -822,6 +888,35 @@
</span><span class="cx">         m_scrollingLayer-&gt;setPosition(FloatPoint(paddingBox.location() - localCompositingBounds.location()));
</span><span class="cx"> 
</span><span class="cx">         m_scrollingLayer-&gt;setSize(paddingBox.size());
</span><ins>+#if PLATFORM(IOS)
+        IntSize oldScrollingLayerOffset = m_scrollingLayer-&gt;offsetFromRenderer();
+        m_scrollingLayer-&gt;setOffsetFromRenderer(IntPoint() - paddingBox.location());
+        bool paddingBoxOffsetChanged = oldScrollingLayerOffset != m_scrollingLayer-&gt;offsetFromRenderer();
+
+        if (m_owningLayer.isInUserScroll()) {
+            // If scrolling is happening externally, we don't want to touch the layer bounds origin here because that will cause
+            // jitter. Set a flag to ensure that we sync up later.
+            m_owningLayer.setRequiresScrollBoundsOriginUpdate(true);
+        } else {
+            // Note that we implement the contents offset via the bounds origin on this layer, rather than a position on the sublayer.
+            m_scrollingLayer-&gt;setBoundsOrigin(FloatPoint(scrollOffset.width(), scrollOffset.height()));
+            m_owningLayer.setRequiresScrollBoundsOriginUpdate(false);
+        }
+        
+        IntSize scrollSize(m_owningLayer.scrollWidth(), m_owningLayer.scrollHeight());
+
+        m_scrollingContentsLayer-&gt;setPosition(FloatPoint());
+        
+        if (scrollSize != m_scrollingContentsLayer-&gt;size() || paddingBoxOffsetChanged)
+            m_scrollingContentsLayer-&gt;setNeedsDisplay();
+
+        m_scrollingContentsLayer-&gt;setSize(scrollSize);
+        // Scrolling the content layer does not need to trigger a repaint. The offset will be compensated away during painting.
+        // FIXME: The paint offset and the scroll offset should really be separate concepts.
+        m_scrollingContentsLayer-&gt;setOffsetFromRenderer(paddingBox.location() - IntPoint() - scrollOffset, GraphicsLayer::DontSetNeedsDisplay);
+        
+        compositor().scrollingLayerAddedOrUpdated(&amp;m_owningLayer);
+#else
</ins><span class="cx">         m_scrollingContentsLayer-&gt;setPosition(FloatPoint(-scrollOffset.width(), -scrollOffset.height()));
</span><span class="cx"> 
</span><span class="cx">         IntSize oldScrollingLayerOffset = m_scrollingLayer-&gt;offsetFromRenderer();
</span><span class="lines">@@ -840,6 +935,7 @@
</span><span class="cx">         m_scrollingContentsLayer-&gt;setSize(scrollSize);
</span><span class="cx">         // FIXME: The paint offset and the scroll offset should really be separate concepts.
</span><span class="cx">         m_scrollingContentsLayer-&gt;setOffsetFromRenderer(scrollingContentsOffset, GraphicsLayer::DontSetNeedsDisplay);
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx">         if (m_foregroundLayer) {
</span><span class="cx">             m_foregroundLayer-&gt;setSize(m_scrollingContentsLayer-&gt;size());
</span><span class="lines">@@ -909,6 +1005,9 @@
</span><span class="cx"> 
</span><span class="cx"> void RenderLayerBacking::registerScrollingLayers()
</span><span class="cx"> {
</span><ins>+#if PLATFORM(IOS)
+    compositor().updateViewportConstraintStatus(m_owningLayer);
+#else
</ins><span class="cx">     // Register fixed position layers and their containers with the scrolling coordinator.
</span><span class="cx">     ScrollingCoordinator* scrollingCoordinator = scrollingCoordinatorFromLayer(m_owningLayer);
</span><span class="cx">     if (!scrollingCoordinator)
</span><span class="lines">@@ -924,6 +1023,7 @@
</span><span class="cx">     // layer as a container.
</span><span class="cx">     bool isContainer = m_owningLayer.hasTransform() &amp;&amp; !m_owningLayer.isRootLayer();
</span><span class="cx">     scrollingCoordinator-&gt;setLayerIsContainerForFixedPositionLayers(childForSuperlayers(), isContainer);
</span><ins>+#endif
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RenderLayerBacking::updateInternalHierarchy()
</span><span class="lines">@@ -1320,8 +1420,16 @@
</span><span class="cx">             layerChanged = true;
</span><span class="cx">             if (scrollingCoordinator)
</span><span class="cx">                 scrollingCoordinator-&gt;scrollableAreaScrollLayerDidChange(&amp;m_owningLayer);
</span><ins>+#if PLATFORM(IOS)
+            if (m_owningLayer.parent())
+                compositor().scrollingLayerAddedOrUpdated(&amp;m_owningLayer);
+#endif
</ins><span class="cx">         }
</span><span class="cx">     } else if (m_scrollingLayer) {
</span><ins>+#if PLATFORM(IOS)
+        if (!renderer().documentBeingDestroyed())
+            compositor().scrollingLayerRemoved(&amp;m_owningLayer, m_scrollingLayer-&gt;platformLayer(), m_scrollingContentsLayer-&gt;platformLayer());
+#endif
</ins><span class="cx">         willDestroyLayer(m_scrollingLayer.get());
</span><span class="cx">         willDestroyLayer(m_scrollingContentsLayer.get());
</span><span class="cx">         m_scrollingLayer = nullptr;
</span><span class="lines">@@ -1334,8 +1442,10 @@
</span><span class="cx">     if (layerChanged) {
</span><span class="cx">         updateInternalHierarchy();
</span><span class="cx">         m_graphicsLayer-&gt;setPaintingPhase(paintingPhaseForPrimaryLayer());
</span><ins>+#if !PLATFORM(IOS)
</ins><span class="cx">         m_graphicsLayer-&gt;setNeedsDisplay();
</span><span class="cx">         compositor().scrollingLayerDidChange(m_owningLayer);
</span><ins>+#endif
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     return layerChanged;
</span><span class="lines">@@ -1725,8 +1835,8 @@
</span><span class="cx">     if (renderer().isVideo() &amp;&amp; toRenderVideo(renderer()).shouldDisplayVideo())
</span><span class="cx">         return m_owningLayer.hasBoxDecorationsOrBackground();
</span><span class="cx"> #endif
</span><del>-#if PLATFORM(MAC) &amp;&amp; USE(CA)
-#elif ENABLE(WEBGL) || ENABLE(ACCELERATED_2D_CANVAS)
</del><ins>+#if PLATFORM(MAC) &amp;&amp; !PLATFORM(IOS) &amp;&amp; USE(CA)
+#elif ENABLE(WEBGL) || ENABLE(ACCELERATED_2D_CANVAS) || PLATFORM(IOS_SIMULATOR)
</ins><span class="cx">     if (isAcceleratedCanvas(&amp;renderer()))
</span><span class="cx">         return m_owningLayer.hasBoxDecorationsOrBackground();
</span><span class="cx"> #endif
</span><span class="lines">@@ -1903,7 +2013,14 @@
</span><span class="cx">     if (m_scrollingContentsLayer)
</span><span class="cx">         return m_scrollingContentsLayer.get();
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+    // FIXME: Can we remove this iOS-specific code path?
+    if (GraphicsLayer* clippingLayer = this-&gt;clippingLayer())
+        return clippingLayer;
+    return m_graphicsLayer.get();
+#else
</ins><span class="cx">     return m_childContainmentLayer ? m_childContainmentLayer.get() : m_graphicsLayer.get();
</span><ins>+#endif
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> GraphicsLayer* RenderLayerBacking::childForSuperlayers() const
</span><span class="lines">@@ -1923,7 +2040,7 @@
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     if (m_owningLayer.isRootLayer()) {
</span><del>-#if PLATFORM(BLACKBERRY) || USE(COORDINATED_GRAPHICS)
</del><ins>+#if PLATFORM(BLACKBERRY) || PLATFORM(IOS) || USE(COORDINATED_GRAPHICS)
</ins><span class="cx">         if (compositor().inForcedCompositingMode())
</span><span class="cx">             return false;
</span><span class="cx"> #endif
</span><span class="lines">@@ -2016,6 +2133,10 @@
</span><span class="cx">     if (m_scrollingContentsLayer &amp;&amp; m_scrollingContentsLayer-&gt;drawsContent()) {
</span><span class="cx">         IntRect layerDirtyRect = r;
</span><span class="cx">         layerDirtyRect.move(-m_scrollingContentsLayer-&gt;offsetFromRenderer());
</span><ins>+#if PLATFORM(IOS)
+        // Account for the fact that RenderLayerBacking::updateGraphicsLayerGeometry() bakes scrollOffset into offsetFromRenderer on iOS.
+        layerDirtyRect.move(-m_owningLayer.scrollOffset());
+#endif
</ins><span class="cx">         m_scrollingContentsLayer-&gt;setNeedsDisplayInRect(layerDirtyRect);
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="lines">@@ -2025,7 +2146,12 @@
</span><span class="cx">                     PaintBehavior paintBehavior, GraphicsLayerPaintingPhase paintingPhase)
</span><span class="cx"> {
</span><span class="cx">     if (paintsIntoWindow() || paintsIntoCompositedAncestor()) {
</span><ins>+#if !PLATFORM(IOS)
+        // FIXME: Looks like the CALayer tree is out of sync with the GraphicsLayer heirarchy
+        // when pages are restored from the PageCache.
+        // &lt;rdar://problem/8712587&gt; ASSERT: When Going Back to Page with Plugins in PageCache
</ins><span class="cx">         ASSERT_NOT_REACHED();
</span><ins>+#endif
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderLayerBackingh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderLayerBacking.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderLayerBacking.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderLayerBacking.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -60,6 +60,10 @@
</span><span class="cx">     explicit RenderLayerBacking(RenderLayer&amp;);
</span><span class="cx">     ~RenderLayerBacking();
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+    void layerWillBeDestroyed();
+#endif
+
</ins><span class="cx">     RenderLayer&amp; owningLayer() const { return m_owningLayer; }
</span><span class="cx"> 
</span><span class="cx">     enum UpdateAfterLayoutFlag {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderLayerCompositorcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderLayerCompositor.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderLayerCompositor.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderLayerCompositor.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -66,6 +66,12 @@
</span><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><span class="cx"> #include &lt;wtf/text/StringBuilder.h&gt;
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+#include &quot;Region.h&quot;
+#include &quot;RenderScrollbar.h&quot;
+#include &quot;TileCache.h&quot;
+#endif
+
</ins><span class="cx"> #if ENABLE(PLUGIN_PROXY_FOR_VIDEO)
</span><span class="cx"> #include &quot;HTMLAudioElement.h&quot;
</span><span class="cx"> #include &quot;HTMLMediaElement.h&quot;
</span><span class="lines">@@ -88,7 +94,12 @@
</span><span class="cx"> 
</span><span class="cx"> static const int canvasAreaThresholdRequiringCompositing = 50 * 100;
</span><span class="cx"> // During page loading delay layer flushes up to this many seconds to allow them coalesce, reducing workload.
</span><ins>+#if PLATFORM(IOS)
+static const double throttledLayerFlushInitialDelay = .5;
+static const double throttledLayerFlushDelay = 1.5;
+#else
</ins><span class="cx"> static const double throttledLayerFlushDelay = .5;
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx"> using namespace HTMLNames;
</span><span class="cx"> 
</span><span class="lines">@@ -360,6 +371,11 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(!m_flushingLayers);
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+    if (canThrottle)
+        startInitialLayerFlushTimerIfNeeded();
+#endif
+
</ins><span class="cx">     if (canThrottle &amp;&amp; isThrottlingLayerFlushes()) {
</span><span class="cx">         m_hasPendingLayerFlush = true;
</span><span class="cx">         return;
</span><span class="lines">@@ -367,6 +383,16 @@
</span><span class="cx">     scheduleLayerFlushNow();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+ChromeClient* RenderLayerCompositor::chromeClient() const
+{
+    Page* page = m_renderView.frameView().frame().page();
+    if (!page)
+        return 0;
+    return &amp;page-&gt;chrome().client();
+}
+#endif
+
</ins><span class="cx"> void RenderLayerCompositor::flushPendingLayerChanges(bool isFlushRoot)
</span><span class="cx"> {
</span><span class="cx">     // FrameView::flushCompositingStateIncludingSubframes() flushes each subframe,
</span><span class="lines">@@ -377,6 +403,9 @@
</span><span class="cx">         return;
</span><span class="cx">     
</span><span class="cx">     if (rootLayerAttachment() == RootLayerUnattached) {
</span><ins>+#if PLATFORM(IOS)
+        startLayerFlushTimerIfNeeded();
+#endif
</ins><span class="cx">         m_shouldFlushOnReattach = true;
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="lines">@@ -388,26 +417,82 @@
</span><span class="cx">     m_flushingLayers = true;
</span><span class="cx"> 
</span><span class="cx">     if (GraphicsLayer* rootLayer = rootGraphicsLayer()) {
</span><ins>+#if PLATFORM(IOS)
+        rootLayer-&gt;flushCompositingState(frameView.visibleExtentContentRect());
+#else
</ins><span class="cx">         // Having a m_clipLayer indicates that we're doing scrolling via GraphicsLayers.
</span><span class="cx">         IntRect visibleRect = m_clipLayer ? IntRect(IntPoint(), frameView.contentsSize()) : frameView.visibleContentRect();
</span><span class="cx">         rootLayer-&gt;flushCompositingState(visibleRect);
</span><ins>+#endif
</ins><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     ASSERT(m_flushingLayers);
</span><span class="cx">     m_flushingLayers = false;
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+    updateCustomLayersAfterFlush();
+
+    ChromeClient* client = this-&gt;chromeClient();
+    if (client &amp;&amp; isFlushRoot)
+        client-&gt;didFlushCompositingLayers();
+#else
</ins><span class="cx">     for (auto it = m_viewportConstrainedLayersNeedingUpdate.begin(), end = m_viewportConstrainedLayersNeedingUpdate.end(); it != end; ++it)
</span><span class="cx">         registerOrUpdateViewportConstrainedLayer(**it);
</span><span class="cx">     m_viewportConstrainedLayersNeedingUpdate.clear();
</span><del>-
</del><ins>+#endif
</ins><span class="cx">     startLayerFlushTimerIfNeeded();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+static bool scrollbarHasDisplayNone(Scrollbar* scrollbar)
+{
+    if (!scrollbar || !scrollbar-&gt;isCustomScrollbar())
+        return false;
+
+    RefPtr&lt;RenderStyle&gt; scrollbarStyle = static_cast&lt;RenderScrollbar*&gt;(scrollbar)-&gt;getScrollbarPseudoStyle(ScrollbarBGPart, SCROLLBAR);
+    return scrollbarStyle &amp;&amp; scrollbarStyle-&gt;display() == NONE;
+}
+
+// FIXME: Can we make |layer| const RenderLayer&amp;?
+static void updateScrollingLayerWithClient(RenderLayer&amp; layer, ChromeClient* client)
+{
+    if (!client)
+        return;
+
+    RenderLayerBacking* backing = layer-&gt;backing();
+    ASSERT(backing);
+
+    bool allowHorizontalScrollbar = !scrollbarHasDisplayNone(layer-&gt;horizontalScrollbar());
+    bool allowVerticalScrollbar = !scrollbarHasDisplayNone(layer-&gt;verticalScrollbar());
+    client-&gt;addOrUpdateScrollingLayer(layer-&gt;renderer().element(), backing-&gt;scrollingLayer()-&gt;platformLayer(), backing-&gt;scrollingContentsLayer()-&gt;platformLayer(),
+        IntSize(layer-&gt;scrollWidth(), layer-&gt;scrollHeight()), allowHorizontalScrollbar, allowVerticalScrollbar);
+}
+
+void RenderLayerCompositor::updateCustomLayersAfterFlush()
+{
+    registerAllViewportConstrainedLayers();
+
+    if (!m_scrollingLayersNeedingUpdate.isEmpty()) {
+        ChromeClient* chromeClient = this-&gt;chromeClient();
+
+        for (auto it = m_scrollingLayersNeedingUpdate.begin(), end = m_scrollingLayersNeedingUpdate.end(); it != end; ++it)
+            updateScrollingLayerWithClient(**it, chromeClient);
+        m_scrollingLayersNeedingUpdate.clear();
+    }
+    m_scrollingLayersNeedingUpdate.clear();
+}
+#endif
+
</ins><span class="cx"> void RenderLayerCompositor::didFlushChangesForLayer(RenderLayer&amp; layer, const GraphicsLayer* graphicsLayer)
</span><span class="cx"> {
</span><span class="cx">     if (m_viewportConstrainedLayers.contains(&amp;layer))
</span><span class="cx">         m_viewportConstrainedLayersNeedingUpdate.add(&amp;layer);
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+    if (m_scrollingLayers.contains(&amp;layer))
+        m_scrollingLayersNeedingUpdate.add(&amp;layer);
+#endif
+
</ins><span class="cx">     RenderLayerBacking* backing = layer.backing();
</span><span class="cx">     if (backing-&gt;backgroundLayerPaintsFixedRootBackground() &amp;&amp; graphicsLayer == backing-&gt;backgroundLayer())
</span><span class="cx">         fixedRootBackgroundLayerChanged();
</span><span class="lines">@@ -428,7 +513,12 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     const FrameView&amp; frameView = m_renderView.frameView();
</span><ins>+
+#if PLATFORM(IOS)
+    IntRect visibleRect = frameView.visibleExtentContentRect();
+#else
</ins><span class="cx">     IntRect visibleRect = m_clipLayer ? IntRect(IntPoint(), frameView.contentsSize()) : frameView.visibleContentRect();
</span><ins>+#endif
</ins><span class="cx">     if (!rootLayer-&gt;visibleRectChangeRequiresFlush(visibleRect))
</span><span class="cx">         return;
</span><span class="cx">     scheduleLayerFlushNow();
</span><span class="lines">@@ -877,9 +967,14 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     IntRect clipRect = pixelSnappedIntRect(layer.backgroundClipRect(RenderLayer::ClipRectsContext(&amp;rootRenderLayer(), 0, AbsoluteClipRects)).rect()); // FIXME: Incorrect for CSS regions.
</span><ins>+
+    // On iOS, pageScaleFactor() is not applied by RenderView, so we should not scale here.
+    // FIXME: Set Settings::delegatesPageScaling to true for iOS.
+#if !PLATFORM(IOS)
</ins><span class="cx">     const Settings&amp; settings = m_renderView.frameView().frame().settings();
</span><span class="cx">     if (!settings.delegatesPageScaling())
</span><span class="cx">         clipRect.scale(pageScaleFactor());
</span><ins>+#endif
</ins><span class="cx">     clipRect.intersect(layerBounds);
</span><span class="cx">     overlapMap.add(&amp;layer, clipRect);
</span><span class="cx"> }
</span><span class="lines">@@ -1119,8 +1214,11 @@
</span><span class="cx">     // to be composited, then we can drop out of compositing mode altogether. However, don't drop out of compositing mode
</span><span class="cx">     // if there are composited layers that we didn't hit in our traversal (e.g. because of visibility:hidden).
</span><span class="cx">     if (layer.isRootLayer() &amp;&amp; !childState.m_subtreeIsCompositing &amp;&amp; !requiresCompositingLayer(layer) &amp;&amp; !m_forceCompositingMode &amp;&amp; !hasAnyAdditionalCompositedLayers(layer)) {
</span><ins>+        // Don't drop out of compositing on iOS, because we may flash. See &lt;rdar://problem/8348337&gt;.
+#if !PLATFORM(IOS)
</ins><span class="cx">         enableCompositingMode(false);
</span><span class="cx">         willBeComposited = false;
</span><ins>+#endif
</ins><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     // If the layer is going into compositing mode, repaint its old location.
</span><span class="lines">@@ -1699,11 +1797,19 @@
</span><span class="cx"> 
</span><span class="cx">         RootLayerAttachment attachment = shouldPropagateCompositingToEnclosingFrame() ? RootLayerAttachedViaEnclosingFrame : RootLayerAttachedViaChromeClient;
</span><span class="cx">         attachRootLayer(attachment);
</span><ins>+#if PLATFORM(IOS)
+        registerAllViewportConstrainedLayers();
+        registerAllScrollingLayers();
+#endif
</ins><span class="cx">     } else {
</span><span class="cx">         if (m_rootLayerAttachment == RootLayerUnattached)
</span><span class="cx">             return;
</span><span class="cx"> 
</span><span class="cx">         detachRootLayer();
</span><ins>+#if PLATFORM(IOS)
+        unregisterAllViewportConstrainedLayers();
+        unregisterAllScrollingLayers();
+#endif
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1758,7 +1864,7 @@
</span><span class="cx"> 
</span><span class="cx"> bool RenderLayerCompositor::allowsIndependentlyCompositedFrames(const FrameView* view)
</span><span class="cx"> {
</span><del>-#if PLATFORM(MAC)
</del><ins>+#if PLATFORM(MAC) &amp;&amp; !PLATFORM(IOS)
</ins><span class="cx">     // frames are only independently composited in Mac pre-WebKit2.
</span><span class="cx">     return view-&gt;platformWidget();
</span><span class="cx"> #else
</span><span class="lines">@@ -1832,6 +1938,9 @@
</span><span class="cx">         || requiresCompositingForAnimation(*renderer)
</span><span class="cx">         || requiresCompositingForFilters(*renderer)
</span><span class="cx">         || requiresCompositingForPosition(*renderer, *renderer-&gt;layer(), viewportConstrainedNotCompositedReason)
</span><ins>+#if PLATFORM(IOS)
+        || requiresCompositingForScrolling(*renderer)
+#endif
</ins><span class="cx">         || requiresCompositingForOverflowScrolling(*renderer-&gt;layer())
</span><span class="cx">         || requiresCompositingForBlending(*renderer);
</span><span class="cx"> }
</span><span class="lines">@@ -1878,7 +1987,11 @@
</span><span class="cx">         || renderer.isTransparent()
</span><span class="cx">         || renderer.hasMask()
</span><span class="cx">         || renderer.hasReflection()
</span><del>-        || renderer.hasFilter())
</del><ins>+        || renderer.hasFilter()
+#if PLATFORM(IOS)
+        || requiresCompositingForScrolling(renderer)
+#endif
+        )
</ins><span class="cx">         return true;
</span><span class="cx">         
</span><span class="cx">     
</span><span class="lines">@@ -1935,6 +2048,11 @@
</span><span class="cx">     if (requiresCompositingForPosition(*renderer, *renderer-&gt;layer()))
</span><span class="cx">         reasons |= renderer-&gt;style().position() == FixedPosition ? CompositingReasonPositionFixed : CompositingReasonPositionSticky;
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+    if (requiresCompositingForScrolling(*renderer))
+        reasons |= CompositingReasonOverflowScrollingTouch;
+#endif
+
</ins><span class="cx">     if (requiresCompositingForOverflowScrolling(*renderer-&gt;layer()))
</span><span class="cx">         reasons |= CompositingReasonOverflowScrollingTouch;
</span><span class="cx"> 
</span><span class="lines">@@ -2217,10 +2335,10 @@
</span><span class="cx">     return (animController.isRunningAnimationOnRenderer(&amp;renderer, CSSPropertyOpacity)
</span><span class="cx">             &amp;&amp; (inCompositingMode() || (m_compositingTriggers &amp; ChromeClient::AnimatedOpacityTrigger)))
</span><span class="cx"> #if ENABLE(CSS_FILTERS)
</span><del>-#if !PLATFORM(MAC) || (!PLATFORM(IOS) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 1080)
</del><ins>+#if PLATFORM(IOS) || !PLATFORM(MAC) || __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 1080
</ins><span class="cx">             // &lt;rdar://problem/10907251&gt; - WebKit2 doesn't support CA animations of CI filters on Lion and below
</span><span class="cx">             || animController.isRunningAnimationOnRenderer(&amp;renderer, CSSPropertyWebkitFilter)
</span><del>-#endif // !PLATFORM(MAC) || (!PLATFORM(IOS) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 1080)
</del><ins>+#endif // PLATFORM(IOS) || !PLATFORM(MAC) || __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 1080
</ins><span class="cx"> #endif // CSS_FILTERS
</span><span class="cx">             || animController.isRunningAnimationOnRenderer(&amp;renderer, CSSPropertyWebkitTransform);
</span><span class="cx"> }
</span><span class="lines">@@ -2254,6 +2372,13 @@
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+bool RenderLayerCompositor::requiresCompositingForScrolling(RenderLayerModelObject&amp; renderer) const
+{
+    return renderer.hasLayer() &amp;&amp; toRenderBoxModelObject(renderer).layer()-&gt;hasAcceleratedTouchScrolling();
+}
+#endif
+
</ins><span class="cx"> bool RenderLayerCompositor::requiresCompositingForFilters(RenderLayerModelObject&amp; renderer) const
</span><span class="cx"> {
</span><span class="cx"> #if ENABLE(CSS_FILTERS)
</span><span class="lines">@@ -2277,10 +2402,31 @@
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+static bool isStickyInAcceleratedScrollingLayerOrViewport(const RenderLayer&amp; layer, const RenderLayer** enclosingAcceleratedOverflowLayer = 0)
+{
+    ASSERT(layer.renderer().isStickyPositioned());
+
+    RenderLayer* enclosingOverflowLayer = layer.enclosingOverflowClipLayer(ExcludeSelf);
+    if (enclosingOverflowLayer &amp;&amp; enclosingOverflowLayer-&gt;hasAcceleratedTouchScrolling()) {
+        if (enclosingAcceleratedOverflowLayer)
+            *enclosingAcceleratedOverflowLayer = enclosingOverflowLayer;
+        return true;
+    }
+
+    return !enclosingOverflowLayer;
+}
+#endif
+
</ins><span class="cx"> static bool isViewportConstrainedFixedOrStickyLayer(const RenderLayer&amp; layer)
</span><span class="cx"> {
</span><ins>+#if PLATFORM(IOS)
</ins><span class="cx">     if (layer.renderer().isStickyPositioned())
</span><ins>+        return isStickyInAcceleratedScrollingLayerOrViewport(layer);
+#else
+    if (layer.renderer().isStickyPositioned())
</ins><span class="cx">         return !layer.enclosingOverflowClipLayer(ExcludeSelf);
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx">     if (layer.renderer().style().position() != FixedPosition)
</span><span class="cx">         return false;
</span><span class="lines">@@ -2295,9 +2441,24 @@
</span><span class="cx"> 
</span><span class="cx"> bool RenderLayerCompositor::requiresCompositingForPosition(RenderLayerModelObject&amp; renderer, const RenderLayer&amp; layer, RenderLayer::ViewportConstrainedNotCompositedReason* viewportConstrainedNotCompositedReason) const
</span><span class="cx"> {
</span><ins>+#if PLATFORM(IOS)
+    if (renderer.isStickyPositioned())
+        return true;
+
</ins><span class="cx">     // position:fixed elements that create their own stacking context (e.g. have an explicit z-index,
</span><span class="cx">     // opacity, transform) can get their own composited layer. A stacking context is required otherwise
</span><span class="cx">     // z-index and clipping will be broken.
</span><ins>+    if (!(renderer.isOutOfFlowPositioned() &amp;&amp; renderer.style().position() == FixedPosition))
+        return false;
+
+    if (!m_renderView.hasCustomFixedPosition(renderer, RenderView::CheckContainingBlock)) {
+        m_reevaluateCompositingAfterLayout = true;
+        return false;
+    }
+#else
+    // position:fixed elements that create their own stacking context (e.g. have an explicit z-index,
+    // opacity, transform) can get their own composited layer. A stacking context is required otherwise
+    // z-index and clipping will be broken.
</ins><span class="cx">     if (!renderer.isPositioned())
</span><span class="cx">         return false;
</span><span class="cx">     
</span><span class="lines">@@ -2317,6 +2478,7 @@
</span><span class="cx"> 
</span><span class="cx">     if (isSticky)
</span><span class="cx">         return hasCoordinatedScrolling() &amp;&amp; isViewportConstrainedFixedOrStickyLayer(layer);
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx">     auto container = renderer.container();
</span><span class="cx">     // If the renderer is not hooked up yet then we have to wait until it is.
</span><span class="lines">@@ -2347,7 +2509,11 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // Fixed position elements that are invisible in the current view don't get their own layer.
</span><ins>+#if PLATFORM(IOS)
+    LayoutRect viewBounds = m_renderView.frameView().customFixedPositionLayoutRect();
+#else
</ins><span class="cx">     LayoutRect viewBounds = m_renderView.frameView().viewportConstrainedVisibleContentRect();
</span><ins>+#endif
</ins><span class="cx">     LayoutRect layerBounds = layer.calculateLayerBounds(&amp;layer, 0, RenderLayer::UseLocalClipRectIfPossible | RenderLayer::IncludeLayerFilterOutsets | RenderLayer::UseFragmentBoxes
</span><span class="cx">         | RenderLayer::ExcludeHiddenDescendants | RenderLayer::DontConstrainForMask | RenderLayer::IncludeCompositedDescendants);
</span><span class="cx">     // Map to m_renderView to ignore page scale.
</span><span class="lines">@@ -2495,6 +2661,16 @@
</span><span class="cx"> 
</span><span class="cx"> float RenderLayerCompositor::contentsScaleMultiplierForNewTiles(const GraphicsLayer*) const
</span><span class="cx"> {
</span><ins>+#if PLATFORM(IOS)
+    TileCache* tileCache = nullptr;
+    if (Page* page = this-&gt;page())
+        tileCache = page-&gt;mainFrame().view().tileCache();
+
+    if (!tileCache)
+        return 1;
+
+    return tileCache-&gt;tilingMode() == TileCache::Zooming ? 0.125 : 1;
+#endif
</ins><span class="cx">     return 1;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -2869,6 +3045,14 @@
</span><span class="cx">         m_rootContentLayer-&gt;setSize(FloatSize(overflowRect.maxX(), overflowRect.maxY()));
</span><span class="cx">         m_rootContentLayer-&gt;setPosition(FloatPoint());
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+        // Page scale is applied above this on iOS, so we'll just say that our root layer applies it.
+        Frame&amp; frame = m_renderView.frameView().frame();
+        Page* page = frame.page();
+        if (page &amp;&amp; &amp;page-&gt;mainFrame() == &amp;frame)
+            m_rootContentLayer-&gt;setAppliesPageScale();
+#endif
+
</ins><span class="cx">         // Need to clip to prevent transformed content showing outside this frame
</span><span class="cx">         m_rootContentLayer-&gt;setMasksToBounds(true);
</span><span class="cx">     }
</span><span class="lines">@@ -3149,7 +3333,11 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(layer.isComposited());
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+    LayoutRect viewportRect = m_renderView.frameView().customFixedPositionLayoutRect();
+#else
</ins><span class="cx">     LayoutRect viewportRect = m_renderView.frameView().viewportConstrainedVisibleContentRect();
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx">     FixedPositionViewportConstraints constraints;
</span><span class="cx"> 
</span><span class="lines">@@ -3185,10 +3373,17 @@
</span><span class="cx"> StickyPositionViewportConstraints RenderLayerCompositor::computeStickyViewportConstraints(RenderLayer&amp; layer) const
</span><span class="cx"> {
</span><span class="cx">     ASSERT(layer.isComposited());
</span><ins>+#if !PLATFORM(IOS)
</ins><span class="cx">     // We should never get here for stickies constrained by an enclosing clipping layer.
</span><ins>+    // FIXME: Why does this assertion fail on iOS?
</ins><span class="cx">     ASSERT(!layer.enclosingOverflowClipLayer(ExcludeSelf));
</span><ins>+#endif
</ins><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+    LayoutRect viewportRect = m_renderView.frameView().customFixedPositionLayoutRect();
+#else
</ins><span class="cx">     LayoutRect viewportRect = m_renderView.frameView().viewportConstrainedVisibleContentRect();
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx">     RenderBoxModelObject&amp; renderer = toRenderBoxModelObject(layer.renderer());
</span><span class="cx"> 
</span><span class="lines">@@ -3203,6 +3398,7 @@
</span><span class="cx">     return constraints;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if !PLATFORM(IOS)
</ins><span class="cx"> static RenderLayerBacking* nearestScrollingCoordinatorAncestor(RenderLayer&amp; layer)
</span><span class="cx"> {
</span><span class="cx">     RenderLayer* ancestor = layer.parent();
</span><span class="lines">@@ -3216,9 +3412,14 @@
</span><span class="cx"> 
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx"> void RenderLayerCompositor::registerOrUpdateViewportConstrainedLayer(RenderLayer&amp; layer)
</span><span class="cx"> {
</span><ins>+#if PLATFORM(IOS)
+    UNUSED_PARAM(layer);
+    // On iOS, we batch-update viewport-constrained layers in updateCustomLayersAfterFlush().
+#else
</ins><span class="cx">     // FIXME: We should support sticky position here! And we should eventuall support fixed/sticky elements
</span><span class="cx">     // that are inside non-main frames once we get non-main frames scrolling with the ScrollingCoordinator.
</span><span class="cx">     if (m_renderView.document().ownerElement())
</span><span class="lines">@@ -3252,16 +3453,113 @@
</span><span class="cx">         scrollingCoordinator-&gt;updateViewportConstrainedNode(nodeID, computeStickyViewportConstraints(layer), backing-&gt;graphicsLayer());
</span><span class="cx">     else
</span><span class="cx">         scrollingCoordinator-&gt;updateViewportConstrainedNode(nodeID, computeFixedViewportConstraints(layer), backing-&gt;graphicsLayer());
</span><ins>+#endif
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RenderLayerCompositor::unregisterViewportConstrainedLayer(RenderLayer&amp; layer)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(m_viewportConstrainedLayers.contains(&amp;layer));
</span><del>-
</del><ins>+#if PLATFORM(IOS)
+    UNUSED_PARAM(layer);
+    // On iOS, we batch-update viewport-constrained layers in updateCustomLayersAfterFlush().
+#else
</ins><span class="cx">     if (RenderLayerBacking* backing = layer.backing())
</span><span class="cx">         backing-&gt;detachFromScrollingCoordinator();
</span><ins>+#endif
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+typedef HashMap&lt;PlatformLayer*, std::unique_ptr&lt;ViewportConstraints&gt;&gt; LayerMap;
+typedef HashMap&lt;PlatformLayer*, PlatformLayer*&gt; StickyContainerMap;
+
+void RenderLayerCompositor::registerAllViewportConstrainedLayers()
+{
+    // Only the main frame should register fixed/sticky layers.
+    if (m_renderView.document().ownerElement())
+        return;
+
+    LayerMap layerMap;
+    StickyContainerMap stickyContainerMap;
+
+    for (auto it = m_viewportConstrainedLayers.begin(), end = m_viewportConstrainedLayers.end(); it != end; ++it) {
+        RenderLayer&amp; layer = **it;
+        ASSERT(layer.isComposited());
+
+        std::unique_ptr&lt;ViewportConstraints&gt; constraints;
+        if (layer.renderer().isStickyPositioned()) {
+            constraints = std::make_unique&lt;ViewportConstraints&gt;(new StickyPositionViewportConstraints(computeStickyViewportConstraints(layer)));
+            const RenderLayer* enclosingTouchScrollableLayer = nullptr;
+            if (isStickyInAcceleratedScrollingLayerOrViewport(layer, &amp;enclosingTouchScrollableLayer) &amp;&amp; enclosingTouchScrollableLayer) {
+                ASSERT(enclosingTouchScrollableLayer-&gt;isComposited());
+                stickyContainerMap.add(layer.backing()-&gt;graphicsLayer()-&gt;platformLayer(), enclosingTouchScrollableLayer-&gt;backing()-&gt;scrollingLayer()-&gt;platformLayer());
+            }
+        } else
+            constraints = std::make_unique&lt;ViewportConstraints&gt;(new FixedPositionViewportConstraints(computeFixedViewportConstraints(layer)));
+
+        layerMap.add(layer.backing()-&gt;graphicsLayer()-&gt;platformLayer(), constraints.release());
+    }
+    
+    if (ChromeClient* client = this-&gt;chromeClient())
+        client-&gt;updateViewportConstrainedLayers(layerMap, stickyContainerMap);
+}
+
+void RenderLayerCompositor::unregisterAllViewportConstrainedLayers()
+{
+    // Only the main frame should register fixed/sticky layers.
+    if (m_renderView.document().ownerElement())
+        return;
+
+    if (ChromeClient* client = this-&gt;chromeClient()) {
+        LayerMap layerMap;
+        StickyContainerMap stickyContainerMap;
+        client-&gt;updateViewportConstrainedLayers(layerMap, stickyContainerMap);
+    }
+}
+
+void RenderLayerCompositor::registerAllScrollingLayers()
+{
+    ChromeClient* client = this-&gt;chromeClient();
+    if (!client)
+        return;
+
+    for (auto it = m_scrollingLayers.begin(), end = m_scrollingLayers.end(); it != end; ++it)
+        updateScrollingLayerWithClient(**it, client);
+}
+
+void RenderLayerCompositor::unregisterAllScrollingLayers()
+{
+    ChromeClient* client = this-&gt;chromeClient();
+    if (!client)
+        return;
+
+    for (auto it = m_scrollingLayers.begin(), end = m_scrollingLayers.end(); it != end; ++it) {
+        RenderLayer&amp; layer = **it;
+        RenderLayerBacking* backing = layer.backing();
+        ASSERT(backing);
+        client-&gt;removeScrollingLayer(layer.renderer().element(), backing-&gt;scrollingLayer()-&gt;platformLayer(), backing-&gt;scrollingContentsLayer()-&gt;platformLayer());
+    }
+}
+
+// Called when the size of the contentsLayer changes, and when the contentsLayer is replaced by another layer.
+void RenderLayerCompositor::scrollingLayerAddedOrUpdated(RenderLayer* layer)
+{
+    ASSERT(!m_renderView.document().inPageCache());
+    m_scrollingLayers.add(layer);
+}
+
+void RenderLayerCompositor::scrollingLayerRemoved(RenderLayer* layer, PlatformLayer* scrollingLayer, PlatformLayer* contentsLayer)
+{
+    m_scrollingLayersNeedingUpdate.remove(layer);
+    m_scrollingLayers.remove(layer);
+
+    if (m_renderView.document().inPageCache())
+        return;
+
+    if (ChromeClient* client = this-&gt;chromeClient())
+        client-&gt;removeScrollingLayer(layer-&gt;renderer().element(), scrollingLayer, contentsLayer);
+}
+#endif
+
</ins><span class="cx"> void RenderLayerCompositor::windowScreenDidChange(PlatformDisplayID displayID)
</span><span class="cx"> {
</span><span class="cx">     if (m_layerUpdater)
</span><span class="lines">@@ -3327,6 +3625,17 @@
</span><span class="cx">     m_layerFlushTimer.startOneShot(throttledLayerFlushDelay);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+void RenderLayerCompositor::startInitialLayerFlushTimerIfNeeded()
+{
+    if (!m_layerFlushThrottlingEnabled)
+        return;
+    if (m_layerFlushTimer.isActive())
+        return;
+    m_layerFlushTimer.startOneShot(throttledLayerFlushInitialDelay);
+}
+#endif
+
</ins><span class="cx"> void RenderLayerCompositor::layerFlushTimerFired(Timer&lt;RenderLayerCompositor&gt;*)
</span><span class="cx"> {
</span><span class="cx">     if (!m_hasPendingLayerFlush)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderLayerCompositorh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderLayerCompositor.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderLayerCompositor.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderLayerCompositor.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -263,6 +263,7 @@
</span><span class="cx">     GraphicsLayer* layerForScrollCorner() const { return m_layerForScrollCorner.get(); }
</span><span class="cx"> #if ENABLE(RUBBER_BANDING)
</span><span class="cx">     GraphicsLayer* layerForOverhangAreas() const { return m_layerForOverhangAreas.get(); }
</span><ins>+    GraphicsLayer* layerForContentShadow() const { return m_contentShadowLayer.get(); }
</ins><span class="cx"> 
</span><span class="cx">     GraphicsLayer* updateLayerForTopOverhangArea(bool wantsLayer);
</span><span class="cx">     GraphicsLayer* updateLayerForBottomOverhangArea(bool wantsLayer);
</span><span class="lines">@@ -273,6 +274,16 @@
</span><span class="cx">     void updateViewportConstraintStatus(RenderLayer&amp;);
</span><span class="cx">     void removeViewportConstrainedLayer(RenderLayer&amp;);
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+    void registerAllViewportConstrainedLayers();
+    void unregisterAllViewportConstrainedLayers();
+
+    void scrollingLayerAddedOrUpdated(RenderLayer*);
+    void scrollingLayerRemoved(RenderLayer*, PlatformLayer* scrollingLayer, PlatformLayer* contentsLayer);
+
+    void registerAllScrollingLayers();
+    void unregisterAllScrollingLayers();
+#endif
</ins><span class="cx">     void resetTrackedRepaintRects();
</span><span class="cx">     void setTracksRepaints(bool);
</span><span class="cx"> 
</span><span class="lines">@@ -383,6 +394,16 @@
</span><span class="cx">     bool requiresCompositingForOverflowScrolling(const RenderLayer&amp;) const;
</span><span class="cx">     bool requiresCompositingForIndirectReason(RenderLayerModelObject&amp;, bool hasCompositedDescendants, bool has3DTransformedDescendants, RenderLayer::IndirectCompositingReason&amp;) const;
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+    bool requiresCompositingForScrolling(RenderLayerModelObject&amp;) const;
+
+    void updateCustomLayersAfterFlush();
+
+    ChromeClient* chromeClient() const;
+
+    void startInitialLayerFlushTimerIfNeeded();
+#endif
+
</ins><span class="cx">     void addViewportConstrainedLayer(RenderLayer&amp;);
</span><span class="cx">     void registerOrUpdateViewportConstrainedLayer(RenderLayer&amp;);
</span><span class="cx">     void unregisterViewportConstrainedLayer(RenderLayer&amp;);
</span><span class="lines">@@ -450,6 +471,10 @@
</span><span class="cx">     std::unique_ptr&lt;GraphicsLayer&gt; m_clipLayer;
</span><span class="cx">     std::unique_ptr&lt;GraphicsLayer&gt; m_scrollLayer;
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+    HashSet&lt;RenderLayer*&gt; m_scrollingLayers;
+    HashSet&lt;RenderLayer*&gt; m_scrollingLayersNeedingUpdate;
+#endif
</ins><span class="cx">     HashSet&lt;RenderLayer*&gt; m_viewportConstrainedLayers;
</span><span class="cx">     HashSet&lt;RenderLayer*&gt; m_viewportConstrainedLayersNeedingUpdate;
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderLayerFilterInfoh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderLayerFilterInfo.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderLayerFilterInfo.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderLayerFilterInfo.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -89,7 +89,16 @@
</span><span class="cx"> 
</span><span class="cx">     static HashMap&lt;const RenderLayer*, OwnPtr&lt;FilterInfo&gt;&gt;&amp; map();
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+#pragma clang diagnostic push
+#if defined(__has_warning) &amp;&amp; __has_warning(&quot;-Wunused-private-field&quot;)
+#pragma clang diagnostic ignored &quot;-Wunused-private-field&quot;
+#endif
+#endif
</ins><span class="cx">     RenderLayer&amp; m_layer;
</span><ins>+#if PLATFORM(IOS)
+#pragma clang diagnostic pop
+#endif
</ins><span class="cx"> 
</span><span class="cx">     RefPtr&lt;FilterEffectRenderer&gt; m_renderer;
</span><span class="cx">     LayoutRect m_dirtySourceRect;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderMenuListcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderMenuList.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderMenuList.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderMenuList.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -48,10 +48,29 @@
</span><span class="cx"> #include &quot;TextRun.h&quot;
</span><span class="cx"> #include &lt;math.h&gt;
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+#include &quot;LocalizedStrings.h&quot;
+#endif
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> using namespace HTMLNames;
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+static size_t selectedOptionCount(const RenderMenuList&amp; renderMenuList)
+{
+    const Vector&lt;HTMLElement*&gt;&amp; listItems = renderMenuList.selectElement().listItems();
+    size_t numberOfItems = listItems.size();
+
+    size_t count = 0;
+    for (size_t i = 0; i &lt; numberOfItems; ++i) {
+        if (listItems[i]-&gt;hasTagName(optionTag) &amp;&amp; toHTMLOptionElement(listItems[i])-&gt;selected())
+            ++count;
+    }
+    return count;
+}
+#endif
+
</ins><span class="cx"> RenderMenuList::RenderMenuList(HTMLSelectElement&amp; element, PassRef&lt;RenderStyle&gt; style)
</span><span class="cx">     : RenderFlexibleBox(element, std::move(style))
</span><span class="cx">     , m_buttonText(nullptr)
</span><span class="lines">@@ -59,15 +78,19 @@
</span><span class="cx">     , m_needsOptionsWidthUpdate(true)
</span><span class="cx">     , m_optionsWidth(0)
</span><span class="cx">     , m_lastActiveIndex(-1)
</span><ins>+#if !PLATFORM(IOS)
</ins><span class="cx">     , m_popupIsVisible(false)
</span><ins>+#endif
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> RenderMenuList::~RenderMenuList()
</span><span class="cx"> {
</span><ins>+#if !PLATFORM(IOS)
</ins><span class="cx">     if (m_popup)
</span><span class="cx">         m_popup-&gt;disconnectClient();
</span><span class="cx">     m_popup = 0;
</span><ins>+#endif
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool RenderMenuList::canBeReplacedWithInlineRunIn() const
</span><span class="lines">@@ -118,6 +141,26 @@
</span><span class="cx">         innerStyle.setTextAlign(LEFT);
</span><span class="cx">         TextDirection direction = (m_buttonText &amp;&amp; m_buttonText-&gt;text()-&gt;defaultWritingDirection() == U_RIGHT_TO_LEFT) ? RTL : LTR;
</span><span class="cx">         innerStyle.setDirection(direction);
</span><ins>+#if PLATFORM(IOS)
+    } else if (document().page()-&gt;chrome().selectItemAlignmentFollowsMenuWritingDirection()) {
+        innerStyle.setTextAlign(style().direction() == LTR ? LEFT : RIGHT);
+        TextDirection direction;
+        EUnicodeBidi unicodeBidi;
+        if (multiple() &amp;&amp; selectedOptionCount(*this) != 1) {
+            direction = (m_buttonText &amp;&amp; m_buttonText-&gt;text()-&gt;defaultWritingDirection() == U_RIGHT_TO_LEFT) ? RTL : LTR;
+            unicodeBidi = UBNormal;
+        } else if (m_optionStyle) {
+            direction = m_optionStyle-&gt;direction();
+            unicodeBidi = m_optionStyle-&gt;unicodeBidi();
+        } else {
+            direction = style().direction();
+            unicodeBidi = style().unicodeBidi();
+        }
+
+        innerStyle.setDirection(direction);
+        innerStyle.setUnicodeBidi(unicodeBidi);
+    }
+#else
</ins><span class="cx">     } else if (m_optionStyle &amp;&amp; document().page()-&gt;chrome().selectItemAlignmentFollowsMenuWritingDirection()) {
</span><span class="cx">         if ((m_optionStyle-&gt;direction() != innerStyle.direction() || m_optionStyle-&gt;unicodeBidi() != innerStyle.unicodeBidi()))
</span><span class="cx">             m_innerBlock-&gt;setNeedsLayoutAndPrefWidthsRecalc();
</span><span class="lines">@@ -125,6 +168,7 @@
</span><span class="cx">         innerStyle.setDirection(m_optionStyle-&gt;direction());
</span><span class="cx">         innerStyle.setUnicodeBidi(m_optionStyle-&gt;unicodeBidi());
</span><span class="cx">     }
</span><ins>+#endif // !PLATFORM(IOS)
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> HTMLSelectElement&amp; RenderMenuList::selectElement() const
</span><span class="lines">@@ -207,9 +251,11 @@
</span><span class="cx">         m_needsOptionsWidthUpdate = false;
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+#if !PLATFORM(IOS)
</ins><span class="cx">     if (m_popupIsVisible)
</span><span class="cx">         m_popup-&gt;updateFromElement();
</span><span class="cx">     else
</span><ins>+#endif
</ins><span class="cx">         setTextFromOption(selectElement().selectedIndex());
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -228,6 +274,14 @@
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+    if (multiple()) {
+        size_t count = selectedOptionCount(*this);
+        if (count != 1)
+            text = htmlSelectMultipleItems(count);
+    }
+#endif
+
</ins><span class="cx">     setText(text.stripWhiteSpace());
</span><span class="cx">     didUpdateActiveOption(optionIndex);
</span><span class="cx"> }
</span><span class="lines">@@ -302,8 +356,15 @@
</span><span class="cx">     setPreferredLogicalWidthsDirty(false);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+NO_RETURN_DUE_TO_ASSERT
</ins><span class="cx"> void RenderMenuList::showPopup()
</span><span class="cx"> {
</span><ins>+    ASSERT_NOT_REACHED();
+}
+#else
+void RenderMenuList::showPopup()
+{
</ins><span class="cx">     if (m_popupIsVisible)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="lines">@@ -325,11 +386,14 @@
</span><span class="cx">     absBounds.setLocation(roundedIntPoint(absTopLeft));
</span><span class="cx">     m_popup-&gt;show(absBounds, &amp;view().frameView(), selectElement().optionToListIndex(selectElement().selectedIndex()));
</span><span class="cx"> }
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx"> void RenderMenuList::hidePopup()
</span><span class="cx"> {
</span><ins>+#if !PLATFORM(IOS)
</ins><span class="cx">     if (m_popup)
</span><span class="cx">         m_popup-&gt;hide();
</span><ins>+#endif
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RenderMenuList::valueChanged(unsigned listIndex, bool fireOnChange)
</span><span class="lines">@@ -564,7 +628,9 @@
</span><span class="cx"> 
</span><span class="cx"> void RenderMenuList::popupDidHide()
</span><span class="cx"> {
</span><ins>+#if !PLATFORM(IOS)
</ins><span class="cx">     m_popupIsVisible = false;
</span><ins>+#endif
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool RenderMenuList::itemIsSeparator(unsigned listIndex) const
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderMenuListh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderMenuList.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderMenuList.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderMenuList.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -48,7 +48,9 @@
</span><span class="cx"> 
</span><span class="cx">     HTMLSelectElement&amp; selectElement() const;
</span><span class="cx"> 
</span><ins>+#if !PLATFORM(IOS)
</ins><span class="cx">     bool popupIsVisible() const { return m_popupIsVisible; }
</span><ins>+#endif
</ins><span class="cx">     void showPopup();
</span><span class="cx">     void hidePopup();
</span><span class="cx"> 
</span><span class="lines">@@ -145,8 +147,10 @@
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;RenderStyle&gt; m_optionStyle;
</span><span class="cx"> 
</span><ins>+#if !PLATFORM(IOS)
</ins><span class="cx">     RefPtr&lt;PopupMenu&gt; m_popup;
</span><span class="cx">     bool m_popupIsVisible;
</span><ins>+#endif
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; inline bool isRendererOfType&lt;const RenderMenuList&gt;(const RenderObject&amp; renderer) { return renderer.isMenuList(); }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderObjectcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderObject.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderObject.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderObject.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -67,6 +67,10 @@
</span><span class="cx"> #include &quot;SVGRenderSupport.h&quot;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+#include &quot;SelectionRect.h&quot;
+#endif
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> using namespace HTMLNames;
</span><span class="lines">@@ -1127,6 +1131,57 @@
</span><span class="cx">         graphicsContext-&gt;endTransparencyLayer();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+// FIXME: Make this return an unsigned integer?
+int RenderObject::columnNumberForOffset(int offset)
+{
+    int columnNumber = 0;
+    RenderBlock* containingBlock = this-&gt;containingBlock();
+    RenderView&amp; view = containingBlock-&gt;view();
+    const Pagination&amp; pagination = view.frameView().frame().page()-&gt;pagination();
+    if (pagination.mode == Pagination::Unpaginated)
+        return columnNumber;
+
+    ColumnInfo* columnInfo = view.columnInfo();
+    if (columnInfo &amp;&amp; columnInfo-&gt;progressionAxis() == ColumnInfo::BlockAxis) {
+        if (!columnInfo-&gt;progressionIsReversed())
+            columnNumber = (pagination.pageLength + pagination.gap - offset) / (pagination.pageLength + pagination.gap);
+        else
+            columnNumber = offset / (pagination.pageLength + pagination.gap);
+    }
+    return columnNumber;
+}
+
+#if PLATFORM(IOS)
+// This function is similar in spirit to RenderText::absoluteRectsForRange, but returns rectangles
+// which are annotated with additional state which helps iOS draw selections in its unique way.
+// No annotations are added in this class.
+// FIXME: Move to RenderText with absoluteRectsForRange()?
+void RenderObject::collectSelectionRects(Vector&lt;SelectionRect&gt;&amp; rects, unsigned start, unsigned end)
+{
+    Vector&lt;FloatQuad&gt; quads;
+
+    if (!firstChildSlow()) {
+        // FIXME: WebKit's position for an empty span after a BR is incorrect, so we can't trust 
+        // quads for them. We don't need selection rects for those anyway though, since they 
+        // are just empty containers. See &lt;https://bugs.webkit.org/show_bug.cgi?id=49358&gt;.
+        RenderObject* previous = previousSibling();
+        Node* node = this-&gt;node();
+        if (!previous || !previous-&gt;isBR() || !node || !node-&gt;isContainerNode() || !isInline()) {
+            // For inline elements we don't use absoluteQuads, since it takes into account continuations and leads to wrong results.
+            absoluteQuadsForSelection(quads);
+        }
+    } else {
+        unsigned offset = start;
+        for (RenderObject* child = childAt(start); child &amp;&amp; offset &lt; end; child = child-&gt;nextSibling(), ++offset)
+            child-&gt;absoluteQuads(quads);
+    }
+
+    unsigned numberOfQuads = quads.size();
+    for (unsigned i = 0; i &lt; numberOfQuads; ++i)
+        rects.append(SelectionRect(quads[i].enclosingBoundingBox(), isHorizontalWritingMode(), columnNumberForOffset(quads[i].enclosingBoundingBox().x())));
+}
+#endif
+
</ins><span class="cx"> IntRect RenderObject::absoluteBoundingBoxRect(bool useTransforms) const
</span><span class="cx"> {
</span><span class="cx">     if (useTransforms) {
</span><span class="lines">@@ -2093,6 +2148,11 @@
</span><span class="cx"> 
</span><span class="cx"> void RenderObject::destroy()
</span><span class="cx"> {
</span><ins>+#if PLATFORM(IOS)
+    if (hasLayer())
+        toRenderBoxModelObject(this)-&gt;layer()-&gt;willBeDestroyed();
+#endif
+
</ins><span class="cx">     willBeDestroyed();
</span><span class="cx">     delete this;
</span><span class="cx"> }
</span><span class="lines">@@ -2167,6 +2227,11 @@
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+int RenderObject::innerLineHeight() const
+{
+    return style().computedLineHeight();
+}
+
</ins><span class="cx"> RenderStyle* RenderObject::getCachedPseudoStyle(PseudoId pseudo, RenderStyle* parentStyle) const
</span><span class="cx"> {
</span><span class="cx">     if (pseudo &lt; FIRST_INTERNAL_PSEUDOID &amp;&amp; !style().hasPseudoStyle(pseudo))
</span><span class="lines">@@ -2343,9 +2408,14 @@
</span><span class="cx">     if (style().visibility() != VISIBLE)
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+    if (document().frame()-&gt;timersPaused())
+        return false;
+#else
</ins><span class="cx">     // We will not render a new image when Active DOM is suspended
</span><span class="cx">     if (document().activeDOMObjectsAreSuspended())
</span><span class="cx">         return false;
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx">     // If we're not in a window (i.e., we're dormant from being put in the b/f cache or in a background tab)
</span><span class="cx">     // then we don't want to render either.
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderObjecth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderObject.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderObject.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderObject.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -65,6 +65,9 @@
</span><span class="cx"> #if ENABLE(SVG)
</span><span class="cx"> class RenderSVGResourceContainer;
</span><span class="cx"> #endif
</span><ins>+#if PLATFORM(IOS)
+class SelectionRect;
+#endif
</ins><span class="cx"> 
</span><span class="cx"> struct PaintInfo;
</span><span class="cx"> 
</span><span class="lines">@@ -108,7 +111,11 @@
</span><span class="cx"> };
</span><span class="cx"> typedef unsigned MapCoordinatesFlags;
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+const int caretWidth = 2; // This value should be kept in sync with UIKit. See &lt;rdar://problem/15580601&gt;.
+#else
</ins><span class="cx"> const int caretWidth = 1;
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(DASHBOARD_SUPPORT) || ENABLE(DRAGGABLE_REGION)
</span><span class="cx"> struct AnnotatedRegionValue {
</span><span class="lines">@@ -653,7 +660,11 @@
</span><span class="cx">     void setHasLayer(bool b = true) { m_bitfields.setHasLayer(b); }
</span><span class="cx">     void setHasTransform(bool b = true) { m_bitfields.setHasTransform(b); }
</span><span class="cx">     void setHasReflection(bool b = true) { m_bitfields.setHasReflection(b); }
</span><del>-    
</del><ins>+
+    // Hook so that RenderTextControl can return the line height of its inner renderer.
+    // For other renderers, the value is the same as lineHeight(false).
+    virtual int innerLineHeight() const;
+
</ins><span class="cx">     // used for element state updates that cannot be fixed with a
</span><span class="cx">     // repaint and do not need a relayout
</span><span class="cx">     virtual void updateFromElement() { }
</span><span class="lines">@@ -707,7 +718,12 @@
</span><span class="cx">     virtual LayoutSize offsetFromContainer(RenderObject*, const LayoutPoint&amp;, bool* offsetDependsOnPoint = 0) const;
</span><span class="cx">     // Return the offset from an object up the container() chain. Asserts that none of the intermediate objects have transforms.
</span><span class="cx">     LayoutSize offsetFromAncestorContainer(RenderObject*) const;
</span><del>-    
</del><ins>+
+#if PLATFORM(IOS)
+    virtual void collectSelectionRects(Vector&lt;SelectionRect&gt;&amp;, unsigned startOffset = 0, unsigned endOffset = std::numeric_limits&lt;unsigned&gt;::max());
+    virtual void absoluteQuadsForSelection(Vector&lt;FloatQuad&gt;&amp; quads) const { absoluteQuads(quads); }
+#endif
+
</ins><span class="cx">     virtual void absoluteRects(Vector&lt;IntRect&gt;&amp;, const LayoutPoint&amp;) const { }
</span><span class="cx"> 
</span><span class="cx">     // FIXME: useTransforms should go away eventually
</span><span class="lines">@@ -905,9 +921,10 @@
</span><span class="cx"> 
</span><span class="cx">     RespectImageOrientationEnum shouldRespectImageOrientation() const;
</span><span class="cx"> 
</span><del>-protected:
</del><span class="cx">     void drawLineForBoxSide(GraphicsContext*, int x1, int y1, int x2, int y2, BoxSide,
</span><span class="cx">                             Color, EBorderStyle, int adjbw1, int adjbw2, bool antialias = false);
</span><ins>+protected:
+    int columnNumberForOffset(int offset);
</ins><span class="cx"> 
</span><span class="cx">     void paintFocusRing(PaintInfo&amp;, const LayoutPoint&amp;, RenderStyle*);
</span><span class="cx">     void paintOutline(PaintInfo&amp;, const LayoutRect&amp;);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderQuotecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderQuote.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderQuote.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderQuote.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -62,7 +62,7 @@
</span><span class="cx"> void RenderQuote::styleDidChange(StyleDifference diff, const RenderStyle* oldStyle)
</span><span class="cx"> {
</span><span class="cx">     RenderText::styleDidChange(diff, oldStyle);
</span><del>-    setText(originalText());
</del><ins>+    setText(originalText(), true);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> const unsigned maxDistinctQuoteCharacters = 16;
</span><span class="lines">@@ -452,7 +452,7 @@
</span><span class="cx">     if (m_depth == depth)
</span><span class="cx">         return;
</span><span class="cx">     m_depth = depth;
</span><del>-    setText(originalText());
</del><ins>+    setText(originalText(), true);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderScrollbarh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderScrollbar.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderScrollbar.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderScrollbar.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -58,6 +58,8 @@
</span><span class="cx"> 
</span><span class="cx">     float opacity();
</span><span class="cx"> 
</span><ins>+    PassRefPtr&lt;RenderStyle&gt; getScrollbarPseudoStyle(ScrollbarPart, PseudoId);
+
</ins><span class="cx"> private:
</span><span class="cx">     RenderScrollbar(ScrollableArea*, ScrollbarOrientation, Element*, Frame*);
</span><span class="cx"> 
</span><span class="lines">@@ -75,7 +77,6 @@
</span><span class="cx"> 
</span><span class="cx">     void updateScrollbarParts(bool destroy = false);
</span><span class="cx"> 
</span><del>-    PassRefPtr&lt;RenderStyle&gt; getScrollbarPseudoStyle(ScrollbarPart, PseudoId);
</del><span class="cx">     void updateScrollbarPart(ScrollbarPart, bool destroy = false);
</span><span class="cx"> 
</span><span class="cx">     // This Scrollbar(Widget) may outlive the DOM which created it (during tear down),
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderSearchFieldcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderSearchField.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderSearchField.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderSearchField.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -218,6 +218,7 @@
</span><span class="cx"> 
</span><span class="cx"> String RenderSearchField::itemText(unsigned listIndex) const
</span><span class="cx"> {
</span><ins>+#if !PLATFORM(IOS)
</ins><span class="cx">     int size = listSize();
</span><span class="cx">     if (size == 1) {
</span><span class="cx">         ASSERT(!listIndex);
</span><span class="lines">@@ -225,10 +226,13 @@
</span><span class="cx">     }
</span><span class="cx">     if (!listIndex)
</span><span class="cx">         return searchMenuRecentSearchesText();
</span><ins>+#endif
</ins><span class="cx">     if (itemIsSeparator(listIndex))
</span><span class="cx">         return String();
</span><ins>+#if !PLATFORM(IOS)
</ins><span class="cx">     if (static_cast&lt;int&gt;(listIndex) == (size - 1))
</span><span class="cx">         return searchMenuClearRecentSearchesText();
</span><ins>+#endif
</ins><span class="cx">     return m_recentSearches[listIndex - 1];
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderTextcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderText.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderText.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderText.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -44,9 +44,18 @@
</span><span class="cx"> #include &quot;TextResourceDecoder.h&quot;
</span><span class="cx"> #include &quot;VisiblePosition.h&quot;
</span><span class="cx"> #include &quot;break_lines.h&quot;
</span><ins>+#include &lt;wtf/NeverDestroyed.h&gt;
</ins><span class="cx"> #include &lt;wtf/text/StringBuffer.h&gt;
</span><span class="cx"> #include &lt;wtf/unicode/CharacterNames.h&gt;
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+#include &quot;Document.h&quot;
+#include &quot;EditorClient.h&quot;
+#include &quot;LogicalSelectionOffsetCaches.h&quot;
+#include &quot;Page.h&quot;
+#include &quot;SelectionRect.h&quot;
+#endif
+
</ins><span class="cx"> using namespace WTF;
</span><span class="cx"> using namespace Unicode;
</span><span class="cx"> 
</span><span class="lines">@@ -96,6 +105,12 @@
</span><span class="cx">     int m_lastTypedCharacterOffset;
</span><span class="cx"> };
</span><span class="cx"> 
</span><ins>+static HashMap&lt;const RenderText*, String&gt;&amp; originalTextMap()
+{
+    static NeverDestroyed&lt;HashMap&lt;const RenderText*, String&gt;&gt; map;
+    return map;
+}
+
</ins><span class="cx"> static void makeCapitalized(String* string, UChar previous)
</span><span class="cx"> {
</span><span class="cx">     // FIXME: Need to change this to use u_strToTitle instead of u_totitle and to consider locale.
</span><span class="lines">@@ -146,6 +161,7 @@
</span><span class="cx">     , m_isAllASCII(text.containsOnlyASCII())
</span><span class="cx">     , m_knownToHaveNoOverflowAndNoFallbackFonts(false)
</span><span class="cx">     , m_useBackslashAsYenSymbol(false)
</span><ins>+    , m_originalTextDiffersFromRendered(false)
</ins><span class="cx"> #if ENABLE(IOS_TEXT_AUTOSIZING)
</span><span class="cx">     , m_candidateComputedTextSize(0)
</span><span class="cx"> #endif
</span><span class="lines">@@ -169,6 +185,7 @@
</span><span class="cx">     , m_isAllASCII(text.containsOnlyASCII())
</span><span class="cx">     , m_knownToHaveNoOverflowAndNoFallbackFonts(false)
</span><span class="cx">     , m_useBackslashAsYenSymbol(false)
</span><ins>+    , m_originalTextDiffersFromRendered(false)
</ins><span class="cx"> #if ENABLE(IOS_TEXT_AUTOSIZING)
</span><span class="cx">     , m_candidateComputedTextSize(0)
</span><span class="cx"> #endif
</span><span class="lines">@@ -184,14 +201,12 @@
</span><span class="cx">     view().frameView().incrementVisuallyNonEmptyCharacterCount(textLength());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-#ifndef NDEBUG
-
</del><span class="cx"> RenderText::~RenderText()
</span><span class="cx"> {
</span><ins>+    if (m_originalTextDiffersFromRendered)
+        originalTextMap().remove(this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-#endif
-
</del><span class="cx"> const char* RenderText::renderName() const
</span><span class="cx"> {
</span><span class="cx">     return &quot;RenderText&quot;;
</span><span class="lines">@@ -245,7 +260,7 @@
</span><span class="cx">     ETextTransform oldTransform = oldStyle ? oldStyle-&gt;textTransform() : TTNONE;
</span><span class="cx">     ETextSecurity oldSecurity = oldStyle ? oldStyle-&gt;textSecurity() : TSNONE;
</span><span class="cx">     if (needsResetText || oldTransform != newStyle.textTransform() || oldSecurity != newStyle.textSecurity())
</span><del>-        transformText();
</del><ins>+        RenderText::setText(originalText(), true);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RenderText::removeAndDestroyTextBoxes()
</span><span class="lines">@@ -271,7 +286,7 @@
</span><span class="cx"> 
</span><span class="cx"> String RenderText::originalText() const
</span><span class="cx"> {
</span><del>-    return textNode() ? textNode()-&gt;data() : String();
</del><ins>+    return m_originalTextDiffersFromRendered ? originalTextMap().get(this) : m_text;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RenderText::absoluteRects(Vector&lt;IntRect&gt;&amp; rects, const LayoutPoint&amp; accumulatedOffset) const
</span><span class="lines">@@ -300,6 +315,83 @@
</span><span class="cx">     return m_lineBoxes.absoluteRectsForRange(*this, start, end, useSelectionHeight, wasFixed);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+// This function is similar in spirit to addLineBoxRects, but returns rectangles
+// which are annotated with additional state which helps the iPhone draw selections in its unique way.
+// Full annotations are added in this class.
+void RenderText::collectSelectionRects(Vector&lt;SelectionRect&gt;&amp; rects, unsigned start, unsigned end)
+{
+    // FIXME: Work around signed/unsigned issues. This function takes unsigneds, and is often passed UINT_MAX
+    // to mean &quot;all the way to the end&quot;. InlineTextBox coordinates are unsigneds, so changing this 
+    // function to take ints causes various internal mismatches. But selectionRect takes ints, and 
+    // passing UINT_MAX to it causes trouble. Ideally we'd change selectionRect to take unsigneds, but 
+    // that would cause many ripple effects, so for now we'll just clamp our unsigned parameters to INT_MAX.
+    ASSERT(end == std::numeric_limits&lt;unsigned&gt;::max() || end &lt;= std::numeric_limits&lt;int&gt;::max());
+    ASSERT(start &lt;= std::numeric_limits&lt;int&gt;::max());
+    start = std::min(start, static_cast&lt;unsigned&gt;(std::numeric_limits&lt;int&gt;::max()));
+    end = std::min(end, static_cast&lt;unsigned&gt;(std::numeric_limits&lt;int&gt;::max()));
+
+    for (InlineTextBox* box = firstTextBox(); box; box = box-&gt;nextTextBox()) {
+        LayoutRect rect;
+        // Note, box-&gt;end() returns the index of the last character, not the index past it.
+        if (start &lt;= box-&gt;start() &amp;&amp; box-&gt;end() &lt; end)
+            rect = box-&gt;localSelectionRect(start, end);
+        else {
+            unsigned realEnd = std::min(box-&gt;end() + 1, end);
+            rect = box-&gt;localSelectionRect(start, realEnd);
+            if (rect.isEmpty())
+                continue;
+        }
+
+        if (box-&gt;root().isFirstAfterPageBreak()) {
+            if (box-&gt;isHorizontal())
+                rect.shiftYEdgeTo(box-&gt;root().lineTopWithLeading());
+            else
+                rect.shiftXEdgeTo(box-&gt;root().lineTopWithLeading());
+        }
+
+        RenderBlock* containingBlock = this-&gt;containingBlock();
+        // Map rect, extended left to leftOffset, and right to rightOffset, through transforms to get minX and maxX.
+        LogicalSelectionOffsetCaches cache(*containingBlock);
+        LayoutUnit leftOffset = containingBlock-&gt;logicalLeftSelectionOffset(*containingBlock, box-&gt;logicalTop(), cache);
+        LayoutUnit rightOffset = containingBlock-&gt;logicalRightSelectionOffset(*containingBlock, box-&gt;logicalTop(), cache);
+        LayoutRect extentsRect = rect;
+        if (box-&gt;isHorizontal()) {
+            extentsRect.setX(leftOffset);
+            extentsRect.setWidth(rightOffset - leftOffset);
+        } else {
+            extentsRect.setY(leftOffset);
+            extentsRect.setHeight(rightOffset - leftOffset);
+        }
+        extentsRect = localToAbsoluteQuad(FloatRect(extentsRect)).enclosingBoundingBox();
+        if (!box-&gt;isHorizontal())
+            extentsRect = extentsRect.transposedRect();
+        bool isFirstOnLine = !box-&gt;previousOnLineExists();
+        bool isLastOnLine = !box-&gt;nextOnLineExists();
+        if (containingBlock-&gt;isRubyBase() || containingBlock-&gt;isRubyText())
+            isLastOnLine = !containingBlock-&gt;containingBlock()-&gt;inlineBoxWrapper()-&gt;nextOnLineExists();
+
+        bool containsStart = box-&gt;start() &lt;= start &amp;&amp; box-&gt;end() + 1 &gt;= start;
+        bool containsEnd = box-&gt;start() &lt;= end &amp;&amp; box-&gt;end() + 1 &gt;= end;
+
+        bool isFixed = false;
+        IntRect absRect = localToAbsoluteQuad(FloatRect(rect), false, &amp;isFixed).enclosingBoundingBox();
+        bool boxIsHorizontal = !box-&gt;isSVGInlineTextBox() ? box-&gt;isHorizontal() : !style().svgStyle().isVerticalWritingMode();
+        // If the containing block is an inline element, we want to check the inlineBoxWrapper orientation
+        // to determine the orientation of the block. In this case we also use the inlineBoxWrapper to
+        // determine if the element is the last on the line.
+        if (containingBlock-&gt;inlineBoxWrapper()) {
+            if (containingBlock-&gt;inlineBoxWrapper()-&gt;isHorizontal() != boxIsHorizontal) {
+                boxIsHorizontal = containingBlock-&gt;inlineBoxWrapper()-&gt;isHorizontal();
+                isLastOnLine = !containingBlock-&gt;inlineBoxWrapper()-&gt;nextOnLineExists();
+            }
+        }
+
+        rects.append(SelectionRect(absRect, box-&gt;direction(), extentsRect.x(), extentsRect.maxX(), extentsRect.maxY(), 0, box-&gt;isLineBreak(), isFirstOnLine, isLastOnLine, containsStart, containsEnd, boxIsHorizontal, isFixed, containingBlock-&gt;isRubyText(), columnNumberForOffset(absRect.x())));
+    }
+}
+#endif
+
</ins><span class="cx"> Vector&lt;FloatQuad&gt; RenderText::absoluteQuadsClippedToEllipsis() const
</span><span class="cx"> {
</span><span class="cx">     if (auto layout = simpleLineLayout()) {
</span><span class="lines">@@ -885,13 +977,6 @@
</span><span class="cx">     setText(text, force || m_linesDirty);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void RenderText::transformText()
-{
-    String textToTransform = originalText();
-    if (!textToTransform.isNull())
-        setText(textToTransform, true);
-}
-
</del><span class="cx"> static inline bool isInlineFlowOrEmptyText(const RenderObject* o)
</span><span class="cx"> {
</span><span class="cx">     if (o-&gt;isRenderInline())
</span><span class="lines">@@ -938,6 +1023,13 @@
</span><span class="cx"> void RenderText::setTextInternal(const String&amp; text)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(!text.isNull());
</span><ins>+
+    if (m_originalTextDiffersFromRendered) {
+        originalTextMap().remove(this);
+        m_originalTextDiffersFromRendered = false;
+    }
+    String originalText = text;
+
</ins><span class="cx">     m_text = text;
</span><span class="cx"> 
</span><span class="cx">     if (m_useBackslashAsYenSymbol)
</span><span class="lines">@@ -953,19 +1045,36 @@
</span><span class="cx">     case TSNONE:
</span><span class="cx">         break;
</span><span class="cx">     case TSCIRCLE:
</span><ins>+#if PLATFORM(IOS)
+        secureText(blackCircle);
+#else
</ins><span class="cx">         secureText(whiteBullet);
</span><ins>+#endif
</ins><span class="cx">         break;
</span><span class="cx">     case TSDISC:
</span><ins>+#if PLATFORM(IOS)
+        secureText(blackCircle);
+#else
</ins><span class="cx">         secureText(bullet);
</span><ins>+#endif
</ins><span class="cx">         break;
</span><span class="cx">     case TSSQUARE:
</span><ins>+#if PLATFORM(IOS)
+        secureText(blackCircle);
+#else
</ins><span class="cx">         secureText(blackSquare);
</span><ins>+#endif
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     ASSERT(!m_text.isNull());
</span><span class="cx"> 
</span><span class="cx">     m_isAllASCII = m_text.containsOnlyASCII();
</span><span class="cx">     m_canUseSimpleFontCodePath = computeCanUseSimpleFontCodePath();
</span><ins>+
+    if (m_text != originalText) {
+        originalTextMap().add(this, originalText);
+        m_originalTextDiffersFromRendered = true;
+    }
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RenderText::secureText(UChar mask)
</span><span class="lines">@@ -994,7 +1103,7 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(!text.isNull());
</span><span class="cx"> 
</span><del>-    if (!force &amp;&amp; m_text == text)
</del><ins>+    if (!force &amp;&amp; text == originalText())
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     setTextInternal(text);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderTexth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderText.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderText.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderText.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -37,9 +37,8 @@
</span><span class="cx"> public:
</span><span class="cx">     RenderText(Text&amp;, const String&amp;);
</span><span class="cx">     RenderText(Document&amp;, const String&amp;);
</span><del>-#ifndef NDEBUG
</del><ins>+
</ins><span class="cx">     virtual ~RenderText();
</span><del>-#endif
</del><span class="cx"> 
</span><span class="cx">     virtual const char* renderName() const OVERRIDE;
</span><span class="cx"> 
</span><span class="lines">@@ -64,6 +63,9 @@
</span><span class="cx"> 
</span><span class="cx">     virtual void absoluteRects(Vector&lt;IntRect&gt;&amp;, const LayoutPoint&amp; accumulatedOffset) const OVERRIDE FINAL;
</span><span class="cx">     Vector&lt;IntRect&gt; absoluteRectsForRange(unsigned startOffset = 0, unsigned endOffset = UINT_MAX, bool useSelectionHeight = false, bool* wasFixed = nullptr) const;
</span><ins>+#if PLATFORM(IOS)
+    virtual void collectSelectionRects(Vector&lt;SelectionRect&gt;&amp;, unsigned startOffset = 0, unsigned endOffset = std::numeric_limits&lt;unsigned&gt;::max()) OVERRIDE;
+#endif
</ins><span class="cx"> 
</span><span class="cx">     virtual void absoluteQuads(Vector&lt;FloatQuad&gt;&amp;, bool* wasFixed) const OVERRIDE FINAL;
</span><span class="cx">     Vector&lt;FloatQuad&gt; absoluteQuadsForRange(unsigned startOffset = 0, unsigned endOffset = UINT_MAX, bool useSelectionHeight = false, bool* wasFixed = nullptr) const;
</span><span class="lines">@@ -104,8 +106,6 @@
</span><span class="cx">     virtual void setText(const String&amp;, bool force = false);
</span><span class="cx">     void setTextWithOffset(const String&amp;, unsigned offset, unsigned len, bool force = false);
</span><span class="cx"> 
</span><del>-    virtual void transformText();
-
</del><span class="cx">     virtual bool canBeSelectionLeaf() const OVERRIDE { return true; }
</span><span class="cx">     virtual void setSelectionState(SelectionState s) OVERRIDE FINAL;
</span><span class="cx">     virtual LayoutRect selectionRectForRepaint(const RenderLayerModelObject* repaintContainer, bool clipToVisibleContent = true) OVERRIDE;
</span><span class="lines">@@ -201,6 +201,7 @@
</span><span class="cx">     bool m_canUseSimpleFontCodePath : 1;
</span><span class="cx">     mutable bool m_knownToHaveNoOverflowAndNoFallbackFonts : 1;
</span><span class="cx">     bool m_useBackslashAsYenSymbol : 1;
</span><ins>+    bool m_originalTextDiffersFromRendered : 1;
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(IOS_TEXT_AUTOSIZING)
</span><span class="cx">     // FIXME: This should probably be part of the text sizing structures in Document instead. That would save some memory.
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderTextControlcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderTextControl.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderTextControl.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderTextControl.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -92,6 +92,31 @@
</span><span class="cx">     bool disabled = updateUserModifyProperty(textFormControlElement(), textBlockStyle);
</span><span class="cx">     if (disabled)
</span><span class="cx">         textBlockStyle-&gt;setColor(theme()-&gt;disabledTextColor(textBlockStyle-&gt;visitedDependentColor(CSSPropertyColor), startStyle-&gt;visitedDependentColor(CSSPropertyBackgroundColor)));
</span><ins>+#if PLATFORM(IOS)
+    if (textBlockStyle-&gt;textSecurity() != TSNONE &amp;&amp; !textBlockStyle-&gt;isLeftToRightDirection()) {
+        // Preserve the alignment but force the direction to LTR so that the last-typed, unmasked character
+        // (which cannot have RTL directionality) will appear to the right of the masked characters. See &lt;rdar://problem/7024375&gt;.
+        
+        switch (textBlockStyle-&gt;textAlign()) {
+        case TASTART:
+        case JUSTIFY:
+            textBlockStyle-&gt;setTextAlign(RIGHT);
+            break;
+        case TAEND:
+            textBlockStyle-&gt;setTextAlign(LEFT);
+            break;
+        case LEFT:
+        case RIGHT:
+        case CENTER:
+        case WEBKIT_LEFT:
+        case WEBKIT_RIGHT:
+        case WEBKIT_CENTER:
+            break;
+        }
+
+        textBlockStyle-&gt;setDirection(LTR);
+    }
+#endif
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> int RenderTextControl::textBlockLogicalHeight() const
</span><span class="lines">@@ -303,6 +328,22 @@
</span><span class="cx">     return placeholderRenderer;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+bool RenderTextControl::canScroll() const
+{
+    Element* innerText = innerTextElement();
+    return innerText &amp;&amp; innerText-&gt;renderer() &amp;&amp; innerText-&gt;renderer()-&gt;hasOverflowClip();
+}
+
+int RenderTextControl::innerLineHeight() const
+{
+    Element* innerText = innerTextElement();
+    if (innerText &amp;&amp; innerText-&gt;renderer())
+        return innerText-&gt;renderer()-&gt;style().computedLineHeight();
+    return style().computedLineHeight();
+}
+#endif
+
</ins><span class="cx"> bool RenderTextControl::canBeReplacedWithInlineRunIn() const
</span><span class="cx"> {
</span><span class="cx">     return false;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderTextControlh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderTextControl.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderTextControl.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderTextControl.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -37,6 +37,13 @@
</span><span class="cx">     HTMLTextFormControlElement&amp; textFormControlElement() const;
</span><span class="cx">     virtual PassRef&lt;RenderStyle&gt; createInnerTextStyle(const RenderStyle* startStyle) const = 0;
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+    bool canScroll() const;
+
+    // Returns the line height of the inner renderer.
+    virtual int innerLineHeight() const OVERRIDE;
+#endif
+
</ins><span class="cx"> protected:
</span><span class="cx">     RenderTextControl(HTMLTextFormControlElement&amp;, PassRef&lt;RenderStyle&gt;);
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderTextControlMultiLinecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderTextControlMultiLine.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderTextControlMultiLine.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderTextControlMultiLine.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -61,11 +61,13 @@
</span><span class="cx"> 
</span><span class="cx"> float RenderTextControlMultiLine::getAvgCharWidth(AtomicString family)
</span><span class="cx"> {
</span><ins>+#if !PLATFORM(IOS)
</ins><span class="cx">     // Since Lucida Grande is the default font, we want this to match the width
</span><span class="cx">     // of Courier New, the default font for textareas in IE, Firefox and Safari Win.
</span><span class="cx">     // 1229 is the avgCharWidth value in the OS/2 table for Courier New.
</span><span class="cx">     if (family == &quot;Lucida Grande&quot;)
</span><span class="cx">         return scaleEmToUnits(1229);
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx">     return RenderTextControl::getAvgCharWidth(family);
</span><span class="cx"> }
</span><span class="lines">@@ -91,6 +93,13 @@
</span><span class="cx">     textBlockStyle.get().inheritFrom(startStyle);
</span><span class="cx">     adjustInnerTextStyle(startStyle, &amp;textBlockStyle.get());
</span><span class="cx">     textBlockStyle.get().setDisplay(BLOCK);
</span><ins>+
+#if PLATFORM(IOS)
+    // We're adding three extra pixels of padding to line textareas up with text fields.  
+    textBlockStyle.get().setPaddingLeft(Length(3, Fixed));
+    textBlockStyle.get().setPaddingRight(Length(3, Fixed));
+#endif
+
</ins><span class="cx">     return textBlockStyle;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderTextControlSingleLinecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderTextControlSingleLine.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderTextControlSingleLine.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderTextControlSingleLine.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -45,6 +45,10 @@
</span><span class="cx"> #include &quot;TextControlInnerElements.h&quot;
</span><span class="cx"> #include &lt;wtf/StackStats.h&gt;
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+#include &quot;RenderThemeIOS.h&quot;
+#endif
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> using namespace HTMLNames;
</span><span class="lines">@@ -211,6 +215,12 @@
</span><span class="cx">         if (neededLayout)
</span><span class="cx">             computeOverflow(clientLogicalBottom());
</span><span class="cx">     }
</span><ins>+
+#if PLATFORM(IOS)
+    // FIXME: We should not be adjusting styles during layout. &lt;rdar://problem/7675493&gt;
+    if (inputElement().isSearchField())
+        RenderThemeIOS::adjustRoundBorderRadius(style(), this);
+#endif
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool RenderTextControlSingleLine::nodeAtPoint(const HitTestRequest&amp; request, HitTestResult&amp; result, const HitTestLocation&amp; locationInContainer, const LayoutPoint&amp; accumulatedOffset, HitTestAction hitTestAction)
</span><span class="lines">@@ -298,12 +308,14 @@
</span><span class="cx"> 
</span><span class="cx"> float RenderTextControlSingleLine::getAvgCharWidth(AtomicString family)
</span><span class="cx"> {
</span><ins>+#if !PLATFORM(IOS)
</ins><span class="cx">     // Since Lucida Grande is the default font, we want this to match the width
</span><span class="cx">     // of MS Shell Dlg, the default font for textareas in Firefox, Safari Win and
</span><span class="cx">     // IE for some encodings (in IE, the default font is encoding specific).
</span><span class="cx">     // 901 is the avgCharWidth value in the OS/2 table for MS Shell Dlg.
</span><span class="cx">     if (family == &quot;Lucida Grande&quot;)
</span><span class="cx">         return scaleEmToUnits(901);
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx">     return RenderTextControl::getAvgCharWidth(family);
</span><span class="cx"> }
</span><span class="lines">@@ -318,6 +330,8 @@
</span><span class="cx">     LayoutUnit result = static_cast&lt;LayoutUnit&gt;(ceiledLayoutUnit(charWidth * factor));
</span><span class="cx"> 
</span><span class="cx">     float maxCharWidth = 0.f;
</span><ins>+
+#if !PLATFORM(IOS)
</ins><span class="cx">     const AtomicString&amp; family = style().font().firstFamily();
</span><span class="cx">     // Since Lucida Grande is the default font, we want this to match the width
</span><span class="cx">     // of MS Shell Dlg, the default font for textareas in Firefox, Safari Win and
</span><span class="lines">@@ -327,6 +341,7 @@
</span><span class="cx">         maxCharWidth = scaleEmToUnits(4027);
</span><span class="cx">     else if (hasValidAvgCharWidth(family))
</span><span class="cx">         maxCharWidth = roundf(style().font().primaryFont()-&gt;maxCharWidth());
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx">     // For text inputs, IE adds some extra width.
</span><span class="cx">     if (maxCharWidth &gt; 0.f)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderTextFragmentcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderTextFragment.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderTextFragment.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderTextFragment.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -58,12 +58,6 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-String RenderTextFragment::originalText() const
-{
-    String result = textNode() ? textNode()-&gt;data() : contentString();
-    return result.substring(start(), end());
-}
-
</del><span class="cx"> bool RenderTextFragment::canBeSelectionLeaf() const
</span><span class="cx"> {
</span><span class="cx">     return textNode() &amp;&amp; textNode()-&gt;rendererIsEditable();
</span><span class="lines">@@ -103,14 +97,6 @@
</span><span class="cx">     textNode()-&gt;setRenderer(this);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void RenderTextFragment::transformText()
-{
-    // Don't reset first-letter here because we are only transforming the truncated fragment.
-    String textToTransform = originalText();
-    if (!textToTransform.isNull())
-        RenderText::setText(textToTransform, true);
-}
-
</del><span class="cx"> UChar RenderTextFragment::previousCharacter() const
</span><span class="cx"> {
</span><span class="cx">     if (start()) {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderTextFragmenth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderTextFragment.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderTextFragment.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderTextFragment.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -50,12 +50,9 @@
</span><span class="cx">     void setFirstLetter(RenderBoxModelObject&amp; firstLetter) { m_firstLetter = &amp;firstLetter; }
</span><span class="cx"> 
</span><span class="cx">     StringImpl* contentString() const { return m_contentString.impl(); }
</span><del>-    virtual String originalText() const OVERRIDE;
</del><span class="cx"> 
</span><span class="cx">     virtual void setText(const String&amp;, bool force = false) OVERRIDE;
</span><span class="cx"> 
</span><del>-    virtual void transformText() OVERRIDE;
-
</del><span class="cx">     const String&amp; altText() const { return m_altText; }
</span><span class="cx">     void setAltText(const String&amp; altText) { m_altText = altText; }
</span><span class="cx">     
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderTextLineBoxescpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderTextLineBoxes.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderTextLineBoxes.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderTextLineBoxes.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -271,12 +271,14 @@
</span><span class="cx">         return true;
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+#if !PLATFORM(IOS)
</ins><span class="cx">     // and the x coordinate is to the left of the right edge of this box
</span><span class="cx">     // check to see if position goes in this box
</span><span class="cx">     if (pointLineDirection &lt; box.logicalRight()) {
</span><span class="cx">         shouldAffinityBeDownstream = UpstreamIfPositionIsNotAtStart;
</span><span class="cx">         return true;
</span><span class="cx">     }
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx">     // box is first on line
</span><span class="cx">     // and the x coordinate is to the left of the first text box left edge
</span><span class="lines">@@ -406,6 +408,13 @@
</span><span class="cx"> 
</span><span class="cx">             if (pointBlockDirection &lt; bottom || (blocksAreFlipped &amp;&amp; pointBlockDirection == bottom)) {
</span><span class="cx">                 ShouldAffinityBeDownstream shouldAffinityBeDownstream;
</span><ins>+#if PLATFORM(IOS)
+                if (pointLineDirection != box-&gt;logicalLeft() &amp;&amp; point.x() &lt; box-&gt;x() + box-&gt;logicalWidth()) {
+                    int half = box-&gt;x() + box-&gt;logicalWidth() / 2;
+                    EAffinity affinity = point.x() &lt; half ? DOWNSTREAM : VP_UPSTREAM_IF_POSSIBLE;
+                    return renderer.createVisiblePosition(box-&gt;offsetForPosition(pointLineDirection) + box-&gt;start(), affinity);
+                }
+#endif
</ins><span class="cx">                 if (lineDirectionPointFitsInBox(pointLineDirection, *box, shouldAffinityBeDownstream))
</span><span class="cx">                     return createVisiblePositionAfterAdjustingOffsetForBiDi(*box, box-&gt;offsetForPosition(pointLineDirection), shouldAffinityBeDownstream);
</span><span class="cx">             }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderThemecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderTheme.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderTheme.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderTheme.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -80,31 +80,31 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void RenderTheme::adjustStyle(StyleResolver* styleResolver, RenderStyle* style, Element* e, bool UAHasAppearance, const BorderData&amp; border, const FillLayer&amp; background, const Color&amp; backgroundColor)
</del><ins>+void RenderTheme::adjustStyle(StyleResolver&amp; styleResolver, RenderStyle&amp; style, Element* e, bool UAHasAppearance, const BorderData&amp; border, const FillLayer&amp; background, const Color&amp; backgroundColor)
</ins><span class="cx"> {
</span><span class="cx">     // Force inline and table display styles to be inline-block (except for table- which is block)
</span><del>-    ControlPart part = style-&gt;appearance();
-    if (style-&gt;display() == INLINE || style-&gt;display() == INLINE_TABLE || style-&gt;display() == TABLE_ROW_GROUP
-        || style-&gt;display() == TABLE_HEADER_GROUP || style-&gt;display() == TABLE_FOOTER_GROUP
-        || style-&gt;display() == TABLE_ROW || style-&gt;display() == TABLE_COLUMN_GROUP || style-&gt;display() == TABLE_COLUMN
-        || style-&gt;display() == TABLE_CELL || style-&gt;display() == TABLE_CAPTION)
-        style-&gt;setDisplay(INLINE_BLOCK);
-    else if (style-&gt;display() == COMPACT || style-&gt;display() == RUN_IN || style-&gt;display() == LIST_ITEM || style-&gt;display() == TABLE)
-        style-&gt;setDisplay(BLOCK);
</del><ins>+    ControlPart part = style.appearance();
+    if (style.display() == INLINE || style.display() == INLINE_TABLE || style.display() == TABLE_ROW_GROUP
+        || style.display() == TABLE_HEADER_GROUP || style.display() == TABLE_FOOTER_GROUP
+        || style.display() == TABLE_ROW || style.display() == TABLE_COLUMN_GROUP || style.display() == TABLE_COLUMN
+        || style.display() == TABLE_CELL || style.display() == TABLE_CAPTION)
+        style.setDisplay(INLINE_BLOCK);
+    else if (style.display() == COMPACT || style.display() == RUN_IN || style.display() == LIST_ITEM || style.display() == TABLE)
+        style.setDisplay(BLOCK);
</ins><span class="cx"> 
</span><del>-    if (UAHasAppearance &amp;&amp; isControlStyled(style, border, background, backgroundColor)) {
</del><ins>+    if (UAHasAppearance &amp;&amp; isControlStyled(&amp;style, border, background, backgroundColor)) {
</ins><span class="cx">         if (part == MenulistPart) {
</span><del>-            style-&gt;setAppearance(MenulistButtonPart);
</del><ins>+            style.setAppearance(MenulistButtonPart);
</ins><span class="cx">             part = MenulistButtonPart;
</span><span class="cx">         } else
</span><del>-            style-&gt;setAppearance(NoControlPart);
</del><ins>+            style.setAppearance(NoControlPart);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (!style-&gt;hasAppearance())
</del><ins>+    if (!style.hasAppearance())
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     // Never support box-shadow on native controls.
</span><del>-    style-&gt;setBoxShadow(nullptr);
</del><ins>+    style.setBoxShadow(nullptr);
</ins><span class="cx">     
</span><span class="cx"> #if USE(NEW_THEME)
</span><span class="cx">     switch (part) {
</span><span class="lines">@@ -116,69 +116,69 @@
</span><span class="cx">     case DefaultButtonPart:
</span><span class="cx">     case ButtonPart: {
</span><span class="cx">         // Border
</span><del>-        LengthBox borderBox(style-&gt;borderTopWidth(), style-&gt;borderRightWidth(), style-&gt;borderBottomWidth(), style-&gt;borderLeftWidth());
-        borderBox = m_theme-&gt;controlBorder(part, style-&gt;font(), borderBox, style-&gt;effectiveZoom());
-        if (borderBox.top().value() != static_cast&lt;int&gt;(style-&gt;borderTopWidth())) {
</del><ins>+        LengthBox borderBox(style.borderTopWidth(), style.borderRightWidth(), style.borderBottomWidth(), style.borderLeftWidth());
+        borderBox = m_theme-&gt;controlBorder(part, style.font(), borderBox, style.effectiveZoom());
+        if (borderBox.top().value() != static_cast&lt;int&gt;(style.borderTopWidth())) {
</ins><span class="cx">             if (borderBox.top().value())
</span><del>-                style-&gt;setBorderTopWidth(borderBox.top().value());
</del><ins>+                style.setBorderTopWidth(borderBox.top().value());
</ins><span class="cx">             else
</span><del>-                style-&gt;resetBorderTop();
</del><ins>+                style.resetBorderTop();
</ins><span class="cx">         }
</span><del>-        if (borderBox.right().value() != static_cast&lt;int&gt;(style-&gt;borderRightWidth())) {
</del><ins>+        if (borderBox.right().value() != static_cast&lt;int&gt;(style.borderRightWidth())) {
</ins><span class="cx">             if (borderBox.right().value())
</span><del>-                style-&gt;setBorderRightWidth(borderBox.right().value());
</del><ins>+                style.setBorderRightWidth(borderBox.right().value());
</ins><span class="cx">             else
</span><del>-                style-&gt;resetBorderRight();
</del><ins>+                style.resetBorderRight();
</ins><span class="cx">         }
</span><del>-        if (borderBox.bottom().value() != static_cast&lt;int&gt;(style-&gt;borderBottomWidth())) {
-            style-&gt;setBorderBottomWidth(borderBox.bottom().value());
</del><ins>+        if (borderBox.bottom().value() != static_cast&lt;int&gt;(style.borderBottomWidth())) {
+            style.setBorderBottomWidth(borderBox.bottom().value());
</ins><span class="cx">             if (borderBox.bottom().value())
</span><del>-                style-&gt;setBorderBottomWidth(borderBox.bottom().value());
</del><ins>+                style.setBorderBottomWidth(borderBox.bottom().value());
</ins><span class="cx">             else
</span><del>-                style-&gt;resetBorderBottom();
</del><ins>+                style.resetBorderBottom();
</ins><span class="cx">         }
</span><del>-        if (borderBox.left().value() != static_cast&lt;int&gt;(style-&gt;borderLeftWidth())) {
-            style-&gt;setBorderLeftWidth(borderBox.left().value());
</del><ins>+        if (borderBox.left().value() != static_cast&lt;int&gt;(style.borderLeftWidth())) {
+            style.setBorderLeftWidth(borderBox.left().value());
</ins><span class="cx">             if (borderBox.left().value())
</span><del>-                style-&gt;setBorderLeftWidth(borderBox.left().value());
</del><ins>+                style.setBorderLeftWidth(borderBox.left().value());
</ins><span class="cx">             else
</span><del>-                style-&gt;resetBorderLeft();
</del><ins>+                style.resetBorderLeft();
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         // Padding
</span><del>-        LengthBox paddingBox = m_theme-&gt;controlPadding(part, style-&gt;font(), style-&gt;paddingBox(), style-&gt;effectiveZoom());
-        if (paddingBox != style-&gt;paddingBox())
-            style-&gt;setPaddingBox(paddingBox);
</del><ins>+        LengthBox paddingBox = m_theme-&gt;controlPadding(part, style.font(), style.paddingBox(), style.effectiveZoom());
+        if (paddingBox != style.paddingBox())
+            style.setPaddingBox(paddingBox);
</ins><span class="cx"> 
</span><span class="cx">         // Whitespace
</span><span class="cx">         if (m_theme-&gt;controlRequiresPreWhiteSpace(part))
</span><del>-            style-&gt;setWhiteSpace(PRE);
</del><ins>+            style.setWhiteSpace(PRE);
</ins><span class="cx">             
</span><span class="cx">         // Width / Height
</span><span class="cx">         // The width and height here are affected by the zoom.
</span><span class="cx">         // FIXME: Check is flawed, since it doesn't take min-width/max-width into account.
</span><del>-        LengthSize controlSize = m_theme-&gt;controlSize(part, style-&gt;font(), LengthSize(style-&gt;width(), style-&gt;height()), style-&gt;effectiveZoom());
-        if (controlSize.width() != style-&gt;width())
-            style-&gt;setWidth(controlSize.width());
-        if (controlSize.height() != style-&gt;height())
-            style-&gt;setHeight(controlSize.height());
</del><ins>+        LengthSize controlSize = m_theme-&gt;controlSize(part, style.font(), LengthSize(style.width(), style.height()), style.effectiveZoom());
+        if (controlSize.width() != style.width())
+            style.setWidth(controlSize.width());
+        if (controlSize.height() != style.height())
+            style.setHeight(controlSize.height());
</ins><span class="cx">                 
</span><span class="cx">         // Min-Width / Min-Height
</span><del>-        LengthSize minControlSize = m_theme-&gt;minimumControlSize(part, style-&gt;font(), style-&gt;effectiveZoom());
-        if (minControlSize.width() != style-&gt;minWidth())
-            style-&gt;setMinWidth(minControlSize.width());
-        if (minControlSize.height() != style-&gt;minHeight())
-            style-&gt;setMinHeight(minControlSize.height());
</del><ins>+        LengthSize minControlSize = m_theme-&gt;minimumControlSize(part, style.font(), style.effectiveZoom());
+        if (minControlSize.width() != style.minWidth())
+            style.setMinWidth(minControlSize.width());
+        if (minControlSize.height() != style.minHeight())
+            style.setMinHeight(minControlSize.height());
</ins><span class="cx">                 
</span><span class="cx">         // Font
</span><del>-        FontDescription controlFont = m_theme-&gt;controlFont(part, style-&gt;font(), style-&gt;effectiveZoom());
-        if (controlFont != style-&gt;font().fontDescription()) {
</del><ins>+        FontDescription controlFont = m_theme-&gt;controlFont(part, style.font(), style.effectiveZoom());
+        if (controlFont != style.font().fontDescription()) {
</ins><span class="cx">             // Reset our line-height
</span><del>-            style-&gt;setLineHeight(RenderStyle::initialLineHeight());
</del><ins>+            style.setLineHeight(RenderStyle::initialLineHeight());
</ins><span class="cx"> 
</span><span class="cx">             // Now update our font.
</span><del>-            if (style-&gt;setFontDescription(controlFont))
-                style-&gt;font().update(0);
</del><ins>+            if (style.setFontDescription(controlFont))
+                style.font().update(0);
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx">     default:
</span><span class="lines">@@ -187,28 +187,28 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     // Call the appropriate style adjustment method based off the appearance value.
</span><del>-    switch (style-&gt;appearance()) {
</del><ins>+    switch (style.appearance()) {
</ins><span class="cx"> #if !USE(NEW_THEME)
</span><span class="cx">     case CheckboxPart:
</span><del>-        return adjustCheckboxStyle(styleResolver, style, e);
</del><ins>+        return adjustCheckboxStyle(&amp;styleResolver, &amp;style, e);
</ins><span class="cx">     case RadioPart:
</span><del>-        return adjustRadioStyle(styleResolver, style, e);
</del><ins>+        return adjustRadioStyle(&amp;styleResolver, &amp;style, e);
</ins><span class="cx">     case PushButtonPart:
</span><span class="cx">     case SquareButtonPart:
</span><span class="cx">     case DefaultButtonPart:
</span><span class="cx">     case ButtonPart:
</span><del>-        return adjustButtonStyle(styleResolver, style, e);
</del><ins>+        return adjustButtonStyle(&amp;styleResolver, &amp;style, e);
</ins><span class="cx">     case InnerSpinButtonPart:
</span><del>-        return adjustInnerSpinButtonStyle(styleResolver, style, e);
</del><ins>+        return adjustInnerSpinButtonStyle(&amp;styleResolver, &amp;style, e);
</ins><span class="cx"> #endif
</span><span class="cx">     case TextFieldPart:
</span><del>-        return adjustTextFieldStyle(styleResolver, style, e);
</del><ins>+        return adjustTextFieldStyle(&amp;styleResolver, &amp;style, e);
</ins><span class="cx">     case TextAreaPart:
</span><del>-        return adjustTextAreaStyle(styleResolver, style, e);
</del><ins>+        return adjustTextAreaStyle(&amp;styleResolver, &amp;style, e);
</ins><span class="cx">     case MenulistPart:
</span><del>-        return adjustMenuListStyle(styleResolver, style, e);
</del><ins>+        return adjustMenuListStyle(&amp;styleResolver, &amp;style, e);
</ins><span class="cx">     case MenulistButtonPart:
</span><del>-        return adjustMenuListButtonStyle(styleResolver, style, e);
</del><ins>+        return adjustMenuListButtonStyle(&amp;styleResolver, &amp;style, e);
</ins><span class="cx">     case MediaPlayButtonPart:
</span><span class="cx">     case MediaCurrentTimePart:
</span><span class="cx">     case MediaTimeRemainingPart:
</span><span class="lines">@@ -216,29 +216,29 @@
</span><span class="cx">     case MediaExitFullscreenButtonPart:
</span><span class="cx">     case MediaMuteButtonPart:
</span><span class="cx">     case MediaVolumeSliderContainerPart:
</span><del>-        return adjustMediaControlStyle(styleResolver, style, e);
</del><ins>+        return adjustMediaControlStyle(&amp;styleResolver, &amp;style, e);
</ins><span class="cx">     case MediaSliderPart:
</span><span class="cx">     case MediaVolumeSliderPart:
</span><span class="cx">     case MediaFullScreenVolumeSliderPart:
</span><span class="cx">     case SliderHorizontalPart:
</span><span class="cx">     case SliderVerticalPart:
</span><del>-        return adjustSliderTrackStyle(styleResolver, style, e);
</del><ins>+        return adjustSliderTrackStyle(&amp;styleResolver, &amp;style, e);
</ins><span class="cx">     case SliderThumbHorizontalPart:
</span><span class="cx">     case SliderThumbVerticalPart:
</span><del>-        return adjustSliderThumbStyle(styleResolver, style, e);
</del><ins>+        return adjustSliderThumbStyle(&amp;styleResolver, &amp;style, e);
</ins><span class="cx">     case SearchFieldPart:
</span><del>-        return adjustSearchFieldStyle(styleResolver, style, e);
</del><ins>+        return adjustSearchFieldStyle(&amp;styleResolver, &amp;style, e);
</ins><span class="cx">     case SearchFieldCancelButtonPart:
</span><del>-        return adjustSearchFieldCancelButtonStyle(styleResolver, style, e);
</del><ins>+        return adjustSearchFieldCancelButtonStyle(&amp;styleResolver, &amp;style, e);
</ins><span class="cx">     case SearchFieldDecorationPart:
</span><del>-        return adjustSearchFieldDecorationPartStyle(styleResolver, style, e);
</del><ins>+        return adjustSearchFieldDecorationPartStyle(&amp;styleResolver, &amp;style, e);
</ins><span class="cx">     case SearchFieldResultsDecorationPart:
</span><del>-        return adjustSearchFieldResultsDecorationPartStyle(styleResolver, style, e);
</del><ins>+        return adjustSearchFieldResultsDecorationPartStyle(&amp;styleResolver, &amp;style, e);
</ins><span class="cx">     case SearchFieldResultsButtonPart:
</span><del>-        return adjustSearchFieldResultsButtonStyle(styleResolver, style, e);
</del><ins>+        return adjustSearchFieldResultsButtonStyle(&amp;styleResolver, &amp;style, e);
</ins><span class="cx"> #if ENABLE(PROGRESS_ELEMENT)
</span><span class="cx">     case ProgressBarPart:
</span><del>-        return adjustProgressBarStyle(styleResolver, style, e);
</del><ins>+        return adjustProgressBarStyle(&amp;styleResolver, &amp;style, e);
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(METER_ELEMENT)
</span><span class="cx">     case MeterPart:
</span><span class="lines">@@ -246,11 +246,11 @@
</span><span class="cx">     case ContinuousCapacityLevelIndicatorPart:
</span><span class="cx">     case DiscreteCapacityLevelIndicatorPart:
</span><span class="cx">     case RatingLevelIndicatorPart:
</span><del>-        return adjustMeterStyle(styleResolver, style, e);
</del><ins>+        return adjustMeterStyle(&amp;styleResolver, &amp;style, e);
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(INPUT_SPEECH)
</span><span class="cx">     case InputSpeechButtonPart:
</span><del>-        return adjustInputFieldSpeechButtonStyle(styleResolver, style, e);
</del><ins>+        return adjustInputFieldSpeechButtonStyle(&amp;styleResolver, &amp;style, e);
</ins><span class="cx"> #endif
</span><span class="cx">     default:
</span><span class="cx">         break;
</span><span class="lines">@@ -397,6 +397,10 @@
</span><span class="cx">     if (paintInfo.context-&gt;paintingDisabled())
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+    UNUSED_PARAM(r);
+    return o-&gt;style().appearance() != NoControlPart;
+#else
</ins><span class="cx">     // Call the appropriate paint method based off the appearance value.
</span><span class="cx">     switch (o-&gt;style().appearance()) {
</span><span class="cx">     case TextFieldPart:
</span><span class="lines">@@ -440,6 +444,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     return false;
</span><ins>+#endif
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool RenderTheme::paintDecorations(RenderObject* renderer, const PaintInfo&amp; paintInfo, const IntRect&amp; rect)
</span><span class="lines">@@ -452,15 +457,26 @@
</span><span class="cx">     case MenulistButtonPart:
</span><span class="cx">         return paintMenuListButtonDecorations(renderer, paintInfo, rect);
</span><span class="cx">     case TextFieldPart:
</span><ins>+        return paintTextFieldDecorations(renderer, paintInfo, rect);
</ins><span class="cx">     case TextAreaPart:
</span><del>-    case ListboxPart:
</del><ins>+        return paintTextAreaDecorations(renderer, paintInfo, rect);
</ins><span class="cx">     case CheckboxPart:
</span><ins>+        return paintCheckboxDecorations(renderer, paintInfo, rect);
</ins><span class="cx">     case RadioPart:
</span><ins>+        return paintRadioDecorations(renderer, paintInfo, rect);
</ins><span class="cx">     case PushButtonPart:
</span><ins>+        return paintPushButtonDecorations(renderer, paintInfo, rect);
</ins><span class="cx">     case SquareButtonPart:
</span><del>-    case DefaultButtonPart:
</del><ins>+        return paintSquareButtonDecorations(renderer, paintInfo, rect);
</ins><span class="cx">     case ButtonPart:
</span><ins>+        return paintButtonDecorations(renderer, paintInfo, rect);
</ins><span class="cx">     case MenulistPart:
</span><ins>+        return paintMenuListDecorations(renderer, paintInfo, rect);
+    case SliderThumbHorizontalPart:
+    case SliderThumbVerticalPart:
+        return paintSliderThumbDecorations(renderer, paintInfo, rect);
+    case SearchFieldPart:
+        return paintSearchFieldDecorations(renderer, paintInfo, rect);
</ins><span class="cx"> #if ENABLE(METER_ELEMENT)
</span><span class="cx">     case MeterPart:
</span><span class="cx">     case RelevancyLevelIndicatorPart:
</span><span class="lines">@@ -473,9 +489,8 @@
</span><span class="cx"> #endif
</span><span class="cx">     case SliderHorizontalPart:
</span><span class="cx">     case SliderVerticalPart:
</span><del>-    case SliderThumbHorizontalPart:
-    case SliderThumbVerticalPart:
-    case SearchFieldPart:
</del><ins>+    case ListboxPart:
+    case DefaultButtonPart:
</ins><span class="cx">     case SearchFieldCancelButtonPart:
</span><span class="cx">     case SearchFieldDecorationPart:
</span><span class="cx">     case SearchFieldResultsDecorationPart:
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderThemeh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderTheme.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderTheme.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderTheme.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -39,6 +39,7 @@
</span><span class="cx"> class Element;
</span><span class="cx"> class FileList;
</span><span class="cx"> class HTMLInputElement;
</span><ins>+class Icon;
</ins><span class="cx"> class PopupMenu;
</span><span class="cx"> class RenderMenuList;
</span><span class="cx"> #if ENABLE(METER_ELEMENT)
</span><span class="lines">@@ -72,8 +73,7 @@
</span><span class="cx">     // metrics and defaults given the contents of the style.  This includes sophisticated operations like
</span><span class="cx">     // selection of control size based off the font, the disabling of appearance when certain other properties like
</span><span class="cx">     // &quot;border&quot; are set, or if the appearance is not supported by the theme.
</span><del>-    void adjustStyle(StyleResolver*, RenderStyle*, Element*,  bool UAHasAppearance,
-                     const BorderData&amp;, const FillLayer&amp;, const Color&amp; backgroundColor);
</del><ins>+    void adjustStyle(StyleResolver&amp;, RenderStyle&amp;, Element*,  bool UAHasAppearance, const BorderData&amp;, const FillLayer&amp;, const Color&amp; backgroundColor);
</ins><span class="cx"> 
</span><span class="cx">     // This method is called to paint the widget as a background of the RenderObject.  A widget's foreground, e.g., the
</span><span class="cx">     // text of a button, is always rendered by the engine itself.  The boolean return value indicates
</span><span class="lines">@@ -271,18 +271,31 @@
</span><span class="cx">     virtual bool paintInnerSpinButton(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) { return true; }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+    virtual bool paintCheckboxDecorations(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) { return true; }
+    virtual bool paintRadioDecorations(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) { return true; }
+    virtual bool paintButtonDecorations(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) { return true; }
+
</ins><span class="cx">     virtual void adjustTextFieldStyle(StyleResolver*, RenderStyle*, Element*) const;
</span><span class="cx">     virtual bool paintTextField(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) { return true; }
</span><ins>+    virtual bool paintTextFieldDecorations(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) { return true; }
</ins><span class="cx"> 
</span><span class="cx">     virtual void adjustTextAreaStyle(StyleResolver*, RenderStyle*, Element*) const;
</span><span class="cx">     virtual bool paintTextArea(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) { return true; }
</span><ins>+    virtual bool paintTextAreaDecorations(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) { return true; }
</ins><span class="cx"> 
</span><span class="cx">     virtual void adjustMenuListStyle(StyleResolver*, RenderStyle*, Element*) const;
</span><span class="cx">     virtual bool paintMenuList(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) { return true; }
</span><ins>+    virtual bool paintMenuListDecorations(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) { return true; }
</ins><span class="cx"> 
</span><span class="cx">     virtual void adjustMenuListButtonStyle(StyleResolver*, RenderStyle*, Element*) const;
</span><span class="cx">     virtual bool paintMenuListButtonDecorations(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) { return true; }
</span><span class="cx"> 
</span><ins>+    virtual bool paintPushButtonDecorations(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) { return true; }
+    virtual bool paintSquareButtonDecorations(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) { return true; }
+
+    enum FileUploadDecorations { SingleFile, MultipleFiles };
+    virtual bool paintFileUploadIconDecorations(RenderObject* /*inputRenderer*/, RenderObject* /*buttonRenderer*/, const PaintInfo&amp;, const IntRect&amp;, Icon*, FileUploadDecorations) { return true; }
+    
</ins><span class="cx"> #if ENABLE(METER_ELEMENT)
</span><span class="cx">     virtual void adjustMeterStyle(StyleResolver*, RenderStyle*, Element*) const;
</span><span class="cx">     virtual bool paintMeter(RenderObject*, const PaintInfo&amp;, const IntRect&amp;);
</span><span class="lines">@@ -303,9 +316,11 @@
</span><span class="cx"> 
</span><span class="cx">     virtual void adjustSliderThumbStyle(StyleResolver*, RenderStyle*, Element*) const;
</span><span class="cx">     virtual bool paintSliderThumb(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) { return true; }
</span><ins>+    virtual bool paintSliderThumbDecorations(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) { return true; }
</ins><span class="cx"> 
</span><span class="cx">     virtual void adjustSearchFieldStyle(StyleResolver*, RenderStyle*, Element*) const;
</span><span class="cx">     virtual bool paintSearchField(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) { return true; }
</span><ins>+    virtual bool paintSearchFieldDecorations(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) { return true; }
</ins><span class="cx"> 
</span><span class="cx">     virtual void adjustSearchFieldCancelButtonStyle(StyleResolver*, RenderStyle*, Element*) const;
</span><span class="cx">     virtual bool paintSearchFieldCancelButton(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) { return true; }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderThemeIOSh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/rendering/RenderThemeIOS.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderThemeIOS.h                                (rev 0)
+++ branches/jsCStack/Source/WebCore/rendering/RenderThemeIOS.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,248 @@
</span><ins>+/*
+ * Copyright (C) 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef RenderThemeIOS_h
+#define RenderThemeIOS_h
+
+#if PLATFORM(IOS)
+
+#include &quot;RenderTheme.h&quot;
+
+namespace WebCore {
+    
+class RenderStyle;
+class GraphicsContext;
+    
+class RenderThemeIOS : public RenderTheme {
+public:
+    static PassRefPtr&lt;RenderTheme&gt; create();
+
+    virtual int popupInternalPaddingRight(RenderStyle*) const OVERRIDE;
+
+    static void adjustRoundBorderRadius(RenderStyle&amp;, RenderBox*);
+
+    virtual void systemFont(CSSValueID, FontDescription&amp;) const OVERRIDE;
+
+    static CFStringRef contentSizeCategory();
+
+protected:
+    virtual int baselinePosition(const RenderObject*) const OVERRIDE;
+
+    virtual bool isControlStyled(const RenderStyle*, const BorderData&amp;, const FillLayer&amp; background, const Color&amp; backgroundColor) const OVERRIDE;
+
+    // Methods for each appearance value.
+    virtual void adjustCheckboxStyle(StyleResolver*, RenderStyle*, Element*) const OVERRIDE;
+    virtual bool paintCheckboxDecorations(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) OVERRIDE;
+
+    virtual void adjustRadioStyle(StyleResolver*, RenderStyle*, Element*) const OVERRIDE;
+    virtual bool paintRadioDecorations(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) OVERRIDE;
+
+    virtual void adjustButtonStyle(StyleResolver*, RenderStyle*, Element*) const OVERRIDE;
+    virtual bool paintButtonDecorations(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) OVERRIDE;
+    virtual bool paintPushButtonDecorations(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) OVERRIDE;
+    virtual void setButtonSize(RenderStyle*) const OVERRIDE;
+
+    virtual bool paintFileUploadIconDecorations(RenderObject* inputRenderer, RenderObject* buttonRenderer, const PaintInfo&amp;, const IntRect&amp;, Icon*, FileUploadDecorations) OVERRIDE;
+
+    virtual bool paintTextFieldDecorations(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) OVERRIDE;
+    virtual bool paintTextAreaDecorations(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) OVERRIDE;
+
+    virtual void adjustMenuListButtonStyle(StyleResolver*, RenderStyle*, Element*) const OVERRIDE;
+    virtual bool paintMenuListButtonDecorations(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) OVERRIDE;
+
+    virtual void adjustSliderTrackStyle(StyleResolver*, RenderStyle*, Element*) const OVERRIDE;
+    virtual bool paintSliderTrack(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) OVERRIDE;
+
+    virtual void adjustSliderThumbSize(RenderStyle*, Element*) const OVERRIDE;
+    virtual bool paintSliderThumbDecorations(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) OVERRIDE;
+
+#if ENABLE(PROGRESS_ELEMENT)
+    // Returns the repeat interval of the animation for the progress bar.
+    virtual double animationRepeatIntervalForProgressBar(RenderProgress*) const OVERRIDE;
+    // Returns the duration of the animation for the progress bar.
+    virtual double animationDurationForProgressBar(RenderProgress*) const OVERRIDE;
+
+    virtual bool paintProgressBar(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) OVERRIDE;
+#endif
+
+#if ENABLE(DATALIST_ELEMENT)
+    virtual IntSize sliderTickSize() const OVERRIDE;
+    virtual int sliderTickOffsetFromTrackCenter() const OVERRIDE;
+#endif
+
+    virtual void adjustSearchFieldStyle(StyleResolver*, RenderStyle*, Element*) const OVERRIDE;
+    virtual bool paintSearchFieldDecorations(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) OVERRIDE;
+
+    virtual Color platformActiveSelectionBackgroundColor() const OVERRIDE;
+    virtual Color platformInactiveSelectionBackgroundColor() const OVERRIDE;
+
+#if ENABLE(TOUCH_EVENTS)
+    virtual Color platformTapHighlightColor() const OVERRIDE { return 0x4D1A1A1A; }
+#endif
+
+    virtual bool shouldShowPlaceholderWhenFocused() const OVERRIDE;
+    virtual bool shouldHaveSpinButton(HTMLInputElement*) const OVERRIDE;
+
+#if ENABLE(VIDEO)
+    virtual String mediaControlsStyleSheet() OVERRIDE;
+    virtual String mediaControlsScript() OVERRIDE;
+#endif
+
+private:
+    RenderThemeIOS();
+    virtual ~RenderThemeIOS() { }
+
+    const Color&amp; shadowColor() const;
+    FloatRect addRoundedBorderClip(RenderObject* box, GraphicsContext*, const IntRect&amp;);
+};
+
+}
+
+#endif // PLATFORM(IOS)
+#endif // RenderThemeIOS_h
+/*
+ * Copyright (C) 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef RenderThemeIOS_h
+#define RenderThemeIOS_h
+
+#if PLATFORM(IOS)
+
+#include &quot;RenderTheme.h&quot;
+
+namespace WebCore {
+    
+class RenderStyle;
+class GraphicsContext;
+    
+class RenderThemeIOS : public RenderTheme {
+public:
+    static PassRefPtr&lt;RenderTheme&gt; create();
+
+    virtual int popupInternalPaddingRight(RenderStyle*) const OVERRIDE;
+
+    static void adjustRoundBorderRadius(RenderStyle&amp;, RenderBox*);
+
+    virtual void systemFont(CSSValueID, FontDescription&amp;) const OVERRIDE;
+
+    static CFStringRef contentSizeCategory();
+
+protected:
+    virtual int baselinePosition(const RenderObject*) const OVERRIDE;
+
+    virtual bool isControlStyled(const RenderStyle*, const BorderData&amp;, const FillLayer&amp; background, const Color&amp; backgroundColor) const OVERRIDE;
+
+    // Methods for each appearance value.
+    virtual void adjustCheckboxStyle(StyleResolver*, RenderStyle*, Element*) const OVERRIDE;
+    virtual bool paintCheckboxDecorations(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) OVERRIDE;
+
+    virtual void adjustRadioStyle(StyleResolver*, RenderStyle*, Element*) const OVERRIDE;
+    virtual bool paintRadioDecorations(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) OVERRIDE;
+
+    virtual void adjustButtonStyle(StyleResolver*, RenderStyle*, Element*) const OVERRIDE;
+    virtual bool paintButtonDecorations(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) OVERRIDE;
+    virtual bool paintPushButtonDecorations(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) OVERRIDE;
+    virtual void setButtonSize(RenderStyle*) const OVERRIDE;
+
+    virtual bool paintFileUploadIconDecorations(RenderObject* inputRenderer, RenderObject* buttonRenderer, const PaintInfo&amp;, const IntRect&amp;, Icon*, FileUploadDecorations) OVERRIDE;
+
+    virtual bool paintTextFieldDecorations(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) OVERRIDE;
+    virtual bool paintTextAreaDecorations(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) OVERRIDE;
+
+    virtual void adjustMenuListButtonStyle(StyleResolver*, RenderStyle*, Element*) const OVERRIDE;
+    virtual bool paintMenuListButtonDecorations(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) OVERRIDE;
+
+    virtual void adjustSliderTrackStyle(StyleResolver*, RenderStyle*, Element*) const OVERRIDE;
+    virtual bool paintSliderTrack(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) OVERRIDE;
+
+    virtual void adjustSliderThumbSize(RenderStyle*, Element*) const OVERRIDE;
+    virtual bool paintSliderThumbDecorations(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) OVERRIDE;
+
+#if ENABLE(PROGRESS_ELEMENT)
+    // Returns the repeat interval of the animation for the progress bar.
+    virtual double animationRepeatIntervalForProgressBar(RenderProgress*) const OVERRIDE;
+    // Returns the duration of the animation for the progress bar.
+    virtual double animationDurationForProgressBar(RenderProgress*) const OVERRIDE;
+
+    virtual bool paintProgressBar(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) OVERRIDE;
+#endif
+
+#if ENABLE(DATALIST_ELEMENT)
+    virtual IntSize sliderTickSize() const OVERRIDE;
+    virtual int sliderTickOffsetFromTrackCenter() const OVERRIDE;
+#endif
+
+    virtual void adjustSearchFieldStyle(StyleResolver*, RenderStyle*, Element*) const OVERRIDE;
+    virtual bool paintSearchFieldDecorations(RenderObject*, const PaintInfo&amp;, const IntRect&amp;) OVERRIDE;
+
+    virtual Color platformActiveSelectionBackgroundColor() const OVERRIDE;
+    virtual Color platformInactiveSelectionBackgroundColor() const OVERRIDE;
+
+#if ENABLE(TOUCH_EVENTS)
+    virtual Color platformTapHighlightColor() const OVERRIDE { return 0x4D1A1A1A; }
+#endif
+
+    virtual bool shouldShowPlaceholderWhenFocused() const OVERRIDE;
+    virtual bool shouldHaveSpinButton(HTMLInputElement*) const OVERRIDE;
+
+#if ENABLE(VIDEO)
+    virtual String mediaControlsStyleSheet() OVERRIDE;
+    virtual String mediaControlsScript() OVERRIDE;
+#endif
+
+private:
+    RenderThemeIOS();
+    virtual ~RenderThemeIOS() { }
+
+    const Color&amp; shadowColor() const;
+    FloatRect addRoundedBorderClip(RenderObject* box, GraphicsContext*, const IntRect&amp;);
+};
+
+}
+
+#endif // PLATFORM(IOS)
+#endif // RenderThemeIOS_h
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderThemeIOSmm"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebCore/rendering/RenderThemeIOS.mm (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderThemeIOS.mm                                (rev 0)
+++ branches/jsCStack/Source/WebCore/rendering/RenderThemeIOS.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,2434 @@
</span><ins>+/*
+ * Copyright (C) 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;config.h&quot;
+
+#if PLATFORM(IOS)
+
+#import &quot;CSSPrimitiveValue.h&quot;
+#import &quot;CSSValueKeywords.h&quot;
+#import &quot;DateComponents.h&quot;
+#import &quot;Document.h&quot;
+#import &quot;Font.h&quot;
+#import &quot;FontCache.h&quot;
+#import &quot;Frame.h&quot;
+#import &quot;FrameView.h&quot;
+#import &quot;Gradient.h&quot;
+#import &quot;GraphicsContext.h&quot;
+#import &quot;GraphicsContextCG.h&quot;
+#import &quot;HTMLInputElement.h&quot;
+#import &quot;HTMLNames.h&quot;
+#import &quot;HTMLSelectElement.h&quot;
+#import &quot;Icon.h&quot;
+#import &quot;NodeRenderStyle.h&quot;
+#import &quot;Page.h&quot;
+#import &quot;PlatformLocale.h&quot;
+#import &quot;PaintInfo.h&quot;
+#import &quot;RenderObject.h&quot;
+#import &quot;RenderStyle.h&quot;
+#import &quot;RenderThemeIOS.h&quot;
+#import &quot;RenderView.h&quot;
+#import &quot;SoftLinking.h&quot;
+#import &quot;UserAgentScripts.h&quot;
+#import &quot;UserAgentStyleSheets.h&quot;
+#import &quot;WebCoreThreadRun.h&quot;
+#import &lt;CoreGraphics/CGPathPrivate.h&gt;
+#import &lt;CoreText/CTFontDescriptorPriv.h&gt;
+#import &lt;objc/runtime.h&gt;
+#import &lt;wtf/NeverDestroyed.h&gt;
+#import &lt;wtf/RefPtr.h&gt;
+#import &lt;wtf/StdLibExtras.h&gt;
+
+#if ENABLE(PROGRESS_ELEMENT)
+#import &quot;RenderProgress.h&quot;
+#endif
+
+@interface UIApplication
++ (UIApplication *)sharedApplication;
+@property(nonatomic,copy) NSString *preferredContentSizeCategory;
+@end
+
+SOFT_LINK_FRAMEWORK(UIKit)
+SOFT_LINK_CLASS(UIKit, UIApplication)
+SOFT_LINK_CONSTANT(UIKit, UIContentSizeCategoryDidChangeNotification, CFStringRef)
+#define UIContentSizeCategoryDidChangeNotification getUIContentSizeCategoryDidChangeNotification()
+
+namespace WebCore {
+
+const float ControlBaseHeight = 20;
+const float ControlBaseFontSize = 11;
+
+struct IOSGradient {
+    float* start; // points to static float[4]
+    float* end; // points to static float[4]
+    IOSGradient(float start[4], float end[4])
+        : start(start)
+        , end(end)
+    {
+    }
+};
+
+typedef IOSGradient* IOSGradientRef;
+
+enum Interpolation
+{
+    LinearInterpolation,
+    ExponentialInterpolation
+};
+
+static void interpolateLinearGradient(void *info, const CGFloat *inData, CGFloat *outData)
+{
+    IOSGradientRef gradient = static_cast&lt;IOSGradientRef&gt;(info);
+    float alpha = inData[0];
+    float inverse = 1.0f - alpha;
+
+    outData[0] = inverse * gradient-&gt;start[0] + alpha * gradient-&gt;end[0];
+    outData[1] = inverse * gradient-&gt;start[1] + alpha * gradient-&gt;end[1];
+    outData[2] = inverse * gradient-&gt;start[2] + alpha * gradient-&gt;end[2];
+    outData[3] = inverse * gradient-&gt;start[3] + alpha * gradient-&gt;end[3];
+}
+
+static void interpolateExponentialGradient(void *info, const CGFloat *inData, CGFloat *outData)
+{
+    IOSGradientRef gradient = static_cast&lt;IOSGradientRef&gt;(info);
+    float a = inData[0];
+    for (int paintInfo = 0; paintInfo &lt; 4; ++paintInfo) {
+        float end = logf(std::max(gradient-&gt;end[paintInfo], 0.01f));
+        float start = logf(std::max(gradient-&gt;start[paintInfo], 0.01f));
+        outData[paintInfo] = expf(start - (end + start) * a);
+    }
+}
+
+static CGFunctionRef getSharedFunctionRef(IOSGradientRef gradient, Interpolation interpolation)
+{
+    CGFunctionRef function = nullptr;
+
+    static HashMap&lt;IOSGradientRef, CGFunctionRef&gt;* linearFunctionRefs;
+    static HashMap&lt;IOSGradientRef, CGFunctionRef&gt;* exponentialFunctionRefs;;
+
+    if (interpolation == LinearInterpolation) {
+        if (!linearFunctionRefs)
+            linearFunctionRefs = new HashMap&lt;IOSGradientRef, CGFunctionRef&gt;;
+        else
+            function = linearFunctionRefs-&gt;get(gradient);
+    
+        if (!function) {
+            static struct CGFunctionCallbacks linearFunctionCallbacks =  { 0, interpolateLinearGradient, 0 };
+            linearFunctionRefs-&gt;set(gradient, function = CGFunctionCreate(gradient, 1, nullptr, 4, nullptr, &amp;linearFunctionCallbacks));
+        }
+
+        return function;
+    }
+
+    if (!exponentialFunctionRefs)
+        exponentialFunctionRefs = new HashMap&lt;IOSGradientRef, CGFunctionRef&gt;;
+    else
+        function = exponentialFunctionRefs-&gt;get(gradient);
+
+    if (!function) {
+        static struct CGFunctionCallbacks exponentialFunctionCallbacks =  { 0, interpolateExponentialGradient, 0 };
+        exponentialFunctionRefs-&gt;set(gradient, function = CGFunctionCreate(gradient, 1, 0, 4, 0, &amp;exponentialFunctionCallbacks));
+    }
+
+    return function;
+}
+
+static void drawAxialGradient(CGContextRef context, IOSGradientRef gradient, const FloatPoint&amp; startPoint, const FloatPoint&amp; stopPoint, Interpolation interpolation)
+{
+    RetainPtr&lt;CGShadingRef&gt; shading = adoptCF(CGShadingCreateAxial(deviceRGBColorSpaceRef(), startPoint, stopPoint, getSharedFunctionRef(gradient, interpolation), false, false));
+    CGContextDrawShading(context, shading.get());
+}
+
+static void drawRadialGradient(CGContextRef context, IOSGradientRef gradient, const FloatPoint&amp; startPoint, float startRadius, const FloatPoint&amp; stopPoint, float stopRadius, Interpolation interpolation)
+{
+    RetainPtr&lt;CGShadingRef&gt; shading = adoptCF(CGShadingCreateRadial(deviceRGBColorSpaceRef(), startPoint, startRadius, stopPoint, stopRadius, getSharedFunctionRef(gradient, interpolation), false, false));
+    CGContextDrawShading(context, shading.get());
+}
+
+enum IOSGradientType {
+    InsetGradient,
+    ShineGradient,
+    ShadeGradient,
+    ConvexGradient,
+    ConcaveGradient,
+    SliderTrackGradient,
+    ReadonlySliderTrackGradient,
+    SliderThumbOpaquePressedGradient,
+};
+
+static IOSGradientRef getInsetGradient()
+{
+    static float end[4] = { 0 / 255.0, 0 / 255.0, 0 / 255.0, 0 };
+    static float start[4] = { 0 / 255.0, 0 / 255.0, 0 / 255.0, 0.2 };
+    static NeverDestroyed&lt;IOSGradient&gt; gradient(start, end);
+    return &amp;gradient.get();
+}
+
+static IOSGradientRef getShineGradient()
+{
+    static float end[4] = { 1, 1, 1, 0.8 };
+    static float start[4] = { 1, 1, 1, 0 };
+    static NeverDestroyed&lt;IOSGradient&gt; gradient(start, end);
+    return &amp;gradient.get();
+}
+
+static IOSGradientRef getShadeGradient()
+{
+    static float end[4] = { 178 / 255.0, 178 / 255.0, 178 / 255.0, 0.65 };
+    static float start[4] = { 252 / 255.0, 252 / 255.0, 252 / 255.0, 0.65 };
+    static NeverDestroyed&lt;IOSGradient&gt; gradient(start, end);
+    return &amp;gradient.get();
+}
+
+static IOSGradientRef getConvexGradient()
+{
+    static float end[4] = { 255 / 255.0, 255 / 255.0, 255 / 255.0, 0.05 };
+    static float start[4] = { 255 / 255.0, 255 / 255.0, 255 / 255.0, 0.43 };
+    static NeverDestroyed&lt;IOSGradient&gt; gradient(start, end);
+    return &amp;gradient.get();
+}
+
+static IOSGradientRef getConcaveGradient()
+{
+    static float end[4] = { 255 / 255.0, 255 / 255.0, 255 / 255.0, 0.46 };
+    static float start[4] = { 255 / 255.0, 255 / 255.0, 255 / 255.0, 0 };
+    static NeverDestroyed&lt;IOSGradient&gt; gradient(start, end);
+    return &amp;gradient.get();
+}
+
+static IOSGradientRef getSliderTrackGradient()
+{
+    static float end[4] = { 132 / 255.0, 132 / 255.0, 132 / 255.0, 1 };
+    static float start[4] = { 74 / 255.0, 77 / 255.0, 80 / 255.0, 1 };
+    static NeverDestroyed&lt;IOSGradient&gt; gradient(start, end);
+    return &amp;gradient.get();
+}
+
+static IOSGradientRef getReadonlySliderTrackGradient()
+{
+    static float end[4] = { 132 / 255.0, 132 / 255.0, 132 / 255.0, 0.4 };
+    static float start[4] = { 74 / 255.0, 77 / 255.0, 80 /255.0, 0.4 };
+    static NeverDestroyed&lt;IOSGradient&gt; gradient(start, end);
+    return &amp;gradient.get();
+}
+
+static IOSGradientRef getSliderThumbOpaquePressedGradient()
+{
+    static float end[4] = { 144 / 255.0, 144 / 255.0, 144 / 255.0, 1};
+    static float start[4] = { 55 / 255.0, 55 / 255.0, 55 / 255.0, 1 };
+    static NeverDestroyed&lt;IOSGradient&gt; gradient(start, end);
+    return &amp;gradient.get();
+}
+
+static IOSGradientRef gradientWithName(IOSGradientType gradientType)
+{
+    switch (gradientType) {
+    case InsetGradient:
+        return getInsetGradient();
+    case ShineGradient:
+        return getShineGradient();
+    case ShadeGradient:
+        return getShadeGradient();
+    case ConvexGradient:
+        return getConvexGradient();
+    case ConcaveGradient:
+        return getConcaveGradient();
+    case SliderTrackGradient:
+        return getSliderTrackGradient();
+    case ReadonlySliderTrackGradient:
+        return getReadonlySliderTrackGradient();
+    case SliderThumbOpaquePressedGradient:
+        return getSliderThumbOpaquePressedGradient();
+    }
+    ASSERT_NOT_REACHED();
+    return nullptr;
+}
+
+static void contentSizeCategoryDidChange(CFNotificationCenterRef, void*, CFStringRef name, const void*, CFDictionaryRef)
+{
+    ASSERT_UNUSED(name, CFEqual(name, UIContentSizeCategoryDidChangeNotification));
+    WebThreadRun(^{
+        Page::updateStyleForAllPagesAfterGlobalChangeInEnvironment();
+    });
+}
+
+RenderThemeIOS::RenderThemeIOS()
+{
+    CFNotificationCenterAddObserver(CFNotificationCenterGetLocalCenter(), this, contentSizeCategoryDidChange, UIContentSizeCategoryDidChangeNotification, 0, CFNotificationSuspensionBehaviorDeliverImmediately);
+}
+
+PassRefPtr&lt;RenderTheme&gt; RenderTheme::themeForPage(Page*)
+{
+    static RenderTheme* renderTheme = RenderThemeIOS::create().leakRef();
+    return renderTheme;
+}
+
+PassRefPtr&lt;RenderTheme&gt; RenderThemeIOS::create()
+{
+    return adoptRef(new RenderThemeIOS);
+}
+
+CFStringRef RenderThemeIOS::contentSizeCategory()
+{
+    return (CFStringRef)[[getUIApplicationClass() sharedApplication] preferredContentSizeCategory];
+}
+
+const Color&amp; RenderThemeIOS::shadowColor() const
+{
+    static Color color(0.0f, 0.0f, 0.0f, 0.7f);
+    return color;
+}
+
+FloatRect RenderThemeIOS::addRoundedBorderClip(RenderObject* box, GraphicsContext* context, const IntRect&amp; rect)
+{
+    // To fix inner border bleeding issues &lt;rdar://problem/9812507&gt;, we clip to the outer border and assert that
+    // the border is opaque or transparent, unless we're checked because checked radio/checkboxes show no bleeding.
+    RenderStyle&amp; style = box-&gt;style();
+    RoundedRect border = isChecked(box) ? style.getRoundedInnerBorderFor(rect) : style.getRoundedBorderFor(rect);
+
+    if (border.isRounded())
+        context-&gt;clipRoundedRect(border);
+    else
+        context-&gt;clip(border.rect());
+
+    if (isChecked(box)) {
+        ASSERT(style.visitedDependentColor(CSSPropertyBorderTopColor).alpha() % 255 == 0);
+        ASSERT(style.visitedDependentColor(CSSPropertyBorderRightColor).alpha() % 255 == 0);
+        ASSERT(style.visitedDependentColor(CSSPropertyBorderBottomColor).alpha() % 255 == 0);
+        ASSERT(style.visitedDependentColor(CSSPropertyBorderLeftColor).alpha() % 255 == 0);
+    }
+
+    return border.rect();
+}
+
+void RenderThemeIOS::adjustCheckboxStyle(StyleResolver*, RenderStyle* style, Element*) const
+{
+    if (!style-&gt;width().isIntrinsicOrAuto() &amp;&amp; !style-&gt;height().isAuto())
+        return;
+
+    Length length = Length(static_cast&lt;int&gt;(ceilf(std::max(style-&gt;fontSize(), 10))), Fixed);
+    
+    style-&gt;setWidth(length);
+    style-&gt;setHeight(length);
+}
+
+static CGPoint shortened(CGPoint start, CGPoint end, float width)
+{
+    float x = end.x - start.x;
+    float y = end.y - start.y;
+    float ratio = width / sqrtf(x * x + y * y);
+    return CGPointMake(start.x + x * ratio, start.y + y * ratio);
+}
+
+bool RenderThemeIOS::paintCheckboxDecorations(RenderObject* box, const PaintInfo&amp; paintInfo, const IntRect&amp; rect)
+{
+    GraphicsContextStateSaver stateSaver(*paintInfo.context);
+    FloatRect clip = addRoundedBorderClip(box, paintInfo.context, rect);
+
+    float width = clip.width();
+    float height = clip.height();
+
+    CGContextRef cgContext = paintInfo.context-&gt;platformContext();
+    if (isChecked(box)) {
+        drawAxialGradient(cgContext, gradientWithName(ConcaveGradient), clip.location(), FloatPoint(clip.x(), clip.maxY()), LinearInterpolation);
+
+        static float thicknessRatio = 2 / 14.0;
+        static CGSize size = { 14.0f, 14.0f };
+        static CGPoint pathRatios[3] = {
+            { 2.5f / size.width, 7.5f / size.height },
+            { 5.5f / size.width, 10.5f / size.height },
+            { 11.5f / size.width, 2.5f / size.height }
+        };
+
+        float lineWidth = std::min(width, height) * 2.0f * thicknessRatio;
+
+        CGPoint line[3] = {
+            CGPointMake(clip.x() + width * pathRatios[0].x, clip.y() + height * pathRatios[0].y),
+            CGPointMake(clip.x() + width * pathRatios[1].x, clip.y() + height * pathRatios[1].y),
+            CGPointMake(clip.x() + width * pathRatios[2].x, clip.y() + height * pathRatios[2].y)
+        };
+        CGPoint shadow[3] = {
+            shortened(line[0], line[1], lineWidth / 4.0f),
+            line[1],
+            shortened(line[2], line[1], lineWidth / 4.0f)
+        };
+
+        paintInfo.context-&gt;setStrokeThickness(lineWidth);
+        paintInfo.context-&gt;setStrokeColor(Color(0.0f, 0.0f, 0.0f, 0.7f), ColorSpaceDeviceRGB);
+
+        paintInfo.context-&gt;drawJoinedLines(shadow, 3, true, kCGLineCapSquare);
+
+        paintInfo.context-&gt;setStrokeThickness(std::min(clip.width(), clip.height()) * thicknessRatio);
+        paintInfo.context-&gt;setStrokeColor(Color(1.0f, 1.0f, 1.0f, 240 / 255.0f), ColorSpaceDeviceRGB);
+
+        paintInfo.context-&gt;drawJoinedLines(line, 3, true);
+    } else {
+        FloatPoint bottomCenter(clip.x() + clip.width() / 2.0f, clip.maxY());
+        drawAxialGradient(cgContext, gradientWithName(ShadeGradient), clip.location(), FloatPoint(clip.x(), clip.maxY()), LinearInterpolation);
+        drawRadialGradient(cgContext, gradientWithName(ShineGradient), bottomCenter, 0, bottomCenter, sqrtf((width * width) / 4.0f + height * height), ExponentialInterpolation);
+    }
+
+    return false;
+}
+
+int RenderThemeIOS::baselinePosition(const RenderObject* renderer) const
+{
+    if (!renderer-&gt;isBox())
+        return 0;
+
+    const RenderBox* box = toRenderBox(renderer);
+
+    if (box-&gt;style().appearance() == CheckboxPart || box-&gt;style().appearance() == RadioPart)
+        return box-&gt;marginTop() + box-&gt;height() - 2; // The baseline is 2px up from the bottom of the checkbox/radio in AppKit.
+    if (box-&gt;style().appearance() == MenulistPart)
+        return box-&gt;marginTop() + box-&gt;height() - 5; // This is to match AppKit. There might be a better way to calculate this though.
+    return RenderTheme::baselinePosition(box);
+}
+
+bool RenderThemeIOS::isControlStyled(const RenderStyle* style, const BorderData&amp; border, const FillLayer&amp; background, const Color&amp; backgroundColor) const
+{
+    // Buttons and MenulistButtons are styled if they contain a background image.
+    if (style-&gt;appearance() == PushButtonPart || style-&gt;appearance() == MenulistButtonPart)
+        return !style-&gt;visitedDependentColor(CSSPropertyBackgroundColor).alpha() || style-&gt;backgroundLayers()-&gt;hasImage();
+
+    if (style-&gt;appearance() == TextFieldPart || style-&gt;appearance() == TextAreaPart)
+        return *style-&gt;backgroundLayers() != background;
+
+    return RenderTheme::isControlStyled(style, border, background, backgroundColor);
+}
+
+void RenderThemeIOS::adjustRadioStyle(StyleResolver*, RenderStyle* style, Element*) const
+{
+    if (!style-&gt;width().isIntrinsicOrAuto() &amp;&amp; !style-&gt;height().isAuto())
+        return;
+
+    Length length = Length(static_cast&lt;int&gt;(ceilf(std::max(style-&gt;fontSize(), 10))), Fixed);
+    style-&gt;setWidth(length);
+    style-&gt;setHeight(length);
+    style-&gt;setBorderRadius(IntSize(length.value() / 2.0f, length.value() / 2.0f));
+}
+
+bool RenderThemeIOS::paintRadioDecorations(RenderObject* box, const PaintInfo&amp; paintInfo, const IntRect&amp; rect)
+{
+    GraphicsContextStateSaver stateSaver(*paintInfo.context);
+    FloatRect clip = addRoundedBorderClip(box, paintInfo.context, rect);
+
+    CGContextRef cgContext = paintInfo.context-&gt;platformContext();
+    if (isChecked(box)) {
+        drawAxialGradient(cgContext, gradientWithName(ConcaveGradient), clip.location(), FloatPoint(clip.x(), clip.maxY()), LinearInterpolation);
+
+        // The inner circle is 6 / 14 the size of the surrounding circle, 
+        // leaving 8 / 14 around it. (8 / 14) / 2 = 2 / 7.
+
+        static float InnerInverseRatio = 2 / 7.0;
+
+        clip.inflateX(-clip.width() * InnerInverseRatio);
+        clip.inflateY(-clip.height() * InnerInverseRatio);
+
+        paintInfo.context-&gt;drawRaisedEllipse(clip, Color::white, ColorSpaceDeviceRGB, shadowColor(), ColorSpaceDeviceRGB);
+
+        FloatSize radius(clip.width() / 2.0f, clip.height() / 2.0f);
+        paintInfo.context-&gt;clipRoundedRect(clip, radius, radius, radius, radius);
+    }
+    FloatPoint bottomCenter(clip.x() + clip.width() / 2.0, clip.maxY());
+    drawAxialGradient(cgContext, gradientWithName(ShadeGradient), clip.location(), FloatPoint(clip.x(), clip.maxY()), LinearInterpolation);
+    drawRadialGradient(cgContext, gradientWithName(ShineGradient), bottomCenter, 0, bottomCenter, std::max(clip.width(), clip.height()), ExponentialInterpolation);
+    return false;
+}
+
+bool RenderThemeIOS::paintTextFieldDecorations(RenderObject* box, const PaintInfo&amp; paintInfo, const IntRect&amp; rect)
+{
+    RenderStyle&amp; style = box-&gt;style();
+    IntPoint point(rect.x() + style.borderLeftWidth(), rect.y() + style.borderTopWidth());
+
+    GraphicsContextStateSaver stateSaver(*paintInfo.context);
+
+    paintInfo.context-&gt;clipRoundedRect(style.getRoundedBorderFor(r));
+
+    // This gradient gets drawn black when printing.
+    // Do not draw the gradient if there is no visible top border.
+    bool topBorderIsInvisible = !style.hasBorder() || !style.borderTopWidth() || style.borderTopIsTransparent();
+    if (!box-&gt;view().printing() &amp;&amp; !topBorderIsInvisible)
+        drawAxialGradient(paintInfo.context-&gt;platformContext(), gradientWithName(InsetGradient), point, FloatPoint(CGPointMake(point.x(), point.y() + 3.0f)), LinearInterpolation);
+    return false;
+}
+
+bool RenderThemeIOS::paintTextAreaDecorations(RenderObject* renderer, const PaintInfo&amp; paintInfo, const IntRect&amp; rect)
+{
+    return paintTextFieldDecorations(renderer, paintInfo, rect);
+}
+
+const int MenuListMinHeight = 15;
+
+const float MenuListBaseHeight = 20;
+const float MenuListBaseFontSize = 11;
+
+const float MenuListArrowWidth = 7;
+const float MenuListArrowHeight = 6;
+const float MenuListButtonPaddingRight = 19;
+
+int RenderThemeIOS::popupInternalPaddingRight(RenderStyle* style) const
+{
+    if (style-&gt;appearance() == MenulistButtonPart)
+        return MenuListButtonPaddingRight + style-&gt;borderTopWidth();
+    return 0;
+}
+
+void RenderThemeIOS::adjustRoundBorderRadius(RenderStyle&amp; style, RenderBox* box)
+{
+    if (style.appearance() == NoControlPart || style.backgroundLayers()-&gt;hasImage())
+        return;
+
+    // FIXME: We should not be relying on border radius for the appearance of our controls &lt;rdar://problem/7675493&gt;
+    Length radiusWidth(static_cast&lt;int&gt;(std::min(box-&gt;width(), box-&gt;height()) / 2.0), Fixed);
+    Length radiusHeight(static_cast&lt;int&gt;(box-&gt;height() / 2.0), Fixed);
+    style.setBorderRadius(LengthSize(radiusWidth, radiusHeight));
+}
+
+static void applyCommonButtonPaddingToStyle(RenderStyle* style, Element* element)
+{
+    Document&amp; document = element-&gt;document();
+    RefPtr&lt;CSSPrimitiveValue&gt; emSize = CSSPrimitiveValue::create(0.5, CSSPrimitiveValue::CSS_EMS);
+    int pixels = emSize-&gt;computeLength&lt;int&gt;(style, document.renderStyle(), document.frame()-&gt;pageZoomFactor());
+    style-&gt;setPaddingBox(LengthBox(0, pixels, 0, pixels));
+}
+
+static void adjustSelectListButtonStyle(RenderStyle* style, Element* element)
+{
+    // Enforce &quot;padding: 0 0.5em&quot;.
+    applyCommonButtonPaddingToStyle(style, element);
+
+    // Enforce &quot;line-height: normal&quot;.
+    style-&gt;setLineHeight(Length(-100.0, Percent));
+}
+
+static void adjustInputElementButtonStyle(RenderStyle* style, HTMLInputElement* inputElement)
+{
+    // Always Enforce &quot;padding: 0 0.5em&quot;.
+    applyCommonButtonPaddingToStyle(style, inputElement);
+
+    // Don't adjust the style if the width is specified.
+    if (style-&gt;width().isFixed() &amp;&amp; style-&gt;width().value() &gt; 0)
+        return;
+
+    // Don't adjust for unsupported date input types.
+    DateComponents::Type dateType = inputElement-&gt;dateType();
+    if (dateType == DateComponents::Invalid || dateType == DateComponents::Week)
+        return;
+
+    // Enforce the width and set the box-sizing to content-box to not conflict with the padding.
+    Font font = style-&gt;font();
+    float maximumWidth = inputElement-&gt;locale().maximumWidthForDateType(dateType, font);
+    if (maximumWidth &gt; 0) {    
+        int width = static_cast&lt;int&gt;(maximumWidth + MenuListButtonPaddingRight);
+        style-&gt;setWidth(Length(width, Fixed));
+        style-&gt;setBoxSizing(CONTENT_BOX);
+    }
+}
+
+void RenderThemeIOS::adjustMenuListButtonStyle(StyleResolver*, RenderStyle* style, Element* element) const
+{
+    // Set the min-height to be at least MenuListMinHeight.
+    if (style-&gt;height().isAuto())
+        style-&gt;setMinHeight(Length(std::max(MenuListMinHeight, static_cast&lt;int&gt;(MenuListBaseHeight / MenuListBaseFontSize * style-&gt;fontDescription().computedSize())), Fixed));
+    else
+        style-&gt;setMinHeight(Length(MenuListMinHeight, Fixed));
+
+    // Enforce some default styles in the case that this is a non-multiple &lt;select&gt; element,
+    // or a date input. We don't force these if this is just an element with
+    // &quot;-webkit-appearance: menulist-button&quot;.
+    if (element-&gt;hasTagName(HTMLNames::selectTag) &amp;&amp; !element-&gt;hasAttribute(HTMLNames::multipleAttr))
+        adjustSelectListButtonStyle(style, element);
+    else if (element-&gt;hasTagName(HTMLNames::inputTag)) {
+        HTMLInputElement* inputElement = static_cast&lt;HTMLInputElement*&gt;(element);
+        adjustInputElementButtonStyle(style, inputElement);
+    }
+}
+
+bool RenderThemeIOS::paintMenuListButtonDecorations(RenderObject* box, const PaintInfo&amp; paintInfo, const IntRect&amp; rect)
+{
+    RenderStyle&amp; style = box-&gt;style();
+    float borderTopWidth = style.borderTopWidth();
+    FloatRect clip(rect.x() + style.borderLeftWidth(), rect.y() + style.borderTopWidth(), rect.width() - style.borderLeftWidth() - style.borderRightWidth(), rect.height() - style.borderTopWidth() - style.borderBottomWidth());
+    CGContextRef cgContext = paintInfo.context-&gt;platformContext();
+
+    float adjustLeft = 0.5;
+    float adjustRight = 0.5;
+    float adjustTop = 0.5;
+    float adjustBottom = 0.5;
+
+    // Paint left-hand title portion.
+    {
+        FloatRect titleClip(clip.x() - adjustLeft, clip.y() - adjustTop, clip.width() - MenuListButtonPaddingRight + adjustLeft, clip.height() + adjustTop + adjustBottom);
+
+        GraphicsContextStateSaver stateSaver(*paintInfo.context);
+
+        paintInfo.context-&gt;clipRoundedRect(titleClip, 
+            FloatSize(valueForLength(style.borderTopLeftRadius().width(), rect.width()) - style.borderLeftWidth(), valueForLength(style.borderTopLeftRadius().height(), rect.height()) - style.borderTopWidth()), FloatSize(0, 0),
+            FloatSize(valueForLength(style.borderBottomLeftRadius().width(), rect.width()) - style.borderLeftWidth(), valueForLength(style.borderBottomLeftRadius().height(), rect.height()) - style.borderBottomWidth()), FloatSize(0, 0));
+
+        drawAxialGradient(cgContext, gradientWithName(ShadeGradient), titleClip.location(), FloatPoint(titleClip.x(), titleClip.maxY()), LinearInterpolation);
+        drawAxialGradient(cgContext, gradientWithName(ShineGradient), FloatPoint(titleClip.x(), titleClip.maxY()), titleClip.location(), ExponentialInterpolation);
+    }
+
+    // Draw the separator after the initial padding.
+
+    float separator = clip.maxX() - MenuListButtonPaddingRight;
+
+    box-&gt;drawLineForBoxSide(paintInfo.context, separator - borderTopWidth, clip.y(), separator, clip.maxY(), BSRight, style.visitedDependentColor(CSSPropertyBorderTopColor), style.borderTopStyle(), 0, 0);
+
+    FloatRect buttonClip(separator - adjustTop, clip.y() - adjustTop, MenuListButtonPaddingRight + adjustTop + adjustRight, clip.height() + adjustTop + adjustBottom);
+
+    // Now paint the button portion.
+    {
+        GraphicsContextStateSaver stateSaver(*paintInfo.context);
+
+        paintInfo.context-&gt;clipRoundedRect(buttonClip, 
+            FloatSize(0, 0), FloatSize(valueForLength(style.borderTopRightRadius().width(), rect.width()) - style.borderRightWidth(), valueForLength(style.borderTopRightRadius().height(), rect.height()) - style.borderTopWidth()),
+            FloatSize(0, 0), FloatSize(valueForLength(style.borderBottomRightRadius().width(), rect.width()) - style.borderRightWidth(), valueForLength(style.borderBottomRightRadius().height(), rect.height()) - style.borderBottomWidth()));
+
+        paintInfo.context-&gt;fillRect(buttonClip, style.visitedDependentColor(CSSPropertyBorderTopColor), style.colorSpace());
+
+        drawAxialGradient(cgContext, gradientWithName(isFocused(box) &amp;&amp; !isReadOnlyControl(box) ? ConcaveGradient : ConvexGradient), buttonClip.location(), FloatPoint(buttonClip.x(), buttonClip.maxY()), LinearInterpolation);
+    }
+
+    // Paint Indicators.
+
+    if (box-&gt;isMenuList() &amp;&amp; toHTMLSelectElement(box-&gt;node())-&gt;multiple()) {
+        int size = 2;
+        int count = 3;
+        int padding = 3;
+
+        IntRect ellipse(buttonClip.x() + (buttonClip.width() - count * (size + padding) + padding) / 2.0, buttonClip.maxY() - 10.0, size, size);
+
+        for (int i = 0; i &lt; count; ++i) {
+            paintInfo.context-&gt;drawRaisedEllipse(ellipse, Color::white, ColorSpaceDeviceRGB, Color(0.0f, 0.0f, 0.0f, 0.5f), ColorSpaceDeviceRGB);
+            ellipse.move(size + padding, 0);
+        }
+    }  else {
+        float centerX = floorf(buttonClip.x() + buttonClip.width() / 2.0) - 0.5;
+        float centerY = floorf(buttonClip.y() + buttonClip.height() * 3.0 / 8.0);
+
+        FloatPoint arrow[3];
+        FloatPoint shadow[3];
+
+        arrow[0] = FloatPoint(centerX - MenuListArrowWidth / 2.0, centerY);
+        arrow[1] = FloatPoint(centerX + MenuListArrowWidth / 2.0, centerY);
+        arrow[2] = FloatPoint(centerX, centerY + MenuListArrowHeight);
+
+        shadow[0] = FloatPoint(arrow[0].x(), arrow[0].y() + 1.0f);
+        shadow[1] = FloatPoint(arrow[1].x(), arrow[1].y() + 1.0f);
+        shadow[2] = FloatPoint(arrow[2].x(), arrow[2].y() + 1.0f);
+
+        float opacity = isReadOnlyControl(box) ? 0.2 : 0.5;
+        paintInfo.context-&gt;setStrokeColor(Color(0.0f, 0.0f, 0.0f, opacity), ColorSpaceDeviceRGB);
+        paintInfo.context-&gt;setFillColor(Color(0.0f, 0.0f, 0.0f, opacity), ColorSpaceDeviceRGB);
+        paintInfo.context-&gt;drawConvexPolygon(3, shadow, true);
+
+        paintInfo.context-&gt;setStrokeColor(Color::white, ColorSpaceDeviceRGB);
+        paintInfo.context-&gt;setFillColor(Color::white, ColorSpaceDeviceRGB);
+        paintInfo.context-&gt;drawConvexPolygon(3, arrow, true);
+    }
+
+    return false;
+}
+
+const CGFloat kTrackThickness = 4.0;
+const CGFloat kTrackRadius = kTrackThickness / 2.0;
+const int kDefaultSliderThumbSize = 16;
+
+void RenderThemeIOS::adjustSliderTrackStyle(StyleResolver* selector, RenderStyle* style, Element* element) const
+{
+    RenderTheme::adjustSliderTrackStyle(selector, style, element);
+
+    // FIXME: We should not be relying on border radius for the appearance of our controls &lt;rdar://problem/7675493&gt;
+    Length radiusWidth(static_cast&lt;int&gt;(kTrackRadius), Fixed);
+    Length radiusHeight(static_cast&lt;int&gt;(kTrackRadius), Fixed);
+    style-&gt;setBorderRadius(LengthSize(radiusWidth, radiusHeight));
+}
+
+bool RenderThemeIOS::paintSliderTrack(RenderObject* box, const PaintInfo&amp; paintInfo, const IntRect&amp; rect)
+{
+    IntRect trackClip = rect;
+    RenderStyle&amp; style = box-&gt;style();
+
+    bool isHorizontal = true;
+    switch (style.appearance()) {
+    case SliderHorizontalPart:
+        isHorizontal = true;
+        // Inset slightly so the thumb covers the edge.
+        if (trackClip.width() &gt; 2) {
+            trackClip.setWidth(trackClip.width() - 2);
+            trackClip.setX(trackClip.x() + 1);
+        }
+        trackClip.setHeight(static_cast&lt;int&gt;(kTrackThickness));
+        trackClip.setY(rect.y() + rect.height() / 2 - kTrackThickness / 2);
+        break;
+    case SliderVerticalPart:
+        isHorizontal = false;
+        // Inset slightly so the thumb covers the edge.
+        if (trackClip.height() &gt; 2) {
+            trackClip.setHeight(trackClip.height() - 2);
+            trackClip.setY(trackClip.y() + 1);
+        }
+        trackClip.setWidth(kTrackThickness);
+        trackClip.setX(rect.x() + rect.width() / 2 - kTrackThickness / 2);
+        break;
+    default:
+        ASSERT_NOT_REACHED();
+    }
+
+    ASSERT(trackClip.width() &gt;= 0);
+    ASSERT(trackClip.height() &gt;= 0);
+    CGFloat cornerWidth = trackClip.width() &lt; kTrackThickness ? trackClip.width() / 2.0f : kTrackRadius;
+    CGFloat cornerHeight = trackClip.height() &lt; kTrackThickness ? trackClip.height() / 2.0f : kTrackRadius;
+
+    bool readonly = isReadOnlyControl(box);
+
+#if ENABLE(DATALIST_ELEMENT)
+    paintSliderTicks(box, paintInfo, trackClip);
+#endif
+
+    // Draw the track gradient.
+    {
+        GraphicsContextStateSaver stateSaver(*paintInfo.context);
+
+        IntSize cornerSize(cornerWidth, cornerHeight);
+        RoundedRect innerBorder(trackClip, cornerSize, cornerSize, cornerSize, cornerSize);
+        paintInfo.context-&gt;clipRoundedRect(innerBorder);
+
+        CGContextRef cgContext = paintInfo.context-&gt;platformContext();
+        IOSGradientRef gradient = readonly ? gradientWithName(ReadonlySliderTrackGradient) : gradientWithName(SliderTrackGradient);
+        if (isHorizontal)
+            drawAxialGradient(cgContext, gradient, trackClip.location(), FloatPoint(trackClip.x(), trackClip.maxY()), LinearInterpolation);
+        else
+            drawAxialGradient(cgContext, gradient, trackClip.location(), FloatPoint(trackClip.maxX(), trackClip.y()), LinearInterpolation);
+    }
+
+    // Draw the track border.
+    {
+        GraphicsContextStateSaver stateSaver(*paintInfo.context);
+
+        CGContextRef cgContext = paintInfo.context-&gt;platformContext();
+        if (readonly)
+            paintInfo.context-&gt;setStrokeColor(Color(178, 178, 178), ColorSpaceDeviceRGB);
+        else
+            paintInfo.context-&gt;setStrokeColor(Color(76, 76, 76), ColorSpaceDeviceRGB);
+
+        RetainPtr&lt;CGMutablePathRef&gt; roundedRectPath = adoptCF(CGPathCreateMutable());
+        CGPathAddRoundedRect(roundedRectPath.get(), 0, trackClip, cornerWidth, cornerHeight);
+        CGContextAddPath(cgContext, roundedRectPath.get());
+        CGContextSetLineWidth(cgContext, 1);
+        CGContextStrokePath(cgContext);
+    }
+
+    return false;
+}
+
+void RenderThemeIOS::adjustSliderThumbSize(RenderStyle* style, Element*) const
+{
+    if (style-&gt;appearance() != SliderThumbHorizontalPart &amp;&amp; style-&gt;appearance() != SliderThumbVerticalPart)
+        return;
+
+    // Enforce &quot;border-radius: 50%&quot;.
+    Length length(50.0f, Percent);
+    style-&gt;setBorderRadius(LengthSize(length, length));
+
+    // Enforce a 16x16 size if no size is provided.
+    if (style-&gt;width().isIntrinsicOrAuto() || style-&gt;height().isAuto()) {
+        Length length = Length(kDefaultSliderThumbSize, Fixed);
+        style-&gt;setWidth(length);
+        style-&gt;setHeight(length);
+    }
+}
+
+bool RenderThemeIOS::paintSliderThumbDecorations(RenderObject* box, const PaintInfo&amp; paintInfo, const IntRect&amp; rect)
+{
+    GraphicsContextStateSaver stateSaver(*paintInfo.context);
+    FloatRect clip = addRoundedBorderClip(box, paintInfo.context, rect);
+
+    CGContextRef cgContext = paintInfo.context-&gt;platformContext();
+    FloatPoint bottomCenter(clip.x() + clip.width() / 2.0f, clip.maxY());
+    if (isPressed(box))
+        drawAxialGradient(cgContext, gradientWithName(SliderThumbOpaquePressedGradient), clip.location(), FloatPoint(clip.x(), clip.maxY()), LinearInterpolation);
+    else {
+        drawAxialGradient(cgContext, gradientWithName(ShadeGradient), clip.location(), FloatPoint(clip.x(), clip.maxY()), LinearInterpolation);
+        drawRadialGradient(cgContext, gradientWithName(ShineGradient), bottomCenter, 0.0f, bottomCenter, std::max(clip.width(), clip.height()), ExponentialInterpolation);
+    }
+
+    return false;
+}
+
+#if ENABLE(PROGRESS_ELEMENT)
+double RenderThemeIOS::animationRepeatIntervalForProgressBar(RenderProgress*) const
+{
+    return 0;
+}
+
+double RenderThemeIOS::animationDurationForProgressBar(RenderProgress*) const
+{
+    return 0;
+}
+
+bool RenderThemeIOS::paintProgressBar(RenderObject* renderer, const PaintInfo&amp; paintInfo, const IntRect&amp; rect)
+{
+    if (!renderer-&gt;isProgress())
+        return true;
+
+    const int progressBarHeight = 9;
+    const float verticalOffset = (rect.height() - progressBarHeight) / 2.0;
+
+    GraphicsContextStateSaver stateSaver(*paintInfo.context);
+    if (rect.width() &lt; 10 || rect.height() &lt; 9) {
+        // The rect is smaller than the standard progress bar. We clip to the element's rect to avoid
+        // leaking pixels outside the repaint rect.
+        paintInfo.context-&gt;clip(rect);
+    }
+
+    // 1) Draw the progress bar track.
+    // 1.1) Draw the white background with grey gradient border.
+    GraphicsContext* context = paintInfo.context;
+    context-&gt;setStrokeThickness(0.68);
+    context-&gt;setStrokeStyle(SolidStroke);
+
+    const float verticalRenderingPosition = rect.y() + verticalOffset;
+    RefPtr&lt;Gradient&gt; strokeGradient = Gradient::create(FloatPoint(rect.x(), verticalRenderingPosition), FloatPoint(rect.x(), verticalRenderingPosition + progressBarHeight - 1));
+    strokeGradient-&gt;addColorStop(0.0, Color(0x8d, 0x8d, 0x8d));
+    strokeGradient-&gt;addColorStop(0.45, Color(0xee, 0xee, 0xee));
+    strokeGradient-&gt;addColorStop(0.55, Color(0xee, 0xee, 0xee));
+    strokeGradient-&gt;addColorStop(1.0, Color(0x8d, 0x8d, 0x8d));
+    context-&gt;setStrokeGradient(strokeGradient.release());
+
+    ColorSpace colorSpace = renderer-&gt;style().colorSpace();
+    context-&gt;setFillColor(Color(255, 255, 255), colorSpace);
+
+    Path trackPath;
+    FloatRect trackRect(rect.x() + 0.25, verticalRenderingPosition + 0.25, rect.width() - 0.5, progressBarHeight - 0.5);
+    FloatSize roundedCornerRadius(5, 4);
+    trackPath.addRoundedRect(trackRect, roundedCornerRadius);
+    context-&gt;drawPath(trackPath);
+
+    // 1.2) Draw top gradient on the upper half. It is supposed to overlay the fill from the background and darker the stroked path.
+    FloatRect border(rect.x(), rect.y() + verticalOffset, rect.width(), progressBarHeight);
+    paintInfo.context-&gt;clipRoundedRect(border, roundedCornerRadius, roundedCornerRadius, roundedCornerRadius, roundedCornerRadius);
+
+    float upperGradientHeight = progressBarHeight / 2.;
+    RefPtr&lt;Gradient&gt; upperGradient = Gradient::create(FloatPoint(rect.x(), verticalRenderingPosition + 0.5), FloatPoint(rect.x(), verticalRenderingPosition + upperGradientHeight - 1.5));
+    upperGradient-&gt;addColorStop(0.0, Color(133, 133, 133, 188));
+    upperGradient-&gt;addColorStop(1.0, Color(18, 18, 18, 51));
+    context-&gt;setFillGradient(upperGradient.release());
+
+    context-&gt;fillRect(FloatRect(rect.x(), verticalRenderingPosition, rect.width(), upperGradientHeight));
+
+    RenderProgress* renderProgress = toRenderProgress(renderer);
+    if (renderProgress-&gt;isDeterminate()) {
+        // 2) Draw the progress bar.
+        double position = clampTo(renderProgress-&gt;position(), 0.0, 1.0);
+        double barWidth = position * rect.width();
+        RefPtr&lt;Gradient&gt; barGradient = Gradient::create(FloatPoint(rect.x(), verticalRenderingPosition + 0.5), FloatPoint(rect.x(), verticalRenderingPosition + progressBarHeight - 1));
+        barGradient-&gt;addColorStop(0.0, Color(195, 217, 247));
+        barGradient-&gt;addColorStop(0.45, Color(118, 164, 228));
+        barGradient-&gt;addColorStop(0.49, Color(118, 164, 228));
+        barGradient-&gt;addColorStop(0.51, Color(36, 114, 210));
+        barGradient-&gt;addColorStop(0.55, Color(36, 114, 210));
+        barGradient-&gt;addColorStop(1.0, Color(57, 142, 244));
+        context-&gt;setFillGradient(barGradient.release());
+
+        RefPtr&lt;Gradient&gt; barStrokeGradient = Gradient::create(FloatPoint(rect.x(), verticalRenderingPosition), FloatPoint(rect.x(), verticalRenderingPosition + progressBarHeight - 1));
+        barStrokeGradient-&gt;addColorStop(0.0, Color(95, 107, 183));
+        barStrokeGradient-&gt;addColorStop(0.5, Color(66, 106, 174, 240));
+        barStrokeGradient-&gt;addColorStop(1.0, Color(38, 104, 166));
+        context-&gt;setStrokeGradient(barStrokeGradient.release());
+
+        Path barPath;
+        int left = rect.x();
+        if (!renderProgress-&gt;style().isLeftToRightDirection())
+            left = rect.maxX() - barWidth;
+        FloatRect barRect(left + 0.25, verticalRenderingPosition + 0.25, std::max(barWidth - 0.5, 0.0), progressBarHeight - 0.5);
+        barPath.addRoundedRect(barRect, roundedCornerRadius);
+        context-&gt;drawPath(barPath);
+    }
+
+    return false;
+}
+#endif // ENABLE(PROGRESS_ELEMENT)
+
+#if ENABLE(DATALIST_ELEMENT)
+IntSize RenderThemeIOS::sliderTickSize() const
+{
+    // FIXME: &lt;rdar://problem/12271791&gt; MERGEBOT: Correct values for slider tick of &lt;input type=&quot;range&quot;&gt; elements (requires ENABLE_DATALIST_ELEMENT)
+    return IntSize(1, 3);
+}
+
+int RenderThemeIOS::sliderTickOffsetFromTrackCenter() const
+{
+    // FIXME: &lt;rdar://problem/12271791&gt; MERGEBOT: Correct values for slider tick of &lt;input type=&quot;range&quot;&gt; elements (requires ENABLE_DATALIST_ELEMENT)
+    return -9;
+}
+#endif
+
+void RenderThemeIOS::adjustSearchFieldStyle(StyleResolver* selector, RenderStyle* style, Element* element) const
+{
+    RenderTheme::adjustSearchFieldStyle(selector, style, element);
+
+    if (!element)
+        return;
+
+    if (!style-&gt;hasBorder())
+        return;
+
+    RenderBox* box = element-&gt;renderBox();
+    if (!box)
+        return;
+
+    adjustRoundBorderRadius(*style, box);
+}
+
+bool RenderThemeIOS::paintSearchFieldDecorations(RenderObject* box, const PaintInfo&amp; paintInfo, const IntRect&amp; rect)
+{
+    return paintTextFieldDecorations(box, paintInfo, rect);
+}
+
+void RenderThemeIOS::adjustButtonStyle(StyleResolver* selector, RenderStyle* style, Element* element) const
+{
+    RenderTheme::adjustButtonStyle(selector, style, element);
+
+    // Set padding: 0 1.0em; on buttons.
+    // CSSPrimitiveValue::computeLengthInt only needs the element's style to calculate em lengths.
+    // Since the element might not be in a document, just pass nullptr for the root element style.
+    RefPtr&lt;CSSPrimitiveValue&gt; emSize = CSSPrimitiveValue::create(1.0, CSSPrimitiveValue::CSS_EMS);
+    int pixels = emSize-&gt;computeLength&lt;int&gt;(style, nullptr);
+    style-&gt;setPaddingBox(LengthBox(0, pixels, 0, pixels));
+
+    if (!element)
+        return;
+
+    RenderBox* box = element-&gt;renderBox();
+    if (!box)
+        return;
+
+    adjustRoundBorderRadius(*style, box);
+}
+
+bool RenderThemeIOS::paintButtonDecorations(RenderObject* box, const PaintInfo&amp; paintInfo, const IntRect&amp; rect)
+{
+    return paintPushButtonDecorations(box, paintInfo, rect);
+}
+
+bool RenderThemeIOS::paintPushButtonDecorations(RenderObject* box, const PaintInfo&amp; paintInfo, const IntRect&amp; rect)
+{
+    GraphicsContextStateSaver stateSaver(*paintInfo.context);
+    FloatRect clip = addRoundedBorderClip(box, paintInfo.context, rect);
+
+    CGContextRef cgContext = paintInfo.context-&gt;platformContext();
+    if (box-&gt;style().visitedDependentColor(CSSPropertyBackgroundColor).isDark())
+        drawAxialGradient(cgContext, gradientWithName(ConvexGradient), clip.location(), FloatPoint(clip.x(), clip.maxY()), LinearInterpolation);
+    else {
+        drawAxialGradient(cgContext, gradientWithName(ShadeGradient), clip.location(), FloatPoint(clip.x(), clip.maxY()), LinearInterpolation);
+        drawAxialGradient(cgContext, gradientWithName(ShineGradient), FloatPoint(clip.x(), clip.maxY()), clip.location(), ExponentialInterpolation);
+    }
+    return false;
+}
+
+void RenderThemeIOS::setButtonSize(RenderStyle* style) const
+{
+    // If the width and height are both specified, then we have nothing to do.
+    if (!style-&gt;width().isIntrinsicOrAuto() &amp;&amp; !style-&gt;height().isAuto())
+        return;
+
+    // Use the font size to determine the intrinsic width of the control.
+    style-&gt;setHeight(Length(static_cast&lt;int&gt;(ControlBaseHeight / ControlBaseFontSize * style-&gt;fontDescription().computedSize()), Fixed));
+}
+
+const int kThumbnailBorderStrokeWidth = 1;
+const int kThumbnailBorderCornerRadius = 1;
+const int kVisibleBackgroundImageWidth = 1;
+const int kMultipleThumbnailShrinkSize = 2;
+
+bool RenderThemeIOS::paintFileUploadIconDecorations(RenderObject*, RenderObject* buttonRenderer, const PaintInfo&amp; paintInfo, const IntRect&amp; rect, Icon* icon, FileUploadDecorations fileUploadDecorations)
+{
+    GraphicsContextStateSaver stateSaver(*paintInfo.context);
+
+    IntSize cornerSize(kThumbnailBorderCornerRadius, kThumbnailBorderCornerRadius);
+    Color pictureFrameColor = buttonRenderer ? buttonRenderer-&gt;style().visitedDependentColor(CSSPropertyBorderTopColor) : Color(76.0f, 76.0f, 76.0f);
+
+    IntRect thumbnailPictureFrameRect = rect;
+    IntRect thumbnailRect = rect;
+    thumbnailRect.contract(2 * kThumbnailBorderStrokeWidth, 2 * kThumbnailBorderStrokeWidth);
+    thumbnailRect.move(kThumbnailBorderStrokeWidth, kThumbnailBorderStrokeWidth);
+
+    if (fileUploadDecorations == MultipleFiles) {
+        // Smaller thumbnails for multiple selection appearance.
+        thumbnailPictureFrameRect.contract(kMultipleThumbnailShrinkSize, kMultipleThumbnailShrinkSize);
+        thumbnailRect.contract(kMultipleThumbnailShrinkSize, kMultipleThumbnailShrinkSize);
+
+        // Background picture frame and simple background icon with a gradient matching the button.
+        Color backgroundImageColor = buttonRenderer ? Color(buttonRenderer-&gt;style().visitedDependentColor(CSSPropertyBackgroundColor).rgb()) : Color(206.0f, 206.0f, 206.0f);
+        paintInfo.context-&gt;fillRoundedRect(thumbnailPictureFrameRect, cornerSize, cornerSize, cornerSize, cornerSize, pictureFrameColor, ColorSpaceDeviceRGB);
+        paintInfo.context-&gt;fillRect(thumbnailRect, backgroundImageColor, ColorSpaceDeviceRGB);
+        {
+            GraphicsContextStateSaver stateSaver2(*paintInfo.context);
+            CGContextRef cgContext = paintInfo.context-&gt;platformContext();
+            paintInfo.context-&gt;clip(thumbnailRect);
+            if (backgroundImageColor.isDark())
+                drawAxialGradient(cgContext, gradientWithName(ConvexGradient), thumbnailRect.location(), FloatPoint(thumbnailRect.x(), thumbnailRect.maxY()), LinearInterpolation);
+            else {
+                drawAxialGradient(cgContext, gradientWithName(ShadeGradient), thumbnailRect.location(), FloatPoint(thumbnailRect.x(), thumbnailRect.maxY()), LinearInterpolation);
+                drawAxialGradient(cgContext, gradientWithName(ShineGradient), FloatPoint(thumbnailRect.x(), thumbnailRect.maxY()), thumbnailRect.location(), ExponentialInterpolation);
+            }
+        }
+
+        // Move the rects for the Foreground picture frame and icon.
+        int inset = kVisibleBackgroundImageWidth + kThumbnailBorderStrokeWidth;
+        thumbnailPictureFrameRect.move(inset, inset);
+        thumbnailRect.move(inset, inset);
+    }
+
+    // Foreground picture frame and icon.
+    paintInfo.context-&gt;fillRoundedRect(thumbnailPictureFrameRect, cornerSize, cornerSize, cornerSize, cornerSize, pictureFrameColor, ColorSpaceDeviceRGB);
+    icon-&gt;paint(paintInfo.context, thumbnailRect);
+
+    return false;
+}
+    
+Color RenderThemeIOS::platformActiveSelectionBackgroundColor() const
+{
+    return Color::transparent;
+}
+
+Color RenderThemeIOS::platformInactiveSelectionBackgroundColor() const
+{
+    return Color::transparent;
+}
+
+bool RenderThemeIOS::shouldShowPlaceholderWhenFocused() const
+{
+    return true;
+}
+
+bool RenderThemeIOS::shouldHaveSpinButton(HTMLInputElement*) const
+{
+    return false;
+}
+
+static FontWeight fromCTFontWeight(float fontWeight)
+{
+    if (fontWeight &lt;= -0.8)
+        return FontWeight100;
+    else if (fontWeight &lt;= -0.4)
+        return FontWeight200;
+    else if (fontWeight &lt;= -0.2)
+        return FontWeight300;
+    else if (fontWeight &lt;= 0.0)
+        return FontWeight400;
+    else if (fontWeight &lt;= 0.2)
+        return FontWeight500;
+    else if (fontWeight &lt;= 0.3)
+        return FontWeight600;
+    else if (fontWeight &lt;= 0.4)
+        return FontWeight700;
+    else if (fontWeight &lt;= 0.6)
+        return FontWeight800;
+    else if (fontWeight &lt;= 0.8)
+        return FontWeight900;
+
+    return FontWeightNormal;
+}
+
+void RenderThemeIOS::systemFont(CSSValueID valueID, FontDescription&amp; fontDescription) const
+{
+    static NeverDestroyed&lt;FontDescription&gt; systemFont;
+    static NeverDestroyed&lt;FontDescription&gt; headlineFont;
+    static NeverDestroyed&lt;FontDescription&gt; bodyFont;
+    static NeverDestroyed&lt;FontDescription&gt; subheadlineFont;
+    static NeverDestroyed&lt;FontDescription&gt; footnoteFont;
+    static NeverDestroyed&lt;FontDescription&gt; caption1Font;
+    static NeverDestroyed&lt;FontDescription&gt; caption2Font;
+    static NeverDestroyed&lt;FontDescription&gt; shortHeadlineFont;
+    static NeverDestroyed&lt;FontDescription&gt; shortBodyFont;
+    static NeverDestroyed&lt;FontDescription&gt; shortSubheadlineFont;
+    static NeverDestroyed&lt;FontDescription&gt; shortFootnoteFont;
+    static NeverDestroyed&lt;FontDescription&gt; shortCaption1Font;
+    static NeverDestroyed&lt;FontDescription&gt; tallBodyFont;
+
+    static CFStringRef userTextSize = contentSizeCategory();
+
+    if (userTextSize != contentSizeCategory()) {
+        userTextSize = contentSizeCategory();
+
+        headlineFont.setIsAbsoluteSize(false);
+        bodyFont.setIsAbsoluteSize(false);
+        subheadlineFont.setIsAbsoluteSize(false);
+        footnoteFont.setIsAbsoluteSize(false);
+        caption1Font.setIsAbsoluteSize(false);
+        caption2Font.setIsAbsoluteSize(false);
+        shortHeadlineFont.setIsAbsoluteSize(false);
+        shortBodyFont.setIsAbsoluteSize(false);
+        shortSubheadlineFont.setIsAbsoluteSize(false);
+        shortFootnoteFont.setIsAbsoluteSize(false);
+        shortCaption1Font.setIsAbsoluteSize(false);
+        tallBodyFont.setIsAbsoluteSize(false);
+    }
+
+    FontDescription* cachedDesc;
+    RetainPtr&lt;CTFontDescriptorRef&gt; fontDescriptor;
+    CFStringRef textStyle;
+    switch (valueID) {
+    case CSSValueAppleSystemHeadline:
+        cachedDesc = &amp;headlineFont;
+        textStyle = kCTUIFontTextStyleHeadline;
+        if (!headlineFont.isAbsoluteSize())
+            fontDescriptor = adoptCF(CTFontDescriptorCreateWithTextStyle(textStyle, userTextSize, 0));
+        break;
+    case CSSValueAppleSystemBody:
+        cachedDesc = &amp;bodyFont;
+        textStyle = kCTUIFontTextStyleBody;
+        if (!bodyFont.isAbsoluteSize())
+            fontDescriptor = adoptCF(CTFontDescriptorCreateWithTextStyle(textStyle, userTextSize, 0));
+        break;
+    case CSSValueAppleSystemSubheadline:
+        cachedDesc = &amp;subheadlineFont;
+        textStyle = kCTUIFontTextStyleSubhead;
+        if (!subheadlineFont.isAbsoluteSize())
+            fontDescriptor = adoptCF(CTFontDescriptorCreateWithTextStyle(textStyle, userTextSize, 0));
+        break;
+    case CSSValueAppleSystemFootnote:
+        cachedDesc = &amp;footnoteFont;
+        textStyle = kCTUIFontTextStyleFootnote;
+        if (!footnoteFont.isAbsoluteSize())
+            fontDescriptor = adoptCF(CTFontDescriptorCreateWithTextStyle(textStyle, userTextSize, 0));
+        break;
+    case CSSValueAppleSystemCaption1:
+        cachedDesc = &amp;caption1Font;
+        textStyle = kCTUIFontTextStyleCaption1;
+        if (!caption1Font.isAbsoluteSize())
+            fontDescriptor = adoptCF(CTFontDescriptorCreateWithTextStyle(textStyle, userTextSize, 0));
+        break;
+    case CSSValueAppleSystemCaption2:
+        cachedDesc = &amp;caption2Font;
+        textStyle = kCTUIFontTextStyleCaption2;
+        if (!caption2Font.isAbsoluteSize())
+            fontDescriptor = adoptCF(CTFontDescriptorCreateWithTextStyle(textStyle, userTextSize, 0));
+        break;
+
+    // Short version.
+    case CSSValueAppleSystemShortHeadline:
+        cachedDesc = &amp;shortHeadlineFont;
+        textStyle = kCTUIFontTextStyleShortHeadline;
+        if (!shortHeadlineFont.isAbsoluteSize())
+            fontDescriptor = adoptCF(CTFontDescriptorCreateWithTextStyle(textStyle, userTextSize, 0));
+        break;
+    case CSSValueAppleSystemShortBody:
+        cachedDesc = &amp;shortBodyFont;
+        textStyle = kCTUIFontTextStyleShortBody;
+        if (!shortBodyFont.isAbsoluteSize())
+            fontDescriptor = adoptCF(CTFontDescriptorCreateWithTextStyle(textStyle, userTextSize, 0));
+        break;
+    case CSSValueAppleSystemShortSubheadline:
+        cachedDesc = &amp;shortSubheadlineFont;
+        textStyle = kCTUIFontTextStyleShortSubhead;
+        if (!shortSubheadlineFont.isAbsoluteSize())
+            fontDescriptor = adoptCF(CTFontDescriptorCreateWithTextStyle(textStyle, userTextSize, 0));
+        break;
+    case CSSValueAppleSystemShortFootnote:
+        cachedDesc = &amp;shortFootnoteFont;
+        textStyle = kCTUIFontTextStyleShortFootnote;
+        if (!shortFootnoteFont.isAbsoluteSize())
+            fontDescriptor = adoptCF(CTFontDescriptorCreateWithTextStyle(textStyle, userTextSize, 0));
+        break;
+    case CSSValueAppleSystemShortCaption1:
+        cachedDesc = &amp;shortCaption1Font;
+        textStyle = kCTUIFontTextStyleShortCaption1;
+        if (!shortCaption1Font.isAbsoluteSize())
+            fontDescriptor = adoptCF(CTFontDescriptorCreateWithTextStyle(textStyle, userTextSize, 0));
+        break;
+
+    // Tall version.
+    case CSSValueAppleSystemTallBody:
+        cachedDesc = &amp;tallBodyFont;
+        textStyle = kCTUIFontTextStyleTallBody;
+        if (!tallBodyFont.isAbsoluteSize())
+            fontDescriptor = adoptCF(CTFontDescriptorCreateWithTextStyle(textStyle, userTextSize, 0));
+        break;
+
+    default:
+        textStyle = kCTFontDescriptorTextStyleEmphasized;
+        cachedDesc = &amp;systemFont;
+        if (!systemFont.isAbsoluteSize())
+            fontDescriptor = adoptCF(CTFontDescriptorCreateForUIType(kCTFontSystemFontType, 0, nullptr));
+    }
+
+    if (fontDescriptor) {
+        RetainPtr&lt;CTFontRef&gt; font = adoptCF(CTFontCreateWithFontDescriptor(fontDescriptor.get(), 0, nullptr));
+        cachedDesc-&gt;setIsAbsoluteSize(true);
+        cachedDesc-&gt;setGenericFamily(FontDescription::NoFamily);
+        cachedDesc-&gt;setOneFamily(textStyle);
+        cachedDesc-&gt;setSpecifiedSize(CTFontGetSize(font.get()));
+        cachedDesc-&gt;setWeight(fromCTFontWeight(FontCache::weightOfCTFont(font.get())));
+        cachedDesc-&gt;setItalic(0);
+    }
+    fontDescription = *cachedDesc;
+}
+
+#if ENABLE(VIDEO)
+String RenderThemeIOS::mediaControlsStyleSheet()
+{
+#if ENABLE(MEDIA_CONTROLS_SCRIPT)
+    return String(mediaControlsiOSUserAgentStyleSheet, sizeof(mediaControlsiOSUserAgentStyleSheet));
+#else
+    return emptyString();
+#endif
+}
+
+String RenderThemeIOS::mediaControlsScript()
+{
+#if ENABLE(MEDIA_CONTROLS_SCRIPT)
+    return String(mediaControlsAppleJavaScript, sizeof(mediaControlsAppleJavaScript));
+#else
+    return emptyString();
+#endif
+}
+#endif // ENABLE(VIDEO)
+
+}
+
+#endif //PLATFORM(IOS)
+/*
+ * Copyright (C) 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;config.h&quot;
+
+#if PLATFORM(IOS)
+
+#import &quot;CSSPrimitiveValue.h&quot;
+#import &quot;CSSValueKeywords.h&quot;
+#import &quot;DateComponents.h&quot;
+#import &quot;Document.h&quot;
+#import &quot;Font.h&quot;
+#import &quot;FontCache.h&quot;
+#import &quot;Frame.h&quot;
+#import &quot;FrameView.h&quot;
+#import &quot;Gradient.h&quot;
+#import &quot;GraphicsContext.h&quot;
+#import &quot;GraphicsContextCG.h&quot;
+#import &quot;HTMLInputElement.h&quot;
+#import &quot;HTMLNames.h&quot;
+#import &quot;HTMLSelectElement.h&quot;
+#import &quot;Icon.h&quot;
+#import &quot;NodeRenderStyle.h&quot;
+#import &quot;Page.h&quot;
+#import &quot;PlatformLocale.h&quot;
+#import &quot;PaintInfo.h&quot;
+#import &quot;RenderObject.h&quot;
+#import &quot;RenderStyle.h&quot;
+#import &quot;RenderThemeIOS.h&quot;
+#import &quot;RenderView.h&quot;
+#import &quot;SoftLinking.h&quot;
+#import &quot;UserAgentScripts.h&quot;
+#import &quot;UserAgentStyleSheets.h&quot;
+#import &quot;WebCoreThreadRun.h&quot;
+#import &lt;CoreGraphics/CGPathPrivate.h&gt;
+#import &lt;CoreText/CTFontDescriptorPriv.h&gt;
+#import &lt;objc/runtime.h&gt;
+#import &lt;wtf/NeverDestroyed.h&gt;
+#import &lt;wtf/RefPtr.h&gt;
+#import &lt;wtf/StdLibExtras.h&gt;
+
+#if ENABLE(PROGRESS_ELEMENT)
+#import &quot;RenderProgress.h&quot;
+#endif
+
+@interface UIApplication
++ (UIApplication *)sharedApplication;
+@property(nonatomic,copy) NSString *preferredContentSizeCategory;
+@end
+
+SOFT_LINK_FRAMEWORK(UIKit)
+SOFT_LINK_CLASS(UIKit, UIApplication)
+SOFT_LINK_CONSTANT(UIKit, UIContentSizeCategoryDidChangeNotification, CFStringRef)
+#define UIContentSizeCategoryDidChangeNotification getUIContentSizeCategoryDidChangeNotification()
+
+namespace WebCore {
+
+const float ControlBaseHeight = 20;
+const float ControlBaseFontSize = 11;
+
+struct IOSGradient {
+    float* start; // points to static float[4]
+    float* end; // points to static float[4]
+    IOSGradient(float start[4], float end[4])
+        : start(start)
+        , end(end)
+    {
+    }
+};
+
+typedef IOSGradient* IOSGradientRef;
+
+enum Interpolation
+{
+    LinearInterpolation,
+    ExponentialInterpolation
+};
+
+static void interpolateLinearGradient(void *info, const CGFloat *inData, CGFloat *outData)
+{
+    IOSGradientRef gradient = static_cast&lt;IOSGradientRef&gt;(info);
+    float alpha = inData[0];
+    float inverse = 1.0f - alpha;
+
+    outData[0] = inverse * gradient-&gt;start[0] + alpha * gradient-&gt;end[0];
+    outData[1] = inverse * gradient-&gt;start[1] + alpha * gradient-&gt;end[1];
+    outData[2] = inverse * gradient-&gt;start[2] + alpha * gradient-&gt;end[2];
+    outData[3] = inverse * gradient-&gt;start[3] + alpha * gradient-&gt;end[3];
+}
+
+static void interpolateExponentialGradient(void *info, const CGFloat *inData, CGFloat *outData)
+{
+    IOSGradientRef gradient = static_cast&lt;IOSGradientRef&gt;(info);
+    float a = inData[0];
+    for (int paintInfo = 0; paintInfo &lt; 4; ++paintInfo) {
+        float end = logf(std::max(gradient-&gt;end[paintInfo], 0.01f));
+        float start = logf(std::max(gradient-&gt;start[paintInfo], 0.01f));
+        outData[paintInfo] = expf(start - (end + start) * a);
+    }
+}
+
+static CGFunctionRef getSharedFunctionRef(IOSGradientRef gradient, Interpolation interpolation)
+{
+    CGFunctionRef function = nullptr;
+
+    static HashMap&lt;IOSGradientRef, CGFunctionRef&gt;* linearFunctionRefs;
+    static HashMap&lt;IOSGradientRef, CGFunctionRef&gt;* exponentialFunctionRefs;;
+
+    if (interpolation == LinearInterpolation) {
+        if (!linearFunctionRefs)
+            linearFunctionRefs = new HashMap&lt;IOSGradientRef, CGFunctionRef&gt;;
+        else
+            function = linearFunctionRefs-&gt;get(gradient);
+    
+        if (!function) {
+            static struct CGFunctionCallbacks linearFunctionCallbacks =  { 0, interpolateLinearGradient, 0 };
+            linearFunctionRefs-&gt;set(gradient, function = CGFunctionCreate(gradient, 1, nullptr, 4, nullptr, &amp;linearFunctionCallbacks));
+        }
+
+        return function;
+    }
+
+    if (!exponentialFunctionRefs)
+        exponentialFunctionRefs = new HashMap&lt;IOSGradientRef, CGFunctionRef&gt;;
+    else
+        function = exponentialFunctionRefs-&gt;get(gradient);
+
+    if (!function) {
+        static struct CGFunctionCallbacks exponentialFunctionCallbacks =  { 0, interpolateExponentialGradient, 0 };
+        exponentialFunctionRefs-&gt;set(gradient, function = CGFunctionCreate(gradient, 1, 0, 4, 0, &amp;exponentialFunctionCallbacks));
+    }
+
+    return function;
+}
+
+static void drawAxialGradient(CGContextRef context, IOSGradientRef gradient, const FloatPoint&amp; startPoint, const FloatPoint&amp; stopPoint, Interpolation interpolation)
+{
+    RetainPtr&lt;CGShadingRef&gt; shading = adoptCF(CGShadingCreateAxial(deviceRGBColorSpaceRef(), startPoint, stopPoint, getSharedFunctionRef(gradient, interpolation), false, false));
+    CGContextDrawShading(context, shading.get());
+}
+
+static void drawRadialGradient(CGContextRef context, IOSGradientRef gradient, const FloatPoint&amp; startPoint, float startRadius, const FloatPoint&amp; stopPoint, float stopRadius, Interpolation interpolation)
+{
+    RetainPtr&lt;CGShadingRef&gt; shading = adoptCF(CGShadingCreateRadial(deviceRGBColorSpaceRef(), startPoint, startRadius, stopPoint, stopRadius, getSharedFunctionRef(gradient, interpolation), false, false));
+    CGContextDrawShading(context, shading.get());
+}
+
+enum IOSGradientType {
+    InsetGradient,
+    ShineGradient,
+    ShadeGradient,
+    ConvexGradient,
+    ConcaveGradient,
+    SliderTrackGradient,
+    ReadonlySliderTrackGradient,
+    SliderThumbOpaquePressedGradient,
+};
+
+static IOSGradientRef getInsetGradient()
+{
+    static float end[4] = { 0 / 255.0, 0 / 255.0, 0 / 255.0, 0 };
+    static float start[4] = { 0 / 255.0, 0 / 255.0, 0 / 255.0, 0.2 };
+    static NeverDestroyed&lt;IOSGradient&gt; gradient(start, end);
+    return &amp;gradient.get();
+}
+
+static IOSGradientRef getShineGradient()
+{
+    static float end[4] = { 1, 1, 1, 0.8 };
+    static float start[4] = { 1, 1, 1, 0 };
+    static NeverDestroyed&lt;IOSGradient&gt; gradient(start, end);
+    return &amp;gradient.get();
+}
+
+static IOSGradientRef getShadeGradient()
+{
+    static float end[4] = { 178 / 255.0, 178 / 255.0, 178 / 255.0, 0.65 };
+    static float start[4] = { 252 / 255.0, 252 / 255.0, 252 / 255.0, 0.65 };
+    static NeverDestroyed&lt;IOSGradient&gt; gradient(start, end);
+    return &amp;gradient.get();
+}
+
+static IOSGradientRef getConvexGradient()
+{
+    static float end[4] = { 255 / 255.0, 255 / 255.0, 255 / 255.0, 0.05 };
+    static float start[4] = { 255 / 255.0, 255 / 255.0, 255 / 255.0, 0.43 };
+    static NeverDestroyed&lt;IOSGradient&gt; gradient(start, end);
+    return &amp;gradient.get();
+}
+
+static IOSGradientRef getConcaveGradient()
+{
+    static float end[4] = { 255 / 255.0, 255 / 255.0, 255 / 255.0, 0.46 };
+    static float start[4] = { 255 / 255.0, 255 / 255.0, 255 / 255.0, 0 };
+    static NeverDestroyed&lt;IOSGradient&gt; gradient(start, end);
+    return &amp;gradient.get();
+}
+
+static IOSGradientRef getSliderTrackGradient()
+{
+    static float end[4] = { 132 / 255.0, 132 / 255.0, 132 / 255.0, 1 };
+    static float start[4] = { 74 / 255.0, 77 / 255.0, 80 / 255.0, 1 };
+    static NeverDestroyed&lt;IOSGradient&gt; gradient(start, end);
+    return &amp;gradient.get();
+}
+
+static IOSGradientRef getReadonlySliderTrackGradient()
+{
+    static float end[4] = { 132 / 255.0, 132 / 255.0, 132 / 255.0, 0.4 };
+    static float start[4] = { 74 / 255.0, 77 / 255.0, 80 /255.0, 0.4 };
+    static NeverDestroyed&lt;IOSGradient&gt; gradient(start, end);
+    return &amp;gradient.get();
+}
+
+static IOSGradientRef getSliderThumbOpaquePressedGradient()
+{
+    static float end[4] = { 144 / 255.0, 144 / 255.0, 144 / 255.0, 1};
+    static float start[4] = { 55 / 255.0, 55 / 255.0, 55 / 255.0, 1 };
+    static NeverDestroyed&lt;IOSGradient&gt; gradient(start, end);
+    return &amp;gradient.get();
+}
+
+static IOSGradientRef gradientWithName(IOSGradientType gradientType)
+{
+    switch (gradientType) {
+    case InsetGradient:
+        return getInsetGradient();
+    case ShineGradient:
+        return getShineGradient();
+    case ShadeGradient:
+        return getShadeGradient();
+    case ConvexGradient:
+        return getConvexGradient();
+    case ConcaveGradient:
+        return getConcaveGradient();
+    case SliderTrackGradient:
+        return getSliderTrackGradient();
+    case ReadonlySliderTrackGradient:
+        return getReadonlySliderTrackGradient();
+    case SliderThumbOpaquePressedGradient:
+        return getSliderThumbOpaquePressedGradient();
+    }
+    ASSERT_NOT_REACHED();
+    return nullptr;
+}
+
+static void contentSizeCategoryDidChange(CFNotificationCenterRef, void*, CFStringRef name, const void*, CFDictionaryRef)
+{
+    ASSERT_UNUSED(name, CFEqual(name, UIContentSizeCategoryDidChangeNotification));
+    WebThreadRun(^{
+        Page::updateStyleForAllPagesAfterGlobalChangeInEnvironment();
+    });
+}
+
+RenderThemeIOS::RenderThemeIOS()
+{
+    CFNotificationCenterAddObserver(CFNotificationCenterGetLocalCenter(), this, contentSizeCategoryDidChange, UIContentSizeCategoryDidChangeNotification, 0, CFNotificationSuspensionBehaviorDeliverImmediately);
+}
+
+PassRefPtr&lt;RenderTheme&gt; RenderTheme::themeForPage(Page*)
+{
+    static RenderTheme* renderTheme = RenderThemeIOS::create().leakRef();
+    return renderTheme;
+}
+
+PassRefPtr&lt;RenderTheme&gt; RenderThemeIOS::create()
+{
+    return adoptRef(new RenderThemeIOS);
+}
+
+CFStringRef RenderThemeIOS::contentSizeCategory()
+{
+    return (CFStringRef)[[getUIApplicationClass() sharedApplication] preferredContentSizeCategory];
+}
+
+const Color&amp; RenderThemeIOS::shadowColor() const
+{
+    static Color color(0.0f, 0.0f, 0.0f, 0.7f);
+    return color;
+}
+
+FloatRect RenderThemeIOS::addRoundedBorderClip(RenderObject* box, GraphicsContext* context, const IntRect&amp; rect)
+{
+    // To fix inner border bleeding issues &lt;rdar://problem/9812507&gt;, we clip to the outer border and assert that
+    // the border is opaque or transparent, unless we're checked because checked radio/checkboxes show no bleeding.
+    RenderStyle&amp; style = box-&gt;style();
+    RoundedRect border = isChecked(box) ? style.getRoundedInnerBorderFor(rect) : style.getRoundedBorderFor(rect);
+
+    if (border.isRounded())
+        context-&gt;clipRoundedRect(border);
+    else
+        context-&gt;clip(border.rect());
+
+    if (isChecked(box)) {
+        ASSERT(style.visitedDependentColor(CSSPropertyBorderTopColor).alpha() % 255 == 0);
+        ASSERT(style.visitedDependentColor(CSSPropertyBorderRightColor).alpha() % 255 == 0);
+        ASSERT(style.visitedDependentColor(CSSPropertyBorderBottomColor).alpha() % 255 == 0);
+        ASSERT(style.visitedDependentColor(CSSPropertyBorderLeftColor).alpha() % 255 == 0);
+    }
+
+    return border.rect();
+}
+
+void RenderThemeIOS::adjustCheckboxStyle(StyleResolver*, RenderStyle* style, Element*) const
+{
+    if (!style-&gt;width().isIntrinsicOrAuto() &amp;&amp; !style-&gt;height().isAuto())
+        return;
+
+    Length length = Length(static_cast&lt;int&gt;(ceilf(std::max(style-&gt;fontSize(), 10))), Fixed);
+    
+    style-&gt;setWidth(length);
+    style-&gt;setHeight(length);
+}
+
+static CGPoint shortened(CGPoint start, CGPoint end, float width)
+{
+    float x = end.x - start.x;
+    float y = end.y - start.y;
+    float ratio = width / sqrtf(x * x + y * y);
+    return CGPointMake(start.x + x * ratio, start.y + y * ratio);
+}
+
+bool RenderThemeIOS::paintCheckboxDecorations(RenderObject* box, const PaintInfo&amp; paintInfo, const IntRect&amp; rect)
+{
+    GraphicsContextStateSaver stateSaver(*paintInfo.context);
+    FloatRect clip = addRoundedBorderClip(box, paintInfo.context, rect);
+
+    float width = clip.width();
+    float height = clip.height();
+
+    CGContextRef cgContext = paintInfo.context-&gt;platformContext();
+    if (isChecked(box)) {
+        drawAxialGradient(cgContext, gradientWithName(ConcaveGradient), clip.location(), FloatPoint(clip.x(), clip.maxY()), LinearInterpolation);
+
+        static float thicknessRatio = 2 / 14.0;
+        static CGSize size = { 14.0f, 14.0f };
+        static CGPoint pathRatios[3] = {
+            { 2.5f / size.width, 7.5f / size.height },
+            { 5.5f / size.width, 10.5f / size.height },
+            { 11.5f / size.width, 2.5f / size.height }
+        };
+
+        float lineWidth = std::min(width, height) * 2.0f * thicknessRatio;
+
+        CGPoint line[3] = {
+            CGPointMake(clip.x() + width * pathRatios[0].x, clip.y() + height * pathRatios[0].y),
+            CGPointMake(clip.x() + width * pathRatios[1].x, clip.y() + height * pathRatios[1].y),
+            CGPointMake(clip.x() + width * pathRatios[2].x, clip.y() + height * pathRatios[2].y)
+        };
+        CGPoint shadow[3] = {
+            shortened(line[0], line[1], lineWidth / 4.0f),
+            line[1],
+            shortened(line[2], line[1], lineWidth / 4.0f)
+        };
+
+        paintInfo.context-&gt;setStrokeThickness(lineWidth);
+        paintInfo.context-&gt;setStrokeColor(Color(0.0f, 0.0f, 0.0f, 0.7f), ColorSpaceDeviceRGB);
+
+        paintInfo.context-&gt;drawJoinedLines(shadow, 3, true, kCGLineCapSquare);
+
+        paintInfo.context-&gt;setStrokeThickness(std::min(clip.width(), clip.height()) * thicknessRatio);
+        paintInfo.context-&gt;setStrokeColor(Color(1.0f, 1.0f, 1.0f, 240 / 255.0f), ColorSpaceDeviceRGB);
+
+        paintInfo.context-&gt;drawJoinedLines(line, 3, true);
+    } else {
+        FloatPoint bottomCenter(clip.x() + clip.width() / 2.0f, clip.maxY());
+        drawAxialGradient(cgContext, gradientWithName(ShadeGradient), clip.location(), FloatPoint(clip.x(), clip.maxY()), LinearInterpolation);
+        drawRadialGradient(cgContext, gradientWithName(ShineGradient), bottomCenter, 0, bottomCenter, sqrtf((width * width) / 4.0f + height * height), ExponentialInterpolation);
+    }
+
+    return false;
+}
+
+int RenderThemeIOS::baselinePosition(const RenderObject* renderer) const
+{
+    if (!renderer-&gt;isBox())
+        return 0;
+
+    const RenderBox* box = toRenderBox(renderer);
+
+    if (box-&gt;style().appearance() == CheckboxPart || box-&gt;style().appearance() == RadioPart)
+        return box-&gt;marginTop() + box-&gt;height() - 2; // The baseline is 2px up from the bottom of the checkbox/radio in AppKit.
+    if (box-&gt;style().appearance() == MenulistPart)
+        return box-&gt;marginTop() + box-&gt;height() - 5; // This is to match AppKit. There might be a better way to calculate this though.
+    return RenderTheme::baselinePosition(box);
+}
+
+bool RenderThemeIOS::isControlStyled(const RenderStyle* style, const BorderData&amp; border, const FillLayer&amp; background, const Color&amp; backgroundColor) const
+{
+    // Buttons and MenulistButtons are styled if they contain a background image.
+    if (style-&gt;appearance() == PushButtonPart || style-&gt;appearance() == MenulistButtonPart)
+        return !style-&gt;visitedDependentColor(CSSPropertyBackgroundColor).alpha() || style-&gt;backgroundLayers()-&gt;hasImage();
+
+    if (style-&gt;appearance() == TextFieldPart || style-&gt;appearance() == TextAreaPart)
+        return *style-&gt;backgroundLayers() != background;
+
+    return RenderTheme::isControlStyled(style, border, background, backgroundColor);
+}
+
+void RenderThemeIOS::adjustRadioStyle(StyleResolver*, RenderStyle* style, Element*) const
+{
+    if (!style-&gt;width().isIntrinsicOrAuto() &amp;&amp; !style-&gt;height().isAuto())
+        return;
+
+    Length length = Length(static_cast&lt;int&gt;(ceilf(std::max(style-&gt;fontSize(), 10))), Fixed);
+    style-&gt;setWidth(length);
+    style-&gt;setHeight(length);
+    style-&gt;setBorderRadius(IntSize(length.value() / 2.0f, length.value() / 2.0f));
+}
+
+bool RenderThemeIOS::paintRadioDecorations(RenderObject* box, const PaintInfo&amp; paintInfo, const IntRect&amp; rect)
+{
+    GraphicsContextStateSaver stateSaver(*paintInfo.context);
+    FloatRect clip = addRoundedBorderClip(box, paintInfo.context, rect);
+
+    CGContextRef cgContext = paintInfo.context-&gt;platformContext();
+    if (isChecked(box)) {
+        drawAxialGradient(cgContext, gradientWithName(ConcaveGradient), clip.location(), FloatPoint(clip.x(), clip.maxY()), LinearInterpolation);
+
+        // The inner circle is 6 / 14 the size of the surrounding circle, 
+        // leaving 8 / 14 around it. (8 / 14) / 2 = 2 / 7.
+
+        static float InnerInverseRatio = 2 / 7.0;
+
+        clip.inflateX(-clip.width() * InnerInverseRatio);
+        clip.inflateY(-clip.height() * InnerInverseRatio);
+
+        paintInfo.context-&gt;drawRaisedEllipse(clip, Color::white, ColorSpaceDeviceRGB, shadowColor(), ColorSpaceDeviceRGB);
+
+        FloatSize radius(clip.width() / 2.0f, clip.height() / 2.0f);
+        paintInfo.context-&gt;clipRoundedRect(clip, radius, radius, radius, radius);
+    }
+    FloatPoint bottomCenter(clip.x() + clip.width() / 2.0, clip.maxY());
+    drawAxialGradient(cgContext, gradientWithName(ShadeGradient), clip.location(), FloatPoint(clip.x(), clip.maxY()), LinearInterpolation);
+    drawRadialGradient(cgContext, gradientWithName(ShineGradient), bottomCenter, 0, bottomCenter, std::max(clip.width(), clip.height()), ExponentialInterpolation);
+    return false;
+}
+
+bool RenderThemeIOS::paintTextFieldDecorations(RenderObject* box, const PaintInfo&amp; paintInfo, const IntRect&amp; rect)
+{
+    RenderStyle&amp; style = box-&gt;style();
+    IntPoint point(rect.x() + style.borderLeftWidth(), rect.y() + style.borderTopWidth());
+
+    GraphicsContextStateSaver stateSaver(*paintInfo.context);
+
+    paintInfo.context-&gt;clipRoundedRect(style.getRoundedBorderFor(r));
+
+    // This gradient gets drawn black when printing.
+    // Do not draw the gradient if there is no visible top border.
+    bool topBorderIsInvisible = !style.hasBorder() || !style.borderTopWidth() || style.borderTopIsTransparent();
+    if (!box-&gt;view().printing() &amp;&amp; !topBorderIsInvisible)
+        drawAxialGradient(paintInfo.context-&gt;platformContext(), gradientWithName(InsetGradient), point, FloatPoint(CGPointMake(point.x(), point.y() + 3.0f)), LinearInterpolation);
+    return false;
+}
+
+bool RenderThemeIOS::paintTextAreaDecorations(RenderObject* renderer, const PaintInfo&amp; paintInfo, const IntRect&amp; rect)
+{
+    return paintTextFieldDecorations(renderer, paintInfo, rect);
+}
+
+const int MenuListMinHeight = 15;
+
+const float MenuListBaseHeight = 20;
+const float MenuListBaseFontSize = 11;
+
+const float MenuListArrowWidth = 7;
+const float MenuListArrowHeight = 6;
+const float MenuListButtonPaddingRight = 19;
+
+int RenderThemeIOS::popupInternalPaddingRight(RenderStyle* style) const
+{
+    if (style-&gt;appearance() == MenulistButtonPart)
+        return MenuListButtonPaddingRight + style-&gt;borderTopWidth();
+    return 0;
+}
+
+void RenderThemeIOS::adjustRoundBorderRadius(RenderStyle&amp; style, RenderBox* box)
+{
+    if (style.appearance() == NoControlPart || style.backgroundLayers()-&gt;hasImage())
+        return;
+
+    // FIXME: We should not be relying on border radius for the appearance of our controls &lt;rdar://problem/7675493&gt;
+    Length radiusWidth(static_cast&lt;int&gt;(std::min(box-&gt;width(), box-&gt;height()) / 2.0), Fixed);
+    Length radiusHeight(static_cast&lt;int&gt;(box-&gt;height() / 2.0), Fixed);
+    style.setBorderRadius(LengthSize(radiusWidth, radiusHeight));
+}
+
+static void applyCommonButtonPaddingToStyle(RenderStyle* style, Element* element)
+{
+    Document&amp; document = element-&gt;document();
+    RefPtr&lt;CSSPrimitiveValue&gt; emSize = CSSPrimitiveValue::create(0.5, CSSPrimitiveValue::CSS_EMS);
+    int pixels = emSize-&gt;computeLength&lt;int&gt;(style, document.renderStyle(), document.frame()-&gt;pageZoomFactor());
+    style-&gt;setPaddingBox(LengthBox(0, pixels, 0, pixels));
+}
+
+static void adjustSelectListButtonStyle(RenderStyle* style, Element* element)
+{
+    // Enforce &quot;padding: 0 0.5em&quot;.
+    applyCommonButtonPaddingToStyle(style, element);
+
+    // Enforce &quot;line-height: normal&quot;.
+    style-&gt;setLineHeight(Length(-100.0, Percent));
+}
+
+static void adjustInputElementButtonStyle(RenderStyle* style, HTMLInputElement* inputElement)
+{
+    // Always Enforce &quot;padding: 0 0.5em&quot;.
+    applyCommonButtonPaddingToStyle(style, inputElement);
+
+    // Don't adjust the style if the width is specified.
+    if (style-&gt;width().isFixed() &amp;&amp; style-&gt;width().value() &gt; 0)
+        return;
+
+    // Don't adjust for unsupported date input types.
+    DateComponents::Type dateType = inputElement-&gt;dateType();
+    if (dateType == DateComponents::Invalid || dateType == DateComponents::Week)
+        return;
+
+    // Enforce the width and set the box-sizing to content-box to not conflict with the padding.
+    Font font = style-&gt;font();
+    float maximumWidth = inputElement-&gt;locale().maximumWidthForDateType(dateType, font);
+    if (maximumWidth &gt; 0) {    
+        int width = static_cast&lt;int&gt;(maximumWidth + MenuListButtonPaddingRight);
+        style-&gt;setWidth(Length(width, Fixed));
+        style-&gt;setBoxSizing(CONTENT_BOX);
+    }
+}
+
+void RenderThemeIOS::adjustMenuListButtonStyle(StyleResolver*, RenderStyle* style, Element* element) const
+{
+    // Set the min-height to be at least MenuListMinHeight.
+    if (style-&gt;height().isAuto())
+        style-&gt;setMinHeight(Length(std::max(MenuListMinHeight, static_cast&lt;int&gt;(MenuListBaseHeight / MenuListBaseFontSize * style-&gt;fontDescription().computedSize())), Fixed));
+    else
+        style-&gt;setMinHeight(Length(MenuListMinHeight, Fixed));
+
+    // Enforce some default styles in the case that this is a non-multiple &lt;select&gt; element,
+    // or a date input. We don't force these if this is just an element with
+    // &quot;-webkit-appearance: menulist-button&quot;.
+    if (element-&gt;hasTagName(HTMLNames::selectTag) &amp;&amp; !element-&gt;hasAttribute(HTMLNames::multipleAttr))
+        adjustSelectListButtonStyle(style, element);
+    else if (element-&gt;hasTagName(HTMLNames::inputTag)) {
+        HTMLInputElement* inputElement = static_cast&lt;HTMLInputElement*&gt;(element);
+        adjustInputElementButtonStyle(style, inputElement);
+    }
+}
+
+bool RenderThemeIOS::paintMenuListButtonDecorations(RenderObject* box, const PaintInfo&amp; paintInfo, const IntRect&amp; rect)
+{
+    RenderStyle&amp; style = box-&gt;style();
+    float borderTopWidth = style.borderTopWidth();
+    FloatRect clip(rect.x() + style.borderLeftWidth(), rect.y() + style.borderTopWidth(), rect.width() - style.borderLeftWidth() - style.borderRightWidth(), rect.height() - style.borderTopWidth() - style.borderBottomWidth());
+    CGContextRef cgContext = paintInfo.context-&gt;platformContext();
+
+    float adjustLeft = 0.5;
+    float adjustRight = 0.5;
+    float adjustTop = 0.5;
+    float adjustBottom = 0.5;
+
+    // Paint left-hand title portion.
+    {
+        FloatRect titleClip(clip.x() - adjustLeft, clip.y() - adjustTop, clip.width() - MenuListButtonPaddingRight + adjustLeft, clip.height() + adjustTop + adjustBottom);
+
+        GraphicsContextStateSaver stateSaver(*paintInfo.context);
+
+        paintInfo.context-&gt;clipRoundedRect(titleClip, 
+            FloatSize(valueForLength(style.borderTopLeftRadius().width(), rect.width()) - style.borderLeftWidth(), valueForLength(style.borderTopLeftRadius().height(), rect.height()) - style.borderTopWidth()), FloatSize(0, 0),
+            FloatSize(valueForLength(style.borderBottomLeftRadius().width(), rect.width()) - style.borderLeftWidth(), valueForLength(style.borderBottomLeftRadius().height(), rect.height()) - style.borderBottomWidth()), FloatSize(0, 0));
+
+        drawAxialGradient(cgContext, gradientWithName(ShadeGradient), titleClip.location(), FloatPoint(titleClip.x(), titleClip.maxY()), LinearInterpolation);
+        drawAxialGradient(cgContext, gradientWithName(ShineGradient), FloatPoint(titleClip.x(), titleClip.maxY()), titleClip.location(), ExponentialInterpolation);
+    }
+
+    // Draw the separator after the initial padding.
+
+    float separator = clip.maxX() - MenuListButtonPaddingRight;
+
+    box-&gt;drawLineForBoxSide(paintInfo.context, separator - borderTopWidth, clip.y(), separator, clip.maxY(), BSRight, style.visitedDependentColor(CSSPropertyBorderTopColor), style.borderTopStyle(), 0, 0);
+
+    FloatRect buttonClip(separator - adjustTop, clip.y() - adjustTop, MenuListButtonPaddingRight + adjustTop + adjustRight, clip.height() + adjustTop + adjustBottom);
+
+    // Now paint the button portion.
+    {
+        GraphicsContextStateSaver stateSaver(*paintInfo.context);
+
+        paintInfo.context-&gt;clipRoundedRect(buttonClip, 
+            FloatSize(0, 0), FloatSize(valueForLength(style.borderTopRightRadius().width(), rect.width()) - style.borderRightWidth(), valueForLength(style.borderTopRightRadius().height(), rect.height()) - style.borderTopWidth()),
+            FloatSize(0, 0), FloatSize(valueForLength(style.borderBottomRightRadius().width(), rect.width()) - style.borderRightWidth(), valueForLength(style.borderBottomRightRadius().height(), rect.height()) - style.borderBottomWidth()));
+
+        paintInfo.context-&gt;fillRect(buttonClip, style.visitedDependentColor(CSSPropertyBorderTopColor), style.colorSpace());
+
+        drawAxialGradient(cgContext, gradientWithName(isFocused(box) &amp;&amp; !isReadOnlyControl(box) ? ConcaveGradient : ConvexGradient), buttonClip.location(), FloatPoint(buttonClip.x(), buttonClip.maxY()), LinearInterpolation);
+    }
+
+    // Paint Indicators.
+
+    if (box-&gt;isMenuList() &amp;&amp; toHTMLSelectElement(box-&gt;node())-&gt;multiple()) {
+        int size = 2;
+        int count = 3;
+        int padding = 3;
+
+        IntRect ellipse(buttonClip.x() + (buttonClip.width() - count * (size + padding) + padding) / 2.0, buttonClip.maxY() - 10.0, size, size);
+
+        for (int i = 0; i &lt; count; ++i) {
+            paintInfo.context-&gt;drawRaisedEllipse(ellipse, Color::white, ColorSpaceDeviceRGB, Color(0.0f, 0.0f, 0.0f, 0.5f), ColorSpaceDeviceRGB);
+            ellipse.move(size + padding, 0);
+        }
+    }  else {
+        float centerX = floorf(buttonClip.x() + buttonClip.width() / 2.0) - 0.5;
+        float centerY = floorf(buttonClip.y() + buttonClip.height() * 3.0 / 8.0);
+
+        FloatPoint arrow[3];
+        FloatPoint shadow[3];
+
+        arrow[0] = FloatPoint(centerX - MenuListArrowWidth / 2.0, centerY);
+        arrow[1] = FloatPoint(centerX + MenuListArrowWidth / 2.0, centerY);
+        arrow[2] = FloatPoint(centerX, centerY + MenuListArrowHeight);
+
+        shadow[0] = FloatPoint(arrow[0].x(), arrow[0].y() + 1.0f);
+        shadow[1] = FloatPoint(arrow[1].x(), arrow[1].y() + 1.0f);
+        shadow[2] = FloatPoint(arrow[2].x(), arrow[2].y() + 1.0f);
+
+        float opacity = isReadOnlyControl(box) ? 0.2 : 0.5;
+        paintInfo.context-&gt;setStrokeColor(Color(0.0f, 0.0f, 0.0f, opacity), ColorSpaceDeviceRGB);
+        paintInfo.context-&gt;setFillColor(Color(0.0f, 0.0f, 0.0f, opacity), ColorSpaceDeviceRGB);
+        paintInfo.context-&gt;drawConvexPolygon(3, shadow, true);
+
+        paintInfo.context-&gt;setStrokeColor(Color::white, ColorSpaceDeviceRGB);
+        paintInfo.context-&gt;setFillColor(Color::white, ColorSpaceDeviceRGB);
+        paintInfo.context-&gt;drawConvexPolygon(3, arrow, true);
+    }
+
+    return false;
+}
+
+const CGFloat kTrackThickness = 4.0;
+const CGFloat kTrackRadius = kTrackThickness / 2.0;
+const int kDefaultSliderThumbSize = 16;
+
+void RenderThemeIOS::adjustSliderTrackStyle(StyleResolver* selector, RenderStyle* style, Element* element) const
+{
+    RenderTheme::adjustSliderTrackStyle(selector, style, element);
+
+    // FIXME: We should not be relying on border radius for the appearance of our controls &lt;rdar://problem/7675493&gt;
+    Length radiusWidth(static_cast&lt;int&gt;(kTrackRadius), Fixed);
+    Length radiusHeight(static_cast&lt;int&gt;(kTrackRadius), Fixed);
+    style-&gt;setBorderRadius(LengthSize(radiusWidth, radiusHeight));
+}
+
+bool RenderThemeIOS::paintSliderTrack(RenderObject* box, const PaintInfo&amp; paintInfo, const IntRect&amp; rect)
+{
+    IntRect trackClip = rect;
+    RenderStyle&amp; style = box-&gt;style();
+
+    bool isHorizontal = true;
+    switch (style.appearance()) {
+    case SliderHorizontalPart:
+        isHorizontal = true;
+        // Inset slightly so the thumb covers the edge.
+        if (trackClip.width() &gt; 2) {
+            trackClip.setWidth(trackClip.width() - 2);
+            trackClip.setX(trackClip.x() + 1);
+        }
+        trackClip.setHeight(static_cast&lt;int&gt;(kTrackThickness));
+        trackClip.setY(rect.y() + rect.height() / 2 - kTrackThickness / 2);
+        break;
+    case SliderVerticalPart:
+        isHorizontal = false;
+        // Inset slightly so the thumb covers the edge.
+        if (trackClip.height() &gt; 2) {
+            trackClip.setHeight(trackClip.height() - 2);
+            trackClip.setY(trackClip.y() + 1);
+        }
+        trackClip.setWidth(kTrackThickness);
+        trackClip.setX(rect.x() + rect.width() / 2 - kTrackThickness / 2);
+        break;
+    default:
+        ASSERT_NOT_REACHED();
+    }
+
+    ASSERT(trackClip.width() &gt;= 0);
+    ASSERT(trackClip.height() &gt;= 0);
+    CGFloat cornerWidth = trackClip.width() &lt; kTrackThickness ? trackClip.width() / 2.0f : kTrackRadius;
+    CGFloat cornerHeight = trackClip.height() &lt; kTrackThickness ? trackClip.height() / 2.0f : kTrackRadius;
+
+    bool readonly = isReadOnlyControl(box);
+
+#if ENABLE(DATALIST_ELEMENT)
+    paintSliderTicks(box, paintInfo, trackClip);
+#endif
+
+    // Draw the track gradient.
+    {
+        GraphicsContextStateSaver stateSaver(*paintInfo.context);
+
+        IntSize cornerSize(cornerWidth, cornerHeight);
+        RoundedRect innerBorder(trackClip, cornerSize, cornerSize, cornerSize, cornerSize);
+        paintInfo.context-&gt;clipRoundedRect(innerBorder);
+
+        CGContextRef cgContext = paintInfo.context-&gt;platformContext();
+        IOSGradientRef gradient = readonly ? gradientWithName(ReadonlySliderTrackGradient) : gradientWithName(SliderTrackGradient);
+        if (isHorizontal)
+            drawAxialGradient(cgContext, gradient, trackClip.location(), FloatPoint(trackClip.x(), trackClip.maxY()), LinearInterpolation);
+        else
+            drawAxialGradient(cgContext, gradient, trackClip.location(), FloatPoint(trackClip.maxX(), trackClip.y()), LinearInterpolation);
+    }
+
+    // Draw the track border.
+    {
+        GraphicsContextStateSaver stateSaver(*paintInfo.context);
+
+        CGContextRef cgContext = paintInfo.context-&gt;platformContext();
+        if (readonly)
+            paintInfo.context-&gt;setStrokeColor(Color(178, 178, 178), ColorSpaceDeviceRGB);
+        else
+            paintInfo.context-&gt;setStrokeColor(Color(76, 76, 76), ColorSpaceDeviceRGB);
+
+        RetainPtr&lt;CGMutablePathRef&gt; roundedRectPath = adoptCF(CGPathCreateMutable());
+        CGPathAddRoundedRect(roundedRectPath.get(), 0, trackClip, cornerWidth, cornerHeight);
+        CGContextAddPath(cgContext, roundedRectPath.get());
+        CGContextSetLineWidth(cgContext, 1);
+        CGContextStrokePath(cgContext);
+    }
+
+    return false;
+}
+
+void RenderThemeIOS::adjustSliderThumbSize(RenderStyle* style, Element*) const
+{
+    if (style-&gt;appearance() != SliderThumbHorizontalPart &amp;&amp; style-&gt;appearance() != SliderThumbVerticalPart)
+        return;
+
+    // Enforce &quot;border-radius: 50%&quot;.
+    Length length(50.0f, Percent);
+    style-&gt;setBorderRadius(LengthSize(length, length));
+
+    // Enforce a 16x16 size if no size is provided.
+    if (style-&gt;width().isIntrinsicOrAuto() || style-&gt;height().isAuto()) {
+        Length length = Length(kDefaultSliderThumbSize, Fixed);
+        style-&gt;setWidth(length);
+        style-&gt;setHeight(length);
+    }
+}
+
+bool RenderThemeIOS::paintSliderThumbDecorations(RenderObject* box, const PaintInfo&amp; paintInfo, const IntRect&amp; rect)
+{
+    GraphicsContextStateSaver stateSaver(*paintInfo.context);
+    FloatRect clip = addRoundedBorderClip(box, paintInfo.context, rect);
+
+    CGContextRef cgContext = paintInfo.context-&gt;platformContext();
+    FloatPoint bottomCenter(clip.x() + clip.width() / 2.0f, clip.maxY());
+    if (isPressed(box))
+        drawAxialGradient(cgContext, gradientWithName(SliderThumbOpaquePressedGradient), clip.location(), FloatPoint(clip.x(), clip.maxY()), LinearInterpolation);
+    else {
+        drawAxialGradient(cgContext, gradientWithName(ShadeGradient), clip.location(), FloatPoint(clip.x(), clip.maxY()), LinearInterpolation);
+        drawRadialGradient(cgContext, gradientWithName(ShineGradient), bottomCenter, 0.0f, bottomCenter, std::max(clip.width(), clip.height()), ExponentialInterpolation);
+    }
+
+    return false;
+}
+
+#if ENABLE(PROGRESS_ELEMENT)
+double RenderThemeIOS::animationRepeatIntervalForProgressBar(RenderProgress*) const
+{
+    return 0;
+}
+
+double RenderThemeIOS::animationDurationForProgressBar(RenderProgress*) const
+{
+    return 0;
+}
+
+bool RenderThemeIOS::paintProgressBar(RenderObject* renderer, const PaintInfo&amp; paintInfo, const IntRect&amp; rect)
+{
+    if (!renderer-&gt;isProgress())
+        return true;
+
+    const int progressBarHeight = 9;
+    const float verticalOffset = (rect.height() - progressBarHeight) / 2.0;
+
+    GraphicsContextStateSaver stateSaver(*paintInfo.context);
+    if (rect.width() &lt; 10 || rect.height() &lt; 9) {
+        // The rect is smaller than the standard progress bar. We clip to the element's rect to avoid
+        // leaking pixels outside the repaint rect.
+        paintInfo.context-&gt;clip(rect);
+    }
+
+    // 1) Draw the progress bar track.
+    // 1.1) Draw the white background with grey gradient border.
+    GraphicsContext* context = paintInfo.context;
+    context-&gt;setStrokeThickness(0.68);
+    context-&gt;setStrokeStyle(SolidStroke);
+
+    const float verticalRenderingPosition = rect.y() + verticalOffset;
+    RefPtr&lt;Gradient&gt; strokeGradient = Gradient::create(FloatPoint(rect.x(), verticalRenderingPosition), FloatPoint(rect.x(), verticalRenderingPosition + progressBarHeight - 1));
+    strokeGradient-&gt;addColorStop(0.0, Color(0x8d, 0x8d, 0x8d));
+    strokeGradient-&gt;addColorStop(0.45, Color(0xee, 0xee, 0xee));
+    strokeGradient-&gt;addColorStop(0.55, Color(0xee, 0xee, 0xee));
+    strokeGradient-&gt;addColorStop(1.0, Color(0x8d, 0x8d, 0x8d));
+    context-&gt;setStrokeGradient(strokeGradient.release());
+
+    ColorSpace colorSpace = renderer-&gt;style().colorSpace();
+    context-&gt;setFillColor(Color(255, 255, 255), colorSpace);
+
+    Path trackPath;
+    FloatRect trackRect(rect.x() + 0.25, verticalRenderingPosition + 0.25, rect.width() - 0.5, progressBarHeight - 0.5);
+    FloatSize roundedCornerRadius(5, 4);
+    trackPath.addRoundedRect(trackRect, roundedCornerRadius);
+    context-&gt;drawPath(trackPath);
+
+    // 1.2) Draw top gradient on the upper half. It is supposed to overlay the fill from the background and darker the stroked path.
+    FloatRect border(rect.x(), rect.y() + verticalOffset, rect.width(), progressBarHeight);
+    paintInfo.context-&gt;clipRoundedRect(border, roundedCornerRadius, roundedCornerRadius, roundedCornerRadius, roundedCornerRadius);
+
+    float upperGradientHeight = progressBarHeight / 2.;
+    RefPtr&lt;Gradient&gt; upperGradient = Gradient::create(FloatPoint(rect.x(), verticalRenderingPosition + 0.5), FloatPoint(rect.x(), verticalRenderingPosition + upperGradientHeight - 1.5));
+    upperGradient-&gt;addColorStop(0.0, Color(133, 133, 133, 188));
+    upperGradient-&gt;addColorStop(1.0, Color(18, 18, 18, 51));
+    context-&gt;setFillGradient(upperGradient.release());
+
+    context-&gt;fillRect(FloatRect(rect.x(), verticalRenderingPosition, rect.width(), upperGradientHeight));
+
+    RenderProgress* renderProgress = toRenderProgress(renderer);
+    if (renderProgress-&gt;isDeterminate()) {
+        // 2) Draw the progress bar.
+        double position = clampTo(renderProgress-&gt;position(), 0.0, 1.0);
+        double barWidth = position * rect.width();
+        RefPtr&lt;Gradient&gt; barGradient = Gradient::create(FloatPoint(rect.x(), verticalRenderingPosition + 0.5), FloatPoint(rect.x(), verticalRenderingPosition + progressBarHeight - 1));
+        barGradient-&gt;addColorStop(0.0, Color(195, 217, 247));
+        barGradient-&gt;addColorStop(0.45, Color(118, 164, 228));
+        barGradient-&gt;addColorStop(0.49, Color(118, 164, 228));
+        barGradient-&gt;addColorStop(0.51, Color(36, 114, 210));
+        barGradient-&gt;addColorStop(0.55, Color(36, 114, 210));
+        barGradient-&gt;addColorStop(1.0, Color(57, 142, 244));
+        context-&gt;setFillGradient(barGradient.release());
+
+        RefPtr&lt;Gradient&gt; barStrokeGradient = Gradient::create(FloatPoint(rect.x(), verticalRenderingPosition), FloatPoint(rect.x(), verticalRenderingPosition + progressBarHeight - 1));
+        barStrokeGradient-&gt;addColorStop(0.0, Color(95, 107, 183));
+        barStrokeGradient-&gt;addColorStop(0.5, Color(66, 106, 174, 240));
+        barStrokeGradient-&gt;addColorStop(1.0, Color(38, 104, 166));
+        context-&gt;setStrokeGradient(barStrokeGradient.release());
+
+        Path barPath;
+        int left = rect.x();
+        if (!renderProgress-&gt;style().isLeftToRightDirection())
+            left = rect.maxX() - barWidth;
+        FloatRect barRect(left + 0.25, verticalRenderingPosition + 0.25, std::max(barWidth - 0.5, 0.0), progressBarHeight - 0.5);
+        barPath.addRoundedRect(barRect, roundedCornerRadius);
+        context-&gt;drawPath(barPath);
+    }
+
+    return false;
+}
+#endif // ENABLE(PROGRESS_ELEMENT)
+
+#if ENABLE(DATALIST_ELEMENT)
+IntSize RenderThemeIOS::sliderTickSize() const
+{
+    // FIXME: &lt;rdar://problem/12271791&gt; MERGEBOT: Correct values for slider tick of &lt;input type=&quot;range&quot;&gt; elements (requires ENABLE_DATALIST_ELEMENT)
+    return IntSize(1, 3);
+}
+
+int RenderThemeIOS::sliderTickOffsetFromTrackCenter() const
+{
+    // FIXME: &lt;rdar://problem/12271791&gt; MERGEBOT: Correct values for slider tick of &lt;input type=&quot;range&quot;&gt; elements (requires ENABLE_DATALIST_ELEMENT)
+    return -9;
+}
+#endif
+
+void RenderThemeIOS::adjustSearchFieldStyle(StyleResolver* selector, RenderStyle* style, Element* element) const
+{
+    RenderTheme::adjustSearchFieldStyle(selector, style, element);
+
+    if (!element)
+        return;
+
+    if (!style-&gt;hasBorder())
+        return;
+
+    RenderBox* box = element-&gt;renderBox();
+    if (!box)
+        return;
+
+    adjustRoundBorderRadius(*style, box);
+}
+
+bool RenderThemeIOS::paintSearchFieldDecorations(RenderObject* box, const PaintInfo&amp; paintInfo, const IntRect&amp; rect)
+{
+    return paintTextFieldDecorations(box, paintInfo, rect);
+}
+
+void RenderThemeIOS::adjustButtonStyle(StyleResolver* selector, RenderStyle* style, Element* element) const
+{
+    RenderTheme::adjustButtonStyle(selector, style, element);
+
+    // Set padding: 0 1.0em; on buttons.
+    // CSSPrimitiveValue::computeLengthInt only needs the element's style to calculate em lengths.
+    // Since the element might not be in a document, just pass nullptr for the root element style.
+    RefPtr&lt;CSSPrimitiveValue&gt; emSize = CSSPrimitiveValue::create(1.0, CSSPrimitiveValue::CSS_EMS);
+    int pixels = emSize-&gt;computeLength&lt;int&gt;(style, nullptr);
+    style-&gt;setPaddingBox(LengthBox(0, pixels, 0, pixels));
+
+    if (!element)
+        return;
+
+    RenderBox* box = element-&gt;renderBox();
+    if (!box)
+        return;
+
+    adjustRoundBorderRadius(*style, box);
+}
+
+bool RenderThemeIOS::paintButtonDecorations(RenderObject* box, const PaintInfo&amp; paintInfo, const IntRect&amp; rect)
+{
+    return paintPushButtonDecorations(box, paintInfo, rect);
+}
+
+bool RenderThemeIOS::paintPushButtonDecorations(RenderObject* box, const PaintInfo&amp; paintInfo, const IntRect&amp; rect)
+{
+    GraphicsContextStateSaver stateSaver(*paintInfo.context);
+    FloatRect clip = addRoundedBorderClip(box, paintInfo.context, rect);
+
+    CGContextRef cgContext = paintInfo.context-&gt;platformContext();
+    if (box-&gt;style().visitedDependentColor(CSSPropertyBackgroundColor).isDark())
+        drawAxialGradient(cgContext, gradientWithName(ConvexGradient), clip.location(), FloatPoint(clip.x(), clip.maxY()), LinearInterpolation);
+    else {
+        drawAxialGradient(cgContext, gradientWithName(ShadeGradient), clip.location(), FloatPoint(clip.x(), clip.maxY()), LinearInterpolation);
+        drawAxialGradient(cgContext, gradientWithName(ShineGradient), FloatPoint(clip.x(), clip.maxY()), clip.location(), ExponentialInterpolation);
+    }
+    return false;
+}
+
+void RenderThemeIOS::setButtonSize(RenderStyle* style) const
+{
+    // If the width and height are both specified, then we have nothing to do.
+    if (!style-&gt;width().isIntrinsicOrAuto() &amp;&amp; !style-&gt;height().isAuto())
+        return;
+
+    // Use the font size to determine the intrinsic width of the control.
+    style-&gt;setHeight(Length(static_cast&lt;int&gt;(ControlBaseHeight / ControlBaseFontSize * style-&gt;fontDescription().computedSize()), Fixed));
+}
+
+const int kThumbnailBorderStrokeWidth = 1;
+const int kThumbnailBorderCornerRadius = 1;
+const int kVisibleBackgroundImageWidth = 1;
+const int kMultipleThumbnailShrinkSize = 2;
+
+bool RenderThemeIOS::paintFileUploadIconDecorations(RenderObject*, RenderObject* buttonRenderer, const PaintInfo&amp; paintInfo, const IntRect&amp; rect, Icon* icon, FileUploadDecorations fileUploadDecorations)
+{
+    GraphicsContextStateSaver stateSaver(*paintInfo.context);
+
+    IntSize cornerSize(kThumbnailBorderCornerRadius, kThumbnailBorderCornerRadius);
+    Color pictureFrameColor = buttonRenderer ? buttonRenderer-&gt;style().visitedDependentColor(CSSPropertyBorderTopColor) : Color(76.0f, 76.0f, 76.0f);
+
+    IntRect thumbnailPictureFrameRect = rect;
+    IntRect thumbnailRect = rect;
+    thumbnailRect.contract(2 * kThumbnailBorderStrokeWidth, 2 * kThumbnailBorderStrokeWidth);
+    thumbnailRect.move(kThumbnailBorderStrokeWidth, kThumbnailBorderStrokeWidth);
+
+    if (fileUploadDecorations == MultipleFiles) {
+        // Smaller thumbnails for multiple selection appearance.
+        thumbnailPictureFrameRect.contract(kMultipleThumbnailShrinkSize, kMultipleThumbnailShrinkSize);
+        thumbnailRect.contract(kMultipleThumbnailShrinkSize, kMultipleThumbnailShrinkSize);
+
+        // Background picture frame and simple background icon with a gradient matching the button.
+        Color backgroundImageColor = buttonRenderer ? Color(buttonRenderer-&gt;style().visitedDependentColor(CSSPropertyBackgroundColor).rgb()) : Color(206.0f, 206.0f, 206.0f);
+        paintInfo.context-&gt;fillRoundedRect(thumbnailPictureFrameRect, cornerSize, cornerSize, cornerSize, cornerSize, pictureFrameColor, ColorSpaceDeviceRGB);
+        paintInfo.context-&gt;fillRect(thumbnailRect, backgroundImageColor, ColorSpaceDeviceRGB);
+        {
+            GraphicsContextStateSaver stateSaver2(*paintInfo.context);
+            CGContextRef cgContext = paintInfo.context-&gt;platformContext();
+            paintInfo.context-&gt;clip(thumbnailRect);
+            if (backgroundImageColor.isDark())
+                drawAxialGradient(cgContext, gradientWithName(ConvexGradient), thumbnailRect.location(), FloatPoint(thumbnailRect.x(), thumbnailRect.maxY()), LinearInterpolation);
+            else {
+                drawAxialGradient(cgContext, gradientWithName(ShadeGradient), thumbnailRect.location(), FloatPoint(thumbnailRect.x(), thumbnailRect.maxY()), LinearInterpolation);
+                drawAxialGradient(cgContext, gradientWithName(ShineGradient), FloatPoint(thumbnailRect.x(), thumbnailRect.maxY()), thumbnailRect.location(), ExponentialInterpolation);
+            }
+        }
+
+        // Move the rects for the Foreground picture frame and icon.
+        int inset = kVisibleBackgroundImageWidth + kThumbnailBorderStrokeWidth;
+        thumbnailPictureFrameRect.move(inset, inset);
+        thumbnailRect.move(inset, inset);
+    }
+
+    // Foreground picture frame and icon.
+    paintInfo.context-&gt;fillRoundedRect(thumbnailPictureFrameRect, cornerSize, cornerSize, cornerSize, cornerSize, pictureFrameColor, ColorSpaceDeviceRGB);
+    icon-&gt;paint(paintInfo.context, thumbnailRect);
+
+    return false;
+}
+    
+Color RenderThemeIOS::platformActiveSelectionBackgroundColor() const
+{
+    return Color::transparent;
+}
+
+Color RenderThemeIOS::platformInactiveSelectionBackgroundColor() const
+{
+    return Color::transparent;
+}
+
+bool RenderThemeIOS::shouldShowPlaceholderWhenFocused() const
+{
+    return true;
+}
+
+bool RenderThemeIOS::shouldHaveSpinButton(HTMLInputElement*) const
+{
+    return false;
+}
+
+static FontWeight fromCTFontWeight(float fontWeight)
+{
+    if (fontWeight &lt;= -0.8)
+        return FontWeight100;
+    else if (fontWeight &lt;= -0.4)
+        return FontWeight200;
+    else if (fontWeight &lt;= -0.2)
+        return FontWeight300;
+    else if (fontWeight &lt;= 0.0)
+        return FontWeight400;
+    else if (fontWeight &lt;= 0.2)
+        return FontWeight500;
+    else if (fontWeight &lt;= 0.3)
+        return FontWeight600;
+    else if (fontWeight &lt;= 0.4)
+        return FontWeight700;
+    else if (fontWeight &lt;= 0.6)
+        return FontWeight800;
+    else if (fontWeight &lt;= 0.8)
+        return FontWeight900;
+
+    return FontWeightNormal;
+}
+
+void RenderThemeIOS::systemFont(CSSValueID valueID, FontDescription&amp; fontDescription) const
+{
+    static NeverDestroyed&lt;FontDescription&gt; systemFont;
+    static NeverDestroyed&lt;FontDescription&gt; headlineFont;
+    static NeverDestroyed&lt;FontDescription&gt; bodyFont;
+    static NeverDestroyed&lt;FontDescription&gt; subheadlineFont;
+    static NeverDestroyed&lt;FontDescription&gt; footnoteFont;
+    static NeverDestroyed&lt;FontDescription&gt; caption1Font;
+    static NeverDestroyed&lt;FontDescription&gt; caption2Font;
+    static NeverDestroyed&lt;FontDescription&gt; shortHeadlineFont;
+    static NeverDestroyed&lt;FontDescription&gt; shortBodyFont;
+    static NeverDestroyed&lt;FontDescription&gt; shortSubheadlineFont;
+    static NeverDestroyed&lt;FontDescription&gt; shortFootnoteFont;
+    static NeverDestroyed&lt;FontDescription&gt; shortCaption1Font;
+    static NeverDestroyed&lt;FontDescription&gt; tallBodyFont;
+
+    static CFStringRef userTextSize = contentSizeCategory();
+
+    if (userTextSize != contentSizeCategory()) {
+        userTextSize = contentSizeCategory();
+
+        headlineFont.setIsAbsoluteSize(false);
+        bodyFont.setIsAbsoluteSize(false);
+        subheadlineFont.setIsAbsoluteSize(false);
+        footnoteFont.setIsAbsoluteSize(false);
+        caption1Font.setIsAbsoluteSize(false);
+        caption2Font.setIsAbsoluteSize(false);
+        shortHeadlineFont.setIsAbsoluteSize(false);
+        shortBodyFont.setIsAbsoluteSize(false);
+        shortSubheadlineFont.setIsAbsoluteSize(false);
+        shortFootnoteFont.setIsAbsoluteSize(false);
+        shortCaption1Font.setIsAbsoluteSize(false);
+        tallBodyFont.setIsAbsoluteSize(false);
+    }
+
+    FontDescription* cachedDesc;
+    RetainPtr&lt;CTFontDescriptorRef&gt; fontDescriptor;
+    CFStringRef textStyle;
+    switch (valueID) {
+    case CSSValueAppleSystemHeadline:
+        cachedDesc = &amp;headlineFont;
+        textStyle = kCTUIFontTextStyleHeadline;
+        if (!headlineFont.isAbsoluteSize())
+            fontDescriptor = adoptCF(CTFontDescriptorCreateWithTextStyle(textStyle, userTextSize, 0));
+        break;
+    case CSSValueAppleSystemBody:
+        cachedDesc = &amp;bodyFont;
+        textStyle = kCTUIFontTextStyleBody;
+        if (!bodyFont.isAbsoluteSize())
+            fontDescriptor = adoptCF(CTFontDescriptorCreateWithTextStyle(textStyle, userTextSize, 0));
+        break;
+    case CSSValueAppleSystemSubheadline:
+        cachedDesc = &amp;subheadlineFont;
+        textStyle = kCTUIFontTextStyleSubhead;
+        if (!subheadlineFont.isAbsoluteSize())
+            fontDescriptor = adoptCF(CTFontDescriptorCreateWithTextStyle(textStyle, userTextSize, 0));
+        break;
+    case CSSValueAppleSystemFootnote:
+        cachedDesc = &amp;footnoteFont;
+        textStyle = kCTUIFontTextStyleFootnote;
+        if (!footnoteFont.isAbsoluteSize())
+            fontDescriptor = adoptCF(CTFontDescriptorCreateWithTextStyle(textStyle, userTextSize, 0));
+        break;
+    case CSSValueAppleSystemCaption1:
+        cachedDesc = &amp;caption1Font;
+        textStyle = kCTUIFontTextStyleCaption1;
+        if (!caption1Font.isAbsoluteSize())
+            fontDescriptor = adoptCF(CTFontDescriptorCreateWithTextStyle(textStyle, userTextSize, 0));
+        break;
+    case CSSValueAppleSystemCaption2:
+        cachedDesc = &amp;caption2Font;
+        textStyle = kCTUIFontTextStyleCaption2;
+        if (!caption2Font.isAbsoluteSize())
+            fontDescriptor = adoptCF(CTFontDescriptorCreateWithTextStyle(textStyle, userTextSize, 0));
+        break;
+
+    // Short version.
+    case CSSValueAppleSystemShortHeadline:
+        cachedDesc = &amp;shortHeadlineFont;
+        textStyle = kCTUIFontTextStyleShortHeadline;
+        if (!shortHeadlineFont.isAbsoluteSize())
+            fontDescriptor = adoptCF(CTFontDescriptorCreateWithTextStyle(textStyle, userTextSize, 0));
+        break;
+    case CSSValueAppleSystemShortBody:
+        cachedDesc = &amp;shortBodyFont;
+        textStyle = kCTUIFontTextStyleShortBody;
+        if (!shortBodyFont.isAbsoluteSize())
+            fontDescriptor = adoptCF(CTFontDescriptorCreateWithTextStyle(textStyle, userTextSize, 0));
+        break;
+    case CSSValueAppleSystemShortSubheadline:
+        cachedDesc = &amp;shortSubheadlineFont;
+        textStyle = kCTUIFontTextStyleShortSubhead;
+        if (!shortSubheadlineFont.isAbsoluteSize())
+            fontDescriptor = adoptCF(CTFontDescriptorCreateWithTextStyle(textStyle, userTextSize, 0));
+        break;
+    case CSSValueAppleSystemShortFootnote:
+        cachedDesc = &amp;shortFootnoteFont;
+        textStyle = kCTUIFontTextStyleShortFootnote;
+        if (!shortFootnoteFont.isAbsoluteSize())
+            fontDescriptor = adoptCF(CTFontDescriptorCreateWithTextStyle(textStyle, userTextSize, 0));
+        break;
+    case CSSValueAppleSystemShortCaption1:
+        cachedDesc = &amp;shortCaption1Font;
+        textStyle = kCTUIFontTextStyleShortCaption1;
+        if (!shortCaption1Font.isAbsoluteSize())
+            fontDescriptor = adoptCF(CTFontDescriptorCreateWithTextStyle(textStyle, userTextSize, 0));
+        break;
+
+    // Tall version.
+    case CSSValueAppleSystemTallBody:
+        cachedDesc = &amp;tallBodyFont;
+        textStyle = kCTUIFontTextStyleTallBody;
+        if (!tallBodyFont.isAbsoluteSize())
+            fontDescriptor = adoptCF(CTFontDescriptorCreateWithTextStyle(textStyle, userTextSize, 0));
+        break;
+
+    default:
+        textStyle = kCTFontDescriptorTextStyleEmphasized;
+        cachedDesc = &amp;systemFont;
+        if (!systemFont.isAbsoluteSize())
+            fontDescriptor = adoptCF(CTFontDescriptorCreateForUIType(kCTFontSystemFontType, 0, nullptr));
+    }
+
+    if (fontDescriptor) {
+        RetainPtr&lt;CTFontRef&gt; font = adoptCF(CTFontCreateWithFontDescriptor(fontDescriptor.get(), 0, nullptr));
+        cachedDesc-&gt;setIsAbsoluteSize(true);
+        cachedDesc-&gt;setGenericFamily(FontDescription::NoFamily);
+        cachedDesc-&gt;setOneFamily(textStyle);
+        cachedDesc-&gt;setSpecifiedSize(CTFontGetSize(font.get()));
+        cachedDesc-&gt;setWeight(fromCTFontWeight(FontCache::weightOfCTFont(font.get())));
+        cachedDesc-&gt;setItalic(0);
+    }
+    fontDescription = *cachedDesc;
+}
+
+#if ENABLE(VIDEO)
+String RenderThemeIOS::mediaControlsStyleSheet()
+{
+#if ENABLE(MEDIA_CONTROLS_SCRIPT)
+    return String(mediaControlsiOSUserAgentStyleSheet, sizeof(mediaControlsiOSUserAgentStyleSheet));
+#else
+    return emptyString();
+#endif
+}
+
+String RenderThemeIOS::mediaControlsScript()
+{
+#if ENABLE(MEDIA_CONTROLS_SCRIPT)
+    return String(mediaControlsAppleJavaScript, sizeof(mediaControlsAppleJavaScript));
+#else
+    return emptyString();
+#endif
+}
+#endif // ENABLE(VIDEO)
+
+}
+
+#endif //PLATFORM(IOS)
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderThemeMach"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderThemeMac.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderThemeMac.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderThemeMac.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -19,6 +19,7 @@
</span><span class="cx">  * Boston, MA 02110-1301, USA.
</span><span class="cx">  *
</span><span class="cx">  */
</span><ins>+#if !PLATFORM(IOS)
</ins><span class="cx"> 
</span><span class="cx"> #ifndef RenderThemeMac_h
</span><span class="cx"> #define RenderThemeMac_h
</span><span class="lines">@@ -235,3 +236,5 @@
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><span class="cx"> #endif // RenderThemeMac_h
</span><ins>+
+#endif // !PLATFORM(IOS)
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderThemeMacmm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderThemeMac.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderThemeMac.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderThemeMac.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -16,6 +16,7 @@
</span><span class="cx">  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
</span><span class="cx">  * Boston, MA 02110-1301, USA.
</span><span class="cx">  */
</span><ins>+#if !PLATFORM(IOS)
</ins><span class="cx"> 
</span><span class="cx"> #import &quot;config.h&quot;
</span><span class="cx"> #import &quot;RenderThemeMac.h&quot;
</span><span class="lines">@@ -1933,3 +1934,5 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><ins>+
+#endif // !PLATFORM(IOS)
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderVideocpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderVideo.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderVideo.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderVideo.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -116,11 +116,13 @@
</span><span class="cx">     if (videoElement().shouldDisplayPosterImage() &amp;&amp; !m_cachedImageSize.isEmpty() &amp;&amp; !imageResource()-&gt;errorOccurred())
</span><span class="cx">         return m_cachedImageSize;
</span><span class="cx"> 
</span><ins>+#if !PLATFORM(IOS)
</ins><span class="cx">     // When the natural size of the video is unavailable, we use the provided
</span><span class="cx">     // width and height attributes of the video element as the intrinsic size until
</span><span class="cx">     // better values become available.
</span><span class="cx">     if (videoElement().hasAttribute(widthAttr) &amp;&amp; videoElement().hasAttribute(heightAttr))
</span><span class="cx">         return LayoutSize(videoElement().width(), videoElement().height());
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx">     // &lt;video&gt; in standalone media documents should not use the default 300x150
</span><span class="cx">     // size since they also have audio-only files. By setting the intrinsic
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderViewcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderView.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderView.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderView.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -137,6 +137,11 @@
</span><span class="cx">     // If we have columns, then the available logical height is reduced to the column height.
</span><span class="cx">     if (hasColumns())
</span><span class="cx">         return columnInfo()-&gt;columnHeight();
</span><ins>+#if PLATFORM(IOS)
+    // Workaround for &lt;rdar://problem/7166808&gt;.
+    if (document().isPluginDocument() &amp;&amp; frameView().useFixedLayout())
+        return frameView().fixedLayoutSize().height();
+#endif
</ins><span class="cx">     return isHorizontalWritingMode() ? frameView().visibleHeight() : frameView().visibleWidth();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -363,6 +368,13 @@
</span><span class="cx">     return viewLogicalHeight();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+static inline LayoutSize fixedPositionOffset(const FrameView&amp; frameView)
+{
+    return frameView.useCustomFixedPositionLayoutRect() ? (frameView.customFixedPositionLayoutRect().location() - LayoutPoint()) : frameView-&gt;scrollOffset();
+}
+#endif
+
</ins><span class="cx"> void RenderView::mapLocalToContainer(const RenderLayerModelObject* repaintContainer, TransformState&amp; transformState, MapCoordinatesFlags mode, bool* wasFixed) const
</span><span class="cx"> {
</span><span class="cx">     // If a container was specified, and was not 0 or the RenderView,
</span><span class="lines">@@ -377,7 +389,11 @@
</span><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     if (mode &amp; IsFixed)
</span><ins>+#if PLATFORM(IOS)
+        transformState.move(fixedPositionOffset(m_frameView));
+#else
</ins><span class="cx">         transformState.move(frameView().scrollOffsetForFixedPosition());
</span><ins>+#endif
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> const RenderObject* RenderView::pushMappingToContainer(const RenderLayerModelObject* ancestorToStopAt, RenderGeometryMap&amp; geometryMap) const
</span><span class="lines">@@ -386,7 +402,11 @@
</span><span class="cx">     // then we should have found it by now.
</span><span class="cx">     ASSERT_ARG(ancestorToStopAt, !ancestorToStopAt || ancestorToStopAt == this);
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+    LayoutSize scrollOffset = fixedPositionOffset(frameView());
+#else
</ins><span class="cx">     LayoutSize scrollOffset = frameView().scrollOffsetForFixedPosition();
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx">     if (!ancestorToStopAt &amp;&amp; shouldUseTransformFromContainer(0)) {
</span><span class="cx">         TransformationMatrix t;
</span><span class="lines">@@ -401,7 +421,11 @@
</span><span class="cx"> void RenderView::mapAbsoluteToLocalPoint(MapCoordinatesFlags mode, TransformState&amp; transformState) const
</span><span class="cx"> {
</span><span class="cx">     if (mode &amp; IsFixed)
</span><ins>+#if PLATFORM(IOS)
+        transformState.move(fixedPositionOffset(frameView()));
+#else
</ins><span class="cx">         transformState.move(frameView().scrollOffsetForFixedPosition());
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx">     if (mode &amp; UseTransforms &amp;&amp; shouldUseTransformFromContainer(0)) {
</span><span class="cx">         TransformationMatrix t;
</span><span class="lines">@@ -572,7 +596,12 @@
</span><span class="cx">         frameView().repaintContentRectangle(pixelSnappedIntRect(ur), immediate);
</span><span class="cx">     else if (RenderBox* obj = elt-&gt;renderBox()) {
</span><span class="cx">         LayoutRect vr = viewRect();
</span><ins>+#if PLATFORM(IOS)
+        // Don't clip using the visible rect since clipping is handled at a higher level on iPhone.
+        LayoutRect r = ur;
+#else
</ins><span class="cx">         LayoutRect r = intersection(ur, vr);
</span><ins>+#endif
</ins><span class="cx">         
</span><span class="cx">         // Subtract out the contentsX and contentsY offsets to get our coords within the viewing
</span><span class="cx">         // rectangle.
</span><span class="lines">@@ -636,8 +665,13 @@
</span><span class="cx">             rect.setX(viewWidth() - rect.maxX());
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (fixed)
</del><ins>+    if (fixed) {
+#if PLATFORM(IOS)
+        rect.move(fixedPositionOffset(frameView()));
+#else
</ins><span class="cx">         rect.move(frameView().scrollOffsetForFixedPosition());
</span><ins>+#endif
+    }
</ins><span class="cx">         
</span><span class="cx">     // Apply our transform if we have one (because of full page zooming).
</span><span class="cx">     if (!repaintContainer &amp;&amp; layer() &amp;&amp; layer()-&gt;transform())
</span><span class="lines">@@ -1156,6 +1190,24 @@
</span><span class="cx">     return *m_flowThreadController;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+static bool isFixedPositionInViewport(const RenderObject&amp; renderer, const RenderObject* container)
+{
+    return (renderer.style().position() == FixedPosition) &amp;&amp; renderer.container() == container;
+}
+
+bool RenderView::hasCustomFixedPosition(const RenderObject&amp; renderer, ContainingBlockCheck checkContainer) const
+{
+    if (!frameView().useCustomFixedPositionLayoutRect())
+        return false;
+
+    if (checkContainer == CheckContainingBlock)
+        return isFixedPositionInViewport(renderer, this);
+
+    return renderer.style().position() == FixedPosition;
+}
+#endif
+
</ins><span class="cx"> void RenderView::pushLayoutStateForCurrentFlowThread(const RenderObject&amp; object)
</span><span class="cx"> {
</span><span class="cx">     if (!m_flowThreadController)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderViewh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderView.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderView.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderView.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -204,6 +204,11 @@
</span><span class="cx"> 
</span><span class="cx">     virtual void styleDidChange(StyleDifference, const RenderStyle* oldStyle) OVERRIDE;
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+    enum ContainingBlockCheck { CheckContainingBlock, DontCheckContainingBlock };
+    bool hasCustomFixedPosition(const RenderObject&amp;, ContainingBlockCheck = CheckContainingBlock) const;
+#endif
+
</ins><span class="cx">     IntervalArena* intervalArena();
</span><span class="cx"> 
</span><span class="cx">     IntSize viewportSize() const;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRenderWidgetcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RenderWidget.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RenderWidget.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RenderWidget.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -91,6 +91,11 @@
</span><span class="cx"> 
</span><span class="cx"> void RenderWidget::willBeDestroyed()
</span><span class="cx"> {
</span><ins>+#if PLATFORM(IOS)
+    if (hasLayer())
+        layer()-&gt;willBeDestroyed();
+#endif
+
</ins><span class="cx">     if (AXObjectCache* cache = document().existingAXObjectCache()) {
</span><span class="cx">         cache-&gt;childrenChanged(this-&gt;parent());
</span><span class="cx">         cache-&gt;remove(this);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingRootInlineBoxcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/RootInlineBox.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/RootInlineBox.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/RootInlineBox.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -846,7 +846,11 @@
</span><span class="cx">     bool setUsedFontWithLeading = false;
</span><span class="cx"> 
</span><span class="cx">     const RenderStyle&amp; boxLineStyle = box-&gt;lineStyle();
</span><ins>+#if PLATFORM(IOS)
+    if (usedFonts &amp;&amp; !usedFonts-&gt;isEmpty() &amp;&amp; (includeFont || (boxLineStyle.lineHeight().isNegative() &amp;&amp; includeLeading)) &amp;&amp; !box-&gt;renderer().document().settings()-&gt;alwaysUseBaselineOfPrimaryFont()) {
+#else
</ins><span class="cx">     if (usedFonts &amp;&amp; !usedFonts-&gt;isEmpty() &amp;&amp; (includeFont || (boxLineStyle.lineHeight().isNegative() &amp;&amp; includeLeading))) {
</span><ins>+#endif
</ins><span class="cx">         usedFonts-&gt;append(boxLineStyle.font().primaryFont());
</span><span class="cx">         for (size_t i = 0; i &lt; usedFonts-&gt;size(); ++i) {
</span><span class="cx">             const FontMetrics&amp; fontMetrics = usedFonts-&gt;at(i)-&gt;fontMetrics();
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingbreak_linescpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/break_lines.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/break_lines.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/break_lines.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -32,7 +32,7 @@
</span><span class="cx"> #include &lt;wtf/StdLibExtras.h&gt;
</span><span class="cx"> #include &lt;wtf/unicode/CharacterNames.h&gt;
</span><span class="cx"> 
</span><del>-#if PLATFORM(MAC)
</del><ins>+#if PLATFORM(MAC) &amp;&amp; !PLATFORM(IOS)
</ins><span class="cx"> #include &lt;CoreServices/CoreServices.h&gt;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderinglineBreakingContextInlineHeadersh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/line/BreakingContextInlineHeaders.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/line/BreakingContextInlineHeaders.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/line/BreakingContextInlineHeaders.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -733,8 +733,10 @@
</span><span class="cx">             midWordBreak = m_width.committedWidth() + wrapW + charWidth &gt; m_width.availableWidth();
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        bool betweenWords = c == '\n' || (m_currWS != PRE &amp;&amp; !m_atStart &amp;&amp; isBreakable(m_renderTextInfo.m_lineBreakIterator, m_current.m_pos, m_current.m_nextBreakablePosition, breakNBSP)
</del><ins>+        int nextBreakablePosition = m_current.nextBreakablePosition();
+        bool betweenWords = c == '\n' || (m_currWS != PRE &amp;&amp; !m_atStart &amp;&amp; isBreakable(m_renderTextInfo.m_lineBreakIterator, m_current.m_pos, nextBreakablePosition, breakNBSP)
</ins><span class="cx">             &amp;&amp; (style.hyphens() != HyphensNone || (m_current.previousInSameNode() != softHyphen)));
</span><ins>+        m_current.setNextBreakablePosition(nextBreakablePosition);
</ins><span class="cx"> 
</span><span class="cx">         if (betweenWords || midWordBreak) {
</span><span class="cx">             bool stoppedIgnoringSpaces = false;
</span><span class="lines">@@ -806,13 +808,13 @@
</span><span class="cx">                     // additional whitespace.
</span><span class="cx">                     if (!m_width.fitsOnLineIncludingExtraWidth(charWidth)) {
</span><span class="cx">                         lineWasTooWide = true;
</span><del>-                        m_lineBreak.moveTo(m_current.renderer(), m_current.m_pos, m_current.m_nextBreakablePosition);
</del><ins>+                        m_lineBreak.moveTo(m_current.renderer(), m_current.m_pos, m_current.nextBreakablePosition());
</ins><span class="cx">                         m_lineBreaker.skipTrailingWhitespace(m_lineBreak, m_lineInfo);
</span><span class="cx">                     }
</span><span class="cx">                 }
</span><span class="cx">                 if (lineWasTooWide || !m_width.fitsOnLine()) {
</span><span class="cx">                     if (canHyphenate &amp;&amp; !m_width.fitsOnLine()) {
</span><del>-                        tryHyphenating(renderText, font, style.locale(), consecutiveHyphenatedLines, m_blockStyle.hyphenationLimitLines(), style.hyphenationLimitBefore(), style.hyphenationLimitAfter(), lastSpace, m_current.m_pos, m_width.currentWidth() - additionalTempWidth, m_width.availableWidth(), isFixedPitch, m_collapseWhiteSpace, lastSpaceWordSpacing, m_lineBreak, m_current.m_nextBreakablePosition, m_lineBreaker.m_hyphenated);
</del><ins>+                        tryHyphenating(renderText, font, style.locale(), consecutiveHyphenatedLines, m_blockStyle.hyphenationLimitLines(), style.hyphenationLimitBefore(), style.hyphenationLimitAfter(), lastSpace, m_current.m_pos, m_width.currentWidth() - additionalTempWidth, m_width.availableWidth(), isFixedPitch, m_collapseWhiteSpace, lastSpaceWordSpacing, m_lineBreak, m_current.nextBreakablePosition(), m_lineBreaker.m_hyphenated);
</ins><span class="cx">                         if (m_lineBreaker.m_hyphenated) {
</span><span class="cx">                             m_atEnd = true;
</span><span class="cx">                             return false;
</span><span class="lines">@@ -852,7 +854,7 @@
</span><span class="cx">             if (c == '\n' &amp;&amp; m_preservesNewline) {
</span><span class="cx">                 if (!stoppedIgnoringSpaces &amp;&amp; m_current.m_pos &gt; 0)
</span><span class="cx">                     ensureCharacterGetsLineBox(m_lineMidpointState, m_current);
</span><del>-                m_lineBreak.moveTo(m_current.renderer(), m_current.m_pos, m_current.m_nextBreakablePosition);
</del><ins>+                m_lineBreak.moveTo(m_current.renderer(), m_current.m_pos, m_current.nextBreakablePosition());
</ins><span class="cx">                 m_lineBreak.increment();
</span><span class="cx">                 m_lineInfo.setPreviousLineBrokeCleanly(true);
</span><span class="cx">                 return true;
</span><span class="lines">@@ -861,7 +863,7 @@
</span><span class="cx">             if (m_autoWrap &amp;&amp; betweenWords) {
</span><span class="cx">                 m_width.commit();
</span><span class="cx">                 wrapW = 0;
</span><del>-                m_lineBreak.moveTo(m_current.renderer(), m_current.m_pos, m_current.m_nextBreakablePosition);
</del><ins>+                m_lineBreak.moveTo(m_current.renderer(), m_current.m_pos, m_current.nextBreakablePosition());
</ins><span class="cx">                 // Auto-wrapping text should not wrap in the middle of a word once it has had an
</span><span class="cx">                 // opportunity to break after a word.
</span><span class="cx">                 breakWords = false;
</span><span class="lines">@@ -870,7 +872,7 @@
</span><span class="cx">             if (midWordBreak &amp;&amp; !U16_IS_TRAIL(c) &amp;&amp; !(U_GET_GC_MASK(c) &amp; U_GC_M_MASK)) {
</span><span class="cx">                 // Remember this as a breakable position in case
</span><span class="cx">                 // adding the end width forces a break.
</span><del>-                m_lineBreak.moveTo(m_current.renderer(), m_current.m_pos, m_current.m_nextBreakablePosition);
</del><ins>+                m_lineBreak.moveTo(m_current.renderer(), m_current.m_pos, m_current.nextBreakablePosition());
</ins><span class="cx">                 midWordBreak &amp;= (breakWords || breakAll);
</span><span class="cx">             }
</span><span class="cx"> 
</span><span class="lines">@@ -927,7 +929,7 @@
</span><span class="cx"> 
</span><span class="cx">         if (!m_currentCharacterIsSpace &amp;&amp; previousCharacterIsWS) {
</span><span class="cx">             if (m_autoWrap &amp;&amp; m_currentStyle-&gt;breakOnlyAfterWhiteSpace())
</span><del>-                m_lineBreak.moveTo(m_current.renderer(), m_current.m_pos, m_current.m_nextBreakablePosition);
</del><ins>+                m_lineBreak.moveTo(m_current.renderer(), m_current.m_pos, m_current.nextBreakablePosition());
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         if (m_collapseWhiteSpace &amp;&amp; m_currentCharacterIsSpace &amp;&amp; !m_ignoringSpaces)
</span><span class="lines">@@ -966,7 +968,7 @@
</span><span class="cx"> 
</span><span class="cx">     if (!m_width.fitsOnLine()) {
</span><span class="cx">         if (canHyphenate)
</span><del>-            tryHyphenating(renderText, font, style.locale(), consecutiveHyphenatedLines, m_blockStyle.hyphenationLimitLines(), style.hyphenationLimitBefore(), style.hyphenationLimitAfter(), lastSpace, m_current.m_pos, m_width.currentWidth() - additionalTempWidth, m_width.availableWidth(), isFixedPitch, m_collapseWhiteSpace, lastSpaceWordSpacing, m_lineBreak, m_current.m_nextBreakablePosition, m_lineBreaker.m_hyphenated);
</del><ins>+            tryHyphenating(renderText, font, style.locale(), consecutiveHyphenatedLines, m_blockStyle.hyphenationLimitLines(), style.hyphenationLimitBefore(), style.hyphenationLimitAfter(), lastSpace, m_current.m_pos, m_width.currentWidth() - additionalTempWidth, m_width.availableWidth(), isFixedPitch, m_collapseWhiteSpace, lastSpaceWordSpacing, m_lineBreak, m_current.nextBreakablePosition(), m_lineBreaker.m_hyphenated);
</ins><span class="cx"> 
</span><span class="cx">         if (!hyphenated &amp;&amp; m_lineBreak.previousInSameNode() == softHyphen &amp;&amp; style.hyphens() != HyphensNone) {
</span><span class="cx">             hyphenated = true;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderinglineLineBreakerh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/line/LineBreaker.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/line/LineBreaker.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/line/LineBreaker.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -28,6 +28,7 @@
</span><span class="cx"> #include &quot;InlineIterator.h&quot;
</span><span class="cx"> #include &quot;LineInfo.h&quot;
</span><span class="cx"> #include &quot;LineInlineHeaders.h&quot;
</span><ins>+#include &quot;TextBreakIterator.h&quot;
</ins><span class="cx"> #include &lt;wtf/Vector.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderinglineLineWidthcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/line/LineWidth.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/line/LineWidth.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/line/LineWidth.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -33,6 +33,10 @@
</span><span class="cx"> #include &quot;RenderBlockFlow.h&quot;
</span><span class="cx"> #include &quot;RenderRubyRun.h&quot;
</span><span class="cx"> 
</span><ins>+#if ENABLE(CSS_SHAPES)
+#include &quot;ShapeInsideInfo.h&quot;
+#endif
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> LineWidth::LineWidth(RenderBlockFlow&amp; block, bool isFirstLine, IndentTextOrNot shouldIndentText)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingshapesBoxShapecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/shapes/BoxShape.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/shapes/BoxShape.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/shapes/BoxShape.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -108,11 +108,16 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void BoxShape::buildPath(Path&amp; path) const
</del><ins>+static void addRoundedRect(Path&amp; path, const FloatRect&amp; rect, const FloatRoundedRect::Radii&amp; radii)
</ins><span class="cx"> {
</span><del>-    const FloatRect&amp; rect = m_bounds.rect();
-    const FloatRoundedRect::Radii&amp; radii = m_bounds.radii();
</del><span class="cx">     path.addRoundedRect(rect, radii.topLeft(), radii.topRight(), radii.bottomLeft(), radii.bottomRight(), Path::PreferBezierRoundedRect);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void BoxShape::buildDisplayPaths(DisplayPaths&amp; paths) const
+{
+    addRoundedRect(paths.shape, m_bounds.rect(), m_bounds.radii());
+    if (shapeMargin())
+        addRoundedRect(paths.marginShape, m_marginBounds.rect(), m_marginBounds.radii());
+}
+
</ins><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingshapesBoxShapeh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/shapes/BoxShape.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/shapes/BoxShape.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/shapes/BoxShape.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -46,7 +46,7 @@
</span><span class="cx">     virtual void getIncludedIntervals(LayoutUnit logicalTop, LayoutUnit logicalHeight, SegmentList&amp;) const OVERRIDE;
</span><span class="cx">     virtual bool firstIncludedIntervalLogicalTop(LayoutUnit minLogicalIntervalTop, const LayoutSize&amp; minLogicalIntervalSize, LayoutUnit&amp;) const OVERRIDE;
</span><span class="cx"> 
</span><del>-    virtual void buildPath(Path&amp;) const OVERRIDE;
</del><ins>+    virtual void buildDisplayPaths(DisplayPaths&amp;) const OVERRIDE;
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     FloatRoundedRect m_bounds;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingshapesPolygonShapecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/shapes/PolygonShape.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/shapes/PolygonShape.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/shapes/PolygonShape.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -523,19 +523,24 @@
</span><span class="cx">     return firstFitFound;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void PolygonShape::buildPath(Path&amp; path) const
</del><ins>+static void addPolygon(Path&amp; path, const FloatPolygon&amp; polygon)
</ins><span class="cx"> {
</span><del>-    FloatPoint vertex;
-
-    if (!m_polygon.numberOfVertices())
</del><ins>+    if (!polygon.numberOfVertices())
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    path.moveTo(m_polygon.vertexAt(0));
</del><ins>+    path.moveTo(polygon.vertexAt(0));
</ins><span class="cx"> 
</span><del>-    for (size_t i = 1; i &lt; m_polygon.numberOfVertices(); i++)
-        path.addLineTo(m_polygon.vertexAt(i));
</del><ins>+    for (size_t i = 1; i &lt; polygon.numberOfVertices(); i++)
+        path.addLineTo(polygon.vertexAt(i));
</ins><span class="cx"> 
</span><span class="cx">     path.closeSubpath();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void PolygonShape::buildDisplayPaths(DisplayPaths&amp; paths) const
+{
+    addPolygon(paths.shape, m_polygon);
+    if (shapeMargin())
+        addPolygon(paths.marginShape, shapeMarginBounds());
+}
+
</ins><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingshapesPolygonShapeh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/shapes/PolygonShape.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/shapes/PolygonShape.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/shapes/PolygonShape.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -97,7 +97,7 @@
</span><span class="cx">     virtual void getIncludedIntervals(LayoutUnit logicalTop, LayoutUnit logicalHeight, SegmentList&amp;) const OVERRIDE;
</span><span class="cx">     virtual bool firstIncludedIntervalLogicalTop(LayoutUnit minLogicalIntervalTop, const LayoutSize&amp; minLogicalIntervalSize, LayoutUnit&amp;) const OVERRIDE;
</span><span class="cx"> 
</span><del>-    virtual void buildPath(Path&amp;) const OVERRIDE;
</del><ins>+    virtual void buildDisplayPaths(DisplayPaths&amp;) const OVERRIDE;
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     const FloatPolygon&amp; shapeMarginBounds() const;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingshapesRasterShapeh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/shapes/RasterShape.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/shapes/RasterShape.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/shapes/RasterShape.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -103,7 +103,12 @@
</span><span class="cx">     virtual void getIncludedIntervals(LayoutUnit logicalTop, LayoutUnit logicalHeight, SegmentList&amp;) const OVERRIDE;
</span><span class="cx">     virtual bool firstIncludedIntervalLogicalTop(LayoutUnit minLogicalIntervalTop, const LayoutSize&amp; minLogicalIntervalSize, LayoutUnit&amp;) const OVERRIDE;
</span><span class="cx"> 
</span><del>-    virtual void buildPath(Path&amp; path) const OVERRIDE { m_intervals-&gt;buildBoundsPath(path); }
</del><ins>+    virtual void buildDisplayPaths(DisplayPaths&amp; paths) const OVERRIDE
+    {
+        m_intervals-&gt;buildBoundsPath(paths.shape);
+        if (shapeMargin())
+            marginIntervals().buildBoundsPath(paths.marginShape);
+    }
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     const RasterShapeIntervals&amp; marginIntervals() const;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingshapesRectangleShapecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/shapes/RectangleShape.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/shapes/RectangleShape.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/shapes/RectangleShape.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -228,9 +228,11 @@
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void RectangleShape::buildPath(Path&amp; path) const
</del><ins>+void RectangleShape::buildDisplayPaths(DisplayPaths&amp; paths) const
</ins><span class="cx"> {
</span><del>-    path.addRoundedRect(m_bounds, FloatSize(m_bounds.rx(), m_bounds.ry()), Path::PreferBezierRoundedRect);
</del><ins>+    paths.shape.addRoundedRect(m_bounds, FloatSize(m_bounds.rx(), m_bounds.ry()), Path::PreferBezierRoundedRect);
+    if (shapeMargin())
+        paths.marginShape.addRoundedRect(shapeMarginBounds(), FloatSize(shapeMarginBounds().rx(), shapeMarginBounds().ry()), Path::PreferBezierRoundedRect);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingshapesRectangleShapeh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/shapes/RectangleShape.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/shapes/RectangleShape.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/shapes/RectangleShape.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -56,7 +56,7 @@
</span><span class="cx">     virtual void getIncludedIntervals(LayoutUnit logicalTop, LayoutUnit logicalHeight, SegmentList&amp;) const OVERRIDE;
</span><span class="cx">     virtual bool firstIncludedIntervalLogicalTop(LayoutUnit minLogicalIntervalTop, const LayoutSize&amp; minLogicalIntervalSize, LayoutUnit&amp;) const OVERRIDE;
</span><span class="cx"> 
</span><del>-    virtual void buildPath(Path&amp;) const OVERRIDE;
</del><ins>+    virtual void buildDisplayPaths(DisplayPaths&amp;) const OVERRIDE;
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     class ShapeBounds : public FloatRect {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingshapesShapeh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/shapes/Shape.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/shapes/Shape.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/shapes/Shape.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -62,6 +62,11 @@
</span><span class="cx"> 
</span><span class="cx"> class Shape {
</span><span class="cx"> public:
</span><ins>+    struct DisplayPaths {
+        Path shape;
+        Path marginShape;
+    };
+
</ins><span class="cx">     static PassOwnPtr&lt;Shape&gt; createShape(const BasicShape*, const LayoutSize&amp; logicalBoxSize, WritingMode, Length margin, Length padding);
</span><span class="cx">     static PassOwnPtr&lt;Shape&gt; createShape(const StyleImage*, float threshold, const LayoutSize&amp; logicalBoxSize, WritingMode, Length margin, Length padding);
</span><span class="cx">     static PassOwnPtr&lt;Shape&gt; createShape(const RoundedRect&amp;, WritingMode, Length margin, Length padding);
</span><span class="lines">@@ -77,7 +82,7 @@
</span><span class="cx">     bool lineOverlapsShapeMarginBounds(LayoutUnit lineTop, LayoutUnit lineHeight) const { return lineOverlapsBoundingBox(lineTop, lineHeight, shapeMarginLogicalBoundingBox()); }
</span><span class="cx">     bool lineOverlapsShapePaddingBounds(LayoutUnit lineTop, LayoutUnit lineHeight) const { return lineOverlapsBoundingBox(lineTop, lineHeight, shapePaddingLogicalBoundingBox()); }
</span><span class="cx"> 
</span><del>-    virtual void buildPath(Path&amp;) const = 0;
</del><ins>+    virtual void buildDisplayPaths(DisplayPaths&amp;) const = 0;
</ins><span class="cx"> 
</span><span class="cx"> protected:
</span><span class="cx">     float shapeMargin() const { return m_margin; }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingshapesShapeInfocpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/shapes/ShapeInfo.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/shapes/ShapeInfo.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/shapes/ShapeInfo.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -60,7 +60,7 @@
</span><span class="cx">     if (Shape* shape = m_shape.get())
</span><span class="cx">         return *shape;
</span><span class="cx"> 
</span><del>-    WritingMode writingMode = m_renderer.style().writingMode();
</del><ins>+    WritingMode writingMode = this-&gt;writingMode();
</ins><span class="cx">     Length margin = m_renderer.style().shapeMargin();
</span><span class="cx">     Length padding = m_renderer.style().shapePadding();
</span><span class="cx">     float shapeImageThreshold = m_renderer.style().shapeImageThreshold();
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingshapesShapeInfoh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/shapes/ShapeInfo.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/shapes/ShapeInfo.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/shapes/ShapeInfo.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -165,6 +165,8 @@
</span><span class="cx">     virtual ShapeValue* shapeValue() const = 0;
</span><span class="cx">     virtual void getIntervals(LayoutUnit, LayoutUnit, SegmentList&amp;) const = 0;
</span><span class="cx"> 
</span><ins>+    virtual WritingMode writingMode() const { return m_renderer.style().writingMode(); }
+
</ins><span class="cx">     LayoutUnit logicalTopOffset() const
</span><span class="cx">     {
</span><span class="cx">         BasicShape::ReferenceBox box = resolvedBox();
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingshapesShapeOutsideInfocpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/shapes/ShapeOutsideInfo.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/shapes/ShapeOutsideInfo.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/shapes/ShapeOutsideInfo.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -100,6 +100,12 @@
</span><span class="cx">     return m_renderer.style().shapeOutside();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+WritingMode ShapeOutsideInfo::writingMode() const
+{
+    ASSERT(m_renderer.containingBlock());
+    return m_renderer.containingBlock()-&gt;style().writingMode();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+}
+
</ins><span class="cx"> #endif
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingshapesShapeOutsideInfoh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/shapes/ShapeOutsideInfo.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/shapes/ShapeOutsideInfo.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/shapes/ShapeOutsideInfo.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -79,6 +79,8 @@
</span><span class="cx">         return computedShape().getExcludedIntervals(lineTop, lineHeight, segments);
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    virtual WritingMode writingMode() const;
+
</ins><span class="cx">     LayoutUnit m_leftMarginBoxDelta;
</span><span class="cx">     LayoutUnit m_rightMarginBoxDelta;
</span><span class="cx">     LayoutUnit m_lineTop;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingstyleBasicShapescpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/style/BasicShapes.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/style/BasicShapes.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/style/BasicShapes.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -46,7 +46,8 @@
</span><span class="cx"> 
</span><span class="cx">     // Just polygons with same number of vertices can be animated.
</span><span class="cx">     if (type() == BasicShape::BasicShapePolygonType
</span><del>-        &amp;&amp; static_cast&lt;const BasicShapePolygon*&gt;(this)-&gt;values().size() != static_cast&lt;const BasicShapePolygon*&gt;(other)-&gt;values().size())
</del><ins>+        &amp;&amp; (static_cast&lt;const BasicShapePolygon*&gt;(this)-&gt;values().size() != static_cast&lt;const BasicShapePolygon*&gt;(other)-&gt;values().size()
+        || static_cast&lt;const BasicShapePolygon*&gt;(this)-&gt;windRule() != static_cast&lt;const BasicShapePolygon*&gt;(other)-&gt;windRule()))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     // Circles with keywords for radii or center coordinates cannot be animated.
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingstyleRenderStyleh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/style/RenderStyle.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/style/RenderStyle.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/style/RenderStyle.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1794,7 +1794,10 @@
</span><span class="cx">     static NamedGridLinesMap initialNamedGridRowLines() { return NamedGridLinesMap(); }
</span><span class="cx"> 
</span><span class="cx">     // 'auto' is the default.
</span><del>-    static GridPosition initialGridPosition() { return GridPosition(); }
</del><ins>+    static GridPosition initialGridItemColumnStart() { return GridPosition(); }
+    static GridPosition initialGridItemColumnEnd() { return GridPosition(); }
+    static GridPosition initialGridItemRowStart() { return GridPosition(); }
+    static GridPosition initialGridItemRowEnd() { return GridPosition(); }
</ins><span class="cx"> 
</span><span class="cx">     static unsigned initialTabSize() { return 8; }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingstyleStyleGeneratedImagecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/style/StyleGeneratedImage.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/style/StyleGeneratedImage.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/style/StyleGeneratedImage.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -30,8 +30,8 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx">     
</span><del>-StyleGeneratedImage::StyleGeneratedImage(PassRefPtr&lt;CSSImageGeneratorValue&gt; value)
-    : m_imageGeneratorValue(value)  
</del><ins>+StyleGeneratedImage::StyleGeneratedImage(PassRef&lt;CSSImageGeneratorValue&gt; value)
+    : m_imageGeneratorValue(std::move(value))
</ins><span class="cx">     , m_fixedSize(m_imageGeneratorValue-&gt;isFixedSize())
</span><span class="cx"> {
</span><span class="cx">     m_isGeneratedImage = true;
</span><span class="lines">@@ -39,13 +39,13 @@
</span><span class="cx"> 
</span><span class="cx"> PassRefPtr&lt;CSSValue&gt; StyleGeneratedImage::cssValue() const
</span><span class="cx"> {
</span><del>-    return m_imageGeneratorValue;
</del><ins>+    return &amp;const_cast&lt;CSSImageGeneratorValue&amp;&gt;(m_imageGeneratorValue.get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> LayoutSize StyleGeneratedImage::imageSize(const RenderElement* renderer, float multiplier) const
</span><span class="cx"> {
</span><span class="cx">     if (m_fixedSize) {
</span><del>-        IntSize fixedSize = m_imageGeneratorValue-&gt;fixedSize(renderer);
</del><ins>+        IntSize fixedSize = const_cast&lt;CSSImageGeneratorValue&amp;&gt;(m_imageGeneratorValue.get()).fixedSize(renderer);
</ins><span class="cx">         if (multiplier == 1.0f)
</span><span class="cx">             return fixedSize;
</span><span class="cx"> 
</span><span class="lines">@@ -86,7 +86,7 @@
</span><span class="cx"> 
</span><span class="cx"> PassRefPtr&lt;Image&gt; StyleGeneratedImage::image(RenderElement* renderer, const IntSize&amp; size) const
</span><span class="cx"> {
</span><del>-    return m_imageGeneratorValue-&gt;image(renderer, size);
</del><ins>+    return const_cast&lt;CSSImageGeneratorValue&amp;&gt;(m_imageGeneratorValue.get()).image(renderer, size);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool StyleGeneratedImage::knownToBeOpaque(const RenderElement* renderer) const
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingstyleStyleGeneratedImageh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/style/StyleGeneratedImage.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/style/StyleGeneratedImage.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/style/StyleGeneratedImage.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -33,15 +33,15 @@
</span><span class="cx"> 
</span><span class="cx"> class StyleGeneratedImage FINAL : public StyleImage {
</span><span class="cx"> public:
</span><del>-    static PassRefPtr&lt;StyleGeneratedImage&gt; create(CSSImageGeneratorValue* value)
</del><ins>+    static PassRefPtr&lt;StyleGeneratedImage&gt; create(PassRef&lt;CSSImageGeneratorValue&gt; value)
</ins><span class="cx">     {
</span><del>-        return adoptRef(new StyleGeneratedImage(value));
</del><ins>+        return adoptRef(new StyleGeneratedImage(std::move(value)));
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    CSSImageGeneratorValue* imageValue() const { return m_imageGeneratorValue.get(); }
</del><ins>+    CSSImageGeneratorValue&amp; imageValue() { return m_imageGeneratorValue.get(); }
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    virtual WrappedImagePtr data() const OVERRIDE { return m_imageGeneratorValue.get(); }
</del><ins>+    virtual WrappedImagePtr data() const OVERRIDE { return &amp;m_imageGeneratorValue.get(); }
</ins><span class="cx"> 
</span><span class="cx">     virtual PassRefPtr&lt;CSSValue&gt; cssValue() const OVERRIDE;
</span><span class="cx"> 
</span><span class="lines">@@ -56,9 +56,9 @@
</span><span class="cx">     virtual PassRefPtr&lt;Image&gt; image(RenderElement*, const IntSize&amp;) const OVERRIDE;
</span><span class="cx">     virtual bool knownToBeOpaque(const RenderElement*) const OVERRIDE;
</span><span class="cx"> 
</span><del>-    StyleGeneratedImage(PassRefPtr&lt;CSSImageGeneratorValue&gt;);
</del><ins>+    StyleGeneratedImage(PassRef&lt;CSSImageGeneratorValue&gt;);
</ins><span class="cx">     
</span><del>-    RefPtr&lt;CSSImageGeneratorValue&gt; m_imageGeneratorValue;
</del><ins>+    Ref&lt;CSSImageGeneratorValue&gt; m_imageGeneratorValue;
</ins><span class="cx">     IntSize m_containerSize;
</span><span class="cx">     bool m_fixedSize;
</span><span class="cx"> };
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingstyleStyleGridItemDatacpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/style/StyleGridItemData.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/style/StyleGridItemData.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/style/StyleGridItemData.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -35,10 +35,10 @@
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> StyleGridItemData::StyleGridItemData()
</span><del>-    : m_gridColumnStart(RenderStyle::initialGridPosition())
-    , m_gridColumnEnd(RenderStyle::initialGridPosition())
-    , m_gridRowStart(RenderStyle::initialGridPosition())
-    , m_gridRowEnd(RenderStyle::initialGridPosition())
</del><ins>+    : m_gridColumnStart(RenderStyle::initialGridItemColumnStart())
+    , m_gridColumnEnd(RenderStyle::initialGridItemColumnEnd())
+    , m_gridRowStart(RenderStyle::initialGridItemRowStart())
+    , m_gridRowEnd(RenderStyle::initialGridItemRowEnd())
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingstyleStyleImageh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/style/StyleImage.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/style/StyleImage.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/style/StyleImage.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -39,7 +39,7 @@
</span><span class="cx"> class RenderElement;
</span><span class="cx"> class RenderObject;
</span><span class="cx"> 
</span><del>-typedef void* WrappedImagePtr;
</del><ins>+typedef const void* WrappedImagePtr;
</ins><span class="cx"> 
</span><span class="cx"> class StyleImage : public RefCounted&lt;StyleImage&gt; {
</span><span class="cx"> public:
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingstyleStylePendingImageh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/style/StylePendingImage.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/style/StylePendingImage.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/style/StylePendingImage.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -29,7 +29,6 @@
</span><span class="cx"> #include &quot;CSSCursorImageValue.h&quot;
</span><span class="cx"> #include &quot;CSSImageGeneratorValue.h&quot;
</span><span class="cx"> #include &quot;CSSImageValue.h&quot;
</span><del>-#include &quot;Image.h&quot;
</del><span class="cx"> #include &quot;StyleImage.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(CSS_IMAGE_SET)
</span><span class="lines">@@ -46,15 +45,18 @@
</span><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;StylePendingImage&gt; create(CSSValue* value) { return adoptRef(new StylePendingImage(value)); }
</span><span class="cx"> 
</span><del>-    CSSImageValue* cssImageValue() const { return m_value-&gt;isImageValue() ? toCSSImageValue(m_value) : nullptr; }
-    CSSImageGeneratorValue* cssImageGeneratorValue() const { return m_value-&gt;isImageGeneratorValue() ? static_cast&lt;CSSImageGeneratorValue*&gt;(m_value) : nullptr; }
-    CSSCursorImageValue* cssCursorImageValue() const { return m_value-&gt;isCursorImageValue() ? toCSSCursorImageValue(m_value) : nullptr; }
</del><ins>+    CSSImageValue* cssImageValue() const { return m_value &amp;&amp; m_value-&gt;isImageValue() ? toCSSImageValue(m_value) : nullptr; }
+    CSSImageGeneratorValue* cssImageGeneratorValue() const { return m_value &amp;&amp; m_value-&gt;isImageGeneratorValue() ? static_cast&lt;CSSImageGeneratorValue*&gt;(m_value) : nullptr; }
+    CSSCursorImageValue* cssCursorImageValue() const { return m_value &amp;&amp; m_value-&gt;isCursorImageValue() ? toCSSCursorImageValue(m_value) : nullptr; }
+
</ins><span class="cx"> #if ENABLE(CSS_IMAGE_SET)
</span><del>-    CSSImageSetValue* cssImageSetValue() const { return m_value-&gt;isImageSetValue() ? toCSSImageSetValue(m_value) : nullptr; }
</del><ins>+    CSSImageSetValue* cssImageSetValue() const { return m_value &amp;&amp; m_value-&gt;isImageSetValue() ? toCSSImageSetValue(m_value) : nullptr; }
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+    void detachFromCSSValue() { m_value = nullptr; }
+
</ins><span class="cx"> private:
</span><del>-    virtual WrappedImagePtr data() const OVERRIDE { return toCSSImageValue(m_value); }
</del><ins>+    virtual WrappedImagePtr data() const OVERRIDE { return const_cast&lt;StylePendingImage*&gt;(this); }
</ins><span class="cx"> 
</span><span class="cx">     virtual PassRefPtr&lt;CSSValue&gt; cssValue() const OVERRIDE { return m_value; }
</span><span class="cx">     
</span><span class="lines">@@ -85,4 +87,5 @@
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingsvgRenderSVGInlineTextcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/svg/RenderSVGInlineText.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/svg/RenderSVGInlineText.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/svg/RenderSVGInlineText.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -38,6 +38,7 @@
</span><span class="cx"> #include &quot;SVGRootInlineBox.h&quot;
</span><span class="cx"> #include &quot;StyleFontSizeFunctions.h&quot;
</span><span class="cx"> #include &quot;StyleResolver.h&quot;
</span><ins>+#include &quot;Text.h&quot;
</ins><span class="cx"> #include &quot;VisiblePosition.h&quot;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -74,6 +75,11 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+String RenderSVGInlineText::originalText() const
+{
+    return textNode().data();
+}
+
</ins><span class="cx"> void RenderSVGInlineText::setTextInternal(const String&amp; text)
</span><span class="cx"> {
</span><span class="cx">     RenderText::setTextInternal(text);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorerenderingsvgRenderSVGInlineTexth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/rendering/svg/RenderSVGInlineText.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/rendering/svg/RenderSVGInlineText.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/rendering/svg/RenderSVGInlineText.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -52,6 +52,7 @@
</span><span class="cx"> private:
</span><span class="cx">     virtual const char* renderName() const OVERRIDE { return &quot;RenderSVGInlineText&quot;; }
</span><span class="cx"> 
</span><ins>+    virtual String originalText() const OVERRIDE;
</ins><span class="cx">     virtual void setTextInternal(const String&amp;) OVERRIDE;
</span><span class="cx">     virtual void styleDidChange(StyleDifference, const RenderStyle*) OVERRIDE;
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoresvgSVGDocumentcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/svg/SVGDocument.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/svg/SVGDocument.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/svg/SVGDocument.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -100,7 +100,12 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+PassRefPtr&lt;Document&gt; SVGDocument::cloneDocumentWithoutChildren() const
+{
+    return create(nullptr, url());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+}
+
</ins><span class="cx"> // vim:ts=4:noet
</span><span class="cx"> #endif // ENABLE(SVG)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoresvgSVGDocumenth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/svg/SVGDocument.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/svg/SVGDocument.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/svg/SVGDocument.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -53,6 +53,8 @@
</span><span class="cx"> 
</span><span class="cx">     virtual bool childShouldCreateRenderer(const Node&amp;) const OVERRIDE;
</span><span class="cx"> 
</span><ins>+    virtual PassRefPtr&lt;Document&gt; cloneDocumentWithoutChildren() const OVERRIDE;
+
</ins><span class="cx">     FloatPoint m_translate;
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoresvgSVGElementcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/svg/SVGElement.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/svg/SVGElement.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/svg/SVGElement.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -782,7 +782,7 @@
</span><span class="cx">     if (!m_svgRareData || !m_svgRareData-&gt;useOverrideComputedStyle())
</span><span class="cx">         return Element::computedStyle(pseudoElementSpecifier);
</span><span class="cx"> 
</span><del>-    RenderStyle* parentStyle = 0;
</del><ins>+    RenderStyle* parentStyle = nullptr;
</ins><span class="cx">     if (Element* parent = parentOrShadowHostElement()) {
</span><span class="cx">         if (auto renderer = parent-&gt;renderer())
</span><span class="cx">             parentStyle = &amp;renderer-&gt;style();
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoresvgSVGElementh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/svg/SVGElement.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/svg/SVGElement.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/svg/SVGElement.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -123,7 +123,7 @@
</span><span class="cx">     virtual void synchronizeSystemLanguage() { }
</span><span class="cx"> 
</span><span class="cx"> #ifndef NDEBUG
</span><del>-    bool isAnimatableAttribute(const QualifiedName&amp;) const;
</del><ins>+    virtual bool isAnimatableAttribute(const QualifiedName&amp;) const;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     MutableStyleProperties* animatedSMILStyleProperties() const;
</span><span class="lines">@@ -171,8 +171,7 @@
</span><span class="cx">     // https://bugs.webkit.org/show_bug.cgi?id=77938
</span><span class="cx">     virtual bool areAuthorShadowsAllowed() const OVERRIDE { return false; }
</span><span class="cx"> 
</span><del>-    RenderStyle* computedStyle(PseudoId = NOPSEUDO);
-    virtual RenderStyle* virtualComputedStyle(PseudoId pseudoElementSpecifier = NOPSEUDO) OVERRIDE { return computedStyle(pseudoElementSpecifier); }
</del><ins>+    virtual RenderStyle* computedStyle(PseudoId = NOPSEUDO) OVERRIDE FINAL;
</ins><span class="cx">     virtual bool willRecalcStyle(Style::Change) OVERRIDE;
</span><span class="cx"> 
</span><span class="cx">     virtual bool isSupported(StringImpl* feature, StringImpl* version) const;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoresvgSVGScriptElementcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/svg/SVGScriptElement.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/svg/SVGScriptElement.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/svg/SVGScriptElement.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -76,10 +76,8 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (name == SVGNames::typeAttr) {
-        setType(value);
</del><ins>+    if (name == SVGNames::typeAttr)
</ins><span class="cx">         return;
</span><del>-    }
</del><span class="cx"> 
</span><span class="cx">     if (name == HTMLNames::onerrorAttr) {
</span><span class="cx">         setAttributeEventListener(eventNames().errorEvent, name, value);
</span><span class="lines">@@ -143,16 +141,6 @@
</span><span class="cx">     SVGExternalResourcesRequired::finishParsingChildren();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-String SVGScriptElement::type() const
-{
-    return m_type;
-}
-
-void SVGScriptElement::setType(const String&amp; type)
-{
-    m_type = type;
-}
-
</del><span class="cx"> void SVGScriptElement::addSubresourceAttributeURLs(ListHashSet&lt;URL&gt;&amp; urls) const
</span><span class="cx"> {
</span><span class="cx">     SVGElement::addSubresourceAttributeURLs(urls);
</span><span class="lines">@@ -172,7 +160,7 @@
</span><span class="cx"> 
</span><span class="cx"> String SVGScriptElement::typeAttributeValue() const
</span><span class="cx"> {
</span><del>-    return type();
</del><ins>+    return getAttribute(SVGNames::typeAttr).string();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String SVGScriptElement::languageAttributeValue() const
</span><span class="lines">@@ -210,6 +198,16 @@
</span><span class="cx">     return adoptRef(new SVGScriptElement(tagQName(), document(), false, alreadyStarted()));
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#ifndef NDEBUG
+bool SVGScriptElement::isAnimatableAttribute(const QualifiedName&amp; name) const
+{
+    if (name == SVGNames::typeAttr)
+        return false;
+
+    return SVGElement::isAnimatableAttribute(name);
</ins><span class="cx"> }
</span><ins>+#endif
</ins><span class="cx"> 
</span><ins>+}
+
</ins><span class="cx"> #endif // ENABLE(SVG)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoresvgSVGScriptElementh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/svg/SVGScriptElement.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/svg/SVGScriptElement.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/svg/SVGScriptElement.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -38,8 +38,9 @@
</span><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;SVGScriptElement&gt; create(const QualifiedName&amp;, Document&amp;, bool wasInsertedByParser);
</span><span class="cx"> 
</span><del>-    String type() const;
-    void setType(const String&amp;);
</del><ins>+#ifndef NDEBUG
+    virtual bool isAnimatableAttribute(const QualifiedName&amp;) const;
+#endif
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     SVGScriptElement(const QualifiedName&amp;, Document&amp;, bool wasInsertedByParser, bool alreadyStarted);
</span><span class="lines">@@ -83,7 +84,6 @@
</span><span class="cx">         DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired)
</span><span class="cx">     END_DECLARE_ANIMATED_PROPERTIES
</span><span class="cx"> 
</span><del>-    String m_type;
</del><span class="cx">     Timer&lt;SVGElement&gt; m_svgLoadEventTimer;
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoresvgSVGScriptElementidl"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/svg/SVGScriptElement.idl (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/svg/SVGScriptElement.idl        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/svg/SVGScriptElement.idl        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -26,7 +26,7 @@
</span><span class="cx"> [
</span><span class="cx">     Conditional=SVG
</span><span class="cx"> ] interface SVGScriptElement : SVGElement {
</span><del>-    [TreatNullAs=NullString] attribute DOMString type;
</del><ins>+    [TreatNullAs=NullString, Reflect] attribute DOMString type;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> SVGScriptElement implements SVGExternalResourcesRequired;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoresvggraphicsSVGImageh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/svg/graphics/SVGImage.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/svg/graphics/SVGImage.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/svg/graphics/SVGImage.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -82,8 +82,7 @@
</span><span class="cx"> 
</span><span class="cx">     virtual bool dataChanged(bool allDataReceived) OVERRIDE;
</span><span class="cx"> 
</span><del>-    // FIXME: SVGImages are underreporting decoded sizes and will be unable
-    // to prune because these functions are not implemented yet.
</del><ins>+    // FIXME: SVGImages will be unable to prune because this function is not implemented yet.
</ins><span class="cx">     virtual void destroyDecodedData(bool) OVERRIDE { }
</span><span class="cx"> 
</span><span class="cx">     // FIXME: Implement this to be less conservative.
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoretestingInternalscpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/testing/Internals.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/testing/Internals.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/testing/Internals.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -63,7 +63,6 @@
</span><span class="cx"> #include &quot;InspectorFrontendClientLocal.h&quot;
</span><span class="cx"> #include &quot;InspectorInstrumentation.h&quot;
</span><span class="cx"> #include &quot;InspectorOverlay.h&quot;
</span><del>-#include &quot;InspectorValues.h&quot;
</del><span class="cx"> #include &quot;InstrumentingAgents.h&quot;
</span><span class="cx"> #include &quot;InternalSettings.h&quot;
</span><span class="cx"> #include &quot;IntRect.h&quot;
</span><span class="lines">@@ -96,6 +95,7 @@
</span><span class="cx"> #include &quot;ViewportArguments.h&quot;
</span><span class="cx"> #include &quot;WorkerThread.h&quot;
</span><span class="cx"> #include &lt;bytecode/CodeBlock.h&gt;
</span><ins>+#include &lt;inspector/InspectorValues.h&gt;
</ins><span class="cx"> #include &lt;runtime/JSCJSValue.h&gt;
</span><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><span class="cx"> #include &lt;wtf/text/StringBuffer.h&gt;
</span><span class="lines">@@ -167,6 +167,8 @@
</span><span class="cx"> using JSC::ScriptExecutable;
</span><span class="cx"> using JSC::StackVisitor;
</span><span class="cx"> 
</span><ins>+using namespace Inspector;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> using namespace HTMLNames;
</span><span class="lines">@@ -1282,7 +1284,7 @@
</span><span class="cx">     CodeBlock* m_codeBlock;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-String Internals::parserMetaData(ScriptValue value)
</del><ins>+String Internals::parserMetaData(Deprecated::ScriptValue value)
</ins><span class="cx"> {
</span><span class="cx">     JSC::VM* vm = contextDocument()-&gt;vm();
</span><span class="cx">     JSC::ExecState* exec = vm-&gt;topCallFrame;
</span><span class="lines">@@ -2260,6 +2262,9 @@
</span><span class="cx"> #if ENABLE(MEDIA_SOURCE)
</span><span class="cx"> void Internals::initializeMockMediaSource()
</span><span class="cx"> {
</span><ins>+#if USE(AVFOUNDATION)
+    WebCore::Settings::setAVFoundationEnabled(false);
+#endif
</ins><span class="cx">     MediaPlayerFactorySupport::callRegisterMediaEngine(MockMediaPlayerMediaSource::registerMediaEngine);
</span><span class="cx"> }
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoretestingInternalsh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/testing/Internals.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/testing/Internals.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/testing/Internals.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -31,7 +31,7 @@
</span><span class="cx"> #include &quot;ContextDestructionObserver.h&quot;
</span><span class="cx"> #include &quot;ExceptionCodePlaceholder.h&quot;
</span><span class="cx"> #include &quot;NodeList.h&quot;
</span><del>-#include &quot;ScriptValue.h&quot;
</del><ins>+#include &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> #include &lt;runtime/ArrayBuffer.h&gt;
</span><span class="cx"> #include &lt;runtime/Float32Array.h&gt;
</span><span class="cx"> #include &lt;wtf/PassRefPtr.h&gt;
</span><span class="lines">@@ -181,7 +181,7 @@
</span><span class="cx">     void emitInspectorDidBeginFrame();
</span><span class="cx">     void emitInspectorDidCancelFrame();
</span><span class="cx"> 
</span><del>-    String parserMetaData(ScriptValue = ScriptValue());
</del><ins>+    String parserMetaData(Deprecated::ScriptValue = Deprecated::ScriptValue());
</ins><span class="cx"> 
</span><span class="cx">     bool hasSpellingMarker(int from, int length, ExceptionCode&amp;);
</span><span class="cx">     bool hasGrammarMarker(int from, int length, ExceptionCode&amp;);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreworkersSharedWorkerGlobalScopecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/workers/SharedWorkerGlobalScope.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/workers/SharedWorkerGlobalScope.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/workers/SharedWorkerGlobalScope.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -47,7 +47,7 @@
</span><span class="cx"> PassRefPtr&lt;MessageEvent&gt; createConnectEvent(PassRefPtr&lt;MessagePort&gt; prpPort)
</span><span class="cx"> {
</span><span class="cx">     RefPtr&lt;MessagePort&gt; port = prpPort;
</span><del>-    RefPtr&lt;MessageEvent&gt; event = MessageEvent::create(adoptPtr(new MessagePortArray(1, port)), ScriptValue(), String(), String(), port);
</del><ins>+    RefPtr&lt;MessageEvent&gt; event = MessageEvent::create(adoptPtr(new MessagePortArray(1, port)), Deprecated::ScriptValue(), String(), String(), port);
</ins><span class="cx">     event-&gt;initEvent(eventNames().connectEvent, false, false);
</span><span class="cx">     return event.release();
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreworkersWorkerGlobalScopecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/workers/WorkerGlobalScope.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/workers/WorkerGlobalScope.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/workers/WorkerGlobalScope.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -37,6 +37,7 @@
</span><span class="cx"> #include &quot;ErrorEvent.h&quot;
</span><span class="cx"> #include &quot;Event.h&quot;
</span><span class="cx"> #include &quot;EventException.h&quot;
</span><ins>+#include &quot;ExceptionCode.h&quot;
</ins><span class="cx"> #include &quot;InspectorConsoleInstrumentation.h&quot;
</span><span class="cx"> #include &quot;URL.h&quot;
</span><span class="cx"> #include &quot;MessagePort.h&quot;
</span><span class="lines">@@ -44,7 +45,6 @@
</span><span class="cx"> #include &quot;ScheduledAction.h&quot;
</span><span class="cx"> #include &quot;ScriptCallStack.h&quot;
</span><span class="cx"> #include &quot;ScriptSourceCode.h&quot;
</span><del>-#include &quot;ScriptValue.h&quot;
</del><span class="cx"> #include &quot;SecurityOrigin.h&quot;
</span><span class="cx"> #include &quot;WorkerInspectorController.h&quot;
</span><span class="cx"> #include &quot;WorkerLocation.h&quot;
</span><span class="lines">@@ -54,14 +54,13 @@
</span><span class="cx"> #include &quot;WorkerThread.h&quot;
</span><span class="cx"> #include &quot;WorkerThreadableLoader.h&quot;
</span><span class="cx"> #include &quot;XMLHttpRequestException.h&quot;
</span><ins>+#include &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> #include &lt;wtf/RefPtr.h&gt;
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS)
</span><span class="cx"> #include &quot;NotificationCenter.h&quot;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-#include &quot;ExceptionCode.h&quot;
-
</del><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class CloseWorkerGlobalScopeTask : public ScriptExecutionContext::Task {
</span><span class="lines">@@ -241,7 +240,7 @@
</span><span class="cx"> 
</span><span class="cx">         InspectorInstrumentation::scriptImported(scriptExecutionContext(), scriptLoader-&gt;identifier(), scriptLoader-&gt;script());
</span><span class="cx"> 
</span><del>-        ScriptValue exception;
</del><ins>+        Deprecated::ScriptValue exception;
</ins><span class="cx">         m_script-&gt;evaluate(ScriptSourceCode(scriptLoader-&gt;script(), scriptLoader-&gt;responseURL()), &amp;exception);
</span><span class="cx">         if (!exception.hasNoValue()) {
</span><span class="cx">             m_script-&gt;setException(exception);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCoreworkersWorkerThreadcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/workers/WorkerThread.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/workers/WorkerThread.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/workers/WorkerThread.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -31,7 +31,6 @@
</span><span class="cx"> #include &quot;DedicatedWorkerGlobalScope.h&quot;
</span><span class="cx"> #include &quot;InspectorInstrumentation.h&quot;
</span><span class="cx"> #include &quot;ScriptSourceCode.h&quot;
</span><del>-#include &quot;ScriptValue.h&quot;
</del><span class="cx"> #include &quot;SecurityOrigin.h&quot;
</span><span class="cx"> #include &quot;ThreadGlobalData.h&quot;
</span><span class="cx"> #include &quot;URL.h&quot;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorexmlXMLTreeViewercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/xml/XMLTreeViewer.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/xml/XMLTreeViewer.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/xml/XMLTreeViewer.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -38,10 +38,10 @@
</span><span class="cx"> #include &quot;Frame.h&quot;
</span><span class="cx"> #include &quot;ScriptController.h&quot;
</span><span class="cx"> #include &quot;ScriptSourceCode.h&quot;
</span><del>-#include &quot;ScriptValue.h&quot;
</del><span class="cx"> #include &quot;Text.h&quot;
</span><span class="cx"> #include &quot;XMLViewerCSS.h&quot;
</span><span class="cx"> #include &quot;XMLViewerJS.h&quot;
</span><ins>+#include &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorexmlparserXMLDocumentParsercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/xml/parser/XMLDocumentParser.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/xml/parser/XMLDocumentParser.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/xml/parser/XMLDocumentParser.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -46,7 +46,6 @@
</span><span class="cx"> #include &quot;ResourceResponse.h&quot;
</span><span class="cx"> #include &quot;ScriptElement.h&quot;
</span><span class="cx"> #include &quot;ScriptSourceCode.h&quot;
</span><del>-#include &quot;ScriptValue.h&quot;
</del><span class="cx"> #include &quot;TextResourceDecoder.h&quot;
</span><span class="cx"> #include &quot;TreeDepthLimit.h&quot;
</span><span class="cx"> #include &quot;XMLErrors.h&quot;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorexmlparserXMLDocumentParserh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/xml/parser/XMLDocumentParser.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/xml/parser/XMLDocumentParser.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/xml/parser/XMLDocumentParser.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -105,8 +105,6 @@
</span><span class="cx">         virtual bool isWaitingForScripts() const;
</span><span class="cx">         virtual void stopParsing();
</span><span class="cx">         virtual void detach();
</span><del>-        virtual OrdinalNumber lineNumber() const;
-        OrdinalNumber columnNumber() const;
</del><span class="cx"> 
</span><span class="cx">         // from CachedResourceClient
</span><span class="cx">         virtual void notifyFinished(CachedResource*);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebCorexmlparserXMLDocumentParserLibxml2cpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -52,7 +52,6 @@
</span><span class="cx"> #include &quot;ResourceResponse.h&quot;
</span><span class="cx"> #include &quot;ScriptElement.h&quot;
</span><span class="cx"> #include &quot;ScriptSourceCode.h&quot;
</span><del>-#include &quot;ScriptValue.h&quot;
</del><span class="cx"> #include &quot;SecurityOrigin.h&quot;
</span><span class="cx"> #include &quot;Settings.h&quot;
</span><span class="cx"> #include &quot;TextResourceDecoder.h&quot;
</span><span class="lines">@@ -972,8 +971,9 @@
</span><span class="cx">     vsnprintf(m, sizeof(m) - 1, message, args);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+    TextPosition position = textPosition();
</ins><span class="cx">     if (m_parserPaused)
</span><del>-        m_pendingCallbacks-&gt;appendErrorCallback(type, reinterpret_cast&lt;const xmlChar*&gt;(m), lineNumber(), columnNumber());
</del><ins>+        m_pendingCallbacks-&gt;appendErrorCallback(type, reinterpret_cast&lt;const xmlChar*&gt;(m), position.m_line, position.m_column);
</ins><span class="cx">     else
</span><span class="cx">         handleError(type, m, textPosition());
</span><span class="cx"> 
</span><span class="lines">@@ -1426,16 +1426,6 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-OrdinalNumber XMLDocumentParser::lineNumber() const
-{
-    return OrdinalNumber::fromOneBasedInt(context() ? context()-&gt;input-&gt;line : 1);
-}
-
-OrdinalNumber XMLDocumentParser::columnNumber() const
-{
-    return OrdinalNumber::fromOneBasedInt(context() ? context()-&gt;input-&gt;col : 1);
-}
-
</del><span class="cx"> TextPosition XMLDocumentParser::textPosition() const
</span><span class="cx"> {
</span><span class="cx">     xmlParserCtxtPtr context = this-&gt;context();
</span></span></pre></div>
<a id="branchesjsCStackSourceWebInspectorUIChangeLog"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebInspectorUI/ChangeLog (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebInspectorUI/ChangeLog        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebInspectorUI/ChangeLog        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,3 +1,182 @@
</span><ins>+2014-01-23  Mark Hahnenberg  &lt;mhahnenberg@apple.com&gt;
+
+        Merge branch up to ToT r160556.
+
+        * Configurations/Version.xcconfig:
+        * Tools/PrettyPrinting/codemirror.css:
+        (.cm-s-default .cm-meta):
+        (.cm-s-default .cm-error):
+        * Tools/PrettyPrinting/codemirror.js:
+        (window.CodeMirror):
+        (window.CodeMirror.):
+        * Tools/PrettyPrinting/css.js:
+        (.):
+        * Tools/PrettyPrinting/javascript.js:
+        (.):
+        (maybeoperatorNoComma):
+        (quasi):
+        (continueQuasi):
+        (arrowBody):
+        (arrowBodyNoComma):
+        (objprop):
+        (getterSetter):
+        (afterprop):
+        (maybetype):
+        (typedef):
+        (vardef):
+        (pattern):
+        (proppattern):
+        (maybeAssign):
+        (vardefCont):
+        (forspec):
+        (forspec1):
+        (formaybeinof):
+        (forspec2):
+        (functiondef):
+        (funarg):
+        (className):
+        (classNameAfter):
+        (objlit):
+        (afterModule):
+        (afterExport):
+        (afterImport):
+        (importSpec):
+        (maybeFrom):
+        (maybeArrayComprehension):
+        (comprehension):
+        (return.startState):
+        (return.token):
+        (return.indent):
+        * UserInterface/CSSStyleDeclarationTextEditor.js:
+        (WebInspector.CSSStyleDeclarationTextEditor.prototype.):
+        (WebInspector.CSSStyleDeclarationTextEditor.prototype._createColorSwatches):
+        * UserInterface/CodeMirrorAdditions.js:
+        * UserInterface/CodeMirrorColorEditingController.js: Added.
+        (WebInspector.CodeMirrorColorEditingController):
+        (WebInspector.CodeMirrorColorEditingController.prototype.get marker):
+        (WebInspector.CodeMirrorColorEditingController.prototype.get range):
+        (WebInspector.CodeMirrorColorEditingController.prototype.get color):
+        (WebInspector.CodeMirrorColorEditingController.prototype.set color):
+        (WebInspector.CodeMirrorColorEditingController.prototype.get delegate):
+        (WebInspector.CodeMirrorColorEditingController.prototype.set delegate):
+        (WebInspector.CodeMirrorColorEditingController.prototype.get text):
+        (WebInspector.CodeMirrorColorEditingController.prototype.set text):
+        (WebInspector.CodeMirrorColorEditingController.prototype.presentHoverMenu):
+        (WebInspector.CodeMirrorColorEditingController.prototype.dismissHoverMenu):
+        (WebInspector.CodeMirrorColorEditingController.prototype.handleEvent):
+        (WebInspector.CodeMirrorColorEditingController.prototype.hoverMenuButtonWasPressed):
+        (WebInspector.CodeMirrorColorEditingController.prototype.didDismissPopover):
+        (WebInspector.CodeMirrorColorEditingController.prototype._colorPickerColorChanged):
+        * UserInterface/CodeMirrorTokenTrackingController.js:
+        (WebInspector.CodeMirrorTokenTrackingController):
+        (WebInspector.CodeMirrorTokenTrackingController.prototype.set mode):
+        (WebInspector.CodeMirrorTokenTrackingController.prototype.get hoveredMarker):
+        (WebInspector.CodeMirrorTokenTrackingController.prototype.set hoveredMarker):
+        (WebInspector.CodeMirrorTokenTrackingController.prototype._updateHoveredTokenInfo):
+        (WebInspector.CodeMirrorTokenTrackingController.prototype._processNewHoveredToken):
+        (WebInspector.CodeMirrorTokenTrackingController.prototype._processMarkedToken):
+        * UserInterface/Color.js:
+        (WebInspector.Color):
+        * UserInterface/External/CodeMirror/codemirror.css:
+        (.cm-s-default .cm-meta):
+        (.cm-s-default .cm-error):
+        * UserInterface/External/CodeMirror/codemirror.js:
+        (window.CodeMirror):
+        (window.CodeMirror.):
+        * UserInterface/External/CodeMirror/coffeescript.js:
+        * UserInterface/External/CodeMirror/css.js:
+        (.):
+        * UserInterface/External/CodeMirror/htmlmixed.js:
+        * UserInterface/External/CodeMirror/javascript.js:
+        (.):
+        (maybeoperatorNoComma):
+        (quasi):
+        (continueQuasi):
+        (arrowBody):
+        (arrowBodyNoComma):
+        (objprop):
+        (getterSetter):
+        (afterprop):
+        (maybetype):
+        (typedef):
+        (vardef):
+        (pattern):
+        (proppattern):
+        (maybeAssign):
+        (vardefCont):
+        (forspec):
+        (forspec1):
+        (formaybeinof):
+        (forspec2):
+        (functiondef):
+        (funarg):
+        (className):
+        (classNameAfter):
+        (objlit):
+        (afterModule):
+        (afterExport):
+        (afterImport):
+        (importSpec):
+        (maybeFrom):
+        (maybeArrayComprehension):
+        (comprehension):
+        (return.startState):
+        (return.token):
+        (return.indent):
+        * UserInterface/External/CodeMirror/less.js:
+        (.else.):
+        * UserInterface/External/CodeMirror/matchbrackets.js:
+        * UserInterface/External/CodeMirror/placeholder.js:
+        * UserInterface/External/CodeMirror/runmode.js:
+        (CodeMirror.runMode):
+        * UserInterface/External/CodeMirror/searchcursor.js:
+        (.):
+        * UserInterface/External/CodeMirror/sql.js:
+        * UserInterface/External/CodeMirror/xml.js:
+        * UserInterface/HoverMenu.js:
+        (WebInspector.HoverMenu.prototype._handleClickEvent):
+        * UserInterface/Main.html:
+        * UserInterface/SourceCodeTextEditor.css:
+        (.hover-menu.color):
+        (.hover-menu.color &gt; img):
+        * UserInterface/SourceCodeTextEditor.js:
+        (WebInspector.SourceCodeTextEditor):
+        (WebInspector.SourceCodeTextEditor.prototype.close):
+        (WebInspector.SourceCodeTextEditor.prototype.contentDidChange):
+        (WebInspector.SourceCodeTextEditor.prototype._contentDidPopulate):
+        (WebInspector.SourceCodeTextEditor.prototype._debuggerDidPause):
+        (WebInspector.SourceCodeTextEditor.prototype._debuggerDidResume):
+        (WebInspector.SourceCodeTextEditor.prototype._sourceCodeSourceMapAdded):
+        (WebInspector.SourceCodeTextEditor.prototype._updateTokenTrackingControllerState):
+        (WebInspector.SourceCodeTextEditor.prototype._hasColorMarkers):
+        (WebInspector.SourceCodeTextEditor.prototype.tokenTrackingControllerHighlightedRangeWasClicked):
+        (WebInspector.SourceCodeTextEditor.prototype.tokenTrackingControllerNewHighlightCandidate):
+        (WebInspector.SourceCodeTextEditor.prototype.tokenTrackingControllerMouseOutOfHoveredMarker):
+        (WebInspector.SourceCodeTextEditor.prototype._showPopover):
+        (WebInspector.SourceCodeTextEditor.prototype._popoverMouseout):
+        (WebInspector.SourceCodeTextEditor.prototype._updateColorMarkers):
+        (WebInspector.SourceCodeTextEditor.prototype._tokenTrackingControllerHighlightedMarkedExpression):
+        (WebInspector.SourceCodeTextEditor.prototype._dismissCodeMirrorColorEditingController):
+        (WebInspector.SourceCodeTextEditor.prototype.colorEditingControllerDidStartEditing):
+        (WebInspector.SourceCodeTextEditor.prototype.colorEditingControllerDidFinishEditing):
+        * UserInterface/TextEditor.js:
+        (WebInspector.TextEditor.prototype.contentDidChange):
+        (WebInspector.TextEditor.prototype.boundsForRange):
+        (WebInspector.TextEditor.prototype.get markers):
+        (WebInspector.TextEditor.prototype.markersAtPosition):
+        (WebInspector.TextEditor.prototype.createColorMarkers):
+        (WebInspector.TextEditor.prototype.colorEditingControllerForMarker):
+        (WebInspector.TextEditor.prototype._contentChanged):
+        * UserInterface/TextMarker.js: Added.
+        (WebInspector.TextMarker):
+        (WebInspector.TextMarker.textMarkerForCodeMirrorTextMarker):
+        (WebInspector.TextMarker.prototype.get codeMirrorTextMarker):
+        (WebInspector.TextMarker.prototype.get type):
+        (WebInspector.TextMarker.prototype.get range):
+        (WebInspector.TextMarker.prototype.get bounds):
+        (WebInspector.TextMarker.prototype.clear):
+        * WebInspectorUI.vcxproj/WebInspectorUI.vcxproj:
+
</ins><span class="cx"> 2013-12-05  Seokju Kwon  &lt;seokju@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Web Inspector: Remove 'cookiesString' output from Page.getCookies
</span></span></pre></div>
<a id="branchesjsCStackSourceWebInspectorUIConfigurationsVersionxcconfig"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebInspectorUI/Configurations/Version.xcconfig (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebInspectorUI/Configurations/Version.xcconfig        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebInspectorUI/Configurations/Version.xcconfig        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> MAJOR_VERSION = 538;
</span><del>-MINOR_VERSION = 9;
</del><ins>+MINOR_VERSION = 10;
</ins><span class="cx"> TINY_VERSION = 0;
</span><span class="cx"> FULL_VERSION = $(MAJOR_VERSION).$(MINOR_VERSION);
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebInspectorUIToolsPrettyPrintingcodemirrorcss"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebInspectorUI/Tools/PrettyPrinting/codemirror.css (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebInspectorUI/Tools/PrettyPrinting/codemirror.css        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebInspectorUI/Tools/PrettyPrinting/codemirror.css        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -74,7 +74,6 @@
</span><span class="cx"> .cm-s-default .cm-string {color: #a11;}
</span><span class="cx"> .cm-s-default .cm-string-2 {color: #f50;}
</span><span class="cx"> .cm-s-default .cm-meta {color: #555;}
</span><del>-.cm-s-default .cm-error {color: #f00;}
</del><span class="cx"> .cm-s-default .cm-qualifier {color: #555;}
</span><span class="cx"> .cm-s-default .cm-builtin {color: #30a;}
</span><span class="cx"> .cm-s-default .cm-bracket {color: #997;}
</span><span class="lines">@@ -91,6 +90,7 @@
</span><span class="cx"> .cm-em {font-style: italic;}
</span><span class="cx"> .cm-link {text-decoration: underline;}
</span><span class="cx"> 
</span><ins>+.cm-s-default .cm-error {color: #f00;}
</ins><span class="cx"> .cm-invalidchar {color: #f00;}
</span><span class="cx"> 
</span><span class="cx"> div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;}
</span></span></pre></div>
<a id="branchesjsCStackSourceWebInspectorUIToolsPrettyPrintingcodemirrorjs"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebInspectorUI/Tools/PrettyPrinting/codemirror.js (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebInspectorUI/Tools/PrettyPrinting/codemirror.js        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebInspectorUI/Tools/PrettyPrinting/codemirror.js        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -7,9 +7,13 @@
</span><span class="cx">   // Crude, but necessary to handle a number of hard-to-feature-detect
</span><span class="cx">   // bugs and behavior differences.
</span><span class="cx">   var gecko = /gecko\/\d/i.test(navigator.userAgent);
</span><ins>+  // IE11 currently doesn't count as 'ie', since it has almost none of
+  // the same bugs as earlier versions. Use ie_gt10 to handle
+  // incompatibilities in that version.
</ins><span class="cx">   var ie = /MSIE \d/.test(navigator.userAgent);
</span><span class="cx">   var ie_lt8 = ie &amp;&amp; (document.documentMode == null || document.documentMode &lt; 8);
</span><span class="cx">   var ie_lt9 = ie &amp;&amp; (document.documentMode == null || document.documentMode &lt; 9);
</span><ins>+  var ie_gt10 = /Trident\/([7-9]|\d{2,})\./.test(navigator.userAgent);
</ins><span class="cx">   var webkit = /WebKit\//.test(navigator.userAgent);
</span><span class="cx">   var qtwebkit = webkit &amp;&amp; /Qt\/\d+\.\d+/.test(navigator.userAgent);
</span><span class="cx">   var chrome = /Chrome\//.test(navigator.userAgent);
</span><span class="lines">@@ -309,7 +313,7 @@
</span><span class="cx">       options.gutters = options.gutters.concat([&quot;CodeMirror-linenumbers&quot;]);
</span><span class="cx">     } else if (found &gt; -1 &amp;&amp; !options.lineNumbers) {
</span><span class="cx">       options.gutters = options.gutters.slice(0);
</span><del>-      options.gutters.splice(i, 1);
</del><ins>+      options.gutters.splice(found, 1);
</ins><span class="cx">     }
</span><span class="cx">   }
</span><span class="cx"> 
</span><span class="lines">@@ -353,8 +357,10 @@
</span><span class="cx">       d.gutterFiller.style.width = d.gutters.offsetWidth + &quot;px&quot;;
</span><span class="cx">     } else d.gutterFiller.style.display = &quot;&quot;;
</span><span class="cx"> 
</span><del>-    if (mac_geLion &amp;&amp; scrollbarWidth(d.measure) === 0)
</del><ins>+    if (mac_geLion &amp;&amp; scrollbarWidth(d.measure) === 0) {
</ins><span class="cx">       d.scrollbarV.style.minWidth = d.scrollbarH.style.minHeight = mac_geMountainLion ? &quot;18px&quot; : &quot;12px&quot;;
</span><ins>+      d.scrollbarV.style.pointerEvents = d.scrollbarH.style.pointerEvents = &quot;none&quot;;
+    }
</ins><span class="cx">   }
</span><span class="cx"> 
</span><span class="cx">   function visibleLines(display, doc, viewPort) {
</span><span class="lines">@@ -409,14 +415,14 @@
</span><span class="cx">   function updateDisplay(cm, changes, viewPort, forced) {
</span><span class="cx">     var oldFrom = cm.display.showingFrom, oldTo = cm.display.showingTo, updated;
</span><span class="cx">     var visible = visibleLines(cm.display, cm.doc, viewPort);
</span><del>-    for (;;) {
</del><ins>+    for (var first = true;; first = false) {
</ins><span class="cx">       var oldWidth = cm.display.scroller.clientWidth;
</span><span class="cx">       if (!updateDisplayInner(cm, changes, visible, forced)) break;
</span><span class="cx">       updated = true;
</span><span class="cx">       changes = [];
</span><span class="cx">       updateSelection(cm);
</span><span class="cx">       updateScrollbars(cm);
</span><del>-      if (cm.options.lineWrapping &amp;&amp; oldWidth != cm.display.scroller.clientWidth) {
</del><ins>+      if (first &amp;&amp; cm.options.lineWrapping &amp;&amp; oldWidth != cm.display.scroller.clientWidth) {
</ins><span class="cx">         forced = true;
</span><span class="cx">         continue;
</span><span class="cx">       }
</span><span class="lines">@@ -904,7 +910,7 @@
</span><span class="cx">     doc.iter(doc.frontier, Math.min(doc.first + doc.size, cm.display.showingTo + 500), function(line) {
</span><span class="cx">       if (doc.frontier &gt;= cm.display.showingFrom) { // Visible
</span><span class="cx">         var oldStyles = line.styles;
</span><del>-        line.styles = highlightLine(cm, line, state);
</del><ins>+        line.styles = highlightLine(cm, line, state, true);
</ins><span class="cx">         var ischange = !oldStyles || oldStyles.length != line.styles.length;
</span><span class="cx">         for (var i = 0; !ischange &amp;&amp; i &lt; oldStyles.length; ++i) ischange = oldStyles[i] != line.styles[i];
</span><span class="cx">         if (ischange) {
</span><span class="lines">@@ -913,7 +919,7 @@
</span><span class="cx">         }
</span><span class="cx">         line.stateAfter = copyState(doc.mode, state);
</span><span class="cx">       } else {
</span><del>-        processLine(cm, line, state);
</del><ins>+        processLine(cm, line.text, state);
</ins><span class="cx">         line.stateAfter = doc.frontier % 5 == 0 ? copyState(doc.mode, state) : null;
</span><span class="cx">       }
</span><span class="cx">       ++doc.frontier;
</span><span class="lines">@@ -935,8 +941,9 @@
</span><span class="cx">   // smallest indentation, which tends to need the least context to
</span><span class="cx">   // parse correctly.
</span><span class="cx">   function findStartLine(cm, n, precise) {
</span><del>-    var minindent, minline, doc = cm.doc, maxScan = cm.doc.mode.innerMode ? 1000 : 100;
-    for (var search = n, lim = n - maxScan; search &gt; lim; --search) {
</del><ins>+    var minindent, minline, doc = cm.doc;
+    var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);
+    for (var search = n; search &gt; lim; --search) {
</ins><span class="cx">       if (search &lt;= doc.first) return doc.first;
</span><span class="cx">       var line = getLine(doc, search - 1);
</span><span class="cx">       if (line.stateAfter &amp;&amp; (!precise || search &lt;= doc.frontier)) return search;
</span><span class="lines">@@ -956,11 +963,12 @@
</span><span class="cx">     if (!state) state = startState(doc.mode);
</span><span class="cx">     else state = copyState(doc.mode, state);
</span><span class="cx">     doc.iter(pos, n, function(line) {
</span><del>-      processLine(cm, line, state);
</del><ins>+      processLine(cm, line.text, state);
</ins><span class="cx">       var save = pos == n - 1 || pos % 5 == 0 || pos &gt;= display.showingFrom &amp;&amp; pos &lt; display.showingTo;
</span><span class="cx">       line.stateAfter = save ? copyState(doc.mode, state) : null;
</span><span class="cx">       ++pos;
</span><span class="cx">     });
</span><ins>+    if (precise) doc.frontier = pos;
</ins><span class="cx">     return state;
</span><span class="cx">   }
</span><span class="cx"> 
</span><span class="lines">@@ -1001,7 +1009,7 @@
</span><span class="cx">       var memo = cache[i];
</span><span class="cx">       if (memo.text == line.text &amp;&amp; memo.markedSpans == line.markedSpans &amp;&amp;
</span><span class="cx">           cm.display.scroller.clientWidth == memo.width &amp;&amp;
</span><del>-          memo.classes == line.textClass + &quot;|&quot; + line.bgClass + &quot;|&quot; + line.wrapClass)
</del><ins>+          memo.classes == line.textClass + &quot;|&quot; + line.wrapClass)
</ins><span class="cx">         return memo;
</span><span class="cx">     }
</span><span class="cx">   }
</span><span class="lines">@@ -1021,7 +1029,7 @@
</span><span class="cx">     var cache = cm.display.measureLineCache;
</span><span class="cx">     var memo = {text: line.text, width: cm.display.scroller.clientWidth,
</span><span class="cx">                 markedSpans: line.markedSpans, measure: measure,
</span><del>-                classes: line.textClass + &quot;|&quot; + line.bgClass + &quot;|&quot; + line.wrapClass};
</del><ins>+                classes: line.textClass + &quot;|&quot; + line.wrapClass};
</ins><span class="cx">     if (cache.length == 16) cache[++cm.display.measureLineCachePos % 16] = memo;
</span><span class="cx">     else cache.push(memo);
</span><span class="cx">     return measure;
</span><span class="lines">@@ -1379,11 +1387,14 @@
</span><span class="cx">     }
</span><span class="cx">     if (!updated &amp;&amp; op.selectionChanged) updateSelection(cm);
</span><span class="cx">     if (op.updateScrollPos) {
</span><del>-      display.scroller.scrollTop = display.scrollbarV.scrollTop = doc.scrollTop = newScrollPos.scrollTop;
-      display.scroller.scrollLeft = display.scrollbarH.scrollLeft = doc.scrollLeft = newScrollPos.scrollLeft;
</del><ins>+      var top = Math.max(0, Math.min(display.scroller.scrollHeight - display.scroller.clientHeight, newScrollPos.scrollTop));
+      var left = Math.max(0, Math.min(display.scroller.scrollWidth - display.scroller.clientWidth, newScrollPos.scrollLeft));
+      display.scroller.scrollTop = display.scrollbarV.scrollTop = doc.scrollTop = top;
+      display.scroller.scrollLeft = display.scrollbarH.scrollLeft = doc.scrollLeft = left;
</ins><span class="cx">       alignHorizontally(cm);
</span><span class="cx">       if (op.scrollToPos)
</span><del>-        scrollPosIntoView(cm, clipPos(cm.doc, op.scrollToPos), op.scrollToPosMargin);
</del><ins>+        scrollPosIntoView(cm, clipPos(cm.doc, op.scrollToPos.from),
+                          clipPos(cm.doc, op.scrollToPos.to), op.scrollToPos.margin);
</ins><span class="cx">     } else if (newScrollPos) {
</span><span class="cx">       scrollCursorIntoView(cm);
</span><span class="cx">     }
</span><span class="lines">@@ -1605,7 +1616,10 @@
</span><span class="cx">       if (signalDOMEvent(cm, e) || cm.options.onKeyEvent &amp;&amp; cm.options.onKeyEvent(cm, addStop(e))) return;
</span><span class="cx">       if (e.keyCode == 16) cm.doc.sel.shift = false;
</span><span class="cx">     }));
</span><del>-    on(d.input, &quot;input&quot;, bind(fastPoll, cm));
</del><ins>+    on(d.input, &quot;input&quot;, function() {
+      if (ie &amp;&amp; !ie_lt9 &amp;&amp; cm.display.inputHasSelection) cm.display.inputHasSelection = null;
+      fastPoll(cm);
+    });
</ins><span class="cx">     on(d.input, &quot;keydown&quot;, operation(cm, onKeyDown));
</span><span class="cx">     on(d.input, &quot;keypress&quot;, operation(cm, onKeyPress));
</span><span class="cx">     on(d.input, &quot;focus&quot;, bind(onFocus, cm));
</span><span class="lines">@@ -1895,7 +1909,6 @@
</span><span class="cx">           if (cm.state.draggingText) replaceRange(cm.doc, &quot;&quot;, curFrom, curTo, &quot;paste&quot;);
</span><span class="cx">           cm.replaceSelection(text, null, &quot;paste&quot;);
</span><span class="cx">           focusInput(cm);
</span><del>-          onFocus(cm);
</del><span class="cx">         }
</span><span class="cx">       }
</span><span class="cx">       catch(e){}
</span><span class="lines">@@ -2176,7 +2189,11 @@
</span><span class="cx"> 
</span><span class="cx">     var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop;
</span><span class="cx">     if (!pos || opera) return; // Opera is difficult.
</span><del>-    if (posEq(sel.from, sel.to) || posLess(pos, sel.from) || !posLess(pos, sel.to))
</del><ins>+
+    // Reset the current text selection only if the click is done outside of the selection
+    // and 'resetSelectionOnContextMenu' option is true.
+    var reset = cm.options.resetSelectionOnContextMenu;
+    if (reset &amp;&amp; (posEq(sel.from, sel.to) || posLess(pos, sel.from) || !posLess(pos, sel.to)))
</ins><span class="cx">       operation(cm, setSelection)(cm.doc, pos, pos);
</span><span class="cx"> 
</span><span class="cx">     var oldCSS = display.input.style.cssText;
</span><span class="lines">@@ -2326,6 +2343,7 @@
</span><span class="cx">   }
</span><span class="cx"> 
</span><span class="cx">   function makeChangeNoReadonly(doc, change, selUpdate) {
</span><ins>+    if (change.text.length == 1 &amp;&amp; change.text[0] == &quot;&quot; &amp;&amp; posEq(change.from, change.to)) return;
</ins><span class="cx">     var selAfter = computeSelAfterChange(doc, change, selUpdate);
</span><span class="cx">     addToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);
</span><span class="cx"> 
</span><span class="lines">@@ -2626,7 +2644,7 @@
</span><span class="cx">   // SCROLLING
</span><span class="cx"> 
</span><span class="cx">   function scrollCursorIntoView(cm) {
</span><del>-    var coords = scrollPosIntoView(cm, cm.doc.sel.head, cm.options.cursorScrollMargin);
</del><ins>+    var coords = scrollPosIntoView(cm, cm.doc.sel.head, null, cm.options.cursorScrollMargin);
</ins><span class="cx">     if (!cm.state.focused) return;
</span><span class="cx">     var display = cm.display, box = getRect(display.sizer), doScroll = null;
</span><span class="cx">     if (coords.top + box.top &lt; 0) doScroll = true;
</span><span class="lines">@@ -2643,11 +2661,15 @@
</span><span class="cx">     }
</span><span class="cx">   }
</span><span class="cx"> 
</span><del>-  function scrollPosIntoView(cm, pos, margin) {
</del><ins>+  function scrollPosIntoView(cm, pos, end, margin) {
</ins><span class="cx">     if (margin == null) margin = 0;
</span><span class="cx">     for (;;) {
</span><span class="cx">       var changed = false, coords = cursorCoords(cm, pos);
</span><del>-      var scrollPos = calculateScrollPos(cm, coords.left, coords.top - margin, coords.left, coords.bottom + margin);
</del><ins>+      var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);
+      var scrollPos = calculateScrollPos(cm, Math.min(coords.left, endCoords.left),
+                                         Math.min(coords.top, endCoords.top) - margin,
+                                         Math.max(coords.left, endCoords.left),
+                                         Math.max(coords.bottom, endCoords.bottom) + margin);
</ins><span class="cx">       var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft;
</span><span class="cx">       if (scrollPos.scrollTop != null) {
</span><span class="cx">         setScrollTop(cm, scrollPos.scrollTop);
</span><span class="lines">@@ -2744,6 +2766,8 @@
</span><span class="cx"> 
</span><span class="cx">     if (indentString != curSpaceString)
</span><span class="cx">       replaceRange(cm.doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), &quot;+input&quot;);
</span><ins>+    else if (doc.sel.head.line == n &amp;&amp; doc.sel.head.ch &lt; curSpaceString.length)
+      setSelection(doc, Pos(n, curSpaceString.length), Pos(n, curSpaceString.length), 1);
</ins><span class="cx">     line.stateAfter = null;
</span><span class="cx">   }
</span><span class="cx"> 
</span><span class="lines">@@ -2844,7 +2868,7 @@
</span><span class="cx"> 
</span><span class="cx">   CodeMirror.prototype = {
</span><span class="cx">     constructor: CodeMirror,
</span><del>-    focus: function(){window.focus(); focusInput(this); onFocus(this); fastPoll(this);},
</del><ins>+    focus: function(){window.focus(); focusInput(this); fastPoll(this);},
</ins><span class="cx"> 
</span><span class="cx">     setOption: function(option, value) {
</span><span class="cx">       var options = this.options, old = options[option];
</span><span class="lines">@@ -3165,17 +3189,23 @@
</span><span class="cx">               clientHeight: scroller.clientHeight - co, clientWidth: scroller.clientWidth - co};
</span><span class="cx">     },
</span><span class="cx"> 
</span><del>-    scrollIntoView: operation(null, function(pos, margin) {
-      if (typeof pos == &quot;number&quot;) pos = Pos(pos, 0);
</del><ins>+    scrollIntoView: operation(null, function(range, margin) {
+      if (range == null) range = {from: this.doc.sel.head, to: null};
+      else if (typeof range == &quot;number&quot;) range = {from: Pos(range, 0), to: null};
+      else if (range.from == null) range = {from: range, to: null};
+      if (!range.to) range.to = range.from;
</ins><span class="cx">       if (!margin) margin = 0;
</span><del>-      var coords = pos;
</del><span class="cx"> 
</span><del>-      if (!pos || pos.line != null) {
-        this.curOp.scrollToPos = pos ? clipPos(this.doc, pos) : this.doc.sel.head;
-        this.curOp.scrollToPosMargin = margin;
-        coords = cursorCoords(this, this.curOp.scrollToPos);
</del><ins>+      var coords = range;
+      if (range.from.line != null) {
+        this.curOp.scrollToPos = {from: range.from, to: range.to, margin: margin};
+        coords = {from: cursorCoords(this, range.from),
+                  to: cursorCoords(this, range.to)};
</ins><span class="cx">       }
</span><del>-      var sPos = calculateScrollPos(this, coords.left, coords.top - margin, coords.right, coords.bottom + margin);
</del><ins>+      var sPos = calculateScrollPos(this, Math.min(coords.from.left, coords.to.left),
+                                    Math.min(coords.from.top, coords.to.top) - margin,
+                                    Math.max(coords.from.right, coords.to.right),
+                                    Math.max(coords.from.bottom, coords.to.bottom) + margin);
</ins><span class="cx">       updateScrollPos(this, sPos.scrollLeft, sPos.scrollTop);
</span><span class="cx">     }),
</span><span class="cx"> 
</span><span class="lines">@@ -3207,6 +3237,7 @@
</span><span class="cx">       clearCaches(this);
</span><span class="cx">       resetInput(this, true);
</span><span class="cx">       updateScrollPos(this, doc.scrollLeft, doc.scrollTop);
</span><ins>+      signalLater(this, &quot;swapDoc&quot;, this, old);
</ins><span class="cx">       return old;
</span><span class="cx">     }),
</span><span class="cx"> 
</span><span class="lines">@@ -3250,8 +3281,14 @@
</span><span class="cx">     clearCaches(cm);
</span><span class="cx">     regChange(cm);
</span><span class="cx">   }, true);
</span><ins>+  option(&quot;specialChars&quot;, /[\t\u0000-\u0019\u00ad\u200b\u2028\u2029\ufeff]/g, function(cm, val) {
+    cm.options.specialChars = new RegExp(val.source + (val.test(&quot;\t&quot;) ? &quot;&quot; : &quot;|\t&quot;), &quot;g&quot;);
+    cm.refresh();
+  }, true);
+  option(&quot;specialCharPlaceholder&quot;, defaultSpecialCharPlaceholder, function(cm) {cm.refresh();}, true);
</ins><span class="cx">   option(&quot;electricChars&quot;, true);
</span><span class="cx">   option(&quot;rtlMoveVisually&quot;, !windows);
</span><ins>+  option(&quot;wholeLineUpdateBefore&quot;, true);
</ins><span class="cx"> 
</span><span class="cx">   option(&quot;theme&quot;, &quot;default&quot;, function(cm) {
</span><span class="cx">     themeChanged(cm);
</span><span class="lines">@@ -3281,9 +3318,17 @@
</span><span class="cx">   option(&quot;lineNumberFormatter&quot;, function(integer) {return integer;}, guttersChanged, true);
</span><span class="cx">   option(&quot;showCursorWhenSelecting&quot;, false, updateSelection, true);
</span><span class="cx"> 
</span><ins>+  option(&quot;resetSelectionOnContextMenu&quot;, true);
+
</ins><span class="cx">   option(&quot;readOnly&quot;, false, function(cm, val) {
</span><del>-    if (val == &quot;nocursor&quot;) {onBlur(cm); cm.display.input.blur();}
-    else if (!val) resetInput(cm, true);
</del><ins>+    if (val == &quot;nocursor&quot;) {
+      onBlur(cm);
+      cm.display.input.blur();
+      cm.display.disabled = true;
+    } else {
+      cm.display.disabled = false;
+      if (!val) resetInput(cm, true);
+    }
</ins><span class="cx">   });
</span><span class="cx">   option(&quot;dragDrop&quot;, true);
</span><span class="cx"> 
</span><span class="lines">@@ -3517,7 +3562,8 @@
</span><span class="cx">   keyMap.basic = {
</span><span class="cx">     &quot;Left&quot;: &quot;goCharLeft&quot;, &quot;Right&quot;: &quot;goCharRight&quot;, &quot;Up&quot;: &quot;goLineUp&quot;, &quot;Down&quot;: &quot;goLineDown&quot;,
</span><span class="cx">     &quot;End&quot;: &quot;goLineEnd&quot;, &quot;Home&quot;: &quot;goLineStartSmart&quot;, &quot;PageUp&quot;: &quot;goPageUp&quot;, &quot;PageDown&quot;: &quot;goPageDown&quot;,
</span><del>-    &quot;Delete&quot;: &quot;delCharAfter&quot;, &quot;Backspace&quot;: &quot;delCharBefore&quot;, &quot;Tab&quot;: &quot;defaultTab&quot;, &quot;Shift-Tab&quot;: &quot;indentAuto&quot;,
</del><ins>+    &quot;Delete&quot;: &quot;delCharAfter&quot;, &quot;Backspace&quot;: &quot;delCharBefore&quot;, &quot;Shift-Backspace&quot;: &quot;delCharBefore&quot;,
+    &quot;Tab&quot;: &quot;defaultTab&quot;, &quot;Shift-Tab&quot;: &quot;indentAuto&quot;,
</ins><span class="cx">     &quot;Enter&quot;: &quot;newlineAndIndent&quot;, &quot;Insert&quot;: &quot;toggleOverwrite&quot;
</span><span class="cx">   };
</span><span class="cx">   // Note that the save and find-related commands aren't defined by
</span><span class="lines">@@ -3823,7 +3869,9 @@
</span><span class="cx">     if (doc.cm &amp;&amp; !doc.cm.curOp) return operation(doc.cm, markText)(doc, from, to, options, type);
</span><span class="cx"> 
</span><span class="cx">     var marker = new TextMarker(doc, type);
</span><del>-    if (type == &quot;range&quot; &amp;&amp; !posLess(from, to)) return marker;
</del><ins>+    if (posLess(to, from) || posEq(from, to) &amp;&amp; type == &quot;range&quot; &amp;&amp;
+        !(options.inclusiveLeft &amp;&amp; options.inclusiveRight))
+      return marker;
</ins><span class="cx">     if (options) copyObj(options, marker);
</span><span class="cx">     if (marker.replacedWith) {
</span><span class="cx">       marker.collapsed = true;
</span><span class="lines">@@ -3939,7 +3987,9 @@
</span><span class="cx">     if (old) for (var i = 0, nw; i &lt; old.length; ++i) {
</span><span class="cx">       var span = old[i], marker = span.marker;
</span><span class="cx">       var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from &lt;= startCh : span.from &lt; startCh);
</span><del>-      if (startsBefore || marker.type == &quot;bookmark&quot; &amp;&amp; span.from == startCh &amp;&amp; (!isInsert || !span.marker.insertLeft)) {
</del><ins>+      if (startsBefore ||
+          (marker.inclusiveLeft &amp;&amp; marker.inclusiveRight || marker.type == &quot;bookmark&quot;) &amp;&amp;
+          span.from == startCh &amp;&amp; (!isInsert || !span.marker.insertLeft)) {
</ins><span class="cx">         var endsAfter = span.to == null || (marker.inclusiveRight ? span.to &gt;= startCh : span.to &gt; startCh);
</span><span class="cx">         (nw || (nw = [])).push({from: span.from,
</span><span class="cx">                                 to: endsAfter ? null : span.to,
</span><span class="lines">@@ -4212,6 +4262,7 @@
</span><span class="cx">     this.height = estimateHeight ? estimateHeight(this) : 1;
</span><span class="cx">   };
</span><span class="cx">   eventMixin(Line);
</span><ins>+  Line.prototype.lineNo = function() { return lineNo(this); };
</ins><span class="cx"> 
</span><span class="cx">   function updateLine(line, text, markedSpans, estimateHeight) {
</span><span class="cx">     line.text = text;
</span><span class="lines">@@ -4232,7 +4283,7 @@
</span><span class="cx">   // Run the given mode's parser over a line, update the styles
</span><span class="cx">   // array, which contains alternating fragments of text and CSS
</span><span class="cx">   // classes.
</span><del>-  function runMode(cm, text, mode, state, f) {
</del><ins>+  function runMode(cm, text, mode, state, f, forceToEnd) {
</ins><span class="cx">     var flattenSpans = mode.flattenSpans;
</span><span class="cx">     if (flattenSpans == null) flattenSpans = cm.options.flattenSpans;
</span><span class="cx">     var curStart = 0, curStyle = null;
</span><span class="lines">@@ -4241,6 +4292,7 @@
</span><span class="cx">     while (!stream.eol()) {
</span><span class="cx">       if (stream.pos &gt; cm.options.maxHighlightLength) {
</span><span class="cx">         flattenSpans = false;
</span><ins>+        if (forceToEnd) processLine(cm, text, state, stream.pos);
</ins><span class="cx">         stream.pos = text.length;
</span><span class="cx">         style = null;
</span><span class="cx">       } else {
</span><span class="lines">@@ -4260,12 +4312,14 @@
</span><span class="cx">     }
</span><span class="cx">   }
</span><span class="cx"> 
</span><del>-  function highlightLine(cm, line, state) {
</del><ins>+  function highlightLine(cm, line, state, forceToEnd) {
</ins><span class="cx">     // A styles array always starts with a number identifying the
</span><span class="cx">     // mode/overlays that it is based on (for easy invalidation).
</span><span class="cx">     var st = [cm.state.modeGen];
</span><span class="cx">     // Compute the base array of styles
</span><del>-    runMode(cm, line.text, cm.doc.mode, state, function(end, style) {st.push(end, style);});
</del><ins>+    runMode(cm, line.text, cm.doc.mode, state, function(end, style) {
+      st.push(end, style);
+    }, forceToEnd);
</ins><span class="cx"> 
</span><span class="cx">     // Run overlays, adjust style array.
</span><span class="cx">     for (var o = 0; o &lt; cm.state.overlays.length; ++o) {
</span><span class="lines">@@ -4304,10 +4358,11 @@
</span><span class="cx"> 
</span><span class="cx">   // Lightweight form of highlight -- proceed over this line and
</span><span class="cx">   // update state, but don't save a style array.
</span><del>-  function processLine(cm, line, state) {
</del><ins>+  function processLine(cm, text, state, startAt) {
</ins><span class="cx">     var mode = cm.doc.mode;
</span><del>-    var stream = new StringStream(line.text, cm.options.tabSize);
-    if (line.text == &quot;&quot; &amp;&amp; mode.blankLine) mode.blankLine(state);
</del><ins>+    var stream = new StringStream(text, cm.options.tabSize);
+    stream.start = stream.pos = startAt || 0;
+    if (text == &quot;&quot; &amp;&amp; mode.blankLine) mode.blankLine(state);
</ins><span class="cx">     while (!stream.eol() &amp;&amp; stream.pos &lt;= cm.options.maxHighlightLength) {
</span><span class="cx">       mode.token(stream, state);
</span><span class="cx">       stream.start = stream.pos;
</span><span class="lines">@@ -4364,7 +4419,7 @@
</span><span class="cx">     // Work around problem with the reported dimensions of single-char
</span><span class="cx">     // direction spans on IE (issue #1129). See also the comment in
</span><span class="cx">     // cursorCoords.
</span><del>-    if (measure &amp;&amp; ie &amp;&amp; (order = getOrder(line))) {
</del><ins>+    if (measure &amp;&amp; (ie || ie_gt10) &amp;&amp; (order = getOrder(line))) {
</ins><span class="cx">       var l = order.length - 1;
</span><span class="cx">       if (order[l].from == order[l].to) --l;
</span><span class="cx">       var last = order[l], prev = order[l - 1];
</span><span class="lines">@@ -4382,17 +4437,23 @@
</span><span class="cx">     return builder;
</span><span class="cx">   }
</span><span class="cx"> 
</span><del>-  var tokenSpecialChars = /[\t\u0000-\u0019\u00ad\u200b\u2028\u2029\uFEFF]/g;
</del><ins>+  function defaultSpecialCharPlaceholder(ch) {
+    var token = elt(&quot;span&quot;, &quot;\u2022&quot;, &quot;cm-invalidchar&quot;);
+    token.title = &quot;\\u&quot; + ch.charCodeAt(0).toString(16);
+    return token;
+  }
+
</ins><span class="cx">   function buildToken(builder, text, style, startStyle, endStyle, title) {
</span><span class="cx">     if (!text) return;
</span><del>-    if (!tokenSpecialChars.test(text)) {
</del><ins>+    var special = builder.cm.options.specialChars;
+    if (!special.test(text)) {
</ins><span class="cx">       builder.col += text.length;
</span><span class="cx">       var content = document.createTextNode(text);
</span><span class="cx">     } else {
</span><span class="cx">       var content = document.createDocumentFragment(), pos = 0;
</span><span class="cx">       while (true) {
</span><del>-        tokenSpecialChars.lastIndex = pos;
-        var m = tokenSpecialChars.exec(text);
</del><ins>+        special.lastIndex = pos;
+        var m = special.exec(text);
</ins><span class="cx">         var skipped = m ? m.index - pos : text.length - pos;
</span><span class="cx">         if (skipped) {
</span><span class="cx">           content.appendChild(document.createTextNode(text.slice(pos, pos + skipped)));
</span><span class="lines">@@ -4405,8 +4466,7 @@
</span><span class="cx">           content.appendChild(elt(&quot;span&quot;, spaceStr(tabWidth), &quot;cm-tab&quot;));
</span><span class="cx">           builder.col += tabWidth;
</span><span class="cx">         } else {
</span><del>-          var token = elt(&quot;span&quot;, &quot;\u2022&quot;, &quot;cm-invalidchar&quot;);
-          token.title = &quot;\\u&quot; + m[0].charCodeAt(0).toString(16);
</del><ins>+          var token = builder.cm.options.specialCharPlaceholder(m[0]);
</ins><span class="cx">           content.appendChild(token);
</span><span class="cx">           builder.col += 1;
</span><span class="cx">         }
</span><span class="lines">@@ -4457,7 +4517,7 @@
</span><span class="cx">       return out;
</span><span class="cx">     }
</span><span class="cx">     return function(builder, text, style, startStyle, endStyle, title) {
</span><del>-      return inner(builder, text.replace(/ {3,}/, split), style, startStyle, endStyle, title);
</del><ins>+      return inner(builder, text.replace(/ {3,}/g, split), style, startStyle, endStyle, title);
</ins><span class="cx">     };
</span><span class="cx">   }
</span><span class="cx"> 
</span><span class="lines">@@ -4559,7 +4619,8 @@
</span><span class="cx">     var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line;
</span><span class="cx"> 
</span><span class="cx">     // First adjust the line structure
</span><del>-    if (from.ch == 0 &amp;&amp; to.ch == 0 &amp;&amp; lastText == &quot;&quot;) {
</del><ins>+    if (from.ch == 0 &amp;&amp; to.ch == 0 &amp;&amp; lastText == &quot;&quot; &amp;&amp;
+        (!doc.cm || doc.cm.options.wholeLineUpdateBefore)) {
</ins><span class="cx">       // This is a whole-line replace. Treated specially to make
</span><span class="cx">       // sure line objects move the way they are supposed to.
</span><span class="cx">       for (var i = 0, e = text.length - 1, added = []; i &lt; e; ++i)
</span><span class="lines">@@ -5446,7 +5507,7 @@
</span><span class="cx">     return true;
</span><span class="cx">   }
</span><span class="cx"> 
</span><del>-  var isExtendingChar = /[\u0300-\u036F\u0483-\u0487\u0488-\u0489\u0591-\u05BD\u05BF\u05C1-\u05C2\u05C4-\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\uA66F\uA670-\uA672\uA674-\uA67D\uA69F\udc00-\udfff]/;
</del><ins>+  var isExtendingChar = /[\u0300-\u036F\u0483-\u0487\u0488-\u0489\u0591-\u05BD\u05BF\u05C1-\u05C2\u05C4-\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\uA66F\u1DC0–\u1DFF\u20D0–\u20FF\uA670-\uA672\uA674-\uA67D\uA69F\udc00-\udfff\uFE20–\uFE2F]/;
</ins><span class="cx"> 
</span><span class="cx">   // DOM UTILITIES
</span><span class="cx"> 
</span><span class="lines">@@ -5520,7 +5581,7 @@
</span><span class="cx">         if (/\w/.test(str.charAt(i - 2)) &amp;&amp; /[^\-?\.]/.test(str.charAt(i))) return true;
</span><span class="cx">         if (i &gt; 2 &amp;&amp; /[\d\.,]/.test(str.charAt(i - 2)) &amp;&amp; /[\d\.,]/.test(str.charAt(i))) return false;
</span><span class="cx">       }
</span><del>-      var result = /[~!#%&amp;*)=+}\]|\&quot;\.&gt;,:;][({[&lt;]|-[^\-?\.\u2010-\u201f\u2026]|\?[\w~`@#$%\^&amp;*(_=+{[|&gt;&lt;]|…[\w~`@#$%\^&amp;*(_=+{[&gt;&lt;]/.test(str.slice(i - 1, i + 1));
</del><ins>+      var result = /[~!#%&amp;*)=+}\]\\|\&quot;\.&gt;,:;][({[&lt;]|-[^\-?\.\u2010-\u201f\u2026]|\?[\w~`@#$%\^&amp;*(_=+{[|&gt;&lt;]|…[\w~`@#$%\^&amp;*(_=+{[&gt;&lt;]/.test(str.slice(i - 1, i + 1));
</ins><span class="cx">       return result;
</span><span class="cx">     };
</span><span class="cx"> 
</span><span class="lines">@@ -5877,7 +5938,7 @@
</span><span class="cx"> 
</span><span class="cx">   // THE END
</span><span class="cx"> 
</span><del>-  CodeMirror.version = &quot;3.16.1&quot;;
</del><ins>+  CodeMirror.version = &quot;3.20.0&quot;;
</ins><span class="cx"> 
</span><span class="cx">   return CodeMirror;
</span><span class="cx"> })();
</span></span></pre></div>
<a id="branchesjsCStackSourceWebInspectorUIToolsPrettyPrintingcssjs"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebInspectorUI/Tools/PrettyPrinting/css.js (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebInspectorUI/Tools/PrettyPrinting/css.js        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebInspectorUI/Tools/PrettyPrinting/css.js        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -3,7 +3,7 @@
</span><span class="cx"> 
</span><span class="cx">   if (!parserConfig.propertyKeywords) parserConfig = CodeMirror.resolveMode(&quot;text/css&quot;);
</span><span class="cx"> 
</span><del>-  var indentUnit = config.indentUnit,
</del><ins>+  var indentUnit = config.indentUnit || config.tabSize || 2,
</ins><span class="cx">       hooks = parserConfig.hooks || {},
</span><span class="cx">       atMediaTypes = parserConfig.atMediaTypes || {},
</span><span class="cx">       atMediaFeatures = parserConfig.atMediaFeatures || {},
</span><span class="lines">@@ -37,7 +37,7 @@
</span><span class="cx">       stream.match(/^\s*\w*/);
</span><span class="cx">       return ret(&quot;keyword&quot;, &quot;important&quot;);
</span><span class="cx">     }
</span><del>-    else if (/\d/.test(ch)) {
</del><ins>+    else if (/\d/.test(ch) || ch == &quot;.&quot; &amp;&amp; stream.eat(/\d/)) {
</ins><span class="cx">       stream.eatWhile(/[\w.%]/);
</span><span class="cx">       return ret(&quot;number&quot;, &quot;unit&quot;);
</span><span class="cx">     }
</span><span class="lines">@@ -259,8 +259,13 @@
</span><span class="cx">       }
</span><span class="cx">       else if (type == &quot;}&quot;) {
</span><span class="cx">         if (context == &quot;interpolation&quot;) style = &quot;operator&quot;;
</span><del>-        state.stack.pop();
-        if (context == &quot;propertyValue&quot;) state.stack.pop();
</del><ins>+        // Pop off end of array until { is reached
+        while(state.stack.length){
+          var removed = state.stack.pop();
+          if(removed.indexOf(&quot;{&quot;) &gt; -1 || removed == &quot;block&quot; || removed == &quot;rule&quot;){
+            break;
+          }
+        }
</ins><span class="cx">       }
</span><span class="cx">       else if (type == &quot;interpolation&quot;) state.stack.push(&quot;interpolation&quot;);
</span><span class="cx">       else if (type == &quot;@media&quot;) state.stack.push(&quot;@media&quot;);
</span><span class="lines">@@ -278,11 +283,13 @@
</span><span class="cx">         else state.stack.push(&quot;(&quot;);
</span><span class="cx">       }
</span><span class="cx">       else if (type == &quot;)&quot;) {
</span><del>-        if (context == &quot;propertyValue&quot;) {
-          // In @mediaType( without closing ; after propertyValue
-          state.stack.pop();
</del><ins>+        // Pop off end of array until ( is reached
+        while(state.stack.length){
+          var removed = state.stack.pop();
+          if(removed.indexOf(&quot;(&quot;) &gt; -1){
+            break;
+          }
</ins><span class="cx">         }
</span><del>-        state.stack.pop();
</del><span class="cx">       }
</span><span class="cx">       else if (type == &quot;:&quot; &amp;&amp; state.lastToken == &quot;property&quot;) state.stack.push(&quot;propertyValue&quot;);
</span><span class="cx">       else if (context == &quot;propertyValue&quot; &amp;&amp; type == &quot;;&quot;) state.stack.pop();
</span><span class="lines">@@ -602,6 +609,11 @@
</span><span class="cx">         }
</span><span class="cx">         return [&quot;variable&quot;, &quot;variable&quot;];
</span><span class="cx">       },
</span><ins>+      &quot;,&quot;: function(stream, state) {
+        if (state.stack[state.stack.length - 1] == &quot;propertyValue&quot; &amp;&amp; stream.match(/^ *\$/, false)) {
+          return [&quot;operator&quot;, &quot;;&quot;];
+        }
+      },
</ins><span class="cx">       &quot;/&quot;: function(stream, state) {
</span><span class="cx">         if (stream.eat(&quot;/&quot;)) {
</span><span class="cx">           stream.skipToEnd();
</span></span></pre></div>
<a id="branchesjsCStackSourceWebInspectorUIToolsPrettyPrintingjavascriptjs"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebInspectorUI/Tools/PrettyPrinting/javascript.js (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebInspectorUI/Tools/PrettyPrinting/javascript.js        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebInspectorUI/Tools/PrettyPrinting/javascript.js        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -21,7 +21,8 @@
</span><span class="cx">       &quot;for&quot;: kw(&quot;for&quot;), &quot;switch&quot;: kw(&quot;switch&quot;), &quot;case&quot;: kw(&quot;case&quot;), &quot;default&quot;: kw(&quot;default&quot;),
</span><span class="cx">       &quot;in&quot;: operator, &quot;typeof&quot;: operator, &quot;instanceof&quot;: operator,
</span><span class="cx">       &quot;true&quot;: atom, &quot;false&quot;: atom, &quot;null&quot;: atom, &quot;undefined&quot;: atom, &quot;NaN&quot;: atom, &quot;Infinity&quot;: atom,
</span><del>-      &quot;this&quot;: kw(&quot;this&quot;)
</del><ins>+      &quot;this&quot;: kw(&quot;this&quot;), &quot;module&quot;: kw(&quot;module&quot;), &quot;class&quot;: kw(&quot;class&quot;), &quot;super&quot;: kw(&quot;atom&quot;),
+      &quot;yield&quot;: C, &quot;export&quot;: kw(&quot;export&quot;), &quot;import&quot;: kw(&quot;import&quot;), &quot;extends&quot;: C
</ins><span class="cx">     };
</span><span class="cx"> 
</span><span class="cx">     // Extend the 'normal' keywords with the TypeScript language extensions
</span><span class="lines">@@ -30,7 +31,6 @@
</span><span class="cx">       var tsKeywords = {
</span><span class="cx">         // object-like things
</span><span class="cx">         &quot;interface&quot;: kw(&quot;interface&quot;),
</span><del>-        &quot;class&quot;: kw(&quot;class&quot;),
</del><span class="cx">         &quot;extends&quot;: kw(&quot;extends&quot;),
</span><span class="cx">         &quot;constructor&quot;: kw(&quot;constructor&quot;),
</span><span class="cx"> 
</span><span class="lines">@@ -40,8 +40,6 @@
</span><span class="cx">         &quot;protected&quot;: kw(&quot;protected&quot;),
</span><span class="cx">         &quot;static&quot;: kw(&quot;static&quot;),
</span><span class="cx"> 
</span><del>-        &quot;super&quot;: kw(&quot;super&quot;),
-
</del><span class="cx">         // types
</span><span class="cx">         &quot;string&quot;: type, &quot;number&quot;: type, &quot;bool&quot;: type, &quot;any&quot;: type
</span><span class="cx">       };
</span><span class="lines">@@ -56,11 +54,6 @@
</span><span class="cx"> 
</span><span class="cx">   var isOperatorChar = /[+\-*&amp;%=&lt;&gt;!?|~^]/;
</span><span class="cx"> 
</span><del>-  function chain(stream, state, f) {
-    state.tokenize = f;
-    return f(stream, state);
-  }
-
</del><span class="cx">   function nextUntilUnescaped(stream, end) {
</span><span class="cx">     var escaped = false, next;
</span><span class="cx">     while ((next = stream.next()) != null) {
</span><span class="lines">@@ -78,50 +71,51 @@
</span><span class="cx">     type = tp; content = cont;
</span><span class="cx">     return style;
</span><span class="cx">   }
</span><del>-  function jsTokenBase(stream, state) {
</del><ins>+  function tokenBase(stream, state) {
</ins><span class="cx">     var ch = stream.next();
</span><del>-    if (ch == '&quot;' || ch == &quot;'&quot;)
-      return chain(stream, state, jsTokenString(ch));
-    else if (ch == &quot;.&quot; &amp;&amp; stream.match(/^\d+(?:[eE][+\-]?\d+)?/))
</del><ins>+    if (ch == '&quot;' || ch == &quot;'&quot;) {
+      state.tokenize = tokenString(ch);
+      return state.tokenize(stream, state);
+    } else if (ch == &quot;.&quot; &amp;&amp; stream.match(/^\d+(?:[eE][+\-]?\d+)?/)) {
</ins><span class="cx">       return ret(&quot;number&quot;, &quot;number&quot;);
</span><del>-    else if (/[\[\]{}\(\),;\:\.]/.test(ch))
</del><ins>+    } else if (ch == &quot;.&quot; &amp;&amp; stream.match(&quot;..&quot;)) {
+      return ret(&quot;spread&quot;, &quot;meta&quot;);
+    } else if (/[\[\]{}\(\),;\:\.]/.test(ch)) {
</ins><span class="cx">       return ret(ch);
</span><del>-    else if (ch == &quot;0&quot; &amp;&amp; stream.eat(/x/i)) {
</del><ins>+    } else if (ch == &quot;=&quot; &amp;&amp; stream.eat(&quot;&gt;&quot;)) {
+      return ret(&quot;=&gt;&quot;);
+    } else if (ch == &quot;0&quot; &amp;&amp; stream.eat(/x/i)) {
</ins><span class="cx">       stream.eatWhile(/[\da-f]/i);
</span><span class="cx">       return ret(&quot;number&quot;, &quot;number&quot;);
</span><del>-    }
-    else if (/\d/.test(ch)) {
</del><ins>+    } else if (/\d/.test(ch)) {
</ins><span class="cx">       stream.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/);
</span><span class="cx">       return ret(&quot;number&quot;, &quot;number&quot;);
</span><del>-    }
-    else if (ch == &quot;/&quot;) {
</del><ins>+    } else if (ch == &quot;/&quot;) {
</ins><span class="cx">       if (stream.eat(&quot;*&quot;)) {
</span><del>-        return chain(stream, state, jsTokenComment);
-      }
-      else if (stream.eat(&quot;/&quot;)) {
</del><ins>+        state.tokenize = tokenComment;
+        return tokenComment(stream, state);
+      } else if (stream.eat(&quot;/&quot;)) {
</ins><span class="cx">         stream.skipToEnd();
</span><span class="cx">         return ret(&quot;comment&quot;, &quot;comment&quot;);
</span><del>-      }
-      else if (state.lastType == &quot;operator&quot; || state.lastType == &quot;keyword c&quot; ||
-               /^[\[{}\(,;:]$/.test(state.lastType)) {
</del><ins>+      } else if (state.lastType == &quot;operator&quot; || state.lastType == &quot;keyword c&quot; ||
+               state.lastType == &quot;sof&quot; || /^[\[{}\(,;:]$/.test(state.lastType)) {
</ins><span class="cx">         nextUntilUnescaped(stream, &quot;/&quot;);
</span><span class="cx">         stream.eatWhile(/[gimy]/); // 'y' is &quot;sticky&quot; option in Mozilla
</span><span class="cx">         return ret(&quot;regexp&quot;, &quot;string-2&quot;);
</span><del>-      }
-      else {
</del><ins>+      } else {
</ins><span class="cx">         stream.eatWhile(isOperatorChar);
</span><span class="cx">         return ret(&quot;operator&quot;, null, stream.current());
</span><span class="cx">       }
</span><del>-    }
-    else if (ch == &quot;#&quot;) {
</del><ins>+    } else if (ch == &quot;`&quot;) {
+      state.tokenize = tokenQuasi;
+      return tokenQuasi(stream, state);
+    } else if (ch == &quot;#&quot;) {
</ins><span class="cx">       stream.skipToEnd();
</span><span class="cx">       return ret(&quot;error&quot;, &quot;error&quot;);
</span><del>-    }
-    else if (isOperatorChar.test(ch)) {
</del><ins>+    } else if (isOperatorChar.test(ch)) {
</ins><span class="cx">       stream.eatWhile(isOperatorChar);
</span><span class="cx">       return ret(&quot;operator&quot;, null, stream.current());
</span><del>-    }
-    else {
</del><ins>+    } else {
</ins><span class="cx">       stream.eatWhile(/[\w\$_]/);
</span><span class="cx">       var word = stream.current(), known = keywords.propertyIsEnumerable(word) &amp;&amp; keywords[word];
</span><span class="cx">       return (known &amp;&amp; state.lastType != &quot;.&quot;) ? ret(known.type, known.style, word) :
</span><span class="lines">@@ -129,19 +123,19 @@
</span><span class="cx">     }
</span><span class="cx">   }
</span><span class="cx"> 
</span><del>-  function jsTokenString(quote) {
</del><ins>+  function tokenString(quote) {
</ins><span class="cx">     return function(stream, state) {
</span><span class="cx">       if (!nextUntilUnescaped(stream, quote))
</span><del>-        state.tokenize = jsTokenBase;
</del><ins>+        state.tokenize = tokenBase;
</ins><span class="cx">       return ret(&quot;string&quot;, &quot;string&quot;);
</span><span class="cx">     };
</span><span class="cx">   }
</span><span class="cx"> 
</span><del>-  function jsTokenComment(stream, state) {
</del><ins>+  function tokenComment(stream, state) {
</ins><span class="cx">     var maybeEnd = false, ch;
</span><span class="cx">     while (ch = stream.next()) {
</span><span class="cx">       if (ch == &quot;/&quot; &amp;&amp; maybeEnd) {
</span><del>-        state.tokenize = jsTokenBase;
</del><ins>+        state.tokenize = tokenBase;
</ins><span class="cx">         break;
</span><span class="cx">       }
</span><span class="cx">       maybeEnd = (ch == &quot;*&quot;);
</span><span class="lines">@@ -149,6 +143,50 @@
</span><span class="cx">     return ret(&quot;comment&quot;, &quot;comment&quot;);
</span><span class="cx">   }
</span><span class="cx"> 
</span><ins>+  function tokenQuasi(stream, state) {
+    var escaped = false, next;
+    while ((next = stream.next()) != null) {
+      if (!escaped &amp;&amp; (next == &quot;`&quot; || next == &quot;$&quot; &amp;&amp; stream.eat(&quot;{&quot;))) {
+        state.tokenize = tokenBase;
+        break;
+      }
+      escaped = !escaped &amp;&amp; next == &quot;\\&quot;;
+    }
+    return ret(&quot;quasi&quot;, &quot;string-2&quot;, stream.current());
+  }
+
+  var brackets = &quot;([{}])&quot;;
+  // This is a crude lookahead trick to try and notice that we're
+  // parsing the argument patterns for a fat-arrow function before we
+  // actually hit the arrow token. It only works if the arrow is on
+  // the same line as the arguments and there's no strange noise
+  // (comments) in between. Fallback is to only notice when we hit the
+  // arrow, and not declare the arguments as locals for the arrow
+  // body.
+  function findFatArrow(stream, state) {
+    if (state.fatArrowAt) state.fatArrowAt = null;
+    var arrow = stream.string.indexOf(&quot;=&gt;&quot;, stream.start);
+    if (arrow &lt; 0) return;
+
+    var depth = 0, sawSomething = false;
+    for (var pos = arrow - 1; pos &gt;= 0; --pos) {
+      var ch = stream.string.charAt(pos);
+      var bracket = brackets.indexOf(ch);
+      if (bracket &gt;= 0 &amp;&amp; bracket &lt; 3) {
+        if (!depth) { ++pos; break; }
+        if (--depth == 0) break;
+      } else if (bracket &gt;= 3 &amp;&amp; bracket &lt; 6) {
+        ++depth;
+      } else if (/[$\w]/.test(ch)) {
+        sawSomething = true;
+      } else if (sawSomething &amp;&amp; !depth) {
+        ++pos;
+        break;
+      }
+    }
+    if (sawSomething &amp;&amp; !depth) state.fatArrowAt = pos;
+  }
+
</ins><span class="cx">   // Parser
</span><span class="cx"> 
</span><span class="cx">   var atomicTypes = {&quot;atom&quot;: true, &quot;number&quot;: true, &quot;variable&quot;: true, &quot;string&quot;: true, &quot;regexp&quot;: true, &quot;this&quot;: true};
</span><span class="lines">@@ -165,6 +203,10 @@
</span><span class="cx">   function inScope(state, varname) {
</span><span class="cx">     for (var v = state.localVars; v; v = v.next)
</span><span class="cx">       if (v.name == varname) return true;
</span><ins>+    for (var cx = state.context; cx; cx = cx.prev) {
+      for (var v = cx.vars; v; v = v.next)
+        if (v.name == varname) return true;
+    }
</ins><span class="cx">   }
</span><span class="cx"> 
</span><span class="cx">   function parseJS(state, style, type, content, stream) {
</span><span class="lines">@@ -211,7 +253,8 @@
</span><span class="cx">       state.localVars = {name: varname, next: state.localVars};
</span><span class="cx">     } else {
</span><span class="cx">       if (inList(state.globalVars)) return;
</span><del>-      state.globalVars = {name: varname, next: state.globalVars};
</del><ins>+      if (parserConfig.globalVars)
+        state.globalVars = {name: varname, next: state.globalVars};
</ins><span class="cx">     }
</span><span class="cx">   }
</span><span class="cx"> 
</span><span class="lines">@@ -253,16 +296,15 @@
</span><span class="cx">     };
</span><span class="cx">   }
</span><span class="cx"> 
</span><del>-  function statement(type) {
-    if (type == &quot;var&quot;) return cont(pushlex(&quot;vardef&quot;), vardef1, expect(&quot;;&quot;), poplex);
</del><ins>+  function statement(type, value) {
+    if (type == &quot;var&quot;) return cont(pushlex(&quot;vardef&quot;, value.length), vardef, expect(&quot;;&quot;), poplex);
</ins><span class="cx">     if (type == &quot;keyword a&quot;) return cont(pushlex(&quot;form&quot;), expression, statement, poplex);
</span><span class="cx">     if (type == &quot;keyword b&quot;) return cont(pushlex(&quot;form&quot;), statement, poplex);
</span><span class="cx">     if (type == &quot;{&quot;) return cont(pushlex(&quot;}&quot;), block, poplex);
</span><span class="cx">     if (type == &quot;;&quot;) return cont();
</span><span class="cx">     if (type == &quot;if&quot;) return cont(pushlex(&quot;form&quot;), expression, statement, poplex, maybeelse);
</span><span class="cx">     if (type == &quot;function&quot;) return cont(functiondef);
</span><del>-    if (type == &quot;for&quot;) return cont(pushlex(&quot;form&quot;), expect(&quot;(&quot;), pushlex(&quot;)&quot;), forspec1, expect(&quot;)&quot;),
-                                   poplex, statement, poplex);
</del><ins>+    if (type == &quot;for&quot;) return cont(pushlex(&quot;form&quot;), forspec, poplex, statement, poplex);
</ins><span class="cx">     if (type == &quot;variable&quot;) return cont(pushlex(&quot;stat&quot;), maybelabel);
</span><span class="cx">     if (type == &quot;switch&quot;) return cont(pushlex(&quot;form&quot;), expression, pushlex(&quot;}&quot;, &quot;switch&quot;), expect(&quot;{&quot;),
</span><span class="cx">                                       block, poplex, poplex);
</span><span class="lines">@@ -270,6 +312,10 @@
</span><span class="cx">     if (type == &quot;default&quot;) return cont(expect(&quot;:&quot;));
</span><span class="cx">     if (type == &quot;catch&quot;) return cont(pushlex(&quot;form&quot;), pushcontext, expect(&quot;(&quot;), funarg, expect(&quot;)&quot;),
</span><span class="cx">                                      statement, poplex, popcontext);
</span><ins>+    if (type == &quot;module&quot;) return cont(pushlex(&quot;form&quot;), pushcontext, afterModule, popcontext, poplex);
+    if (type == &quot;class&quot;) return cont(pushlex(&quot;form&quot;), className, objlit, poplex);
+    if (type == &quot;export&quot;) return cont(pushlex(&quot;form&quot;), afterExport, poplex);
+    if (type == &quot;import&quot;) return cont(pushlex(&quot;form&quot;), afterImport, poplex);
</ins><span class="cx">     return pass(pushlex(&quot;stat&quot;), expression, expect(&quot;;&quot;), poplex);
</span><span class="cx">   }
</span><span class="cx">   function expression(type) {
</span><span class="lines">@@ -279,14 +325,20 @@
</span><span class="cx">     return expressionInner(type, true);
</span><span class="cx">   }
</span><span class="cx">   function expressionInner(type, noComma) {
</span><ins>+    if (cx.state.fatArrowAt == cx.stream.start) {
+      var body = noComma ? arrowBodyNoComma : arrowBody;
+      if (type == &quot;(&quot;) return cont(pushcontext, commasep(pattern, &quot;)&quot;), expect(&quot;=&gt;&quot;), body, popcontext);
+      else if (type == &quot;variable&quot;) return pass(pushcontext, pattern, expect(&quot;=&gt;&quot;), body, popcontext);
+    }
+
</ins><span class="cx">     var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma;
</span><span class="cx">     if (atomicTypes.hasOwnProperty(type)) return cont(maybeop);
</span><span class="cx">     if (type == &quot;function&quot;) return cont(functiondef);
</span><span class="cx">     if (type == &quot;keyword c&quot;) return cont(noComma ? maybeexpressionNoComma : maybeexpression);
</span><del>-    if (type == &quot;(&quot;) return cont(pushlex(&quot;)&quot;), maybeexpression, expect(&quot;)&quot;), poplex, maybeop);
-    if (type == &quot;operator&quot;) return cont(noComma ? expressionNoComma : expression);
-    if (type == &quot;[&quot;) return cont(pushlex(&quot;]&quot;), commasep(expressionNoComma, &quot;]&quot;), poplex, maybeop);
-    if (type == &quot;{&quot;) return cont(pushlex(&quot;}&quot;), commasep(objprop, &quot;}&quot;), poplex, maybeop);
</del><ins>+    if (type == &quot;(&quot;) return cont(pushlex(&quot;)&quot;), maybeexpression, comprehension, expect(&quot;)&quot;), poplex, maybeop);
+    if (type == &quot;operator&quot; || type == &quot;spread&quot;) return cont(noComma ? expressionNoComma : expression);
+    if (type == &quot;[&quot;) return cont(pushlex(&quot;]&quot;), expressionNoComma, maybeArrayComprehension, poplex, maybeop);
+    if (type == &quot;{&quot;) return cont(commasep(objprop, &quot;}&quot;), maybeop);
</ins><span class="cx">     return cont();
</span><span class="cx">   }
</span><span class="cx">   function maybeexpression(type) {
</span><span class="lines">@@ -305,16 +357,40 @@
</span><span class="cx">   function maybeoperatorNoComma(type, value, noComma) {
</span><span class="cx">     var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma;
</span><span class="cx">     var expr = noComma == false ? expression : expressionNoComma;
</span><ins>+    if (value == &quot;=&gt;&quot;) return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext);
</ins><span class="cx">     if (type == &quot;operator&quot;) {
</span><span class="cx">       if (/\+\+|--/.test(value)) return cont(me);
</span><span class="cx">       if (value == &quot;?&quot;) return cont(expression, expect(&quot;:&quot;), expr);
</span><span class="cx">       return cont(expr);
</span><span class="cx">     }
</span><ins>+    if (type == &quot;quasi&quot;) { cx.cc.push(me); return quasi(value); }
</ins><span class="cx">     if (type == &quot;;&quot;) return;
</span><del>-    if (type == &quot;(&quot;) return cont(pushlex(&quot;)&quot;, &quot;call&quot;), commasep(expressionNoComma, &quot;)&quot;), poplex, me);
</del><ins>+    if (type == &quot;(&quot;) return cont(commasep(expressionNoComma, &quot;)&quot;, &quot;call&quot;), me);
</ins><span class="cx">     if (type == &quot;.&quot;) return cont(property, me);
</span><span class="cx">     if (type == &quot;[&quot;) return cont(pushlex(&quot;]&quot;), maybeexpression, expect(&quot;]&quot;), poplex, me);
</span><span class="cx">   }
</span><ins>+  function quasi(value) {
+    if (!value) debugger;
+    if (value.slice(value.length - 2) != &quot;${&quot;) return cont();
+    return cont(expression, continueQuasi);
+  }
+  function continueQuasi(type) {
+    if (type == &quot;}&quot;) {
+      cx.marked = &quot;string-2&quot;;
+      cx.state.tokenize = tokenQuasi;
+      return cont();
+    }
+  }
+  function arrowBody(type) {
+    findFatArrow(cx.stream, cx.state);
+    if (type == &quot;{&quot;) return pass(statement);
+    return pass(expression);
+  }
+  function arrowBodyNoComma(type) {
+    findFatArrow(cx.stream, cx.state);
+    if (type == &quot;{&quot;) return pass(statement);
+    return pass(expressionNoComma);
+  }
</ins><span class="cx">   function maybelabel(type) {
</span><span class="cx">     if (type == &quot;:&quot;) return cont(poplex, statement);
</span><span class="cx">     return pass(maybeoperatorComma, expect(&quot;;&quot;), poplex);
</span><span class="lines">@@ -328,16 +404,21 @@
</span><span class="cx">       if (value == &quot;get&quot; || value == &quot;set&quot;) return cont(getterSetter);
</span><span class="cx">     } else if (type == &quot;number&quot; || type == &quot;string&quot;) {
</span><span class="cx">       cx.marked = type + &quot; property&quot;;
</span><ins>+    } else if (type == &quot;[&quot;) {
+      return cont(expression, expect(&quot;]&quot;), afterprop);
</ins><span class="cx">     }
</span><del>-    if (atomicTypes.hasOwnProperty(type)) return cont(expect(&quot;:&quot;), expressionNoComma);
</del><ins>+    if (atomicTypes.hasOwnProperty(type)) return cont(afterprop);
</ins><span class="cx">   }
</span><span class="cx">   function getterSetter(type) {
</span><del>-    if (type == &quot;:&quot;) return cont(expression);
-    if (type != &quot;variable&quot;) return cont(expect(&quot;:&quot;), expression);
</del><ins>+    if (type != &quot;variable&quot;) return pass(afterprop);
</ins><span class="cx">     cx.marked = &quot;property&quot;;
</span><span class="cx">     return cont(functiondef);
</span><span class="cx">   }
</span><del>-  function commasep(what, end) {
</del><ins>+  function afterprop(type) {
+    if (type == &quot;:&quot;) return cont(expressionNoComma);
+    if (type == &quot;(&quot;) return pass(functiondef);
+  }
+  function commasep(what, end, info) {
</ins><span class="cx">     function proceed(type) {
</span><span class="cx">       if (type == &quot;,&quot;) {
</span><span class="cx">         var lex = cx.state.lexical;
</span><span class="lines">@@ -349,7 +430,8 @@
</span><span class="cx">     }
</span><span class="cx">     return function(type) {
</span><span class="cx">       if (type == end) return cont();
</span><del>-      else return pass(what, proceed);
</del><ins>+      if (info === false) return pass(what, proceed);
+      return pass(pushlex(end, info), what, proceed, poplex);
</ins><span class="cx">     };
</span><span class="cx">   }
</span><span class="cx">   function block(type) {
</span><span class="lines">@@ -357,67 +439,121 @@
</span><span class="cx">     return pass(statement, block);
</span><span class="cx">   }
</span><span class="cx">   function maybetype(type) {
</span><del>-    if (type == &quot;:&quot;) return cont(typedef);
-    return pass();
</del><ins>+    if (isTS &amp;&amp; type == &quot;:&quot;) return cont(typedef);
</ins><span class="cx">   }
</span><span class="cx">   function typedef(type) {
</span><span class="cx">     if (type == &quot;variable&quot;){cx.marked = &quot;variable-3&quot;; return cont();}
</span><del>-    return pass();
</del><span class="cx">   }
</span><del>-  function vardef1(type, value) {
-    if (type == &quot;variable&quot;) {
</del><ins>+  function vardef() {
+    return pass(pattern, maybetype, maybeAssign, vardefCont);
+  }
+  function pattern(type, value) {
+    if (type == &quot;variable&quot;) { register(value); return cont(); }
+    if (type == &quot;[&quot;) return cont(commasep(pattern, &quot;]&quot;));
+    if (type == &quot;{&quot;) return cont(commasep(proppattern, &quot;}&quot;));
+  }
+  function proppattern(type, value) {
+    if (type == &quot;variable&quot; &amp;&amp; !cx.stream.match(/^\s*:/, false)) {
</ins><span class="cx">       register(value);
</span><del>-      return isTS ? cont(maybetype, vardef2) : cont(vardef2);
</del><ins>+      return cont(maybeAssign);
</ins><span class="cx">     }
</span><del>-    return pass();
</del><ins>+    if (type == &quot;variable&quot;) cx.marked = &quot;property&quot;;
+    return cont(expect(&quot;:&quot;), pattern, maybeAssign);
</ins><span class="cx">   }
</span><del>-  function vardef2(type, value) {
-    if (value == &quot;=&quot;) return cont(expressionNoComma, vardef2);
-    if (type == &quot;,&quot;) return cont(vardef1);
</del><ins>+  function maybeAssign(_type, value) {
+    if (value == &quot;=&quot;) return cont(expressionNoComma);
</ins><span class="cx">   }
</span><ins>+  function vardefCont(type) {
+    if (type == &quot;,&quot;) return cont(vardef);
+  }
</ins><span class="cx">   function maybeelse(type, value) {
</span><span class="cx">     if (type == &quot;keyword b&quot; &amp;&amp; value == &quot;else&quot;) return cont(pushlex(&quot;form&quot;), statement, poplex);
</span><span class="cx">   }
</span><ins>+  function forspec(type) {
+    if (type == &quot;(&quot;) return cont(pushlex(&quot;)&quot;), forspec1, expect(&quot;)&quot;));
+  }
</ins><span class="cx">   function forspec1(type) {
</span><del>-    if (type == &quot;var&quot;) return cont(vardef1, expect(&quot;;&quot;), forspec2);
</del><ins>+    if (type == &quot;var&quot;) return cont(vardef, expect(&quot;;&quot;), forspec2);
</ins><span class="cx">     if (type == &quot;;&quot;) return cont(forspec2);
</span><del>-    if (type == &quot;variable&quot;) return cont(formaybein);
</del><ins>+    if (type == &quot;variable&quot;) return cont(formaybeinof);
</ins><span class="cx">     return pass(expression, expect(&quot;;&quot;), forspec2);
</span><span class="cx">   }
</span><del>-  function formaybein(_type, value) {
-    if (value == &quot;in&quot;) return cont(expression);
</del><ins>+  function formaybeinof(_type, value) {
+    if (value == &quot;in&quot; || value == &quot;of&quot;) { cx.marked = &quot;keyword&quot;; return cont(expression); }
</ins><span class="cx">     return cont(maybeoperatorComma, forspec2);
</span><span class="cx">   }
</span><span class="cx">   function forspec2(type, value) {
</span><span class="cx">     if (type == &quot;;&quot;) return cont(forspec3);
</span><del>-    if (value == &quot;in&quot;) return cont(expression);
</del><ins>+    if (value == &quot;in&quot; || value == &quot;of&quot;) { cx.marked = &quot;keyword&quot;; return cont(expression); }
</ins><span class="cx">     return pass(expression, expect(&quot;;&quot;), forspec3);
</span><span class="cx">   }
</span><span class="cx">   function forspec3(type) {
</span><span class="cx">     if (type != &quot;)&quot;) cont(expression);
</span><span class="cx">   }
</span><span class="cx">   function functiondef(type, value) {
</span><ins>+    if (value == &quot;*&quot;) {cx.marked = &quot;keyword&quot;; return cont(functiondef);}
</ins><span class="cx">     if (type == &quot;variable&quot;) {register(value); return cont(functiondef);}
</span><del>-    if (type == &quot;(&quot;) return cont(pushlex(&quot;)&quot;), pushcontext, commasep(funarg, &quot;)&quot;), poplex, statement, popcontext);
</del><ins>+    if (type == &quot;(&quot;) return cont(pushcontext, commasep(funarg, &quot;)&quot;), statement, popcontext);
</ins><span class="cx">   }
</span><del>-  function funarg(type, value) {
-    if (type == &quot;variable&quot;) {register(value); return isTS ? cont(maybetype) : cont();}
</del><ins>+  function funarg(type) {
+    if (type == &quot;spread&quot;) return cont(funarg);
+    return pass(pattern, maybetype);
</ins><span class="cx">   }
</span><ins>+  function className(type, value) {
+    if (type == &quot;variable&quot;) {register(value); return cont(classNameAfter);}
+  }
+  function classNameAfter(_type, value) {
+    if (value == &quot;extends&quot;) return cont(expression);
+  }
+  function objlit(type) {
+    if (type == &quot;{&quot;) return cont(commasep(objprop, &quot;}&quot;));
+  }
+  function afterModule(type, value) {
+    if (type == &quot;string&quot;) return cont(statement);
+    if (type == &quot;variable&quot;) { register(value); return cont(maybeFrom); }
+  }
+  function afterExport(_type, value) {
+    if (value == &quot;*&quot;) { cx.marked = &quot;keyword&quot;; return cont(maybeFrom, expect(&quot;;&quot;)); }
+    if (value == &quot;default&quot;) { cx.marked = &quot;keyword&quot;; return cont(expression, expect(&quot;;&quot;)); }
+    return pass(statement);
+  }
+  function afterImport(type) {
+    if (type == &quot;string&quot;) return cont();
+    return pass(importSpec, maybeFrom);
+  }
+  function importSpec(type, value) {
+    if (type == &quot;{&quot;) return cont(commasep(importSpec, &quot;}&quot;));
+    if (type == &quot;variable&quot;) register(value);
+    return cont();
+  }
+  function maybeFrom(_type, value) {
+    if (value == &quot;from&quot;) { cx.marked = &quot;keyword&quot;; return cont(expression); }
+  }
+  function maybeArrayComprehension(type) {
+    if (type == &quot;for&quot;) return pass(comprehension);
+    if (type == &quot;,&quot;) return cont(commasep(expressionNoComma, &quot;]&quot;, false));
+    return pass(commasep(expressionNoComma, &quot;]&quot;, false));
+  }
+  function comprehension(type) {
+    if (type == &quot;for&quot;) return cont(forspec, comprehension);
+    if (type == &quot;if&quot;) return cont(expression, comprehension);
+  }
</ins><span class="cx"> 
</span><span class="cx">   // Interface
</span><span class="cx"> 
</span><span class="cx">   return {
</span><span class="cx">     startState: function(basecolumn) {
</span><del>-      return {
-        tokenize: jsTokenBase,
-        lastType: null,
</del><ins>+      var state = {
+        tokenize: tokenBase,
+        lastType: &quot;sof&quot;,
</ins><span class="cx">         cc: [],
</span><span class="cx">         lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, &quot;block&quot;, false),
</span><span class="cx">         localVars: parserConfig.localVars,
</span><del>-        globalVars: parserConfig.globalVars,
</del><span class="cx">         context: parserConfig.localVars &amp;&amp; {vars: parserConfig.localVars},
</span><span class="cx">         indented: 0
</span><span class="cx">       };
</span><ins>+      if (parserConfig.globalVars) state.globalVars = parserConfig.globalVars;
+      return state;
</ins><span class="cx">     },
</span><span class="cx"> 
</span><span class="cx">     token: function(stream, state) {
</span><span class="lines">@@ -425,8 +561,9 @@
</span><span class="cx">         if (!state.lexical.hasOwnProperty(&quot;align&quot;))
</span><span class="cx">           state.lexical.align = false;
</span><span class="cx">         state.indented = stream.indentation();
</span><ins>+        findFatArrow(stream, state);
</ins><span class="cx">       }
</span><del>-      if (state.tokenize != jsTokenComment &amp;&amp; stream.eatSpace()) return null;
</del><ins>+      if (state.tokenize != tokenComment &amp;&amp; stream.eatSpace()) return null;
</ins><span class="cx">       var style = state.tokenize(stream, state);
</span><span class="cx">       if (type == &quot;comment&quot;) return style;
</span><span class="cx">       state.lastType = type == &quot;operator&quot; &amp;&amp; (content == &quot;++&quot; || content == &quot;--&quot;) ? &quot;incdec&quot; : type;
</span><span class="lines">@@ -434,21 +571,21 @@
</span><span class="cx">     },
</span><span class="cx"> 
</span><span class="cx">     indent: function(state, textAfter) {
</span><del>-      if (state.tokenize == jsTokenComment) return CodeMirror.Pass;
-      if (state.tokenize != jsTokenBase) return 0;
</del><ins>+      if (state.tokenize == tokenComment) return CodeMirror.Pass;
+      if (state.tokenize != tokenBase) return 0;
</ins><span class="cx">       var firstChar = textAfter &amp;&amp; textAfter.charAt(0), lexical = state.lexical;
</span><span class="cx">       // Kludge to prevent 'maybelse' from blocking lexical scope pops
</span><span class="cx">       for (var i = state.cc.length - 1; i &gt;= 0; --i) {
</span><span class="cx">         var c = state.cc[i];
</span><span class="cx">         if (c == poplex) lexical = lexical.prev;
</span><del>-        else if (c != maybeelse || /^else\b/.test(textAfter)) break;
</del><ins>+        else if (c != maybeelse) break;
</ins><span class="cx">       }
</span><span class="cx">       if (lexical.type == &quot;stat&quot; &amp;&amp; firstChar == &quot;}&quot;) lexical = lexical.prev;
</span><span class="cx">       if (statementIndent &amp;&amp; lexical.type == &quot;)&quot; &amp;&amp; lexical.prev.type == &quot;stat&quot;)
</span><span class="cx">         lexical = lexical.prev;
</span><span class="cx">       var type = lexical.type, closing = firstChar == type;
</span><span class="cx"> 
</span><del>-      if (type == &quot;vardef&quot;) return lexical.indented + (state.lastType == &quot;operator&quot; || state.lastType == &quot;,&quot; ? 4 : 0);
</del><ins>+      if (type == &quot;vardef&quot;) return lexical.indented + (state.lastType == &quot;operator&quot; || state.lastType == &quot;,&quot; ? lexical.info + 1 : 0);
</ins><span class="cx">       else if (type == &quot;form&quot; &amp;&amp; firstChar == &quot;{&quot;) return lexical.indented;
</span><span class="cx">       else if (type == &quot;form&quot;) return lexical.indented + indentUnit;
</span><span class="cx">       else if (type == &quot;stat&quot;)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebInspectorUIUserInterfaceCSSStyleDeclarationTextEditorjs"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebInspectorUI/UserInterface/CSSStyleDeclarationTextEditor.js (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebInspectorUI/UserInterface/CSSStyleDeclarationTextEditor.js        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebInspectorUI/UserInterface/CSSStyleDeclarationTextEditor.js        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -390,69 +390,22 @@
</span><span class="cx">     {
</span><span class="cx">         function update()
</span><span class="cx">         {
</span><del>-            // Matches rgba(0, 0, 0, 0.5), rgb(0, 0, 0), hsl(), hsla(), #fff, #ffffff, white
-            const colorRegex = /((?:rgb|hsl)a?\([^)]+\)|#[0-9a-fA-F]{6}|#[0-9a-fA-F]{3}|\b\w+\b(?![-.]))/g;
-
-            var start = typeof lineNumber === &quot;number&quot; ? lineNumber : 0;
-            var end = typeof lineNumber === &quot;number&quot; ? lineNumber + 1 : this._codeMirror.lineCount();
-
</del><span class="cx">             // Look for color strings and add swatches in front of them.
</span><del>-            for (var i = start; i &lt; end; ++i) {
-                var lineContent = this._codeMirror.getLine(i);
-
-                var match = colorRegex.exec(lineContent);
-                while (match) {
-
-                    // Act as a negative look-behind and disallow the color from being prefixing with certain characters.
-                    if (match.index &gt; 0 &amp;&amp; /[-.]/.test(lineContent[match.index - 1])) {
-                        match = colorRegex.exec(lineContent);
-                        continue;
-                    }
-
-                    var from = {line: i, ch: match.index};
-                    var to = {line: i, ch: match.index + match[0].length};
-
-                    var foundColorMarker = false;
-                    var marks = this._codeMirror.findMarksAt(to);
-                    for (var j = 0; j &lt; marks.length; ++j) {
-                        if (!marks[j].__markedColor)
-                            continue;
-                        foundColorMarker = true;
-                        break;
-                    }
-
-                    if (foundColorMarker) {
-                        match = colorRegex.exec(lineContent);
-                        continue;
-                    }
-
-
-                    var color = WebInspector.Color.fromString(match[0]);
-                    if (!color) {
-                        match = colorRegex.exec(lineContent);
-                        continue;
-                    }
-
-                    var swatchElement = document.createElement(&quot;span&quot;);
-                    swatchElement.title = WebInspector.UIString(&quot;Click to open a colorpicker. Shift-click to change color format.&quot;);
-                    swatchElement.className = WebInspector.CSSStyleDeclarationTextEditor.ColorSwatchElementStyleClassName;
-                    swatchElement.addEventListener(&quot;click&quot;, this._colorSwatchClicked.bind(this));
-
-                    var swatchInnerElement = document.createElement(&quot;span&quot;);
-                    swatchInnerElement.style.backgroundColor = match[0];
-                    swatchElement.appendChild(swatchInnerElement);
-
-                    var swatchMarker = this._codeMirror.setUniqueBookmark(from, swatchElement);
-
-                    var colorTextMarker = this._codeMirror.markText(from, to);
-                    colorTextMarker.__markedColor = true;
-
-                    swatchInnerElement.__colorTextMarker = colorTextMarker;
-                    swatchInnerElement.__color = color;
-
-                    match = colorRegex.exec(lineContent);
-                }
-            }
</del><ins>+            this._codeMirror.createColorMarkers(lineNumber, function(marker, color, colorString) {
+                var swatchElement = document.createElement(&quot;span&quot;);
+                swatchElement.title = WebInspector.UIString(&quot;Click to open a colorpicker. Shift-click to change color format.&quot;);
+                swatchElement.className = WebInspector.CSSStyleDeclarationTextEditor.ColorSwatchElementStyleClassName;
+                swatchElement.addEventListener(&quot;click&quot;, this._colorSwatchClicked.bind(this));
+                            
+                var swatchInnerElement = document.createElement(&quot;span&quot;);
+                swatchInnerElement.style.backgroundColor = colorString;
+                swatchElement.appendChild(swatchInnerElement);
+                            
+                var swatchMarker = this._codeMirror.setUniqueBookmark(marker.find().from, swatchElement);
+                            
+                swatchInnerElement.__colorTextMarker = marker;
+                swatchInnerElement.__color = color;
+            }.bind(this));
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         if (nonatomic)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebInspectorUIUserInterfaceCodeMirrorAdditionsjs"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebInspectorUI/UserInterface/CodeMirrorAdditions.js (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebInspectorUI/UserInterface/CodeMirrorAdditions.js        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebInspectorUI/UserInterface/CodeMirrorAdditions.js        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -418,6 +418,71 @@
</span><span class="cx">             return CodeMirror.Pass;
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    CodeMirror.defineExtension(&quot;boundsForRange&quot;, function(range) {
+        var firstCharCoords = this.cursorCoords(range.start);
+        var lastCharCoords = this.cursorCoords(range.end);
+        return new WebInspector.Rect(firstCharCoords.left, firstCharCoords.top, lastCharCoords.right - firstCharCoords.left, firstCharCoords.bottom - firstCharCoords.top);
+    });
+
+    CodeMirror.defineExtension(&quot;createColorMarkers&quot;, function(lineNumber, callback) {
+        var createdMarkers = [];
+
+        var start = typeof lineNumber === &quot;number&quot; ? lineNumber : 0;
+        var end = typeof lineNumber === &quot;number&quot; ? lineNumber + 1 : this.lineCount();
+
+        // Matches rgba(0, 0, 0, 0.5), rgb(0, 0, 0), hsl(), hsla(), #fff, #ffffff, white
+        const colorRegex = /((?:rgb|hsl)a?\([^)]+\)|#[0-9a-fA-F]{6}|#[0-9a-fA-F]{3}|\b\w+\b(?![-.]))/g;
+
+        for (var lineNumber = start; lineNumber &lt; end; ++lineNumber) {
+            var lineContent = this.getLine(lineNumber);
+            var match = colorRegex.exec(lineContent);
+            while (match) {
+
+                // Act as a negative look-behind and disallow the color from being prefixing with certain characters.
+                if (match.index &gt; 0 &amp;&amp; /[-.]/.test(lineContent[match.index - 1])) {
+                    match = colorRegex.exec(lineContent);
+                    continue;
+                }
+
+                var from = {line: lineNumber, ch: match.index};
+                var to = {line: lineNumber, ch: match.index + match[0].length};
+
+                var foundColorMarker = false;
+                var markers = this.findMarksAt(to);
+                for (var j = 0; j &lt; markers.length; ++j) {
+                    if (WebInspector.TextMarker.textMarkerForCodeMirrorTextMarker(markers[j]).type === WebInspector.TextMarker.Type.Color) {
+                        foundColorMarker = true;
+                        break;
+                    }
+                }
+
+                if (foundColorMarker) {
+                    match = colorRegex.exec(lineContent);
+                    continue;
+                }
+
+                var colorString = match[0];
+                var color = WebInspector.Color.fromString(colorString);
+                if (!color) {
+                    match = colorRegex.exec(lineContent);
+                    continue;
+                }
+
+                var marker = this.markText(from, to);
+                marker = new WebInspector.TextMarker(marker, WebInspector.TextMarker.Type.Color);
+
+                createdMarkers.push(marker);
+
+                if (callback)
+                    callback(marker, color, colorString);
+
+                match = colorRegex.exec(lineContent);
+            }
+        }
+
+        return createdMarkers;
+    });
+
</ins><span class="cx">     function ignoreKey(codeMirror)
</span><span class="cx">     {
</span><span class="cx">         // Do nothing to ignore the key.
</span></span></pre></div>
<a id="branchesjsCStackSourceWebInspectorUIUserInterfaceCodeMirrorColorEditingControllerjs"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebInspectorUI/UserInterface/CodeMirrorColorEditingController.js (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebInspectorUI/UserInterface/CodeMirrorColorEditingController.js                                (rev 0)
+++ branches/jsCStack/Source/WebInspectorUI/UserInterface/CodeMirrorColorEditingController.js        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,161 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+WebInspector.CodeMirrorColorEditingController = function(codeMirror, marker)
+{
+    WebInspector.Object.call(this);
+
+    this._codeMirror = codeMirror;
+    this._marker = marker;
+    this._delegate = null;
+
+    this._range = marker.range;
+    this._color = WebInspector.Color.fromString(this.text);
+
+    this._keyboardShortcutEsc = new WebInspector.KeyboardShortcut(null, WebInspector.KeyboardShortcut.Key.Escape);
+}
+
+WebInspector.CodeMirrorColorEditingController.prototype = {
+    constructor: WebInspector.CodeMirrorColorEditingController,
+    __proto__: WebInspector.Object.prototype,
+    
+    // Public
+    
+    get marker()
+    {
+        return this._marker;
+    },
+    
+    get range()
+    {
+        return this._range;
+    },
+
+    get color()
+    {
+        return this._color;
+    },
+    
+    set color(color)
+    {
+        this.text = color.toString();
+        this._color = color;
+    },
+
+    get delegate()
+    {
+        return this._delegate;
+    },
+
+    set delegate(delegate)
+    {
+        this._delegate = delegate;
+    },
+
+    get text()
+    {
+        var from = {line: this._range.startLine, ch: this._range.startColumn};
+        var to = {line: this._range.endLine, ch: this._range.endColumn};
+        return this._codeMirror.getRange(from, to);
+    },
+    
+    set text(text)
+    {
+        var from = {line: this._range.startLine, ch: this._range.startColumn};
+        var to = {line: this._range.endLine, ch: this._range.endColumn};
+        this._codeMirror.replaceRange(text, from, to);
+
+        var lines = text.split(&quot;\n&quot;);
+        var endLine = this._range.startLine + lines.length - 1;
+        var endColumn = lines.length &gt; 1 ? lines.lastValue.length : this._range.startColumn + text.length;
+        this._range = new WebInspector.TextRange(this._range.startLine, this._range.startColumn, endLine, endColumn);
+    },
+    
+    presentHoverMenu: function()
+    {
+        this._hoverMenu = new WebInspector.HoverMenu(this);
+        this._hoverMenu.element.classList.add(&quot;color&quot;);
+        this._bounds = this._marker.bounds;
+        this._hoverMenu.present(this._bounds);
+    },
+
+    dismissHoverMenu: function()
+    {
+        this._hoverMenu.dismiss();
+    },
+
+    // Protected
+
+    handleEvent: function(event)
+    {
+        if (!this._keyboardShortcutEsc.matchesEvent(event) || !this._popover.visible)
+            return;
+        
+        this.color = this._originalColor;
+        this._popover.dismiss();
+
+        event.stopPropagation();
+        event.preventDefault();
+    },
+
+    hoverMenuButtonWasPressed: function(hoverMenu)
+    {
+        var colorPicker = new WebInspector.ColorPicker;
+        colorPicker.addEventListener(WebInspector.ColorPicker.Event.ColorChanged, this._colorPickerColorChanged, this);
+
+        this._popover = new WebInspector.Popover(this);
+        this._popover.content = colorPicker.element;
+        this._popover.present(this._bounds.pad(2), [WebInspector.RectEdge.MAX_Y, WebInspector.RectEdge.MAX_X]);
+
+        window.addEventListener(&quot;keydown&quot;, this, true);
+
+        colorPicker.color = this._color;
+
+        hoverMenu.dismiss();
+
+        if (this._delegate &amp;&amp; typeof this._delegate.colorEditingControllerDidStartEditing === &quot;function&quot;)
+            this._delegate.colorEditingControllerDidStartEditing(this);
+
+        this._originalColor = this._color.copy();
+    },
+    
+    didDismissPopover: function(popover)
+    {
+        delete this._popover;
+        delete this._originalColor;
+
+        window.removeEventListener(&quot;keydown&quot;, this, true);
+
+        if (this._delegate &amp;&amp; typeof this._delegate.colorEditingControllerDidFinishEditing === &quot;function&quot;)
+            this._delegate.colorEditingControllerDidFinishEditing(this);
+    },
+    
+    // Private
+    
+    _colorPickerColorChanged: function(event)
+    {
+        this.color = event.target.color;
+    }    
+}
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebInspectorUIUserInterfaceCodeMirrorTokenTrackingControllerjs"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebInspectorUI/UserInterface/CodeMirrorTokenTrackingController.js (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebInspectorUI/UserInterface/CodeMirrorTokenTrackingController.js        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebInspectorUI/UserInterface/CodeMirrorTokenTrackingController.js        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -31,7 +31,7 @@
</span><span class="cx"> 
</span><span class="cx">     this._codeMirror = codeMirror;
</span><span class="cx">     this._delegate = delegate || null;
</span><del>-    this._mode = WebInspector.CodeMirrorTokenTrackingController.Mode.NonSymbolTokens;
</del><ins>+    this._mode = WebInspector.CodeMirrorTokenTrackingController.Mode.None;
</ins><span class="cx"> 
</span><span class="cx">     this._mouseOverDelayDuration = 0;
</span><span class="cx">     this._mouseOutReleaseDelayDuration = 0;
</span><span class="lines">@@ -40,13 +40,16 @@
</span><span class="cx">     this._enabled = false;
</span><span class="cx">     this._tracking = false;
</span><span class="cx">     this._hoveredTokenInfo = null;
</span><ins>+    this._hoveredMarker = null;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> WebInspector.CodeMirrorTokenTrackingController.JumpToSymbolHighlightStyleClassName = &quot;jump-to-symbol-highlight&quot;;
</span><span class="cx"> 
</span><span class="cx"> WebInspector.CodeMirrorTokenTrackingController.Mode = {
</span><ins>+    None: &quot;none&quot;,
</ins><span class="cx">     NonSymbolTokens: &quot;non-symbol-tokens&quot;,
</span><span class="cx">     JavaScriptExpression: &quot;javascript-expression&quot;,
</span><ins>+    MarkedTokens: &quot;marked-tokens&quot;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebInspector.CodeMirrorTokenTrackingController.prototype = {
</span><span class="lines">@@ -94,11 +97,11 @@
</span><span class="cx">         return this._mode;
</span><span class="cx">     },
</span><span class="cx"> 
</span><del>-    set mode(x)
</del><ins>+    set mode(mode)
</ins><span class="cx">     {
</span><span class="cx">         var oldMode = this._mode;
</span><span class="cx"> 
</span><del>-        this._mode = x || WebInspector.CodeMirrorTokenTrackingController.Mode.NonSymbolTokens;
</del><ins>+        this._mode = mode || WebInspector.CodeMirrorTokenTrackingController.Mode.None;
</ins><span class="cx"> 
</span><span class="cx">         if (oldMode !== this._mode &amp;&amp; this._tracking &amp;&amp; this._hoveredTokenInfo)
</span><span class="cx">             this._processNewHoveredToken();
</span><span class="lines">@@ -141,6 +144,16 @@
</span><span class="cx">         return this._candidate;
</span><span class="cx">     },
</span><span class="cx"> 
</span><ins>+    get hoveredMarker()
+    {
+        return this._hoveredMarker;
+    },
+    
+    set hoveredMarker(hoveredMarker)
+    {
+        this._hoveredMarker = hoveredMarker;
+    },
+
</ins><span class="cx">     highlightLastHoveredRange: function()
</span><span class="cx">     {
</span><span class="cx">         if (this._candidate)
</span><span class="lines">@@ -176,13 +189,6 @@
</span><span class="cx">         window.removeEventListener(&quot;mousemove&quot;, this, true);
</span><span class="cx">     },
</span><span class="cx"> 
</span><del>-    boundsForRange: function(range)
-    {
-        var firstCharCoords = this._codeMirror.cursorCoords(range.start);
-        var lastCharCoords = this._codeMirror.cursorCoords(range.end);
-        return new WebInspector.Rect(firstCharCoords.left, firstCharCoords.top, lastCharCoords.right - firstCharCoords.left, firstCharCoords.bottom - firstCharCoords.top);
-    },
-
</del><span class="cx">     // Private
</span><span class="cx"> 
</span><span class="cx">     _startTracking: function()
</span><span class="lines">@@ -298,6 +304,11 @@
</span><span class="cx">         var token = this._codeMirror.getTokenAt(position);
</span><span class="cx"> 
</span><span class="cx">         if (!token || !token.type || !token.string) {
</span><ins>+            if (this._hoveredMarker &amp;&amp; this._delegate &amp;&amp; typeof this._delegate.tokenTrackingControllerMouseOutOfHoveredMarker === &quot;function&quot;) {
+                if (!this._codeMirror.findMarksAt(position).contains(this._hoveredMarker.codeMirrorTextMarker))
+                    this._delegate.tokenTrackingControllerMouseOutOfHoveredMarker(this, this._hoveredMarker);
+            }
+
</ins><span class="cx">             this._resetTrackingStates();
</span><span class="cx">             return;
</span><span class="cx">         }
</span><span class="lines">@@ -380,6 +391,9 @@
</span><span class="cx">         case WebInspector.CodeMirrorTokenTrackingController.Mode.JavaScriptExpression:
</span><span class="cx">             this._candidate = this._processJavaScriptExpression();
</span><span class="cx">             break;
</span><ins>+        case WebInspector.CodeMirrorTokenTrackingController.Mode.MarkedTokens:
+            this._candidate = this._processMarkedToken();
+            break;
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         if (!this._candidate)
</span><span class="lines">@@ -478,6 +492,11 @@
</span><span class="cx">         };
</span><span class="cx">     },
</span><span class="cx"> 
</span><ins>+    _processMarkedToken: function()
+    {
+        return this._processNonSymbolToken();
+    },
+
</ins><span class="cx">     _resetTrackingStates: function()
</span><span class="cx">     {
</span><span class="cx">         clearTimeout(this._tokenHoverTimer);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebInspectorUIUserInterfaceColorjs"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebInspectorUI/UserInterface/Color.js (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebInspectorUI/UserInterface/Color.js        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebInspectorUI/UserInterface/Color.js        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -34,6 +34,10 @@
</span><span class="cx">         this._hsla = components;
</span><span class="cx">     else
</span><span class="cx">         this._rgba = components;
</span><ins>+
+    this.valid = !components.some(function(component) {
+        return isNaN(component);
+    });
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebInspector.Color.Format = {
</span><span class="lines">@@ -211,6 +215,21 @@
</span><span class="cx">         return this._hsla;
</span><span class="cx">     },
</span><span class="cx"> 
</span><ins>+    copy: function()
+    {
+        switch (this.format) {
+        case WebInspector.Color.Format.RGB:
+        case WebInspector.Color.Format.HEX:
+        case WebInspector.Color.Format.ShortHEX:
+        case WebInspector.Color.Format.Nickname:
+        case WebInspector.Color.Format.RGBA:
+            return new WebInspector.Color(this.format, this.rgba);
+        case WebInspector.Color.Format.HSL:
+        case WebInspector.Color.Format.HSLA:
+            return new WebInspector.Color(this.format, this.hsla);
+        }
+    },
+
</ins><span class="cx">     toString: function(format)
</span><span class="cx">     {
</span><span class="cx">         if (!format)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebInspectorUIUserInterfaceExternalCodeMirrorcodemirrorcss"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/codemirror.css (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/codemirror.css        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/codemirror.css        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -74,7 +74,6 @@
</span><span class="cx"> .cm-s-default .cm-string {color: #a11;}
</span><span class="cx"> .cm-s-default .cm-string-2 {color: #f50;}
</span><span class="cx"> .cm-s-default .cm-meta {color: #555;}
</span><del>-.cm-s-default .cm-error {color: #f00;}
</del><span class="cx"> .cm-s-default .cm-qualifier {color: #555;}
</span><span class="cx"> .cm-s-default .cm-builtin {color: #30a;}
</span><span class="cx"> .cm-s-default .cm-bracket {color: #997;}
</span><span class="lines">@@ -91,6 +90,7 @@
</span><span class="cx"> .cm-em {font-style: italic;}
</span><span class="cx"> .cm-link {text-decoration: underline;}
</span><span class="cx"> 
</span><ins>+.cm-s-default .cm-error {color: #f00;}
</ins><span class="cx"> .cm-invalidchar {color: #f00;}
</span><span class="cx"> 
</span><span class="cx"> div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;}
</span></span></pre></div>
<a id="branchesjsCStackSourceWebInspectorUIUserInterfaceExternalCodeMirrorcodemirrorjs"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/codemirror.js (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/codemirror.js        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/codemirror.js        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -7,9 +7,13 @@
</span><span class="cx">   // Crude, but necessary to handle a number of hard-to-feature-detect
</span><span class="cx">   // bugs and behavior differences.
</span><span class="cx">   var gecko = /gecko\/\d/i.test(navigator.userAgent);
</span><ins>+  // IE11 currently doesn't count as 'ie', since it has almost none of
+  // the same bugs as earlier versions. Use ie_gt10 to handle
+  // incompatibilities in that version.
</ins><span class="cx">   var ie = /MSIE \d/.test(navigator.userAgent);
</span><span class="cx">   var ie_lt8 = ie &amp;&amp; (document.documentMode == null || document.documentMode &lt; 8);
</span><span class="cx">   var ie_lt9 = ie &amp;&amp; (document.documentMode == null || document.documentMode &lt; 9);
</span><ins>+  var ie_gt10 = /Trident\/([7-9]|\d{2,})\./.test(navigator.userAgent);
</ins><span class="cx">   var webkit = /WebKit\//.test(navigator.userAgent);
</span><span class="cx">   var qtwebkit = webkit &amp;&amp; /Qt\/\d+\.\d+/.test(navigator.userAgent);
</span><span class="cx">   var chrome = /Chrome\//.test(navigator.userAgent);
</span><span class="lines">@@ -309,7 +313,7 @@
</span><span class="cx">       options.gutters = options.gutters.concat([&quot;CodeMirror-linenumbers&quot;]);
</span><span class="cx">     } else if (found &gt; -1 &amp;&amp; !options.lineNumbers) {
</span><span class="cx">       options.gutters = options.gutters.slice(0);
</span><del>-      options.gutters.splice(i, 1);
</del><ins>+      options.gutters.splice(found, 1);
</ins><span class="cx">     }
</span><span class="cx">   }
</span><span class="cx"> 
</span><span class="lines">@@ -353,8 +357,10 @@
</span><span class="cx">       d.gutterFiller.style.width = d.gutters.offsetWidth + &quot;px&quot;;
</span><span class="cx">     } else d.gutterFiller.style.display = &quot;&quot;;
</span><span class="cx"> 
</span><del>-    if (mac_geLion &amp;&amp; scrollbarWidth(d.measure) === 0)
</del><ins>+    if (mac_geLion &amp;&amp; scrollbarWidth(d.measure) === 0) {
</ins><span class="cx">       d.scrollbarV.style.minWidth = d.scrollbarH.style.minHeight = mac_geMountainLion ? &quot;18px&quot; : &quot;12px&quot;;
</span><ins>+      d.scrollbarV.style.pointerEvents = d.scrollbarH.style.pointerEvents = &quot;none&quot;;
+    }
</ins><span class="cx">   }
</span><span class="cx"> 
</span><span class="cx">   function visibleLines(display, doc, viewPort) {
</span><span class="lines">@@ -409,14 +415,14 @@
</span><span class="cx">   function updateDisplay(cm, changes, viewPort, forced) {
</span><span class="cx">     var oldFrom = cm.display.showingFrom, oldTo = cm.display.showingTo, updated;
</span><span class="cx">     var visible = visibleLines(cm.display, cm.doc, viewPort);
</span><del>-    for (;;) {
</del><ins>+    for (var first = true;; first = false) {
</ins><span class="cx">       var oldWidth = cm.display.scroller.clientWidth;
</span><span class="cx">       if (!updateDisplayInner(cm, changes, visible, forced)) break;
</span><span class="cx">       updated = true;
</span><span class="cx">       changes = [];
</span><span class="cx">       updateSelection(cm);
</span><span class="cx">       updateScrollbars(cm);
</span><del>-      if (cm.options.lineWrapping &amp;&amp; oldWidth != cm.display.scroller.clientWidth) {
</del><ins>+      if (first &amp;&amp; cm.options.lineWrapping &amp;&amp; oldWidth != cm.display.scroller.clientWidth) {
</ins><span class="cx">         forced = true;
</span><span class="cx">         continue;
</span><span class="cx">       }
</span><span class="lines">@@ -904,7 +910,7 @@
</span><span class="cx">     doc.iter(doc.frontier, Math.min(doc.first + doc.size, cm.display.showingTo + 500), function(line) {
</span><span class="cx">       if (doc.frontier &gt;= cm.display.showingFrom) { // Visible
</span><span class="cx">         var oldStyles = line.styles;
</span><del>-        line.styles = highlightLine(cm, line, state);
</del><ins>+        line.styles = highlightLine(cm, line, state, true);
</ins><span class="cx">         var ischange = !oldStyles || oldStyles.length != line.styles.length;
</span><span class="cx">         for (var i = 0; !ischange &amp;&amp; i &lt; oldStyles.length; ++i) ischange = oldStyles[i] != line.styles[i];
</span><span class="cx">         if (ischange) {
</span><span class="lines">@@ -913,7 +919,7 @@
</span><span class="cx">         }
</span><span class="cx">         line.stateAfter = copyState(doc.mode, state);
</span><span class="cx">       } else {
</span><del>-        processLine(cm, line, state);
</del><ins>+        processLine(cm, line.text, state);
</ins><span class="cx">         line.stateAfter = doc.frontier % 5 == 0 ? copyState(doc.mode, state) : null;
</span><span class="cx">       }
</span><span class="cx">       ++doc.frontier;
</span><span class="lines">@@ -935,8 +941,9 @@
</span><span class="cx">   // smallest indentation, which tends to need the least context to
</span><span class="cx">   // parse correctly.
</span><span class="cx">   function findStartLine(cm, n, precise) {
</span><del>-    var minindent, minline, doc = cm.doc, maxScan = cm.doc.mode.innerMode ? 1000 : 100;
-    for (var search = n, lim = n - maxScan; search &gt; lim; --search) {
</del><ins>+    var minindent, minline, doc = cm.doc;
+    var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);
+    for (var search = n; search &gt; lim; --search) {
</ins><span class="cx">       if (search &lt;= doc.first) return doc.first;
</span><span class="cx">       var line = getLine(doc, search - 1);
</span><span class="cx">       if (line.stateAfter &amp;&amp; (!precise || search &lt;= doc.frontier)) return search;
</span><span class="lines">@@ -956,11 +963,12 @@
</span><span class="cx">     if (!state) state = startState(doc.mode);
</span><span class="cx">     else state = copyState(doc.mode, state);
</span><span class="cx">     doc.iter(pos, n, function(line) {
</span><del>-      processLine(cm, line, state);
</del><ins>+      processLine(cm, line.text, state);
</ins><span class="cx">       var save = pos == n - 1 || pos % 5 == 0 || pos &gt;= display.showingFrom &amp;&amp; pos &lt; display.showingTo;
</span><span class="cx">       line.stateAfter = save ? copyState(doc.mode, state) : null;
</span><span class="cx">       ++pos;
</span><span class="cx">     });
</span><ins>+    if (precise) doc.frontier = pos;
</ins><span class="cx">     return state;
</span><span class="cx">   }
</span><span class="cx"> 
</span><span class="lines">@@ -1001,7 +1009,7 @@
</span><span class="cx">       var memo = cache[i];
</span><span class="cx">       if (memo.text == line.text &amp;&amp; memo.markedSpans == line.markedSpans &amp;&amp;
</span><span class="cx">           cm.display.scroller.clientWidth == memo.width &amp;&amp;
</span><del>-          memo.classes == line.textClass + &quot;|&quot; + line.bgClass + &quot;|&quot; + line.wrapClass)
</del><ins>+          memo.classes == line.textClass + &quot;|&quot; + line.wrapClass)
</ins><span class="cx">         return memo;
</span><span class="cx">     }
</span><span class="cx">   }
</span><span class="lines">@@ -1021,7 +1029,7 @@
</span><span class="cx">     var cache = cm.display.measureLineCache;
</span><span class="cx">     var memo = {text: line.text, width: cm.display.scroller.clientWidth,
</span><span class="cx">                 markedSpans: line.markedSpans, measure: measure,
</span><del>-                classes: line.textClass + &quot;|&quot; + line.bgClass + &quot;|&quot; + line.wrapClass};
</del><ins>+                classes: line.textClass + &quot;|&quot; + line.wrapClass};
</ins><span class="cx">     if (cache.length == 16) cache[++cm.display.measureLineCachePos % 16] = memo;
</span><span class="cx">     else cache.push(memo);
</span><span class="cx">     return measure;
</span><span class="lines">@@ -1379,11 +1387,14 @@
</span><span class="cx">     }
</span><span class="cx">     if (!updated &amp;&amp; op.selectionChanged) updateSelection(cm);
</span><span class="cx">     if (op.updateScrollPos) {
</span><del>-      display.scroller.scrollTop = display.scrollbarV.scrollTop = doc.scrollTop = newScrollPos.scrollTop;
-      display.scroller.scrollLeft = display.scrollbarH.scrollLeft = doc.scrollLeft = newScrollPos.scrollLeft;
</del><ins>+      var top = Math.max(0, Math.min(display.scroller.scrollHeight - display.scroller.clientHeight, newScrollPos.scrollTop));
+      var left = Math.max(0, Math.min(display.scroller.scrollWidth - display.scroller.clientWidth, newScrollPos.scrollLeft));
+      display.scroller.scrollTop = display.scrollbarV.scrollTop = doc.scrollTop = top;
+      display.scroller.scrollLeft = display.scrollbarH.scrollLeft = doc.scrollLeft = left;
</ins><span class="cx">       alignHorizontally(cm);
</span><span class="cx">       if (op.scrollToPos)
</span><del>-        scrollPosIntoView(cm, clipPos(cm.doc, op.scrollToPos), op.scrollToPosMargin);
</del><ins>+        scrollPosIntoView(cm, clipPos(cm.doc, op.scrollToPos.from),
+                          clipPos(cm.doc, op.scrollToPos.to), op.scrollToPos.margin);
</ins><span class="cx">     } else if (newScrollPos) {
</span><span class="cx">       scrollCursorIntoView(cm);
</span><span class="cx">     }
</span><span class="lines">@@ -1605,7 +1616,10 @@
</span><span class="cx">       if (signalDOMEvent(cm, e) || cm.options.onKeyEvent &amp;&amp; cm.options.onKeyEvent(cm, addStop(e))) return;
</span><span class="cx">       if (e.keyCode == 16) cm.doc.sel.shift = false;
</span><span class="cx">     }));
</span><del>-    on(d.input, &quot;input&quot;, bind(fastPoll, cm));
</del><ins>+    on(d.input, &quot;input&quot;, function() {
+      if (ie &amp;&amp; !ie_lt9 &amp;&amp; cm.display.inputHasSelection) cm.display.inputHasSelection = null;
+      fastPoll(cm);
+    });
</ins><span class="cx">     on(d.input, &quot;keydown&quot;, operation(cm, onKeyDown));
</span><span class="cx">     on(d.input, &quot;keypress&quot;, operation(cm, onKeyPress));
</span><span class="cx">     on(d.input, &quot;focus&quot;, bind(onFocus, cm));
</span><span class="lines">@@ -1895,7 +1909,6 @@
</span><span class="cx">           if (cm.state.draggingText) replaceRange(cm.doc, &quot;&quot;, curFrom, curTo, &quot;paste&quot;);
</span><span class="cx">           cm.replaceSelection(text, null, &quot;paste&quot;);
</span><span class="cx">           focusInput(cm);
</span><del>-          onFocus(cm);
</del><span class="cx">         }
</span><span class="cx">       }
</span><span class="cx">       catch(e){}
</span><span class="lines">@@ -2176,7 +2189,11 @@
</span><span class="cx"> 
</span><span class="cx">     var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop;
</span><span class="cx">     if (!pos || opera) return; // Opera is difficult.
</span><del>-    if (posEq(sel.from, sel.to) || posLess(pos, sel.from) || !posLess(pos, sel.to))
</del><ins>+
+    // Reset the current text selection only if the click is done outside of the selection
+    // and 'resetSelectionOnContextMenu' option is true.
+    var reset = cm.options.resetSelectionOnContextMenu;
+    if (reset &amp;&amp; (posEq(sel.from, sel.to) || posLess(pos, sel.from) || !posLess(pos, sel.to)))
</ins><span class="cx">       operation(cm, setSelection)(cm.doc, pos, pos);
</span><span class="cx"> 
</span><span class="cx">     var oldCSS = display.input.style.cssText;
</span><span class="lines">@@ -2326,6 +2343,7 @@
</span><span class="cx">   }
</span><span class="cx"> 
</span><span class="cx">   function makeChangeNoReadonly(doc, change, selUpdate) {
</span><ins>+    if (change.text.length == 1 &amp;&amp; change.text[0] == &quot;&quot; &amp;&amp; posEq(change.from, change.to)) return;
</ins><span class="cx">     var selAfter = computeSelAfterChange(doc, change, selUpdate);
</span><span class="cx">     addToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);
</span><span class="cx"> 
</span><span class="lines">@@ -2626,7 +2644,7 @@
</span><span class="cx">   // SCROLLING
</span><span class="cx"> 
</span><span class="cx">   function scrollCursorIntoView(cm) {
</span><del>-    var coords = scrollPosIntoView(cm, cm.doc.sel.head, cm.options.cursorScrollMargin);
</del><ins>+    var coords = scrollPosIntoView(cm, cm.doc.sel.head, null, cm.options.cursorScrollMargin);
</ins><span class="cx">     if (!cm.state.focused) return;
</span><span class="cx">     var display = cm.display, box = getRect(display.sizer), doScroll = null;
</span><span class="cx">     if (coords.top + box.top &lt; 0) doScroll = true;
</span><span class="lines">@@ -2643,11 +2661,15 @@
</span><span class="cx">     }
</span><span class="cx">   }
</span><span class="cx"> 
</span><del>-  function scrollPosIntoView(cm, pos, margin) {
</del><ins>+  function scrollPosIntoView(cm, pos, end, margin) {
</ins><span class="cx">     if (margin == null) margin = 0;
</span><span class="cx">     for (;;) {
</span><span class="cx">       var changed = false, coords = cursorCoords(cm, pos);
</span><del>-      var scrollPos = calculateScrollPos(cm, coords.left, coords.top - margin, coords.left, coords.bottom + margin);
</del><ins>+      var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);
+      var scrollPos = calculateScrollPos(cm, Math.min(coords.left, endCoords.left),
+                                         Math.min(coords.top, endCoords.top) - margin,
+                                         Math.max(coords.left, endCoords.left),
+                                         Math.max(coords.bottom, endCoords.bottom) + margin);
</ins><span class="cx">       var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft;
</span><span class="cx">       if (scrollPos.scrollTop != null) {
</span><span class="cx">         setScrollTop(cm, scrollPos.scrollTop);
</span><span class="lines">@@ -2744,6 +2766,8 @@
</span><span class="cx"> 
</span><span class="cx">     if (indentString != curSpaceString)
</span><span class="cx">       replaceRange(cm.doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), &quot;+input&quot;);
</span><ins>+    else if (doc.sel.head.line == n &amp;&amp; doc.sel.head.ch &lt; curSpaceString.length)
+      setSelection(doc, Pos(n, curSpaceString.length), Pos(n, curSpaceString.length), 1);
</ins><span class="cx">     line.stateAfter = null;
</span><span class="cx">   }
</span><span class="cx"> 
</span><span class="lines">@@ -2844,7 +2868,7 @@
</span><span class="cx"> 
</span><span class="cx">   CodeMirror.prototype = {
</span><span class="cx">     constructor: CodeMirror,
</span><del>-    focus: function(){window.focus(); focusInput(this); onFocus(this); fastPoll(this);},
</del><ins>+    focus: function(){window.focus(); focusInput(this); fastPoll(this);},
</ins><span class="cx"> 
</span><span class="cx">     setOption: function(option, value) {
</span><span class="cx">       var options = this.options, old = options[option];
</span><span class="lines">@@ -3165,17 +3189,23 @@
</span><span class="cx">               clientHeight: scroller.clientHeight - co, clientWidth: scroller.clientWidth - co};
</span><span class="cx">     },
</span><span class="cx"> 
</span><del>-    scrollIntoView: operation(null, function(pos, margin) {
-      if (typeof pos == &quot;number&quot;) pos = Pos(pos, 0);
</del><ins>+    scrollIntoView: operation(null, function(range, margin) {
+      if (range == null) range = {from: this.doc.sel.head, to: null};
+      else if (typeof range == &quot;number&quot;) range = {from: Pos(range, 0), to: null};
+      else if (range.from == null) range = {from: range, to: null};
+      if (!range.to) range.to = range.from;
</ins><span class="cx">       if (!margin) margin = 0;
</span><del>-      var coords = pos;
</del><span class="cx"> 
</span><del>-      if (!pos || pos.line != null) {
-        this.curOp.scrollToPos = pos ? clipPos(this.doc, pos) : this.doc.sel.head;
-        this.curOp.scrollToPosMargin = margin;
-        coords = cursorCoords(this, this.curOp.scrollToPos);
</del><ins>+      var coords = range;
+      if (range.from.line != null) {
+        this.curOp.scrollToPos = {from: range.from, to: range.to, margin: margin};
+        coords = {from: cursorCoords(this, range.from),
+                  to: cursorCoords(this, range.to)};
</ins><span class="cx">       }
</span><del>-      var sPos = calculateScrollPos(this, coords.left, coords.top - margin, coords.right, coords.bottom + margin);
</del><ins>+      var sPos = calculateScrollPos(this, Math.min(coords.from.left, coords.to.left),
+                                    Math.min(coords.from.top, coords.to.top) - margin,
+                                    Math.max(coords.from.right, coords.to.right),
+                                    Math.max(coords.from.bottom, coords.to.bottom) + margin);
</ins><span class="cx">       updateScrollPos(this, sPos.scrollLeft, sPos.scrollTop);
</span><span class="cx">     }),
</span><span class="cx"> 
</span><span class="lines">@@ -3207,6 +3237,7 @@
</span><span class="cx">       clearCaches(this);
</span><span class="cx">       resetInput(this, true);
</span><span class="cx">       updateScrollPos(this, doc.scrollLeft, doc.scrollTop);
</span><ins>+      signalLater(this, &quot;swapDoc&quot;, this, old);
</ins><span class="cx">       return old;
</span><span class="cx">     }),
</span><span class="cx"> 
</span><span class="lines">@@ -3250,8 +3281,14 @@
</span><span class="cx">     clearCaches(cm);
</span><span class="cx">     regChange(cm);
</span><span class="cx">   }, true);
</span><ins>+  option(&quot;specialChars&quot;, /[\t\u0000-\u0019\u00ad\u200b\u2028\u2029\ufeff]/g, function(cm, val) {
+    cm.options.specialChars = new RegExp(val.source + (val.test(&quot;\t&quot;) ? &quot;&quot; : &quot;|\t&quot;), &quot;g&quot;);
+    cm.refresh();
+  }, true);
+  option(&quot;specialCharPlaceholder&quot;, defaultSpecialCharPlaceholder, function(cm) {cm.refresh();}, true);
</ins><span class="cx">   option(&quot;electricChars&quot;, true);
</span><span class="cx">   option(&quot;rtlMoveVisually&quot;, !windows);
</span><ins>+  option(&quot;wholeLineUpdateBefore&quot;, true);
</ins><span class="cx"> 
</span><span class="cx">   option(&quot;theme&quot;, &quot;default&quot;, function(cm) {
</span><span class="cx">     themeChanged(cm);
</span><span class="lines">@@ -3281,9 +3318,17 @@
</span><span class="cx">   option(&quot;lineNumberFormatter&quot;, function(integer) {return integer;}, guttersChanged, true);
</span><span class="cx">   option(&quot;showCursorWhenSelecting&quot;, false, updateSelection, true);
</span><span class="cx"> 
</span><ins>+  option(&quot;resetSelectionOnContextMenu&quot;, true);
+
</ins><span class="cx">   option(&quot;readOnly&quot;, false, function(cm, val) {
</span><del>-    if (val == &quot;nocursor&quot;) {onBlur(cm); cm.display.input.blur();}
-    else if (!val) resetInput(cm, true);
</del><ins>+    if (val == &quot;nocursor&quot;) {
+      onBlur(cm);
+      cm.display.input.blur();
+      cm.display.disabled = true;
+    } else {
+      cm.display.disabled = false;
+      if (!val) resetInput(cm, true);
+    }
</ins><span class="cx">   });
</span><span class="cx">   option(&quot;dragDrop&quot;, true);
</span><span class="cx"> 
</span><span class="lines">@@ -3517,7 +3562,8 @@
</span><span class="cx">   keyMap.basic = {
</span><span class="cx">     &quot;Left&quot;: &quot;goCharLeft&quot;, &quot;Right&quot;: &quot;goCharRight&quot;, &quot;Up&quot;: &quot;goLineUp&quot;, &quot;Down&quot;: &quot;goLineDown&quot;,
</span><span class="cx">     &quot;End&quot;: &quot;goLineEnd&quot;, &quot;Home&quot;: &quot;goLineStartSmart&quot;, &quot;PageUp&quot;: &quot;goPageUp&quot;, &quot;PageDown&quot;: &quot;goPageDown&quot;,
</span><del>-    &quot;Delete&quot;: &quot;delCharAfter&quot;, &quot;Backspace&quot;: &quot;delCharBefore&quot;, &quot;Tab&quot;: &quot;defaultTab&quot;, &quot;Shift-Tab&quot;: &quot;indentAuto&quot;,
</del><ins>+    &quot;Delete&quot;: &quot;delCharAfter&quot;, &quot;Backspace&quot;: &quot;delCharBefore&quot;, &quot;Shift-Backspace&quot;: &quot;delCharBefore&quot;,
+    &quot;Tab&quot;: &quot;defaultTab&quot;, &quot;Shift-Tab&quot;: &quot;indentAuto&quot;,
</ins><span class="cx">     &quot;Enter&quot;: &quot;newlineAndIndent&quot;, &quot;Insert&quot;: &quot;toggleOverwrite&quot;
</span><span class="cx">   };
</span><span class="cx">   // Note that the save and find-related commands aren't defined by
</span><span class="lines">@@ -3823,7 +3869,9 @@
</span><span class="cx">     if (doc.cm &amp;&amp; !doc.cm.curOp) return operation(doc.cm, markText)(doc, from, to, options, type);
</span><span class="cx"> 
</span><span class="cx">     var marker = new TextMarker(doc, type);
</span><del>-    if (type == &quot;range&quot; &amp;&amp; !posLess(from, to)) return marker;
</del><ins>+    if (posLess(to, from) || posEq(from, to) &amp;&amp; type == &quot;range&quot; &amp;&amp;
+        !(options.inclusiveLeft &amp;&amp; options.inclusiveRight))
+      return marker;
</ins><span class="cx">     if (options) copyObj(options, marker);
</span><span class="cx">     if (marker.replacedWith) {
</span><span class="cx">       marker.collapsed = true;
</span><span class="lines">@@ -3939,7 +3987,9 @@
</span><span class="cx">     if (old) for (var i = 0, nw; i &lt; old.length; ++i) {
</span><span class="cx">       var span = old[i], marker = span.marker;
</span><span class="cx">       var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from &lt;= startCh : span.from &lt; startCh);
</span><del>-      if (startsBefore || marker.type == &quot;bookmark&quot; &amp;&amp; span.from == startCh &amp;&amp; (!isInsert || !span.marker.insertLeft)) {
</del><ins>+      if (startsBefore ||
+          (marker.inclusiveLeft &amp;&amp; marker.inclusiveRight || marker.type == &quot;bookmark&quot;) &amp;&amp;
+          span.from == startCh &amp;&amp; (!isInsert || !span.marker.insertLeft)) {
</ins><span class="cx">         var endsAfter = span.to == null || (marker.inclusiveRight ? span.to &gt;= startCh : span.to &gt; startCh);
</span><span class="cx">         (nw || (nw = [])).push({from: span.from,
</span><span class="cx">                                 to: endsAfter ? null : span.to,
</span><span class="lines">@@ -4212,6 +4262,7 @@
</span><span class="cx">     this.height = estimateHeight ? estimateHeight(this) : 1;
</span><span class="cx">   };
</span><span class="cx">   eventMixin(Line);
</span><ins>+  Line.prototype.lineNo = function() { return lineNo(this); };
</ins><span class="cx"> 
</span><span class="cx">   function updateLine(line, text, markedSpans, estimateHeight) {
</span><span class="cx">     line.text = text;
</span><span class="lines">@@ -4232,7 +4283,7 @@
</span><span class="cx">   // Run the given mode's parser over a line, update the styles
</span><span class="cx">   // array, which contains alternating fragments of text and CSS
</span><span class="cx">   // classes.
</span><del>-  function runMode(cm, text, mode, state, f) {
</del><ins>+  function runMode(cm, text, mode, state, f, forceToEnd) {
</ins><span class="cx">     var flattenSpans = mode.flattenSpans;
</span><span class="cx">     if (flattenSpans == null) flattenSpans = cm.options.flattenSpans;
</span><span class="cx">     var curStart = 0, curStyle = null;
</span><span class="lines">@@ -4241,6 +4292,7 @@
</span><span class="cx">     while (!stream.eol()) {
</span><span class="cx">       if (stream.pos &gt; cm.options.maxHighlightLength) {
</span><span class="cx">         flattenSpans = false;
</span><ins>+        if (forceToEnd) processLine(cm, text, state, stream.pos);
</ins><span class="cx">         stream.pos = text.length;
</span><span class="cx">         style = null;
</span><span class="cx">       } else {
</span><span class="lines">@@ -4260,12 +4312,14 @@
</span><span class="cx">     }
</span><span class="cx">   }
</span><span class="cx"> 
</span><del>-  function highlightLine(cm, line, state) {
</del><ins>+  function highlightLine(cm, line, state, forceToEnd) {
</ins><span class="cx">     // A styles array always starts with a number identifying the
</span><span class="cx">     // mode/overlays that it is based on (for easy invalidation).
</span><span class="cx">     var st = [cm.state.modeGen];
</span><span class="cx">     // Compute the base array of styles
</span><del>-    runMode(cm, line.text, cm.doc.mode, state, function(end, style) {st.push(end, style);});
</del><ins>+    runMode(cm, line.text, cm.doc.mode, state, function(end, style) {
+      st.push(end, style);
+    }, forceToEnd);
</ins><span class="cx"> 
</span><span class="cx">     // Run overlays, adjust style array.
</span><span class="cx">     for (var o = 0; o &lt; cm.state.overlays.length; ++o) {
</span><span class="lines">@@ -4304,10 +4358,11 @@
</span><span class="cx"> 
</span><span class="cx">   // Lightweight form of highlight -- proceed over this line and
</span><span class="cx">   // update state, but don't save a style array.
</span><del>-  function processLine(cm, line, state) {
</del><ins>+  function processLine(cm, text, state, startAt) {
</ins><span class="cx">     var mode = cm.doc.mode;
</span><del>-    var stream = new StringStream(line.text, cm.options.tabSize);
-    if (line.text == &quot;&quot; &amp;&amp; mode.blankLine) mode.blankLine(state);
</del><ins>+    var stream = new StringStream(text, cm.options.tabSize);
+    stream.start = stream.pos = startAt || 0;
+    if (text == &quot;&quot; &amp;&amp; mode.blankLine) mode.blankLine(state);
</ins><span class="cx">     while (!stream.eol() &amp;&amp; stream.pos &lt;= cm.options.maxHighlightLength) {
</span><span class="cx">       mode.token(stream, state);
</span><span class="cx">       stream.start = stream.pos;
</span><span class="lines">@@ -4364,7 +4419,7 @@
</span><span class="cx">     // Work around problem with the reported dimensions of single-char
</span><span class="cx">     // direction spans on IE (issue #1129). See also the comment in
</span><span class="cx">     // cursorCoords.
</span><del>-    if (measure &amp;&amp; ie &amp;&amp; (order = getOrder(line))) {
</del><ins>+    if (measure &amp;&amp; (ie || ie_gt10) &amp;&amp; (order = getOrder(line))) {
</ins><span class="cx">       var l = order.length - 1;
</span><span class="cx">       if (order[l].from == order[l].to) --l;
</span><span class="cx">       var last = order[l], prev = order[l - 1];
</span><span class="lines">@@ -4382,17 +4437,23 @@
</span><span class="cx">     return builder;
</span><span class="cx">   }
</span><span class="cx"> 
</span><del>-  var tokenSpecialChars = /[\t\u0000-\u0019\u00ad\u200b\u2028\u2029\uFEFF]/g;
</del><ins>+  function defaultSpecialCharPlaceholder(ch) {
+    var token = elt(&quot;span&quot;, &quot;\u2022&quot;, &quot;cm-invalidchar&quot;);
+    token.title = &quot;\\u&quot; + ch.charCodeAt(0).toString(16);
+    return token;
+  }
+
</ins><span class="cx">   function buildToken(builder, text, style, startStyle, endStyle, title) {
</span><span class="cx">     if (!text) return;
</span><del>-    if (!tokenSpecialChars.test(text)) {
</del><ins>+    var special = builder.cm.options.specialChars;
+    if (!special.test(text)) {
</ins><span class="cx">       builder.col += text.length;
</span><span class="cx">       var content = document.createTextNode(text);
</span><span class="cx">     } else {
</span><span class="cx">       var content = document.createDocumentFragment(), pos = 0;
</span><span class="cx">       while (true) {
</span><del>-        tokenSpecialChars.lastIndex = pos;
-        var m = tokenSpecialChars.exec(text);
</del><ins>+        special.lastIndex = pos;
+        var m = special.exec(text);
</ins><span class="cx">         var skipped = m ? m.index - pos : text.length - pos;
</span><span class="cx">         if (skipped) {
</span><span class="cx">           content.appendChild(document.createTextNode(text.slice(pos, pos + skipped)));
</span><span class="lines">@@ -4405,8 +4466,7 @@
</span><span class="cx">           content.appendChild(elt(&quot;span&quot;, spaceStr(tabWidth), &quot;cm-tab&quot;));
</span><span class="cx">           builder.col += tabWidth;
</span><span class="cx">         } else {
</span><del>-          var token = elt(&quot;span&quot;, &quot;\u2022&quot;, &quot;cm-invalidchar&quot;);
-          token.title = &quot;\\u&quot; + m[0].charCodeAt(0).toString(16);
</del><ins>+          var token = builder.cm.options.specialCharPlaceholder(m[0]);
</ins><span class="cx">           content.appendChild(token);
</span><span class="cx">           builder.col += 1;
</span><span class="cx">         }
</span><span class="lines">@@ -4457,7 +4517,7 @@
</span><span class="cx">       return out;
</span><span class="cx">     }
</span><span class="cx">     return function(builder, text, style, startStyle, endStyle, title) {
</span><del>-      return inner(builder, text.replace(/ {3,}/, split), style, startStyle, endStyle, title);
</del><ins>+      return inner(builder, text.replace(/ {3,}/g, split), style, startStyle, endStyle, title);
</ins><span class="cx">     };
</span><span class="cx">   }
</span><span class="cx"> 
</span><span class="lines">@@ -4559,7 +4619,8 @@
</span><span class="cx">     var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line;
</span><span class="cx"> 
</span><span class="cx">     // First adjust the line structure
</span><del>-    if (from.ch == 0 &amp;&amp; to.ch == 0 &amp;&amp; lastText == &quot;&quot;) {
</del><ins>+    if (from.ch == 0 &amp;&amp; to.ch == 0 &amp;&amp; lastText == &quot;&quot; &amp;&amp;
+        (!doc.cm || doc.cm.options.wholeLineUpdateBefore)) {
</ins><span class="cx">       // This is a whole-line replace. Treated specially to make
</span><span class="cx">       // sure line objects move the way they are supposed to.
</span><span class="cx">       for (var i = 0, e = text.length - 1, added = []; i &lt; e; ++i)
</span><span class="lines">@@ -5446,7 +5507,7 @@
</span><span class="cx">     return true;
</span><span class="cx">   }
</span><span class="cx"> 
</span><del>-  var isExtendingChar = /[\u0300-\u036F\u0483-\u0487\u0488-\u0489\u0591-\u05BD\u05BF\u05C1-\u05C2\u05C4-\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\uA66F\uA670-\uA672\uA674-\uA67D\uA69F\udc00-\udfff]/;
</del><ins>+  var isExtendingChar = /[\u0300-\u036F\u0483-\u0487\u0488-\u0489\u0591-\u05BD\u05BF\u05C1-\u05C2\u05C4-\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\uA66F\u1DC0–\u1DFF\u20D0–\u20FF\uA670-\uA672\uA674-\uA67D\uA69F\udc00-\udfff\uFE20–\uFE2F]/;
</ins><span class="cx"> 
</span><span class="cx">   // DOM UTILITIES
</span><span class="cx"> 
</span><span class="lines">@@ -5520,7 +5581,7 @@
</span><span class="cx">         if (/\w/.test(str.charAt(i - 2)) &amp;&amp; /[^\-?\.]/.test(str.charAt(i))) return true;
</span><span class="cx">         if (i &gt; 2 &amp;&amp; /[\d\.,]/.test(str.charAt(i - 2)) &amp;&amp; /[\d\.,]/.test(str.charAt(i))) return false;
</span><span class="cx">       }
</span><del>-      var result = /[~!#%&amp;*)=+}\]|\&quot;\.&gt;,:;][({[&lt;]|-[^\-?\.\u2010-\u201f\u2026]|\?[\w~`@#$%\^&amp;*(_=+{[|&gt;&lt;]|…[\w~`@#$%\^&amp;*(_=+{[&gt;&lt;]/.test(str.slice(i - 1, i + 1));
</del><ins>+      var result = /[~!#%&amp;*)=+}\]\\|\&quot;\.&gt;,:;][({[&lt;]|-[^\-?\.\u2010-\u201f\u2026]|\?[\w~`@#$%\^&amp;*(_=+{[|&gt;&lt;]|…[\w~`@#$%\^&amp;*(_=+{[&gt;&lt;]/.test(str.slice(i - 1, i + 1));
</ins><span class="cx">       return result;
</span><span class="cx">     };
</span><span class="cx"> 
</span><span class="lines">@@ -5877,7 +5938,7 @@
</span><span class="cx"> 
</span><span class="cx">   // THE END
</span><span class="cx"> 
</span><del>-  CodeMirror.version = &quot;3.16.1&quot;;
</del><ins>+  CodeMirror.version = &quot;3.20.0&quot;;
</ins><span class="cx"> 
</span><span class="cx">   return CodeMirror;
</span><span class="cx"> })();
</span></span></pre></div>
<a id="branchesjsCStackSourceWebInspectorUIUserInterfaceExternalCodeMirrorcoffeescriptjs"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/coffeescript.js (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/coffeescript.js        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/coffeescript.js        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -2,347 +2,353 @@
</span><span class="cx">  * Link to the project's GitHub page:
</span><span class="cx">  * https://github.com/pickhardt/coffeescript-codemirror-mode
</span><span class="cx">  */
</span><del>-CodeMirror.defineMode('coffeescript', function(conf) {
-    var ERRORCLASS = 'error';
</del><ins>+CodeMirror.defineMode(&quot;coffeescript&quot;, function(conf) {
+  var ERRORCLASS = &quot;error&quot;;
</ins><span class="cx"> 
</span><del>-    function wordRegexp(words) {
-        return new RegExp(&quot;^((&quot; + words.join(&quot;)|(&quot;) + &quot;))\\b&quot;);
-    }
</del><ins>+  function wordRegexp(words) {
+    return new RegExp(&quot;^((&quot; + words.join(&quot;)|(&quot;) + &quot;))\\b&quot;);
+  }
</ins><span class="cx"> 
</span><del>-    var singleOperators = new RegExp(&quot;^[\\+\\-\\*/%&amp;|\\^~&lt;&gt;!\?]&quot;);
-    var singleDelimiters = new RegExp('^[\\(\\)\\[\\]\\{\\},:`=;\\.]');
-    var doubleOperators = new RegExp(&quot;^((\-&gt;)|(\=&gt;)|(\\+\\+)|(\\+\\=)|(\\-\\-)|(\\-\\=)|(\\*\\*)|(\\*\\=)|(\\/\\/)|(\\/\\=)|(==)|(!=)|(&lt;=)|(&gt;=)|(&lt;&gt;)|(&lt;&lt;)|(&gt;&gt;)|(//))&quot;);
-    var doubleDelimiters = new RegExp(&quot;^((\\.\\.)|(\\+=)|(\\-=)|(\\*=)|(%=)|(/=)|(&amp;=)|(\\|=)|(\\^=))&quot;);
-    var tripleDelimiters = new RegExp(&quot;^((\\.\\.\\.)|(//=)|(&gt;&gt;=)|(&lt;&lt;=)|(\\*\\*=))&quot;);
-    var identifiers = new RegExp(&quot;^[_A-Za-z$][_A-Za-z$0-9]*&quot;);
-    var properties = new RegExp(&quot;^(@|this\.)[_A-Za-z$][_A-Za-z$0-9]*&quot;);
</del><ins>+  var operators = /^(?:-&gt;|=&gt;|\+[+=]?|-[\-=]?|\*[\*=]?|\/[\/=]?|[=!]=|&lt;[&gt;&lt;]?=?|&gt;&gt;?=?|%=?|&amp;=?|\|=?|\^=?|\~|!|\?)/;
+  var delimiters = /^(?:[()\[\]{},:`=;]|\.\.?\.?)/;
+  var identifiers = /^[_A-Za-z$][_A-Za-z$0-9]*/;
+  var properties = /^(@|this\.)[_A-Za-z$][_A-Za-z$0-9]*/;
</ins><span class="cx"> 
</span><del>-    var wordOperators = wordRegexp(['and', 'or', 'not',
-                                    'is', 'isnt', 'in',
-                                    'instanceof', 'typeof']);
-    var indentKeywords = ['for', 'while', 'loop', 'if', 'unless', 'else',
-                          'switch', 'try', 'catch', 'finally', 'class'];
-    var commonKeywords = ['break', 'by', 'continue', 'debugger', 'delete',
-                          'do', 'in', 'of', 'new', 'return', 'then',
-                          'this', 'throw', 'when', 'until'];
</del><ins>+  var wordOperators = wordRegexp([&quot;and&quot;, &quot;or&quot;, &quot;not&quot;,
+                                  &quot;is&quot;, &quot;isnt&quot;, &quot;in&quot;,
+                                  &quot;instanceof&quot;, &quot;typeof&quot;]);
+  var indentKeywords = [&quot;for&quot;, &quot;while&quot;, &quot;loop&quot;, &quot;if&quot;, &quot;unless&quot;, &quot;else&quot;,
+                        &quot;switch&quot;, &quot;try&quot;, &quot;catch&quot;, &quot;finally&quot;, &quot;class&quot;];
+  var commonKeywords = [&quot;break&quot;, &quot;by&quot;, &quot;continue&quot;, &quot;debugger&quot;, &quot;delete&quot;,
+                        &quot;do&quot;, &quot;in&quot;, &quot;of&quot;, &quot;new&quot;, &quot;return&quot;, &quot;then&quot;,
+                        &quot;this&quot;, &quot;throw&quot;, &quot;when&quot;, &quot;until&quot;];
</ins><span class="cx"> 
</span><del>-    var keywords = wordRegexp(indentKeywords.concat(commonKeywords));
</del><ins>+  var keywords = wordRegexp(indentKeywords.concat(commonKeywords));
</ins><span class="cx"> 
</span><del>-    indentKeywords = wordRegexp(indentKeywords);
</del><ins>+  indentKeywords = wordRegexp(indentKeywords);
</ins><span class="cx"> 
</span><span class="cx"> 
</span><del>-    var stringPrefixes = new RegExp(&quot;^('{3}|\&quot;{3}|['\&quot;])&quot;);
-    var regexPrefixes = new RegExp(&quot;^(/{3}|/)&quot;);
-    var commonConstants = ['Infinity', 'NaN', 'undefined', 'null', 'true', 'false', 'on', 'off', 'yes', 'no'];
-    var constants = wordRegexp(commonConstants);
</del><ins>+  var stringPrefixes = /^('{3}|\&quot;{3}|['\&quot;])/;
+  var regexPrefixes = /^(\/{3}|\/)/;
+  var commonConstants = [&quot;Infinity&quot;, &quot;NaN&quot;, &quot;undefined&quot;, &quot;null&quot;, &quot;true&quot;, &quot;false&quot;, &quot;on&quot;, &quot;off&quot;, &quot;yes&quot;, &quot;no&quot;];
+  var constants = wordRegexp(commonConstants);
</ins><span class="cx"> 
</span><del>-    // Tokenizers
-    function tokenBase(stream, state) {
-        // Handle scope changes
-        if (stream.sol()) {
-            var scopeOffset = state.scopes[0].offset;
-            if (stream.eatSpace()) {
-                var lineOffset = stream.indentation();
-                if (lineOffset &gt; scopeOffset) {
-                    return 'indent';
-                } else if (lineOffset &lt; scopeOffset) {
-                    return 'dedent';
-                }
-                return null;
-            } else {
-                if (scopeOffset &gt; 0) {
-                    dedent(stream, state);
-                }
-            }
</del><ins>+  // Tokenizers
+  function tokenBase(stream, state) {
+    // Handle scope changes
+    if (stream.sol()) {
+      if (state.scope.align === null) state.scope.align = false;
+      var scopeOffset = state.scope.offset;
+      if (stream.eatSpace()) {
+        var lineOffset = stream.indentation();
+        if (lineOffset &gt; scopeOffset &amp;&amp; state.scope.type == &quot;coffee&quot;) {
+          return &quot;indent&quot;;
+        } else if (lineOffset &lt; scopeOffset) {
+          return &quot;dedent&quot;;
</ins><span class="cx">         }
</span><del>-        if (stream.eatSpace()) {
-            return null;
</del><ins>+        return null;
+      } else {
+        if (scopeOffset &gt; 0) {
+          dedent(stream, state);
</ins><span class="cx">         }
</span><ins>+      }
+    }
+    if (stream.eatSpace()) {
+      return null;
+    }
</ins><span class="cx"> 
</span><del>-        var ch = stream.peek();
</del><ins>+    var ch = stream.peek();
</ins><span class="cx"> 
</span><del>-        // Handle docco title comment (single line)
-        if (stream.match(&quot;####&quot;)) {
-            stream.skipToEnd();
-            return 'comment';
-        }
</del><ins>+    // Handle docco title comment (single line)
+    if (stream.match(&quot;####&quot;)) {
+      stream.skipToEnd();
+      return &quot;comment&quot;;
+    }
</ins><span class="cx"> 
</span><del>-        // Handle multi line comments
-        if (stream.match(&quot;###&quot;)) {
-            state.tokenize = longComment;
-            return state.tokenize(stream, state);
-        }
</del><ins>+    // Handle multi line comments
+    if (stream.match(&quot;###&quot;)) {
+      state.tokenize = longComment;
+      return state.tokenize(stream, state);
+    }
</ins><span class="cx"> 
</span><del>-        // Single line comment
-        if (ch === '#') {
-            stream.skipToEnd();
-            return 'comment';
-        }
</del><ins>+    // Single line comment
+    if (ch === &quot;#&quot;) {
+      stream.skipToEnd();
+      return &quot;comment&quot;;
+    }
</ins><span class="cx"> 
</span><del>-        // Handle number literals
-        if (stream.match(/^-?[0-9\.]/, false)) {
-            var floatLiteral = false;
-            // Floats
-            if (stream.match(/^-?\d*\.\d+(e[\+\-]?\d+)?/i)) {
-              floatLiteral = true;
-            }
-            if (stream.match(/^-?\d+\.\d*/)) {
-              floatLiteral = true;
-            }
-            if (stream.match(/^-?\.\d+/)) {
-              floatLiteral = true;
-            }
</del><ins>+    // Handle number literals
+    if (stream.match(/^-?[0-9\.]/, false)) {
+      var floatLiteral = false;
+      // Floats
+      if (stream.match(/^-?\d*\.\d+(e[\+\-]?\d+)?/i)) {
+        floatLiteral = true;
+      }
+      if (stream.match(/^-?\d+\.\d*/)) {
+        floatLiteral = true;
+      }
+      if (stream.match(/^-?\.\d+/)) {
+        floatLiteral = true;
+      }
</ins><span class="cx"> 
</span><del>-            if (floatLiteral) {
-                // prevent from getting extra . on 1..
-                if (stream.peek() == &quot;.&quot;){
-                    stream.backUp(1);
-                }
-                return 'number';
-            }
-            // Integers
-            var intLiteral = false;
-            // Hex
-            if (stream.match(/^-?0x[0-9a-f]+/i)) {
-              intLiteral = true;
-            }
-            // Decimal
-            if (stream.match(/^-?[1-9]\d*(e[\+\-]?\d+)?/)) {
-                intLiteral = true;
-            }
-            // Zero by itself with no other piece of number.
-            if (stream.match(/^-?0(?![\dx])/i)) {
-              intLiteral = true;
-            }
-            if (intLiteral) {
-                return 'number';
-            }
</del><ins>+      if (floatLiteral) {
+        // prevent from getting extra . on 1..
+        if (stream.peek() == &quot;.&quot;){
+          stream.backUp(1);
</ins><span class="cx">         }
</span><ins>+        return &quot;number&quot;;
+      }
+      // Integers
+      var intLiteral = false;
+      // Hex
+      if (stream.match(/^-?0x[0-9a-f]+/i)) {
+        intLiteral = true;
+      }
+      // Decimal
+      if (stream.match(/^-?[1-9]\d*(e[\+\-]?\d+)?/)) {
+        intLiteral = true;
+      }
+      // Zero by itself with no other piece of number.
+      if (stream.match(/^-?0(?![\dx])/i)) {
+        intLiteral = true;
+      }
+      if (intLiteral) {
+        return &quot;number&quot;;
+      }
+    }
</ins><span class="cx"> 
</span><del>-        // Handle strings
-        if (stream.match(stringPrefixes)) {
-            state.tokenize = tokenFactory(stream.current(), 'string');
-            return state.tokenize(stream, state);
-        }
-        // Handle regex literals
-        if (stream.match(regexPrefixes)) {
-            if (stream.current() != '/' || stream.match(/^.*\//, false)) { // prevent highlight of division
-                state.tokenize = tokenFactory(stream.current(), 'string-2');
-                return state.tokenize(stream, state);
-            } else {
-                stream.backUp(1);
-            }
-        }
</del><ins>+    // Handle strings
+    if (stream.match(stringPrefixes)) {
+      state.tokenize = tokenFactory(stream.current(), &quot;string&quot;);
+      return state.tokenize(stream, state);
+    }
+    // Handle regex literals
+    if (stream.match(regexPrefixes)) {
+      if (stream.current() != &quot;/&quot; || stream.match(/^.*\//, false)) { // prevent highlight of division
+        state.tokenize = tokenFactory(stream.current(), &quot;string-2&quot;);
+        return state.tokenize(stream, state);
+      } else {
+        stream.backUp(1);
+      }
+    }
</ins><span class="cx"> 
</span><del>-        // Handle operators and delimiters
-        if (stream.match(tripleDelimiters) || stream.match(doubleDelimiters)) {
-            return 'punctuation';
-        }
-        if (stream.match(doubleOperators)
-            || stream.match(singleOperators)
-            || stream.match(wordOperators)) {
-            return 'operator';
-        }
-        if (stream.match(singleDelimiters)) {
-            return 'punctuation';
-        }
</del><ins>+    // Handle operators and delimiters
+    if (stream.match(operators) || stream.match(wordOperators)) {
+      return &quot;operator&quot;;
+    }
+    if (stream.match(delimiters)) {
+      return &quot;punctuation&quot;;
+    }
</ins><span class="cx"> 
</span><del>-        if (stream.match(constants)) {
-            return 'atom';
-        }
</del><ins>+    if (stream.match(constants)) {
+      return &quot;atom&quot;;
+    }
</ins><span class="cx"> 
</span><del>-        if (stream.match(keywords)) {
-            return 'keyword';
-        }
-
-        if (stream.match(identifiers)) {
-            return 'variable';
-        }
-
-        if (stream.match(properties)) {
-            return 'property';
-        }
-
-        // Handle non-detected items
-        stream.next();
-        return ERRORCLASS;
</del><ins>+    if (stream.match(keywords)) {
+      return &quot;keyword&quot;;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    function tokenFactory(delimiter, outclass) {
-        var singleline = delimiter.length == 1;
-        return function(stream, state) {
-            while (!stream.eol()) {
-                stream.eatWhile(/[^'&quot;\/\\]/);
-                if (stream.eat('\\')) {
-                    stream.next();
-                    if (singleline &amp;&amp; stream.eol()) {
-                        return outclass;
-                    }
-                } else if (stream.match(delimiter)) {
-                    state.tokenize = tokenBase;
-                    return outclass;
-                } else {
-                    stream.eat(/['&quot;\/]/);
-                }
-            }
-            if (singleline) {
-                if (conf.mode.singleLineStringErrors) {
-                    outclass = ERRORCLASS;
-                } else {
-                    state.tokenize = tokenBase;
-                }
-            }
-            return outclass;
-        };
</del><ins>+    if (stream.match(identifiers)) {
+      return &quot;variable&quot;;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    function longComment(stream, state) {
-        while (!stream.eol()) {
-            stream.eatWhile(/[^#]/);
-            if (stream.match(&quot;###&quot;)) {
-                state.tokenize = tokenBase;
-                break;
-            }
-            stream.eatWhile(&quot;#&quot;);
-        }
-        return &quot;comment&quot;;
</del><ins>+    if (stream.match(properties)) {
+      return &quot;property&quot;;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    function indent(stream, state, type) {
-        type = type || 'coffee';
-        var indentUnit = 0;
-        if (type === 'coffee') {
-            for (var i = 0; i &lt; state.scopes.length; i++) {
-                if (state.scopes[i].type === 'coffee') {
-                    indentUnit = state.scopes[i].offset + conf.indentUnit;
-                    break;
-                }
-            }
</del><ins>+    // Handle non-detected items
+    stream.next();
+    return ERRORCLASS;
+  }
+
+  function tokenFactory(delimiter, outclass) {
+    var singleline = delimiter.length == 1;
+    return function(stream, state) {
+      while (!stream.eol()) {
+        stream.eatWhile(/[^'&quot;\/\\]/);
+        if (stream.eat(&quot;\\&quot;)) {
+          stream.next();
+          if (singleline &amp;&amp; stream.eol()) {
+            return outclass;
+          }
+        } else if (stream.match(delimiter)) {
+          state.tokenize = tokenBase;
+          return outclass;
</ins><span class="cx">         } else {
</span><del>-            indentUnit = stream.column() + stream.current().length;
</del><ins>+          stream.eat(/['&quot;\/]/);
</ins><span class="cx">         }
</span><del>-        state.scopes.unshift({
-            offset: indentUnit,
-            type: type
-        });
-    }
-
-    function dedent(stream, state) {
-        if (state.scopes.length == 1) return;
-        if (state.scopes[0].type === 'coffee') {
-            var _indent = stream.indentation();
-            var _indent_index = -1;
-            for (var i = 0; i &lt; state.scopes.length; ++i) {
-                if (_indent === state.scopes[i].offset) {
-                    _indent_index = i;
-                    break;
-                }
-            }
-            if (_indent_index === -1) {
-                return true;
-            }
-            while (state.scopes[0].offset !== _indent) {
-                state.scopes.shift();
-            }
-            return false;
</del><ins>+      }
+      if (singleline) {
+        if (conf.mode.singleLineStringErrors) {
+          outclass = ERRORCLASS;
</ins><span class="cx">         } else {
</span><del>-            state.scopes.shift();
-            return false;
</del><ins>+          state.tokenize = tokenBase;
</ins><span class="cx">         }
</span><ins>+      }
+      return outclass;
+    };
+  }
+
+  function longComment(stream, state) {
+    while (!stream.eol()) {
+      stream.eatWhile(/[^#]/);
+      if (stream.match(&quot;###&quot;)) {
+        state.tokenize = tokenBase;
+        break;
+      }
+      stream.eatWhile(&quot;#&quot;);
</ins><span class="cx">     }
</span><ins>+    return &quot;comment&quot;;
+  }
</ins><span class="cx"> 
</span><del>-    function tokenLexer(stream, state) {
-        var style = state.tokenize(stream, state);
-        var current = stream.current();
</del><ins>+  function indent(stream, state, type) {
+    type = type || &quot;coffee&quot;;
+    var offset = 0, align = false, alignOffset = null;
+    for (var scope = state.scope; scope; scope = scope.prev) {
+      if (scope.type === &quot;coffee&quot;) {
+        offset = scope.offset + conf.indentUnit;
+        break;
+      }
+    }
+    if (type !== &quot;coffee&quot;) {
+      align = null;
+      alignOffset = stream.column() + stream.current().length;
+    } else if (state.scope.align) {
+      state.scope.align = false;
+    }
+    state.scope = {
+      offset: offset,
+      type: type,
+      prev: state.scope,
+      align: align,
+      alignOffset: alignOffset
+    };
+  }
</ins><span class="cx"> 
</span><del>-        // Handle '.' connected identifiers
-        if (current === '.') {
-            style = state.tokenize(stream, state);
-            current = stream.current();
-            if (/^\.[\w$]+$/.test(current)) {
-                return 'variable';
-            } else {
-                return ERRORCLASS;
-            }
</del><ins>+  function dedent(stream, state) {
+    if (!state.scope.prev) return;
+    if (state.scope.type === &quot;coffee&quot;) {
+      var _indent = stream.indentation();
+      var matched = false;
+      for (var scope = state.scope; scope; scope = scope.prev) {
+        if (_indent === scope.offset) {
+          matched = true;
+          break;
</ins><span class="cx">         }
</span><ins>+      }
+      if (!matched) {
+        return true;
+      }
+      while (state.scope.prev &amp;&amp; state.scope.offset !== _indent) {
+        state.scope = state.scope.prev;
+      }
+      return false;
+    } else {
+      state.scope = state.scope.prev;
+      return false;
+    }
+  }
</ins><span class="cx"> 
</span><del>-        // Handle scope changes.
-        if (current === 'return') {
-            state.dedent += 1;
-        }
-        if (((current === '-&gt;' || current === '=&gt;') &amp;&amp;
-                  !state.lambda &amp;&amp;
-                  state.scopes[0].type == 'coffee' &amp;&amp;
-                  stream.peek() === '')
-               || style === 'indent') {
-            indent(stream, state);
-        }
-        var delimiter_index = '[({'.indexOf(current);
-        if (delimiter_index !== -1) {
-            indent(stream, state, '])}'.slice(delimiter_index, delimiter_index+1));
-        }
-        if (indentKeywords.exec(current)){
-            indent(stream, state);
-        }
-        if (current == 'then'){
-            dedent(stream, state);
-        }
</del><ins>+  function tokenLexer(stream, state) {
+    var style = state.tokenize(stream, state);
+    var current = stream.current();
</ins><span class="cx"> 
</span><ins>+    // Handle &quot;.&quot; connected identifiers
+    if (current === &quot;.&quot;) {
+      style = state.tokenize(stream, state);
+      current = stream.current();
+      if (/^\.[\w$]+$/.test(current)) {
+        return &quot;variable&quot;;
+      } else {
+        return ERRORCLASS;
+      }
+    }
</ins><span class="cx"> 
</span><del>-        if (style === 'dedent') {
-            if (dedent(stream, state)) {
-                return ERRORCLASS;
-            }
-        }
-        delimiter_index = '])}'.indexOf(current);
-        if (delimiter_index !== -1) {
-            if (dedent(stream, state)) {
-                return ERRORCLASS;
-            }
-        }
-        if (state.dedent &gt; 0 &amp;&amp; stream.eol() &amp;&amp; state.scopes[0].type == 'coffee') {
-            if (state.scopes.length &gt; 1) state.scopes.shift();
-            state.dedent -= 1;
-        }
</del><ins>+    // Handle scope changes.
+    if (current === &quot;return&quot;) {
+      state.dedent += 1;
+    }
+    if (((current === &quot;-&gt;&quot; || current === &quot;=&gt;&quot;) &amp;&amp;
+         !state.lambda &amp;&amp;
+         !stream.peek())
+        || style === &quot;indent&quot;) {
+      indent(stream, state);
+    }
+    var delimiter_index = &quot;[({&quot;.indexOf(current);
+    if (delimiter_index !== -1) {
+      indent(stream, state, &quot;])}&quot;.slice(delimiter_index, delimiter_index+1));
+    }
+    if (indentKeywords.exec(current)){
+      indent(stream, state);
+    }
+    if (current == &quot;then&quot;){
+      dedent(stream, state);
+    }
</ins><span class="cx"> 
</span><del>-        return style;
</del><ins>+
+    if (style === &quot;dedent&quot;) {
+      if (dedent(stream, state)) {
+        return ERRORCLASS;
+      }
</ins><span class="cx">     }
</span><ins>+    delimiter_index = &quot;])}&quot;.indexOf(current);
+    if (delimiter_index !== -1) {
+      while (state.scope.type == &quot;coffee&quot; &amp;&amp; state.scope.prev)
+        state.scope = state.scope.prev;
+      if (state.scope.type == current)
+        state.scope = state.scope.prev;
+    }
+    if (state.dedent &gt; 0 &amp;&amp; stream.eol() &amp;&amp; state.scope.type == &quot;coffee&quot;) {
+      if (state.scope.prev) state.scope = state.scope.prev;
+      state.dedent -= 1;
+    }
</ins><span class="cx"> 
</span><del>-    var external = {
-        startState: function(basecolumn) {
-            return {
-              tokenize: tokenBase,
-              scopes: [{offset:basecolumn || 0, type:'coffee'}],
-              lastToken: null,
-              lambda: false,
-              dedent: 0
-          };
-        },
</del><ins>+    return style;
+  }
</ins><span class="cx"> 
</span><del>-        token: function(stream, state) {
-            var style = tokenLexer(stream, state);
</del><ins>+  var external = {
+    startState: function(basecolumn) {
+      return {
+        tokenize: tokenBase,
+        scope: {offset:basecolumn || 0, type:&quot;coffee&quot;, prev: null, align: false},
+        lastToken: null,
+        lambda: false,
+        dedent: 0
+      };
+    },
</ins><span class="cx"> 
</span><del>-            state.lastToken = {style:style, content: stream.current()};
</del><ins>+    token: function(stream, state) {
+      var fillAlign = state.scope.align === null &amp;&amp; state.scope;
+      if (fillAlign &amp;&amp; stream.sol()) fillAlign.align = false;
</ins><span class="cx"> 
</span><del>-            if (stream.eol() &amp;&amp; stream.lambda) {
-                state.lambda = false;
-            }
</del><ins>+      var style = tokenLexer(stream, state);
+      if (fillAlign &amp;&amp; style &amp;&amp; style != &quot;comment&quot;) fillAlign.align = true;
</ins><span class="cx"> 
</span><del>-            return style;
-        },
</del><ins>+      state.lastToken = {style:style, content: stream.current()};
</ins><span class="cx"> 
</span><del>-        indent: function(state) {
-            if (state.tokenize != tokenBase) {
-                return 0;
-            }
</del><ins>+      if (stream.eol() &amp;&amp; stream.lambda) {
+        state.lambda = false;
+      }
</ins><span class="cx"> 
</span><del>-            return state.scopes[0].offset;
-        },
</del><ins>+      return style;
+    },
</ins><span class="cx"> 
</span><del>-        lineComment: &quot;#&quot;,
-        fold: &quot;indent&quot;
-    };
-    return external;
</del><ins>+    indent: function(state, text) {
+      if (state.tokenize != tokenBase) return 0;
+      var scope = state.scope;
+      var closer = text &amp;&amp; &quot;])}&quot;.indexOf(text.charAt(0)) &gt; -1;
+      if (closer) while (scope.type == &quot;coffee&quot; &amp;&amp; scope.prev) scope = scope.prev;
+      var closes = closer &amp;&amp; scope.type === text.charAt(0);
+      if (scope.align)
+        return scope.alignOffset - (closes ? 1 : 0);
+      else
+        return (closes ? scope.prev : scope).offset;
+    },
+
+    lineComment: &quot;#&quot;,
+    fold: &quot;indent&quot;
+  };
+  return external;
</ins><span class="cx"> });
</span><span class="cx"> 
</span><del>-CodeMirror.defineMIME('text/x-coffeescript', 'coffeescript');
</del><ins>+CodeMirror.defineMIME(&quot;text/x-coffeescript&quot;, &quot;coffeescript&quot;);
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebInspectorUIUserInterfaceExternalCodeMirrorcssjs"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/css.js (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/css.js        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/css.js        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -3,7 +3,7 @@
</span><span class="cx"> 
</span><span class="cx">   if (!parserConfig.propertyKeywords) parserConfig = CodeMirror.resolveMode(&quot;text/css&quot;);
</span><span class="cx"> 
</span><del>-  var indentUnit = config.indentUnit,
</del><ins>+  var indentUnit = config.indentUnit || config.tabSize || 2,
</ins><span class="cx">       hooks = parserConfig.hooks || {},
</span><span class="cx">       atMediaTypes = parserConfig.atMediaTypes || {},
</span><span class="cx">       atMediaFeatures = parserConfig.atMediaFeatures || {},
</span><span class="lines">@@ -37,7 +37,7 @@
</span><span class="cx">       stream.match(/^\s*\w*/);
</span><span class="cx">       return ret(&quot;keyword&quot;, &quot;important&quot;);
</span><span class="cx">     }
</span><del>-    else if (/\d/.test(ch)) {
</del><ins>+    else if (/\d/.test(ch) || ch == &quot;.&quot; &amp;&amp; stream.eat(/\d/)) {
</ins><span class="cx">       stream.eatWhile(/[\w.%]/);
</span><span class="cx">       return ret(&quot;number&quot;, &quot;unit&quot;);
</span><span class="cx">     }
</span><span class="lines">@@ -259,8 +259,13 @@
</span><span class="cx">       }
</span><span class="cx">       else if (type == &quot;}&quot;) {
</span><span class="cx">         if (context == &quot;interpolation&quot;) style = &quot;operator&quot;;
</span><del>-        state.stack.pop();
-        if (context == &quot;propertyValue&quot;) state.stack.pop();
</del><ins>+        // Pop off end of array until { is reached
+        while(state.stack.length){
+          var removed = state.stack.pop();
+          if(removed.indexOf(&quot;{&quot;) &gt; -1 || removed == &quot;block&quot; || removed == &quot;rule&quot;){
+            break;
+          }
+        }
</ins><span class="cx">       }
</span><span class="cx">       else if (type == &quot;interpolation&quot;) state.stack.push(&quot;interpolation&quot;);
</span><span class="cx">       else if (type == &quot;@media&quot;) state.stack.push(&quot;@media&quot;);
</span><span class="lines">@@ -278,11 +283,13 @@
</span><span class="cx">         else state.stack.push(&quot;(&quot;);
</span><span class="cx">       }
</span><span class="cx">       else if (type == &quot;)&quot;) {
</span><del>-        if (context == &quot;propertyValue&quot;) {
-          // In @mediaType( without closing ; after propertyValue
-          state.stack.pop();
</del><ins>+        // Pop off end of array until ( is reached
+        while(state.stack.length){
+          var removed = state.stack.pop();
+          if(removed.indexOf(&quot;(&quot;) &gt; -1){
+            break;
+          }
</ins><span class="cx">         }
</span><del>-        state.stack.pop();
</del><span class="cx">       }
</span><span class="cx">       else if (type == &quot;:&quot; &amp;&amp; state.lastToken == &quot;property&quot;) state.stack.push(&quot;propertyValue&quot;);
</span><span class="cx">       else if (context == &quot;propertyValue&quot; &amp;&amp; type == &quot;;&quot;) state.stack.pop();
</span><span class="lines">@@ -602,6 +609,11 @@
</span><span class="cx">         }
</span><span class="cx">         return [&quot;variable&quot;, &quot;variable&quot;];
</span><span class="cx">       },
</span><ins>+      &quot;,&quot;: function(stream, state) {
+        if (state.stack[state.stack.length - 1] == &quot;propertyValue&quot; &amp;&amp; stream.match(/^ *\$/, false)) {
+          return [&quot;operator&quot;, &quot;;&quot;];
+        }
+      },
</ins><span class="cx">       &quot;/&quot;: function(stream, state) {
</span><span class="cx">         if (stream.eat(&quot;/&quot;)) {
</span><span class="cx">           stream.skipToEnd();
</span></span></pre></div>
<a id="branchesjsCStackSourceWebInspectorUIUserInterfaceExternalCodeMirrorhtmlmixedjs"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/htmlmixed.js (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/htmlmixed.js        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/htmlmixed.js        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -44,7 +44,7 @@
</span><span class="cx">     if (close &gt; -1) stream.backUp(cur.length - close);
</span><span class="cx">     else if (m = cur.match(/&lt;\/?$/)) {
</span><span class="cx">       stream.backUp(cur.length);
</span><del>-      if (!stream.match(pat, false)) stream.match(cur[0]);
</del><ins>+      if (!stream.match(pat, false)) stream.match(cur);
</ins><span class="cx">     }
</span><span class="cx">     return style;
</span><span class="cx">   }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebInspectorUIUserInterfaceExternalCodeMirrorjavascriptjs"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/javascript.js (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/javascript.js        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/javascript.js        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -21,7 +21,8 @@
</span><span class="cx">       &quot;for&quot;: kw(&quot;for&quot;), &quot;switch&quot;: kw(&quot;switch&quot;), &quot;case&quot;: kw(&quot;case&quot;), &quot;default&quot;: kw(&quot;default&quot;),
</span><span class="cx">       &quot;in&quot;: operator, &quot;typeof&quot;: operator, &quot;instanceof&quot;: operator,
</span><span class="cx">       &quot;true&quot;: atom, &quot;false&quot;: atom, &quot;null&quot;: atom, &quot;undefined&quot;: atom, &quot;NaN&quot;: atom, &quot;Infinity&quot;: atom,
</span><del>-      &quot;this&quot;: kw(&quot;this&quot;)
</del><ins>+      &quot;this&quot;: kw(&quot;this&quot;), &quot;module&quot;: kw(&quot;module&quot;), &quot;class&quot;: kw(&quot;class&quot;), &quot;super&quot;: kw(&quot;atom&quot;),
+      &quot;yield&quot;: C, &quot;export&quot;: kw(&quot;export&quot;), &quot;import&quot;: kw(&quot;import&quot;), &quot;extends&quot;: C
</ins><span class="cx">     };
</span><span class="cx"> 
</span><span class="cx">     // Extend the 'normal' keywords with the TypeScript language extensions
</span><span class="lines">@@ -30,7 +31,6 @@
</span><span class="cx">       var tsKeywords = {
</span><span class="cx">         // object-like things
</span><span class="cx">         &quot;interface&quot;: kw(&quot;interface&quot;),
</span><del>-        &quot;class&quot;: kw(&quot;class&quot;),
</del><span class="cx">         &quot;extends&quot;: kw(&quot;extends&quot;),
</span><span class="cx">         &quot;constructor&quot;: kw(&quot;constructor&quot;),
</span><span class="cx"> 
</span><span class="lines">@@ -40,8 +40,6 @@
</span><span class="cx">         &quot;protected&quot;: kw(&quot;protected&quot;),
</span><span class="cx">         &quot;static&quot;: kw(&quot;static&quot;),
</span><span class="cx"> 
</span><del>-        &quot;super&quot;: kw(&quot;super&quot;),
-
</del><span class="cx">         // types
</span><span class="cx">         &quot;string&quot;: type, &quot;number&quot;: type, &quot;bool&quot;: type, &quot;any&quot;: type
</span><span class="cx">       };
</span><span class="lines">@@ -56,11 +54,6 @@
</span><span class="cx"> 
</span><span class="cx">   var isOperatorChar = /[+\-*&amp;%=&lt;&gt;!?|~^]/;
</span><span class="cx"> 
</span><del>-  function chain(stream, state, f) {
-    state.tokenize = f;
-    return f(stream, state);
-  }
-
</del><span class="cx">   function nextUntilUnescaped(stream, end) {
</span><span class="cx">     var escaped = false, next;
</span><span class="cx">     while ((next = stream.next()) != null) {
</span><span class="lines">@@ -78,50 +71,51 @@
</span><span class="cx">     type = tp; content = cont;
</span><span class="cx">     return style;
</span><span class="cx">   }
</span><del>-  function jsTokenBase(stream, state) {
</del><ins>+  function tokenBase(stream, state) {
</ins><span class="cx">     var ch = stream.next();
</span><del>-    if (ch == '&quot;' || ch == &quot;'&quot;)
-      return chain(stream, state, jsTokenString(ch));
-    else if (ch == &quot;.&quot; &amp;&amp; stream.match(/^\d+(?:[eE][+\-]?\d+)?/))
</del><ins>+    if (ch == '&quot;' || ch == &quot;'&quot;) {
+      state.tokenize = tokenString(ch);
+      return state.tokenize(stream, state);
+    } else if (ch == &quot;.&quot; &amp;&amp; stream.match(/^\d+(?:[eE][+\-]?\d+)?/)) {
</ins><span class="cx">       return ret(&quot;number&quot;, &quot;number&quot;);
</span><del>-    else if (/[\[\]{}\(\),;\:\.]/.test(ch))
</del><ins>+    } else if (ch == &quot;.&quot; &amp;&amp; stream.match(&quot;..&quot;)) {
+      return ret(&quot;spread&quot;, &quot;meta&quot;);
+    } else if (/[\[\]{}\(\),;\:\.]/.test(ch)) {
</ins><span class="cx">       return ret(ch);
</span><del>-    else if (ch == &quot;0&quot; &amp;&amp; stream.eat(/x/i)) {
</del><ins>+    } else if (ch == &quot;=&quot; &amp;&amp; stream.eat(&quot;&gt;&quot;)) {
+      return ret(&quot;=&gt;&quot;);
+    } else if (ch == &quot;0&quot; &amp;&amp; stream.eat(/x/i)) {
</ins><span class="cx">       stream.eatWhile(/[\da-f]/i);
</span><span class="cx">       return ret(&quot;number&quot;, &quot;number&quot;);
</span><del>-    }
-    else if (/\d/.test(ch)) {
</del><ins>+    } else if (/\d/.test(ch)) {
</ins><span class="cx">       stream.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/);
</span><span class="cx">       return ret(&quot;number&quot;, &quot;number&quot;);
</span><del>-    }
-    else if (ch == &quot;/&quot;) {
</del><ins>+    } else if (ch == &quot;/&quot;) {
</ins><span class="cx">       if (stream.eat(&quot;*&quot;)) {
</span><del>-        return chain(stream, state, jsTokenComment);
-      }
-      else if (stream.eat(&quot;/&quot;)) {
</del><ins>+        state.tokenize = tokenComment;
+        return tokenComment(stream, state);
+      } else if (stream.eat(&quot;/&quot;)) {
</ins><span class="cx">         stream.skipToEnd();
</span><span class="cx">         return ret(&quot;comment&quot;, &quot;comment&quot;);
</span><del>-      }
-      else if (state.lastType == &quot;operator&quot; || state.lastType == &quot;keyword c&quot; ||
-               /^[\[{}\(,;:]$/.test(state.lastType)) {
</del><ins>+      } else if (state.lastType == &quot;operator&quot; || state.lastType == &quot;keyword c&quot; ||
+               state.lastType == &quot;sof&quot; || /^[\[{}\(,;:]$/.test(state.lastType)) {
</ins><span class="cx">         nextUntilUnescaped(stream, &quot;/&quot;);
</span><span class="cx">         stream.eatWhile(/[gimy]/); // 'y' is &quot;sticky&quot; option in Mozilla
</span><span class="cx">         return ret(&quot;regexp&quot;, &quot;string-2&quot;);
</span><del>-      }
-      else {
</del><ins>+      } else {
</ins><span class="cx">         stream.eatWhile(isOperatorChar);
</span><span class="cx">         return ret(&quot;operator&quot;, null, stream.current());
</span><span class="cx">       }
</span><del>-    }
-    else if (ch == &quot;#&quot;) {
</del><ins>+    } else if (ch == &quot;`&quot;) {
+      state.tokenize = tokenQuasi;
+      return tokenQuasi(stream, state);
+    } else if (ch == &quot;#&quot;) {
</ins><span class="cx">       stream.skipToEnd();
</span><span class="cx">       return ret(&quot;error&quot;, &quot;error&quot;);
</span><del>-    }
-    else if (isOperatorChar.test(ch)) {
</del><ins>+    } else if (isOperatorChar.test(ch)) {
</ins><span class="cx">       stream.eatWhile(isOperatorChar);
</span><span class="cx">       return ret(&quot;operator&quot;, null, stream.current());
</span><del>-    }
-    else {
</del><ins>+    } else {
</ins><span class="cx">       stream.eatWhile(/[\w\$_]/);
</span><span class="cx">       var word = stream.current(), known = keywords.propertyIsEnumerable(word) &amp;&amp; keywords[word];
</span><span class="cx">       return (known &amp;&amp; state.lastType != &quot;.&quot;) ? ret(known.type, known.style, word) :
</span><span class="lines">@@ -129,19 +123,19 @@
</span><span class="cx">     }
</span><span class="cx">   }
</span><span class="cx"> 
</span><del>-  function jsTokenString(quote) {
</del><ins>+  function tokenString(quote) {
</ins><span class="cx">     return function(stream, state) {
</span><span class="cx">       if (!nextUntilUnescaped(stream, quote))
</span><del>-        state.tokenize = jsTokenBase;
</del><ins>+        state.tokenize = tokenBase;
</ins><span class="cx">       return ret(&quot;string&quot;, &quot;string&quot;);
</span><span class="cx">     };
</span><span class="cx">   }
</span><span class="cx"> 
</span><del>-  function jsTokenComment(stream, state) {
</del><ins>+  function tokenComment(stream, state) {
</ins><span class="cx">     var maybeEnd = false, ch;
</span><span class="cx">     while (ch = stream.next()) {
</span><span class="cx">       if (ch == &quot;/&quot; &amp;&amp; maybeEnd) {
</span><del>-        state.tokenize = jsTokenBase;
</del><ins>+        state.tokenize = tokenBase;
</ins><span class="cx">         break;
</span><span class="cx">       }
</span><span class="cx">       maybeEnd = (ch == &quot;*&quot;);
</span><span class="lines">@@ -149,6 +143,50 @@
</span><span class="cx">     return ret(&quot;comment&quot;, &quot;comment&quot;);
</span><span class="cx">   }
</span><span class="cx"> 
</span><ins>+  function tokenQuasi(stream, state) {
+    var escaped = false, next;
+    while ((next = stream.next()) != null) {
+      if (!escaped &amp;&amp; (next == &quot;`&quot; || next == &quot;$&quot; &amp;&amp; stream.eat(&quot;{&quot;))) {
+        state.tokenize = tokenBase;
+        break;
+      }
+      escaped = !escaped &amp;&amp; next == &quot;\\&quot;;
+    }
+    return ret(&quot;quasi&quot;, &quot;string-2&quot;, stream.current());
+  }
+
+  var brackets = &quot;([{}])&quot;;
+  // This is a crude lookahead trick to try and notice that we're
+  // parsing the argument patterns for a fat-arrow function before we
+  // actually hit the arrow token. It only works if the arrow is on
+  // the same line as the arguments and there's no strange noise
+  // (comments) in between. Fallback is to only notice when we hit the
+  // arrow, and not declare the arguments as locals for the arrow
+  // body.
+  function findFatArrow(stream, state) {
+    if (state.fatArrowAt) state.fatArrowAt = null;
+    var arrow = stream.string.indexOf(&quot;=&gt;&quot;, stream.start);
+    if (arrow &lt; 0) return;
+
+    var depth = 0, sawSomething = false;
+    for (var pos = arrow - 1; pos &gt;= 0; --pos) {
+      var ch = stream.string.charAt(pos);
+      var bracket = brackets.indexOf(ch);
+      if (bracket &gt;= 0 &amp;&amp; bracket &lt; 3) {
+        if (!depth) { ++pos; break; }
+        if (--depth == 0) break;
+      } else if (bracket &gt;= 3 &amp;&amp; bracket &lt; 6) {
+        ++depth;
+      } else if (/[$\w]/.test(ch)) {
+        sawSomething = true;
+      } else if (sawSomething &amp;&amp; !depth) {
+        ++pos;
+        break;
+      }
+    }
+    if (sawSomething &amp;&amp; !depth) state.fatArrowAt = pos;
+  }
+
</ins><span class="cx">   // Parser
</span><span class="cx"> 
</span><span class="cx">   var atomicTypes = {&quot;atom&quot;: true, &quot;number&quot;: true, &quot;variable&quot;: true, &quot;string&quot;: true, &quot;regexp&quot;: true, &quot;this&quot;: true};
</span><span class="lines">@@ -165,6 +203,10 @@
</span><span class="cx">   function inScope(state, varname) {
</span><span class="cx">     for (var v = state.localVars; v; v = v.next)
</span><span class="cx">       if (v.name == varname) return true;
</span><ins>+    for (var cx = state.context; cx; cx = cx.prev) {
+      for (var v = cx.vars; v; v = v.next)
+        if (v.name == varname) return true;
+    }
</ins><span class="cx">   }
</span><span class="cx"> 
</span><span class="cx">   function parseJS(state, style, type, content, stream) {
</span><span class="lines">@@ -211,7 +253,8 @@
</span><span class="cx">       state.localVars = {name: varname, next: state.localVars};
</span><span class="cx">     } else {
</span><span class="cx">       if (inList(state.globalVars)) return;
</span><del>-      state.globalVars = {name: varname, next: state.globalVars};
</del><ins>+      if (parserConfig.globalVars)
+        state.globalVars = {name: varname, next: state.globalVars};
</ins><span class="cx">     }
</span><span class="cx">   }
</span><span class="cx"> 
</span><span class="lines">@@ -253,16 +296,15 @@
</span><span class="cx">     };
</span><span class="cx">   }
</span><span class="cx"> 
</span><del>-  function statement(type) {
-    if (type == &quot;var&quot;) return cont(pushlex(&quot;vardef&quot;), vardef1, expect(&quot;;&quot;), poplex);
</del><ins>+  function statement(type, value) {
+    if (type == &quot;var&quot;) return cont(pushlex(&quot;vardef&quot;, value.length), vardef, expect(&quot;;&quot;), poplex);
</ins><span class="cx">     if (type == &quot;keyword a&quot;) return cont(pushlex(&quot;form&quot;), expression, statement, poplex);
</span><span class="cx">     if (type == &quot;keyword b&quot;) return cont(pushlex(&quot;form&quot;), statement, poplex);
</span><span class="cx">     if (type == &quot;{&quot;) return cont(pushlex(&quot;}&quot;), block, poplex);
</span><span class="cx">     if (type == &quot;;&quot;) return cont();
</span><span class="cx">     if (type == &quot;if&quot;) return cont(pushlex(&quot;form&quot;), expression, statement, poplex, maybeelse);
</span><span class="cx">     if (type == &quot;function&quot;) return cont(functiondef);
</span><del>-    if (type == &quot;for&quot;) return cont(pushlex(&quot;form&quot;), expect(&quot;(&quot;), pushlex(&quot;)&quot;), forspec1, expect(&quot;)&quot;),
-                                   poplex, statement, poplex);
</del><ins>+    if (type == &quot;for&quot;) return cont(pushlex(&quot;form&quot;), forspec, poplex, statement, poplex);
</ins><span class="cx">     if (type == &quot;variable&quot;) return cont(pushlex(&quot;stat&quot;), maybelabel);
</span><span class="cx">     if (type == &quot;switch&quot;) return cont(pushlex(&quot;form&quot;), expression, pushlex(&quot;}&quot;, &quot;switch&quot;), expect(&quot;{&quot;),
</span><span class="cx">                                       block, poplex, poplex);
</span><span class="lines">@@ -270,6 +312,10 @@
</span><span class="cx">     if (type == &quot;default&quot;) return cont(expect(&quot;:&quot;));
</span><span class="cx">     if (type == &quot;catch&quot;) return cont(pushlex(&quot;form&quot;), pushcontext, expect(&quot;(&quot;), funarg, expect(&quot;)&quot;),
</span><span class="cx">                                      statement, poplex, popcontext);
</span><ins>+    if (type == &quot;module&quot;) return cont(pushlex(&quot;form&quot;), pushcontext, afterModule, popcontext, poplex);
+    if (type == &quot;class&quot;) return cont(pushlex(&quot;form&quot;), className, objlit, poplex);
+    if (type == &quot;export&quot;) return cont(pushlex(&quot;form&quot;), afterExport, poplex);
+    if (type == &quot;import&quot;) return cont(pushlex(&quot;form&quot;), afterImport, poplex);
</ins><span class="cx">     return pass(pushlex(&quot;stat&quot;), expression, expect(&quot;;&quot;), poplex);
</span><span class="cx">   }
</span><span class="cx">   function expression(type) {
</span><span class="lines">@@ -279,14 +325,20 @@
</span><span class="cx">     return expressionInner(type, true);
</span><span class="cx">   }
</span><span class="cx">   function expressionInner(type, noComma) {
</span><ins>+    if (cx.state.fatArrowAt == cx.stream.start) {
+      var body = noComma ? arrowBodyNoComma : arrowBody;
+      if (type == &quot;(&quot;) return cont(pushcontext, commasep(pattern, &quot;)&quot;), expect(&quot;=&gt;&quot;), body, popcontext);
+      else if (type == &quot;variable&quot;) return pass(pushcontext, pattern, expect(&quot;=&gt;&quot;), body, popcontext);
+    }
+
</ins><span class="cx">     var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma;
</span><span class="cx">     if (atomicTypes.hasOwnProperty(type)) return cont(maybeop);
</span><span class="cx">     if (type == &quot;function&quot;) return cont(functiondef);
</span><span class="cx">     if (type == &quot;keyword c&quot;) return cont(noComma ? maybeexpressionNoComma : maybeexpression);
</span><del>-    if (type == &quot;(&quot;) return cont(pushlex(&quot;)&quot;), maybeexpression, expect(&quot;)&quot;), poplex, maybeop);
-    if (type == &quot;operator&quot;) return cont(noComma ? expressionNoComma : expression);
-    if (type == &quot;[&quot;) return cont(pushlex(&quot;]&quot;), commasep(expressionNoComma, &quot;]&quot;), poplex, maybeop);
-    if (type == &quot;{&quot;) return cont(pushlex(&quot;}&quot;), commasep(objprop, &quot;}&quot;), poplex, maybeop);
</del><ins>+    if (type == &quot;(&quot;) return cont(pushlex(&quot;)&quot;), maybeexpression, comprehension, expect(&quot;)&quot;), poplex, maybeop);
+    if (type == &quot;operator&quot; || type == &quot;spread&quot;) return cont(noComma ? expressionNoComma : expression);
+    if (type == &quot;[&quot;) return cont(pushlex(&quot;]&quot;), expressionNoComma, maybeArrayComprehension, poplex, maybeop);
+    if (type == &quot;{&quot;) return cont(commasep(objprop, &quot;}&quot;), maybeop);
</ins><span class="cx">     return cont();
</span><span class="cx">   }
</span><span class="cx">   function maybeexpression(type) {
</span><span class="lines">@@ -305,16 +357,40 @@
</span><span class="cx">   function maybeoperatorNoComma(type, value, noComma) {
</span><span class="cx">     var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma;
</span><span class="cx">     var expr = noComma == false ? expression : expressionNoComma;
</span><ins>+    if (value == &quot;=&gt;&quot;) return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext);
</ins><span class="cx">     if (type == &quot;operator&quot;) {
</span><span class="cx">       if (/\+\+|--/.test(value)) return cont(me);
</span><span class="cx">       if (value == &quot;?&quot;) return cont(expression, expect(&quot;:&quot;), expr);
</span><span class="cx">       return cont(expr);
</span><span class="cx">     }
</span><ins>+    if (type == &quot;quasi&quot;) { cx.cc.push(me); return quasi(value); }
</ins><span class="cx">     if (type == &quot;;&quot;) return;
</span><del>-    if (type == &quot;(&quot;) return cont(pushlex(&quot;)&quot;, &quot;call&quot;), commasep(expressionNoComma, &quot;)&quot;), poplex, me);
</del><ins>+    if (type == &quot;(&quot;) return cont(commasep(expressionNoComma, &quot;)&quot;, &quot;call&quot;), me);
</ins><span class="cx">     if (type == &quot;.&quot;) return cont(property, me);
</span><span class="cx">     if (type == &quot;[&quot;) return cont(pushlex(&quot;]&quot;), maybeexpression, expect(&quot;]&quot;), poplex, me);
</span><span class="cx">   }
</span><ins>+  function quasi(value) {
+    if (!value) debugger;
+    if (value.slice(value.length - 2) != &quot;${&quot;) return cont();
+    return cont(expression, continueQuasi);
+  }
+  function continueQuasi(type) {
+    if (type == &quot;}&quot;) {
+      cx.marked = &quot;string-2&quot;;
+      cx.state.tokenize = tokenQuasi;
+      return cont();
+    }
+  }
+  function arrowBody(type) {
+    findFatArrow(cx.stream, cx.state);
+    if (type == &quot;{&quot;) return pass(statement);
+    return pass(expression);
+  }
+  function arrowBodyNoComma(type) {
+    findFatArrow(cx.stream, cx.state);
+    if (type == &quot;{&quot;) return pass(statement);
+    return pass(expressionNoComma);
+  }
</ins><span class="cx">   function maybelabel(type) {
</span><span class="cx">     if (type == &quot;:&quot;) return cont(poplex, statement);
</span><span class="cx">     return pass(maybeoperatorComma, expect(&quot;;&quot;), poplex);
</span><span class="lines">@@ -328,16 +404,21 @@
</span><span class="cx">       if (value == &quot;get&quot; || value == &quot;set&quot;) return cont(getterSetter);
</span><span class="cx">     } else if (type == &quot;number&quot; || type == &quot;string&quot;) {
</span><span class="cx">       cx.marked = type + &quot; property&quot;;
</span><ins>+    } else if (type == &quot;[&quot;) {
+      return cont(expression, expect(&quot;]&quot;), afterprop);
</ins><span class="cx">     }
</span><del>-    if (atomicTypes.hasOwnProperty(type)) return cont(expect(&quot;:&quot;), expressionNoComma);
</del><ins>+    if (atomicTypes.hasOwnProperty(type)) return cont(afterprop);
</ins><span class="cx">   }
</span><span class="cx">   function getterSetter(type) {
</span><del>-    if (type == &quot;:&quot;) return cont(expression);
-    if (type != &quot;variable&quot;) return cont(expect(&quot;:&quot;), expression);
</del><ins>+    if (type != &quot;variable&quot;) return pass(afterprop);
</ins><span class="cx">     cx.marked = &quot;property&quot;;
</span><span class="cx">     return cont(functiondef);
</span><span class="cx">   }
</span><del>-  function commasep(what, end) {
</del><ins>+  function afterprop(type) {
+    if (type == &quot;:&quot;) return cont(expressionNoComma);
+    if (type == &quot;(&quot;) return pass(functiondef);
+  }
+  function commasep(what, end, info) {
</ins><span class="cx">     function proceed(type) {
</span><span class="cx">       if (type == &quot;,&quot;) {
</span><span class="cx">         var lex = cx.state.lexical;
</span><span class="lines">@@ -349,7 +430,8 @@
</span><span class="cx">     }
</span><span class="cx">     return function(type) {
</span><span class="cx">       if (type == end) return cont();
</span><del>-      else return pass(what, proceed);
</del><ins>+      if (info === false) return pass(what, proceed);
+      return pass(pushlex(end, info), what, proceed, poplex);
</ins><span class="cx">     };
</span><span class="cx">   }
</span><span class="cx">   function block(type) {
</span><span class="lines">@@ -357,67 +439,121 @@
</span><span class="cx">     return pass(statement, block);
</span><span class="cx">   }
</span><span class="cx">   function maybetype(type) {
</span><del>-    if (type == &quot;:&quot;) return cont(typedef);
-    return pass();
</del><ins>+    if (isTS &amp;&amp; type == &quot;:&quot;) return cont(typedef);
</ins><span class="cx">   }
</span><span class="cx">   function typedef(type) {
</span><span class="cx">     if (type == &quot;variable&quot;){cx.marked = &quot;variable-3&quot;; return cont();}
</span><del>-    return pass();
</del><span class="cx">   }
</span><del>-  function vardef1(type, value) {
-    if (type == &quot;variable&quot;) {
</del><ins>+  function vardef() {
+    return pass(pattern, maybetype, maybeAssign, vardefCont);
+  }
+  function pattern(type, value) {
+    if (type == &quot;variable&quot;) { register(value); return cont(); }
+    if (type == &quot;[&quot;) return cont(commasep(pattern, &quot;]&quot;));
+    if (type == &quot;{&quot;) return cont(commasep(proppattern, &quot;}&quot;));
+  }
+  function proppattern(type, value) {
+    if (type == &quot;variable&quot; &amp;&amp; !cx.stream.match(/^\s*:/, false)) {
</ins><span class="cx">       register(value);
</span><del>-      return isTS ? cont(maybetype, vardef2) : cont(vardef2);
</del><ins>+      return cont(maybeAssign);
</ins><span class="cx">     }
</span><del>-    return pass();
</del><ins>+    if (type == &quot;variable&quot;) cx.marked = &quot;property&quot;;
+    return cont(expect(&quot;:&quot;), pattern, maybeAssign);
</ins><span class="cx">   }
</span><del>-  function vardef2(type, value) {
-    if (value == &quot;=&quot;) return cont(expressionNoComma, vardef2);
-    if (type == &quot;,&quot;) return cont(vardef1);
</del><ins>+  function maybeAssign(_type, value) {
+    if (value == &quot;=&quot;) return cont(expressionNoComma);
</ins><span class="cx">   }
</span><ins>+  function vardefCont(type) {
+    if (type == &quot;,&quot;) return cont(vardef);
+  }
</ins><span class="cx">   function maybeelse(type, value) {
</span><span class="cx">     if (type == &quot;keyword b&quot; &amp;&amp; value == &quot;else&quot;) return cont(pushlex(&quot;form&quot;), statement, poplex);
</span><span class="cx">   }
</span><ins>+  function forspec(type) {
+    if (type == &quot;(&quot;) return cont(pushlex(&quot;)&quot;), forspec1, expect(&quot;)&quot;));
+  }
</ins><span class="cx">   function forspec1(type) {
</span><del>-    if (type == &quot;var&quot;) return cont(vardef1, expect(&quot;;&quot;), forspec2);
</del><ins>+    if (type == &quot;var&quot;) return cont(vardef, expect(&quot;;&quot;), forspec2);
</ins><span class="cx">     if (type == &quot;;&quot;) return cont(forspec2);
</span><del>-    if (type == &quot;variable&quot;) return cont(formaybein);
</del><ins>+    if (type == &quot;variable&quot;) return cont(formaybeinof);
</ins><span class="cx">     return pass(expression, expect(&quot;;&quot;), forspec2);
</span><span class="cx">   }
</span><del>-  function formaybein(_type, value) {
-    if (value == &quot;in&quot;) return cont(expression);
</del><ins>+  function formaybeinof(_type, value) {
+    if (value == &quot;in&quot; || value == &quot;of&quot;) { cx.marked = &quot;keyword&quot;; return cont(expression); }
</ins><span class="cx">     return cont(maybeoperatorComma, forspec2);
</span><span class="cx">   }
</span><span class="cx">   function forspec2(type, value) {
</span><span class="cx">     if (type == &quot;;&quot;) return cont(forspec3);
</span><del>-    if (value == &quot;in&quot;) return cont(expression);
</del><ins>+    if (value == &quot;in&quot; || value == &quot;of&quot;) { cx.marked = &quot;keyword&quot;; return cont(expression); }
</ins><span class="cx">     return pass(expression, expect(&quot;;&quot;), forspec3);
</span><span class="cx">   }
</span><span class="cx">   function forspec3(type) {
</span><span class="cx">     if (type != &quot;)&quot;) cont(expression);
</span><span class="cx">   }
</span><span class="cx">   function functiondef(type, value) {
</span><ins>+    if (value == &quot;*&quot;) {cx.marked = &quot;keyword&quot;; return cont(functiondef);}
</ins><span class="cx">     if (type == &quot;variable&quot;) {register(value); return cont(functiondef);}
</span><del>-    if (type == &quot;(&quot;) return cont(pushlex(&quot;)&quot;), pushcontext, commasep(funarg, &quot;)&quot;), poplex, statement, popcontext);
</del><ins>+    if (type == &quot;(&quot;) return cont(pushcontext, commasep(funarg, &quot;)&quot;), statement, popcontext);
</ins><span class="cx">   }
</span><del>-  function funarg(type, value) {
-    if (type == &quot;variable&quot;) {register(value); return isTS ? cont(maybetype) : cont();}
</del><ins>+  function funarg(type) {
+    if (type == &quot;spread&quot;) return cont(funarg);
+    return pass(pattern, maybetype);
</ins><span class="cx">   }
</span><ins>+  function className(type, value) {
+    if (type == &quot;variable&quot;) {register(value); return cont(classNameAfter);}
+  }
+  function classNameAfter(_type, value) {
+    if (value == &quot;extends&quot;) return cont(expression);
+  }
+  function objlit(type) {
+    if (type == &quot;{&quot;) return cont(commasep(objprop, &quot;}&quot;));
+  }
+  function afterModule(type, value) {
+    if (type == &quot;string&quot;) return cont(statement);
+    if (type == &quot;variable&quot;) { register(value); return cont(maybeFrom); }
+  }
+  function afterExport(_type, value) {
+    if (value == &quot;*&quot;) { cx.marked = &quot;keyword&quot;; return cont(maybeFrom, expect(&quot;;&quot;)); }
+    if (value == &quot;default&quot;) { cx.marked = &quot;keyword&quot;; return cont(expression, expect(&quot;;&quot;)); }
+    return pass(statement);
+  }
+  function afterImport(type) {
+    if (type == &quot;string&quot;) return cont();
+    return pass(importSpec, maybeFrom);
+  }
+  function importSpec(type, value) {
+    if (type == &quot;{&quot;) return cont(commasep(importSpec, &quot;}&quot;));
+    if (type == &quot;variable&quot;) register(value);
+    return cont();
+  }
+  function maybeFrom(_type, value) {
+    if (value == &quot;from&quot;) { cx.marked = &quot;keyword&quot;; return cont(expression); }
+  }
+  function maybeArrayComprehension(type) {
+    if (type == &quot;for&quot;) return pass(comprehension);
+    if (type == &quot;,&quot;) return cont(commasep(expressionNoComma, &quot;]&quot;, false));
+    return pass(commasep(expressionNoComma, &quot;]&quot;, false));
+  }
+  function comprehension(type) {
+    if (type == &quot;for&quot;) return cont(forspec, comprehension);
+    if (type == &quot;if&quot;) return cont(expression, comprehension);
+  }
</ins><span class="cx"> 
</span><span class="cx">   // Interface
</span><span class="cx"> 
</span><span class="cx">   return {
</span><span class="cx">     startState: function(basecolumn) {
</span><del>-      return {
-        tokenize: jsTokenBase,
-        lastType: null,
</del><ins>+      var state = {
+        tokenize: tokenBase,
+        lastType: &quot;sof&quot;,
</ins><span class="cx">         cc: [],
</span><span class="cx">         lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, &quot;block&quot;, false),
</span><span class="cx">         localVars: parserConfig.localVars,
</span><del>-        globalVars: parserConfig.globalVars,
</del><span class="cx">         context: parserConfig.localVars &amp;&amp; {vars: parserConfig.localVars},
</span><span class="cx">         indented: 0
</span><span class="cx">       };
</span><ins>+      if (parserConfig.globalVars) state.globalVars = parserConfig.globalVars;
+      return state;
</ins><span class="cx">     },
</span><span class="cx"> 
</span><span class="cx">     token: function(stream, state) {
</span><span class="lines">@@ -425,8 +561,9 @@
</span><span class="cx">         if (!state.lexical.hasOwnProperty(&quot;align&quot;))
</span><span class="cx">           state.lexical.align = false;
</span><span class="cx">         state.indented = stream.indentation();
</span><ins>+        findFatArrow(stream, state);
</ins><span class="cx">       }
</span><del>-      if (state.tokenize != jsTokenComment &amp;&amp; stream.eatSpace()) return null;
</del><ins>+      if (state.tokenize != tokenComment &amp;&amp; stream.eatSpace()) return null;
</ins><span class="cx">       var style = state.tokenize(stream, state);
</span><span class="cx">       if (type == &quot;comment&quot;) return style;
</span><span class="cx">       state.lastType = type == &quot;operator&quot; &amp;&amp; (content == &quot;++&quot; || content == &quot;--&quot;) ? &quot;incdec&quot; : type;
</span><span class="lines">@@ -434,21 +571,21 @@
</span><span class="cx">     },
</span><span class="cx"> 
</span><span class="cx">     indent: function(state, textAfter) {
</span><del>-      if (state.tokenize == jsTokenComment) return CodeMirror.Pass;
-      if (state.tokenize != jsTokenBase) return 0;
</del><ins>+      if (state.tokenize == tokenComment) return CodeMirror.Pass;
+      if (state.tokenize != tokenBase) return 0;
</ins><span class="cx">       var firstChar = textAfter &amp;&amp; textAfter.charAt(0), lexical = state.lexical;
</span><span class="cx">       // Kludge to prevent 'maybelse' from blocking lexical scope pops
</span><span class="cx">       for (var i = state.cc.length - 1; i &gt;= 0; --i) {
</span><span class="cx">         var c = state.cc[i];
</span><span class="cx">         if (c == poplex) lexical = lexical.prev;
</span><del>-        else if (c != maybeelse || /^else\b/.test(textAfter)) break;
</del><ins>+        else if (c != maybeelse) break;
</ins><span class="cx">       }
</span><span class="cx">       if (lexical.type == &quot;stat&quot; &amp;&amp; firstChar == &quot;}&quot;) lexical = lexical.prev;
</span><span class="cx">       if (statementIndent &amp;&amp; lexical.type == &quot;)&quot; &amp;&amp; lexical.prev.type == &quot;stat&quot;)
</span><span class="cx">         lexical = lexical.prev;
</span><span class="cx">       var type = lexical.type, closing = firstChar == type;
</span><span class="cx"> 
</span><del>-      if (type == &quot;vardef&quot;) return lexical.indented + (state.lastType == &quot;operator&quot; || state.lastType == &quot;,&quot; ? 4 : 0);
</del><ins>+      if (type == &quot;vardef&quot;) return lexical.indented + (state.lastType == &quot;operator&quot; || state.lastType == &quot;,&quot; ? lexical.info + 1 : 0);
</ins><span class="cx">       else if (type == &quot;form&quot; &amp;&amp; firstChar == &quot;{&quot;) return lexical.indented;
</span><span class="cx">       else if (type == &quot;form&quot;) return lexical.indented + indentUnit;
</span><span class="cx">       else if (type == &quot;stat&quot;)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebInspectorUIUserInterfaceExternalCodeMirrorlessjs"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/less.js (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/less.js        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/less.js        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -32,9 +32,9 @@
</span><span class="cx">         return tokenSComment(stream, state);
</span><span class="cx">       } else {
</span><span class="cx">         if(type == &quot;string&quot; || type == &quot;(&quot;) return ret(&quot;string&quot;, &quot;string&quot;);
</span><del>-        if(state.stack[state.stack.length-1] != undefined) return ret(null, ch);
</del><ins>+        if(state.stack[state.stack.length-1] !== undefined) return ret(null, ch);
</ins><span class="cx">         stream.eatWhile(/[\a-zA-Z0-9\-_.\s]/);
</span><del>-        if( /\/|\)|#/.test(stream.peek() || (stream.eatSpace() &amp;&amp; stream.peek() == &quot;)&quot;))  || stream.eol() )return ret(&quot;string&quot;, &quot;string&quot;); // let url(/images/logo.png) without quotes return as string
</del><ins>+        if( /\/|\)|#/.test(stream.peek() || (stream.eatSpace() &amp;&amp; stream.peek() === &quot;)&quot;))  || stream.eol() )return ret(&quot;string&quot;, &quot;string&quot;); // let url(/images/logo.png) without quotes return as string
</ins><span class="cx">       }
</span><span class="cx">     } else if (ch == &quot;!&quot;) {
</span><span class="cx">       stream.match(/^\s*\w*/);
</span><span class="lines">@@ -66,10 +66,13 @@
</span><span class="cx">         return ret(null, ch);
</span><span class="cx">       }
</span><span class="cx">     } else if (ch == &quot;.&quot;) {
</span><del>-      if(type == &quot;(&quot; || type == &quot;string&quot;)return ret(&quot;string&quot;, &quot;string&quot;); // allow url(../image.png)
</del><ins>+      if(type == &quot;(&quot;)return ret(&quot;string&quot;, &quot;string&quot;); // allow url(../image.png)
</ins><span class="cx">       stream.eatWhile(/[\a-zA-Z0-9\-_]/);
</span><del>-      if(stream.peek() == &quot; &quot;)stream.eatSpace();
-      if(stream.peek() == &quot;)&quot;)return ret(&quot;number&quot;, &quot;unit&quot;);//rgba(0,0,0,.25);
</del><ins>+      if(stream.peek() === &quot; &quot;)stream.eatSpace();
+      if(stream.peek() === &quot;)&quot; || type === &quot;:&quot;)return ret(&quot;number&quot;, &quot;unit&quot;);//rgba(0,0,0,.25);
+      else if(stream.current().length &gt;1){
+        if(state.stack[state.stack.length-1] === &quot;rule&quot; &amp;&amp; stream.peek().match(/{|,|\+|\(/) === null)return ret(&quot;number&quot;, &quot;unit&quot;);
+      }
</ins><span class="cx">       return ret(&quot;tag&quot;, &quot;tag&quot;);
</span><span class="cx">     } else if (ch == &quot;#&quot;) {
</span><span class="cx">       //we don't eat white-space, we want the hex color and or id only
</span><span class="lines">@@ -82,21 +85,24 @@
</span><span class="cx">           //eat white-space
</span><span class="cx">           stream.eatSpace();
</span><span class="cx">           //when hex value declaration doesn't end with [;,] but is does with a slash/cc comment treat it as an id, just like the other hex values that don't end with[;,]
</span><del>-          if( /[\/&lt;&gt;.(){!$%^&amp;*_\-\\?=+\|#'~`]/.test(stream.peek()) )return ret(&quot;atom&quot;, &quot;tag&quot;);
</del><ins>+          if( /[\/&lt;&gt;.(){!$%^&amp;*_\-\\?=+\|#'~`]/.test(stream.peek()) ){
+            if(type === &quot;select-op&quot;)return ret(&quot;number&quot;, &quot;unit&quot;); else return ret(&quot;atom&quot;, &quot;tag&quot;);
+          }
</ins><span class="cx">           //#time { color: #aaa }
</span><span class="cx">           else if(stream.peek() == &quot;}&quot; )return ret(&quot;number&quot;, &quot;unit&quot;);
</span><span class="cx">           //we have a valid hex color value, parse as id whenever an element/class is defined after the hex(id) value e.g. #eee aaa || #eee .aaa
</span><del>-            else if( /[a-zA-Z\\]/.test(stream.peek()) )return ret(&quot;atom&quot;, &quot;tag&quot;);
</del><ins>+          else if( /[a-zA-Z\\]/.test(stream.peek()) )return ret(&quot;atom&quot;, &quot;tag&quot;);
</ins><span class="cx">           //when a hex value is on the end of a line, parse as id
</span><del>-              else if(stream.eol())return ret(&quot;atom&quot;, &quot;tag&quot;);
</del><ins>+          else if(stream.eol())return ret(&quot;atom&quot;, &quot;tag&quot;);
</ins><span class="cx">           //default
</span><del>-                else return ret(&quot;number&quot;, &quot;unit&quot;);
</del><ins>+          else return ret(&quot;number&quot;, &quot;unit&quot;);
</ins><span class="cx">         } else {//when not a valid hexvalue in the current stream e.g. #footer
</span><span class="cx">           stream.eatWhile(/[\w\\\-]/);
</span><del>-          return ret(&quot;atom&quot;, &quot;tag&quot;);
</del><ins>+          return ret(&quot;atom&quot;, stream.current());
</ins><span class="cx">         }
</span><span class="cx">       } else {//when not a valid hexvalue length
</span><span class="cx">         stream.eatWhile(/[\w\\\-]/);
</span><ins>+        if(state.stack[state.stack.length-1] === &quot;rule&quot;)return ret(&quot;atom&quot;, stream.current());return ret(&quot;atom&quot;, stream.current());
</ins><span class="cx">         return ret(&quot;atom&quot;, &quot;tag&quot;);
</span><span class="cx">       }
</span><span class="cx">     } else if (ch == &quot;&amp;&quot;) {
</span><span class="lines">@@ -104,17 +110,33 @@
</span><span class="cx">       return ret(null, ch);
</span><span class="cx">     } else {
</span><span class="cx">       stream.eatWhile(/[\w\\\-_%.{]/);
</span><del>-      if(type == &quot;string&quot;){
-        return ret(&quot;string&quot;, &quot;string&quot;);
</del><ins>+      if(stream.current().match(/\\/) !== null){
+        if(stream.current().charAt(stream.current().length-1) === &quot;\\&quot;){
+          stream.eat(/\'|\&quot;|\)|\(/);
+          while(stream.eatWhile(/[\w\\\-_%.{]/)){
+            stream.eat(/\'|\&quot;|\)|\(/);
+          }
+          return ret(&quot;string&quot;, stream.current());
+        }
+      } //else if(type === &quot;tag&quot;)return ret(&quot;tag&quot;, &quot;tag&quot;);
+        else if(type == &quot;string&quot;){
+        if(state.stack[state.stack.length-1] === &quot;{&quot; &amp;&amp; stream.peek() === &quot;:&quot;)return ret(&quot;variable&quot;, &quot;variable&quot;);
+        if(stream.peek() === &quot;/&quot;)stream.eatWhile(/[\w\\\-_%.{:\/]/);
+        return ret(type, stream.current());
</ins><span class="cx">       } else if(stream.current().match(/(^http$|^https$)/) != null){
</span><span class="cx">         stream.eatWhile(/[\w\\\-_%.{:\/]/);
</span><ins>+        if(stream.peek() === &quot;/&quot;)stream.eatWhile(/[\w\\\-_%.{:\/]/);
</ins><span class="cx">         return ret(&quot;string&quot;, &quot;string&quot;);
</span><span class="cx">       } else if(stream.peek() == &quot;&lt;&quot; || stream.peek() == &quot;&gt;&quot; || stream.peek() == &quot;+&quot;){
</span><ins>+        if(type === &quot;(&quot; &amp;&amp; (stream.current() === &quot;n&quot; || stream.current() === &quot;-n&quot;))return ret(&quot;string&quot;, stream.current());
</ins><span class="cx">         return ret(&quot;tag&quot;, &quot;tag&quot;);
</span><span class="cx">       } else if( /\(/.test(stream.peek()) ){
</span><ins>+        if(stream.current() === &quot;when&quot;)return ret(&quot;variable&quot;,&quot;variable&quot;);
+        else if(state.stack[state.stack.length-1] === &quot;@media&quot; &amp;&amp; stream.current() === &quot;and&quot;)return ret(&quot;variable&quot;,stream.current());
</ins><span class="cx">         return ret(null, ch);
</span><del>-      } else if (stream.peek() == &quot;/&quot; &amp;&amp; state.stack[state.stack.length-1] != undefined){ // url(dir/center/image.png)
-        return ret(&quot;string&quot;, &quot;string&quot;);
</del><ins>+      } else if (stream.peek() == &quot;/&quot; &amp;&amp; state.stack[state.stack.length-1] !== undefined){ // url(dir/center/image.png)
+        if(stream.peek() === &quot;/&quot;)stream.eatWhile(/[\w\\\-_%.{:\/]/);
+        return ret(&quot;string&quot;, stream.current());
</ins><span class="cx">       } else if( stream.current().match(/\-\d|\-.\d/) ){ // match e.g.: -5px -0.4 etc... only colorize the minus sign
</span><span class="cx">         //commment out these 2 comment if you want the minus sign to be parsed as null -500px
</span><span class="cx">         //stream.backUp(stream.current().length-1);
</span><span class="lines">@@ -129,14 +151,33 @@
</span><span class="cx">         if( /[{&lt;&gt;.a-zA-Z\/]/.test(stream.peek())  || stream.eol() )return ret(&quot;tag&quot;, &quot;tag&quot;); // e.g. button.icon-plus
</span><span class="cx">         return ret(&quot;string&quot;, &quot;string&quot;); // let url(/images/logo.png) without quotes return as string
</span><span class="cx">       } else if( stream.eol() || stream.peek() == &quot;[&quot; || stream.peek() == &quot;#&quot; || type == &quot;tag&quot; ){
</span><ins>+
</ins><span class="cx">         if(stream.current().substring(stream.current().length-1,stream.current().length) == &quot;{&quot;)stream.backUp(1);
</span><ins>+        else if(state.stack[state.stack.length-1] === &quot;border-color&quot; || state.stack[state.stack.length-1] === &quot;background-position&quot; || state.stack[state.stack.length-1] === &quot;font-family&quot;)return ret(null, stream.current());
+        else if(type === &quot;tag&quot;)return ret(&quot;tag&quot;, &quot;tag&quot;);
+        else if((type === &quot;:&quot; || type === &quot;unit&quot;) &amp;&amp; state.stack[state.stack.length-1] === &quot;rule&quot;)return ret(null, stream.current());
+        else if(state.stack[state.stack.length-1] === &quot;rule&quot; &amp;&amp; type === &quot;tag&quot;)return ret(&quot;string&quot;, stream.current());
+        else if(state.stack[state.stack.length-1] === &quot;;&quot; &amp;&amp; type === &quot;:&quot;)return ret(null, stream.current());
+        //else if(state.stack[state.stack.length-1] === &quot;;&quot; || type === &quot;&quot;)return ret(&quot;variable&quot;, stream.current());
+        else if(stream.peek() === &quot;#&quot; &amp;&amp; type !== undefined &amp;&amp; type.match(/\+|,|tag|select\-op|}|{|;/g) === null)return ret(&quot;string&quot;, stream.current());
+        else if(type === &quot;variable&quot;)return ret(null, stream.current());
+        else if(state.stack[state.stack.length-1] === &quot;{&quot; &amp;&amp; type === &quot;comment&quot;)return ret(&quot;variable&quot;, stream.current());
+        else if(state.stack.length === 0 &amp;&amp; (type === &quot;;&quot; || type === &quot;comment&quot;))return ret(&quot;tag&quot;, stream.current());
+        else if((state.stack[state.stack.length-1] === &quot;{&quot; || type === &quot;;&quot;) &amp;&amp; state.stack[state.stack.length-1] !== &quot;@media{&quot;)return ret(&quot;variable&quot;, stream.current());
+        else if(state.stack[state.stack.length-2] === &quot;{&quot; &amp;&amp; state.stack[state.stack.length-1] === &quot;;&quot;)return ret(&quot;variable&quot;, stream.current());
+
</ins><span class="cx">         return ret(&quot;tag&quot;, &quot;tag&quot;);
</span><span class="cx">       } else if(type == &quot;compare&quot; || type == &quot;a&quot; || type == &quot;(&quot;){
</span><span class="cx">         return ret(&quot;string&quot;, &quot;string&quot;);
</span><span class="cx">       } else if(type == &quot;|&quot; || stream.current() == &quot;-&quot; || type == &quot;[&quot;){
</span><del>-        if(type == &quot;|&quot; )return ret(&quot;tag&quot;, &quot;tag&quot;);
</del><ins>+        if(type == &quot;|&quot; &amp;&amp; stream.peek().match(/\]|=|\~/) !== null)return ret(&quot;number&quot;, stream.current());
+        else if(type == &quot;|&quot; )return ret(&quot;tag&quot;, &quot;tag&quot;);
+        else if(type == &quot;[&quot;){
+          stream.eatWhile(/\w\-/);
+          return ret(&quot;number&quot;, stream.current());
+        }
</ins><span class="cx">         return ret(null, ch);
</span><del>-      } else if(stream.peek() == &quot;:&quot;) {
</del><ins>+      } else if((stream.peek() == &quot;:&quot;) || ( stream.eatSpace() &amp;&amp; stream.peek() == &quot;:&quot;)) {
</ins><span class="cx">         stream.next();
</span><span class="cx">         var t_v = stream.peek() == &quot;:&quot; ? true : false;
</span><span class="cx">         if(!t_v){
</span><span class="lines">@@ -152,11 +193,50 @@
</span><span class="cx">           stream.backUp(1);
</span><span class="cx">         }
</span><span class="cx">         if(t_v)return ret(&quot;tag&quot;, &quot;tag&quot;); else return ret(&quot;variable&quot;, &quot;variable&quot;);
</span><del>-      } else if(state.stack[state.stack.length-1]  === &quot;font-family&quot;){
</del><ins>+      } else if(state.stack[state.stack.length-1]  === &quot;font-family&quot; || state.stack[state.stack.length-1]  === &quot;background-position&quot; || state.stack[state.stack.length-1]  === &quot;border-color&quot;){
</ins><span class="cx">         return ret(null, null);
</span><span class="cx">       } else {
</span><del>-        if(state.stack[state.stack.length-1] === &quot;{&quot; || type === &quot;select-op&quot;  || (state.stack[state.stack.length-1] === &quot;rule&quot; &amp;&amp; type === &quot;,&quot;) )return ret(&quot;tag&quot;, &quot;tag&quot;);
-        return ret(&quot;variable&quot;, &quot;variable&quot;);
</del><ins>+
+        if(state.stack[state.stack.length-1] === null &amp;&amp; type === &quot;:&quot;)return ret(null, stream.current());
+
+        //else if((type === &quot;)&quot; &amp;&amp; state.stack[state.stack.length-1] === &quot;rule&quot;) || (state.stack[state.stack.length-2] === &quot;{&quot; &amp;&amp; state.stack[state.stack.length-1] === &quot;rule&quot; &amp;&amp; type === &quot;variable&quot;))return ret(null, stream.current());
+
+        else if(/\^|\$/.test(stream.current()) &amp;&amp; stream.peek().match(/\~|=/) !== null)return ret(&quot;string&quot;, &quot;string&quot;);//att^=val
+
+        else if(type === &quot;unit&quot; &amp;&amp; state.stack[state.stack.length-1] === &quot;rule&quot;)return ret(null, &quot;unit&quot;);
+        else if(type === &quot;unit&quot; &amp;&amp; state.stack[state.stack.length-1] === &quot;;&quot;)return ret(null, &quot;unit&quot;);
+        else if(type === &quot;)&quot; &amp;&amp; state.stack[state.stack.length-1] === &quot;rule&quot;)return ret(null, &quot;unit&quot;);
+        else if(type &amp;&amp; type.match(&quot;@&quot;) !== null  &amp;&amp; state.stack[state.stack.length-1] === &quot;rule&quot;)return ret(null, &quot;unit&quot;);
+        //else if(type === &quot;unit&quot; &amp;&amp; state.stack[state.stack.length-1] === &quot;rule&quot;)return ret(null, stream.current());
+
+        else if((type === &quot;;&quot; || type === &quot;}&quot; || type === &quot;,&quot;) &amp;&amp; state.stack[state.stack.length-1] === &quot;;&quot;)return ret(&quot;tag&quot;, stream.current());
+        else if((type === &quot;;&quot; &amp;&amp; stream.peek() !== undefined &amp;&amp; stream.peek().match(/{|./) === null) || (type === &quot;;&quot; &amp;&amp; stream.eatSpace() &amp;&amp; stream.peek().match(/{|./) === null))return ret(&quot;variable&quot;, stream.current());
+        else if((type === &quot;@media&quot; &amp;&amp; state.stack[state.stack.length-1] === &quot;@media&quot;) || type === &quot;@namespace&quot;)return ret(&quot;tag&quot;, stream.current());
+
+        else if(type === &quot;{&quot;  &amp;&amp; state.stack[state.stack.length-1] === &quot;;&quot; &amp;&amp; stream.peek() === &quot;{&quot;)return ret(&quot;tag&quot;, &quot;tag&quot;);
+        else if((type === &quot;{&quot; || type === &quot;:&quot;) &amp;&amp; state.stack[state.stack.length-1] === &quot;;&quot;)return ret(null, stream.current());
+        else if((state.stack[state.stack.length-1] === &quot;{&quot; &amp;&amp; stream.eatSpace() &amp;&amp; stream.peek().match(/.|#/) === null) || type === &quot;select-op&quot;  || (state.stack[state.stack.length-1] === &quot;rule&quot; &amp;&amp; type === &quot;,&quot;) )return ret(&quot;tag&quot;, &quot;tag&quot;);
+        else if(type === &quot;variable&quot; &amp;&amp; state.stack[state.stack.length-1] === &quot;rule&quot;)return ret(&quot;tag&quot;, &quot;tag&quot;);
+        else if((stream.eatSpace() &amp;&amp; stream.peek() === &quot;{&quot;) || stream.eol() || stream.peek() === &quot;{&quot;)return ret(&quot;tag&quot;, &quot;tag&quot;);
+        //this one messes up indentation
+        //else if((type === &quot;}&quot; &amp;&amp; stream.peek() !== &quot;:&quot;) || (type === &quot;}&quot; &amp;&amp; stream.eatSpace() &amp;&amp; stream.peek() !== &quot;:&quot;))return(type, &quot;tag&quot;);
+
+        else if(type === &quot;)&quot; &amp;&amp; (stream.current() == &quot;and&quot; || stream.current() == &quot;and &quot;))return ret(&quot;variable&quot;, &quot;variable&quot;);
+        else if(type === &quot;)&quot; &amp;&amp; (stream.current() == &quot;when&quot; || stream.current() == &quot;when &quot;))return ret(&quot;variable&quot;, &quot;variable&quot;);
+        else if(type === &quot;)&quot; || type === &quot;comment&quot; || type === &quot;{&quot;)return ret(&quot;tag&quot;, &quot;tag&quot;);
+        else if(stream.sol())return ret(&quot;tag&quot;, &quot;tag&quot;);
+        else if((stream.eatSpace() &amp;&amp; stream.peek() === &quot;#&quot;) || stream.peek() === &quot;#&quot;)return ret(&quot;tag&quot;, &quot;tag&quot;);
+        else if(state.stack.length === 0)return ret(&quot;tag&quot;, &quot;tag&quot;);
+        else if(type === &quot;;&quot; &amp;&amp; stream.peek() !== undefined &amp;&amp; stream.peek().match(/^[.|\#]/g) !== null)return ret(&quot;tag&quot;, &quot;tag&quot;);
+
+        else if(type === &quot;:&quot;){stream.eatSpace();return ret(null, stream.current());}
+
+        else if(stream.current() === &quot;and &quot; || stream.current() === &quot;and&quot;)return ret(&quot;variable&quot;, stream.current());
+        else if(type === &quot;;&quot; &amp;&amp; state.stack[state.stack.length-1] === &quot;{&quot;)return ret(&quot;variable&quot;, stream.current());
+
+        else if(state.stack[state.stack.length-1] === &quot;rule&quot;)return ret(null, stream.current());
+
+        return ret(&quot;tag&quot;, stream.current());
</ins><span class="cx">       }
</span><span class="cx">     }
</span><span class="cx">   }
</span><span class="lines">@@ -234,20 +314,30 @@
</span><span class="cx">       else if (type == &quot;}&quot;) state.stack.pop();
</span><span class="cx">       else if (type == &quot;@media&quot;) state.stack.push(&quot;@media&quot;);
</span><span class="cx">       else if (stream.current() === &quot;font-family&quot;) state.stack[state.stack.length-1] = &quot;font-family&quot;;
</span><ins>+      else if (stream.current() === &quot;background-position&quot;) state.stack[state.stack.length-1] = &quot;background-position&quot;;
+      else if (stream.current() === &quot;border-color&quot;) state.stack[state.stack.length-1] = &quot;border-color&quot;;
</ins><span class="cx">       else if (context == &quot;{&quot; &amp;&amp; type != &quot;comment&quot; &amp;&amp; type !== &quot;tag&quot;) state.stack.push(&quot;rule&quot;);
</span><span class="cx">       else if (stream.peek() === &quot;:&quot; &amp;&amp; stream.current().match(/@|#/) === null) style = type;
</span><ins>+      if(type === &quot;;&quot; &amp;&amp; (state.stack[state.stack.length-1] == &quot;font-family&quot; || state.stack[state.stack.length-1] == &quot;background-position&quot; || state.stack[state.stack.length-1] == &quot;border-color&quot;))state.stack[state.stack.length-1] = stream.current();
+      else if(type === &quot;tag&quot; &amp;&amp; stream.peek() === &quot;)&quot; &amp;&amp; stream.current().match(/\:/) === null){type = null; style = null;}
+      // ????
+      else if((type === &quot;variable&quot; &amp;&amp; stream.peek() === &quot;)&quot;) || (type === &quot;variable&quot; &amp;&amp; stream.eatSpace() &amp;&amp; stream.peek() === &quot;)&quot;))return ret(null,stream.current());
</ins><span class="cx">       return style;
</span><span class="cx">     },
</span><span class="cx"> 
</span><span class="cx">     indent: function(state, textAfter) {
</span><span class="cx">       var n = state.stack.length;
</span><del>-
</del><span class="cx">       if (/^\}/.test(textAfter))
</span><del>-        n -= state.stack[state.stack.length-1] == &quot;rule&quot; ? 2 : 1;
</del><ins>+        n -= state.stack[state.stack.length-1] === &quot;rule&quot; ? 2 : 1;
+      else if (state.stack[state.stack.length-2] === &quot;{&quot;)
+        n -= state.stack[state.stack.length-1] === &quot;rule&quot; ? 1 : 0;
</ins><span class="cx">       return state.baseIndent + n * indentUnit;
</span><span class="cx">     },
</span><span class="cx"> 
</span><del>-    electricChars: &quot;}&quot;
</del><ins>+    electricChars: &quot;}&quot;,
+    blockCommentStart: &quot;/*&quot;,
+    blockCommentEnd: &quot;*/&quot;,
+    lineComment: &quot;//&quot;
</ins><span class="cx">   };
</span><span class="cx"> });
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebInspectorUIUserInterfaceExternalCodeMirrormatchbracketsjs"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/matchbrackets.js (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/matchbrackets.js        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/matchbrackets.js        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -8,6 +8,7 @@
</span><span class="cx">   function findMatchingBracket(cm, where, strict) {
</span><span class="cx">     var state = cm.state.matchBrackets;
</span><span class="cx">     var maxScanLen = (state &amp;&amp; state.maxScanLineLength) || 10000;
</span><ins>+    var maxScanLines = (state &amp;&amp; state.maxScanLines) || 100;
</ins><span class="cx"> 
</span><span class="cx">     var cur = where || cm.getCursor(), line = cm.getLineHandle(cur.line), pos = cur.ch - 1;
</span><span class="cx">     var match = (pos &gt;= 0 &amp;&amp; matching[line.text.charAt(pos)]) || matching[line.text.charAt(++pos)];
</span><span class="lines">@@ -32,7 +33,7 @@
</span><span class="cx">         }
</span><span class="cx">       }
</span><span class="cx">     }
</span><del>-    for (var i = cur.line, found, e = forward ? Math.min(i + 100, cm.lineCount()) : Math.max(-1, i - 100); i != e; i+=d) {
</del><ins>+    for (var i = cur.line, found, e = forward ? Math.min(i + maxScanLines, cm.lineCount()) : Math.max(-1, i - maxScanLines); i != e; i+=d) {
</ins><span class="cx">       if (i == cur.line) found = scan(line, i, pos);
</span><span class="cx">       else found = scan(cm.getLineHandle(i), i);
</span><span class="cx">       if (found) break;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebInspectorUIUserInterfaceExternalCodeMirrorplaceholderjs"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/placeholder.js (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/placeholder.js        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/placeholder.js        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -2,12 +2,10 @@
</span><span class="cx">   CodeMirror.defineOption(&quot;placeholder&quot;, &quot;&quot;, function(cm, val, old) {
</span><span class="cx">     var prev = old &amp;&amp; old != CodeMirror.Init;
</span><span class="cx">     if (val &amp;&amp; !prev) {
</span><del>-      cm.on(&quot;focus&quot;, onFocus);
</del><span class="cx">       cm.on(&quot;blur&quot;, onBlur);
</span><span class="cx">       cm.on(&quot;change&quot;, onChange);
</span><span class="cx">       onChange(cm);
</span><span class="cx">     } else if (!val &amp;&amp; prev) {
</span><del>-      cm.off(&quot;focus&quot;, onFocus);
</del><span class="cx">       cm.off(&quot;blur&quot;, onBlur);
</span><span class="cx">       cm.off(&quot;change&quot;, onChange);
</span><span class="cx">       clearPlaceholder(cm);
</span><span class="lines">@@ -33,9 +31,6 @@
</span><span class="cx">     cm.display.lineSpace.insertBefore(elt, cm.display.lineSpace.firstChild);
</span><span class="cx">   }
</span><span class="cx"> 
</span><del>-  function onFocus(cm) {
-    clearPlaceholder(cm);
-  }
</del><span class="cx">   function onBlur(cm) {
</span><span class="cx">     if (isEmpty(cm)) setPlaceholder(cm);
</span><span class="cx">   }
</span><span class="lines">@@ -43,7 +38,6 @@
</span><span class="cx">     var wrapper = cm.getWrapperElement(), empty = isEmpty(cm);
</span><span class="cx">     wrapper.className = wrapper.className.replace(&quot; CodeMirror-empty&quot;, &quot;&quot;) + (empty ? &quot; CodeMirror-empty&quot; : &quot;&quot;);
</span><span class="cx"> 
</span><del>-    if (cm.hasFocus()) return;
</del><span class="cx">     if (empty) setPlaceholder(cm);
</span><span class="cx">     else clearPlaceholder(cm);
</span><span class="cx">   }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebInspectorUIUserInterfaceExternalCodeMirrorrunmodejs"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/runmode.js (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/runmode.js        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/runmode.js        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -49,7 +49,7 @@
</span><span class="cx">     var stream = new CodeMirror.StringStream(lines[i]);
</span><span class="cx">     while (!stream.eol()) {
</span><span class="cx">       var style = mode.token(stream, state);
</span><del>-      callback(stream.current(), style, i, stream.start);
</del><ins>+      callback(stream.current(), style, i, stream.start, state);
</ins><span class="cx">       stream.start = stream.pos;
</span><span class="cx">     }
</span><span class="cx">   }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebInspectorUIUserInterfaceExternalCodeMirrorsearchcursorjs"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/searchcursor.js (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/searchcursor.js        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/searchcursor.js        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -69,8 +69,8 @@
</span><span class="cx">         this.matches = function(reverse, pos) {
</span><span class="cx">           var ln = pos.line, idx = (reverse ? target.length - 1 : 0), match = target[idx], line = fold(doc.getLine(ln));
</span><span class="cx">           var offsetA = (reverse ? line.indexOf(match) + match.length : line.lastIndexOf(match));
</span><del>-          if (reverse ? offsetA &gt;= pos.ch || offsetA != match.length
-              : offsetA &lt;= pos.ch || offsetA != line.length - match.length)
</del><ins>+          if (reverse ? offsetA &gt; pos.ch || offsetA != match.length
+              : offsetA &lt; pos.ch || offsetA != line.length - match.length)
</ins><span class="cx">             return;
</span><span class="cx">           for (;;) {
</span><span class="cx">             if (reverse ? !ln : ln == doc.lineCount() - 1) return;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebInspectorUIUserInterfaceExternalCodeMirrorsqljs"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/sql.js (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/sql.js        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/sql.js        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -262,11 +262,24 @@
</span><span class="cx">     support: set(&quot;ODBCdotTable doubleQuote binaryNumber hexNumber&quot;)
</span><span class="cx">   });
</span><span class="cx"> 
</span><ins>+  CodeMirror.defineMIME(&quot;text/x-mssql&quot;, {
+    name: &quot;sql&quot;,
+    client: set(&quot;charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee&quot;),
+    keywords: set(sqlKeywords + &quot;begin trigger proc view index for add constraint key primary foreign collate clustered nonclustered&quot;),
+    builtin: set(&quot;bigint numeric bit smallint decimal smallmoney int tinyint money float real char varchar text nchar nvarchar ntext binary varbinary image cursor timestamp hierarchyid uniqueidentifier sql_variant xml table &quot;),
+    atoms: set(&quot;false true null unknown&quot;),
+    operatorChars: /^[*+\-%&lt;&gt;!=]/,
+    dateSQL: set(&quot;date datetimeoffset datetime2 smalldatetime datetime time&quot;),
+    hooks: {
+      &quot;@&quot;:   hookVar
+    }
+  });
+
</ins><span class="cx">   CodeMirror.defineMIME(&quot;text/x-mysql&quot;, {
</span><span class="cx">     name: &quot;sql&quot;,
</span><span class="cx">     client: set(&quot;charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee&quot;),
</span><del>-    keywords: set(sqlKeywords + &quot;accessible action add after algorithm all analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general global grant grants group groupby_concat handler hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show signal slave slow smallint snapshot soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views warnings when while with work write xa xor year_month zerofill begin do then else loop repeat&quot;),
-    builtin: set(&quot;bool boolean bit blob decimal double enum float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric&quot;),
</del><ins>+    keywords: set(sqlKeywords + &quot;accessible action add after algorithm all analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general get global grant grants group groupby_concat handler hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show signal slave slow smallint snapshot soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views warnings when while with work write xa xor year_month zerofill begin do then else loop repeat&quot;),
+    builtin: set(&quot;bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric&quot;),
</ins><span class="cx">     atoms: set(&quot;false true null unknown&quot;),
</span><span class="cx">     operatorChars: /^[*+\-%&lt;&gt;!=&amp;|^]/,
</span><span class="cx">     dateSQL: set(&quot;date time timestamp&quot;),
</span><span class="lines">@@ -281,8 +294,8 @@
</span><span class="cx">   CodeMirror.defineMIME(&quot;text/x-mariadb&quot;, {
</span><span class="cx">     name: &quot;sql&quot;,
</span><span class="cx">     client: set(&quot;charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee&quot;),
</span><del>-    keywords: set(sqlKeywords + &quot;accessible action add after algorithm all always analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general generated global grant grants group groupby_concat handler hard hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password persistent phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show signal slave slow smallint snapshot soft soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views virtual warnings when while with work write xa xor year_month zerofill begin do then else loop repeat&quot;),
-    builtin: set(&quot;bool boolean bit blob decimal double enum float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric&quot;),
</del><ins>+    keywords: set(sqlKeywords + &quot;accessible action add after algorithm all always analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general generated get global grant grants group groupby_concat handler hard hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password persistent phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show shutdown signal slave slow smallint snapshot soft soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views virtual warnings when while with work write xa xor year_month zerofill begin do then else loop repeat&quot;),
+    builtin: set(&quot;bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric&quot;),
</ins><span class="cx">     atoms: set(&quot;false true null unknown&quot;),
</span><span class="cx">     operatorChars: /^[*+\-%&lt;&gt;!=&amp;|^]/,
</span><span class="cx">     dateSQL: set(&quot;date time timestamp&quot;),
</span><span class="lines">@@ -313,8 +326,7 @@
</span><span class="cx">     name:       &quot;sql&quot;,
</span><span class="cx">     client:     set(&quot;appinfo arraysize autocommit autoprint autorecovery autotrace blockterminator break btitle cmdsep colsep compatibility compute concat copycommit copytypecheck define describe echo editfile embedded escape exec execute feedback flagger flush heading headsep instance linesize lno loboffset logsource long longchunksize markup native newpage numformat numwidth pagesize pause pno recsep recsepchar release repfooter repheader serveroutput shiftinout show showmode size spool sqlblanklines sqlcase sqlcode sqlcontinue sqlnumber sqlpluscompatibility sqlprefix sqlprompt sqlterminator suffix tab term termout time timing trimout trimspool ttitle underline verify version wrap&quot;),
</span><span class="cx">     keywords:   set(&quot;abort accept access add all alter and any array arraylen as asc assert assign at attributes audit authorization avg base_table begin between binary_integer body boolean by case cast char char_base check close cluster clusters colauth column comment commit compress connect connected constant constraint crash create current currval cursor data_base database date dba deallocate debugoff debugon decimal declare default definition delay delete desc digits dispose distinct do drop else elsif enable end entry escape exception exception_init exchange exclusive exists exit external fast fetch file for force form from function generic goto grant group having identified if immediate in increment index indexes indicator initial initrans insert interface intersect into is key level library like limited local lock log logging long loop master maxextents maxtrans member minextents minus mislabel mode modify multiset new next no noaudit nocompress nologging noparallel not nowait number_base object of off offline on online only open option or order out package parallel partition pctfree pctincrease pctused pls_integer positive positiven pragma primary prior private privileges procedure public raise range raw read rebuild record ref references refresh release rename replace resource restrict return returning reverse revoke rollback row rowid rowlabel rownum rows run savepoint schema segment select separate session set share snapshot some space split sql start statement storage subtype successful synonym tabauth table tables tablespace task terminate then to trigger truncate type union unique unlimited unrecoverable unusable update use using validate value values variable view views when whenever where while with work&quot;),
</span><del>-    functions:  set(&quot;abs acos add_months ascii asin atan atan2 average bfilename ceil chartorowid chr concat convert cos cosh count decode deref dual dump dup_val_on_index empty error exp false floor found glb greatest hextoraw initcap instr instrb isopen last_day least lenght lenghtb ln lower lpad ltrim lub make_ref max min mod months_between new_time next_day nextval nls_charset_decl_len nls_charset_id nls_charset_name nls_initcap nls_lower nls_sort nls_upper nlssort no_data_found notfound null nvl others power rawtohex reftohex round rowcount rowidtochar rpad rtrim sign sin sinh soundex sqlcode sqlerrm sqrt stddev substr substrb sum sysdate tan tanh to_char to_date to_label to_multi_byte to_number to_single_byte translate true trunc uid upper user userenv variance vsize&quot;),
-    builtin:    set(&quot;bfile blob character clob dec float int integer mlslabel natural naturaln nchar nclob number numeric nvarchar2 real rowtype signtype smallint string varchar varchar2&quot;),
</del><ins>+    builtin:    set(&quot;bfile blob character clob dec float int integer mlslabel natural naturaln nchar nclob number numeric nvarchar2 real rowtype signtype smallint string varchar varchar2 abs acos add_months ascii asin atan atan2 average bfilename ceil chartorowid chr concat convert cos cosh count decode deref dual dump dup_val_on_index empty error exp false floor found glb greatest hextoraw initcap instr instrb isopen last_day least lenght lenghtb ln lower lpad ltrim lub make_ref max min mod months_between new_time next_day nextval nls_charset_decl_len nls_charset_id nls_charset_name nls_initcap nls_lower nls_sort nls_upper nlssort no_data_found notfound null nvl others power rawtohex reftohex round rowcount rowidtochar rpad rtrim sign sin sinh soundex sqlcode sqlerrm sqrt stddev substr substrb sum sysdate tan tanh to_char to_date to_label to_multi_byte to_number to_single_byte translate true trunc uid upper user userenv variance vsize&quot;),
</ins><span class="cx">     operatorChars: /^[*+\-%&lt;&gt;!=~]/,
</span><span class="cx">     dateSQL:    set(&quot;date time timestamp&quot;),
</span><span class="cx">     support:    set(&quot;doubleQuote nCharCast zerolessFloat binaryNumber hexNumber&quot;)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebInspectorUIUserInterfaceExternalCodeMirrorxmljs"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/xml.js (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/xml.js        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebInspectorUI/UserInterface/External/CodeMirror/xml.js        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -76,7 +76,7 @@
</span><span class="cx">         tagName = &quot;&quot;;
</span><span class="cx">         var c;
</span><span class="cx">         while ((c = stream.eat(/[^\s\u00a0=&lt;&gt;\&quot;\'\/?]/))) tagName += c;
</span><del>-        if (!tagName) return &quot;error&quot;;
</del><ins>+        if (!tagName) return &quot;tag error&quot;;
</ins><span class="cx">         type = isClose ? &quot;closeTag&quot; : &quot;openTag&quot;;
</span><span class="cx">         state.tokenize = inTag;
</span><span class="cx">         return &quot;tag&quot;;
</span><span class="lines">@@ -109,7 +109,9 @@
</span><span class="cx">       type = &quot;equals&quot;;
</span><span class="cx">       return null;
</span><span class="cx">     } else if (ch == &quot;&lt;&quot;) {
</span><del>-      return &quot;error&quot;;
</del><ins>+      state.tokenize = inText;
+      var next = state.tokenize(stream, state);
+      return next ? next + &quot; error&quot; : &quot;error&quot;;
</ins><span class="cx">     } else if (/[\'\&quot;]/.test(ch)) {
</span><span class="cx">       state.tokenize = inAttribute(ch);
</span><span class="cx">       state.stringStartCol = stream.column();
</span><span class="lines">@@ -298,7 +300,9 @@
</span><span class="cx">         }
</span><span class="cx">       }
</span><span class="cx">       state.startOfLine = false;
</span><del>-      return setStyle || style;
</del><ins>+      if (setStyle)
+        style = setStyle == &quot;error&quot; ? style + &quot; error&quot; : setStyle;
+      return style;
</ins><span class="cx">     },
</span><span class="cx"> 
</span><span class="cx">     indent: function(state, textAfter, fullLine) {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebInspectorUIUserInterfaceHoverMenujs"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebInspectorUI/UserInterface/HoverMenu.js (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebInspectorUI/UserInterface/HoverMenu.js        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebInspectorUI/UserInterface/HoverMenu.js        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -101,7 +101,7 @@
</span><span class="cx"> 
</span><span class="cx">     _handleClickEvent: function(event)
</span><span class="cx">     {
</span><del>-        if (this.delegate &amp;&amp; typeof this.delegate.hoverMenuWasActivated === &quot;function&quot;)
-            this.delegate.hoverMenuWasActivated(this);
</del><ins>+        if (this.delegate &amp;&amp; typeof this.delegate.hoverMenuButtonWasPressed === &quot;function&quot;)
+            this.delegate.hoverMenuButtonWasPressed(this);
</ins><span class="cx">     }
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebInspectorUIUserInterfaceMainhtml"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebInspectorUI/UserInterface/Main.html (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebInspectorUI/UserInterface/Main.html        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebInspectorUI/UserInterface/Main.html        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -286,6 +286,7 @@
</span><span class="cx">     &lt;script src=&quot;ResourceSearchMatchObject.js&quot;&gt;&lt;/script&gt;
</span><span class="cx">     &lt;script src=&quot;SearchResultTreeElement.js&quot;&gt;&lt;/script&gt;
</span><span class="cx">     &lt;script src=&quot;TextRange.js&quot;&gt;&lt;/script&gt;
</span><ins>+    &lt;script src=&quot;TextMarker.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx">     &lt;script src=&quot;ConsoleMessage.js&quot;&gt;&lt;/script&gt;
</span><span class="cx">     &lt;script src=&quot;ConsoleMessageImpl.js&quot;&gt;&lt;/script&gt;
</span><span class="cx">     &lt;script src=&quot;ConsoleGroup.js&quot;&gt;&lt;/script&gt;
</span><span class="lines">@@ -412,6 +413,7 @@
</span><span class="cx">     &lt;script src=&quot;GoToLineDialog.js&quot;&gt;&lt;/script&gt;
</span><span class="cx">     &lt;script src=&quot;ContentFlowDOMTreeContentView.js&quot;&gt;&lt;/script&gt;
</span><span class="cx">     &lt;script src=&quot;HoverMenu.js&quot;&gt;&lt;/script&gt;
</span><ins>+    &lt;script src=&quot;CodeMirrorColorEditingController.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx">     &lt;script src=&quot;Main.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;script&gt;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebInspectorUIUserInterfaceSourceCodeTextEditorcss"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebInspectorUI/UserInterface/SourceCodeTextEditor.css (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebInspectorUI/UserInterface/SourceCodeTextEditor.css        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebInspectorUI/UserInterface/SourceCodeTextEditor.css        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -61,3 +61,16 @@
</span><span class="cx">     padding-left: 10px;
</span><span class="cx">     padding-right: 10px;
</span><span class="cx"> }
</span><ins>+
+/* Custom styling for the hover menu attached to color tokens */
+
+.hover-menu.color {
+    padding-right: 15px;
+}
+
+.hover-menu.color &gt; img {
+    width: 16px;
+    height: 16px;
+    -webkit-transform: translateX(14px);
+    content: -webkit-image-set(url(Images/ColorIcon.png) 1x, url(Images/ColorIcon@2x.png) 2x);
+}
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebInspectorUIUserInterfaceSourceCodeTextEditorjs"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebInspectorUI/UserInterface/SourceCodeTextEditor.js (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebInspectorUI/UserInterface/SourceCodeTextEditor.js        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebInspectorUI/UserInterface/SourceCodeTextEditor.js        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -32,12 +32,12 @@
</span><span class="cx">     this._issuesLineNumberMap = {};
</span><span class="cx">     this._contentPopulated = false;
</span><span class="cx">     this._invalidLineNumbers = {0: true};
</span><ins>+    this._ignoreContentDidChange = 0;
</ins><span class="cx"> 
</span><span class="cx">     WebInspector.TextEditor.call(this, null, null, this);
</span><span class="cx"> 
</span><span class="cx">     // FIXME: Currently this just jumps between resources and related source map resources. It doesn't &quot;jump to symbol&quot; yet.
</span><del>-    this._jumpToSymbolTrackingModeEnabled = false;
-    this._disableJumpToSymbolTrackingModeSettings();
</del><ins>+    this._updateTokenTrackingControllerState();
</ins><span class="cx"> 
</span><span class="cx">     this.element.classList.add(WebInspector.SourceCodeTextEditor.StyleClassName);
</span><span class="cx"> 
</span><span class="lines">@@ -61,7 +61,7 @@
</span><span class="cx">     WebInspector.issueManager.addEventListener(WebInspector.IssueManager.Event.IssueWasAdded, this._issueWasAdded, this);
</span><span class="cx"> 
</span><span class="cx">     if (this._sourceCode instanceof WebInspector.SourceMapResource || this._sourceCode.sourceMaps.length &gt; 0)
</span><del>-        WebInspector.notifications.addEventListener(WebInspector.Notification.GlobalModifierKeysDidChange, this._updateJumpToSymbolTrackingMode, this);
</del><ins>+        WebInspector.notifications.addEventListener(WebInspector.Notification.GlobalModifierKeysDidChange, this._updateTokenTrackingControllerState, this);
</ins><span class="cx">     else
</span><span class="cx">         this._sourceCode.addEventListener(WebInspector.SourceCode.Event.SourceMapAdded, this._sourceCodeSourceMapAdded, this);
</span><span class="cx"> 
</span><span class="lines">@@ -127,7 +127,7 @@
</span><span class="cx"> 
</span><span class="cx">         WebInspector.issueManager.removeEventListener(WebInspector.IssueManager.Event.IssueWasAdded, this._issueWasAdded, this);
</span><span class="cx"> 
</span><del>-        WebInspector.notifications.removeEventListener(WebInspector.Notification.GlobalModifierKeysDidChange, this._updateJumpToSymbolTrackingMode, this);
</del><ins>+        WebInspector.notifications.removeEventListener(WebInspector.Notification.GlobalModifierKeysDidChange, this._updateTokenTrackingControllerState, this);
</ins><span class="cx">         this._sourceCode.removeEventListener(WebInspector.SourceCode.Event.SourceMapAdded, this._sourceCodeSourceMapAdded, this);
</span><span class="cx">     },
</span><span class="cx"> 
</span><span class="lines">@@ -217,6 +217,32 @@
</span><span class="cx">         this.focus();
</span><span class="cx">     },
</span><span class="cx"> 
</span><ins>+    contentDidChange: function(replacedRanges, newRanges)
+    {
+        WebInspector.TextEditor.prototype.contentDidChange.call(this, replacedRanges, newRanges);
+
+        if (this._ignoreContentDidChange &gt; 0)
+            return;
+
+        // Gather all lines containing new text.
+        var lines = new Set;
+        for (var range of newRanges) {
+            // If the range is on a single line, only add the line if the range is not empty.
+            if (range.startLine === range.endLine) {
+                if (range.endColumn &gt; range.startColumn)
+                    lines.add(range.startLine);
+            } else {
+                // Only add the last line if the range has characters on this line.
+                for (var line = range.startLine; line &lt; range.endLine || range.endColumn &gt; 0; ++line)
+                    lines.add(line);
+            }
+        }
+
+        // Consider all new lines for new color markers.
+        for (var line of lines)
+            this._updateColorMarkers(line);
+    },
+
</ins><span class="cx">     // Private
</span><span class="cx"> 
</span><span class="cx">     _unformattedLineInfoForEditorLineInfo: function(lineInfo)
</span><span class="lines">@@ -332,7 +358,8 @@
</span><span class="cx">             this._addIssue(issue);
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        this._updateJumpToSymbolTrackingMode();
</del><ins>+        this._updateTokenTrackingControllerState();
+        this._updateColorMarkers();
</ins><span class="cx">     },
</span><span class="cx"> 
</span><span class="cx">     _populateWithContent: function(content)
</span><span class="lines">@@ -931,70 +958,68 @@
</span><span class="cx">         }
</span><span class="cx">     },
</span><span class="cx"> 
</span><del>-    _updateTokenTrackingControllerEnabled: function()
-    {
-        this.tokenTrackingController.enabled = this._jumpToSymbolTrackingModeEnabled || WebInspector.debuggerManager.activeCallFrame;
-    },
-
</del><span class="cx">     _debuggerDidPause: function(event)
</span><span class="cx">     {
</span><del>-        this._updateTokenTrackingControllerEnabled();
</del><ins>+        this._updateTokenTrackingControllerState();
</ins><span class="cx">     },
</span><span class="cx"> 
</span><span class="cx">     _debuggerDidResume: function(event)
</span><span class="cx">     {
</span><del>-        this._updateTokenTrackingControllerEnabled();
</del><ins>+        this._updateTokenTrackingControllerState();
</ins><span class="cx">         this._dismissPopover();
</span><span class="cx">     },
</span><span class="cx"> 
</span><span class="cx">     _sourceCodeSourceMapAdded: function(event)
</span><span class="cx">     {
</span><del>-        WebInspector.notifications.addEventListener(WebInspector.Notification.GlobalModifierKeysDidChange, this._updateJumpToSymbolTrackingMode, this);
</del><ins>+        WebInspector.notifications.addEventListener(WebInspector.Notification.GlobalModifierKeysDidChange, this._updateTokenTrackingControllerState, this);
</ins><span class="cx">         this._sourceCode.removeEventListener(WebInspector.SourceCode.Event.SourceMapAdded, this._sourceCodeSourceMapAdded, this);
</span><span class="cx"> 
</span><del>-        this._updateJumpToSymbolTrackingMode();
</del><ins>+        this._updateTokenTrackingControllerState();
</ins><span class="cx">     },
</span><span class="cx"> 
</span><del>-    _updateJumpToSymbolTrackingMode: function()
</del><ins>+    _updateTokenTrackingControllerState: function()
</ins><span class="cx">     {
</span><del>-        var oldJumpToSymbolTrackingModeEnabled = this._jumpToSymbolTrackingModeEnabled;
</del><ins>+        var mode = WebInspector.CodeMirrorTokenTrackingController.Mode.None;
+        if (WebInspector.debuggerManager.paused)
+            mode = WebInspector.CodeMirrorTokenTrackingController.Mode.JavaScriptExpression;
+        else if (this._hasColorMarkers())
+            mode = WebInspector.CodeMirrorTokenTrackingController.Mode.MarkedTokens;
+        else if ((this._sourceCode instanceof WebInspector.SourceMapResource || this._sourceCode.sourceMaps.length !== 0) &amp;&amp; WebInspector.modifierKeys.metaKey &amp;&amp; !WebInspector.modifierKeys.altKey &amp;&amp; !WebInspector.modifierKeys.shiftKey)
+            mode = WebInspector.CodeMirrorTokenTrackingController.Mode.NonSymbolTokens;
</ins><span class="cx"> 
</span><del>-        if (!(this._sourceCode instanceof WebInspector.SourceMapResource) &amp;&amp; this._sourceCode.sourceMaps.length === 0)
-            this._jumpToSymbolTrackingModeEnabled = false;
-        else
-            this._jumpToSymbolTrackingModeEnabled = WebInspector.modifierKeys.metaKey &amp;&amp; !WebInspector.modifierKeys.altKey &amp;&amp; !WebInspector.modifierKeys.shiftKey;
</del><ins>+        this.tokenTrackingController.enabled = mode !== WebInspector.CodeMirrorTokenTrackingController.Mode.None;
</ins><span class="cx"> 
</span><del>-        if (oldJumpToSymbolTrackingModeEnabled !== this._jumpToSymbolTrackingModeEnabled) {
-            if (this._jumpToSymbolTrackingModeEnabled) {
-                this._enableJumpToSymbolTrackingModeSettings();
-                this.tokenTrackingController.highlightLastHoveredRange();
-            } else {
-                this._disableJumpToSymbolTrackingModeSettings();
-                this.tokenTrackingController.removeHighlightedRange();
-            }
</del><ins>+        if (mode === this.tokenTrackingController.mode)
+            return;
+
+        switch (mode) {
+        case WebInspector.CodeMirrorTokenTrackingController.Mode.MarkedTokens:
+            this.tokenTrackingController.mouseOverDelayDuration = 0;
+            this.tokenTrackingController.mouseOutReleaseDelayDuration = 0;
+            break;
+        case WebInspector.CodeMirrorTokenTrackingController.Mode.NonSymbolTokens:
+            this.tokenTrackingController.mouseOverDelayDuration = 0;
+            this.tokenTrackingController.mouseOutReleaseDelayDuration = 0;
+            this.tokenTrackingController.classNameForHighlightedRange = WebInspector.CodeMirrorTokenTrackingController.JumpToSymbolHighlightStyleClassName;
+            this._dismissPopover();
+            break;
+        case WebInspector.CodeMirrorTokenTrackingController.Mode.JavaScriptExpression:
+            this.tokenTrackingController.mouseOverDelayDuration = WebInspector.SourceCodeTextEditor.DurationToMouseOverTokenToMakeHoveredToken;
+            this.tokenTrackingController.mouseOutReleaseDelayDuration = WebInspector.SourceCodeTextEditor.DurationToMouseOutOfHoveredTokenToRelease;
+            this.tokenTrackingController.classNameForHighlightedRange = WebInspector.SourceCodeTextEditor.HoveredExpressionHighlightStyleClassName;
+            break;
</ins><span class="cx">         }
</span><del>-    },
</del><span class="cx"> 
</span><del>-    _enableJumpToSymbolTrackingModeSettings: function()
-    {
-        this.tokenTrackingController.classNameForHighlightedRange = WebInspector.CodeMirrorTokenTrackingController.JumpToSymbolHighlightStyleClassName;
-        this.tokenTrackingController.mouseOverDelayDuration = 0;
-        this.tokenTrackingController.mouseOutReleaseDelayDuration = 0;
-
-        this.tokenTrackingController.mode = WebInspector.CodeMirrorTokenTrackingController.Mode.NonSymbolTokens;
-        this._updateTokenTrackingControllerEnabled();
-
-        this._dismissPopover();
</del><ins>+        this.tokenTrackingController.mode = mode;
</ins><span class="cx">     },
</span><span class="cx"> 
</span><del>-    _disableJumpToSymbolTrackingModeSettings: function()
</del><ins>+    _hasColorMarkers: function()
</ins><span class="cx">     {
</span><del>-        this.tokenTrackingController.classNameForHighlightedRange = WebInspector.SourceCodeTextEditor.HoveredExpressionHighlightStyleClassName;
-        this.tokenTrackingController.mouseOverDelayDuration = WebInspector.SourceCodeTextEditor.DurationToMouseOverTokenToMakeHoveredToken;
-        this.tokenTrackingController.mouseOutReleaseDelayDuration = WebInspector.SourceCodeTextEditor.DurationToMouseOutOfHoveredTokenToRelease;
-
-        this.tokenTrackingController.mode = WebInspector.CodeMirrorTokenTrackingController.Mode.JavaScriptExpression;
-        this._updateTokenTrackingControllerEnabled();
</del><ins>+        for (var marker of this.markers) {
+            if (marker.type === WebInspector.TextMarker.Type.Color)
+                return true;
+        }
+        return false;
</ins><span class="cx">     },
</span><span class="cx"> 
</span><span class="cx">     // CodeMirrorTokenTrackingController Delegate
</span><span class="lines">@@ -1018,29 +1043,48 @@
</span><span class="cx"> 
</span><span class="cx">     tokenTrackingControllerHighlightedRangeWasClicked: function(tokenTrackingController)
</span><span class="cx">     {
</span><del>-        if (this._jumpToSymbolTrackingModeEnabled) {
-            // Links are handled by TextEditor.
-            if (/\blink\b/.test(this.tokenTrackingController.candidate.hoveredToken.type))
-                return;
</del><ins>+        if (this.tokenTrackingController.mode !== WebInspector.CodeMirrorTokenTrackingController.Mode.NonSymbolTokens)
+            return;
</ins><span class="cx"> 
</span><del>-            var sourceCodeLocation = this._sourceCodeLocationForEditorPosition(this.tokenTrackingController.candidate.hoveredTokenRange.start);
-            if (this.sourceCode instanceof WebInspector.SourceMapResource)
-                WebInspector.resourceSidebarPanel.showOriginalOrFormattedSourceCodeLocation(sourceCodeLocation);
-            else
-                WebInspector.resourceSidebarPanel.showSourceCodeLocation(sourceCodeLocation);
-        }
</del><ins>+        // Links are handled by TextEditor.
+        if (/\blink\b/.test(this.tokenTrackingController.candidate.hoveredToken.type))
+            return;
+
+        var sourceCodeLocation = this._sourceCodeLocationForEditorPosition(this.tokenTrackingController.candidate.hoveredTokenRange.start);
+        if (this.sourceCode instanceof WebInspector.SourceMapResource)
+            WebInspector.resourceSidebarPanel.showOriginalOrFormattedSourceCodeLocation(sourceCodeLocation);
+        else
+            WebInspector.resourceSidebarPanel.showSourceCodeLocation(sourceCodeLocation);
</ins><span class="cx">     },
</span><span class="cx"> 
</span><span class="cx">     tokenTrackingControllerNewHighlightCandidate: function(tokenTrackingController, candidate)
</span><span class="cx">     {
</span><del>-        if (this._jumpToSymbolTrackingModeEnabled) {
</del><ins>+        if (this.tokenTrackingController.mode === WebInspector.CodeMirrorTokenTrackingController.Mode.NonSymbolTokens) {
</ins><span class="cx">             this.tokenTrackingController.highlightRange(candidate.hoveredTokenRange);
</span><span class="cx">             return;
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        if (!WebInspector.debuggerManager.activeCallFrame)
</del><ins>+        if (this.tokenTrackingController.mode === WebInspector.CodeMirrorTokenTrackingController.Mode.JavaScriptExpression) {
+            this._tokenTrackingControllerHighlightedJavaScriptExpression(candidate);
</ins><span class="cx">             return;
</span><ins>+        }
</ins><span class="cx"> 
</span><ins>+        if (this.tokenTrackingController.mode === WebInspector.CodeMirrorTokenTrackingController.Mode.MarkedTokens) {
+            var markers = this.markersAtPosition(candidate.hoveredTokenRange.start);
+            if (markers.length &gt; 0)
+                this._tokenTrackingControllerHighlightedMarkedExpression(candidate, markers);
+            else
+                this._dismissCodeMirrorColorEditingController();
+        }
+    },
+
+    tokenTrackingControllerMouseOutOfHoveredMarker: function(tokenTrackingController, hoveredMarker)
+    {
+        this._dismissCodeMirrorColorEditingController();
+    },
+
+    _tokenTrackingControllerHighlightedJavaScriptExpression: function(candidate)
+    {
</ins><span class="cx">         console.assert(candidate.expression);
</span><span class="cx"> 
</span><span class="cx">         function populate(error, result, wasThrown)
</span><span class="lines">@@ -1085,7 +1129,7 @@
</span><span class="cx">         if (!candidate)
</span><span class="cx">             return;
</span><span class="cx"> 
</span><del>-        var bounds = this.tokenTrackingController.boundsForRange(candidate.hoveredTokenRange);
</del><ins>+        var bounds = this.boundsForRange(candidate.hoveredTokenRange);
</ins><span class="cx">         if (!bounds)
</span><span class="cx">             return;
</span><span class="cx"> 
</span><span class="lines">@@ -1241,6 +1285,82 @@
</span><span class="cx">     _popoverMouseout: function(event)
</span><span class="cx">     {
</span><span class="cx">         this._mouseIsOverPopover = this._popover.element.contains(event.relatedTarget);
</span><ins>+    },
+
+    _updateColorMarkers: function(lineNumber)
+    {
+        this.createColorMarkers(lineNumber);
+
+        this._updateTokenTrackingControllerState();
+    },
+    
+    _tokenTrackingControllerHighlightedMarkedExpression: function(candidate, markers)
+    {
+        var colorMarker;
+        for (var marker of markers) {
+            if (marker.type === WebInspector.TextMarker.Type.Color) {
+                colorMarker = marker;
+                break;
+            }
+        }
+
+        if (!colorMarker) {
+            this.tokenTrackingController.hoveredMarker = null;
+            return;
+        }
+
+        if (this.tokenTrackingController.hoveredMarker === colorMarker)
+            return;
+
+        this._dismissCodeMirrorColorEditingController();
+
+        this.tokenTrackingController.hoveredMarker = colorMarker;
+
+        this._colorEditingController = this.colorEditingControllerForMarker(colorMarker);
+
+        var color = this._colorEditingController.color;
+        if (!color || !color.valid) {
+            colorMarker.clear();
+            delete this._colorEditingController;
+            return;
+        }
+
+        this._colorEditingController.delegate = this;
+        this._colorEditingController.presentHoverMenu();
+    },
+
+    _dismissCodeMirrorColorEditingController: function()
+    {
+        if (this._colorEditingController)
+            this._colorEditingController.dismissHoverMenu();
+        
+        this.tokenTrackingController.hoveredMarker = null;
+        delete this._colorEditingController;
+    },
+
+    // CodeMirrorColorEditingController Delegate
+    
+    colorEditingControllerDidStartEditing: function(colorEditingController)
+    {
+        // We can pause the token tracking controller during editing, it will be reset
+        // to the expected state by calling _updateColorMarkers() in the
+        // colorEditingControllerDidFinishEditing delegate.
+        this.tokenTrackingController.enabled = false;
+
+        // We clear the marker since we'll reset it after editing.
+        colorEditingController.marker.clear();
+        
+        // We ignore content changes made as a result of color editing.
+        this._ignoreContentDidChange++;
+    },
+    
+    colorEditingControllerDidFinishEditing: function(colorEditingController)
+    {
+        this._updateColorMarkers(colorEditingController.range.startLine);
+
+        this._ignoreContentDidChange--;
+
+        delete this._colorEditingController;
</ins><span class="cx">     }
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebInspectorUIUserInterfaceTextEditorjs"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebInspectorUI/UserInterface/TextEditor.js (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebInspectorUI/UserInterface/TextEditor.js        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebInspectorUI/UserInterface/TextEditor.js        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -591,6 +591,40 @@
</span><span class="cx">         this._codeMirror.focus();
</span><span class="cx">     },
</span><span class="cx"> 
</span><ins>+    contentDidChange: function(replacedRanges, newRanges)
+    {
+        // Implemented by subclasses.
+    },
+
+    boundsForRange: function(range)
+    {
+        return this._codeMirror.boundsForRange(range);
+    },
+
+    get markers()
+    {
+        return this._codeMirror.getAllMarks().map(function(codeMirrorTextMarker) {
+            return WebInspector.TextMarker.textMarkerForCodeMirrorTextMarker(codeMirrorTextMarker);
+        });
+    },
+
+    markersAtPosition: function(position)
+    {
+        return this._codeMirror.findMarksAt(position).map(function(codeMirrorTextMarker) {
+            return WebInspector.TextMarker.textMarkerForCodeMirrorTextMarker(codeMirrorTextMarker);
+        });
+    },
+
+    createColorMarkers: function(lineNumber)
+    {
+        return this._codeMirror.createColorMarkers(lineNumber);
+    },
+
+    colorEditingControllerForMarker: function(colorMarker)
+    {
+        return new WebInspector.CodeMirrorColorEditingController(this._codeMirror, colorMarker);
+    },
+
</ins><span class="cx">     // Private
</span><span class="cx"> 
</span><span class="cx">     _contentChanged: function(codeMirror, change)
</span><span class="lines">@@ -598,6 +632,25 @@
</span><span class="cx">         if (this._ignoreCodeMirrorContentDidChangeEvent &gt; 0)
</span><span class="cx">             return;
</span><span class="cx"> 
</span><ins>+        var replacedRanges = [];
+        var newRanges = [];
+        while (change) {
+            replacedRanges.push(new WebInspector.TextRange(
+                change.from.line,
+                change.from.ch,
+                change.to.line,
+                change.to.ch
+            ));
+            newRanges.push(new WebInspector.TextRange(
+                change.from.line,
+                change.from.ch,
+                change.from.line + change.text.length - 1,
+                change.text.length === 1 ? change.from.ch + change.text[0].length : change.text.lastValue.length
+            ));
+            change = change.next;
+        }
+        this.contentDidChange(replacedRanges, newRanges);
+
</ins><span class="cx">         if (this._formatted) {
</span><span class="cx">             this._formatterSourceMap = null;
</span><span class="cx">             this._formatted = false;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebInspectorUIUserInterfaceTextMarkerjs"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebInspectorUI/UserInterface/TextMarker.js (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebInspectorUI/UserInterface/TextMarker.js                                (rev 0)
+++ branches/jsCStack/Source/WebInspectorUI/UserInterface/TextMarker.js        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,85 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+WebInspector.TextMarker = function(codeMirrorTextMarker, type)
+{
+    WebInspector.Object.call(this);
+
+    this._codeMirrorTextMarker = codeMirrorTextMarker;
+    codeMirrorTextMarker.__webInspectorTextMarker = this;
+
+    this._type = type || WebInspector.TextMarker.Type.Plain;
+}
+
+WebInspector.TextMarker.Type = {
+    Color: &quot;text-marker-type-color&quot;,
+    Plain: &quot;text-marker-type-plain&quot;
+};
+
+WebInspector.TextMarker.textMarkerForCodeMirrorTextMarker = function(codeMirrorTextMarker)
+{
+    return codeMirrorTextMarker.__webInspectorTextMarker || new WebInspector.TextMarker(codeMirrorTextMarker);
+};
+
+WebInspector.TextMarker.prototype = {
+    constructor: WebInspector.TextMarker,
+    __proto__: WebInspector.Object.prototype,
+    
+    // Public
+
+    get codeMirrorTextMarker()
+    {
+        return this._codeMirrorTextMarker;
+    },
+
+    get type()
+    {
+        return this._type;
+    },
+
+    get range()
+    {
+        var range = this._codeMirrorTextMarker.find();
+        if (!range)
+            return null;
+        return new WebInspector.TextRange(range.from.line, range.from.ch, range.to.line, range.to.ch);
+    },
+
+    get bounds()
+    {
+        var range = this._codeMirrorTextMarker.find();
+        if (!range)
+            return WebInspector.Rect.ZERO_RECT;
+        return this._codeMirrorTextMarker.doc.cm.boundsForRange({
+            start: range.from,
+            end: range.to
+        });
+    },
+    
+    clear: function()
+    {
+        this._codeMirrorTextMarker.clear();
+    }
+};
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebInspectorUIWebInspectorUIvcxprojWebInspectorUIvcxproj"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebInspectorUI/WebInspectorUI.vcxproj/WebInspectorUI.vcxproj (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebInspectorUI/WebInspectorUI.vcxproj/WebInspectorUI.vcxproj        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebInspectorUI/WebInspectorUI.vcxproj/WebInspectorUI.vcxproj        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,4 +1,4 @@
</span><del>-&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
</del><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
</ins><span class="cx"> &lt;Project DefaultTargets=&quot;Build&quot; ToolsVersion=&quot;4.0&quot; xmlns=&quot;http://schemas.microsoft.com/developer/msbuild/2003&quot;&gt;
</span><span class="cx">   &lt;ItemGroup Label=&quot;ProjectConfigurations&quot;&gt;
</span><span class="cx">     &lt;ProjectConfiguration Include=&quot;Debug_WinCairo|Win32&quot;&gt;
</span><span class="lines">@@ -31,29 +31,34 @@
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;true&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;false&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;WholeProgramOptimization&gt;true&lt;/WholeProgramOptimization&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Production|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;false&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;WholeProgramOptimization&gt;true&lt;/WholeProgramOptimization&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;false&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;WholeProgramOptimization&gt;true&lt;/WholeProgramOptimization&gt;
</span><span class="cx">     &lt;CharacterSet&gt;MultiByte&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;false&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;Import Project=&quot;$(VCTargetsPath)\Microsoft.Cpp.props&quot; /&gt;
</span><span class="cx">   &lt;ImportGroup Label=&quot;ExtensionSettings&quot;&gt;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitChangeLog"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/ChangeLog (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/ChangeLog        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/ChangeLog        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,3 +1,16 @@
</span><ins>+2014-01-23  Mark Hahnenberg  &lt;mhahnenberg@apple.com&gt;
+
+        Merge branch up to ToT r160556.
+
+        * WebKit.vcxproj/Interfaces/Interfaces.vcxproj:
+        * WebKit.vcxproj/WebKit.sln:
+        * WebKit.vcxproj/WebKit/WebKit.vcxproj:
+        * WebKit.vcxproj/WebKit/WebKitVersion.cmd:
+        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGenerator.vcxproj:
+        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
+        * WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj:
+        * WebKit.xcodeproj/project.pbxproj:
+
</ins><span class="cx"> 2013-12-06  Dániel Bátyai  &lt;Batyai.Daniel@stud.u-szeged.hu&gt;
</span><span class="cx"> 
</span><span class="cx">         Build fix after r160207, remove the BitmapImage::decodeSize symbol export
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitWebKitvcxprojInterfacesInterfacesvcxproj"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/WebKit.vcxproj/Interfaces/Interfaces.vcxproj (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/WebKit.vcxproj/Interfaces/Interfaces.vcxproj        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/WebKit.vcxproj/Interfaces/Interfaces.vcxproj        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -59,6 +59,7 @@
</span><span class="cx">     &lt;UseDebugLibraries&gt;true&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;true&lt;/UseDebugLibraries&gt;
</span><span class="lines">@@ -69,6 +70,7 @@
</span><span class="cx">     &lt;UseDebugLibraries&gt;true&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;true&lt;/UseDebugLibraries&gt;
</span><span class="lines">@@ -79,6 +81,7 @@
</span><span class="cx">     &lt;UseDebugLibraries&gt;true&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;true&lt;/UseDebugLibraries&gt;
</span><span class="lines">@@ -89,6 +92,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;false&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -99,6 +103,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;false&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -109,6 +114,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;false&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitWebKitvcxprojWebKitWebKitvcxproj"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/WebKit.vcxproj/WebKit/WebKit.vcxproj (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/WebKit.vcxproj/WebKit/WebKit.vcxproj        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/WebKit.vcxproj/WebKit/WebKit.vcxproj        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -60,6 +60,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -68,6 +69,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -76,6 +78,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Production|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -84,6 +87,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -92,6 +96,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -100,6 +105,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitWebKitvcxprojWebKitWebKitVersioncmd"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/WebKit.vcxproj/WebKit/WebKitVersion.cmd (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/WebKit.vcxproj/WebKit/WebKitVersion.cmd        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/WebKit.vcxproj/WebKit/WebKitVersion.cmd        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -2,5 +2,6 @@
</span><span class="cx"> set WEBKITVERSIONCONFIG=%PROJECTDIR%..\..\mac\Configurations\Version.xcconfig
</span><span class="cx"> set WEBKITVERSIONDIR=%CONFIGURATIONBUILDDIR%\include\WebKit
</span><span class="cx"> set WEBKITVERSIONFILE=%WEBKITVERSIONDIR%\WebKitVersion.h
</span><ins>+set PATH=%SystemDrive%\cygwin\bin;%PATH%
</ins><span class="cx"> 
</span><span class="cx"> bash -c 'perl &quot;%WEBKITVERSIONSCRIPT%&quot; --config &quot;%WEBKITVERSIONCONFIG%&quot;  --outputDir &quot;%WEBKITVERSIONDIR%&quot;'
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitWebKitvcxprojWebKitsln"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/WebKit.vcxproj/WebKit.sln (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/WebKit.vcxproj/WebKit.sln        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/WebKit.vcxproj/WebKit.sln        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,6 +1,8 @@
</span><span class="cx"> 
</span><del>-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
</del><ins>+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2013
+VisualStudioVersion = 12.0.21005.1
+MinimumVisualStudioVersion = 10.0.40219.1
</ins><span class="cx"> Project(&quot;{2150E333-8FDC-42A3-9474-1A3956D46DE8}&quot;) = &quot;WTF Projects&quot;, &quot;WTF Projects&quot;, &quot;{7F982CAD-225B-4FCE-9937-3B72C14D968D}&quot;
</span><span class="cx"> EndProject
</span><span class="cx"> Project(&quot;{2150E333-8FDC-42A3-9474-1A3956D46DE8}&quot;) = &quot;JavaScriptCore Projects&quot;, &quot;JavaScriptCore Projects&quot;, &quot;{F9F5E7FE-5C5F-4CE9-8665-A84633F49E12}&quot;
</span><span class="lines">@@ -29,6 +31,7 @@
</span><span class="cx"> Project(&quot;{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}&quot;) = &quot;JavaScriptCore&quot;, &quot;..\..\JavaScriptCore\JavaScriptCore.vcxproj\JavaScriptCore.vcxproj&quot;, &quot;{22413D41-3A18-42B7-92A8-CEDC6CE86920}&quot;
</span><span class="cx">         ProjectSection(ProjectDependencies) = postProject
</span><span class="cx">                 {9221744B-5715-4F56-9590-42F7AB23DD8B} = {9221744B-5715-4F56-9590-42F7AB23DD8B}
</span><ins>+                {8EF73779-BED3-45BB-816D-9FF58399AFA5} = {8EF73779-BED3-45BB-816D-9FF58399AFA5}
</ins><span class="cx">         EndProjectSection
</span><span class="cx"> EndProject
</span><span class="cx"> Project(&quot;{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}&quot;) = &quot;jsc&quot;, &quot;..\..\JavaScriptCore\JavaScriptCore.vcxproj\jsc\jsc.vcxproj&quot;, &quot;{2BD437CF-BDAC-4119-9ED6-E10EF46C69F3}&quot;
</span><span class="lines">@@ -38,6 +41,7 @@
</span><span class="cx"> EndProject
</span><span class="cx"> Project(&quot;{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}&quot;) = &quot;WebCore&quot;, &quot;..\..\WebCore\WebCore.vcxproj\WebCore.vcxproj&quot;, &quot;{1C16337B-ACF3-4D03-AA90-851C5B5EADA6}&quot;
</span><span class="cx">         ProjectSection(ProjectDependencies) = postProject
</span><ins>+                {22413D41-3A18-42B7-92A8-CEDC6CE86920} = {22413D41-3A18-42B7-92A8-CEDC6CE86920}
</ins><span class="cx">                 {E498CA9D-3BD2-4D52-8E37-C8DC76526325} = {E498CA9D-3BD2-4D52-8E37-C8DC76526325}
</span><span class="cx">         EndProjectSection
</span><span class="cx"> EndProject
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitWebKitvcxprojWebKitExportGeneratorWebKitExportGeneratorvcxproj"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExportGenerator.vcxproj (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExportGenerator.vcxproj        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExportGenerator.vcxproj        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -61,6 +61,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;true&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -71,6 +72,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;true&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -81,6 +83,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;true&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -91,6 +94,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;false&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -101,6 +105,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;false&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -111,6 +116,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;false&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitWebKitvcxprojWebKitExportGeneratorWebKitExportsdefin"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -212,6 +212,7 @@
</span><span class="cx">         symbolWithPointer(?item@StaticNodeList@WebCore@@UBEPAVNode@2@I@Z, ?item@StaticNodeList@WebCore@@UEBAPEAVNode@2@I@Z)
</span><span class="cx">         ?selectTag@HTMLNames@WebCore@@3VQualifiedName@2@B
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><ins>+        symbolWithPointer(?buildObjectForHighlightedNode@InspectorController@WebCore@@QBE?AV?$PassRefPtr@VInspectorObject@Inspector@@@WTF@@XZ, ?buildObjectForHighlightedNode@InspectorController@WebCore@@QBE?AV?$PassRefPtr@VInspectorObject@Inspector@@@WTF@@XZ)
</ins><span class="cx">         symbolWithPointer(?getHighlight@InspectorController@WebCore@@QBEXPAUHighlight@2@@Z, ?getHighlight@InspectorController@WebCore@@QEBAXPEAUHighlight@2@@Z)
</span><span class="cx">         symbolWithPointer(?instrumentingAgentsForPage@InspectorInstrumentation@WebCore@@CAPAVInstrumentingAgents@2@PAVPage@2@@Z, ?instrumentingAgentsForPage@InspectorInstrumentation@WebCore@@CAPEAVInstrumentingAgents@2@PEAVPage@2@@Z)
</span><span class="cx">         ?s_frontendCounter@InspectorInstrumentation@WebCore@@0HA
</span><span class="lines">@@ -220,7 +221,7 @@
</span><span class="cx">         symbolWithPointer(??1InspectorFrontendClientLocal@WebCore@@UAE@XZ, ??1InspectorFrontendClientLocal@WebCore@@UEAA@XZ)
</span><span class="cx">         symbolWithPointer(?changeAttachedWindowHeight@InspectorFrontendClientLocal@WebCore@@UAEXI@Z, ?changeAttachedWindowHeight@InspectorFrontendClientLocal@WebCore@@UEAAXI@Z)
</span><span class="cx">         symbolWithPointer(?changeAttachedWindowWidth@InspectorFrontendClientLocal@WebCore@@UAEXI@Z, ?changeAttachedWindowWidth@InspectorFrontendClientLocal@WebCore@@UEAAXI@Z)
</span><del>-        symbolWithPointer(?connectFrontend@InspectorController@WebCore@@QAEXPAVInspectorFrontendChannel@2@@Z, ?connectFrontend@InspectorController@WebCore@@QEAAXPEAVInspectorFrontendChannel@2@@Z)
</del><ins>+        symbolWithPointer(?connectFrontend@InspectorController@WebCore@@QAEXPAVInspectorFrontendChannel@Inspector@@@Z, ?connectFrontend@InspectorController@WebCore@@QAEXPAVInspectorFrontendChannel@Inspector@@@Z)
</ins><span class="cx">         symbolWithPointer(?doDispatchMessageOnFrontendPage@InspectorClient@WebCore@@SA_NPAVPage@2@ABVString@WTF@@@Z, ?doDispatchMessageOnFrontendPage@InspectorClient@WebCore@@SA_NPEAVPage@2@AEBVString@WTF@@@Z)
</span><span class="cx">         symbolWithPointer(?frontendLoaded@InspectorFrontendClientLocal@WebCore@@UAEXXZ, ?frontendLoaded@InspectorFrontendClientLocal@WebCore@@UEAAXXZ)
</span><span class="cx">         symbolWithPointer(?getProperty@Settings@InspectorFrontendClientLocal@WebCore@@UAE?AVString@WTF@@ABV45@@Z, ?getProperty@Settings@InspectorFrontendClientLocal@WebCore@@UEAA?AVString@WTF@@AEBV45@@Z)
</span><span class="lines">@@ -346,7 +347,12 @@
</span><span class="cx">         symbolWithPointer(?pageSizeAndMarginsInPixels@PrintContext@WebCore@@SA?AVString@WTF@@PAVFrame@2@HHHHHHH@Z, ?pageSizeAndMarginsInPixels@PrintContext@WebCore@@SA?AVString@WTF@@PEAVFrame@2@HHHHHHH@Z)
</span><span class="cx">         symbolWithPointer(?close@DOMWindow@WebCore@@QAEXPAVScriptExecutionContext@2@@Z, ?close@DOMWindow@WebCore@@QEAAXPEAVScriptExecutionContext@2@@Z)
</span><span class="cx">         symbolWithPointer(?document@DOMWindow@WebCore@@QBEPAVDocument@2@XZ, ?document@DOMWindow@WebCore@@QEBAPEAVDocument@2@XZ)
</span><ins>+#if _MSC_VER &lt; 1800
</ins><span class="cx">         symbolWithPointer(?open@DOMWindow@WebCore@@QAE?AV?$PassRefPtr@VDOMWindow@WebCore@@@WTF@@ABVString@4@ABVAtomicString@4@0PAV12@2@Z, ?open@DOMWindow@WebCore@@QEAA?AV?$PassRefPtr@VDOMWindow@WebCore@@@WTF@@AEBVString@4@AEBVAtomicString@4@0PEAV12@2@Z)
</span><ins>+#else
+        symbolWithPointer(?open@DOMWindow@WebCore@@QAE?AV?$PassRefPtr@VDOMWindow@WebCore@@@WTF@@ABVString@4@ABVAtomicString@4@0AAV12@2@Z, ?open@DOMWindow@WebCore@@QEAA?AV?$PassRefPtr@VDOMWindow@WebCore@@@WTF@@AEBVString@4@AEBVAtomicString@4@0AEAV12@2@Z)
+
+#endif
</ins><span class="cx">         symbolWithPointer(?toJS@WebCore@@YA?AVJSValue@JSC@@PAVExecState@3@PAVJSDOMGlobalObject@1@PAVDOMWindow@1@@Z, ?toJS@WebCore@@YA?AVJSValue@JSC@@PEAVExecState@3@PEAVJSDOMGlobalObject@1@PEAVDOMWindow@1@@Z)
</span><span class="cx">         symbolWithPointer(?layerTreeAsText@Frame@WebCore@@QBE?AVString@WTF@@I@Z, ?layerTreeAsText@Frame@WebCore@@QEBA?AVString@WTF@@I@Z)
</span><span class="cx">         symbolWithPointer(?trackedRepaintRectsAsText@Frame@WebCore@@QBE?AVString@WTF@@XZ, ?trackedRepaintRectsAsText@Frame@WebCore@@QEBA?AVString@WTF@@XZ)
</span><span class="lines">@@ -444,8 +450,6 @@
</span><span class="cx">         symbolWithPointer(?nearest@TimeRanges@WebCore@@QBENN@Z, ?nearest@TimeRanges@WebCore@@QEBANN@Z)
</span><span class="cx">         symbolWithPointer(?add@TimeRanges@WebCore@@QAEXNN@Z, ?add@TimeRanges@WebCore@@QEAAXNN@Z)
</span><span class="cx"> #endif
</span><del>-        symbolWithPointer(?toJSONString@InspectorValue@WebCore@@QBE?AVString@WTF@@XZ, ?toJSONString@InspectorValue@WebCore@@QEBA?AVString@WTF@@XZ)
-        symbolWithPointer(?buildObjectForHighlightedNode@InspectorController@WebCore@@QBE?AV?$PassRefPtr@VInspectorObject@WebCore@@@WTF@@XZ, ?buildObjectForHighlightedNode@InspectorController@WebCore@@QEBA?AV?$PassRefPtr@VInspectorObject@WebCore@@@WTF@@XZ)
</del><span class="cx">         symbolWithPointer(?standardFontFamily@Settings@WebCore@@QBEABVAtomicString@WTF@@W4UScriptCode@@@Z, ?standardFontFamily@Settings@WebCore@@QEBAAEBVAtomicString@WTF@@W4UScriptCode@@@Z)
</span><span class="cx">         symbolWithPointer(?serifFontFamily@Settings@WebCore@@QBEABVAtomicString@WTF@@W4UScriptCode@@@Z, ?serifFontFamily@Settings@WebCore@@QEBAAEBVAtomicString@WTF@@W4UScriptCode@@@Z)
</span><span class="cx">         symbolWithPointer(?sansSerifFontFamily@Settings@WebCore@@QBEABVAtomicString@WTF@@W4UScriptCode@@@Z, ?sansSerifFontFamily@Settings@WebCore@@QEBAAEBVAtomicString@WTF@@W4UScriptCode@@@Z)
</span><span class="lines">@@ -459,3 +463,8 @@
</span><span class="cx">         symbolWithPointer(?cacheStorage@WebCore@@YAAAVApplicationCacheStorage@1@XZ, ?cacheStorage@WebCore@@YAAEAVApplicationCacheStorage@1@XZ)
</span><span class="cx">         symbolWithPointer(?setDefaultOriginQuota@ApplicationCacheStorage@WebCore@@QAEX_J@Z, ?setDefaultOriginQuota@ApplicationCacheStorage@WebCore@@QEAAX_J@Z)
</span><span class="cx">         symbolWithPointer(?vm@ScriptExecutionContext@WebCore@@QAEPAVVM@JSC@@XZ, ?vm@ScriptExecutionContext@WebCore@@QEAAPEAVVM@JSC@@XZ)
</span><ins>+#if _MSC_VER &gt;= 1800
+        symbolWithPointer(?completeURL@Document@WebCore@@UBE?AVURL@2@ABVString@WTF@@@Z, ?completeURL@Document@WebCore@@UBEA?AVURL@2@AEBVString@WTF@@@Z)
+        symbolWithPointer(??1DOMWindow@WebCore@@UAE@XZ, ??1DOMWindow@WebCore@@UEAA@XZ)
+        symbolWithPointer(?visibleContentRect@ScrollView@WebCore@@UBE?AVIntRect@2@W4VisibleContentRectIncludesScrollbars@ScrollableArea@2@@Z, ?visibleContentRect@ScrollView@WebCore@@UEAA?AVIntRect@2@W4VisibleContentRectIncludesScrollbars@ScrollableArea@2@@Z)
+#endif
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKitWebKitvcxprojWebKitGUIDWebKitGUIDvcxproj"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -59,6 +59,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;true&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -69,6 +70,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;true&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -79,6 +81,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;false&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -89,6 +92,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;false&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -99,6 +103,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;false&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -113,6 +118,7 @@
</span><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Label=&quot;Configuration&quot; Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'&quot;&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitWebKitxcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/WebKit.xcodeproj/project.pbxproj (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/WebKit.xcodeproj/project.pbxproj        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/WebKit.xcodeproj/project.pbxproj        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -2100,7 +2100,7 @@
</span><span class="cx">                         );
</span><span class="cx">                         runOnlyForDeploymentPostprocessing = 0;
</span><span class="cx">                         shellPath = /bin/sh;
</span><del>-                        shellScript = &quot;if [[ \&quot;${MACOSX_DEPLOYMENT_TARGET}\&quot; &gt; \&quot;10.5\&quot; &amp;&amp; \&quot;${CONFIGURATION}\&quot; != \&quot;Production\&quot; &amp;&amp; \&quot;${ACTION}\&quot; == \&quot;build\&quot; ]]; then\n    if [[ ! -e \&quot;${CONFIGURATION_BUILD_DIR}/WebKit.framework/WebKitPluginHost.app\&quot; ]]; then\n       ln -s /System/Library/Frameworks/WebKit.framework/WebKitPluginHost.app \&quot;${CONFIGURATION_BUILD_DIR}/WebKit.framework/WebKitPluginHost.app\&quot;\n    fi\nfi\n&quot;;
</del><ins>+                        shellScript = &quot;if [[ \&quot;${CONFIGURATION}\&quot; != \&quot;Production\&quot; &amp;&amp; \&quot;${ACTION}\&quot; == \&quot;build\&quot; ]]; then\n    if [[ ! -e \&quot;${CONFIGURATION_BUILD_DIR}/WebKit.framework/WebKitPluginHost.app\&quot; ]]; then\n       ln -s /System/Library/Frameworks/WebKit.framework/WebKitPluginHost.app \&quot;${CONFIGURATION_BUILD_DIR}/WebKit.framework/WebKitPluginHost.app\&quot;\n    fi\nfi\n&quot;;
</ins><span class="cx">                 };
</span><span class="cx">                 939811300824BF01008DF038 /* Make Frameworks Symbolic Link */ = {
</span><span class="cx">                         isa = PBXShellScriptBuildPhase;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitblackberryApiWebPagecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/blackberry/Api/WebPage.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/blackberry/Api/WebPage.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/blackberry/Api/WebPage.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -118,7 +118,6 @@
</span><span class="cx"> #include &quot;RenderWidget.h&quot;
</span><span class="cx"> #include &quot;ScriptController.h&quot;
</span><span class="cx"> #include &quot;ScriptSourceCode.h&quot;
</span><del>-#include &quot;ScriptValue.h&quot;
</del><span class="cx"> #include &quot;ScrollTypes.h&quot;
</span><span class="cx"> #include &quot;SecurityPolicy.h&quot;
</span><span class="cx"> #include &quot;SelectionHandler.h&quot;
</span><span class="lines">@@ -172,6 +171,7 @@
</span><span class="cx"> #include &lt;JavaScriptCore/JSContextRef.h&gt;
</span><span class="cx"> #include &lt;JavaScriptCore/JSStringRef.h&gt;
</span><span class="cx"> #include &lt;SharedPointer.h&gt;
</span><ins>+#include &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> #include &lt;cmath&gt;
</span><span class="cx"> #include &lt;sys/keycodes.h&gt;
</span><span class="cx"> #include &lt;unicode/ustring.h&gt; // platform ICU
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitblackberryChangeLog"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/blackberry/ChangeLog (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/blackberry/ChangeLog        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/blackberry/ChangeLog        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,3 +1,9 @@
</span><ins>+2014-01-23  Mark Hahnenberg  &lt;mhahnenberg@apple.com&gt;
+
+        Merge branch up to ToT r160556.
+
+        * Api/WebPage.cpp:
+
</ins><span class="cx"> 2013-12-03  Joseph Pecoraro  &lt;pecoraro@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Web Inspector: Push Remote Inspector debugging connection management into JavaScriptCore
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKiteflChangeLog"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/efl/ChangeLog (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/efl/ChangeLog        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/efl/ChangeLog        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,3 +1,10 @@
</span><ins>+2014-01-23  Mark Hahnenberg  &lt;mhahnenberg@apple.com&gt;
+
+        Merge branch up to ToT r160556.
+
+        * WebCoreSupport/DumpRenderTreeSupportEfl.cpp:
+        * ewk/ewk_frame.cpp:
+
</ins><span class="cx"> 2013-12-03  Joseph Pecoraro  &lt;pecoraro@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Web Inspector: Push Remote Inspector debugging connection management into JavaScriptCore
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKiteflWebCoreSupportDumpRenderTreeSupportEflcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/efl/WebCoreSupport/DumpRenderTreeSupportEfl.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/efl/WebCoreSupport/DumpRenderTreeSupportEfl.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/efl/WebCoreSupport/DumpRenderTreeSupportEfl.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -59,9 +59,9 @@
</span><span class="cx"> #include &lt;RuntimeEnabledFeatures.h&gt;
</span><span class="cx"> #include &lt;SchemeRegistry.h&gt;
</span><span class="cx"> #include &lt;ScriptController.h&gt;
</span><del>-#include &lt;ScriptValue.h&gt;
</del><span class="cx"> #include &lt;Settings.h&gt;
</span><span class="cx"> #include &lt;TextIterator.h&gt;
</span><ins>+#include &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> #include &lt;bindings/js/GCController.h&gt;
</span><span class="cx"> #include &lt;history/HistoryItem.h&gt;
</span><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKiteflewkewk_framecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/efl/ewk/ewk_frame.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/efl/ewk/ewk_frame.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/efl/ewk/ewk_frame.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -53,7 +53,6 @@
</span><span class="cx"> #include &quot;ProgressTracker.h&quot;
</span><span class="cx"> #include &quot;ResourceRequest.h&quot;
</span><span class="cx"> #include &quot;ScriptController.h&quot;
</span><del>-#include &quot;ScriptValue.h&quot;
</del><span class="cx"> #include &quot;SharedBuffer.h&quot;
</span><span class="cx"> #include &quot;SubstituteData.h&quot;
</span><span class="cx"> #include &quot;WindowsKeyboardCodes.h&quot;
</span><span class="lines">@@ -65,6 +64,7 @@
</span><span class="cx"> #include &lt;Ecore_Input.h&gt;
</span><span class="cx"> #include &lt;Eina.h&gt;
</span><span class="cx"> #include &lt;Evas.h&gt;
</span><ins>+#include &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> #include &lt;eina_safety_checks.h&gt;
</span><span class="cx"> #include &lt;wtf/Assertions.h&gt;
</span><span class="cx"> #include &lt;wtf/PassRefPtr.h&gt;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitgtkChangeLog"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/gtk/ChangeLog (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/gtk/ChangeLog        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/gtk/ChangeLog        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,3 +1,60 @@
</span><ins>+2014-01-23  Mark Hahnenberg  &lt;mhahnenberg@apple.com&gt;
+
+        Merge branch up to ToT r160556.
+
+        * GNUmakefile.am:
+        * WebCoreSupport/BatteryClientGtk.cpp: Added.
+        (WebKit::BatteryClientGtk::BatteryClientGtk):
+        (WebKit::BatteryClientGtk::startUpdating):
+        (WebKit::BatteryClientGtk::stopUpdating):
+        (WebKit::BatteryClientGtk::batteryControllerDestroyed):
+        * WebCoreSupport/BatteryClientGtk.h: Added.
+        * tests/testatk.c:
+        (testWebkitAtkCaretOffsets):
+        (testWebkitAtkCaretOffsetsAndExtranousWhiteSpaces):
+        (testWebkitAtkComboBox):
+        (updateLoadingEventsResult):
+        (documentLoadingEventCallback):
+        (testWebkitAtkDocumentLoadingEvents):
+        (testWebkitAtkEmbeddedObjects):
+        (testWebkitAtkTextSelections):
+        (testWebkitAtkListsOfItems):
+        (main):
+        * tests/testatkroles.c:
+        (finish_loading):
+        (test_webkit_atk_get_role_document_frame):
+        (test_webkit_atk_get_role_heading):
+        (test_webkit_atk_get_role_image):
+        (test_webkit_atk_get_role_link):
+        (test_webkit_atk_get_role_list_and_item):
+        (test_webkit_atk_get_role_paragraph):
+        (test_webkit_atk_get_role_section):
+        (test_webkit_atk_get_role_table):
+        (test_webkit_atk_get_role_separator):
+        (test_webkit_atk_get_role_combobox):
+        (test_webkit_atk_get_role_form):
+        (test_webkit_atk_get_role_check_box):
+        (test_webkit_atk_get_role_entry):
+        (test_webkit_atk_get_role_label):
+        (test_webkit_atk_get_role_listbox):
+        (test_webkit_atk_get_role_password_text):
+        (test_webkit_atk_get_role_push_button):
+        (test_webkit_atk_get_role_radio_button):
+        * tests/testwebsettings.c:
+        (test_webkit_web_settings_copy):
+        * webkit/webkitdownload.cpp:
+        (DownloadClient::didReceiveData):
+        (DownloadClient::didReceiveBuffer):
+        * webkit/webkitwebsettings.cpp:
+        (webkit_web_settings_class_init):
+        (webkit_web_settings_set_property):
+        (webkit_web_settings_get_property):
+        * webkit/webkitwebsettingsprivate.h:
+        * webkit/webkitwebview.cpp:
+        (webkit_web_view_update_settings):
+        (webkit_web_view_settings_notify):
+        (webkit_web_view_init):
+
</ins><span class="cx"> 2013-12-05  Carlos Garcia Campos  &lt;cgarcia@igalia.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [GTK] Fix GObject introspection warnings in webkitspellchecker
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitgtkGNUmakefileam"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/gtk/GNUmakefile.am (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/gtk/GNUmakefile.am        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/gtk/GNUmakefile.am        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -126,6 +126,7 @@
</span><span class="cx">         $(PNG_LIBS) \
</span><span class="cx">         $(SQLITE3_LIBS) \
</span><span class="cx">         $(UNICODE_LIBS) \
</span><ins>+        $(UPOWER_GLIB_LIBS) \
</ins><span class="cx">         $(WEBP_LIBS) \
</span><span class="cx">         $(XCOMPOSITE_LIBS) \
</span><span class="cx">         $(XDAMAGE_LIBS) \
</span><span class="lines">@@ -192,6 +193,8 @@
</span><span class="cx">         Source/WebKit/gtk/WebCoreSupport/AcceleratedCompositingContext.h \
</span><span class="cx">         Source/WebKit/gtk/WebCoreSupport/AcceleratedCompositingContextGL.cpp \
</span><span class="cx">         Source/WebKit/gtk/WebCoreSupport/AssertMatchingEnums.cpp \
</span><ins>+        Source/WebKit/gtk/WebCoreSupport/BatteryClientGtk.cpp \
+        Source/WebKit/gtk/WebCoreSupport/BatteryClientGtk.h \
</ins><span class="cx">         Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp \
</span><span class="cx">         Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.h \
</span><span class="cx">         Source/WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp \
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitgtkWebCoreSupportBatteryClientGtkcpp"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebKit/gtk/WebCoreSupport/BatteryClientGtk.cpp (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/gtk/WebCoreSupport/BatteryClientGtk.cpp                                (rev 0)
+++ branches/jsCStack/Source/WebKit/gtk/WebCoreSupport/BatteryClientGtk.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,50 @@
</span><ins>+/*
+ * Copyright (C) 2013 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;BatteryClientGtk.h&quot;
+
+#if ENABLE(BATTERY_STATUS)
+
+#include &quot;NotImplemented.h&quot;
+
+namespace WebKit {
+
+BatteryClientGtk::BatteryClientGtk()
+{
+}
+
+void BatteryClientGtk::startUpdating()
+{
+    notImplemented();
+}
+
+void BatteryClientGtk::stopUpdating()
+{
+    notImplemented();
+}
+
+void BatteryClientGtk::batteryControllerDestroyed()
+{
+    notImplemented();
+}
+
+} // namespace WebKit
+
+#endif // ENABLE(BATTERY_STATUS)
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKitgtkWebCoreSupportBatteryClientGtkh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebKit/gtk/WebCoreSupport/BatteryClientGtk.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/gtk/WebCoreSupport/BatteryClientGtk.h                                (rev 0)
+++ branches/jsCStack/Source/WebKit/gtk/WebCoreSupport/BatteryClientGtk.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,43 @@
</span><ins>+/*
+ * Copyright (C) 2013 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef BatteryClientGtk_h
+#define BatteryClientGtk_h
+
+#if ENABLE(BATTERY_STATUS)
+
+#include &quot;BatteryClient.h&quot;
+
+namespace WebKit {
+
+class BatteryClientGtk : public WebCore::BatteryClient {
+public:
+    BatteryClientGtk();
+
+    // WebCore::BatteryClient
+    virtual void startUpdating();
+    virtual void stopUpdating();
+    virtual void batteryControllerDestroyed();
+};
+
+} // namespace WebKit
+
+#endif // ENABLE(BATTERY_STATUS)
+
+#endif // BatteryClientGtk_h
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKitgtkteststestatkc"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/gtk/tests/testatk.c (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/gtk/tests/testatk.c        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/gtk/tests/testatk.c        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -31,30 +31,10 @@
</span><span class="cx"> 
</span><span class="cx"> static const char* contents = &quot;&lt;html&gt;&lt;body&gt;&lt;p&gt;This is a test. This is the second sentence. And this the third.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;&quot;;
</span><span class="cx"> 
</span><del>-static const char* contentsWithNewlines = &quot;&lt;html&gt;&lt;body&gt;&lt;p&gt;This is a test. \n\nThis\n is the second sentence. And this the third.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;&quot;;
-
-static const char* contentsWithPreformattedText = &quot;&lt;html&gt;&lt;body&gt;&lt;pre&gt;\n\t\n\tfirst line\n\tsecond line\n\t\n&lt;/pre&gt;&lt;/body&gt;&lt;/html&gt;&quot;;
-
-static const char* contentsWithSpecialChars = &quot;&lt;html&gt;&lt;body&gt;&lt;p&gt;&amp;laquo;&amp;nbsp;This is a paragraph with &amp;ldquo;special&amp;rdquo; characters inside.&amp;nbsp;&amp;raquo;&lt;/p&gt;&lt;ul&gt;&lt;li style='max-width:100px;'&gt;List item with some text that wraps across different lines.&lt;/li&gt;&lt;li style='max-width:100px;'&gt;&lt;p&gt;List item with some text that wraps across different lines.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/body&gt;&lt;/html&gt;&quot;;
-
-static const char* contentsInTextarea = &quot;&lt;html&gt;&lt;body&gt;&lt;textarea cols='80'&gt;This is a test. This is the second sentence. And this the third.&lt;/textarea&gt;&lt;/body&gt;&lt;/html&gt;&quot;;
-
-static const char* contentsInTextInput = &quot;&lt;html&gt;&lt;body&gt;&lt;input type='text' size='80' value='This is a test. This is the second sentence. And this the third.'/&gt;&lt;/body&gt;&lt;/html&gt;&quot;;
-
-static const char* contentsInParagraphAndBodySimple = &quot;&lt;html&gt;&lt;body&gt;&lt;p&gt;This is a test.&lt;/p&gt;Hello world.&lt;/body&gt;&lt;/html&gt;&quot;;
-
-static const char* contentsInParagraphAndBodyModerate = &quot;&lt;html&gt;&lt;body&gt;&lt;p&gt;This is a test.&lt;/p&gt;Hello world.&lt;br /&gt;&lt;font color='#00cc00'&gt;This sentence is green.&lt;/font&gt;&lt;br /&gt;This one is not.&lt;/body&gt;&lt;/html&gt;&quot;;
-
-static const char* contentsInTable = &quot;&lt;html&gt;&lt;body&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;foo&lt;/td&gt;&lt;td&gt;bar&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;&quot;;
-
</del><span class="cx"> static const char* contentsInTableWithHeaders = &quot;&lt;html&gt;&lt;body&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt;foo&lt;/th&gt;&lt;th&gt;bar&lt;/th&gt;&lt;th colspan='2'&gt;baz&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;qux&lt;/th&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th rowspan='2'&gt;quux&lt;/th&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;corge&lt;/th&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;&quot;;
</span><span class="cx"> 
</span><span class="cx"> static const char* contentsWithExtraneousWhiteSpaces = &quot;&lt;html&gt;&lt;head&gt;&lt;body&gt;&lt;p&gt;This\n                          paragraph\n                                                      is\n                                                                                                                                                                                                                                                                                                                                                                            borked!&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;&quot;;
</span><span class="cx"> 
</span><del>-static const char* contentsWithWrappedLines = &quot;&lt;html&gt;&lt;body&gt;&lt;p style='max-width:150px;'&gt;This is one line wrapped because of the maximum width of its container.&lt;/p&gt;&lt;p&gt;This is another line wrapped&lt;br&gt;because of one forced&lt;br&gt;line break in the middle.&lt;/body&gt;&lt;/html&gt;&quot;;
-
-static const char* contentsWithEmbeddedObjects = &quot;&lt;html&gt;&lt;body&gt;This is one line containing two &lt;img&gt; embedded objects &lt;img&gt; in the middle.&lt;/body&gt;&lt;/html&gt;&quot;;
-
</del><span class="cx"> static const char* comboBoxSelector = &quot;&lt;html&gt;&lt;body&gt;&lt;select&gt;&lt;option selected value='foo'&gt;foo&lt;/option&gt;&lt;option value='bar'&gt;bar&lt;/option&gt;&lt;/select&gt;&lt;/body&gt;&lt;/html&gt;&quot;;
</span><span class="cx"> 
</span><span class="cx"> static const char* embeddedObjects = &quot;&lt;html&gt;&lt;body&gt;&lt;p&gt;Choose: &lt;input value='foo' type='checkbox'/&gt;foo &lt;input value='bar' type='checkbox'/&gt;bar (pick one)&lt;/p&gt;&lt;p&gt;Choose: &lt;select name='foo'&gt;&lt;option&gt;bar&lt;/option&gt;&lt;option&gt;baz&lt;/option&gt;&lt;/select&gt; (pick one)&lt;/p&gt;&lt;p&gt;&lt;input name='foobarbutton' value='foobar' type='button'/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;&quot;;
</span><span class="lines">@@ -122,10 +102,6 @@
</span><span class="cx">     g_assert(ATK_IS_TEXT(header));
</span><span class="cx">     g_signal_connect(header, &quot;text-caret-moved&quot;, G_CALLBACK(textCaretMovedCallback), 0);
</span><span class="cx"> 
</span><del>-    gchar* text = atk_text_get_text(ATK_TEXT(header), 0, -1);
-    g_assert_cmpstr(text, ==, &quot;A text header&quot;);
-    g_free (text);
-
</del><span class="cx">     /* It should be possible to place the caret inside a header. */
</span><span class="cx">     gboolean result = atk_text_set_caret_offset(ATK_TEXT(header), 5);
</span><span class="cx">     g_assert_cmpint(result, ==, TRUE);
</span><span class="lines">@@ -137,10 +113,6 @@
</span><span class="cx">     g_assert(ATK_IS_TEXT(paragraph));
</span><span class="cx">     g_signal_connect(paragraph, &quot;text-caret-moved&quot;, G_CALLBACK(textCaretMovedCallback), 0);
</span><span class="cx"> 
</span><del>-    text = atk_text_get_text(ATK_TEXT(paragraph), 0, -1);
-    g_assert_cmpstr(text, ==, &quot;A paragraph with a link in the middle&quot;);
-    g_free (text);
-
</del><span class="cx">     /* It should be possible to place the caret inside a paragraph and a link. */
</span><span class="cx">     result = atk_text_set_caret_offset(ATK_TEXT(paragraph), 5);
</span><span class="cx">     g_assert_cmpint(result, ==, TRUE);
</span><span class="lines">@@ -162,9 +134,6 @@
</span><span class="cx"> 
</span><span class="cx">     AtkObject* link = atk_object_ref_accessible_child(paragraph, 0);
</span><span class="cx">     g_assert(ATK_IS_TEXT(link));
</span><del>-    text = atk_text_get_text(ATK_TEXT(link), 0, -1);
-    g_assert_cmpstr(text, ==, &quot;with a link&quot;);
-    g_free (text);
</del><span class="cx"> 
</span><span class="cx">     result = atk_text_set_caret_offset(ATK_TEXT(link), 5);
</span><span class="cx">     g_assert_cmpint(result, ==, TRUE);
</span><span class="lines">@@ -179,24 +148,8 @@
</span><span class="cx">     g_assert_cmpint(atk_object_get_n_accessible_children(list), ==, 3);
</span><span class="cx"> 
</span><span class="cx">     AtkObject* listItem = atk_object_ref_accessible_child(list, 0);
</span><del>-    g_assert(ATK_IS_TEXT(listItem));
-    text = atk_text_get_text(ATK_TEXT(listItem), 0, -1);
-    g_assert_cmpstr(text, ==, &quot;1. A list item&quot;);
-    g_free (text);
-    g_object_unref(listItem);
-
-    listItem = atk_object_ref_accessible_child(list, 1);
-    g_assert(ATK_IS_TEXT(listItem));
-    text = atk_text_get_text(ATK_TEXT(listItem), 0, -1);
-    g_assert_cmpstr(text, ==, &quot;2. Block span in a list item\nInline span in a list item&quot;);
-    g_free (text);
-    g_object_unref(listItem);
-
</del><span class="cx">     listItem = atk_object_ref_accessible_child(list, 2);
</span><span class="cx">     g_assert(ATK_IS_TEXT(listItem));
</span><del>-    text = atk_text_get_text(ATK_TEXT(listItem), 0, -1);
-    g_assert_cmpstr(text, ==, &quot;3. Block span in a link in a list item\nInline span in a link in a list item&quot;);
-    g_free (text);
</del><span class="cx"> 
</span><span class="cx">     /* It's not possible to place the caret inside an item's marker. */
</span><span class="cx">     result = atk_text_set_caret_offset(ATK_TEXT(listItem), 1);
</span><span class="lines">@@ -214,21 +167,15 @@
</span><span class="cx"> 
</span><span class="cx">     AtkObject* comboBox = atk_object_ref_accessible_child(panel, 0);
</span><span class="cx">     g_assert(ATK_IS_OBJECT(comboBox));
</span><del>-    g_assert(!ATK_IS_TEXT(comboBox));
</del><span class="cx">     g_assert(atk_object_get_role(comboBox) == ATK_ROLE_COMBO_BOX);
</span><span class="cx"> 
</span><span class="cx">     AtkObject* menuPopup = atk_object_ref_accessible_child(comboBox, 0);
</span><span class="cx">     g_assert(ATK_IS_OBJECT(menuPopup));
</span><del>-    g_assert(!ATK_IS_TEXT(menuPopup));
</del><span class="cx">     g_assert(atk_object_get_role(menuPopup) == ATK_ROLE_MENU);
</span><span class="cx"> 
</span><span class="cx">     AtkObject* comboBoxOption = atk_object_ref_accessible_child(menuPopup, 0);
</span><span class="cx">     g_assert(ATK_IS_OBJECT(comboBoxOption));
</span><span class="cx">     g_assert(atk_object_get_role(comboBoxOption) == ATK_ROLE_MENU_ITEM);
</span><del>-    g_assert(ATK_IS_TEXT(comboBoxOption));
-    text = atk_text_get_text(ATK_TEXT(comboBoxOption), 0, -1);
-    g_assert_cmpstr(text, ==, &quot;An option in a combo box&quot;);
-    g_free(text);
</del><span class="cx"> 
</span><span class="cx">     /* It's not possible to place the caret inside an option for a combobox. */
</span><span class="cx">     result = atk_text_set_caret_offset(ATK_TEXT(comboBoxOption), 1);
</span><span class="lines">@@ -237,10 +184,6 @@
</span><span class="cx">     AtkObject* textEntry = atk_object_ref_accessible_child(panel, 1);
</span><span class="cx">     g_assert(ATK_IS_OBJECT(textEntry));
</span><span class="cx">     g_assert(atk_object_get_role(textEntry) == ATK_ROLE_ENTRY);
</span><del>-    g_assert(ATK_IS_TEXT(textEntry));
-    text = atk_text_get_text(ATK_TEXT(textEntry), 0, -1);
-    g_assert_cmpstr(text, ==, &quot;foo bar baz&quot;);
-    g_free(text);
</del><span class="cx"> 
</span><span class="cx">     result = atk_text_set_caret_offset(ATK_TEXT(textEntry), 5);
</span><span class="cx">     g_assert_cmpint(result, ==, TRUE);
</span><span class="lines">@@ -249,65 +192,18 @@
</span><span class="cx"> 
</span><span class="cx">     AtkObject* table = atk_object_ref_accessible_child(object, 4);
</span><span class="cx">     g_assert(ATK_IS_OBJECT(table));
</span><del>-    g_assert(!ATK_IS_TEXT(table));
</del><span class="cx">     g_assert(atk_object_get_role(table) == ATK_ROLE_TABLE);
</span><span class="cx">     g_assert_cmpint(atk_object_get_n_accessible_children(table), ==, 4);
</span><span class="cx"> 
</span><span class="cx">     AtkObject* tableCell = atk_object_ref_accessible_child(table, 0);
</span><del>-    g_assert(ATK_IS_TEXT(tableCell));
</del><span class="cx">     g_assert(atk_object_get_role(tableCell) == ATK_ROLE_TABLE_CELL);
</span><del>-    text = atk_text_get_text(ATK_TEXT(tableCell), 0, -1);
-    g_assert_cmpstr(text, ==, &quot;a table cell&quot;);
-    g_free(text);
-
</del><span class="cx">     result = atk_text_set_caret_offset(ATK_TEXT(tableCell), 2);
</span><span class="cx">     g_assert_cmpint(result, ==, TRUE);
</span><span class="cx">     offset = atk_text_get_caret_offset(ATK_TEXT(tableCell));
</span><span class="cx">     g_assert_cmpint(offset, ==, 2);
</span><del>-    g_object_unref(tableCell);
</del><span class="cx"> 
</span><del>-    /* Even empty table cells should implement AtkText, but report an empty string */
-    tableCell = atk_object_ref_accessible_child(table, 1);
-    g_assert(ATK_IS_TEXT(tableCell));
-    g_assert(atk_object_get_role(tableCell) == ATK_ROLE_TABLE_CELL);
-    text = atk_text_get_text(ATK_TEXT(tableCell), 0, -1);
-    g_assert_cmpstr(text, ==, &quot;&quot;);
-    g_free(text);
-    g_object_unref(tableCell);
-
-    tableCell = atk_object_ref_accessible_child(table, 2);
-    g_assert(ATK_IS_TEXT(tableCell));
-    g_assert(atk_object_get_role(tableCell) == ATK_ROLE_TABLE_CELL);
-    text = atk_text_get_text(ATK_TEXT(tableCell), 0, -1);
-    g_assert_cmpstr(text, ==, &quot;Block span in a link in a table cell\nInline span in a link in a table cell&quot;);
-    g_free(text);
-    g_object_unref(tableCell);
-
-    tableCell = atk_object_ref_accessible_child(table, 3);
-    g_assert(ATK_IS_TEXT(tableCell));
-    g_assert(atk_object_get_role(tableCell) == ATK_ROLE_TABLE_CELL);
-    text = atk_text_get_text(ATK_TEXT(tableCell), 0, -1);
-    g_assert_cmpstr(text, ==, &quot;Block span in a table cell\nInline span in a table cell&quot;);
-    g_free(text);
-
-    header = atk_object_ref_accessible_child(object, 5);
-    g_assert(ATK_IS_TEXT(header));
-    g_assert(atk_object_get_role(header) == ATK_ROLE_HEADING);
-    text = atk_text_get_text(ATK_TEXT(header), 0, -1);
-    g_assert_cmpstr(text, ==, &quot;Block span in a link in a heading\nInline span in a link in a heading&quot;);
-    g_free(text);
-    g_object_unref(header);
-
-    header = atk_object_ref_accessible_child(object, 6);
-    g_assert(ATK_IS_TEXT(header));
-    g_assert(atk_object_get_role(header) == ATK_ROLE_HEADING);
-    text = atk_text_get_text(ATK_TEXT(header), 0, -1);
-    g_assert_cmpstr(text, ==, &quot;Block span in a heading\nInline span in a heading&quot;);
-    g_free(text);
-
</del><span class="cx">     g_free(textCaretMovedResult);
</span><span class="cx"> 
</span><del>-    g_object_unref(header);
</del><span class="cx">     g_object_unref(paragraph);
</span><span class="cx">     g_object_unref(link);
</span><span class="cx">     g_object_unref(list);
</span><span class="lines">@@ -343,10 +239,6 @@
</span><span class="cx">     AtkText* textObject = ATK_TEXT(object);
</span><span class="cx">     g_assert(ATK_IS_TEXT(textObject));
</span><span class="cx"> 
</span><del>-    gchar* text = atk_text_get_text(textObject, 0, -1);
-    g_assert_cmpstr(text, ==, &quot;This paragraph is borked!&quot;);
-    g_free(text);
-
</del><span class="cx">     gint characterCount = atk_text_get_character_count(textObject);
</span><span class="cx">     g_assert_cmpint(characterCount, ==, 25);
</span><span class="cx"> 
</span><span class="lines">@@ -441,25 +333,6 @@
</span><span class="cx">     g_assert(selectedItem == item2);
</span><span class="cx">     g_object_unref(selectedItem);
</span><span class="cx"> 
</span><del>-    /* Check the implementation of the AtkText interface. */
-    g_assert(ATK_IS_TEXT(item1));
-    AtkText* atkText = ATK_TEXT(item1);
-    char *text = atk_text_get_text(atkText, 0, -1);
-    g_assert_cmpstr(text, ==, &quot;foo&quot;);
-    g_free(text);
-    text = atk_text_get_text(atkText, 0, 2);
-    g_assert_cmpstr(text, ==, &quot;fo&quot;);
-    g_free(text);
-
-    g_assert(ATK_IS_TEXT(item2));
-    atkText = ATK_TEXT(item2);
-    text = atk_text_get_text(atkText, 0, -1);
-    g_assert_cmpstr(text, ==, &quot;bar&quot;);
-    g_free(text);
-    text = atk_text_get_text(atkText, 1, 3);
-    g_assert_cmpstr(text, ==, &quot;ar&quot;);
-    g_free(text);
-
</del><span class="cx">     g_object_unref(formObject);
</span><span class="cx">     g_object_unref(comboBox);
</span><span class="cx">     g_object_unref(menuPopup);
</span><span class="lines">@@ -533,11 +406,6 @@
</span><span class="cx">     g_assert(ATK_IS_TEXT(paragraph1));
</span><span class="cx">     g_assert(ATK_IS_HYPERTEXT(paragraph1));
</span><span class="cx"> 
</span><del>-    const gchar* expectedText = &quot;Choose: \357\277\274foo \357\277\274bar (pick one)&quot;;
-    char* text = atk_text_get_text(paragraph1, 0, -1);
-    g_assert_cmpstr(text, ==, expectedText);
-    g_free(text);
-
</del><span class="cx">     gint nLinks = atk_hypertext_get_n_links(ATK_HYPERTEXT(paragraph1));
</span><span class="cx">     g_assert_cmpint(nLinks, ==, 2);
</span><span class="cx"> 
</span><span class="lines">@@ -552,14 +420,8 @@
</span><span class="cx">     g_assert_cmpstr(atk_hyperlink_get_uri(hLink, 0), ==, 0);
</span><span class="cx"> 
</span><span class="cx">     AtkText* paragraph2 = ATK_TEXT(atk_object_ref_accessible_child(object, 1));
</span><del>-    g_assert(ATK_IS_TEXT(paragraph2));
</del><span class="cx">     g_assert(ATK_IS_HYPERTEXT(paragraph2));
</span><span class="cx"> 
</span><del>-    expectedText = &quot;Choose: \357\277\274 (pick one)&quot;;
-    text = atk_text_get_text(paragraph2, 0, -1);
-    g_assert_cmpstr(text, ==, expectedText);
-    g_free(text);
-
</del><span class="cx">     nLinks = atk_hypertext_get_n_links(ATK_HYPERTEXT(paragraph2));
</span><span class="cx">     g_assert_cmpint(nLinks, ==, 1);
</span><span class="cx"> 
</span><span class="lines">@@ -574,14 +436,8 @@
</span><span class="cx">     g_assert_cmpstr(atk_hyperlink_get_uri(hLink, 0), ==, 0);
</span><span class="cx"> 
</span><span class="cx">     AtkText* paragraph3 = ATK_TEXT(atk_object_ref_accessible_child(object, 2));
</span><del>-    g_assert(ATK_IS_TEXT(paragraph3));
</del><span class="cx">     g_assert(ATK_IS_HYPERTEXT(paragraph3));
</span><span class="cx"> 
</span><del>-    expectedText = &quot;\357\277\274&quot;;
-    text = atk_text_get_text(paragraph3, 0, -1);
-    g_assert_cmpstr(text, ==, expectedText);
-    g_free(text);
-
</del><span class="cx">     nLinks = atk_hypertext_get_n_links(ATK_HYPERTEXT(paragraph3));
</span><span class="cx">     g_assert_cmpint(nLinks, ==, 1);
</span><span class="cx"> 
</span><span class="lines">@@ -601,968 +457,6 @@
</span><span class="cx">     g_object_unref(webView);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-#if !ATK_CHECK_VERSION(2, 10, 0)
-typedef gchar* (*AtkGetTextFunction) (AtkText*, gint, AtkTextBoundary, gint*, gint*);
-
-static void testGetTextFunction(AtkText* textObject, AtkGetTextFunction fn, AtkTextBoundary boundary, gint offset, const char* textResult, gint startOffsetResult, gint endOffsetResult)
-{
-    gint startOffset;
-    gint endOffset;
-    char* text = fn(textObject, offset, boundary, &amp;startOffset, &amp;endOffset);
-    g_assert_cmpstr(text, ==, textResult);
-    g_assert_cmpint(startOffset, ==, startOffsetResult);
-    g_assert_cmpint(endOffset, ==, endOffsetResult);
-    g_free(text);
-}
-
-static void runGetTextTests(AtkText* textObject)
-{
-    char* text = atk_text_get_text(textObject, 0, -1);
-    g_assert_cmpstr(text, ==, &quot;This is a test. This is the second sentence. And this the third.&quot;);
-    g_free(text);
-
-    /* ATK_TEXT_BOUNDARY_CHAR */
-    testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_CHAR,
-                        0, &quot;T&quot;, 0, 1);
-
-    testGetTextFunction(textObject, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_CHAR,
-                        0, &quot;h&quot;, 1, 2);
-
-    testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_CHAR,
-                        0, &quot;&quot;, 0, 0);
-
-    testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_CHAR,
-                        1, &quot;T&quot;, 0, 1);
-
-    /* ATK_TEXT_BOUNDARY_WORD_START */
-    testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_START,
-                        0, &quot;This &quot;, 0, 5);
-
-    testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_START,
-                        4, &quot;This &quot;, 0, 5);
-
-    testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_START,
-                        10, &quot;test. &quot;, 10, 16);
-
-    testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_START,
-                        58, &quot;third.&quot;, 58, 64);
-
-    testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_START,
-                        64, &quot;third.&quot;, 58, 64);
-
-    testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_WORD_START,
-                        0, &quot;&quot;, 0, 0);
-
-    testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_WORD_START,
-                        5, &quot;This &quot;, 0, 5);
-
-    testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_WORD_START,
-                        7, &quot;This &quot;, 0, 5);
-
-    testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_WORD_START,
-                        64, &quot;the &quot;, 54, 58);
-
-    testGetTextFunction(textObject, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_WORD_START,
-                        0, &quot;is &quot;, 5, 8);
-
-    testGetTextFunction(textObject, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_WORD_START,
-                        4, &quot;is &quot;, 5, 8);
-
-    testGetTextFunction(textObject, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_WORD_START,
-                        3, &quot;is &quot;, 5, 8);
-
-    testGetTextFunction(textObject, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_WORD_START,
-                        64, &quot;&quot;, 64, 64);
-
-    /* ATK_TEXT_BOUNDARY_WORD_END */
-    testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_END,
-                        0, &quot;This&quot;, 0, 4);
-
-    testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_END,
-                        4, &quot; is&quot;, 4, 7);
-
-    testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_END,
-                        5, &quot; is&quot;, 4, 7);
-
-    testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_END,
-                        9, &quot; test&quot;, 9, 14);
-
-    testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_END,
-                        58, &quot; third&quot;, 57, 63);
-
-    testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_END,
-                        64, &quot;.&quot;, 63, 64);
-
-    testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_WORD_END,
-                        0, &quot;&quot;, 0, 0);
-
-    testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_WORD_END,
-                        5, &quot;This&quot;, 0, 4);
-
-    testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_WORD_END,
-                        4, &quot;This&quot;, 0, 4);
-
-    testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_WORD_END,
-                        7, &quot; is&quot;, 4, 7);
-
-    testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_WORD_END,
-                        64, &quot; third&quot;, 57, 63);
-
-    testGetTextFunction(textObject, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_WORD_END,
-                        0, &quot; is&quot;, 4, 7);
-
-    testGetTextFunction(textObject, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_WORD_END,
-                        5, &quot; a&quot;, 7, 9);
-
-    testGetTextFunction(textObject, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_WORD_END,
-                        4, &quot; a&quot;, 7, 9);
-
-    testGetTextFunction(textObject, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_WORD_END,
-                        64, &quot;&quot;, 64, 64);
-
-    /* ATK_TEXT_BOUNDARY_SENTENCE_START */
-    testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_SENTENCE_START,
-                        0, &quot;This is a test. &quot;, 0, 16);
-
-    testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_SENTENCE_START,
-                        15, &quot;This is a test. &quot;, 0, 16);
-
-    testGetTextFunction(textObject, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_SENTENCE_START,
-                        0, &quot;This is the second sentence. &quot;, 16, 45);
-
-    testGetTextFunction(textObject, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_SENTENCE_START,
-                        15, &quot;This is the second sentence. &quot;, 16, 45);
-
-    testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_SENTENCE_START,
-                        16, &quot;This is a test. &quot;, 0, 16);
-
-    testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_SENTENCE_START,
-                        44, &quot;This is a test. &quot;, 0, 16);
-
-    testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_SENTENCE_START,
-                        15, &quot;&quot;, 0, 0);
-
-    /* ATK_TEXT_BOUNDARY_SENTENCE_END */
-    testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_SENTENCE_END,
-                        0, &quot;This is a test.&quot;, 0, 15);
-
-    testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_SENTENCE_END,
-                        15, &quot; This is the second sentence.&quot;, 15, 44);
-
-    testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_SENTENCE_END,
-                        16, &quot; This is the second sentence.&quot;, 15, 44);
-
-    testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_SENTENCE_END,
-                        17, &quot; This is the second sentence.&quot;, 15, 44);
-
-    testGetTextFunction(textObject, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_SENTENCE_END,
-                        0, &quot; This is the second sentence.&quot;, 15, 44);
-
-    testGetTextFunction(textObject, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_SENTENCE_END,
-                        15, &quot; And this the third.&quot;, 44, 64);
-
-    testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_SENTENCE_END,
-                        16, &quot;This is a test.&quot;, 0, 15);
-
-    testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_SENTENCE_END,
-                        15, &quot;This is a test.&quot;, 0, 15);
-
-    testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_SENTENCE_END,
-                        14, &quot;&quot;, 0, 0);
-
-    testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_SENTENCE_END,
-                        44, &quot; This is the second sentence.&quot;, 15, 44);
-
-    /* It's tricky to test these properly right now, since our a11y
-       implementation splits different lines in different a11y items. */
-    /* ATK_TEXT_BOUNDARY_LINE_START */
-    testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_LINE_START,
-                        0, &quot;This is a test. This is the second sentence. And this the third.&quot;, 0, 64);
-
-    /* ATK_TEXT_BOUNDARY_LINE_END */
-    testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_LINE_END,
-                        0, &quot;This is a test. This is the second sentence. And this the third.&quot;, 0, 64);
-
-    /* For objects implementing AtkEditableText, try to change the
-       exposed text and retrieve it again as a full line.
-       (see https://bugs.webkit.org/show_bug.cgi?id=72830) */
-    if (ATK_IS_EDITABLE_TEXT(textObject)) {
-        atk_editable_text_set_text_contents(ATK_EDITABLE_TEXT(textObject), &quot;foo bar baz&quot;);
-        testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_LINE_START, 0, &quot;foo bar baz&quot;, 0, 11);
-        testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_LINE_END, 0, &quot;foo bar baz&quot;, 0, 11);
-    }
-}
-
-static void testWebkitAtkGetTextAtOffset()
-{
-    WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
-    g_object_ref_sink(webView);
-    GtkAllocation allocation = { 0, 0, 800, 600 };
-    gtk_widget_size_allocate(GTK_WIDGET(webView), &amp;allocation);
-    webkit_web_view_load_string(webView, contents, 0, 0, 0);
-
-    /* Get to the inner AtkText object. */
-    AtkObject* object = getWebAreaObject(webView);
-    g_assert(object);
-    object = atk_object_ref_accessible_child(object, 0);
-    g_assert(object);
-
-    AtkText* textObject = ATK_TEXT(object);
-    g_assert(ATK_IS_TEXT(textObject));
-
-    runGetTextTests(textObject);
-
-    g_object_unref(object);
-    g_object_unref(webView);
-}
-
-static void testWebkitAtkGetTextAtOffsetNewlines()
-{
-    WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
-    g_object_ref_sink(webView);
-    GtkAllocation allocation = { 0, 0, 800, 600 };
-    gtk_widget_size_allocate(GTK_WIDGET(webView), &amp;allocation);
-    webkit_web_view_load_string(webView, contentsWithNewlines, 0, 0, 0);
-
-    /* Get to the inner AtkText object. */
-    AtkObject* object = getWebAreaObject(webView);
-    g_assert(object);
-    object = atk_object_ref_accessible_child(object, 0);
-    g_assert(object);
-
-    AtkText* textObject = ATK_TEXT(object);
-    g_assert(ATK_IS_TEXT(textObject));
-
-    runGetTextTests(textObject);
-
-    g_object_unref(object);
-    g_object_unref(webView);
-}
-
-static void testWebkitAtkGetTextAtOffsetTextarea()
-{
-    WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
-    g_object_ref_sink(webView);
-    GtkAllocation allocation = { 0, 0, 800, 600 };
-    gtk_widget_size_allocate(GTK_WIDGET(webView), &amp;allocation);
-    webkit_web_view_load_string(webView, contentsInTextarea, 0, 0, 0);
-
-    /* Get to the inner AtkText object. */
-    AtkObject* object = getWebAreaObject(webView);
-    g_assert(object);
-    AtkObject* child = atk_object_ref_accessible_child(object, 0);
-    g_assert(child);
-    AtkObject* grandchild = atk_object_ref_accessible_child(child, 0);
-    g_assert(grandchild);
-
-    AtkText* textObject = ATK_TEXT(grandchild);
-    g_assert(ATK_IS_TEXT(textObject));
-
-    runGetTextTests(textObject);
-
-    g_object_unref(child);
-    g_object_unref(grandchild);
-    g_object_unref(webView);
-}
-
-static void testWebkitAtkGetTextAtOffsetTextInput()
-{
-    WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
-    g_object_ref_sink(webView);
-    GtkAllocation allocation = { 0, 0, 800, 600 };
-    gtk_widget_size_allocate(GTK_WIDGET(webView), &amp;allocation);
-    webkit_web_view_load_string(webView, contentsInTextInput, 0, 0, 0);
-
-    /* Get to the inner AtkText object. */
-    AtkObject* object = getWebAreaObject(webView);
-    g_assert(object);
-    AtkObject* child = atk_object_ref_accessible_child(object, 0);
-    g_assert(child);
-    AtkObject* grandchild = atk_object_ref_accessible_child(child, 0);
-    g_assert(grandchild);
-
-    AtkText* textObject = ATK_TEXT(grandchild);
-    g_assert(ATK_IS_TEXT(textObject));
-
-    runGetTextTests(textObject);
-
-    g_object_unref(child);
-    g_object_unref(grandchild);
-    g_object_unref(webView);
-}
-
-static void testWebkitAtkGetTextAtOffsetWithPreformattedText()
-{
-    WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
-    g_object_ref_sink(webView);
-    GtkAllocation allocation = { 0, 0, 800, 600 };
-    gtk_widget_size_allocate(GTK_WIDGET(webView), &amp;allocation);
-    webkit_web_view_load_string(webView, contentsWithPreformattedText, 0, 0, 0);
-
-    AtkObject* object = getWebAreaObject(webView);
-    g_assert(object);
-
-    AtkObject* preformattedText = atk_object_ref_accessible_child(object, 0);
-    g_assert(ATK_IS_OBJECT(preformattedText));
-    g_assert(atk_object_get_role(preformattedText) == ATK_ROLE_PANEL);
-    g_assert(ATK_IS_TEXT(preformattedText));
-    char* text = atk_text_get_text(ATK_TEXT(preformattedText), 0, -1);
-    g_assert_cmpstr(text, ==, &quot;\t\n\tfirst line\n\tsecond line\n\t\n&quot;);
-    g_free(text);
-
-    /* Try retrieving all the lines indicating the position of the offsets at the beginning of each of them. */
-    testGetTextFunction(ATK_TEXT(preformattedText), atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_LINE_START, 0, &quot;\t\n&quot;, 0, 2);
-    testGetTextFunction(ATK_TEXT(preformattedText), atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_LINE_START, 2, &quot;\tfirst line\n&quot;, 2, 14);
-    testGetTextFunction(ATK_TEXT(preformattedText), atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_LINE_START, 14, &quot;\tsecond line\n&quot;, 14, 27);
-
-    g_object_unref(preformattedText);
-    g_object_unref(webView);
-}
-
-static void testWebkitAtkGetTextAtOffsetWithSpecialCharacters()
-{
-    WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
-    g_object_ref_sink(webView);
-    GtkAllocation allocation = { 0, 0, 800, 600 };
-    gtk_widget_size_allocate(GTK_WIDGET(webView), &amp;allocation);
-    webkit_web_view_load_string(webView, contentsWithSpecialChars, 0, 0, 0);
-
-    /* Get to the inner AtkText object. */
-    AtkObject* object = getWebAreaObject(webView);
-    g_assert(object);
-
-    AtkObject* paragraph = atk_object_ref_accessible_child(object, 0);
-    g_assert(ATK_IS_TEXT(paragraph));
-
-    gchar* expectedText = g_strdup(&quot;\302\253\302\240This is a paragraph with \342\200\234special\342\200\235 characters inside.\302\240\302\273&quot;);
-    char* text = atk_text_get_text(ATK_TEXT(paragraph), 0, -1);
-    g_assert_cmpstr(text, ==, expectedText);
-    g_free(text);
-
-    /* Check that getting the text with ATK_TEXT_BOUNDARY_LINE_START
-       and ATK_TEXT_BOUNDARY_LINE_END does not crash because of not
-       properly handling characters inside the UTF-8 string. */
-    testGetTextFunction(ATK_TEXT(paragraph), atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_LINE_START, 0, expectedText, 0, 57);
-    testGetTextFunction(ATK_TEXT(paragraph), atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_LINE_END, 0, expectedText, 0, 57);
-    g_free(expectedText);
-
-    AtkObject* list = atk_object_ref_accessible_child(object, 1);
-    g_assert(ATK_OBJECT(list));
-
-    AtkText* listItem = ATK_TEXT(atk_object_ref_accessible_child(list, 0));
-    g_assert(ATK_IS_TEXT(listItem));
-
-    text = atk_text_get_text(ATK_TEXT(listItem), 0, -1);
-    g_assert_cmpstr(text, ==, &quot;\342\200\242 List item with some text that wraps across different lines.&quot;);
-    g_free(text);
-
-    /* Check that getting the text with ATK_TEXT_BOUNDARY_LINE_START
-       and ATK_TEXT_BOUNDARY_LINE_END for line items with bullets
-       (special character) and wrapped text always return the right
-       piece of text for each line. */
-    testGetTextFunction(ATK_TEXT(listItem), atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_LINE_START, 3, &quot;\342\200\242 List item &quot;, 0, 12);
-    testGetTextFunction(ATK_TEXT(listItem), atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_LINE_START, 13, &quot;with some &quot;, 12, 22);
-    testGetTextFunction(ATK_TEXT(listItem), atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_LINE_END, 0, &quot;\342\200\242 List item&quot;, 0, 11);
-    testGetTextFunction(ATK_TEXT(listItem), atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_LINE_END, 12, &quot; with some&quot;, 11, 21);
-
-    g_object_unref(listItem);
-
-    listItem = ATK_TEXT(atk_object_ref_accessible_child(list, 1));
-    g_assert(ATK_IS_TEXT(listItem));
-
-    /* Check that placing the same text in a paragraph doesn't break things. */
-    text = atk_text_get_text(ATK_TEXT(listItem), 0, -1);
-    g_assert_cmpstr(text, ==, &quot;\342\200\242 List item with some text that wraps across different lines.&quot;);
-    g_free(text);
-
-    testGetTextFunction(ATK_TEXT(listItem), atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_LINE_START, 3, &quot;\342\200\242 List item &quot;, 0, 12);
-    testGetTextFunction(ATK_TEXT(listItem), atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_LINE_START, 13, &quot;with some &quot;, 12, 22);
-    testGetTextFunction(ATK_TEXT(listItem), atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_LINE_END, 0, &quot;\342\200\242 List item&quot;, 0, 11);
-    testGetTextFunction(ATK_TEXT(listItem), atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_LINE_END, 12, &quot; with some&quot;, 11, 21);
-
-    g_object_unref(list);
-    g_object_unref(listItem);
-    g_object_unref(paragraph);
-    g_object_unref(webView);
-}
-
-static void testWebkitAtkGetTextAtOffsetWithWrappedLines()
-{
-    WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
-    g_object_ref_sink(webView);
-    GtkAllocation allocation = { 0, 0, 800, 600 };
-    gtk_widget_size_allocate(GTK_WIDGET(webView), &amp;allocation);
-    webkit_web_view_load_string(webView, contentsWithWrappedLines, 0, 0, 0);
-
-    /* Get to the inner AtkText object. */
-    AtkObject* object = getWebAreaObject(webView);
-    g_assert(object);
-
-    /* Check the paragraph with the text wrapped because of max-width. */
-    AtkText* paragraph1 = ATK_TEXT(atk_object_ref_accessible_child(object, 0));
-    g_assert(ATK_IS_TEXT(paragraph1));
-
-    gchar* text = atk_text_get_text(paragraph1, 0, -1);
-    g_assert_cmpstr(text, ==, &quot;This is one line wrapped because of the maximum width of its container.&quot;);
-    g_free(text);
-
-    testGetTextFunction(paragraph1, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_CHAR, 16, &quot;e&quot;, 15, 16);
-    testGetTextFunction(paragraph1, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_CHAR, 16, &quot; &quot;, 16, 17);
-    testGetTextFunction(paragraph1, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_CHAR, 16, &quot;w&quot;, 17, 18);
-
-    testGetTextFunction(paragraph1, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_WORD_START, 16, &quot;one &quot;, 8, 12);
-    testGetTextFunction(paragraph1, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_START, 16, &quot;line &quot;, 12, 17);
-    testGetTextFunction(paragraph1, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_WORD_START, 16, &quot;wrapped &quot;, 17, 25);
-
-    testGetTextFunction(paragraph1, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_WORD_END, 16, &quot; line&quot;, 11, 16);
-    testGetTextFunction(paragraph1, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_END, 16, &quot; wrapped&quot;, 16, 24);
-    testGetTextFunction(paragraph1, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_WORD_END, 16, &quot; because&quot;, 24, 32);
-
-    testGetTextFunction(paragraph1, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_LINE_START, 17, &quot;This is one line &quot;, 0, 17);
-    testGetTextFunction(paragraph1, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_LINE_START, 17, &quot;wrapped because &quot;, 17, 33);
-    testGetTextFunction(paragraph1, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_LINE_START, 17, &quot;of the maximum &quot;, 33, 48);
-
-    testGetTextFunction(paragraph1, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_LINE_END, 17, &quot;This is one line&quot;, 0, 16);
-    testGetTextFunction(paragraph1, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_LINE_END, 17, &quot; wrapped because&quot;, 16, 32);
-    testGetTextFunction(paragraph1, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_LINE_END, 17, &quot; of the maximum&quot;, 32, 47);
-
-    g_object_unref(paragraph1);
-
-    /* Check the paragraph with the text wrapped because of &lt;br&gt; elements. */
-    AtkText* paragraph2 = ATK_TEXT(atk_object_ref_accessible_child(object, 1));
-    g_assert(ATK_IS_TEXT(paragraph2));
-
-    text = atk_text_get_text(paragraph2, 0, -1);
-    g_assert_cmpstr(text, ==, &quot;This is another line wrapped\nbecause of one forced\nline break in the middle.&quot;);
-    g_free(text);
-
-    testGetTextFunction(paragraph2, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_CHAR, 28, &quot;d&quot;, 27, 28);
-    testGetTextFunction(paragraph2, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_CHAR, 28, &quot;\n&quot;, 28, 29);
-    testGetTextFunction(paragraph2, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_CHAR, 28, &quot;b&quot;, 29, 30);
-
-    testGetTextFunction(paragraph2, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_WORD_START, 28, &quot;line &quot;, 16, 21);
-    testGetTextFunction(paragraph2, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_START, 28, &quot;wrapped\n&quot;, 21, 29);
-    testGetTextFunction(paragraph2, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_WORD_START, 28, &quot;because &quot;, 29, 37);
-
-    testGetTextFunction(paragraph2, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_WORD_END, 28, &quot; wrapped&quot;, 20, 28);
-    testGetTextFunction(paragraph2, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_END, 28, &quot;\nbecause&quot;, 28, 36);
-    testGetTextFunction(paragraph2, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_WORD_END, 28, &quot; of&quot;, 36, 39);
-
-    testGetTextFunction(paragraph2, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_LINE_START, 30, &quot;This is another line wrapped\n&quot;, 0, 29);
-    testGetTextFunction(paragraph2, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_LINE_START, 30, &quot;because of one forced\n&quot;, 29, 51);
-    testGetTextFunction(paragraph2, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_LINE_START, 30, &quot;line break in the middle.&quot;, 51, 76);
-
-    testGetTextFunction(paragraph2, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_LINE_END, 30, &quot;This is another line wrapped&quot;, 0, 28);
-    testGetTextFunction(paragraph2, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_LINE_END, 30, &quot;\nbecause of one forced&quot;, 28, 50);
-    testGetTextFunction(paragraph2, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_LINE_END, 30, &quot;\nline break in the middle.&quot;, 50, 76);
-
-    g_object_unref(paragraph2);
-
-    g_object_unref(webView);
-}
-
-static void testWebkitAtkGetTextAtOffsetWithEmbeddedObjects()
-{
-    WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
-    g_object_ref_sink(webView);
-    GtkAllocation allocation = { 0, 0, 800, 600 };
-    gtk_widget_size_allocate(GTK_WIDGET(webView), &amp;allocation);
-    webkit_web_view_load_string(webView, contentsWithEmbeddedObjects, 0, 0, 0);
-
-    /* Get to the inner AtkText object. */
-    AtkObject* object = getWebAreaObject(webView);
-    g_assert(object);
-
-    /* Check the paragraph with the text wrapped because of max-width. */
-    AtkText* paragraph = ATK_TEXT(atk_object_ref_accessible_child(object, 0));
-    g_assert(ATK_IS_TEXT(paragraph));
-
-    gchar* text = atk_text_get_text(paragraph, 0, -1);
-    g_assert_cmpstr(text, ==, &quot;This is one line containing two \357\277\274 embedded objects \357\277\274 in the middle.&quot;);
-    g_free(text);
-
-    /* Check right before the first embedded object */
-    testGetTextFunction(paragraph, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_CHAR, 32, &quot;\357\277\274&quot;, 32, 33);
-    testGetTextFunction(paragraph, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_START, 32, &quot;two \357\277\274 &quot;, 28, 34);
-    testGetTextFunction(paragraph, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_END, 32, &quot; \357\277\274 embedded&quot;, 31, 42);
-
-    /* Check right after the first embedded object (and before the first word after it) */
-    testGetTextFunction(paragraph, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_CHAR, 33, &quot; &quot;, 33, 34);
-    testGetTextFunction(paragraph, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_START, 33, &quot;two \357\277\274 &quot;, 28, 34);
-    testGetTextFunction(paragraph, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_END, 33, &quot; \357\277\274 embedded&quot;, 31, 42);
-
-    /* Check at the beginning of the first word between the two embedded objects */
-    testGetTextFunction(paragraph, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_CHAR, 34, &quot;e&quot;, 34, 35);
-    testGetTextFunction(paragraph, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_START, 34, &quot;embedded &quot;, 34, 43);
-    testGetTextFunction(paragraph, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_END, 34, &quot; \357\277\274 embedded&quot;, 31, 42);
-
-    /* Check at the end of the first word between the two embedded objects */
-    testGetTextFunction(paragraph, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_CHAR, 42, &quot; &quot;, 42, 43);
-    testGetTextFunction(paragraph, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_START, 42, &quot;embedded &quot;, 34, 43);
-    testGetTextFunction(paragraph, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_END, 42, &quot; objects&quot;, 42, 50);
-
-    /* Check right before the second embedded object */
-    testGetTextFunction(paragraph, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_CHAR, 51, &quot;\357\277\274&quot;, 51, 52);
-    testGetTextFunction(paragraph, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_START, 51, &quot;objects \357\277\274 &quot;, 43, 53);
-    testGetTextFunction(paragraph, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_END, 51, &quot; \357\277\274 in&quot;, 50, 55);
-
-    /* Check right after the second embedded object (and before the first word after it) */
-    testGetTextFunction(paragraph, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_CHAR, 52, &quot; &quot;, 52, 53);
-    testGetTextFunction(paragraph, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_START, 52, &quot;objects \357\277\274 &quot;, 43, 53);
-    testGetTextFunction(paragraph, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_END, 52, &quot; \357\277\274 in&quot;, 50, 55);
-
-    /* Check at the beginning of the first word after the two embedded objects */
-    testGetTextFunction(paragraph, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_CHAR, 53, &quot;i&quot;, 53, 54);
-    testGetTextFunction(paragraph, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_START, 53, &quot;in &quot;, 53, 56);
-    testGetTextFunction(paragraph, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_END, 53, &quot; \357\277\274 in&quot;, 50, 55);
-
-    /* Check at the end of the first word after the two embedded objects */
-    testGetTextFunction(paragraph, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_CHAR, 55, &quot; &quot;, 55, 56);
-    testGetTextFunction(paragraph, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_START, 55, &quot;in &quot;, 53, 56);
-    testGetTextFunction(paragraph, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_END, 55, &quot; the&quot;, 55, 59);
-
-    g_object_unref(paragraph);
-    g_object_unref(webView);
-}
-
-#else // !ATK_CHECK_VERSION(2, 10, 0)
-
-typedef gchar* (*AtkGetStringFunction) (AtkText*, gint, AtkTextGranularity, gint*, gint*);
-
-static void testGetStringFunction(AtkText* textObject, AtkGetStringFunction fn, AtkTextGranularity granularity, gint offset, const char* textResult, gint startOffsetResult, gint endOffsetResult)
-{
-    gint startOffset;
-    gint endOffset;
-    char* text = fn(textObject, offset, granularity, &amp;startOffset, &amp;endOffset);
-    g_assert_cmpstr(text, ==, textResult);
-    g_assert_cmpint(startOffset, ==, startOffsetResult);
-    g_assert_cmpint(endOffset, ==, endOffsetResult);
-    g_free(text);
-}
-
-static void runGetStringTests(AtkText* textObject)
-{
-    char* text = atk_text_get_text(textObject, 0, -1);
-    g_assert_cmpstr(text, ==, &quot;This is a test. This is the second sentence. And this the third.&quot;);
-    g_free(text);
-
-    /* ATK_TEXT_GRANULARITY_CHAR */
-    testGetStringFunction(textObject, atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_CHAR,
-                        0, &quot;T&quot;, 0, 1);
-
-    /* ATK_TEXT_GRANULARITY_WORD */
-    testGetStringFunction(textObject, atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_WORD,
-                        0, &quot;This &quot;, 0, 5);
-
-    testGetStringFunction(textObject, atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_WORD,
-                        4, &quot;This &quot;, 0, 5);
-
-    testGetStringFunction(textObject, atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_WORD,
-                        10, &quot;test. &quot;, 10, 16);
-
-    testGetStringFunction(textObject, atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_WORD,
-                        58, &quot;third.&quot;, 58, 64);
-
-    testGetStringFunction(textObject, atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_WORD,
-                        64, &quot;third.&quot;, 58, 64);
-
-    /* ATK_TEXT_GRANULARITY_SENTENCE */
-    testGetStringFunction(textObject, atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_SENTENCE,
-                        0, &quot;This is a test. &quot;, 0, 16);
-
-    testGetStringFunction(textObject, atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_SENTENCE,
-                        15, &quot;This is a test. &quot;, 0, 16);
-
-    /* ATK_TEXT_GRANULARITY_LINE */
-    /* It's tricky to test these properly right now, since our a11y
-       implementation splits different lines in different a11y items. */
-    testGetStringFunction(textObject, atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_LINE,
-                        0, &quot;This is a test. This is the second sentence. And this the third.&quot;, 0, 64);
-
-    /* For objects implementing AtkEditableText, try to change the
-       exposed text and retrieve it again as a full line.
-       (see https://bugs.webkit.org/show_bug.cgi?id=72830) */
-    if (ATK_IS_EDITABLE_TEXT(textObject)) {
-        atk_editable_text_set_text_contents(ATK_EDITABLE_TEXT(textObject), &quot;foo bar baz&quot;);
-        testGetStringFunction(textObject, atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_LINE, 0, &quot;foo bar baz&quot;, 0, 11);
-    }
-}
-
-static void testWebkitAtkGetStringAtOffset()
-{
-    WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
-    g_object_ref_sink(webView);
-    GtkAllocation allocation = { 0, 0, 800, 600 };
-    gtk_widget_size_allocate(GTK_WIDGET(webView), &amp;allocation);
-    webkit_web_view_load_string(webView, contents, 0, 0, 0);
-
-    /* Get to the inner AtkText object. */
-    AtkObject* object = getWebAreaObject(webView);
-    g_assert(object);
-    object = atk_object_ref_accessible_child(object, 0);
-    g_assert(object);
-
-    AtkText* textObject = ATK_TEXT(object);
-    g_assert(ATK_IS_TEXT(textObject));
-
-    runGetStringTests(textObject);
-
-    g_object_unref(object);
-    g_object_unref(webView);
-}
-
-static void testWebkitAtkGetStringAtOffsetNewlines()
-{
-    WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
-    g_object_ref_sink(webView);
-    GtkAllocation allocation = { 0, 0, 800, 600 };
-    gtk_widget_size_allocate(GTK_WIDGET(webView), &amp;allocation);
-    webkit_web_view_load_string(webView, contentsWithNewlines, 0, 0, 0);
-
-    /* Get to the inner AtkText object. */
-    AtkObject* object = getWebAreaObject(webView);
-    g_assert(object);
-    object = atk_object_ref_accessible_child(object, 0);
-    g_assert(object);
-
-    AtkText* textObject = ATK_TEXT(object);
-    g_assert(ATK_IS_TEXT(textObject));
-
-    runGetStringTests(textObject);
-
-    g_object_unref(object);
-    g_object_unref(webView);
-}
-
-static void testWebkitAtkGetStringAtOffsetTextarea()
-{
-    WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
-    g_object_ref_sink(webView);
-    GtkAllocation allocation = { 0, 0, 800, 600 };
-    gtk_widget_size_allocate(GTK_WIDGET(webView), &amp;allocation);
-    webkit_web_view_load_string(webView, contentsInTextarea, 0, 0, 0);
-
-    /* Get to the inner AtkText object. */
-    AtkObject* object = getWebAreaObject(webView);
-    g_assert(object);
-    AtkObject* child = atk_object_ref_accessible_child(object, 0);
-    g_assert(child);
-    AtkObject* grandchild = atk_object_ref_accessible_child(child, 0);
-    g_assert(grandchild);
-
-    AtkText* textObject = ATK_TEXT(grandchild);
-    g_assert(ATK_IS_TEXT(textObject));
-
-    runGetStringTests(textObject);
-
-    g_object_unref(child);
-    g_object_unref(grandchild);
-    g_object_unref(webView);
-}
-
-static void testWebkitAtkGetStringAtOffsetTextInput()
-{
-    WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
-    g_object_ref_sink(webView);
-    GtkAllocation allocation = { 0, 0, 800, 600 };
-    gtk_widget_size_allocate(GTK_WIDGET(webView), &amp;allocation);
-    webkit_web_view_load_string(webView, contentsInTextInput, 0, 0, 0);
-
-    /* Get to the inner AtkText object. */
-    AtkObject* object = getWebAreaObject(webView);
-    g_assert(object);
-    AtkObject* child = atk_object_ref_accessible_child(object, 0);
-    g_assert(child);
-    AtkObject* grandchild = atk_object_ref_accessible_child(child, 0);
-    g_assert(grandchild);
-
-    AtkText* textObject = ATK_TEXT(grandchild);
-    g_assert(ATK_IS_TEXT(textObject));
-
-    runGetStringTests(textObject);
-
-    g_object_unref(child);
-    g_object_unref(grandchild);
-    g_object_unref(webView);
-}
-
-static void testWebkitAtkGetStringAtOffsetWithPreformattedText()
-{
-    WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
-    g_object_ref_sink(webView);
-    GtkAllocation allocation = { 0, 0, 800, 600 };
-    gtk_widget_size_allocate(GTK_WIDGET(webView), &amp;allocation);
-    webkit_web_view_load_string(webView, contentsWithPreformattedText, 0, 0, 0);
-
-    AtkObject* object = getWebAreaObject(webView);
-    g_assert(object);
-
-    AtkObject* preformattedText = atk_object_ref_accessible_child(object, 0);
-    g_assert(ATK_IS_OBJECT(preformattedText));
-    g_assert(atk_object_get_role(preformattedText) == ATK_ROLE_PANEL);
-    g_assert(ATK_IS_TEXT(preformattedText));
-    char* text = atk_text_get_text(ATK_TEXT(preformattedText), 0, -1);
-    g_assert_cmpstr(text, ==, &quot;\t\n\tfirst line\n\tsecond line\n\t\n&quot;);
-    g_free(text);
-
-    /* Try retrieving all the lines indicating the position of the offsets at the beginning of each of them. */
-    testGetStringFunction(ATK_TEXT(preformattedText), atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_LINE, 0, &quot;\t\n&quot;, 0, 2);
-    testGetStringFunction(ATK_TEXT(preformattedText), atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_LINE, 2, &quot;\tfirst line\n&quot;, 2, 14);
-    testGetStringFunction(ATK_TEXT(preformattedText), atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_LINE, 14, &quot;\tsecond line\n&quot;, 14, 27);
-
-    g_object_unref(preformattedText);
-    g_object_unref(webView);
-}
-
-static void testWebkitAtkGetStringAtOffsetWithSpecialCharacters()
-{
-    WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
-    g_object_ref_sink(webView);
-    GtkAllocation allocation = { 0, 0, 800, 600 };
-    gtk_widget_size_allocate(GTK_WIDGET(webView), &amp;allocation);
-    webkit_web_view_load_string(webView, contentsWithSpecialChars, 0, 0, 0);
-
-    /* Get to the inner AtkText object. */
-    AtkObject* object = getWebAreaObject(webView);
-    g_assert(object);
-
-    AtkObject* paragraph = atk_object_ref_accessible_child(object, 0);
-    g_assert(ATK_IS_TEXT(paragraph));
-
-    gchar* expectedText = g_strdup(&quot;\302\253\302\240This is a paragraph with \342\200\234special\342\200\235 characters inside.\302\240\302\273&quot;);
-    char* text = atk_text_get_text(ATK_TEXT(paragraph), 0, -1);
-    g_assert_cmpstr(text, ==, expectedText);
-    g_free(text);
-
-    /* Check that getting the text with ATK_TEXT_BOUNDARY_LINE_START does not crash
-       because of not properly handling characters inside the UTF-8 string. */
-    testGetStringFunction(ATK_TEXT(paragraph), atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_LINE, 0, expectedText, 0, 57);
-    g_free(expectedText);
-
-    AtkObject* list = atk_object_ref_accessible_child(object, 1);
-    g_assert(ATK_OBJECT(list));
-
-    AtkText* listItem = ATK_TEXT(atk_object_ref_accessible_child(list, 0));
-    g_assert(ATK_IS_TEXT(listItem));
-
-    text = atk_text_get_text(ATK_TEXT(listItem), 0, -1);
-    g_assert_cmpstr(text, ==, &quot;\342\200\242 List item with some text that wraps across different lines.&quot;);
-    g_free(text);
-
-    /* Check that getting the text with ATK_TEXT_BOUNDARY_LINE_START
-       and ATK_TEXT_BOUNDARY_LINE_END for line items with bullets
-       (special character) and wrapped text always return the right
-       piece of text for each line. */
-    testGetStringFunction(ATK_TEXT(listItem), atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_LINE, 3, &quot;\342\200\242 List item &quot;, 0, 12);
-    testGetStringFunction(ATK_TEXT(listItem), atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_LINE, 13, &quot;with some &quot;, 12, 22);
-
-    g_object_unref(listItem);
-
-    listItem = ATK_TEXT(atk_object_ref_accessible_child(list, 1));
-    g_assert(ATK_IS_TEXT(listItem));
-
-    /* Check that placing the same text in a paragraph doesn't break things. */
-    text = atk_text_get_text(ATK_TEXT(listItem), 0, -1);
-    g_assert_cmpstr(text, ==, &quot;\342\200\242 List item with some text that wraps across different lines.&quot;);
-    g_free(text);
-
-    testGetStringFunction(ATK_TEXT(listItem), atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_LINE, 3, &quot;\342\200\242 List item &quot;, 0, 12);
-    testGetStringFunction(ATK_TEXT(listItem), atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_LINE, 13, &quot;with some &quot;, 12, 22);
-
-    g_object_unref(list);
-    g_object_unref(listItem);
-    g_object_unref(paragraph);
-    g_object_unref(webView);
-}
-
-static void testWebkitAtkGetStringAtOffsetWithWrappedLines()
-{
-    WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
-    g_object_ref_sink(webView);
-    GtkAllocation allocation = { 0, 0, 800, 600 };
-    gtk_widget_size_allocate(GTK_WIDGET(webView), &amp;allocation);
-    webkit_web_view_load_string(webView, contentsWithWrappedLines, 0, 0, 0);
-
-    /* Get to the inner AtkText object. */
-    AtkObject* object = getWebAreaObject(webView);
-    g_assert(object);
-
-    /* Check the paragraph with the text wrapped because of max-width. */
-    AtkText* paragraph1 = ATK_TEXT(atk_object_ref_accessible_child(object, 0));
-    g_assert(ATK_IS_TEXT(paragraph1));
-
-    gchar* text = atk_text_get_text(paragraph1, 0, -1);
-    g_assert_cmpstr(text, ==, &quot;This is one line wrapped because of the maximum width of its container.&quot;);
-    g_free(text);
-
-    testGetStringFunction(paragraph1, atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_CHAR, 16, &quot; &quot;, 16, 17);
-    testGetStringFunction(paragraph1, atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_WORD, 16, &quot;line &quot;, 12, 17);
-    testGetStringFunction(paragraph1, atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_LINE, 17, &quot;wrapped because &quot;, 17, 33);
-
-    g_object_unref(paragraph1);
-
-    /* Check the paragraph with the text wrapped because of &lt;br&gt; elements. */
-    AtkText* paragraph2 = ATK_TEXT(atk_object_ref_accessible_child(object, 1));
-    g_assert(ATK_IS_TEXT(paragraph2));
-
-    text = atk_text_get_text(paragraph2, 0, -1);
-    g_assert_cmpstr(text, ==, &quot;This is another line wrapped\nbecause of one forced\nline break in the middle.&quot;);
-    g_free(text);
-
-    testGetStringFunction(paragraph2, atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_CHAR, 28, &quot;\n&quot;, 28, 29);
-    testGetStringFunction(paragraph2, atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_WORD, 28, &quot;wrapped\n&quot;, 21, 29);
-    testGetStringFunction(paragraph2, atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_LINE, 30, &quot;because of one forced\n&quot;, 29, 51);
-
-    g_object_unref(paragraph2);
-
-    g_object_unref(webView);
-}
-
-static void testWebkitAtkGetStringAtOffsetWithEmbeddedObjects()
-{
-    WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
-    g_object_ref_sink(webView);
-    GtkAllocation allocation = { 0, 0, 800, 600 };
-    gtk_widget_size_allocate(GTK_WIDGET(webView), &amp;allocation);
-    webkit_web_view_load_string(webView, contentsWithEmbeddedObjects, 0, 0, 0);
-
-    /* Get to the inner AtkText object. */
-    AtkObject* object = getWebAreaObject(webView);
-    g_assert(object);
-
-    /* Check the paragraph with the text wrapped because of max-width. */
-    AtkText* paragraph = ATK_TEXT(atk_object_ref_accessible_child(object, 0));
-    g_assert(ATK_IS_TEXT(paragraph));
-
-    gchar* text = atk_text_get_text(paragraph, 0, -1);
-    g_assert_cmpstr(text, ==, &quot;This is one line containing two \357\277\274 embedded objects \357\277\274 in the middle.&quot;);
-    g_free(text);
-
-    /* Check right before the first embedded object */
-    testGetStringFunction(paragraph, atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_CHAR, 32, &quot;\357\277\274&quot;, 32, 33);
-    testGetStringFunction(paragraph, atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_WORD, 32, &quot;two \357\277\274 &quot;, 28, 34);
-
-    /* Check right after the first embedded object (and before the first word after it) */
-    testGetStringFunction(paragraph, atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_CHAR, 33, &quot; &quot;, 33, 34);
-    testGetStringFunction(paragraph, atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_WORD, 33, &quot;two \357\277\274 &quot;, 28, 34);
-
-    /* Check at the beginning of the first word between the two embedded objects */
-    testGetStringFunction(paragraph, atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_CHAR, 34, &quot;e&quot;, 34, 35);
-    testGetStringFunction(paragraph, atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_WORD, 34, &quot;embedded &quot;, 34, 43);
-
-    /* Check at the end of the first word between the two embedded objects */
-    testGetStringFunction(paragraph, atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_CHAR, 42, &quot; &quot;, 42, 43);
-    testGetStringFunction(paragraph, atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_WORD, 42, &quot;embedded &quot;, 34, 43);
-
-    /* Check right before the second embedded object */
-    testGetStringFunction(paragraph, atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_CHAR, 51, &quot;\357\277\274&quot;, 51, 52);
-    testGetStringFunction(paragraph, atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_WORD, 51, &quot;objects \357\277\274 &quot;, 43, 53);
-
-    /* Check right after the second embedded object (and before the first word after it) */
-    testGetStringFunction(paragraph, atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_CHAR, 52, &quot; &quot;, 52, 53);
-    testGetStringFunction(paragraph, atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_WORD, 52, &quot;objects \357\277\274 &quot;, 43, 53);
-
-    /* Check at the beginning of the first word after the two embedded objects */
-    testGetStringFunction(paragraph, atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_CHAR, 53, &quot;i&quot;, 53, 54);
-    testGetStringFunction(paragraph, atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_WORD, 53, &quot;in &quot;, 53, 56);
-
-    /* Check at the end of the first word after the two embedded objects */
-    testGetStringFunction(paragraph, atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_CHAR, 55, &quot; &quot;, 55, 56);
-    testGetStringFunction(paragraph, atk_text_get_string_at_offset, ATK_TEXT_GRANULARITY_WORD, 55, &quot;in &quot;, 53, 56);
-
-    g_object_unref(paragraph);
-    g_object_unref(webView);
-}
-#endif // !ATK_CHECK_VERSION(2, 10, 0)
-
-static void testWebkitAtkGetTextInParagraphAndBodySimple()
-{
-    WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
-    g_object_ref_sink(webView);
-    GtkAllocation allocation = { 0, 0, 800, 600 };
-    gtk_widget_size_allocate(GTK_WIDGET(webView), &amp;allocation);
-    webkit_web_view_load_string(webView, contentsInParagraphAndBodySimple, 0, 0, 0);
-
-    /* Get to the inner AtkText object. */
-    AtkObject* object = getWebAreaObject(webView);
-    g_assert(object);
-    AtkObject* object1 = atk_object_ref_accessible_child(object, 0);
-    g_assert(object1);
-    AtkObject* object2 = atk_object_ref_accessible_child(object, 1);
-    g_assert(object2);
-
-    AtkText* textObject1 = ATK_TEXT(object1);
-    g_assert(ATK_IS_TEXT(textObject1));
-    AtkText* textObject2 = ATK_TEXT(object2);
-    g_assert(ATK_IS_TEXT(textObject2));
-
-    char *text = atk_text_get_text(textObject1, 0, -1);
-    g_assert_cmpstr(text, ==, &quot;This is a test.&quot;);
-    g_free(text);
-
-    text = atk_text_get_text(textObject2, 0, 12);
-    g_assert_cmpstr(text, ==, &quot;Hello world.&quot;);
-    g_free(text);
-
-    g_object_unref(object1);
-    g_object_unref(object2);
-    g_object_unref(webView);
-}
-
-static void testWebkitAtkGetTextInParagraphAndBodyModerate()
-{
-    WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
-    g_object_ref_sink(webView);
-    GtkAllocation allocation = { 0, 0, 800, 600 };
-    gtk_widget_size_allocate(GTK_WIDGET(webView), &amp;allocation);
-    webkit_web_view_load_string(webView, contentsInParagraphAndBodyModerate, 0, 0, 0);
-
-    /* Get to the inner AtkText object. */
-    AtkObject* object = getWebAreaObject(webView);
-    g_assert(object);
-    AtkObject* object1 = atk_object_ref_accessible_child(object, 0);
-    g_assert(object1);
-    AtkObject* object2 = atk_object_ref_accessible_child(object, 1);
-    g_assert(object2);
-
-    AtkText* textObject1 = ATK_TEXT(object1);
-    g_assert(ATK_IS_TEXT(textObject1));
-    AtkText* textObject2 = ATK_TEXT(object2);
-    g_assert(ATK_IS_TEXT(textObject2));
-
-    char *text = atk_text_get_text(textObject1, 0, -1);
-    g_assert_cmpstr(text, ==, &quot;This is a test.&quot;);
-    g_free(text);
-
-    text = atk_text_get_text(textObject2, 0, 53);
-    g_assert_cmpstr(text, ==, &quot;Hello world.\nThis sentence is green.\nThis one is not.&quot;);
-    g_free(text);
-
-    g_object_unref(object1);
-    g_object_unref(object2);
-    g_object_unref(webView);
-}
-
-static void testWebkitAtkGetTextInTable()
-{
-    WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
-    g_object_ref_sink(webView);
-    GtkAllocation allocation = { 0, 0, 800, 600 };
-    gtk_widget_size_allocate(GTK_WIDGET(webView), &amp;allocation);
-    webkit_web_view_load_string(webView, contentsInTable, 0, 0, 0);
-
-    AtkObject* object = getWebAreaObject(webView);
-    g_assert(object);
-    object = atk_object_ref_accessible_child(object, 0);
-    g_assert(object);
-
-    /* Tables should not implement AtkText. */
-    g_assert(!G_TYPE_INSTANCE_GET_INTERFACE(object, ATK_TYPE_TEXT, AtkTextIface));
-
-    g_object_unref(object);
-    g_object_unref(webView);
-}
-
</del><span class="cx"> static void testWebkitAtkGetHeadersInTable()
</span><span class="cx"> {
</span><span class="cx">     WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
</span><span class="lines">@@ -1951,10 +845,6 @@
</span><span class="cx">     g_assert(atk_object_get_role(list) == ATK_ROLE_LIST);
</span><span class="cx">     g_assert_cmpint(atk_object_get_n_accessible_children(list), ==, 1);
</span><span class="cx"> 
</span><del>-    gchar* text = atk_text_get_text(listItem, 0, -1);
-    g_assert_cmpstr(text, ==, &quot;1. A list item&quot;);
-    g_free (text);
-
</del><span class="cx">     /* It's not possible to select text inside an item's marker. */
</span><span class="cx">     result = atk_text_set_selection (listItem, 0, 0, 9);
</span><span class="cx">     g_assert(!result);
</span><span class="lines">@@ -2328,26 +1218,13 @@
</span><span class="cx">     g_assert_cmpint(atk_object_get_n_accessible_children(uList), ==, 3);
</span><span class="cx"> 
</span><span class="cx">     AtkObject* item1 = atk_object_ref_accessible_child(uList, 0);
</span><del>-    g_assert(ATK_IS_TEXT(item1));
</del><span class="cx">     AtkObject* item2 = atk_object_ref_accessible_child(uList, 1);
</span><del>-    g_assert(ATK_IS_TEXT(item2));
</del><span class="cx">     AtkObject* item3 = atk_object_ref_accessible_child(uList, 2);
</span><del>-    g_assert(ATK_IS_TEXT(item3));
</del><span class="cx"> 
</span><span class="cx">     g_assert_cmpint(atk_object_get_n_accessible_children(item1), ==, 0);
</span><span class="cx">     g_assert_cmpint(atk_object_get_n_accessible_children(item2), ==, 1);
</span><span class="cx">     g_assert_cmpint(atk_object_get_n_accessible_children(item3), ==, 1);
</span><span class="cx"> 
</span><del>-    char* text = atk_text_get_text(ATK_TEXT(item1), 0, -1);
-    g_assert_cmpstr(text, ==, &quot;\342\200\242 text only&quot;);
-    g_free(text);
-    text = atk_text_get_text(ATK_TEXT(item2), 0, -1);
-    g_assert_cmpstr(text, ==, &quot;\342\200\242 link only&quot;);
-    g_free(text);
-    text = atk_text_get_text(ATK_TEXT(item3), 0, -1);
-    g_assert_cmpstr(text, ==, &quot;\342\200\242 text and a link&quot;);
-    g_free(text);
-
</del><span class="cx">     g_object_unref(item1);
</span><span class="cx">     g_object_unref(item2);
</span><span class="cx">     g_object_unref(item3);
</span><span class="lines">@@ -2360,22 +1237,9 @@
</span><span class="cx">     g_assert_cmpint(atk_object_get_n_accessible_children(oList), ==, 3);
</span><span class="cx"> 
</span><span class="cx">     item1 = atk_object_ref_accessible_child(oList, 0);
</span><del>-    g_assert(ATK_IS_TEXT(item1));
</del><span class="cx">     item2 = atk_object_ref_accessible_child(oList, 1);
</span><del>-    g_assert(ATK_IS_TEXT(item2));
</del><span class="cx">     item3 = atk_object_ref_accessible_child(oList, 2);
</span><del>-    g_assert(ATK_IS_TEXT(item3));
</del><span class="cx"> 
</span><del>-    text = atk_text_get_text(ATK_TEXT(item1), 0, -1);
-    g_assert_cmpstr(text, ==, &quot;1. text only&quot;);
-    g_free(text);
-    text = atk_text_get_text(ATK_TEXT(item2), 0, -1);
-    g_assert_cmpstr(text, ==, &quot;2. link only&quot;);
-    g_free(text);
-    text = atk_text_get_text(ATK_TEXT(item3), 0, -1);
-    g_assert_cmpstr(text, ==, &quot;3. text and a link&quot;);
-    g_free(text);
-
</del><span class="cx">     g_assert_cmpint(atk_object_get_n_accessible_children(item1), ==, 0);
</span><span class="cx">     g_assert_cmpint(atk_object_get_n_accessible_children(item2), ==, 1);
</span><span class="cx">     g_assert_cmpint(atk_object_get_n_accessible_children(item3), ==, 1);
</span><span class="lines">@@ -2596,28 +1460,6 @@
</span><span class="cx">     g_test_add_func(&quot;/webkit/atk/comboBox&quot;, testWebkitAtkComboBox);
</span><span class="cx">     g_test_add_func(&quot;/webkit/atk/documentLoadingEvents&quot;, testWebkitAtkDocumentLoadingEvents);
</span><span class="cx">     g_test_add_func(&quot;/webkit/atk/embeddedObjects&quot;, testWebkitAtkEmbeddedObjects);
</span><del>-#if !ATK_CHECK_VERSION(2, 10, 0)
-    g_test_add_func(&quot;/webkit/atk/getTextAtOffset&quot;, testWebkitAtkGetTextAtOffset);
-    g_test_add_func(&quot;/webkit/atk/getTextAtOffsetNewlines&quot;, testWebkitAtkGetTextAtOffsetNewlines);
-    g_test_add_func(&quot;/webkit/atk/getTextAtOffsetTextarea&quot;, testWebkitAtkGetTextAtOffsetTextarea);
-    g_test_add_func(&quot;/webkit/atk/getTextAtOffsetTextInput&quot;, testWebkitAtkGetTextAtOffsetTextInput);
-    g_test_add_func(&quot;/webkit/atk/getTextAtOffsetWithPreformattedText&quot;, testWebkitAtkGetTextAtOffsetWithPreformattedText);
-    g_test_add_func(&quot;/webkit/atk/getTextAtOffsetWithSpecialCharacters&quot;, testWebkitAtkGetTextAtOffsetWithSpecialCharacters);
-    g_test_add_func(&quot;/webkit/atk/getTextAtOffsetWithWrappedLines&quot;, testWebkitAtkGetTextAtOffsetWithWrappedLines);
-    g_test_add_func(&quot;/webkit/atk/getTextAtOffsetWithEmbeddedObjects&quot;, testWebkitAtkGetTextAtOffsetWithEmbeddedObjects);
-#else
-    g_test_add_func(&quot;/webkit/atk/getStringAtOffset&quot;, testWebkitAtkGetStringAtOffset);
-    g_test_add_func(&quot;/webkit/atk/getStringAtOffsetNewlines&quot;, testWebkitAtkGetStringAtOffsetNewlines);
-    g_test_add_func(&quot;/webkit/atk/getStringAtOffsetTextarea&quot;, testWebkitAtkGetStringAtOffsetTextarea);
-    g_test_add_func(&quot;/webkit/atk/getStringAtOffsetTextInput&quot;, testWebkitAtkGetStringAtOffsetTextInput);
-    g_test_add_func(&quot;/webkit/atk/getStringAtOffsetWithPreformattedText&quot;, testWebkitAtkGetStringAtOffsetWithPreformattedText);
-    g_test_add_func(&quot;/webkit/atk/getStringAtOffsetWithSpecialCharacters&quot;, testWebkitAtkGetStringAtOffsetWithSpecialCharacters);
-    g_test_add_func(&quot;/webkit/atk/getStringAtOffsetWithWrappedLines&quot;, testWebkitAtkGetStringAtOffsetWithWrappedLines);
-    g_test_add_func(&quot;/webkit/atk/getStringAtOffsetWithEmbeddedObjects&quot;, testWebkitAtkGetStringAtOffsetWithEmbeddedObjects);
-#endif
-    g_test_add_func(&quot;/webkit/atk/getTextInParagraphAndBodySimple&quot;, testWebkitAtkGetTextInParagraphAndBodySimple);
-    g_test_add_func(&quot;/webkit/atk/getTextInParagraphAndBodyModerate&quot;, testWebkitAtkGetTextInParagraphAndBodyModerate);
-    g_test_add_func(&quot;/webkit/atk/getTextInTable&quot;, testWebkitAtkGetTextInTable);
</del><span class="cx">     g_test_add_func(&quot;/webkit/atk/getHeadersInTable&quot;, testWebkitAtkGetHeadersInTable);
</span><span class="cx">     g_test_add_func(&quot;/webkit/atk/textAttributes&quot;, testWebkitAtkTextAttributes);
</span><span class="cx">     g_test_add_func(&quot;/webkit/atk/textSelections&quot;, testWebkitAtkTextSelections);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitgtkteststestatkrolesc"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/gtk/tests/testatkroles.c (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/gtk/tests/testatkroles.c        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/gtk/tests/testatkroles.c        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -45,7 +45,7 @@
</span><span class="cx"> #define HTML_RADIO_BUTTON &quot;&lt;html&gt;&lt;body&gt;&lt;input type='radio' /&gt;This is a test.&lt;/body&gt;&lt;/html&gt;&quot;
</span><span class="cx"> 
</span><span class="cx"> typedef struct {
</span><del>-    AtkObject* documentFrame;
</del><ins>+    AtkObject* document;
</ins><span class="cx">     AtkObject* obj;
</span><span class="cx">     AtkRole role;
</span><span class="cx">     GtkWidget* webView;
</span><span class="lines">@@ -64,12 +64,12 @@
</span><span class="cx">     // bug 72390 for more details on this change.
</span><span class="cx">     // https://bugs.webkit.org/show_bug.cgi?id=72390
</span><span class="cx">     AtkObject* rootObject = gtk_widget_get_accessible(fixture-&gt;webView);
</span><del>-    fixture-&gt;documentFrame = atk_object_ref_accessible_child(rootObject, 0);
-    g_assert(fixture-&gt;documentFrame);
</del><ins>+    fixture-&gt;document = atk_object_ref_accessible_child(rootObject, 0);
+    g_assert(fixture-&gt;document);
</ins><span class="cx"> 
</span><span class="cx">     // Remove the reference added by ref_accessible_child() and
</span><span class="cx">     // return, since we don't need to keep that extra ref at all.
</span><del>-    g_object_unref(fixture-&gt;documentFrame);
</del><ins>+    g_object_unref(fixture-&gt;document);
</ins><span class="cx">     return FALSE;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -110,24 +110,24 @@
</span><span class="cx"> 
</span><span class="cx"> static void test_webkit_atk_get_role_document_frame(AtkRolesFixture* fixture, gconstpointer data)
</span><span class="cx"> {
</span><del>-    fixture-&gt;role = atk_object_get_role(fixture-&gt;documentFrame);
-    g_assert(fixture-&gt;role == ATK_ROLE_DOCUMENT_FRAME);
</del><ins>+    fixture-&gt;role = atk_object_get_role(fixture-&gt;document);
+    g_assert(fixture-&gt;role == ATK_ROLE_DOCUMENT_WEB);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static void test_webkit_atk_get_role_heading(AtkRolesFixture* fixture, gconstpointer data)
</span><span class="cx"> {
</span><del>-    get_child_and_test_role(fixture-&gt;documentFrame, 0, ATK_ROLE_HEADING);
-    get_child_and_test_role(fixture-&gt;documentFrame, 1, ATK_ROLE_HEADING);
-    get_child_and_test_role(fixture-&gt;documentFrame, 2, ATK_ROLE_HEADING);
-    get_child_and_test_role(fixture-&gt;documentFrame, 3, ATK_ROLE_HEADING);
-    get_child_and_test_role(fixture-&gt;documentFrame, 4, ATK_ROLE_HEADING);
-    get_child_and_test_role(fixture-&gt;documentFrame, 5, ATK_ROLE_HEADING);
</del><ins>+    get_child_and_test_role(fixture-&gt;document, 0, ATK_ROLE_HEADING);
+    get_child_and_test_role(fixture-&gt;document, 1, ATK_ROLE_HEADING);
+    get_child_and_test_role(fixture-&gt;document, 2, ATK_ROLE_HEADING);
+    get_child_and_test_role(fixture-&gt;document, 3, ATK_ROLE_HEADING);
+    get_child_and_test_role(fixture-&gt;document, 4, ATK_ROLE_HEADING);
+    get_child_and_test_role(fixture-&gt;document, 5, ATK_ROLE_HEADING);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static void test_webkit_atk_get_role_image(AtkRolesFixture* fixture, gconstpointer data)
</span><span class="cx"> {
</span><span class="cx">     // This is an extraneous object of ATK_ROLE_PANEL which we should get rid of.
</span><del>-    fixture-&gt;obj = atk_object_ref_accessible_child(fixture-&gt;documentFrame, 0);
</del><ins>+    fixture-&gt;obj = atk_object_ref_accessible_child(fixture-&gt;document, 0);
</ins><span class="cx">     g_assert(fixture-&gt;obj);
</span><span class="cx"> 
</span><span class="cx">     get_child_and_test_role(fixture-&gt;obj, 0, ATK_ROLE_IMAGE);
</span><span class="lines">@@ -138,7 +138,7 @@
</span><span class="cx"> static void test_webkit_atk_get_role_link(AtkRolesFixture* fixture, gconstpointer data)
</span><span class="cx"> {
</span><span class="cx">     // This is an extraneous object of ATK_ROLE_PANEL which we should get rid of.
</span><del>-    fixture-&gt;obj = atk_object_ref_accessible_child(fixture-&gt;documentFrame, 0);
</del><ins>+    fixture-&gt;obj = atk_object_ref_accessible_child(fixture-&gt;document, 0);
</ins><span class="cx">     g_assert(fixture-&gt;obj);
</span><span class="cx"> 
</span><span class="cx">     get_child_and_test_role(fixture-&gt;obj, 0, ATK_ROLE_LINK);
</span><span class="lines">@@ -150,7 +150,7 @@
</span><span class="cx"> {
</span><span class="cx">     AtkObject* listObj;
</span><span class="cx"> 
</span><del>-    listObj = atk_object_ref_accessible_child(fixture-&gt;documentFrame, 0);
</del><ins>+    listObj = atk_object_ref_accessible_child(fixture-&gt;document, 0);
</ins><span class="cx">     g_assert(listObj);
</span><span class="cx">     fixture-&gt;role = atk_object_get_role(listObj);
</span><span class="cx">     g_assert(fixture-&gt;role == ATK_ROLE_LIST);
</span><span class="lines">@@ -159,7 +159,7 @@
</span><span class="cx">     get_child_and_test_role(listObj, 1, ATK_ROLE_LIST_ITEM);
</span><span class="cx">     g_object_unref(listObj);
</span><span class="cx"> 
</span><del>-    listObj = atk_object_ref_accessible_child(fixture-&gt;documentFrame, 1);
</del><ins>+    listObj = atk_object_ref_accessible_child(fixture-&gt;document, 1);
</ins><span class="cx">     g_assert(listObj);
</span><span class="cx">     fixture-&gt;role = atk_object_get_role(listObj);
</span><span class="cx">     g_assert(fixture-&gt;role == ATK_ROLE_LIST);
</span><span class="lines">@@ -171,23 +171,23 @@
</span><span class="cx"> 
</span><span class="cx"> static void test_webkit_atk_get_role_paragraph(AtkRolesFixture* fixture, gconstpointer data)
</span><span class="cx"> {
</span><del>-    get_child_and_test_role(fixture-&gt;documentFrame, 0, ATK_ROLE_PARAGRAPH);
</del><ins>+    get_child_and_test_role(fixture-&gt;document, 0, ATK_ROLE_PARAGRAPH);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static void test_webkit_atk_get_role_section(AtkRolesFixture* fixture, gconstpointer data)
</span><span class="cx"> {
</span><del>-    get_child_and_test_role(fixture-&gt;documentFrame, 0, ATK_ROLE_SECTION);
</del><ins>+    get_child_and_test_role(fixture-&gt;document, 0, ATK_ROLE_SECTION);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // Does not yet test table cells because of bug 30895.
</span><span class="cx"> static void test_webkit_atk_get_role_table(AtkRolesFixture* fixture, gconstpointer data)
</span><span class="cx"> {
</span><del>-    get_child_and_test_role(fixture-&gt;documentFrame, 0, ATK_ROLE_TABLE);
</del><ins>+    get_child_and_test_role(fixture-&gt;document, 0, ATK_ROLE_TABLE);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static void test_webkit_atk_get_role_separator(AtkRolesFixture *fixture, gconstpointer data)
</span><span class="cx"> {
</span><del>-    get_child_and_test_role(fixture-&gt;documentFrame, 0, ATK_ROLE_SEPARATOR);
</del><ins>+    get_child_and_test_role(fixture-&gt;document, 0, ATK_ROLE_SEPARATOR);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static void test_webkit_atk_get_role_combobox(AtkRolesFixture *fixture, gconstpointer data)
</span><span class="lines">@@ -195,7 +195,7 @@
</span><span class="cx">     AtkObject* comboboxMenu;
</span><span class="cx"> 
</span><span class="cx">     // This is an extraneous object of ATK_ROLE_PANEL which we should get rid of.
</span><del>-    fixture-&gt;obj = atk_object_ref_accessible_child(fixture-&gt;documentFrame, 0);
</del><ins>+    fixture-&gt;obj = atk_object_ref_accessible_child(fixture-&gt;document, 0);
</ins><span class="cx">     g_assert(fixture-&gt;obj);
</span><span class="cx"> 
</span><span class="cx">     fixture-&gt;obj = atk_object_ref_accessible_child(fixture-&gt;obj, 0);
</span><span class="lines">@@ -219,13 +219,13 @@
</span><span class="cx"> /* Form roles */
</span><span class="cx"> static void test_webkit_atk_get_role_form(AtkRolesFixture *fixture, gconstpointer data)
</span><span class="cx"> {
</span><del>-    get_child_and_test_role(fixture-&gt;documentFrame, 0, ATK_ROLE_FORM);
</del><ins>+    get_child_and_test_role(fixture-&gt;document, 0, ATK_ROLE_FORM);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static void test_webkit_atk_get_role_check_box(AtkRolesFixture* fixture, gconstpointer data)
</span><span class="cx"> {
</span><span class="cx">     // This is an extraneous object of ATK_ROLE_PANEL which we should get rid of.
</span><del>-    fixture-&gt;obj = atk_object_ref_accessible_child(fixture-&gt;documentFrame, 0);
</del><ins>+    fixture-&gt;obj = atk_object_ref_accessible_child(fixture-&gt;document, 0);
</ins><span class="cx">     g_assert(fixture-&gt;obj);
</span><span class="cx"> 
</span><span class="cx">     get_child_and_test_role(fixture-&gt;obj, 0, ATK_ROLE_CHECK_BOX);
</span><span class="lines">@@ -236,7 +236,7 @@
</span><span class="cx"> static void test_webkit_atk_get_role_entry(AtkRolesFixture* fixture, gconstpointer data)
</span><span class="cx"> {
</span><span class="cx">     // This is an extraneous object of ATK_ROLE_PANEL which we should get rid of.
</span><del>-    fixture-&gt;obj = atk_object_ref_accessible_child(fixture-&gt;documentFrame, 0);
</del><ins>+    fixture-&gt;obj = atk_object_ref_accessible_child(fixture-&gt;document, 0);
</ins><span class="cx">     g_assert(fixture-&gt;obj);
</span><span class="cx"> 
</span><span class="cx">     get_child_and_test_role(fixture-&gt;obj, 1, ATK_ROLE_ENTRY);
</span><span class="lines">@@ -247,7 +247,7 @@
</span><span class="cx"> static void test_webkit_atk_get_role_label(AtkRolesFixture* fixture, gconstpointer data)
</span><span class="cx"> {
</span><span class="cx">     // This is an extraneous object of ATK_ROLE_PANEL which we should get rid of.
</span><del>-    fixture-&gt;obj = atk_object_ref_accessible_child(fixture-&gt;documentFrame, 0);
</del><ins>+    fixture-&gt;obj = atk_object_ref_accessible_child(fixture-&gt;document, 0);
</ins><span class="cx">     g_assert(fixture-&gt;obj);
</span><span class="cx"> 
</span><span class="cx">     get_child_and_test_role(fixture-&gt;obj, 0, ATK_ROLE_LABEL);
</span><span class="lines">@@ -259,7 +259,7 @@
</span><span class="cx"> {
</span><span class="cx">     AtkObject* listboxObj;
</span><span class="cx">     // This is an extraneous object of ATK_ROLE_PANEL which we should get rid of.
</span><del>-    fixture-&gt;obj = atk_object_ref_accessible_child(fixture-&gt;documentFrame, 0);
</del><ins>+    fixture-&gt;obj = atk_object_ref_accessible_child(fixture-&gt;document, 0);
</ins><span class="cx">     g_assert(fixture-&gt;obj);
</span><span class="cx"> 
</span><span class="cx">     listboxObj = atk_object_ref_accessible_child(fixture-&gt;obj, 0);
</span><span class="lines">@@ -278,7 +278,7 @@
</span><span class="cx"> static void test_webkit_atk_get_role_password_text(AtkRolesFixture* fixture, gconstpointer data)
</span><span class="cx"> {
</span><span class="cx">     // This is an extraneous object of ATK_ROLE_PANEL which we should get rid of.
</span><del>-    fixture-&gt;obj = atk_object_ref_accessible_child(fixture-&gt;documentFrame, 0);
</del><ins>+    fixture-&gt;obj = atk_object_ref_accessible_child(fixture-&gt;document, 0);
</ins><span class="cx">     g_assert(fixture-&gt;obj);
</span><span class="cx"> 
</span><span class="cx">     get_child_and_test_role(fixture-&gt;obj, 0, ATK_ROLE_PASSWORD_TEXT);
</span><span class="lines">@@ -289,7 +289,7 @@
</span><span class="cx"> static void test_webkit_atk_get_role_push_button(AtkRolesFixture* fixture, gconstpointer data)
</span><span class="cx"> {
</span><span class="cx">     // This is an extraneous object of ATK_ROLE_PANEL which we should get rid of.
</span><del>-    fixture-&gt;obj = atk_object_ref_accessible_child(fixture-&gt;documentFrame, 0);
</del><ins>+    fixture-&gt;obj = atk_object_ref_accessible_child(fixture-&gt;document, 0);
</ins><span class="cx">     g_assert(fixture-&gt;obj);
</span><span class="cx"> 
</span><span class="cx">     get_child_and_test_role(fixture-&gt;obj, 0, ATK_ROLE_PUSH_BUTTON);
</span><span class="lines">@@ -300,7 +300,7 @@
</span><span class="cx"> static void test_webkit_atk_get_role_radio_button(AtkRolesFixture* fixture, gconstpointer data)
</span><span class="cx"> {
</span><span class="cx">     // This is an extraneous object of ATK_ROLE_PANEL which we should get rid of.
</span><del>-    fixture-&gt;obj = atk_object_ref_accessible_child(fixture-&gt;documentFrame, 0);
</del><ins>+    fixture-&gt;obj = atk_object_ref_accessible_child(fixture-&gt;document, 0);
</ins><span class="cx">     g_assert(fixture-&gt;obj);
</span><span class="cx"> 
</span><span class="cx">     get_child_and_test_role(fixture-&gt;obj, 0, ATK_ROLE_RADIO_BUTTON);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitgtkteststestwebsettingsc"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/gtk/tests/testwebsettings.c (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/gtk/tests/testwebsettings.c        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/gtk/tests/testwebsettings.c        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -34,24 +34,30 @@
</span><span class="cx">                  &quot;enable-webgl&quot;, TRUE,
</span><span class="cx">                  &quot;enable-fullscreen&quot;, TRUE,
</span><span class="cx">                  &quot;auto-load-images&quot;, FALSE,
</span><del>-                 &quot;default-encoding&quot;, &quot;utf-8&quot;, NULL);
</del><ins>+                 &quot;default-encoding&quot;, &quot;utf-8&quot;,
+                 &quot;enable-mediasource&quot;, TRUE,
+                 NULL);
</ins><span class="cx"> 
</span><span class="cx">     WebKitWebSettings *copy = webkit_web_settings_copy(settings);
</span><span class="cx"> 
</span><span class="cx">     gboolean enableWebGL = FALSE;
</span><span class="cx">     gboolean enableFullscreen = FALSE;
</span><span class="cx">     gboolean autoLoadImages = FALSE;
</span><ins>+    gboolean enableMediaSource = FALSE;
</ins><span class="cx">     char *defaultEncoding = 0;
</span><span class="cx">     g_object_get(copy,
</span><span class="cx">                  &quot;enable-fullscreen&quot;, &amp;enableFullscreen,
</span><span class="cx">                  &quot;enable-webgl&quot;, &amp;enableWebGL,
</span><span class="cx">                  &quot;auto-load-images&quot;, &amp;autoLoadImages,
</span><del>-                 &quot;default-encoding&quot;, &amp;defaultEncoding, NULL);
</del><ins>+                 &quot;default-encoding&quot;, &amp;defaultEncoding,
+                 &quot;enable-mediasource&quot;, &amp;enableMediaSource,
+                 NULL);
</ins><span class="cx"> 
</span><span class="cx">     g_assert(enableWebGL);
</span><span class="cx">     g_assert(enableFullscreen);
</span><span class="cx">     g_assert(!autoLoadImages);
</span><span class="cx">     g_assert_cmpstr(defaultEncoding, ==, &quot;utf-8&quot;);
</span><ins>+    g_assert(enableMediaSource);
</ins><span class="cx">     g_free(defaultEncoding);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitgtkwebkitwebkitdownloadcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/gtk/webkit/webkitdownload.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/gtk/webkit/webkitdownload.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/gtk/webkit/webkitdownload.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -27,6 +27,7 @@
</span><span class="cx"> #include &quot;ResourceHandleInternal.h&quot;
</span><span class="cx"> #include &quot;ResourceRequest.h&quot;
</span><span class="cx"> #include &quot;ResourceResponse.h&quot;
</span><ins>+#include &quot;SharedBuffer.h&quot;
</ins><span class="cx"> #include &quot;webkitdownloadprivate.h&quot;
</span><span class="cx"> #include &quot;webkitenumtypes.h&quot;
</span><span class="cx"> #include &quot;webkitglobals.h&quot;
</span><span class="lines">@@ -61,18 +62,20 @@
</span><span class="cx"> 
</span><span class="cx"> class DownloadClient : public ResourceHandleClient {
</span><span class="cx">     WTF_MAKE_NONCOPYABLE(DownloadClient);
</span><del>-    public:
-        DownloadClient(WebKitDownload*);
</del><span class="cx"> 
</span><del>-        virtual void didReceiveResponse(ResourceHandle*, const ResourceResponse&amp;);
-        virtual void didReceiveData(ResourceHandle*, const char*, int, int);
-        virtual void didFinishLoading(ResourceHandle*, double);
-        virtual void didFail(ResourceHandle*, const ResourceError&amp;);
-        virtual void wasBlocked(ResourceHandle*);
-        virtual void cannotShowURL(ResourceHandle*);
</del><ins>+public:
+    DownloadClient(WebKitDownload*);
</ins><span class="cx"> 
</span><del>-    private:
-        WebKitDownload* m_download;
</del><ins>+    virtual void didReceiveResponse(ResourceHandle*, const ResourceResponse&amp;);
+    virtual void didReceiveData(ResourceHandle*, const char*, int, int);
+    virtual void didReceiveBuffer(ResourceHandle*, PassRefPtr&lt;SharedBuffer&gt; buffer, int encodedLength);
+    virtual void didFinishLoading(ResourceHandle*, double);
+    virtual void didFail(ResourceHandle*, const ResourceError&amp;);
+    virtual void wasBlocked(ResourceHandle*);
+    virtual void cannotShowURL(ResourceHandle*);
+
+private:
+    WebKitDownload* m_download;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> struct _WebKitDownloadPrivate {
</span><span class="lines">@@ -940,9 +943,20 @@
</span><span class="cx"> 
</span><span class="cx"> void DownloadClient::didReceiveData(ResourceHandle*, const char* data, int length, int encodedDataLength)
</span><span class="cx"> {
</span><del>-    webkit_download_received_data(m_download, data, length);
</del><ins>+    ASSERT_NOT_REACHED();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void DownloadClient::didReceiveBuffer(ResourceHandle*, PassRefPtr&lt;SharedBuffer&gt; buffer, int encodedLength)
+{
+    // This pattern is suggested by SharedBuffer.h.
+    const char* segment;
+    unsigned position = 0;
+    while (unsigned length = buffer-&gt;getSomeData(segment, position)) {
+        webkit_download_received_data(m_download, segment, length);
+        position += length;
+    }
+}
+
</ins><span class="cx"> void DownloadClient::didFinishLoading(ResourceHandle*, double)
</span><span class="cx"> {
</span><span class="cx">     webkit_download_finished_loading(m_download);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitgtkwebkitwebkitwebsettingscpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/gtk/webkit/webkitwebsettings.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/gtk/webkit/webkitwebsettings.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/gtk/webkit/webkitwebsettings.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -123,7 +123,8 @@
</span><span class="cx">     PROP_MEDIA_PLAYBACK_ALLOWS_INLINE,
</span><span class="cx">     PROP_ENABLE_CSS_SHADERS,
</span><span class="cx">     PROP_ENABLE_RUNNING_OF_INSECURE_CONTENT,
</span><del>-    PROP_ENABLE_DISPLAY_OF_INSECURE_CONTENT
</del><ins>+    PROP_ENABLE_DISPLAY_OF_INSECURE_CONTENT,
+    PROP_ENABLE_MEDIA_SOURCE
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> static void webkit_web_settings_finalize(GObject* object);
</span><span class="lines">@@ -1024,6 +1025,26 @@
</span><span class="cx">             _(&quot;Whether non-HTTPS resources can run on HTTPS pages.&quot;),
</span><span class="cx">             TRUE,
</span><span class="cx">             flags));
</span><ins>+
+    /**
+    * WebKitWebSettings:enable-mediasource:
+    *
+    * Enable or disable support for MediaSource on pages. MediaSource is an
+    * experimental proposal which extends HTMLMediaElement to allow
+    * JavaScript to generate media streams for playback.  The standard is
+    * currently a work-in-progress by the W3C HTML Media Task Force.
+    *
+    * See also http://www.w3.org/TR/media-source/
+    *
+    * Since: 2.4
+    */
+    g_object_class_install_property(gobject_class,
+        PROP_ENABLE_MEDIA_SOURCE,
+        g_param_spec_boolean(&quot;enable-mediasource&quot;,
+            _(&quot;Enable MediaSource&quot;),
+            _(&quot;Whether MediaSource should be enabled.&quot;),
+            FALSE,
+            flags));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static void webkit_web_settings_init(WebKitWebSettings* web_settings)
</span><span class="lines">@@ -1223,6 +1244,9 @@
</span><span class="cx">     case PROP_ENABLE_RUNNING_OF_INSECURE_CONTENT:
</span><span class="cx">         priv-&gt;enableRunningOfInsecureContent = g_value_get_boolean(value);
</span><span class="cx">         break;
</span><ins>+    case PROP_ENABLE_MEDIA_SOURCE:
+        priv-&gt;enableMediaSource = g_value_get_boolean(value);
+        break;
</ins><span class="cx">     default:
</span><span class="cx">         G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
</span><span class="cx">         break;
</span><span class="lines">@@ -1412,6 +1436,9 @@
</span><span class="cx">     case PROP_ENABLE_RUNNING_OF_INSECURE_CONTENT:
</span><span class="cx">         g_value_set_boolean(value, priv-&gt;enableRunningOfInsecureContent);
</span><span class="cx">         break;
</span><ins>+    case PROP_ENABLE_MEDIA_SOURCE:
+        g_value_set_boolean(value, priv-&gt;enableMediaSource);
+        break;
</ins><span class="cx">     default:
</span><span class="cx">         G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
</span><span class="cx">         break;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitgtkwebkitwebkitwebsettingsprivateh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/gtk/webkit/webkitwebsettingsprivate.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/gtk/webkit/webkitwebsettingsprivate.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/gtk/webkit/webkitwebsettingsprivate.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -88,6 +88,7 @@
</span><span class="cx">     gboolean mediaPlaybackAllowsInline;
</span><span class="cx">     gboolean enableDisplayOfInsecureContent;
</span><span class="cx">     gboolean enableRunningOfInsecureContent;
</span><ins>+    gboolean enableMediaSource;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> WEBKIT_API void webkit_web_settings_add_extra_plugin_directory(WebKitWebView*, const gchar* directory);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitgtkwebkitwebkitwebviewcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/gtk/webkit/webkitwebview.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/gtk/webkit/webkitwebview.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/gtk/webkit/webkitwebview.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -35,6 +35,7 @@
</span><span class="cx"> #include &quot;AXObjectCache.h&quot;
</span><span class="cx"> #include &quot;ArchiveResource.h&quot;
</span><span class="cx"> #include &quot;BackForwardList.h&quot;
</span><ins>+#include &quot;BatteryClientGtk.h&quot;
</ins><span class="cx"> #include &quot;CairoUtilities.h&quot;
</span><span class="cx"> #include &quot;Chrome.h&quot;
</span><span class="cx"> #include &quot;ChromeClientGtk.h&quot;
</span><span class="lines">@@ -85,7 +86,6 @@
</span><span class="cx"> #include &quot;ResourceHandle.h&quot;
</span><span class="cx"> #include &quot;RuntimeEnabledFeatures.h&quot;
</span><span class="cx"> #include &quot;ScriptController.h&quot;
</span><del>-#include &quot;ScriptValue.h&quot;
</del><span class="cx"> #include &quot;Settings.h&quot;
</span><span class="cx"> #include &quot;WebKitDOMDocumentPrivate.h&quot;
</span><span class="cx"> #include &quot;webkitdownload.h&quot;
</span><span class="lines">@@ -114,6 +114,7 @@
</span><span class="cx"> #include &quot;webkitwebplugindatabaseprivate.h&quot;
</span><span class="cx"> #include &quot;webkitwebwindowfeatures.h&quot;
</span><span class="cx"> #include &quot;webkitwebviewprivate.h&quot;
</span><ins>+#include &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> #include &lt;gdk/gdkkeysyms.h&gt;
</span><span class="cx"> #include &lt;glib/gi18n-lib.h&gt;
</span><span class="cx"> #include &lt;wtf/gobject/GOwnPtr.h&gt;
</span><span class="lines">@@ -3623,6 +3624,10 @@
</span><span class="cx">     WebCore::RuntimeEnabledFeatures::sharedFeatures().setCSSRegionsEnabled(true);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if ENABLE(MEDIA_SOURCE)
+    coreSettings.setMediaSourceEnabled(settingsPrivate-&gt;enableMediaSource);
+#endif
+
</ins><span class="cx">     // Use mock scrollbars if in DumpRenderTree mode (i.e. testing layout tests).
</span><span class="cx">     coreSettings.setMockScrollbarsEnabled(DumpRenderTreeSupportGtk::dumpRenderTreeModeEnabled());
</span><span class="cx"> 
</span><span class="lines">@@ -3771,6 +3776,11 @@
</span><span class="cx">         settings.setCSSCustomFilterEnabled(g_value_get_boolean(&amp;value));
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if ENABLE(MEDIA_SOURCE)
+    else if (name == g_intern_string(&quot;enable-mediasource&quot;))
+        settings.setMediaSourceEnabled(g_value_get_boolean(&amp;value));
+#endif
+
</ins><span class="cx">     else if (!g_object_class_find_property(G_OBJECT_GET_CLASS(webSettings), name))
</span><span class="cx">         g_warning(&quot;Unexpected setting '%s'&quot;, name);
</span><span class="cx">     g_value_unset(&amp;value);
</span><span class="lines">@@ -3828,6 +3838,10 @@
</span><span class="cx">     WebCore::provideNavigatorContentUtilsTo(priv-&gt;corePage, priv-&gt;navigatorContentUtilsClient.get());
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if ENABLE(BATTERY_STATUS)
+    WebCore::provideBatteryTo(priv-&gt;corePage, new BatteryClientGtk);
+#endif
+
</ins><span class="cx">     if (DumpRenderTreeSupportGtk::dumpRenderTreeModeEnabled()) {
</span><span class="cx">         // Set some testing-specific settings
</span><span class="cx">         priv-&gt;corePage-&gt;settings().setInteractiveFormValidationEnabled(true);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitmacChangeLog"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/mac/ChangeLog (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/mac/ChangeLog        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/mac/ChangeLog        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,3 +1,71 @@
</span><ins>+2014-01-23  Mark Hahnenberg  &lt;mhahnenberg@apple.com&gt;
+
+        Merge branch up to ToT r160556.
+
+        * Configurations/Version.xcconfig:
+        * DOM/WebDOMOperations.h:
+        * History/WebBackForwardList.h:
+        * History/WebHistory.h:
+        * History/WebHistoryItem.h:
+        * History/WebHistoryItem.mm:
+        (-[WebHistoryItem init]):
+        (-[WebHistoryItem initWithURLString:title:lastVisitedTimeInterval:]):
+        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
+        * Plugins/WebPlugin.h:
+        * Plugins/WebPluginContainer.h:
+        * WebCoreSupport/WebInspectorClient.mm:
+        * WebView/WebAllowDenyPolicyListener.h:
+        * WebView/WebArchive.h:
+        * WebView/WebArchive.mm:
+        (-[WebArchivePrivate init]):
+        (-[WebArchivePrivate initWithCoreArchive:]):
+        (-[WebArchive init]):
+        (-[WebArchive initWithMainResource:subresources:subframeArchives:]):
+        (-[WebArchive initWithData:]):
+        (-[WebArchive initWithCoder:]):
+        * WebView/WebDataSource.h:
+        * WebView/WebDataSource.mm:
+        (-[WebDataSource initWithRequest:]):
+        * WebView/WebEditingDelegate.h:
+        (NS_ENUM):
+        * WebView/WebFrame.h:
+        * WebView/WebFrame.mm:
+        (-[WebFrame init]):
+        (-[WebFrame initWithName:webFrameView:webView:]):
+        * WebView/WebFrameView.h:
+        * WebView/WebPolicyDelegate.h:
+        (NS_ENUM):
+        * WebView/WebPreferenceKeysPrivate.h:
+        * WebView/WebPreferences.h:
+        (NS_ENUM):
+        * WebView/WebPreferences.mm:
+        (-[WebPreferences init]):
+        (-[WebPreferences initWithIdentifier:]):
+        (-[WebPreferences initWithCoder:]):
+        (+[WebPreferences initialize]):
+        (-[WebPreferences cacheModel]):
+        (-[WebPreferences mediaSourceEnabled]):
+        (-[WebPreferences setMediaSourceEnabled:]):
+        * WebView/WebPreferencesPrivate.h:
+        * WebView/WebResource.h:
+        * WebView/WebResource.mm:
+        (-[WebResourcePrivate init]):
+        (-[WebResourcePrivate initWithCoreResource:]):
+        (-[WebResource init]):
+        (-[WebResource initWithData:URL:MIMEType:textEncodingName:frameName:]):
+        (-[WebResource initWithCoder:]):
+        * WebView/WebUIDelegate.h:
+        (NS_OPTIONS):
+        * WebView/WebView.h:
+        * WebView/WebView.mm:
+        (createUserVisibleWebKitVersionString):
+        (-[WebView _preferencesChanged:]):
+        (-[_WebSafeForwarder initWithTarget:defaultTarget:]):
+        (-[WebView initWithFrame:]):
+        (-[WebView initWithFrame:frameName:groupName:]):
+        (-[WebView initWithCoder:]):
+        (+[WebView _didSetCacheModel]):
+
</ins><span class="cx"> 2013-12-05  Mark Lam  &lt;mark.lam@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         C Loop LLINT layout test regressions.
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitmacConfigurationsVersionxcconfig"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/mac/Configurations/Version.xcconfig (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/mac/Configurations/Version.xcconfig        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/mac/Configurations/Version.xcconfig        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -22,7 +22,7 @@
</span><span class="cx"> // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
</span><span class="cx"> 
</span><span class="cx"> MAJOR_VERSION = 538;
</span><del>-MINOR_VERSION = 9;
</del><ins>+MINOR_VERSION = 10;
</ins><span class="cx"> TINY_VERSION = 0;
</span><span class="cx"> FULL_VERSION = $(MAJOR_VERSION).$(MINOR_VERSION);
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitmacDOMWebDOMOperationsh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/mac/DOM/WebDOMOperations.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/mac/DOM/WebDOMOperations.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/mac/DOM/WebDOMOperations.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -36,20 +36,20 @@
</span><span class="cx"> @interface DOMNode (WebDOMNodeOperations)
</span><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method webArchive
-    @result A WebArchive representing the node and the children of the node.
</del><ins>+    @property webArchive
+    @abstract A WebArchive representing the node and the children of the node.
</ins><span class="cx"> */
</span><del>-- (WebArchive *)webArchive;
</del><ins>+@property (nonatomic, readonly, strong) WebArchive *webArchive;
</ins><span class="cx"> 
</span><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> @interface DOMDocument (WebDOMDocumentOperations)
</span><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method webFrame
-    @abstract Returns the frame of the DOM document.
</del><ins>+    @property webFrame
+    @abstract The frame of the DOM document.
</ins><span class="cx"> */
</span><del>-- (WebFrame *)webFrame;
</del><ins>+@property (nonatomic, readonly, strong) WebFrame *webFrame;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx">     @method URLWithAttributeString:
</span><span class="lines">@@ -65,47 +65,47 @@
</span><span class="cx"> @interface DOMRange (WebDOMRangeOperations)
</span><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method webArchive
-    @result A WebArchive representing the range.
</del><ins>+    @property webArchive
+    @abstract A WebArchive representing the range.
</ins><span class="cx"> */
</span><del>-- (WebArchive *)webArchive;
</del><ins>+@property (nonatomic, readonly, strong) WebArchive *webArchive;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method markupString
-    @result A markup string representing the range.
</del><ins>+    @property markupString
+    @abstract A markup string representing the range.
</ins><span class="cx"> */
</span><del>-- (NSString *)markupString;
</del><ins>+@property (nonatomic, readonly, copy) NSString *markupString;
</ins><span class="cx"> 
</span><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> @interface DOMHTMLFrameElement (WebDOMHTMLFrameElementOperations)
</span><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method contentFrame
-    @abstract Returns the content frame of the element.
</del><ins>+    @property contentFrame
+    @abstract The content frame of the element.
</ins><span class="cx"> */
</span><del>-- (WebFrame *)contentFrame;
</del><ins>+@property (nonatomic, readonly, strong) WebFrame *contentFrame;
</ins><span class="cx"> 
</span><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> @interface DOMHTMLIFrameElement (WebDOMHTMLIFrameElementOperations)
</span><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method contentFrame
</del><ins>+    @property contentFrame
</ins><span class="cx">     @abstract Returns the content frame of the element.
</span><span class="cx"> */
</span><del>-- (WebFrame *)contentFrame;
</del><ins>+@property (nonatomic, readonly, strong) WebFrame *contentFrame;
</ins><span class="cx"> 
</span><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> @interface DOMHTMLObjectElement (WebDOMHTMLObjectElementOperations)
</span><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method contentFrame
-    @abstract Returns the content frame of the element.
</del><ins>+    @property contentFrame
+    @abstract The content frame of the element.
</ins><span class="cx">     @discussion Returns non-nil only if the object represents a child frame
</span><span class="cx">     such as if the data of the object is HTML content.
</span><span class="cx"> */
</span><del>-- (WebFrame *)contentFrame;
</del><ins>+@property (nonatomic, readonly, strong) WebFrame *contentFrame;
</ins><span class="cx"> 
</span><span class="cx"> @end
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitmacHistoryWebBackForwardListh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/mac/History/WebBackForwardList.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/mac/History/WebBackForwardList.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/mac/History/WebBackForwardList.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -76,25 +76,22 @@
</span><span class="cx"> - (void)goToItem:(WebHistoryItem *)item;
</span><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method backItem
-    @abstract Returns the entry right before the current entry.
-    @result The entry right before the current entry, or nil if there isn't one.
</del><ins>+    @property backItem
+    @abstract The entry right before the current entry, or nil if there isn't one.
</ins><span class="cx"> */
</span><del>-- (WebHistoryItem *)backItem;
</del><ins>+@property (nonatomic, readonly, strong) WebHistoryItem *backItem;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method currentItem
</del><ins>+    @property currentItem
</ins><span class="cx">     @abstract Returns the current entry.
</span><del>-    @result The current entry.
</del><span class="cx"> */
</span><del>-- (WebHistoryItem *)currentItem;
</del><ins>+@property (nonatomic, readonly, strong) WebHistoryItem *currentItem;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method forwardItem
-    @abstract Returns the entry right after the current entry.
-    @result The entry right after the current entry, or nil if there isn't one.
</del><ins>+    @property forwardItem
+    @abstract The entry right after the current entry, or nil if there isn't one.
</ins><span class="cx"> */
</span><del>-- (WebHistoryItem *)forwardItem;
</del><ins>+@property (nonatomic, readonly, strong) WebHistoryItem *forwardItem;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx">     @method backListWithLimit:
</span><span class="lines">@@ -113,34 +110,24 @@
</span><span class="cx"> - (NSArray *)forwardListWithLimit:(int)limit;
</span><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method capacity
-    @abstract Returns the list's maximum size.
-    @result The list's maximum size.
</del><ins>+    @property capacity
+    @abstract The list's maximum size.
</ins><span class="cx"> */
</span><del>-- (int)capacity;
</del><ins>+@property (nonatomic) int capacity;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method setCapacity
-    @abstract Sets the list's maximum size.
-    @param size The new maximum size for the list.
</del><ins>+    @property backListCount
+    @abstract The number of items in the list.
</ins><span class="cx"> */
</span><del>-- (void)setCapacity:(int)size;
</del><ins>+@property (nonatomic, readonly) int backListCount;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method backListCount
-    @abstract Returns the back list's current count.
</del><ins>+    @property forwardListCount
</ins><span class="cx">     @result The number of items in the list.
</span><span class="cx"> */
</span><del>-- (int)backListCount;
</del><ins>+@property (nonatomic, readonly) int forwardListCount;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method forwardListCount
-    @abstract Returns the forward list's current count.
-    @result The number of items in the list.
-*/
-- (int)forwardListCount;
-
-/*!
</del><span class="cx">     @method containsItem:
</span><span class="cx">     @param item The item that will be checked for presence in the WebBackForwardList.
</span><span class="cx">     @result Returns YES if the item is in the list. 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitmacHistoryWebHistoryh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/mac/History/WebHistory.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/mac/History/WebHistory.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/mac/History/WebHistory.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -113,12 +113,12 @@
</span><span class="cx"> - (void)removeAllItems;
</span><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method orderedLastVisitedDays
-    @discussion Get an array of NSCalendarDates, each one representing a unique day that contains one
</del><ins>+    @property orderedLastVisitedDays
+    @abstract An array of NSCalendarDates for which history items exist in the WebHistory.
+    @discussion An array of NSCalendarDates, each one representing a unique day that contains one
</ins><span class="cx">     or more history items, ordered from most recent to oldest.
</span><del>-    @result Returns an array of NSCalendarDates for which history items exist in the WebHistory.
</del><span class="cx"> */
</span><del>-- (NSArray *)orderedLastVisitedDays;
</del><ins>+@property (nonatomic, readonly, copy) NSArray *orderedLastVisitedDays;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx">     @method orderedItemsLastVisitedOnDay:
</span><span class="lines">@@ -141,30 +141,15 @@
</span><span class="cx"> - (WebHistoryItem *)itemForURL:(NSURL *)URL;
</span><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method setHistoryItemLimit:
-    @discussion Limits the number of items that will be stored by the WebHistory.
-    @param limit The maximum number of items that will be stored by the WebHistory.
</del><ins>+    @property historyItemLimit
+    @abstract The maximum number of items that will be stored by the WebHistory.
</ins><span class="cx"> */
</span><del>-- (void)setHistoryItemLimit:(int)limit;
</del><ins>+@property (nonatomic) int historyItemLimit;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method historyItemLimit
-    @result The maximum number of items that will be stored by the WebHistory.
</del><ins>+    @property historyAgeInDaysLimit
+    @abstract The maximum number of days to be read from stored history.
</ins><span class="cx"> */
</span><del>-- (int)historyItemLimit;
</del><ins>+@property (nonatomic) int historyAgeInDaysLimit;
</ins><span class="cx"> 
</span><del>-/*!
-    @method setHistoryAgeInDaysLimit:
-    @discussion setHistoryAgeInDaysLimit: sets the maximum number of days to be read from
-    stored history.
-    @param limit The maximum number of days to be read from stored history.
-*/
-- (void)setHistoryAgeInDaysLimit:(int)limit;
-
-/*!
-    @method historyAgeInDaysLimit
-    @return Returns the maximum number of days to be read from stored history.
-*/
-- (int)historyAgeInDaysLimit;
-
</del><span class="cx"> @end
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitmacHistoryWebHistoryItemh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/mac/History/WebHistoryItem.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/mac/History/WebHistoryItem.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/mac/History/WebHistoryItem.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -63,64 +63,51 @@
</span><span class="cx">     'artificial' items to add to a WebBackForwardList.  When first initialized
</span><span class="cx">     the URLString and originalURLString will be the same.
</span><span class="cx"> */
</span><del>-- (id)initWithURLString:(NSString *)URLString title:(NSString *)title lastVisitedTimeInterval:(NSTimeInterval)time;
</del><ins>+- (instancetype)initWithURLString:(NSString *)URLString title:(NSString *)title lastVisitedTimeInterval:(NSTimeInterval)time;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method originalURLString
-    @abstract The string representation of the originial URL of this item.
</del><ins>+    @property originalURLString
+    @abstract The string representation of the initial URL of this item.
</ins><span class="cx">     This value is normally set by the WebKit.
</span><del>-    @result The string corresponding to the initial URL of this item.
</del><span class="cx"> */
</span><del>-- (NSString *)originalURLString;
</del><ins>+@property (nonatomic, readonly, copy) NSString *originalURLString;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method URLString
</del><ins>+    @property URLString
</ins><span class="cx">     @abstract The string representation of the URL represented by this item.
</span><span class="cx">     @discussion The URLString may be different than the originalURLString if the page
</span><span class="cx">     redirected to a new location.  This value is normally set by the WebKit.
</span><del>-    @result The string corresponding to the final URL of this item.
</del><span class="cx"> */
</span><del>-- (NSString *)URLString;
</del><ins>+@property (nonatomic, readonly, copy) NSString *URLString;
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method title
</del><ins>+    @property title
</ins><span class="cx">     @abstract The title of the page represented by this item.
</span><span class="cx">     @discussion This title cannot be changed by the client.  This value
</span><span class="cx">     is normally set by the WebKit when a page title for the item is received.
</span><del>-    @result The title of this item.
</del><span class="cx"> */
</span><del>-- (NSString *)title;
</del><ins>+@property (nonatomic, readonly, copy) NSString *title;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method lastVisitedTimeInterval
</del><ins>+    @property lastVisitedTimeInterval
</ins><span class="cx">     @abstract The last time the page represented by this item was visited. The interval
</span><span class="cx">     is since the reference date as determined by NSDate.  This value is normally set by
</span><span class="cx">     the WebKit.
</span><del>-    @result The last time this item was visited.
</del><span class="cx"> */
</span><del>-- (NSTimeInterval)lastVisitedTimeInterval;
</del><ins>+@property (nonatomic, readonly) NSTimeInterval lastVisitedTimeInterval;
</ins><span class="cx"> 
</span><del>-/*!
-    @method setAlternateTitle:
-    @param alternateTitle The new display title for this item.
-    @abstract A title that may be used by the client to display this item.
-*/
-- (void)setAlternateTitle:(NSString *)alternateTitle;
-
</del><span class="cx"> /*
</span><del>-    @method title
</del><ins>+    @property alternateTitle
</ins><span class="cx">     @abstract A title that may be used by the client to display this item.
</span><del>-    @result The alternate title for this item.
</del><span class="cx"> */
</span><del>-- (NSString *)alternateTitle;
</del><ins>+@property (nonatomic, copy) NSString *alternateTitle;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method icon
</del><ins>+    @property icon
</ins><span class="cx">     @abstract The favorite icon of the page represented by this item.
</span><span class="cx">     @discussion This icon returned will be determined by the WebKit.
</span><del>-    @result The icon associated with this item's URL.
</del><span class="cx"> */
</span><del>-- (NSImage *)icon;
</del><ins>+@property (nonatomic, readonly, strong) NSImage *icon;
</ins><span class="cx"> 
</span><span class="cx"> @end
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitmacHistoryWebHistoryItemmm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/mac/History/WebHistoryItem.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/mac/History/WebHistoryItem.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/mac/History/WebHistoryItem.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -101,12 +101,12 @@
</span><span class="cx">     WebCoreObjCFinalizeOnMainThread(self);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (id)init
</del><ins>+- (instancetype)init
</ins><span class="cx"> {
</span><span class="cx">     return [self initWithWebCoreHistoryItem:HistoryItem::create()];
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (id)initWithURLString:(NSString *)URLString title:(NSString *)title lastVisitedTimeInterval:(NSTimeInterval)time
</del><ins>+- (instancetype)initWithURLString:(NSString *)URLString title:(NSString *)title lastVisitedTimeInterval:(NSTimeInterval)time
</ins><span class="cx"> {
</span><span class="cx">     WebCoreThreadViolationCheckRoundOne();
</span><span class="cx">     return [self initWithWebCoreHistoryItem:HistoryItem::create(URLString, title, time)];
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitmacPluginsHostedNetscapePluginInstanceProxymm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/mac/Plugins/Hosted/NetscapePluginInstanceProxy.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/mac/Plugins/Hosted/NetscapePluginInstanceProxy.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/mac/Plugins/Hosted/NetscapePluginInstanceProxy.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -57,11 +57,11 @@
</span><span class="cx"> #import &lt;WebCore/ProxyServer.h&gt;
</span><span class="cx"> #import &lt;WebCore/SecurityOrigin.h&gt;
</span><span class="cx"> #import &lt;WebCore/ScriptController.h&gt;
</span><del>-#import &lt;WebCore/ScriptValue.h&gt;
</del><span class="cx"> #import &lt;WebCore/UserGestureIndicator.h&gt;
</span><span class="cx"> #import &lt;WebCore/npruntime_impl.h&gt;
</span><span class="cx"> #import &lt;WebCore/runtime_object.h&gt;
</span><span class="cx"> #import &lt;WebKitSystemInterface.h&gt;
</span><ins>+#import &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> #import &lt;mach/mach.h&gt;
</span><span class="cx"> #import &lt;utility&gt;
</span><span class="cx"> #import &lt;wtf/RefCountedLeakCounter.h&gt;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitmacPluginsWebPluginh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/mac/Plugins/WebPlugin.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/mac/Plugins/WebPlugin.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/mac/Plugins/WebPlugin.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -84,14 +84,14 @@
</span><span class="cx"> - (void)webPlugInSetIsSelected:(BOOL)isSelected;
</span><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method objectForWebScript
</del><ins>+    @property objectForWebScript
</ins><span class="cx">     @discussion objectForWebScript is used to expose a plug-in's scripting interface.  The 
</span><span class="cx">     methods of the object are exposed to the script environment.  See the WebScripting
</span><span class="cx">     informal protocol for more details.
</span><span class="cx">     @result Returns the object that exposes the plug-in's interface.  The class of this
</span><span class="cx">     object can implement methods from the WebScripting informal protocol.
</span><span class="cx"> */
</span><del>-- (id)objectForWebScript;
</del><ins>+@property (nonatomic, readonly, strong) id objectForWebScript;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx">     @method webPlugInMainResourceDidReceiveResponse:
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitmacPluginsWebPluginContainerh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/mac/Plugins/WebPluginContainer.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/mac/Plugins/WebPluginContainer.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/mac/Plugins/WebPluginContainer.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -54,19 +54,18 @@
</span><span class="cx"> - (void)webPlugInContainerShowStatus:(NSString *)message;
</span><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method webPlugInContainerSelectionColor
-    @result Returns the color that should be used for any special drawing when
</del><ins>+    @property webPlugInContainerSelectionColor
+    @abstract The color that should be used for any special drawing when
</ins><span class="cx">     plug-in is selected.
</span><span class="cx"> */
</span><del>-- (NSColor *)webPlugInContainerSelectionColor;
</del><ins>+@property (nonatomic, readonly, strong) NSColor *webPlugInContainerSelectionColor;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method webFrame
-    @discussion The webFrame method allows the plug-in to access the WebFrame that
</del><ins>+    @property webFrame
+    @abstract Allows the plug-in to access the WebFrame that
</ins><span class="cx">     contains the plug-in.  This method will not be implemented by containers that 
</span><span class="cx">     are not WebKit based.
</span><del>-    @result Return the WebFrame that contains the plug-in.
</del><span class="cx"> */
</span><del>-- (WebFrame *)webFrame;
</del><ins>+@property (nonatomic, readonly, strong) WebFrame *webFrame;
</ins><span class="cx"> 
</span><span class="cx"> @end
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitmacWebCoreSupportWebInspectorClientmm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/mac/WebCoreSupport/WebInspectorClient.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/mac/WebCoreSupport/WebInspectorClient.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/mac/WebCoreSupport/WebInspectorClient.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -43,12 +43,12 @@
</span><span class="cx"> #import &quot;WebUIDelegate.h&quot;
</span><span class="cx"> #import &quot;WebViewInternal.h&quot;
</span><span class="cx"> #import &lt;algorithm&gt;
</span><ins>+#import &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> #import &lt;WebCore/InspectorController.h&gt;
</span><span class="cx"> #import &lt;WebCore/InspectorFrontendClient.h&gt;
</span><span class="cx"> #import &lt;WebCore/MainFrame.h&gt;
</span><span class="cx"> #import &lt;WebCore/Page.h&gt;
</span><span class="cx"> #import &lt;WebCore/ScriptController.h&gt;
</span><del>-#import &lt;WebCore/ScriptValue.h&gt;
</del><span class="cx"> #import &lt;WebCore/SoftLinking.h&gt;
</span><span class="cx"> #import &lt;WebKit/DOMExtensions.h&gt;
</span><span class="cx"> #import &lt;WebKitSystemInterface.h&gt;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitmacWebViewWebAllowDenyPolicyListenerh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/mac/WebView/WebAllowDenyPolicyListener.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/mac/WebView/WebAllowDenyPolicyListener.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/mac/WebView/WebAllowDenyPolicyListener.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -28,7 +28,8 @@
</span><span class="cx"> @protocol WebAllowDenyPolicyListener &lt;NSObject&gt;
</span><span class="cx"> - (void)allow;
</span><span class="cx"> - (void)deny;
</span><del>-#if PLATFORM(IOS)
</del><ins>+
+#if TARGET_OS_IPHONE
</ins><span class="cx"> - (void)denyOnlyThisRequest;
</span><span class="cx"> - (BOOL)shouldClearCache;
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitmacWebViewWebArchiveh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/mac/WebView/WebArchive.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/mac/WebView/WebArchive.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/mac/WebView/WebArchive.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -58,7 +58,7 @@
</span><span class="cx">     @param subframeArchives The archives representing the subframes of the archive (can be nil).
</span><span class="cx">     @result An initialized WebArchive.
</span><span class="cx"> */
</span><del>-- (id)initWithMainResource:(WebResource *)mainResource subresources:(NSArray *)subresources subframeArchives:(NSArray *)subframeArchives;
</del><ins>+- (instancetype)initWithMainResource:(WebResource *)mainResource subresources:(NSArray *)subresources subframeArchives:(NSArray *)subframeArchives;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx">     @method initWithData:
</span><span class="lines">@@ -66,32 +66,32 @@
</span><span class="cx">     @param data The data representing the archive. This can be obtained using WebArchive's data method.
</span><span class="cx">     @result An initialized WebArchive.
</span><span class="cx"> */
</span><del>-- (id)initWithData:(NSData *)data;
</del><ins>+- (instancetype)initWithData:(NSData *)data;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method mainResource
-    @result The main resource of the archive.
</del><ins>+    @property mainResource
+    @abstract The main resource of the archive.
</ins><span class="cx"> */
</span><del>-- (WebResource *)mainResource;
</del><ins>+@property (nonatomic, readonly, strong) WebResource *mainResource;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method subresources
-    @result The subresource of the archive (can be nil).
</del><ins>+    @property subresources
+    @abstract The subresource of the archive (can be nil).
</ins><span class="cx"> */
</span><del>-- (NSArray *)subresources;
</del><ins>+@property (nonatomic, readonly, copy) NSArray *subresources;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method subframeArchives
-    @result The archives representing the subframes of the archive (can be nil).
</del><ins>+    @property subframeArchives
+    @abstract The archives representing the subframes of the archive (can be nil).
</ins><span class="cx"> */
</span><del>-- (NSArray *)subframeArchives;
</del><ins>+@property (nonatomic, readonly, copy) NSArray *subframeArchives;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method data
-    @result The data representation of the archive.
</del><ins>+    @property data
+    @abstract The data representation of the archive.
</ins><span class="cx">     @discussion The data returned by this method can be used to save a web archive to a file or to place a web archive on the pasteboard
</span><span class="cx">     using WebArchivePboardType. To create a WebArchive using the returned data, call initWithData:.
</span><span class="cx"> */
</span><del>-- (NSData *)data;
</del><ins>+@property (nonatomic, readonly, copy) NSData *data;
</ins><span class="cx"> 
</span><span class="cx"> @end
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitmacWebViewWebArchivemm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/mac/WebView/WebArchive.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/mac/WebView/WebArchive.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/mac/WebView/WebArchive.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -58,7 +58,7 @@
</span><span class="cx">     RefPtr&lt;LegacyWebArchive&gt; coreArchive;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (id)initWithCoreArchive:(PassRefPtr&lt;LegacyWebArchive&gt;)coreArchive;
</del><ins>+- (instancetype)initWithCoreArchive:(PassRefPtr&lt;LegacyWebArchive&gt;)coreArchive;
</ins><span class="cx"> - (LegacyWebArchive*)coreArchive;
</span><span class="cx"> - (void)setCoreArchive:(PassRefPtr&lt;LegacyWebArchive&gt;)newCoreArchive;
</span><span class="cx"> @end
</span><span class="lines">@@ -73,7 +73,7 @@
</span><span class="cx">     WebCoreObjCFinalizeOnMainThread(self);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (id)init
</del><ins>+- (instancetype)init
</ins><span class="cx"> {
</span><span class="cx">     self = [super init];
</span><span class="cx">     if (!self)
</span><span class="lines">@@ -82,7 +82,7 @@
</span><span class="cx">     return self;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (id)initWithCoreArchive:(PassRefPtr&lt;LegacyWebArchive&gt;)_coreArchive
</del><ins>+- (instancetype)initWithCoreArchive:(PassRefPtr&lt;LegacyWebArchive&gt;)_coreArchive
</ins><span class="cx"> {
</span><span class="cx">     self = [super init];
</span><span class="cx">     if (!self || !_coreArchive) {
</span><span class="lines">@@ -121,7 +121,7 @@
</span><span class="cx"> 
</span><span class="cx"> @implementation WebArchive
</span><span class="cx"> 
</span><del>-- (id)init
</del><ins>+- (instancetype)init
</ins><span class="cx"> {
</span><span class="cx">     WebCoreThreadViolationCheckRoundTwo();
</span><span class="cx"> 
</span><span class="lines">@@ -144,7 +144,7 @@
</span><span class="cx">     return YES;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (id)initWithMainResource:(WebResource *)mainResource subresources:(NSArray *)subresources subframeArchives:(NSArray *)subframeArchives
</del><ins>+- (instancetype)initWithMainResource:(WebResource *)mainResource subresources:(NSArray *)subresources subframeArchives:(NSArray *)subframeArchives
</ins><span class="cx"> {
</span><span class="cx">     WebCoreThreadViolationCheckRoundTwo();
</span><span class="cx"> 
</span><span class="lines">@@ -197,7 +197,7 @@
</span><span class="cx">     return self;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (id)initWithData:(NSData *)data
</del><ins>+- (instancetype)initWithData:(NSData *)data
</ins><span class="cx"> {
</span><span class="cx">     WebCoreThreadViolationCheckRoundTwo();
</span><span class="cx"> 
</span><span class="lines">@@ -227,7 +227,7 @@
</span><span class="cx">     return self;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (id)initWithCoder:(NSCoder *)decoder
</del><ins>+- (instancetype)initWithCoder:(NSCoder *)decoder
</ins><span class="cx"> {    
</span><span class="cx">     WebResource *mainResource = nil;
</span><span class="cx">     NSArray *subresources = nil;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitmacWebViewWebDataSourceh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/mac/WebView/WebDataSource.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/mac/WebView/WebDataSource.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/mac/WebView/WebDataSource.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -57,103 +57,103 @@
</span><span class="cx">     @param request The request to use in creating a datasource.
</span><span class="cx">     @result Returns an initialized WebDataSource.
</span><span class="cx"> */
</span><del>-- (id)initWithRequest:(NSURLRequest *)request;
</del><ins>+- (instancetype)initWithRequest:(NSURLRequest *)request;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method data
-    @discussion The data will be incomplete until the datasource has completely loaded.  
-    @result Returns the raw data associated with the datasource.  Returns nil
</del><ins>+    @property data
+    @abstract Returns the raw data associated with the datasource.  Returns nil
</ins><span class="cx">     if the datasource hasn't loaded any data.
</span><ins>+   @discussion The data will be incomplete until the datasource has completely loaded.
</ins><span class="cx"> */
</span><del>-- (NSData *)data;
</del><ins>+@property (nonatomic, readonly, copy) NSData *data;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method representation
</del><ins>+    @property representation
+    @abstract The representation associated with this datasource.
+    Returns nil if the datasource hasn't created its representation.
</ins><span class="cx">     @discussion A representation holds a type specific representation
</span><span class="cx">     of the datasource's data.  The representation class is determined by mapping
</span><span class="cx">     a MIME type to a class.  The representation is created once the MIME type
</span><span class="cx">     of the datasource content has been determined.
</span><del>-    @result Returns the representation associated with this datasource.
-    Returns nil if the datasource hasn't created it's representation.
</del><span class="cx"> */
</span><del>-- (id &lt;WebDocumentRepresentation&gt;)representation;
</del><ins>+@property (nonatomic, readonly, strong) id&lt;WebDocumentRepresentation&gt; representation;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method webFrame
-    @result Return the frame that represents this data source.
</del><ins>+    @property webFrame
+    @abstract The frame that represents this data source.
</ins><span class="cx"> */
</span><del>-- (WebFrame *)webFrame;
</del><ins>+@property (nonatomic, readonly, strong) WebFrame *webFrame;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method initialRequest
-    @result Returns a reference to the original request that created the
</del><ins>+    @property initialRequest
+    @abstract A reference to the original request that created the
</ins><span class="cx">     datasource.  This request will be unmodified by WebKit. 
</span><span class="cx"> */
</span><del>-- (NSURLRequest *)initialRequest;
</del><ins>+@property (nonatomic, readonly, strong) NSURLRequest *initialRequest;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method request
-    @result Returns the request that was used to create this datasource.
</del><ins>+    @property request
+    @abstract The request that was used to create this datasource.
</ins><span class="cx"> */
</span><del>-- (NSMutableURLRequest *)request;
</del><ins>+@property (nonatomic, readonly, strong) NSMutableURLRequest *request;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method response
-    @result returns the WebResourceResponse for the data source.
</del><ins>+    @property response
+    @abstract The NSURLResponse for the data source.
</ins><span class="cx"> */
</span><del>-- (NSURLResponse *)response;
</del><ins>+@property (nonatomic, readonly, strong) NSURLResponse *response;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method textEncodingName
-    @result Returns either the override encoding, as set on the WebView for this 
</del><ins>+    @property textEncodingName
+    @abstract Returns either the override encoding, as set on the WebView for this
</ins><span class="cx">     dataSource or the encoding from the response.
</span><span class="cx"> */
</span><del>-- (NSString *)textEncodingName;
</del><ins>+@property (nonatomic, readonly, copy) NSString *textEncodingName;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method isLoading
-    @discussion Returns YES if there are any pending loads.
</del><ins>+    @property isLoading
+    @abstract Returns YES if there are any pending loads.
</ins><span class="cx"> */
</span><del>-- (BOOL)isLoading;
</del><ins>+@property (nonatomic, getter=isLoading, readonly) BOOL loading;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method pageTitle
-    @result Returns nil or the page title.
</del><ins>+    @property pageTitle
+    @abstract The page title or nil.
</ins><span class="cx"> */
</span><del>-- (NSString *)pageTitle;
</del><ins>+@property (nonatomic, readonly, copy) NSString *pageTitle;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method unreachableURL
</del><ins>+    @property unreachableURL
+    @abstract The unreachableURL for which this dataSource is showing alternate content, or nil.
</ins><span class="cx">     @discussion This will be non-nil only for dataSources created by calls to the 
</span><span class="cx">     WebFrame method loadAlternateHTMLString:baseURL:forUnreachableURL:.
</span><del>-    @result returns the unreachableURL for which this dataSource is showing alternate content, or nil
</del><span class="cx"> */
</span><del>-- (NSURL *)unreachableURL;
</del><ins>+@property (nonatomic, readonly, strong) NSURL *unreachableURL;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method webArchive
-    @result A WebArchive representing the data source, its subresources and child frames.
</del><ins>+    @property webArchive
+    @abstract A WebArchive representing the data source, its subresources and child frames.
</ins><span class="cx">     @description This method constructs a WebArchive using the original downloaded data.
</span><span class="cx">     In the case of HTML, if the current state of the document is preferred, webArchive should be
</span><span class="cx">     called on the DOM document instead.
</span><span class="cx"> */
</span><del>-- (WebArchive *)webArchive;
</del><ins>+@property (nonatomic, readonly, strong) WebArchive *webArchive;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method mainResource
-    @result A WebResource representing the data source.
</del><ins>+    @property mainResource
+    @abstract A WebResource representing the data source.
</ins><span class="cx">     @description This method constructs a WebResource using the original downloaded data.
</span><span class="cx">     This method can be used to construct a WebArchive in case the archive returned by
</span><span class="cx">     WebDataSource's webArchive isn't sufficient.
</span><span class="cx"> */
</span><del>-- (WebResource *)mainResource;
</del><ins>+@property (nonatomic, readonly, strong) WebResource *mainResource;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method subresources
-    @abstract Returns all the subresources associated with the data source.
</del><ins>+    @property subresources
+    @abstract All the subresources associated with the data source.
</ins><span class="cx">     @description The returned array only contains subresources that have fully downloaded.
</span><span class="cx"> */
</span><del>-- (NSArray *)subresources;
</del><ins>+@property (nonatomic, readonly, copy) NSArray *subresources;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx">     method subresourceForURL:
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitmacWebViewWebDataSourcemm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/mac/WebView/WebDataSource.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/mac/WebView/WebDataSource.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/mac/WebView/WebDataSource.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -427,7 +427,7 @@
</span><span class="cx"> 
</span><span class="cx"> @implementation WebDataSource
</span><span class="cx"> 
</span><del>-- (id)initWithRequest:(NSURLRequest *)request
</del><ins>+- (instancetype)initWithRequest:(NSURLRequest *)request
</ins><span class="cx"> {
</span><span class="cx">     return [self _initWithDocumentLoader:WebDocumentLoaderMac::create(request, SubstituteData())];
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitmacWebViewWebEditingDelegateh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/mac/WebView/WebEditingDelegate.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/mac/WebView/WebEditingDelegate.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/mac/WebView/WebEditingDelegate.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -32,11 +32,11 @@
</span><span class="cx"> @class DOMRange;
</span><span class="cx"> @class WebView;
</span><span class="cx"> 
</span><del>-typedef enum {
</del><ins>+typedef NS_ENUM(NSInteger, WebViewInsertAction) {
</ins><span class="cx">     WebViewInsertActionTyped,
</span><span class="cx">     WebViewInsertActionPasted,
</span><span class="cx">     WebViewInsertActionDropped,
</span><del>-} WebViewInsertAction;
</del><ins>+};
</ins><span class="cx"> 
</span><span class="cx"> @interface NSObject (WebViewEditingDelegate)
</span><span class="cx"> - (BOOL)webView:(WebView *)webView shouldBeginEditingInDOMRange:(DOMRange *)range;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitmacWebViewWebFrameh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/mac/WebView/WebFrame.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/mac/WebView/WebFrame.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/mac/WebView/WebFrame.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -61,40 +61,40 @@
</span><span class="cx">     @param webView The WebView that manages the frame.
</span><span class="cx">     @result Returns an initialized WebFrame.
</span><span class="cx"> */
</span><del>-- (id)initWithName:(NSString *)name webFrameView:(WebFrameView *)view webView:(WebView *)webView;
</del><ins>+- (instancetype)initWithName:(NSString *)name webFrameView:(WebFrameView *)view webView:(WebView *)webView;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method name
-    @result The frame name.
</del><ins>+    @property name
+    @abstract The frame name.
</ins><span class="cx"> */
</span><del>-- (NSString *)name;
</del><ins>+@property (nonatomic, readonly, copy) NSString *name;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method webView
-    @result Returns the WebView for the document that includes this frame.
</del><ins>+    @property webView
+    @abstract The WebView for the document that includes this frame.
</ins><span class="cx"> */
</span><del>-- (WebView *)webView;
</del><ins>+@property (nonatomic, readonly, strong) WebView *webView;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method frameView
-    @result The WebFrameView for this frame.
</del><ins>+    @property frameView
+    @abstract The WebFrameView for this frame.
</ins><span class="cx"> */
</span><del>-- (WebFrameView *)frameView;
</del><ins>+@property (nonatomic, readonly, strong) WebFrameView *frameView;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method DOMDocument
-    @abstract Returns the DOM document of the frame.
</del><ins>+    @property DOMDocument
+    @abstract The DOM document of the frame.
</ins><span class="cx">     @description Returns nil if the frame does not contain a DOM document such as a standalone image.
</span><span class="cx"> */
</span><del>-- (DOMDocument *)DOMDocument;
</del><ins>+@property (nonatomic, readonly, strong) DOMDocument *DOMDocument;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method frameElement
-    @abstract Returns the frame element of the frame.
</del><ins>+    @property frameElement
+    @abstract The frame element of the frame.
</ins><span class="cx">     @description The class of the result is either DOMHTMLFrameElement, DOMHTMLIFrameElement or DOMHTMLObjectElement.
</span><span class="cx">     Returns nil if the frame is the main frame since there is no frame element for the frame in this case.
</span><span class="cx"> */
</span><del>-- (DOMHTMLElement *)frameElement;
</del><ins>+@property (nonatomic, readonly, strong) DOMHTMLElement *frameElement;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx">     @method loadRequest:
</span><span class="lines">@@ -141,21 +141,21 @@
</span><span class="cx"> - (void)loadArchive:(WebArchive *)archive;
</span><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method dataSource
</del><ins>+    @property dataSource
+    @abstract The datasource for this frame.
</ins><span class="cx">     @discussion Returns the committed data source.  Will return nil if the
</span><span class="cx">     provisional data source hasn't yet been loaded.
</span><del>-    @result The datasource for this frame.
</del><span class="cx"> */
</span><del>-- (WebDataSource *)dataSource;
</del><ins>+@property (nonatomic, readonly, strong) WebDataSource *dataSource;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method provisionalDataSource
</del><ins>+    @property provisionalDataSource
+    @abstract The provisional datasource of this frame.
</ins><span class="cx">     @discussion Will return the provisional data source.  The provisional data source will
</span><span class="cx">     be nil if no data source has been set on the frame, or the data source
</span><span class="cx">     has successfully transitioned to the committed data source.
</span><del>-    @result The provisional datasource of this frame.
</del><span class="cx"> */
</span><del>-- (WebDataSource *)provisionalDataSource;
</del><ins>+@property (nonatomic, readonly, strong) WebDataSource *provisionalDataSource;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx">     @method stopLoading
</span><span class="lines">@@ -190,38 +190,38 @@
</span><span class="cx"> - (WebFrame *)findFrameNamed:(NSString *)name;
</span><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method parentFrame
-    @result The frame containing this frame, or nil if this is a top level frame.
</del><ins>+    @property parentFrame
+    @abstract The frame containing this frame, or nil if this is a top level frame.
</ins><span class="cx"> */
</span><del>-- (WebFrame *)parentFrame;
</del><ins>+@property (nonatomic, readonly, strong) WebFrame *parentFrame;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method childFrames
</del><ins>+    @property childFrames
+    @abstract An array of WebFrame.
</ins><span class="cx">     @discussion The frames in the array are associated with a frame set or iframe.
</span><del>-    @result Returns an array of WebFrame.
</del><span class="cx"> */
</span><del>-- (NSArray *)childFrames;
</del><ins>+@property (nonatomic, readonly, copy) NSArray *childFrames;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method windowObject
-    @result The WebScriptObject representing the frame's JavaScript window object.
</del><ins>+    @property windowObject
+    @abstract The WebScriptObject representing the frame's JavaScript window object.
</ins><span class="cx"> */
</span><del>-- (WebScriptObject *)windowObject;
</del><ins>+@property (nonatomic, readonly, strong) WebScriptObject *windowObject;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method globalContext
-    @result The frame's global JavaScript execution context. Use this method to
-    bridge between the WebKit and JavaScriptCore APIs.
</del><ins>+    @property globalContext
+    @abstract The frame's global JavaScript execution context.
+    @discussion Use this method to bridge between the WebKit and JavaScriptCore APIs.
</ins><span class="cx"> */
</span><del>-- (JSGlobalContextRef)globalContext;
</del><ins>+@property (nonatomic, readonly) JSGlobalContextRef globalContext;
</ins><span class="cx"> 
</span><span class="cx"> #if JSC_OBJC_API_ENABLED
</span><span class="cx"> /*!
</span><del>-    @method javaScriptContext
-    @result The frame's global JavaScript execution context. Use this method to 
-    bridge between the WebKit and Objective-C JavaScriptCore API.
</del><ins>+    @property javaScriptContext
+    @abstract The frame's global JavaScript execution context.
+    @discussion Use this method to bridge between the WebKit and Objective-C JavaScriptCore API.
</ins><span class="cx"> */
</span><del>-- (JSContext *)javaScriptContext;
</del><ins>+@property (nonatomic, readonly, strong) JSContext *javaScriptContext;
</ins><span class="cx"> #endif // JSC_OBJC_API_ENABLED
</span><span class="cx"> 
</span><span class="cx"> @end
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitmacWebViewWebFramemm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/mac/WebView/WebFrame.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/mac/WebView/WebFrame.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/mac/WebView/WebFrame.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -89,7 +89,6 @@
</span><span class="cx"> #import &lt;WebCore/RenderWidget.h&gt;
</span><span class="cx"> #import &lt;WebCore/RuntimeApplicationChecks.h&gt;
</span><span class="cx"> #import &lt;WebCore/ScriptController.h&gt;
</span><del>-#import &lt;WebCore/ScriptValue.h&gt;
</del><span class="cx"> #import &lt;WebCore/SecurityOrigin.h&gt;
</span><span class="cx"> #import &lt;WebCore/SmartReplace.h&gt;
</span><span class="cx"> #import &lt;WebCore/StyleProperties.h&gt;
</span><span class="lines">@@ -100,6 +99,7 @@
</span><span class="cx"> #import &lt;WebCore/htmlediting.h&gt;
</span><span class="cx"> #import &lt;WebCore/markup.h&gt;
</span><span class="cx"> #import &lt;WebKitSystemInterface.h&gt;
</span><ins>+#import &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> #import &lt;runtime/JSLock.h&gt;
</span><span class="cx"> #import &lt;runtime/JSObject.h&gt;
</span><span class="cx"> #import &lt;runtime/JSCJSValue.h&gt;
</span><span class="lines">@@ -1307,13 +1307,13 @@
</span><span class="cx"> 
</span><span class="cx"> @implementation WebFrame
</span><span class="cx"> 
</span><del>-- (id)init
</del><ins>+- (instancetype)init
</ins><span class="cx"> {
</span><span class="cx">     return nil;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // Should be deprecated.
</span><del>-- (id)initWithName:(NSString *)name webFrameView:(WebFrameView *)view webView:(WebView *)webView
</del><ins>+- (instancetype)initWithName:(NSString *)name webFrameView:(WebFrameView *)view webView:(WebView *)webView
</ins><span class="cx"> {
</span><span class="cx">     return nil;
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitmacWebViewWebFrameViewh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/mac/WebView/WebFrameView.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/mac/WebView/WebFrameView.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/mac/WebView/WebFrameView.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -44,41 +44,31 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method webFrame
-    @abstract Returns the WebFrame associated with this WebFrameView
-    @result The WebFrameView's frame.
</del><ins>+    @property webFrame
+    @abstract The WebFrame associated with this WebFrameView
</ins><span class="cx"> */
</span><del>-- (WebFrame *)webFrame;
</del><ins>+@property (nonatomic, readonly, strong) WebFrame *webFrame;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method documentView
-    @abstract Returns the WebFrameView's document subview
-    @result The subview that renders the WebFrameView's contents
</del><ins>+    @property documentView
+    @abstract The WebFrameView's document subview
+    @discussion The subview that renders the WebFrameView's contents
</ins><span class="cx"> */
</span><del>-- (NSView &lt;WebDocumentView&gt; *)documentView;
</del><ins>+@property (nonatomic, readonly, strong) NSView&lt;WebDocumentView&gt; *documentView;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method setAllowsScrolling:
-    @abstract Sets whether the WebFrameView allows its document to be scrolled
-    @param flag YES to allow the document to be scrolled, NO to disallow scrolling
</del><ins>+    @property allowsScrolling
+    @abstract Whether the WebFrameView allows its document to be scrolled
</ins><span class="cx"> */
</span><del>-- (void)setAllowsScrolling:(BOOL)flag;
</del><ins>+@property (nonatomic) BOOL allowsScrolling;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method allowsScrolling
-    @abstract Returns whether the WebFrameView allows its document to be scrolled
-    @result YES if the document is allowed to scroll, otherwise NO
</del><ins>+    @property canPrintHeadersAndFooters
+    @abstract Whether this frame can print headers and footers
</ins><span class="cx"> */
</span><del>-- (BOOL)allowsScrolling;
</del><ins>+@property (nonatomic, readonly) BOOL canPrintHeadersAndFooters;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method canPrintHeadersAndFooters
-    @abstract Tells whether this frame can print headers and footers
-    @result YES if the frame can, no otherwise
-*/
-- (BOOL)canPrintHeadersAndFooters;
-
-/*!
</del><span class="cx">     @method printOperationWithPrintInfo
</span><span class="cx">     @abstract Creates a print operation set up to print this frame
</span><span class="cx">     @result A newly created print operation object
</span><span class="lines">@@ -86,13 +76,13 @@
</span><span class="cx"> - (NSPrintOperation *)printOperationWithPrintInfo:(NSPrintInfo *)printInfo;
</span><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method documentViewShouldHandlePrint
</del><ins>+    @property documentViewShouldHandlePrint
</ins><span class="cx">     @abstract Called by the host application before it initializes and runs a print operation.
</span><del>-    @result If NO is returned, the host application will abort its print operation and call -printDocumentView on the
</del><ins>+    @discussion If NO is returned, the host application will abort its print operation and call -printDocumentView on the
</ins><span class="cx">     WebFrameView.  The document view is then expected to run its own print operation.  If YES is returned, the host 
</span><span class="cx">     application's print operation will continue as normal.
</span><span class="cx"> */
</span><del>-- (BOOL)documentViewShouldHandlePrint;
</del><ins>+@property (nonatomic, readonly) BOOL documentViewShouldHandlePrint;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx">     @method printDocumentView
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitmacWebViewWebPolicyDelegateh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/mac/WebView/WebPolicyDelegate.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/mac/WebView/WebPolicyDelegate.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/mac/WebView/WebPolicyDelegate.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -46,14 +46,14 @@
</span><span class="cx">     @constant WebNavigationTypeOther Navigation is taking place for some other reason.
</span><span class="cx"> */
</span><span class="cx"> 
</span><del>-typedef enum {
</del><ins>+typedef NS_ENUM(NSInteger, WebNavigationType) {
</ins><span class="cx">     WebNavigationTypeLinkClicked,
</span><span class="cx">     WebNavigationTypeFormSubmitted,
</span><span class="cx">     WebNavigationTypeBackForward,
</span><span class="cx">     WebNavigationTypeReload,
</span><span class="cx">     WebNavigationTypeFormResubmitted,
</span><span class="cx">     WebNavigationTypeOther
</span><del>-} WebNavigationType;
</del><ins>+};
</ins><span class="cx"> 
</span><span class="cx"> extern NSString *WebActionNavigationTypeKey; // NSNumber (WebNavigationType)
</span><span class="cx"> extern NSString *WebActionElementKey; // NSDictionary of element info
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitmacWebViewWebPreferenceKeysPrivateh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -136,6 +136,7 @@
</span><span class="cx"> #define WebKitHiddenPageCSSAnimationSuspensionEnabledPreferenceKey @&quot;WebKitHiddenPageCSSAnimationSuspensionEnabled&quot;
</span><span class="cx"> #define WebKitLowPowerVideoAudioBufferSizeEnabledPreferenceKey @&quot;WebKitLowPowerVideoAudioBufferSizeEnabled&quot;
</span><span class="cx"> #define WebKitUseLegacyTextAlignPositionedElementBehaviorPreferenceKey @&quot;WebKitUseLegacyTextAlignPositionedElementBehavior&quot;
</span><ins>+#define WebKitMediaSourceEnabledPreferenceKey @&quot;WebKitMediaSourceEnabled&quot;
</ins><span class="cx"> 
</span><span class="cx"> // These are private both because callers should be using the cover methods and because the
</span><span class="cx"> // cover methods themselves are private.
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitmacWebViewWebPreferencesh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/mac/WebView/WebPreferences.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/mac/WebView/WebPreferences.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/mac/WebView/WebPreferences.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -57,12 +57,11 @@
</span><span class="cx"> 
</span><span class="cx"> Examples: Safari, OmniWeb, Shiira.
</span><span class="cx"> */
</span><del>-enum {
</del><ins>+typedef NS_ENUM(NSUInteger, WebCacheModel) {
</ins><span class="cx">     WebCacheModelDocumentViewer = 0,
</span><span class="cx">     WebCacheModelDocumentBrowser = 1,
</span><span class="cx">     WebCacheModelPrimaryWebBrowser = 2
</span><span class="cx"> };
</span><del>-typedef NSUInteger WebCacheModel;
</del><span class="cx"> 
</span><span class="cx"> typedef struct WebPreferencesPrivate WebPreferencesPrivate;
</span><span class="cx"> 
</span><span class="lines">@@ -91,357 +90,177 @@
</span><span class="cx">     for the WebPreferences.
</span><span class="cx">     @result Returns a new instance of WebPreferences or a previously allocated instance with the same identifier.
</span><span class="cx"> */
</span><del>-- (id)initWithIdentifier:(NSString *)anIdentifier;
</del><ins>+- (instancetype)initWithIdentifier:(NSString *)anIdentifier;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx">     @method identifier
</span><span class="cx">     @result Returns the identifier for this WebPreferences.
</span><span class="cx"> */
</span><del>-- (NSString *)identifier;
</del><ins>+@property (nonatomic, readonly, copy) NSString *identifier;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method standardFontFamily
</del><ins>+    @property standardFontFamily
</ins><span class="cx"> */
</span><del>-- (NSString *)standardFontFamily;
</del><ins>+@property (nonatomic, copy) NSString *standardFontFamily;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method setStandardFontFamily:
-    @param family
</del><ins>+    @property fixedFontFamily
</ins><span class="cx"> */
</span><del>-- (void)setStandardFontFamily:(NSString *)family;
</del><ins>+@property (nonatomic, copy) NSString *fixedFontFamily;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method fixedFontFamily
</del><ins>+    @property serifFontFamily
</ins><span class="cx"> */
</span><del>-- (NSString *)fixedFontFamily;
</del><ins>+@property (nonatomic, copy) NSString *serifFontFamily;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method setFixedFontFamily:
-    @param family
</del><ins>+    @property sansSerifFontFamily
</ins><span class="cx"> */
</span><del>-- (void)setFixedFontFamily:(NSString *)family;
</del><ins>+@property (nonatomic, copy) NSString *sansSerifFontFamily;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method serifFontFamily
</del><ins>+    @property cursiveFontFamily
</ins><span class="cx"> */
</span><del>-- (NSString *)serifFontFamily;
</del><ins>+@property (nonatomic, copy) NSString *cursiveFontFamily;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method setSerifFontFamily:
-    @param family
</del><ins>+    @property fantasyFontFamily
</ins><span class="cx"> */
</span><del>-- (void)setSerifFontFamily:(NSString *)family;
</del><ins>+@property (nonatomic, copy) NSString *fantasyFontFamily;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method sansSerifFontFamily
</del><ins>+    @property defaultFontSize
</ins><span class="cx"> */
</span><del>-- (NSString *)sansSerifFontFamily;
</del><ins>+@property (nonatomic) int defaultFontSize;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method setSansSerifFontFamily:
-    @param family
</del><ins>+    @property defaultFixedFontSize
</ins><span class="cx"> */
</span><del>-- (void)setSansSerifFontFamily:(NSString *)family;
</del><ins>+@property (nonatomic) int defaultFixedFontSize;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method cursiveFontFamily
</del><ins>+    @property minimumFontSize
</ins><span class="cx"> */
</span><del>-- (NSString *)cursiveFontFamily;
</del><ins>+@property (nonatomic) int minimumFontSize;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method setCursiveFontFamily:
-    @param family
-*/
-- (void)setCursiveFontFamily:(NSString *)family;
-
-/*!
-    @method fantasyFontFamily
-*/
-- (NSString *)fantasyFontFamily;
-
-/*!
-    @method setFantasyFontFamily:
-    @param family
-*/
-- (void)setFantasyFontFamily:(NSString *)family;
-
-/*!
-    @method defaultFontSize
-*/
-- (int)defaultFontSize;
-
-/*!
-    @method setDefaultFontSize:
-    @param size
-*/
-- (void)setDefaultFontSize:(int)size;
-
-/*!
-    @method defaultFixedFontSize
-*/
-- (int)defaultFixedFontSize;
-
-/*!
-    @method setDefaultFixedFontSize:
-    @param size
-*/
-- (void)setDefaultFixedFontSize:(int)size;
-
-/*!
-    @method minimumFontSize
-*/
-- (int)minimumFontSize;
-
-/*!
-    @method setMinimumFontSize:
-    @param size
-*/
-- (void)setMinimumFontSize:(int)size;
-
-/*!
</del><span class="cx">     @method minimumLogicalFontSize
</span><span class="cx"> */
</span><del>-- (int)minimumLogicalFontSize;
</del><ins>+@property (nonatomic) int minimumLogicalFontSize;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method setMinimumLogicalFontSize:
-    @param size
</del><ins>+    @property defaultTextEncodingName
</ins><span class="cx"> */
</span><del>-- (void)setMinimumLogicalFontSize:(int)size;
</del><ins>+@property (nonatomic, copy) NSString *defaultTextEncodingName;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method defaultTextEncodingName
</del><ins>+    @property userStyleSheetEnabled
</ins><span class="cx"> */
</span><del>-- (NSString *)defaultTextEncodingName;
</del><ins>+@property (nonatomic) BOOL userStyleSheetEnabled;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method setDefaultTextEncodingName:
-    @param encoding
</del><ins>+    @property userStyleSheetLocation
+    @abstract The location of the user style sheet.
</ins><span class="cx"> */
</span><del>-- (void)setDefaultTextEncodingName:(NSString *)encoding;
</del><ins>+@property (nonatomic, strong) NSURL *userStyleSheetLocation;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method userStyleSheetEnabled
</del><ins>+    @property javaEnabled
</ins><span class="cx"> */
</span><del>-- (BOOL)userStyleSheetEnabled;
</del><ins>+@property (nonatomic, getter=isJavaEnabled) BOOL javaEnabled;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method setUserStyleSheetEnabled:
-    @param flag
</del><ins>+    @property javaScriptEnabled
</ins><span class="cx"> */
</span><del>-- (void)setUserStyleSheetEnabled:(BOOL)flag;
</del><ins>+@property (nonatomic, getter=isJavaScriptEnabled) BOOL javaScriptEnabled;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method userStyleSheetLocation
-    @discussion The location of the user style sheet.
</del><ins>+    @property javaScriptCanOpenWindowsAutomatically
</ins><span class="cx"> */
</span><del>-- (NSURL *)userStyleSheetLocation;
</del><ins>+@property (nonatomic) BOOL javaScriptCanOpenWindowsAutomatically;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method setUserStyleSheetLocation:
-    @param URL The location of the user style sheet.
</del><ins>+    @property plugInsEnabled
</ins><span class="cx"> */
</span><del>-- (void)setUserStyleSheetLocation:(NSURL *)URL;
</del><ins>+@property (nonatomic, getter=arePlugInsEnabled) BOOL plugInsEnabled;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method isJavaEnabled
</del><ins>+    @property allowsAnimatedImages
</ins><span class="cx"> */
</span><del>-- (BOOL)isJavaEnabled;
</del><ins>+@property (nonatomic) BOOL allowsAnimatedImages;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method setJavaEnabled:
-    @param flag
</del><ins>+    @property allowsAnimatedImageLooping
</ins><span class="cx"> */
</span><del>-- (void)setJavaEnabled:(BOOL)flag;
</del><ins>+@property (nonatomic) BOOL allowsAnimatedImageLooping;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method isJavaScriptEnabled
</del><ins>+    @property willLoadImagesAutomatically
</ins><span class="cx"> */
</span><del>-- (BOOL)isJavaScriptEnabled;
</del><ins>+@property (nonatomic) BOOL loadsImagesAutomatically;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method setJavaScriptEnabled:
-    @param flag
-*/
-- (void)setJavaScriptEnabled:(BOOL)flag;
-
-/*!
-    @method JavaScriptCanOpenWindowsAutomatically
-*/
-- (BOOL)javaScriptCanOpenWindowsAutomatically;
-
-/*!
-    @method setJavaScriptCanOpenWindowsAutomatically:
-    @param flag
-*/
-- (void)setJavaScriptCanOpenWindowsAutomatically:(BOOL)flag;
-
-/*!
-    @method arePlugInsEnabled
-*/
-- (BOOL)arePlugInsEnabled;
-
-/*!
-    @method setPlugInsEnabled:
-    @param flag
-*/
-- (void)setPlugInsEnabled:(BOOL)flag;
-
-/*!
-    @method allowAnimatedImages
-*/
-- (BOOL)allowsAnimatedImages;
-
-/*!
-    @method setAllowAnimatedImages:
-    @param flag
-*/
-- (void)setAllowsAnimatedImages:(BOOL)flag;
-
-/*!
-    @method allowAnimatedImageLooping
-*/
-- (BOOL)allowsAnimatedImageLooping;
-
-/*!
-    @method setAllowAnimatedImageLooping:
-    @param flag
-*/
-- (void)setAllowsAnimatedImageLooping: (BOOL)flag;
-
-/*!
-    @method setWillLoadImagesAutomatically:
-    @param flag
-*/
-- (void)setLoadsImagesAutomatically: (BOOL)flag;
-
-/*!
-    @method willLoadImagesAutomatically
-*/
-- (BOOL)loadsImagesAutomatically;
-
-/*!
-    @method setAutosaves:
-    @param flag 
-    @discussion If autosave preferences is YES the settings represented by
</del><ins>+    @property autosaves
+    @discussion If autosaves is YES the settings represented by
</ins><span class="cx">     WebPreferences will be stored in the user defaults database.
</span><span class="cx"> */
</span><del>-- (void)setAutosaves:(BOOL)flag;
</del><ins>+@property (nonatomic) BOOL autosaves;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method autosaves
-    @result The value of the autosave preferences flag.
</del><ins>+    @property shouldPrintBackgrounds
</ins><span class="cx"> */
</span><del>-- (BOOL)autosaves;
</del><ins>+@property (nonatomic) BOOL shouldPrintBackgrounds;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method setShouldPrintBackgrounds:
-    @param flag
-*/
-- (void)setShouldPrintBackgrounds:(BOOL)flag;
-
-/*!
-    @method shouldPrintBackgrounds
-    @result The value of the shouldPrintBackgrounds preferences flag
-*/
-- (BOOL)shouldPrintBackgrounds;
-
-/*!
-    @method setPrivateBrowsingEnabled:
-    @param flag 
</del><ins>+    @property privateBrowsingEnabled:
</ins><span class="cx">     @abstract If private browsing is enabled, WebKit will not store information
</span><span class="cx">     about sites the user visits.
</span><span class="cx">  */
</span><del>-- (void)setPrivateBrowsingEnabled:(BOOL)flag;
</del><ins>+@property (nonatomic) BOOL privateBrowsingEnabled;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method privateBrowsingEnabled
- */
-- (BOOL)privateBrowsingEnabled;
-
-/*!
-    @method setTabsToLinks:
-    @param flag 
-    @abstract If tabsToLinks is YES, the tab key will focus links and form controls. 
</del><ins>+    @property tabsToLinks
+    @abstract If tabsToLinks is YES, the tab key will focus links and form controls.
</ins><span class="cx">     The option key temporarily reverses this preference.
</span><span class="cx"> */
</span><del>-- (void)setTabsToLinks:(BOOL)flag;
</del><ins>+@property (nonatomic) BOOL tabsToLinks;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method tabsToLinks
-*/
-- (BOOL)tabsToLinks;
-
-/*!
-    @method setUsesPageCache:
-    @abstract Sets whether the receiver's associated WebViews use the shared 
</del><ins>+    @property usesPageCache
+    @abstract Whether the receiver's associated WebViews use the shared
</ins><span class="cx">     page cache.
</span><del>-    @param UsesPageCache Whether the receiver's associated WebViews use the 
-    shared page cache.
</del><span class="cx">     @discussion Pages are cached as they are added to a WebBackForwardList, and
</span><span class="cx">     removed from the cache as they are removed from a WebBackForwardList. Because 
</span><span class="cx">     the page cache is global, caching a page in one WebBackForwardList may cause
</span><span class="cx">     a page in another WebBackForwardList to be evicted from the cache.
</span><span class="cx"> */
</span><del>-- (void)setUsesPageCache:(BOOL)usesPageCache;
</del><ins>+@property (nonatomic) BOOL usesPageCache;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method usesPageCache
-    @abstract Returns whether the receiver should use the shared page cache.
-    @result Whether the receiver should use the shared page cache.
-    @discussion Pages are cached as they are added to a WebBackForwardList, and
-    removed from the cache as they are removed from a WebBackForwardList. Because 
-    the page cache is global, caching a page in one WebBackForwardList may cause
-    a page in another WebBackForwardList to be evicted from the cache.
-*/
-- (BOOL)usesPageCache;
</del><ins>+    @property cacheModel
+    @abstract Specifies a usage model for a WebView, which WebKit will use to
+    determine its caching behavior. If necessary, WebKit
+    will prune its caches to match cacheModel when set.
</ins><span class="cx"> 
</span><del>-/*!
-@method setCacheModel:
</del><ins>+    @discussion Research indicates that users tend to browse within clusters of
+    documents that hold resources in common, and to revisit previously visited
+    documents. WebKit and the frameworks below it include built-in caches that take
+    advantage of these patterns, substantially improving document load speed in
+    browsing situations. The WebKit cache model controls the behaviors of all of
+    these caches, including NSURLCache and the various WebCore caches.
</ins><span class="cx"> 
</span><del>-@abstract Specifies a usage model for a WebView, which WebKit will use to 
-determine its caching behavior.
</del><ins>+    Applications with a browsing interface can improve document load speed
+    substantially by specifying WebCacheModelDocumentBrowser. Applications without
+    a browsing interface can reduce memory usage substantially by specifying
+    WebCacheModelDocumentViewer.
</ins><span class="cx"> 
</span><del>-@param cacheModel The WebView's usage model for WebKit. If necessary, WebKit 
-will prune its caches to match cacheModel.
-
-@discussion Research indicates that users tend to browse within clusters of 
-documents that hold resources in common, and to revisit previously visited 
-documents. WebKit and the frameworks below it include built-in caches that take 
-advantage of these patterns, substantially improving document load speed in 
-browsing situations. The WebKit cache model controls the behaviors of all of 
-these caches, including NSURLCache and the various WebCore caches.
-
-Applications with a browsing interface can improve document load speed 
-substantially by specifying WebCacheModelDocumentBrowser. Applications without 
-a browsing interface can reduce memory usage substantially by specifying 
-WebCacheModelDocumentViewer.
-
-If setCacheModel: is not called, WebKit will select a cache model automatically.
</del><ins>+    If cacheModel is not set, WebKit will select a cache model automatically.
</ins><span class="cx"> */
</span><del>-- (void)setCacheModel:(WebCacheModel)cacheModel;
</del><ins>+@property (nonatomic) WebCacheModel cacheModel;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-@method cacheModel:
-
-@abstract Returns the usage model according to which WebKit determines its 
-caching behavior.
-
-@result The usage model.
</del><ins>+    @property suppressesIncrementalRendering
</ins><span class="cx"> */
</span><del>-- (WebCacheModel)cacheModel;
</del><ins>+@property (nonatomic) BOOL suppressesIncrementalRendering;
</ins><span class="cx"> 
</span><del>-/*!
-    @method setSuppressesIncrementalRendering:
-    @param suppressesIncrementalRendering YES to suppress incremental rendering;
-    NO otherwise.
-*/
-- (void)setSuppressesIncrementalRendering:(BOOL)suppressesIncrementalRendering;
-
-/*!
-    @method suppressesIncrementalRendering
-    @result YES if the WebView suppresses incremental rendering; NO otherwise.
-*/
-- (BOOL)suppressesIncrementalRendering;
-
</del><span class="cx"> @end
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitmacWebViewWebPreferencesmm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/mac/WebView/WebPreferences.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/mac/WebView/WebPreferences.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/mac/WebView/WebPreferences.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -188,7 +188,7 @@
</span><span class="cx"> 
</span><span class="cx"> @implementation WebPreferences
</span><span class="cx"> 
</span><del>-- (id)init
</del><ins>+- (instancetype)init
</ins><span class="cx"> {
</span><span class="cx">     // Create fake identifier
</span><span class="cx">     static int instanceCount = 1;
</span><span class="lines">@@ -203,7 +203,7 @@
</span><span class="cx">     return [self initWithIdentifier:fakeIdentifier];
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (id)initWithIdentifier:(NSString *)anIdentifier
</del><ins>+- (instancetype)initWithIdentifier:(NSString *)anIdentifier
</ins><span class="cx"> {
</span><span class="cx">     WebPreferences *instance = [[self class] _getInstanceForIdentifier:anIdentifier];
</span><span class="cx">     if (instance) {
</span><span class="lines">@@ -228,7 +228,7 @@
</span><span class="cx">     return self;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (id)initWithCoder:(NSCoder *)decoder
</del><ins>+- (instancetype)initWithCoder:(NSCoder *)decoder
</ins><span class="cx"> {
</span><span class="cx">     self = [super init];
</span><span class="cx">     if (!self)
</span><span class="lines">@@ -431,6 +431,9 @@
</span><span class="cx"> #if !PLATFORM(IOS)
</span><span class="cx">         [NSNumber numberWithBool:NO],   WebKitVideoPluginProxyEnabledKey,
</span><span class="cx"> #endif
</span><ins>+#if ENABLE(MEDIA_SOURCE)
+        [NSNumber numberWithBool:NO], WebKitMediaSourceEnabledPreferenceKey,
+#endif
</ins><span class="cx">         nil];
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="lines">@@ -850,7 +853,7 @@
</span><span class="cx"> 
</span><span class="cx"> - (WebCacheModel)cacheModel
</span><span class="cx"> {
</span><del>-    return [self _integerValueForKey:WebKitCacheModelPreferenceKey];
</del><ins>+    return (WebCacheModel)[self _integerValueForKey:WebKitCacheModelPreferenceKey];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="lines">@@ -1946,6 +1949,16 @@
</span><span class="cx">     [self _setBoolValue:enabled forKey:WebKitUseLegacyTextAlignPositionedElementBehaviorPreferenceKey];
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+- (BOOL)mediaSourceEnabled
+{
+    return [self _boolValueForKey:WebKitMediaSourceEnabledPreferenceKey];
+}
+
+- (void)setMediaSourceEnabled:(BOOL)enabled
+{
+    [self _setBoolValue:enabled forKey:WebKitMediaSourceEnabledPreferenceKey];
+}
+
</ins><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> @implementation WebPreferences (WebInternal)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitmacWebViewWebPreferencesPrivateh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/mac/WebView/WebPreferencesPrivate.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/mac/WebView/WebPreferencesPrivate.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/mac/WebView/WebPreferencesPrivate.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -352,4 +352,7 @@
</span><span class="cx"> - (void)setUseLegacyTextAlignPositionedElementBehavior:(BOOL)flag;
</span><span class="cx"> - (BOOL)useLegacyTextAlignPositionedElementBehavior;
</span><span class="cx"> 
</span><ins>+- (void)setMediaSourceEnabled:(BOOL)flag;
+- (BOOL)mediaSourceEnabled;
+
</ins><span class="cx"> @end
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitmacWebViewWebResourceh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/mac/WebView/WebResource.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/mac/WebView/WebResource.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/mac/WebView/WebResource.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -52,36 +52,36 @@
</span><span class="cx">     @param frameName The frame name of the resource if the resource represents the contents of an entire HTML frame (can be nil).
</span><span class="cx">     @result An initialized WebResource.
</span><span class="cx"> */
</span><del>-- (id)initWithData:(NSData *)data URL:(NSURL *)URL MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)textEncodingName frameName:(NSString *)frameName;
</del><ins>+- (instancetype)initWithData:(NSData *)data URL:(NSURL *)URL MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)textEncodingName frameName:(NSString *)frameName;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method data
-    @result The data of the resource.
</del><ins>+    @property data
+    @abstract The data of the resource.
</ins><span class="cx"> */
</span><del>-- (NSData *)data;
</del><ins>+@property (nonatomic, readonly, copy) NSData *data;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method URL
-    @result The URL of the resource.
</del><ins>+    @property URL
+    @abstract The URL of the resource.
</ins><span class="cx"> */
</span><del>-- (NSURL *)URL;
</del><ins>+@property (nonatomic, readonly, strong) NSURL *URL;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method MIMEType
-    @result The MIME type of the resource.
</del><ins>+    @property MIMEType
+    @abstract The MIME type of the resource.
</ins><span class="cx"> */
</span><del>-- (NSString *)MIMEType;
</del><ins>+@property (nonatomic, readonly, copy) NSString *MIMEType;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method textEncodingName
-    @result The text encoding name of the resource (can be nil).
</del><ins>+    @property textEncodingName
+    @abstract The text encoding name of the resource (can be nil).
</ins><span class="cx"> */
</span><del>-- (NSString *)textEncodingName;
</del><ins>+@property (nonatomic, readonly, copy) NSString *textEncodingName;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method frameName
-    @result The frame name of the resource if the resource represents the contents of an entire HTML frame (can be nil).
</del><ins>+    @property frameName
+    @abstract The frame name of the resource if the resource represents the contents of an entire HTML frame (can be nil).
</ins><span class="cx"> */
</span><del>-- (NSString *)frameName;
</del><ins>+@property (nonatomic, readonly, copy) NSString *frameName;
</ins><span class="cx"> 
</span><span class="cx"> @end
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitmacWebViewWebResourcemm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/mac/WebView/WebResource.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/mac/WebView/WebResource.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/mac/WebView/WebResource.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -59,7 +59,7 @@
</span><span class="cx"> @public
</span><span class="cx">     ArchiveResource* coreResource;
</span><span class="cx"> }
</span><del>-- (id)initWithCoreResource:(PassRefPtr&lt;ArchiveResource&gt;)coreResource;
</del><ins>+- (instancetype)initWithCoreResource:(PassRefPtr&lt;ArchiveResource&gt;)coreResource;
</ins><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> @implementation WebResourcePrivate
</span><span class="lines">@@ -72,12 +72,12 @@
</span><span class="cx">     WebCoreObjCFinalizeOnMainThread(self);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (id)init
</del><ins>+- (instancetype)init
</ins><span class="cx"> {
</span><span class="cx">     return [super init];
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (id)initWithCoreResource:(PassRefPtr&lt;ArchiveResource&gt;)passedResource
</del><ins>+- (instancetype)initWithCoreResource:(PassRefPtr&lt;ArchiveResource&gt;)passedResource
</ins><span class="cx"> {
</span><span class="cx">     self = [super init];
</span><span class="cx">     if (!self)
</span><span class="lines">@@ -108,7 +108,7 @@
</span><span class="cx"> 
</span><span class="cx"> @implementation WebResource
</span><span class="cx"> 
</span><del>-- (id)init
</del><ins>+- (instancetype)init
</ins><span class="cx"> {
</span><span class="cx">     self = [super init];
</span><span class="cx">     if (!self)
</span><span class="lines">@@ -117,12 +117,12 @@
</span><span class="cx">     return self;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (id)initWithData:(NSData *)data URL:(NSURL *)URL MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)textEncodingName frameName:(NSString *)frameName
</del><ins>+- (instancetype)initWithData:(NSData *)data URL:(NSURL *)URL MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)textEncodingName frameName:(NSString *)frameName
</ins><span class="cx"> {
</span><span class="cx">     return [self _initWithData:data URL:URL MIMEType:MIMEType textEncodingName:textEncodingName frameName:frameName response:nil copyData:YES];
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (id)initWithCoder:(NSCoder *)decoder
</del><ins>+- (instancetype)initWithCoder:(NSCoder *)decoder
</ins><span class="cx"> {
</span><span class="cx">     WebCoreThreadViolationCheckRoundTwo();
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitmacWebViewWebUIDelegateh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/mac/WebView/WebUIDelegate.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/mac/WebView/WebUIDelegate.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/mac/WebView/WebUIDelegate.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -81,13 +81,13 @@
</span><span class="cx">     @constant WebDragDestinationActionLoad Allows a location change from the drag
</span><span class="cx">     @constant WebDragDestinationActionAny Allows any of the above to occur
</span><span class="cx"> */
</span><del>-typedef enum {
</del><ins>+typedef NS_OPTIONS(NSUInteger, WebDragDestinationAction) {
</ins><span class="cx">     WebDragDestinationActionNone    = 0,
</span><span class="cx">     WebDragDestinationActionDHTML   = 1,
</span><span class="cx">     WebDragDestinationActionEdit    = 2,
</span><span class="cx">     WebDragDestinationActionLoad    = 4,
</span><span class="cx">     WebDragDestinationActionAny     = UINT_MAX
</span><del>-} WebDragDestinationAction;
</del><ins>+};
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx">     @enum WebDragSourceAction
</span><span class="lines">@@ -99,14 +99,14 @@
</span><span class="cx">     @constant WebDragSourceActionSelection Allows a selection drag to occur
</span><span class="cx">     @constant WebDragSourceActionAny Allows any of the above to occur
</span><span class="cx"> */
</span><del>-typedef enum {
</del><ins>+typedef NS_OPTIONS(NSUInteger, WebDragSourceAction) {
</ins><span class="cx">     WebDragSourceActionNone         = 0,
</span><span class="cx">     WebDragSourceActionDHTML        = 1,
</span><span class="cx">     WebDragSourceActionImage        = 2,
</span><span class="cx">     WebDragSourceActionLink         = 4,
</span><span class="cx">     WebDragSourceActionSelection    = 8,
</span><span class="cx">     WebDragSourceActionAny          = UINT_MAX
</span><del>-} WebDragSourceAction;
</del><ins>+};
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx">     @protocol WebOpenPanelResultListener
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitmacWebViewWebViewh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/mac/WebView/WebView.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/mac/WebView/WebView.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/mac/WebView/WebView.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -183,7 +183,7 @@
</span><span class="cx">     @param groupName The name of the webView set to which this webView will be added.  May be nil.
</span><span class="cx">     @result Returns an initialized WebView.
</span><span class="cx"> */
</span><del>-- (id)initWithFrame:(NSRect)frame frameName:(NSString *)frameName groupName:(NSString *)groupName;
</del><ins>+- (instancetype)initWithFrame:(NSRect)frame frameName:(NSString *)frameName groupName:(NSString *)groupName;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx">     @method close
</span><span class="lines">@@ -198,113 +198,62 @@
</span><span class="cx"> - (void)close;
</span><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method setShouldCloseWithWindow:
-    @abstract Set whether the receiver closes when either it's window or hostWindow closes.
-    @param close YES if the receiver should close when either it's window or hostWindow closes, otherwise NO.
</del><ins>+    @property shouldCloseWithWindow
+    @abstract Whether the receiver closes when either it's window or hostWindow closes.
+    @discussion Defaults to YES in garbage collected applications, otherwise NO to maintain backwards compatibility.
</ins><span class="cx"> */
</span><del>-- (void)setShouldCloseWithWindow:(BOOL)close;
</del><ins>+@property (nonatomic) BOOL shouldCloseWithWindow;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method shouldCloseWithWindow
-    @abstract Returns whether the receiver closes when either it's window or hostWindow closes.
-    @discussion Defaults to YES in garbage collected applications, otherwise NO to maintain backwards compatibility.
-    @result YES if the receiver closes when either it's window or hostWindow closes, otherwise NO.
</del><ins>+    @property UIDelegate
+    @abstract The WebView's WebUIDelegate.
</ins><span class="cx"> */
</span><del>-- (BOOL)shouldCloseWithWindow;
</del><ins>+@property (nonatomic, assign) id UIDelegate;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method setUIDelegate:
-    @abstract Set the WebView's WebUIDelegate.
-    @param delegate The WebUIDelegate to set as the delegate.
-*/    
-- (void)setUIDelegate:(id)delegate;
</del><ins>+    @property resourceLoadDelegate
+    @abstract The WebView's WebResourceLoadDelegate.
+*/
+@property (nonatomic, assign) id resourceLoadDelegate;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method UIDelegate
-    @abstract Return the WebView's WebUIDelegate.
-    @result The WebView's WebUIDelegate.
</del><ins>+    @property downloadDelegate
+    @abstract The WebView's WebDownloadDelegate.
</ins><span class="cx"> */
</span><del>-- (id)UIDelegate;
</del><ins>+@property (nonatomic, assign) id downloadDelegate;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method setResourceLoadDelegate:
-    @abstract Set the WebView's WebResourceLoadDelegate load delegate.
-    @param delegate The WebResourceLoadDelegate to set as the load delegate.
</del><ins>+    @property frameLoadDelegate
+    @abstract The WebView's WebFrameLoadDelegate delegate.
</ins><span class="cx"> */
</span><del>-- (void)setResourceLoadDelegate:(id)delegate;
</del><ins>+@property (nonatomic, assign) id frameLoadDelegate;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method resourceLoadDelegate
-    @result Return the WebView's WebResourceLoadDelegate.
-*/    
-- (id)resourceLoadDelegate;
</del><ins>+    @property policyDelegate
+    @abstract The WebView's WebPolicyDelegate.
+*/
+@property (nonatomic, assign) id policyDelegate;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method setDownloadDelegate:
-    @abstract Set the WebView's WebDownloadDelegate.
-    @discussion The download delegate is retained by WebDownload when any downloads are in progress.
-    @param delegate The WebDownloadDelegate to set as the download delegate.
-*/    
-- (void)setDownloadDelegate:(id)delegate;
</del><ins>+    @property mainFrame
+    @abstract The top level frame.
+    @discussion Note that even documents that are not framesets will have a mainFrame.
+*/
+@property (nonatomic, readonly, strong) WebFrame *mainFrame;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method downloadDelegate
-    @abstract Return the WebView's WebDownloadDelegate.
-    @result The WebView's WebDownloadDelegate.
-*/    
-- (id)downloadDelegate;
-
-/*!
-    @method setFrameLoadDelegate:
-    @abstract Set the WebView's WebFrameLoadDelegate delegate.
-    @param delegate The WebFrameLoadDelegate to set as the delegate.
-*/    
-- (void)setFrameLoadDelegate:(id)delegate;
-
-/*!
-    @method frameLoadDelegate
-    @abstract Return the WebView's WebFrameLoadDelegate delegate.
-    @result The WebView's WebFrameLoadDelegate delegate.
-*/    
-- (id)frameLoadDelegate;
-
-/*!
-    @method setPolicyDelegate:
-    @abstract Set the WebView's WebPolicyDelegate delegate.
-    @param delegate The WebPolicyDelegate to set as the delegate.
-*/    
-- (void)setPolicyDelegate:(id)delegate;
-
-/*!
-    @method policyDelegate
-    @abstract Return the WebView's WebPolicyDelegate.
-    @result The WebView's WebPolicyDelegate.
-*/    
-- (id)policyDelegate;
-
-/*!
-    @method mainFrame
-    @abstract Return the top level frame.  
-    @discussion Note that even document that are not framesets will have a
-    mainFrame.
-    @result The main frame.
-*/    
-- (WebFrame *)mainFrame;
-
-/*!
-    @method selectedFrame
-    @abstract Return the frame that has the active selection.  
</del><ins>+    @property selectedFrame
+    @abstract The frame that has the active selection.
</ins><span class="cx">     @discussion Returns the frame that contains the first responder, if any. Otherwise returns the
</span><span class="cx">     frame that contains a non-zero-length selection, if any. Returns nil if no frame meets these criteria.
</span><del>-    @result The selected frame.
</del><span class="cx"> */
</span><del>-- (WebFrame *)selectedFrame;
</del><ins>+@property (nonatomic, readonly, strong) WebFrame *selectedFrame;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method backForwardList
-    @result The backforward list for this webView.
</del><ins>+    @property backForwardList
+    @abstract The backforward list for this WebView.
</ins><span class="cx"> */    
</span><del>-- (WebBackForwardList *)backForwardList;
</del><ins>+@property (nonatomic, readonly, strong) WebBackForwardList *backForwardList;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx">     @method setMaintainsBackForwardList:
</span><span class="lines">@@ -335,49 +284,33 @@
</span><span class="cx"> - (BOOL)goToBackForwardItem:(WebHistoryItem *)item;
</span><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method setTextSizeMultiplier:
-    @abstract Change the size of the text rendering in views managed by this webView.
-    @param multiplier A fractional percentage value, 1.0 is 100%.
</del><ins>+    @property textSizeMultiplier
+    @abstract The text size multipler.
</ins><span class="cx"> */    
</span><del>-- (void)setTextSizeMultiplier:(float)multiplier;
</del><ins>+@property (nonatomic) float textSizeMultiplier;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method textSizeMultiplier
-    @result The text size multipler.
-*/    
-- (float)textSizeMultiplier;
-
-/*!
-    @method setApplicationNameForUserAgent:
-    @abstract Set the application name. 
-    @discussion This name will be used in user-agent strings
-    that are chosen for best results in rendering web pages.
-    @param applicationName The application name
</del><ins>+    @property applicationNameForUserAgent
+    @abstract The name of the application as used in the user-agent string.
</ins><span class="cx"> */
</span><del>-- (void)setApplicationNameForUserAgent:(NSString *)applicationName;
</del><ins>+@property (nonatomic, copy) NSString *applicationNameForUserAgent;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method applicationNameForUserAgent
-    @result The name of the application as used in the user-agent string.
-*/
-- (NSString *)applicationNameForUserAgent;
-
-/*!
</del><span class="cx">     @method setCustomUserAgent:
</span><span class="cx">     @abstract Set the user agent. 
</span><del>-    @discussion Setting this means that the webView should use this user-agent string
-    instead of constructing a user-agent string for each URL. Setting it to nil
-    causes the webView to construct the user-agent string for each URL
-    for best results rendering web pages.
</del><ins>+    @discussion .
</ins><span class="cx">     @param userAgentString The user agent description
</span><span class="cx"> */
</span><del>-- (void)setCustomUserAgent:(NSString *)userAgentString;
</del><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method customUserAgent
-    @result The custom user-agent string or nil if no custom user-agent string has been set.
</del><ins>+    @property customUserAgent
+    @abstract The custom user-agent string or nil if no custom user-agent string has been set.
+    @discussion Setting this means that the webView should use this user-agent string
+ instead of constructing a user-agent string for each URL. Setting it to nil
+ causes the webView to construct the user-agent string for each URL
+ for best results rendering web pages
</ins><span class="cx"> */
</span><del>-- (NSString *)customUserAgent;
</del><ins>+@property (nonatomic, copy) NSString *customUserAgent;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx">     @method userAgentForURL:
</span><span class="lines">@@ -389,45 +322,31 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method supportsTextEncoding
-    @abstract Find out if the current web page supports text encodings.
-    @result YES if the document view of the current web page can
-    support different text encodings.
</del><ins>+    @property supportsTextEncoding
+    @abstract If the document view of the current web page can support different text encodings.
</ins><span class="cx"> */
</span><del>-- (BOOL)supportsTextEncoding;
</del><ins>+@property (nonatomic, readonly) BOOL supportsTextEncoding;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method setCustomTextEncodingName:
</del><ins>+    @property customTextEncodingName
+    @abstract The custom text encoding name or nil if no custom text encoding name has been set.
</ins><span class="cx">     @discussion Make the page display with a different text encoding; stops any load in progress.
</span><span class="cx">     The text encoding passed in overrides the normal text encoding smarts including
</span><span class="cx">     what's specified in a web page's header or HTTP response.
</span><span class="cx">     The text encoding automatically goes back to the default when the top level frame
</span><span class="cx">     changes to a new location.
</span><span class="cx">     Setting the text encoding name to nil makes the webView use default encoding rules.
</span><del>-    @param encoding The text encoding name to use to display a page or nil.
-*/
-- (void)setCustomTextEncodingName:(NSString *)encodingName;
</del><span class="cx"> 
</span><del>-/*!
-    @method customTextEncodingName
-    @result The custom text encoding name or nil if no custom text encoding name has been set.
</del><span class="cx"> */
</span><del>-- (NSString *)customTextEncodingName;
</del><ins>+@property (nonatomic, copy) NSString *customTextEncodingName;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method setMediaStyle:
-    @discussion Set the media style for the WebView.  The mediaStyle will override the normal value
-    of the CSS media property.  Setting the value to nil will restore the normal value.
-    @param mediaStyle The value to use for the CSS media property.
-*/
-- (void)setMediaStyle:(NSString *)mediaStyle;
-
-/*!
</del><span class="cx">     @method mediaStyle
</span><del>-    @result mediaStyle The value to use for the CSS media property, as set by setMediaStyle:.  It
-    will be nil unless set by that method.
</del><ins>+    @abstract The media style for the WebView.
+    @discussion The mediaStyle will override the normal value
+    of the CSS media property. Setting the value to nil will restore the normal value. The value will be nil unless explicitly set.
</ins><span class="cx"> */
</span><del>-- (NSString *)mediaStyle;
</del><ins>+@property (nonatomic, copy) NSString *mediaStyle;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx">     @method stringByEvaluatingJavaScriptFromString:
</span><span class="lines">@@ -437,60 +356,37 @@
</span><span class="cx"> - (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;
</span><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method windowScriptObject
-    @discussion windowScriptObject return a WebScriptObject that represents the
</del><ins>+    @property windowScriptObject
+    @abstract A WebScriptObject that represents the
</ins><span class="cx">     window object from the script environment.
</span><del>-    @result Returns the window object from the script environment.
</del><span class="cx"> */
</span><del>-- (WebScriptObject *)windowScriptObject;
</del><ins>+@property (nonatomic, readonly, strong) WebScriptObject *windowScriptObject;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method setPreferences:
-    @param preferences The preferences to use for the webView.
-    @abstract Override the standard setting for the webView. 
-*/
-- (void)setPreferences: (WebPreferences *)prefs;
-
-/*!
-    @method preferences
-    @result Returns the preferences used by this webView.
</del><ins>+    @property preferences
+    @abstract The preferences used by this WebView.
</ins><span class="cx">     @discussion This method will return [WebPreferences standardPreferences] if no
</span><span class="cx">     other instance of WebPreferences has been set.
</span><span class="cx"> */
</span><del>-- (WebPreferences *)preferences;
</del><ins>+@property (nonatomic, strong) WebPreferences *preferences;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method setPreferencesIdentifier:
-    @param anIdentifier The string to use a prefix for storing values for this WebView in the user
-    defaults database.
-    @discussion If the WebPreferences for this WebView are stored in the user defaults database, the
-    string set in this method will be used a key prefix.
</del><ins>+    @property preferencesIdentifier
+    @abstract The WebPreferences key prefix.
+    @discussion If the WebPreferences for this WebView are stored in the user defaults database, this string will be used as a key prefix.
</ins><span class="cx"> */
</span><del>-- (void)setPreferencesIdentifier:(NSString *)anIdentifier;
</del><ins>+@property (nonatomic, copy) NSString *preferencesIdentifier;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method preferencesIdentifier
-    @result Returns the WebPreferences key prefix.
-*/
-- (NSString *)preferencesIdentifier;
-
-
-/*!
-    @method setHostWindow:
-    @param hostWindow The host window for the web view.
</del><ins>+    @property hostWindow
+    @abstract The host window for the web view.
</ins><span class="cx">     @discussion Parts of WebKit (such as plug-ins and JavaScript) depend on a window to function
</span><span class="cx">     properly. Set a host window so these parts continue to function even when the web view is
</span><span class="cx">     not in an actual window.
</span><span class="cx"> */
</span><del>-- (void)setHostWindow:(NSWindow *)hostWindow;
</del><ins>+@property (nonatomic, strong) NSWindow *hostWindow;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method hostWindow
-    @result The host window for the web view.
-*/
-- (NSWindow *)hostWindow;
-
-/*!
</del><span class="cx">     @method searchFor:direction:caseSensitive:
</span><span class="cx">     @abstract Searches a document view for a string and highlights the string if it is found.
</span><span class="cx">     Starts the search from the current selection.  Will search across all frames.
</span><span class="lines">@@ -514,22 +410,15 @@
</span><span class="cx"> */
</span><span class="cx"> + (void)registerViewClass:(Class)viewClass representationClass:(Class)representationClass forMIMEType:(NSString *)MIMEType;
</span><span class="cx"> 
</span><del>-
</del><span class="cx"> /*!
</span><del>-    @method setGroupName:
-    @param groupName The name of the group for this WebView.
-    @discussion JavaScript may access named frames within the same group. 
</del><ins>+    @property groupName
+    @abstract The group name for this WebView.
+    @discussion JavaScript may access named frames within the same group.
</ins><span class="cx"> */
</span><del>-- (void)setGroupName:(NSString *)groupName;
</del><ins>+@property (nonatomic, copy) NSString *groupName;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method groupName
-    @discussion The group name for this WebView.
-*/
-- (NSString *)groupName;
-
-/*!
-    @method estimatedProgress
</del><ins>+    @property estimatedProgress
</ins><span class="cx">     @discussion An estimate of the percent complete for a document load.  This
</span><span class="cx">     value will range from 0 to 1.0 and, once a load completes, will remain at 1.0 
</span><span class="cx">     until a new load starts, at which point it will be reset to 0.  The value is an
</span><span class="lines">@@ -538,13 +427,13 @@
</span><span class="cx">     indication it is recommended that you implement a WebFrameLoadDelegate and a
</span><span class="cx">     WebResourceLoadDelegate.
</span><span class="cx"> */
</span><del>-- (double)estimatedProgress;
</del><ins>+@property (nonatomic, readonly) double estimatedProgress;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method isLoading
-    @discussion Returns YES if there are any pending loads.
</del><ins>+    @property loading
+    @abstract Whether there are any pending loads in this WebView.
</ins><span class="cx"> */
</span><del>-- (BOOL)isLoading;
</del><ins>+@property (nonatomic, getter=isLoading, readonly) BOOL loading;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx">     @method elementAtPoint:
</span><span class="lines">@@ -554,10 +443,10 @@
</span><span class="cx"> - (NSDictionary *)elementAtPoint:(NSPoint)point;
</span><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method pasteboardTypesForSelection
-    @abstract Returns the pasteboard types that WebView can use for the current selection
</del><ins>+    @property pasteboardTypesForSelection
+    @abstract The pasteboard types that the WebView can use for the current selection
</ins><span class="cx"> */
</span><del>-- (NSArray *)pasteboardTypesForSelection;
</del><ins>+@property (nonatomic, readonly, copy) NSArray *pasteboardTypesForSelection;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx">     @method writeSelectionWithPasteboardTypes:toPasteboard:
</span><span class="lines">@@ -598,65 +487,44 @@
</span><span class="cx"> - (void)removeDragCaret;
</span><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method setDrawsBackground:
-    @param drawsBackround YES to cause the receiver to draw a default white background, NO otherwise.
-    @abstract Sets whether the receiver draws a default white background when the loaded page has no background specified.
</del><ins>+    @property drawsBackground
+    @abstract Whether the receiver draws a default white background when the loaded page has no background specified.
</ins><span class="cx"> */
</span><del>-- (void)setDrawsBackground:(BOOL)drawsBackround;
</del><ins>+@property (nonatomic) BOOL drawsBackground;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method drawsBackground
-    @result Returns YES if the receiver draws a default white background, NO otherwise.
-*/
-- (BOOL)drawsBackground;
-
-/*!
-    @method setShouldUpdateWhileOffscreen:
-    @abstract Sets whether the receiver must update even when it is not in a window that is currently visible.
-    @param updateWhileOffscreen whether the receiver is required to render updates to the web page when it is not in a visible window.
-    @abstract If set to NO, then whenever the web view is not in a visible window, updates to the web page will not necessarily be rendered in the view.
</del><ins>+    @method shouldUpdateWhileOffscreen
+    @abstract Whether the WebView is always updated even when it is not in a window that is currently visible.
+    @discussion If set to NO, then whenever the web view is not in a visible window, updates to the web page will not necessarily be rendered in the view.
</ins><span class="cx">     However, when the window is made visible, the view will be updated automatically. Not updating while hidden can improve performance. If set to is YES,
</span><span class="cx">     hidden web views are always updated. This is the default.
</span><span class="cx"> */
</span><del>-- (void)setShouldUpdateWhileOffscreen:(BOOL)updateWhileOffscreen;
</del><ins>+@property (nonatomic) BOOL shouldUpdateWhileOffscreen;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method shouldUpdateWhileOffscreen
-    @result Returns whether the web view is always updated even when it is not in a window that is currently visible.
</del><ins>+    @property mainFrameURL
+    @abstract The main frame's current URL.
</ins><span class="cx"> */
</span><del>-- (BOOL)shouldUpdateWhileOffscreen;
</del><ins>+@property (nonatomic, copy) NSString *mainFrameURL;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method setMainFrameURL:
-    @param URLString The URL to load in the mainFrame.
</del><ins>+    @property mainFrameDocument
+    @abstract The main frame's DOMDocument.
</ins><span class="cx"> */
</span><del>-- (void)setMainFrameURL:(NSString *)URLString;
</del><ins>+@property (nonatomic, readonly, strong) DOMDocument *mainFrameDocument;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method mainFrameURL
-    @result Returns the main frame's current URL.
</del><ins>+    @property mainFrameTitle
+    @abstract The main frame's title if any, otherwise an empty string.
</ins><span class="cx"> */
</span><del>-- (NSString *)mainFrameURL;
</del><ins>+@property (nonatomic, readonly, copy) NSString *mainFrameTitle;
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><del>-    @method mainFrameDocument
-    @result Returns the main frame's DOMDocument.
</del><ins>+    @property mainFrameIcon
+    @abstract The site icon for the current page loaded in the mainFrame, or nil.
</ins><span class="cx"> */
</span><del>-- (DOMDocument *)mainFrameDocument;
</del><ins>+@property (nonatomic, readonly, strong) NSImage *mainFrameIcon;
</ins><span class="cx"> 
</span><del>-/*!
-    @method mainFrameTitle
-    @result Returns the main frame's title if any, otherwise an empty string.
-*/
-- (NSString *)mainFrameTitle;
-
-/*!
-    @method mainFrameIcon
-    @discussion The methods returns the site icon for the current page loaded in the mainFrame.
-    @result Returns the main frame's icon if any, otherwise nil.
-*/
-- (NSImage *)mainFrameIcon;
-
</del><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="lines">@@ -665,15 +533,15 @@
</span><span class="cx"> - (IBAction)stopLoading:(id)sender;
</span><span class="cx"> - (IBAction)reload:(id)sender;
</span><span class="cx"> - (IBAction)reloadFromOrigin:(id)sender;
</span><del>-- (BOOL)canGoBack;
</del><ins>+@property (nonatomic, readonly) BOOL canGoBack;
</ins><span class="cx"> - (IBAction)goBack:(id)sender;
</span><del>-- (BOOL)canGoForward;
</del><ins>+@property (nonatomic, readonly) BOOL canGoForward;
</ins><span class="cx"> - (IBAction)goForward:(id)sender;
</span><del>-- (BOOL)canMakeTextLarger;
</del><ins>+@property (nonatomic, readonly) BOOL canMakeTextLarger;
</ins><span class="cx"> - (IBAction)makeTextLarger:(id)sender;
</span><del>-- (BOOL)canMakeTextSmaller;
</del><ins>+@property (nonatomic, readonly) BOOL canMakeTextSmaller;
</ins><span class="cx"> - (IBAction)makeTextSmaller:(id)sender;
</span><del>-- (BOOL)canMakeTextStandardSize;
</del><ins>+@property (nonatomic, readonly) BOOL canMakeTextStandardSize;
</ins><span class="cx"> - (IBAction)makeTextStandardSize:(id)sender;
</span><span class="cx"> - (IBAction)toggleContinuousSpellChecking:(id)sender;
</span><span class="cx"> - (IBAction)toggleSmartInsertDelete:(id)sender;
</span><span class="lines">@@ -695,21 +563,16 @@
</span><span class="cx"> @interface WebView (WebViewEditing)
</span><span class="cx"> - (DOMRange *)editableDOMRangeForPoint:(NSPoint)point;
</span><span class="cx"> - (void)setSelectedDOMRange:(DOMRange *)range affinity:(NSSelectionAffinity)selectionAffinity;
</span><del>-- (DOMRange *)selectedDOMRange;
-- (NSSelectionAffinity)selectionAffinity;
-- (BOOL)maintainsInactiveSelection;
-- (void)setEditable:(BOOL)flag;
-- (BOOL)isEditable;
-- (void)setTypingStyle:(DOMCSSStyleDeclaration *)style;
-- (DOMCSSStyleDeclaration *)typingStyle;
-- (void)setSmartInsertDeleteEnabled:(BOOL)flag;
-- (BOOL)smartInsertDeleteEnabled;
-- (void)setContinuousSpellCheckingEnabled:(BOOL)flag;
-- (BOOL)isContinuousSpellCheckingEnabled;
-- (NSInteger)spellCheckerDocumentTag;
-- (NSUndoManager *)undoManager;
-- (void)setEditingDelegate:(id)delegate;
-- (id)editingDelegate;
</del><ins>+@property (nonatomic, readonly, strong) DOMRange *selectedDOMRange;
+@property (nonatomic, readonly) NSSelectionAffinity selectionAffinity;
+@property (nonatomic, readonly) BOOL maintainsInactiveSelection;
+@property (nonatomic, getter=isEditable) BOOL editable;
+@property (nonatomic, strong) DOMCSSStyleDeclaration *typingStyle;
+@property (nonatomic) BOOL smartInsertDeleteEnabled;
+@property (nonatomic, getter=isContinuousSpellCheckingEnabled) BOOL continuousSpellCheckingEnabled;
+@property (nonatomic, readonly) NSInteger spellCheckerDocumentTag;
+@property (nonatomic, readonly, strong) NSUndoManager *undoManager;
+@property (nonatomic, strong) id editingDelegate;
</ins><span class="cx"> - (DOMCSSStyleDeclaration *)styleDeclarationWithText:(NSString *)text;
</span><span class="cx"> @end
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitmacWebViewWebViewmm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/mac/WebView/WebView.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/mac/WebView/WebView.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/mac/WebView/WebView.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -169,7 +169,6 @@
</span><span class="cx"> #import &lt;WebCore/RuntimeEnabledFeatures.h&gt;
</span><span class="cx"> #import &lt;WebCore/SchemeRegistry.h&gt;
</span><span class="cx"> #import &lt;WebCore/ScriptController.h&gt;
</span><del>-#import &lt;WebCore/ScriptValue.h&gt;
</del><span class="cx"> #import &lt;WebCore/SecurityOrigin.h&gt;
</span><span class="cx"> #import &lt;WebCore/SecurityPolicy.h&gt;
</span><span class="cx"> #import &lt;WebCore/Settings.h&gt;
</span><span class="lines">@@ -185,6 +184,7 @@
</span><span class="cx"> #import &lt;WebKit/DOMExtensions.h&gt;
</span><span class="cx"> #import &lt;WebKit/DOMPrivate.h&gt;
</span><span class="cx"> #import &lt;WebKitSystemInterface.h&gt;
</span><ins>+#import &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> #import &lt;mach-o/dyld.h&gt;
</span><span class="cx"> #import &lt;objc/objc-auto.h&gt;
</span><span class="cx"> #import &lt;objc/runtime.h&gt;
</span><span class="lines">@@ -399,7 +399,7 @@
</span><span class="cx">     id target; // Non-retained. Don't retain delegates.
</span><span class="cx">     id defaultTarget;
</span><span class="cx"> }
</span><del>-- (id)initWithTarget:(id)target defaultTarget:(id)defaultTarget;
</del><ins>+- (instancetype)initWithTarget:(id)target defaultTarget:(id)defaultTarget;
</ins><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> FindOptions coreOptions(WebFindOptions options)
</span><span class="lines">@@ -594,15 +594,14 @@
</span><span class="cx"> 
</span><span class="cx"> static NSString *createUserVisibleWebKitVersionString()
</span><span class="cx"> {
</span><del>-    // If the version is 4 digits long or longer, then the first digit represents
-    // the version of the OS. Our user agent string should not include this first digit,
-    // so strip it off and report the rest as the version. &lt;rdar://problem/4997547&gt;
</del><ins>+    // If the version is longer than 3 digits then the leading digits represent the version of the OS. Our user agent
+    // string should not include the leading digits, so strip them off and report the rest as the version. &lt;rdar://problem/4997547&gt;
</ins><span class="cx">     NSString *fullVersion = [[NSBundle bundleForClass:[WebView class]] objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey];
</span><span class="cx">     NSRange nonDigitRange = [fullVersion rangeOfCharacterFromSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]];
</span><del>-    if (nonDigitRange.location == NSNotFound &amp;&amp; [fullVersion length] &gt;= 4)
-        return [[fullVersion substringFromIndex:1] copy];
-    if (nonDigitRange.location != NSNotFound &amp;&amp; nonDigitRange.location &gt;= 4)
-        return [[fullVersion substringFromIndex:1] copy];
</del><ins>+    if (nonDigitRange.location == NSNotFound &amp;&amp; fullVersion.length &gt; 3)
+        return [[fullVersion substringFromIndex:fullVersion.length - 3] copy];
+    if (nonDigitRange.location != NSNotFound &amp;&amp; nonDigitRange.location &gt; 3)
+        return [[fullVersion substringFromIndex:nonDigitRange.location - 3] copy];
</ins><span class="cx">     return [fullVersion copy];
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1688,6 +1687,10 @@
</span><span class="cx">     settings-&gt;setVideoPluginProxyEnabled([preferences isVideoPluginProxyEnabled]);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if ENABLE(MEDIA_SOURCE)
+    settings.setMediaSourceEnabled([preferences mediaSourceEnabled]);
+#endif
+
</ins><span class="cx">     switch ([preferences storageBlockingPolicy]) {
</span><span class="cx">     case WebAllowAllStorage:
</span><span class="cx">         settings.setStorageBlockingPolicy(SecurityOrigin::AllowAllStorage);
</span><span class="lines">@@ -3277,7 +3280,7 @@
</span><span class="cx"> 
</span><span class="cx"> // Used to send messages to delegates that implement informal protocols.
</span><span class="cx"> 
</span><del>-- (id)initWithTarget:(id)t defaultTarget:(id)dt
</del><ins>+- (instancetype)initWithTarget:(id)t defaultTarget:(id)dt
</ins><span class="cx"> {
</span><span class="cx">     self = [super init];
</span><span class="cx">     if (!self)
</span><span class="lines">@@ -3629,12 +3632,12 @@
</span><span class="cx">     return isOldClient &amp;&amp; !pthread_main_np();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (id)initWithFrame:(NSRect)f
</del><ins>+- (instancetype)initWithFrame:(NSRect)f
</ins><span class="cx"> {
</span><span class="cx">     return [self initWithFrame:f frameName:nil groupName:nil];
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (id)initWithFrame:(NSRect)f frameName:(NSString *)frameName groupName:(NSString *)groupName
</del><ins>+- (instancetype)initWithFrame:(NSRect)f frameName:(NSString *)frameName groupName:(NSString *)groupName
</ins><span class="cx"> {
</span><span class="cx">     if (needsWebViewInitThreadWorkaround())
</span><span class="cx">         return [[self _webkit_invokeOnMainThread] initWithFrame:f frameName:frameName groupName:groupName];
</span><span class="lines">@@ -3643,7 +3646,7 @@
</span><span class="cx">     return [self _initWithFrame:f frameName:frameName groupName:groupName usesDocumentViews:YES];
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (id)initWithCoder:(NSCoder *)decoder
</del><ins>+- (instancetype)initWithCoder:(NSCoder *)decoder
</ins><span class="cx"> {
</span><span class="cx">     if (needsWebViewInitThreadWorkaround())
</span><span class="cx">         return [[self _webkit_invokeOnMainThread] initWithCoder:decoder];
</span><span class="lines">@@ -6222,7 +6225,7 @@
</span><span class="cx">     return s_cacheModel;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-+ (WebCacheModel)_didSetCacheModel
</del><ins>++ (BOOL)_didSetCacheModel
</ins><span class="cx"> {
</span><span class="cx">     return s_didSetCacheModel;
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitwinChangeLog"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/win/ChangeLog (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/win/ChangeLog        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/win/ChangeLog        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,3 +1,10 @@
</span><ins>+2014-01-23  Mark Hahnenberg  &lt;mhahnenberg@apple.com&gt;
+
+        Merge branch up to ToT r160556.
+
+        * WebFrame.cpp:
+        * WebView.cpp:
+
</ins><span class="cx"> 2013-12-04  Brent Fulgham  &lt;bfulgham@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [Win] Exiting from Media Full Screen mode via 'escape' key does not work properly
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitwinWebFramecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/win/WebFrame.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/win/WebFrame.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/win/WebFrame.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -99,12 +99,12 @@
</span><span class="cx"> #include &lt;WebCore/TextIterator.h&gt;
</span><span class="cx"> #include &lt;WebCore/JSDOMBinding.h&gt;
</span><span class="cx"> #include &lt;WebCore/ScriptController.h&gt;
</span><del>-#include &lt;WebCore/ScriptValue.h&gt;
</del><span class="cx"> #include &lt;WebCore/SecurityOrigin.h&gt;
</span><span class="cx"> #include &lt;JavaScriptCore/APICast.h&gt;
</span><span class="cx"> #include &lt;JavaScriptCore/JSCJSValue.h&gt;
</span><span class="cx"> #include &lt;JavaScriptCore/JSLock.h&gt;
</span><span class="cx"> #include &lt;JavaScriptCore/JSObject.h&gt;
</span><ins>+#include &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> #include &lt;wtf/MathExtras.h&gt;
</span><span class="cx"> 
</span><span class="cx"> #if USE(CG)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKitwinWebViewcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit/win/WebView.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit/win/WebView.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit/win/WebView.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -137,7 +137,6 @@
</span><span class="cx"> #include &lt;WebCore/RuntimeEnabledFeatures.h&gt;
</span><span class="cx"> #include &lt;WebCore/SchemeRegistry.h&gt;
</span><span class="cx"> #include &lt;WebCore/ScriptController.h&gt;
</span><del>-#include &lt;WebCore/ScriptValue.h&gt;
</del><span class="cx"> #include &lt;WebCore/Scrollbar.h&gt;
</span><span class="cx"> #include &lt;WebCore/ScrollbarTheme.h&gt;
</span><span class="cx"> #include &lt;WebCore/SecurityOrigin.h&gt;
</span><span class="lines">@@ -147,6 +146,7 @@
</span><span class="cx"> #include &lt;WebCore/SystemInfo.h&gt;
</span><span class="cx"> #include &lt;WebCore/WindowMessageBroadcaster.h&gt;
</span><span class="cx"> #include &lt;WebCore/WindowsTouch.h&gt;
</span><ins>+#include &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> #include &lt;wtf/MainThread.h&gt;
</span><span class="cx"> 
</span><span class="cx"> #if USE(CG)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2CMakeListstxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/CMakeLists.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/CMakeLists.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/CMakeLists.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -170,9 +170,9 @@
</span><span class="cx">     Platform/CoreIPC/MessageDecoder.cpp
</span><span class="cx">     Platform/CoreIPC/MessageEncoder.cpp
</span><span class="cx">     Platform/CoreIPC/MessageReceiverMap.cpp
</span><del>-    Platform/CoreIPC/MessageSender.cpp
</del><span class="cx"> 
</span><span class="cx">     Platform/IPC/DataReference.cpp
</span><ins>+    Platform/IPC/MessageSender.cpp
</ins><span class="cx">     Platform/IPC/StringReference.cpp
</span><span class="cx"> 
</span><span class="cx">     PluginProcess/PluginControllerProxy.cpp
</span><span class="lines">@@ -181,6 +181,9 @@
</span><span class="cx">     PluginProcess/WebProcessConnection.cpp
</span><span class="cx"> 
</span><span class="cx">     Shared/APIArray.cpp
</span><ins>+    Shared/APIFrameHandle.cpp
+    Shared/APIGeometry.cpp
+    Shared/APIPageHandle.cpp
</ins><span class="cx">     Shared/APIObject.cpp
</span><span class="cx">     Shared/ActivityAssertion.cpp
</span><span class="cx">     Shared/CacheModel.cpp
</span><span class="lines">@@ -201,6 +204,7 @@
</span><span class="cx">     Shared/ShareableResource.cpp
</span><span class="cx">     Shared/StatisticsData.cpp
</span><span class="cx">     Shared/UpdateInfo.cpp
</span><ins>+    Shared/UserData.cpp
</ins><span class="cx">     Shared/VisitedLinkTable.cpp
</span><span class="cx">     Shared/WebBackForwardListItem.cpp
</span><span class="cx">     Shared/WebBatteryStatus.cpp
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/ChangeLog (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/ChangeLog        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/ChangeLog        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,3 +1,820 @@
</span><ins>+2014-01-23  Mark Hahnenberg  &lt;mhahnenberg@apple.com&gt;
+
+        Merge branch up to ToT r160556.
+
+        * CMakeLists.txt:
+        * Configurations/Version.xcconfig:
+        * DatabaseProcess/DatabaseProcess.cpp:
+        (WebKit::DatabaseProcess::removeUniqueIDBDatabase):
+        (WebKit::DatabaseProcess::initializeDatabaseProcess):
+        (WebKit::DatabaseProcess::ensureIndexedDatabaseRelativePathExists):
+        (WebKit::DatabaseProcess::ensurePathExists):
+        (WebKit::DatabaseProcess::absoluteIndexedDatabasePathFromDatabaseRelativePath):
+        (WebKit::DatabaseProcess::postDatabaseTask):
+        (WebKit::DatabaseProcess::performNextDatabaseTask):
+        * DatabaseProcess/DatabaseProcess.h:
+        (WebKit::DatabaseProcess::queue):
+        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
+        (WebKit::UniqueIDBDatabase::UniqueIDBDatabase):
+        (WebKit::UniqueIDBDatabase::~UniqueIDBDatabase):
+        (WebKit::UniqueIDBDatabase::filenameForDatabaseName):
+        (WebKit::UniqueIDBDatabase::databaseFilenameIdentifier):
+        (WebKit::UniqueIDBDatabase::canShareDatabases):
+        (WebKit::UniqueIDBDatabase::unregisterConnection):
+        (WebKit::UniqueIDBDatabase::shutdown):
+        (WebKit::UniqueIDBDatabase::getOrEstablishIDBDatabaseMetadata):
+        (WebKit::UniqueIDBDatabase::openBackingStoreAndReadMetadata):
+        (WebKit::UniqueIDBDatabase::didOpenBackingStoreAndReadMetadata):
+        (WebKit::UniqueIDBDatabase::absoluteDatabaseDirectory):
+        (WebKit::UniqueIDBDatabase::postMainThreadTask):
+        (WebKit::UniqueIDBDatabase::performNextMainThreadTask):
+        (WebKit::UniqueIDBDatabase::postDatabaseTask):
+        (WebKit::UniqueIDBDatabase::performNextDatabaseTask):
+        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:
+        * DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h: Added.
+        (WebKit::UniqueIDBDatabaseBackingStore::~UniqueIDBDatabaseBackingStore):
+        * DatabaseProcess/IndexedDB/UniqueIDBDatabaseIdentifier.cpp:
+        (WebKit::UniqueIDBDatabaseIdentifier::isolatedCopy):
+        * DatabaseProcess/IndexedDB/UniqueIDBDatabaseIdentifier.h:
+        * DatabaseProcess/IndexedDB/sqlite: Added.
+        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp: Added.
+        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::UniqueIDBDatabaseBackingStoreSQLite):
+        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::createAndPopulateInitialMetadata):
+        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::extractExistingMetadata):
+        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::openSQLiteDatabaseAtPath):
+        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::getOrEstablishMetadata):
+        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.h: Added.
+        * DerivedSources.make:
+        * GNUmakefile.am:
+        * GNUmakefile.list.am:
+        * NetworkProcess/AsynchronousNetworkLoaderClient.cpp:
+        * NetworkProcess/NetworkProcess.cpp:
+        (WebKit::NetworkProcess::createNetworkConnectionToWebProcess):
+        * NetworkProcess/NetworkProcess.h:
+        * NetworkProcess/NetworkProcess.messages.in:
+        * NetworkProcess/NetworkResourceLoader.cpp:
+        * NetworkProcess/mac/NetworkProcessMac.mm:
+        * NetworkProcess/soup/NetworkProcessSoup.cpp:
+        (WebKit::getCacheDiskFreeSize):
+        (WebKit::getMemorySize):
+        (WebKit::NetworkProcess::platformInitializeNetworkProcess):
+        (WebKit::NetworkProcess::platformSetCacheModel):
+        (WebKit::NetworkProcess::setIgnoreTLSErrors):
+        (WebKit::NetworkProcess::allowSpecificHTTPSCertificateForHost):
+        (WebKit::NetworkProcess::clearCacheForAllOrigins):
+        * NetworkProcess/unix/NetworkProcessMainUnix.cpp:
+        (WebKit::NetworkProcessMain):
+        * Platform/CoreIPC/ArgumentDecoder.cpp:
+        (CoreIPC::decodeValueFromBuffer):
+        (CoreIPC::ArgumentDecoder::decode):
+        * Platform/CoreIPC/ArgumentEncoder.cpp:
+        (CoreIPC::copyValueToBuffer):
+        (CoreIPC::ArgumentEncoder::encode):
+        * Platform/CoreIPC/Connection.h:
+        * Platform/CoreIPC/HandleMessage.h:
+        (CoreIPC::callMemberFunction):
+        * Platform/CoreIPC/MessageReceiverMap.cpp:
+        (CoreIPC::MessageReceiverMap::addMessageReceiver):
+        * Platform/CoreIPC/MessageReceiverMap.h:
+        * Platform/CoreIPC/MessageSender.cpp:
+        * Platform/CoreIPC/MessageSender.h:
+        * Platform/CoreIPC/unix/ConnectionUnix.cpp:
+        (CoreIPC::Connection::createPlatformConnection):
+        * Platform/IPC/DataReference.cpp:
+        * Platform/IPC/DataReference.h:
+        * Platform/IPC/MessageSender.cpp: Added.
+        (IPC::MessageSender::~MessageSender):
+        (IPC::MessageSender::sendMessage):
+        * Platform/IPC/MessageSender.h: Added.
+        (IPC::MessageSender::send):
+        (IPC::MessageSender::sendSync):
+        * Platform/IPC/StringReference.cpp:
+        * Platform/IPC/StringReference.h:
+        * PlatformEfl.cmake:
+        * PlatformGTK.cmake:
+        * PluginProcess/PluginProcess.cpp:
+        (WebKit::PluginProcess::createWebProcessConnection):
+        * Shared/API/Cocoa/WKRemoteObjectCoder.mm:
+        (-[WKRemoteObjectEncoder encodeBool:forKey:]):
+        (-[WKRemoteObjectEncoder encodeInt64:forKey:]):
+        (-[WKRemoteObjectEncoder encodeDouble:forKey:]):
+        (-[WKRemoteObjectDecoder decodeBoolForKey:]):
+        (-[WKRemoteObjectDecoder decodeInt64ForKey:]):
+        (-[WKRemoteObjectDecoder decodeDoubleForKey:]):
+        * Shared/API/c/WKContextMenuItem.cpp:
+        (WKContextMenuItemCreateAsAction):
+        (WKContextMenuItemCreateAsCheckableAction):
+        (WKContextMenuItemCreateAsSubmenu):
+        (WKContextMenuItemGetTag):
+        (WKContextMenuItemGetType):
+        (WKContextMenuItemCopyTitle):
+        (WKContextMenuItemGetEnabled):
+        (WKContextMenuItemGetChecked):
+        (WKContextMenuCopySubmenuItems):
+        (WKContextMenuItemGetUserData):
+        (WKContextMenuItemSetUserData):
+        * Shared/API/c/WKDictionary.cpp:
+        (WKDictionaryCreate):
+        * Shared/API/c/WKDictionary.h:
+        * Shared/API/c/WKGeometry.cpp:
+        (WKSizeGetTypeID):
+        (WKPointGetTypeID):
+        (WKRectGetTypeID):
+        (WKPointCreate):
+        (WKSizeCreate):
+        (WKRectCreate):
+        * Shared/API/c/WKNumber.cpp:
+        (WKBooleanGetTypeID):
+        (WKBooleanCreate):
+        (WKDoubleGetTypeID):
+        (WKDoubleCreate):
+        (WKUInt64GetTypeID):
+        (WKUInt64Create):
+        * Shared/API/c/WKSharedAPICast.h:
+        * Shared/API/c/WKURLRequest.cpp:
+        (WKURLRequestCopyURL):
+        * Shared/API/c/mac/WKCertificateInfoMac.mm:
+        * Shared/API/c/mac/WKURLRequestNS.mm:
+        (WKURLRequestCopyNSURLRequest):
+        * Shared/API/c/mac/WKURLResponseNS.mm:
+        (WKURLResponseCopyNSURLResponse):
+        * Shared/APIArray.h:
+        * Shared/APIFrameHandle.cpp: Added.
+        (API::FrameHandle::create):
+        (API::FrameHandle::FrameHandle):
+        (API::FrameHandle::~FrameHandle):
+        * Shared/APIFrameHandle.h: Added.
+        (API::FrameHandle::frameID):
+        * Shared/APIGeometry.cpp: Added.
+        (API::Point::encode):
+        (API::Point::decode):
+        (API::Size::encode):
+        (API::Size::decode):
+        (API::Rect::encode):
+        (API::Rect::decode):
+        * Shared/APIGeometry.h: Added.
+        (API::Size::create):
+        (API::Size::size):
+        (API::Size::Size):
+        (API::Point::create):
+        (API::Point::point):
+        (API::Point::Point):
+        (API::Rect::create):
+        (API::Rect::rect):
+        (API::Rect::Rect):
+        * Shared/APINumber.h: Added.
+        (API::Number::create):
+        (API::Number::value):
+        (API::Number::encode):
+        (API::Number::decode):
+        (API::Number::Number):
+        * Shared/APIObject.h:
+        (API::ObjectImpl::~ObjectImpl):
+        (API::ObjectImpl::ObjectImpl):
+        * Shared/APIPageHandle.cpp: Added.
+        (API::PageHandle::create):
+        (API::PageHandle::PageHandle):
+        (API::PageHandle::~PageHandle):
+        * Shared/APIPageHandle.h: Added.
+        (API::PageHandle::pageID):
+        * Shared/AsyncTask.h: Added.
+        (WebKit::AsyncTask::~AsyncTask):
+        (WebKit::AsyncTask::AsyncTask):
+        (WebKit::createAsyncTask):
+        * Shared/Authentication/AuthenticationManager.cpp:
+        (WebKit::AuthenticationManager::AuthenticationManager):
+        * Shared/Authentication/AuthenticationManager.h:
+        * Shared/Authentication/AuthenticationManager.messages.in:
+        * Shared/Authentication/mac/AuthenticationManager.mac.mm:
+        * Shared/ChildProcess.cpp:
+        (WebKit::ChildProcess::addMessageReceiver):
+        * Shared/ChildProcess.h:
+        * Shared/ChildProcessProxy.cpp:
+        (WebKit::ChildProcessProxy::addMessageReceiver):
+        * Shared/ChildProcessProxy.h:
+        * Shared/Cocoa/APIObject.mm:
+        (API::Object::newObject):
+        * Shared/Cocoa/WKNSData.h: Added.
+        (WebKit::wrapper):
+        * Shared/Cocoa/WKNSData.mm: Added.
+        (-[WKNSData dealloc]):
+        (-[WKNSData length]):
+        (-[WKNSData bytes]):
+        (-[WKNSData copyWithZone:]):
+        (-[WKNSData API::]):
+        * Shared/Cocoa/WKNSDictionary.mm:
+        (-[WKNSDictionary copyWithZone:]):
+        * Shared/ImmutableDictionary.cpp:
+        (WebKit::ImmutableDictionary::create):
+        (WebKit::ImmutableDictionary::ImmutableDictionary):
+        * Shared/ImmutableDictionary.h:
+        * Shared/MutableDictionary.cpp:
+        (WebKit::MutableDictionary::MutableDictionary):
+        * Shared/Network/NetworkProcessCreationParameters.cpp:
+        (WebKit::NetworkProcessCreationParameters::encode):
+        (WebKit::NetworkProcessCreationParameters::decode):
+        * Shared/Network/NetworkProcessCreationParameters.h:
+        * Shared/Plugins/Netscape/PluginInformation.cpp:
+        (WebKit::getPluginModuleInformation):
+        (WebKit::createPluginInformationDictionary):
+        * Shared/Plugins/Netscape/mac/PluginInformationMac.mm:
+        (WebKit::getPlatformPluginModuleInformation):
+        * Shared/SecurityOriginData.cpp:
+        (WebKit::SecurityOriginData::isolatedCopy):
+        * Shared/SecurityOriginData.h:
+        * Shared/UserData.cpp: Added.
+        (WebKit::UserData::UserData):
+        (WebKit::UserData::~UserData):
+        (WebKit::UserData::transform):
+        (WebKit::UserData::encode):
+        (WebKit::UserData::decode):
+        * Shared/UserData.h: Added.
+        (WebKit::UserData::object):
+        * Shared/UserMessageCoders.h:
+        (WebKit::UserMessageEncoder::baseEncode):
+        (WebKit::UserMessageDecoder::baseDecode):
+        * Shared/WebArchive.h:
+        * Shared/WebArchiveResource.h:
+        * Shared/WebBackForwardListItem.h:
+        * Shared/WebBatteryStatus.h:
+        * Shared/WebCertificateInfo.h:
+        (WebKit::WebCertificateInfo::create):
+        (WebKit::WebCertificateInfo::certificateInfo):
+        (WebKit::WebCertificateInfo::WebCertificateInfo):
+        * Shared/WebConnection.cpp:
+        (WebKit::WebConnection::postMessage):
+        * Shared/WebConnection.h:
+        * Shared/WebContextMenuItem.h:
+        * Shared/WebCoreArgumentCoders.cpp:
+        * Shared/WebCoreArgumentCoders.h:
+        * Shared/WebCrossThreadCopier.cpp: Added.
+        (WebCore::::copy):
+        * Shared/WebCrossThreadCopier.h: Added.
+        * Shared/WebData.h:
+        * Shared/WebError.h:
+        * Shared/WebGeolocationPosition.h:
+        * Shared/WebGeometry.h:
+        * Shared/WebHitTestResult.h:
+        * Shared/WebImage.h:
+        * Shared/WebNetworkInfo.h:
+        * Shared/WebNumber.h:
+        * Shared/WebOpenPanelParameters.h:
+        * Shared/WebPageCreationParameters.cpp:
+        (WebKit::WebPageCreationParameters::encode):
+        (WebKit::WebPageCreationParameters::decode):
+        * Shared/WebPageCreationParameters.h:
+        * Shared/WebPreferencesStore.h:
+        * Shared/WebRenderLayer.h:
+        * Shared/WebRenderObject.h:
+        * Shared/WebSecurityOrigin.h:
+        * Shared/WebSerializedScriptValue.h:
+        * Shared/WebString.h:
+        * Shared/WebURL.h:
+        * Shared/WebURLRequest.cpp:
+        * Shared/WebURLRequest.h:
+        * Shared/WebURLResponse.h:
+        * Shared/WebUserContentURLPattern.h:
+        * Shared/mac/CertificateInfo.h:
+        * Shared/mac/CertificateInfo.mm:
+        * Shared/mac/ObjCObjectGraph.h:
+        * Shared/mac/ObjCObjectGraphCoders.mm:
+        (WebKit::InjectedBundleObjCObjectGraphDecoderImpl::decode):
+        * Shared/mac/WebCoreArgumentCodersMac.mm:
+        (CoreIPC::::encode):
+        (CoreIPC::::decode):
+        * Shared/mac/WebURLRequestMac.mm:
+        * Shared/mac/WebURLResponseMac.mm:
+        * Shared/soup/CertificateInfo.cpp:
+        * Shared/soup/CertificateInfo.h:
+        * Shared/soup/WebCoreArgumentCodersSoup.cpp:
+        (CoreIPC::::encode):
+        (CoreIPC::::decode):
+        * UIProcess/API/C/CoordinatedGraphics/WKView.cpp:
+        (WKViewExitFullScreen):
+        * UIProcess/API/C/WKPage.cpp:
+        (WKPageSetBackgroundExtendsBeyondPage):
+        (WKPageBackgroundExtendsBeyondPage):
+        (WKPageSetPageContextMenuClient):
+        (WKPageSelectContextMenuItem):
+        * UIProcess/API/C/WKPage.h:
+        * UIProcess/API/C/WKPagePolicyClientInternal.h: Added.
+        * UIProcess/API/C/WKPreferences.cpp:
+        (WKPreferencesSetMediaSourceEnabled):
+        (WKPreferencesGetMediaSourceEnabled):
+        * UIProcess/API/C/WKPreferencesPrivate.h:
+        * UIProcess/API/C/gtk/WKInspectorClientGtk.h:
+        * UIProcess/API/C/mac/WKContextPrivateMac.mm:
+        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
+        (processDidCrash):
+        (setUpPageLoaderClient):
+        (setUpPagePolicyClient):
+        * UIProcess/API/Cocoa/WKBrowsingContextLoadDelegatePrivate.h:
+        * UIProcess/API/Cocoa/WKBrowsingContextPolicyDelegate.h:
+        * UIProcess/API/Cocoa/WKConnection.mm:
+        (-[WKConnection dealloc]):
+        (-[WKConnection setDelegate:]):
+        (-[WKConnection sendMessageWithName:body:]):
+        (-[WKConnection remoteObjectRegistry]):
+        (-[WKConnection _connection]):
+        (-[WKConnection API::]):
+        * UIProcess/API/Cocoa/WKViewPrivate.h:
+        * UIProcess/API/gtk/PageClientImpl.cpp:
+        (WebKit::PageClientImpl::fullScreenManagerProxyClient):
+        (WebKit::PageClientImpl::closeFullScreenManager):
+        (WebKit::PageClientImpl::isFullScreen):
+        (WebKit::PageClientImpl::enterFullScreen):
+        (WebKit::PageClientImpl::exitFullScreen):
+        (WebKit::PageClientImpl::beganEnterFullScreen):
+        (WebKit::PageClientImpl::beganExitFullScreen):
+        * UIProcess/API/gtk/PageClientImpl.h:
+        * UIProcess/API/gtk/WebKitBatteryProvider.cpp: Added.
+        (toBatteryProvider):
+        (startUpdatingCallback):
+        (stopUpdatingCallback):
+        (WebKitBatteryProvider::create):
+        (WebKitBatteryProvider::WebKitBatteryProvider):
+        (WebKitBatteryProvider::~WebKitBatteryProvider):
+        (WebKitBatteryProvider::startUpdating):
+        (WebKitBatteryProvider::stopUpdating):
+        (WebKitBatteryProvider::updateBatteryStatus):
+        * UIProcess/API/gtk/WebKitBatteryProvider.h: Added.
+        * UIProcess/API/gtk/WebKitCertificateInfoPrivate.h:
+        * UIProcess/API/gtk/WebKitInjectedBundleClient.cpp:
+        (didReceiveWebViewMessageFromInjectedBundle):
+        * UIProcess/API/gtk/WebKitSettings.cpp:
+        (webKitSettingsSetProperty):
+        (webKitSettingsGetProperty):
+        (webkit_settings_class_init):
+        (webkit_settings_get_enable_mediasource):
+        (webkit_settings_set_enable_mediasource):
+        * UIProcess/API/gtk/WebKitSettings.h:
+        * UIProcess/API/gtk/WebKitWebContext.cpp:
+        (createDefaultWebContext):
+        (webkit_web_context_prefetch_dns):
+        * UIProcess/API/gtk/WebKitWebView.cpp:
+        (webkit_web_view_get_tls_info):
+        (webkit_web_view_get_snapshot):
+        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
+        (webkitWebViewBaseAddWebInspector):
+        (webkitWebViewBaseContainerRemove):
+        (resizeWebKitWebViewBaseFromAllocation):
+        (webkitWebViewBaseCreateWebPage):
+        (webkitWebViewBaseSetInspectorViewSize):
+        * UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
+        * UIProcess/API/gtk/WebKitWindowProperties.cpp:
+        (webkitWindowPropertiesUpdateFromWebWindowFeatures):
+        * UIProcess/API/gtk/docs/webkit2gtk-sections.txt:
+        * UIProcess/API/gtk/tests/DOMNodeTest.cpp:
+        (WebKitDOMNodeTest::testTagNames):
+        (WebKitDOMNodeTest::runTest):
+        (registerTests):
+        * UIProcess/API/gtk/tests/TestDOMNode.cpp:
+        (testWebKitDOMNodeTagNames):
+        (beforeAll):
+        * UIProcess/API/gtk/tests/TestMain.cpp:
+        (main):
+        * UIProcess/API/gtk/tests/TestWebKitAccessibility.cpp:
+        (testAtspiBasicHierarchy):
+        * UIProcess/API/gtk/tests/TestWebKitSettings.cpp:
+        (testWebKitSettings):
+        * UIProcess/API/gtk/tests/WebProcessTestRunner.cpp:
+        (WebProcessTestRunner::WebProcessTestRunner):
+        * UIProcess/API/ios/PageClientImplIOS.h:
+        * UIProcess/API/ios/PageClientImplIOS.mm:
+        (WebKit::PageClientImpl::fullScreenManagerProxyClient):
+        (WebKit::PageClientImpl::closeFullScreenManager):
+        (WebKit::PageClientImpl::isFullScreen):
+        (WebKit::PageClientImpl::enterFullScreen):
+        (WebKit::PageClientImpl::exitFullScreen):
+        (WebKit::PageClientImpl::beganEnterFullScreen):
+        (WebKit::PageClientImpl::beganExitFullScreen):
+        * UIProcess/API/ios/WKGeolocationProviderIOS.mm:
+        (-[WKGeolocationProviderIOS init]):
+        * UIProcess/API/mac/PageClientImpl.h:
+        * UIProcess/API/mac/PageClientImpl.mm:
+        (WebKit::PageClientImpl::fullScreenManagerProxyClient):
+        (WebKit::PageClientImpl::closeFullScreenManager):
+        (WebKit::PageClientImpl::isFullScreen):
+        (WebKit::PageClientImpl::enterFullScreen):
+        (WebKit::PageClientImpl::exitFullScreen):
+        (WebKit::PageClientImpl::beganEnterFullScreen):
+        (WebKit::PageClientImpl::beganExitFullScreen):
+        * UIProcess/API/mac/WKView.mm:
+        (-[WKView _hasFullScreenWindowController]):
+        (-[WKView _fullScreenWindowController]):
+        (-[WKView _closeFullScreenWindowController]):
+        (-[WKView initWithFrame:contextRef:pageGroupRef:relatedToPage:]):
+        (-[WKView fullScreenPlaceholderView]):
+        (-[WKView createFullScreenWindow]):
+        (-[WKView waitForAsyncDrawingAreaSizeUpdate]):
+        (-[WKView _ensureGestureController]):
+        (-[WKView setAllowsMagnification:]):
+        (-[WKView allowsMagnification]):
+        (-[WKView magnifyWithEvent:]):
+        (-[WKView endGestureWithEvent:]):
+        (-[WKView setMagnification:centeredAtPoint:]):
+        (-[WKView setMagnification:]):
+        (-[WKView magnification]):
+        * UIProcess/API/mac/WKViewInternal.h:
+        * UIProcess/APINavigationData.h:
+        * UIProcess/Authentication/AuthenticationChallengeProxy.cpp:
+        (WebKit::AuthenticationChallengeProxy::useCredential):
+        * UIProcess/Authentication/AuthenticationChallengeProxy.h:
+        * UIProcess/Authentication/AuthenticationDecisionListener.h:
+        * UIProcess/Authentication/WebCredential.h:
+        * UIProcess/Authentication/WebProtectionSpace.h:
+        * UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.cpp:
+        (WebKit::CoordinatedLayerTreeHostProxy::CoordinatedLayerTreeHostProxy):
+        * UIProcess/CoordinatedGraphics/WebView.cpp:
+        (WebKit::WebView::fullScreenManagerProxyClient):
+        (WebKit::WebView::requestExitFullScreen):
+        * UIProcess/CoordinatedGraphics/WebView.h:
+        * UIProcess/Downloads/DownloadProxy.h:
+        * UIProcess/Downloads/DownloadProxyMap.cpp:
+        (WebKit::DownloadProxyMap::createDownloadProxy):
+        * UIProcess/DrawingAreaProxy.cpp:
+        (WebKit::DrawingAreaProxy::DrawingAreaProxy):
+        * UIProcess/DrawingAreaProxy.h:
+        (WebKit::DrawingAreaProxy::beginTransientZoom):
+        (WebKit::DrawingAreaProxy::adjustTransientZoom):
+        (WebKit::DrawingAreaProxy::commitTransientZoom):
+        * UIProcess/GeolocationPermissionRequestProxy.h:
+        * UIProcess/Network/CustomProtocols/mac/CustomProtocolManagerProxyMac.mm:
+        (WebKit::CustomProtocolManagerProxy::CustomProtocolManagerProxy):
+        * UIProcess/Network/NetworkProcessProxy.cpp:
+        (WebKit::NetworkProcessProxy::networkProcessCrashedOrFailedToLaunch):
+        (WebKit::NetworkProcessProxy::didCreateNetworkConnectionToWebProcess):
+        * UIProcess/Network/soup/NetworkProcessProxySoup.cpp:
+        (WebKit::NetworkProcessProxy::platformGetLaunchOptions):
+        * UIProcess/Notifications/NotificationPermissionRequest.h:
+        * UIProcess/Notifications/WebNotification.h:
+        * UIProcess/Notifications/WebNotificationManagerProxy.cpp:
+        (WebKit::WebNotificationManagerProxy::populateCopyOfNotificationPermissions):
+        (WebKit::WebNotificationManagerProxy::providerDidCloseNotifications):
+        * UIProcess/Notifications/WebNotificationManagerProxy.h:
+        * UIProcess/Notifications/WebNotificationProvider.cpp:
+        (WebKit::WebNotificationProvider::clearNotifications):
+        * UIProcess/PageClient.h:
+        * UIProcess/PageLoadState.cpp:
+        (WebKit::PageLoadState::PageLoadState):
+        (WebKit::PageLoadState::endTransaction):
+        (WebKit::PageLoadState::commitChanges):
+        (WebKit::PageLoadState::reset):
+        (WebKit::PageLoadState::isLoading):
+        (WebKit::PageLoadState::activeURL):
+        (WebKit::PageLoadState::estimatedProgress):
+        (WebKit::PageLoadState::pendingAPIRequestURL):
+        (WebKit::PageLoadState::setPendingAPIRequestURL):
+        (WebKit::PageLoadState::clearPendingAPIRequestURL):
+        (WebKit::PageLoadState::didStartProvisionalLoad):
+        (WebKit::PageLoadState::didReceiveServerRedirectForProvisionalLoad):
+        (WebKit::PageLoadState::didFailProvisionalLoad):
+        (WebKit::PageLoadState::didCommitLoad):
+        (WebKit::PageLoadState::didFinishLoad):
+        (WebKit::PageLoadState::didFailLoad):
+        (WebKit::PageLoadState::didSameDocumentNavigation):
+        (WebKit::PageLoadState::setUnreachableURL):
+        (WebKit::PageLoadState::title):
+        (WebKit::PageLoadState::setTitle):
+        (WebKit::PageLoadState::didStartProgress):
+        (WebKit::PageLoadState::didChangeProgress):
+        (WebKit::PageLoadState::didFinishProgress):
+        * UIProcess/PageLoadState.h:
+        (WebKit::PageLoadState::Transaction::Transaction):
+        (WebKit::PageLoadState::Transaction::~Transaction):
+        (WebKit::PageLoadState::Transaction::Token::Token):
+        (WebKit::PageLoadState::transaction):
+        (WebKit::PageLoadState::provisionalURL):
+        (WebKit::PageLoadState::url):
+        (WebKit::PageLoadState::unreachableURL):
+        (WebKit::PageLoadState::beginTransaction):
+        (WebKit::PageLoadState::Data::Data):
+        * UIProcess/Plugins/PlugInAutoStartProvider.cpp:
+        (WebKit::PlugInAutoStartProvider::autoStartOriginsTableCopy):
+        (WebKit::PlugInAutoStartProvider::setAutoStartOriginsTable):
+        * UIProcess/Plugins/WebPluginSiteDataManager.h:
+        * UIProcess/StatisticsRequest.cpp:
+        (WebKit::addToDictionaryFromHashMap):
+        * UIProcess/WebApplicationCacheManagerProxy.cpp:
+        (WebKit::WebApplicationCacheManagerProxy::WebApplicationCacheManagerProxy):
+        * UIProcess/WebApplicationCacheManagerProxy.h:
+        * UIProcess/WebBackForwardList.h:
+        * UIProcess/WebBatteryManagerProxy.cpp:
+        (WebKit::WebBatteryManagerProxy::WebBatteryManagerProxy):
+        * UIProcess/WebBatteryManagerProxy.h:
+        * UIProcess/WebColorPickerResultListenerProxy.h:
+        * UIProcess/WebConnectionToWebProcess.cpp:
+        (WebKit::WebConnectionToWebProcess::WebConnectionToWebProcess):
+        * UIProcess/WebContext.cpp:
+        (WebKit::WebContext::WebContext):
+        (WebKit::WebContext::addMessageReceiver):
+        (WebKit::WebContext::pluginInfoStoreDidLoadPlugins):
+        * UIProcess/WebContext.h:
+        (WebKit::WebContext::sendToNetworkingProcess):
+        (WebKit::WebContext::sendToNetworkingProcessRelaunchingIfNecessary):
+        * UIProcess/WebCookieManagerProxy.cpp:
+        (WebKit::WebCookieManagerProxy::WebCookieManagerProxy):
+        * UIProcess/WebCookieManagerProxy.h:
+        * UIProcess/WebDatabaseManagerProxy.cpp:
+        (WebKit::WebDatabaseManagerProxy::WebDatabaseManagerProxy):
+        (WebKit::WebDatabaseManagerProxy::didGetDatabasesByOrigin):
+        * UIProcess/WebDatabaseManagerProxy.h:
+        * UIProcess/WebEditCommandProxy.h:
+        * UIProcess/WebFormClient.cpp:
+        (WebKit::WebFormClient::willSubmitForm):
+        * UIProcess/WebFrameProxy.cpp:
+        (WebKit::WebFrameProxy::didCommitLoad):
+        * UIProcess/WebFrameProxy.h:
+        * UIProcess/WebFullScreenManagerProxy.cpp:
+        (WebKit::WebFullScreenManagerProxy::create):
+        (WebKit::WebFullScreenManagerProxy::WebFullScreenManagerProxy):
+        (WebKit::WebFullScreenManagerProxy::invalidate):
+        (WebKit::WebFullScreenManagerProxy::close):
+        (WebKit::WebFullScreenManagerProxy::isFullScreen):
+        (WebKit::WebFullScreenManagerProxy::enterFullScreen):
+        (WebKit::WebFullScreenManagerProxy::exitFullScreen):
+        (WebKit::WebFullScreenManagerProxy::beganEnterFullScreen):
+        (WebKit::WebFullScreenManagerProxy::beganExitFullScreen):
+        * UIProcess/WebFullScreenManagerProxy.h:
+        (WebKit::WebFullScreenManagerProxyClient::~WebFullScreenManagerProxyClient):
+        * UIProcess/WebGeolocationManagerProxy.cpp:
+        (WebKit::WebGeolocationManagerProxy::WebGeolocationManagerProxy):
+        * UIProcess/WebGeolocationManagerProxy.h:
+        * UIProcess/WebGrammarDetail.h:
+        * UIProcess/WebIconDatabase.cpp:
+        (WebKit::WebIconDatabase::WebIconDatabase):
+        * UIProcess/WebIconDatabase.h:
+        * UIProcess/WebInspectorProxy.cpp:
+        (WebKit::WebInspectorProxy::WebInspectorProxy):
+        (WebKit::isMainInspectorPage):
+        * UIProcess/WebInspectorProxy.h:
+        * UIProcess/WebKeyValueStorageManager.h:
+        * UIProcess/WebMediaCacheManagerProxy.cpp:
+        (WebKit::WebMediaCacheManagerProxy::WebMediaCacheManagerProxy):
+        * UIProcess/WebMediaCacheManagerProxy.h:
+        * UIProcess/WebNetworkInfoManagerProxy.cpp:
+        (WebKit::WebNetworkInfoManagerProxy::WebNetworkInfoManagerProxy):
+        * UIProcess/WebNetworkInfoManagerProxy.h:
+        * UIProcess/WebOpenPanelResultListenerProxy.h:
+        * UIProcess/WebOriginDataManagerProxy.cpp:
+        (WebKit::WebOriginDataManagerProxy::WebOriginDataManagerProxy):
+        * UIProcess/WebOriginDataManagerProxy.h:
+        * UIProcess/WebPageGroup.h:
+        * UIProcess/WebPageProxy.cpp:
+        (WebKit::WebPageProxy::WebPageProxy):
+        (WebKit::WebPageProxy::reattachToWebProcess):
+        (WebKit::WebPageProxy::initializeWebPage):
+        (WebKit::WebPageProxy::loadURL):
+        (WebKit::WebPageProxy::loadURLRequest):
+        (WebKit::WebPageProxy::loadAlternateHTMLString):
+        (WebKit::WebPageProxy::reload):
+        (WebKit::WebPageProxy::goForward):
+        (WebKit::WebPageProxy::goBack):
+        (WebKit::WebPageProxy::goToBackForwardItem):
+        (WebKit::WebPageProxy::receivedPolicyDecision):
+        (WebKit::WebPageProxy::setBackgroundExtendsBeyondPage):
+        (WebKit::WebPageProxy::backgroundExtendsBeyondPage):
+        (WebKit::WebPageProxy::didStartProgress):
+        (WebKit::WebPageProxy::didChangeProgress):
+        (WebKit::WebPageProxy::didFinishProgress):
+        (WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
+        (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
+        (WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
+        (WebKit::WebPageProxy::didCommitLoadForFrame):
+        (WebKit::WebPageProxy::didFinishLoadForFrame):
+        (WebKit::WebPageProxy::didFailLoadForFrame):
+        (WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
+        (WebKit::WebPageProxy::didReceiveTitleForFrame):
+        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
+        (WebKit::WebPageProxy::didFindStringMatches):
+        (WebKit::WebPageProxy::sendMessage):
+        (WebKit::WebPageProxy::messageSenderConnection):
+        (WebKit::WebPageProxy::messageSenderDestinationID):
+        (WebKit::WebPageProxy::processDidCrash):
+        (WebKit::WebPageProxy::initializeCreationParameters):
+        * UIProcess/WebPageProxy.h:
+        * UIProcess/WebPageProxy.messages.in:
+        * UIProcess/WebPolicyClient.cpp:
+        (WebKit::WebPolicyClient::decidePolicyForNavigationAction):
+        * UIProcess/WebPolicyClient.h:
+        * UIProcess/WebPreferences.h:
+        * UIProcess/WebProcessProxy.cpp:
+        (WebKit::WebProcessProxy::apiObjectByConvertingToHandles):
+        * UIProcess/WebProcessProxy.h:
+        * UIProcess/WebResourceCacheManagerProxy.cpp:
+        (WebKit::WebResourceCacheManagerProxy::WebResourceCacheManagerProxy):
+        * UIProcess/WebResourceCacheManagerProxy.h:
+        * UIProcess/WebTextChecker.h:
+        * UIProcess/WebUIClient.cpp:
+        (WebKit::WebUIClient::createNewPage):
+        * UIProcess/WebVibrationProxy.cpp:
+        (WebKit::WebVibrationProxy::WebVibrationProxy):
+        * UIProcess/WebVibrationProxy.h:
+        * UIProcess/WebViewportAttributes.h:
+        * UIProcess/cf/WebPageProxyCF.cpp:
+        (WebKit::WebPageProxy::restoreFromSessionStateData):
+        * UIProcess/efl/WebFullScreenManagerProxyEfl.cpp:
+        * UIProcess/efl/WebPopupItemEfl.h:
+        * UIProcess/efl/WebViewEfl.cpp:
+        (WebKit::WebViewEfl::WebViewEfl):
+        (WebKit::WebViewEfl::setEwkView):
+        (WebKit::WebViewEfl::isFullScreen):
+        (WebKit::WebViewEfl::enterFullScreen):
+        (WebKit::WebViewEfl::exitFullScreen):
+        * UIProcess/efl/WebViewEfl.h:
+        * UIProcess/gtk/WebContextGtk.cpp:
+        (WebKit::WebContext::platformInitializeWebProcess):
+        (WebKit::WebContext::setIgnoreTLSErrors):
+        * UIProcess/gtk/WebFullScreenManagerProxyGtk.cpp:
+        * UIProcess/gtk/WebInspectorClientGtk.cpp:
+        (WebKit::WebInspectorClientGtk::didChangeAttachedWidth):
+        * UIProcess/gtk/WebInspectorClientGtk.h:
+        * UIProcess/gtk/WebInspectorProxyGtk.cpp:
+        (WebKit::WebInspectorProxy::platformAttach):
+        (WebKit::WebInspectorProxy::platformSetAttachedWindowHeight):
+        (WebKit::WebInspectorProxy::platformSetAttachedWindowWidth):
+        * UIProcess/ios/WebFullScreenManagerProxyIOS.mm:
+        * UIProcess/ios/WebPageProxyIOS.mm:
+        (WebKit::WebPageProxy::insertText):
+        * UIProcess/mac/RemoteLayerTreeHost.mm:
+        (WebKit::RemoteLayerTreeHost::RemoteLayerTreeHost):
+        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
+        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
+        (WebKit::TiledCoreAnimationDrawingAreaProxy::beginTransientZoom):
+        (WebKit::TiledCoreAnimationDrawingAreaProxy::adjustTransientZoom):
+        (WebKit::TiledCoreAnimationDrawingAreaProxy::commitTransientZoom):
+        * UIProcess/mac/ViewGestureController.h: Added.
+        * UIProcess/mac/ViewGestureController.messages.in: Added.
+        * UIProcess/mac/WKFullScreenWindowController.mm:
+        (-[WKFullScreenWindowController beganExitFullScreenWithInitialFrame:WebCore::finalFrame:WebCore::]):
+        * UIProcess/mac/WebFullScreenManagerProxyMac.mm:
+        * UIProcess/mac/WebPageProxyMac.mm:
+        (WebKit::userVisibleWebKitVersionString):
+        * UIProcess/soup/WebContextSoup.cpp:
+        (WebKit::WebContext::platformInitializeNetworkProcess):
+        * UIProcess/soup/WebSoupRequestManagerProxy.cpp:
+        (WebKit::WebSoupRequestManagerProxy::WebSoupRequestManagerProxy):
+        * UIProcess/soup/WebSoupRequestManagerProxy.h:
+        * WebKit2.xcodeproj/project.pbxproj:
+        * WebProcess/ApplicationCache/WebApplicationCacheManager.cpp:
+        (WebKit::WebApplicationCacheManager::WebApplicationCacheManager):
+        * WebProcess/Battery/WebBatteryManager.cpp:
+        (WebKit::WebBatteryManager::WebBatteryManager):
+        * WebProcess/Cookies/WebCookieManager.cpp:
+        (WebKit::WebCookieManager::WebCookieManager):
+        * WebProcess/Geolocation/WebGeolocationManager.cpp:
+        (WebKit::WebGeolocationManager::WebGeolocationManager):
+        * WebProcess/IconDatabase/WebIconDatabaseProxy.cpp:
+        (WebKit::WebIconDatabaseProxy::WebIconDatabaseProxy):
+        * WebProcess/InjectedBundle/API/Cocoa: Added.
+        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.h: Added.
+        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm: Added.
+        (-[WKWebProcessPlugInFrame dealloc]):
+        (-[WKWebProcessPlugInFrame jsContextForWorld:]):
+        (-[WKWebProcessPlugInFrame hitTest:]):
+        (-[WKWebProcessPlugInFrame jsNodeForNodeHandle:inWorld:]):
+        (-[WKWebProcessPlugInFrame API::]):
+        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrameInternal.h: Added.
+        (WebKit::wrapper):
+        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResult.h: Added.
+        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResult.mm: Added.
+        (-[WKWebProcessPlugInHitTestResult dealloc]):
+        (-[WKWebProcessPlugInHitTestResult nodeHandle]):
+        (-[WKWebProcessPlugInHitTestResult API::]):
+        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResultInternal.h: Added.
+        (WebKit::wrapper):
+        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.h: Added.
+        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm: Added.
+        (-[WKWebProcessPlugInNodeHandle dealloc]):
+        (-[WKWebProcessPlugInNodeHandle API::]):
+        (-[WKWebProcessPlugInNodeHandle _nodeHandle]):
+        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandleInternal.h: Added.
+        (WebKit::wrapper):
+        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.h: Added.
+        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.mm: Added.
+        (+[WKWebProcessPlugInScriptWorld world]):
+        (+[WKWebProcessPlugInScriptWorld normalWorld]):
+        (-[WKWebProcessPlugInScriptWorld dealloc]):
+        (-[WKWebProcessPlugInScriptWorld API::]):
+        (-[WKWebProcessPlugInScriptWorld _scriptWorld]):
+        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorldInternal.h: Added.
+        (WebKit::wrapper):
+        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
+        (WKBundlePageSetContextMenuClient):
+        (WKBundlePageClickMenuItem):
+        (WKBundlePageCopyContextMenuItems):
+        (WKBundlePageCopyContextMenuAtPointInWindow):
+        * WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:
+        (didInitiateLoadForResource):
+        (willSendRequestForFrame):
+        (didReceiveResponseForResource):
+        (didReceiveContentLengthForResource):
+        (didFinishLoadForResource):
+        (didFailLoadForResource):
+        (webkitWebPageDidReceiveMessage):
+        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.h:
+        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.mm:
+        (-[WKWebProcessPlugInController dealloc]):
+        (didCreatePage):
+        (willDestroyPage):
+        (setUpBundleClient):
+        (-[WKWebProcessPlugInController _setPrincipalClassInstance:]):
+        (-[WKWebProcessPlugInController connection]):
+        (-[WKWebProcessPlugInController API::]):
+        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
+        (-[WKWebProcessPlugInBrowserContextController dealloc]):
+        (-[WKWebProcessPlugInBrowserContextController mainFrameDocument]):
+        (-[WKWebProcessPlugInBrowserContextController selectedRange]):
+        (-[WKWebProcessPlugInBrowserContextController API::]):
+        (-[WKWebProcessPlugInBrowserContextController _bundlePageRef]):
+        (-[WKWebProcessPlugInBrowserContextController handle]):
+        (+[WKWebProcessPlugInBrowserContextController lookUpBrowsingContextFromHandle:]):
+        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerInternal.h:
+        (WebKit::wrapper):
+        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInInternal.h:
+        (WebKit::wrapper):
+        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInPrivate.h:
+        * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.h:
+        * WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.h:
+        * WebProcess/InjectedBundle/InjectedBundle.h:
+        * WebProcess/InjectedBundle/InjectedBundleBackForwardList.h:
+        * WebProcess/InjectedBundle/InjectedBundleBackForwardListItem.h:
+        * WebProcess/InjectedBundle/InjectedBundleDOMWindowExtension.h:
+        * WebProcess/InjectedBundle/InjectedBundleHitTestResult.h:
+        * WebProcess/InjectedBundle/InjectedBundleNavigationAction.h:
+        * WebProcess/InjectedBundle/InjectedBundlePageFormClient.cpp:
+        (WebKit::InjectedBundlePageFormClient::willSendSubmitEvent):
+        (WebKit::InjectedBundlePageFormClient::willSubmitForm):
+        * WebProcess/InjectedBundle/InjectedBundleScriptWorld.h:
+        * WebProcess/InjectedBundle/mac/InjectedBundleMac.mm:
+        (WebKit::InjectedBundle::load):
+        * WebProcess/MediaCache/WebMediaCacheManager.cpp:
+        (WebKit::WebMediaCacheManager::WebMediaCacheManager):
+        * WebProcess/Network/WebResourceLoader.cpp:
+        * WebProcess/Network/WebResourceLoader.h:
+        * WebProcess/Network/WebResourceLoader.messages.in:
+        * WebProcess/NetworkInfo/WebNetworkInfoManager.cpp:
+        (WebKit::WebNetworkInfoManager::WebNetworkInfoManager):
+        * WebProcess/Notifications/WebNotificationManager.cpp:
+        (WebKit::WebNotificationManager::WebNotificationManager):
+        * WebProcess/OriginData/WebOriginDataManager.cpp:
+        (WebKit::WebOriginDataManager::WebOriginDataManager):
+        * WebProcess/Plugins/PluginView.cpp:
+        (WebKit::PluginView::performJavaScriptURLRequest):
+        * WebProcess/ResourceCache/WebResourceCacheManager.cpp:
+        (WebKit::WebResourceCacheManager::WebResourceCacheManager):
+        * WebProcess/Storage/StorageAreaMap.cpp:
+        (WebKit::StorageAreaMap::StorageAreaMap):
+        * WebProcess/WebConnectionToUIProcess.cpp:
+        (WebKit::WebConnectionToUIProcess::WebConnectionToUIProcess):
+        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
+        (WebKit::WebChromeClient::print):
+        * WebProcess/WebCoreSupport/WebDatabaseManager.cpp:
+        (WebKit::WebDatabaseManager::WebDatabaseManager):
+        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
+        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
+        * WebProcess/WebPage/DrawingArea.h:
+        (WebKit::DrawingArea::beginTransientZoom):
+        (WebKit::DrawingArea::adjustTransientZoom):
+        (WebKit::DrawingArea::commitTransientZoom):
+        * WebProcess/WebPage/DrawingArea.messages.in:
+        * WebProcess/WebPage/PageBanner.h:
+        * WebProcess/WebPage/PageOverlay.h:
+        * WebProcess/WebPage/WebFrame.h:
+        * WebProcess/WebPage/WebInspector.cpp:
+        * WebProcess/WebPage/WebInspector.h:
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::WebPage):
+        (WebKit::WebPage::trackedRepaintRects):
+        (WebKit::WebPage::setBackgroundExtendsBeyondPage):
+        (WebKit::WebPage::updatePreferences):
+        * WebProcess/WebPage/WebPage.h:
+        * WebProcess/WebPage/WebPage.messages.in:
+        * WebProcess/WebPage/WebPageGroupProxy.h:
+        * WebProcess/WebPage/ios/WebPageIOS.mm:
+        (WebKit::WebPage::insertText):
+        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
+        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
+        (WebKit::TiledCoreAnimationDrawingArea::beginTransientZoom):
+        (WebKit::TiledCoreAnimationDrawingArea::adjustTransientZoom):
+        (WebKit::TiledCoreAnimationDrawingArea::commitTransientZoom):
+        * WebProcess/WebPage/mac/WKAccessibilityWebPageObject.mm:
+        (-[WKAccessibilityWebPageObject accessibilityAttributeValue:forParameter:]):
+        * WebProcess/WebProcess.cpp:
+        (WebKit::WebProcess::ensureNetworkProcessConnection):
+        (WebKit::WebProcess::apiObjectByConvertingFromHandles):
+        * WebProcess/WebProcess.h:
+        * WebProcess/WebProcess.messages.in:
+        * WebProcess/gtk/WebGtkExtensionManager.h:
+        * WebProcess/soup/WebProcessSoup.cpp:
+        (WebKit::WebProcess::platformSetCacheModel):
+        (WebKit::WebProcess::platformClearResourceCaches):
+        (WebKit::WebProcess::platformInitializeWebProcess):
+        (WebKit::WebProcess::allowSpecificHTTPSCertificateForHost):
+        * WebProcess/soup/WebSoupRequestManager.cpp:
+        (WebKit::WebSoupRequestManager::WebSoupRequestManager):
+        * config.h:
+
</ins><span class="cx"> 2013-12-06  Dan Bernstein  &lt;mitz@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [Cocoa] Add load delegate methods for responding to authentication challenges
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2ConfigurationsVersionxcconfig"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Configurations/Version.xcconfig (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Configurations/Version.xcconfig        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Configurations/Version.xcconfig        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -22,7 +22,7 @@
</span><span class="cx"> // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
</span><span class="cx"> 
</span><span class="cx"> MAJOR_VERSION = 538;
</span><del>-MINOR_VERSION = 9;
</del><ins>+MINOR_VERSION = 10;
</ins><span class="cx"> TINY_VERSION = 0;
</span><span class="cx"> FULL_VERSION = $(MAJOR_VERSION).$(MINOR_VERSION);
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2DatabaseProcessDatabaseProcesscpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -28,11 +28,16 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(DATABASE_PROCESS)
</span><span class="cx"> 
</span><ins>+#include &quot;AsyncTask.h&quot;
</ins><span class="cx"> #include &quot;DatabaseProcessCreationParameters.h&quot;
</span><span class="cx"> #include &quot;DatabaseProcessProxyMessages.h&quot;
</span><span class="cx"> #include &quot;DatabaseToWebProcessConnection.h&quot;
</span><span class="cx"> #include &quot;UniqueIDBDatabase.h&quot;
</span><ins>+#include &lt;WebCore/FileSystem.h&gt;
+#include &lt;wtf/MainThread.h&gt;
</ins><span class="cx"> 
</span><ins>+using namespace WebCore;
+
</ins><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><span class="cx"> DatabaseProcess&amp; DatabaseProcess::shared()
</span><span class="lines">@@ -87,15 +92,61 @@
</span><span class="cx">     const UniqueIDBDatabaseIdentifier&amp; identifier = database.identifier();
</span><span class="cx">     ASSERT(m_idbDatabases.contains(identifier));
</span><span class="cx"> 
</span><del>-    // FIXME: Perform necessary shut down of the unique database before it is actually destroyed.
</del><span class="cx">     m_idbDatabases.remove(identifier);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void DatabaseProcess::initializeDatabaseProcess(const DatabaseProcessCreationParameters&amp; parameters)
</span><span class="cx"> {
</span><span class="cx">     m_indexedDatabaseDirectory = parameters.indexedDatabaseDirectory;
</span><ins>+
+    ensureIndexedDatabaseRelativePathExists(StringImpl::empty());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void DatabaseProcess::ensureIndexedDatabaseRelativePathExists(const String&amp; relativePath)
+{
+    postDatabaseTask(createAsyncTask(*this, &amp;DatabaseProcess::ensurePathExists, absoluteIndexedDatabasePathFromDatabaseRelativePath(relativePath)));
+}
+
+void DatabaseProcess::ensurePathExists(const String&amp; path)
+{
+    ASSERT(!isMainThread());
+
+    if (!makeAllDirectories(path))
+        LOG_ERROR(&quot;Failed to make all directories for path '%s'&quot;, path.utf8().data());
+}
+
+String DatabaseProcess::absoluteIndexedDatabasePathFromDatabaseRelativePath(const String&amp; relativePath)
+{
+    // FIXME: pathByAppendingComponent() was originally designed to append individual atomic components.
+    // We don't have a function designed to append a multi-component subpath, but we should.
+    return pathByAppendingComponent(m_indexedDatabaseDirectory, relativePath);
+}
+
+void DatabaseProcess::postDatabaseTask(std::unique_ptr&lt;AsyncTask&gt; task)
+{
+    ASSERT(isMainThread());
+
+    MutexLocker locker(m_databaseTaskMutex);
+
+    m_databaseTasks.append(std::move(task));
+
+    m_queue-&gt;dispatch(bind(&amp;DatabaseProcess::performNextDatabaseTask, this));
+}
+
+void DatabaseProcess::performNextDatabaseTask()
+{
+    ASSERT(!isMainThread());
+
+    std::unique_ptr&lt;AsyncTask&gt; task;
+    {
+        MutexLocker locker(m_databaseTaskMutex);
+        ASSERT(!m_databaseTasks.isEmpty());
+        task = m_databaseTasks.takeFirst();
+    }
+
+    task-&gt;performTask();
+}
+
</ins><span class="cx"> void DatabaseProcess::createDatabaseToWebProcessConnection()
</span><span class="cx"> {
</span><span class="cx"> #if PLATFORM(MAC)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2DatabaseProcessDatabaseProcessh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/DatabaseProcess/DatabaseProcess.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/DatabaseProcess/DatabaseProcess.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/DatabaseProcess/DatabaseProcess.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -35,6 +35,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><ins>+class AsyncTask;
</ins><span class="cx"> class DatabaseToWebProcessConnection;
</span><span class="cx"> class UniqueIDBDatabase;
</span><span class="cx"> 
</span><span class="lines">@@ -50,11 +51,15 @@
</span><span class="cx">     PassRefPtr&lt;UniqueIDBDatabase&gt; getOrCreateUniqueIDBDatabase(const UniqueIDBDatabaseIdentifier&amp;);
</span><span class="cx">     void removeUniqueIDBDatabase(const UniqueIDBDatabase&amp;);
</span><span class="cx"> 
</span><del>-    WorkQueue&amp; queue() const { return const_cast&lt;WorkQueue&amp;&gt;(m_queue.get()); }
</del><ins>+    void ensureIndexedDatabaseRelativePathExists(const String&amp;);
+    String absoluteIndexedDatabasePathFromDatabaseRelativePath(const String&amp;);
</ins><span class="cx"> 
</span><ins>+    WorkQueue&amp; queue() { return m_queue.get(); }
+
+    ~DatabaseProcess();
+
</ins><span class="cx"> private:
</span><span class="cx">     DatabaseProcess();
</span><del>-    ~DatabaseProcess();
</del><span class="cx"> 
</span><span class="cx">     // ChildProcess
</span><span class="cx">     virtual void initializeProcess(const ChildProcessInitializationParameters&amp;) OVERRIDE;
</span><span class="lines">@@ -72,6 +77,12 @@
</span><span class="cx">     void initializeDatabaseProcess(const DatabaseProcessCreationParameters&amp;);
</span><span class="cx">     void createDatabaseToWebProcessConnection();
</span><span class="cx"> 
</span><ins>+    void postDatabaseTask(std::unique_ptr&lt;AsyncTask&gt;);
+
+    // For execution on work queue thread only
+    void performNextDatabaseTask();
+    void ensurePathExists(const String&amp;);
+
</ins><span class="cx">     Vector&lt;RefPtr&lt;DatabaseToWebProcessConnection&gt;&gt; m_databaseToWebProcessConnections;
</span><span class="cx"> 
</span><span class="cx">     Ref&lt;WorkQueue&gt; m_queue;
</span><span class="lines">@@ -79,6 +90,9 @@
</span><span class="cx">     String m_indexedDatabaseDirectory;
</span><span class="cx"> 
</span><span class="cx">     HashMap&lt;UniqueIDBDatabaseIdentifier, RefPtr&lt;UniqueIDBDatabase&gt;&gt; m_idbDatabases;
</span><ins>+
+    Deque&lt;std::unique_ptr&lt;AsyncTask&gt;&gt; m_databaseTasks;
+    Mutex m_databaseTaskMutex;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2DatabaseProcessIndexedDBUniqueIDBDatabasecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -29,8 +29,12 @@
</span><span class="cx"> #if ENABLE(INDEXED_DATABASE) &amp;&amp; ENABLE(DATABASE_PROCESS)
</span><span class="cx"> 
</span><span class="cx"> #include &quot;AsyncRequest.h&quot;
</span><ins>+#include &quot;AsyncTask.h&quot;
</ins><span class="cx"> #include &quot;DatabaseProcess.h&quot;
</span><span class="cx"> #include &quot;DatabaseProcessIDBConnection.h&quot;
</span><ins>+#include &quot;UniqueIDBDatabaseBackingStoreSQLite.h&quot;
+#include &quot;WebCrossThreadCopier.h&quot;
+#include &lt;WebCore/FileSystem.h&gt;
</ins><span class="cx"> #include &lt;WebCore/IDBDatabaseMetadata.h&gt;
</span><span class="cx"> #include &lt;wtf/MainThread.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -40,14 +44,51 @@
</span><span class="cx"> 
</span><span class="cx"> UniqueIDBDatabase::UniqueIDBDatabase(const UniqueIDBDatabaseIdentifier&amp; identifier)
</span><span class="cx">     : m_identifier(identifier)
</span><del>-    , m_processingDatabaseQueueRequests(false)
</del><ins>+    , m_acceptingNewRequests(true)
+    , m_didGetMetadataFromBackingStore(false)
</ins><span class="cx"> {
</span><ins>+    m_inMemory = !canShareDatabases(identifier.openingOrigin(), identifier.mainFrameOrigin());
+    if (m_inMemory)
+        return;
+
+    // Each unique Indexed Database exists in a directory named for the database, which exists in a directory representing its opening origin.
+    m_databaseRelativeDirectory = pathByAppendingComponent(databaseFilenameIdentifier(identifier.openingOrigin()), filenameForDatabaseName());
+
+    DatabaseProcess::shared().ensureIndexedDatabaseRelativePathExists(m_databaseRelativeDirectory);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> UniqueIDBDatabase::~UniqueIDBDatabase()
</span><span class="cx"> {
</span><ins>+    ASSERT(!m_acceptingNewRequests);
+    ASSERT(m_pendingMetadataRequests.isEmpty());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+String UniqueIDBDatabase::filenameForDatabaseName() const
+{
+    ASSERT(!m_identifier.databaseName().isNull());
+
+    if (m_identifier.databaseName().isEmpty())
+        return &quot;%00&quot;;
+
+    String filename = encodeForFileName(m_identifier.databaseName());
+    filename.replace('.', &quot;%2E&quot;);
+
+    return filename;
+}
+
+String UniqueIDBDatabase::databaseFilenameIdentifier(const SecurityOriginData&amp; originData) const
+{
+    RefPtr&lt;SecurityOrigin&gt; securityOrigin = SecurityOrigin::create(originData.protocol, originData.host, originData.port);
+    return securityOrigin-&gt;databaseIdentifier();
+}
+
+bool UniqueIDBDatabase::canShareDatabases(const SecurityOriginData&amp; openingOrigin, const SecurityOriginData&amp; mainFrameOrigin) const
+{
+    // For now, an origin's database access is predicated on equality with the other origin.
+    // We might need to make this more nuanced later.
+    return openingOrigin == mainFrameOrigin;
+}
+
</ins><span class="cx"> void UniqueIDBDatabase::registerConnection(DatabaseProcessIDBConnection&amp; connection)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(!m_connections.contains(&amp;connection));
</span><span class="lines">@@ -59,70 +100,171 @@
</span><span class="cx">     ASSERT(m_connections.contains(&amp;connection));
</span><span class="cx">     m_connections.remove(&amp;connection);
</span><span class="cx"> 
</span><del>-    if (m_connections.isEmpty())
</del><ins>+    if (m_connections.isEmpty()) {
+        shutdown();
</ins><span class="cx">         DatabaseProcess::shared().removeUniqueIDBDatabase(*this);
</span><ins>+    }
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void UniqueIDBDatabase::enqueueDatabaseQueueRequest(PassRefPtr&lt;AsyncRequest&gt; request)
</del><ins>+void UniqueIDBDatabase::shutdown()
</ins><span class="cx"> {
</span><del>-    ASSERT(request);
</del><ins>+    ASSERT(isMainThread());
</ins><span class="cx"> 
</span><del>-    MutexLocker locker(m_databaseQueueRequestsMutex);
-    m_databaseQueueRequests.append(request);
</del><ins>+    m_acceptingNewRequests = false;
</ins><span class="cx"> 
</span><del>-    if (m_processingDatabaseQueueRequests)
</del><ins>+    {
+        MutexLocker locker(m_databaseTaskMutex);
+        m_databaseTasks.clear();
+    }
+
+    {
+        MutexLocker locker(m_mainThreadTaskMutex);
+        m_mainThreadTasks.clear();
+    }
+
+    while (!m_pendingMetadataRequests.isEmpty()) {
+        auto request = m_pendingMetadataRequests.takeFirst();
+        request-&gt;requestAborted();
+    }
+}
+
+void UniqueIDBDatabase::getOrEstablishIDBDatabaseMetadata(std::function&lt;void(bool, const IDBDatabaseMetadata&amp;)&gt; completionCallback)
+{
+    ASSERT(isMainThread());
+
+    if (!m_acceptingNewRequests) {
+        completionCallback(false, IDBDatabaseMetadata());
</ins><span class="cx">         return;
</span><ins>+    }
</ins><span class="cx"> 
</span><del>-    m_processingDatabaseQueueRequests = true;
-    DatabaseProcess::shared().queue().dispatch(bind(&amp;UniqueIDBDatabase::processDatabaseRequestQueue, this));
</del><ins>+    // If we've already retrieved metadata from the backing store, return it now.
+    if (m_didGetMetadataFromBackingStore) {
+        if (m_metadata)
+            completionCallback(true, *m_metadata);
+        else
+            completionCallback(false, IDBDatabaseMetadata());
+
+        return;
+    }
+
+    // If this is the first unanswered metadata request, post a task to open the backing store and get metadata.
+    if (m_pendingMetadataRequests.isEmpty())
+        postDatabaseTask(createAsyncTask(*this, &amp;UniqueIDBDatabase::openBackingStoreAndReadMetadata, m_identifier, absoluteDatabaseDirectory()));
+
+    // Then remember this metadata request to be answered later.
+    RefPtr&lt;AsyncRequest&gt; request = AsyncRequestImpl&lt;&gt;::create([completionCallback, this]() {
+        completionCallback(!!m_metadata, m_metadata ? *m_metadata : IDBDatabaseMetadata());
+    }, [completionCallback]() {
+        // The boolean flag to the completion callback represents whether the
+        // attempt to get/establish metadata succeeded or failed.
+        // Since we're aborting the attempt, it failed, so we always pass in false.
+        completionCallback(false, IDBDatabaseMetadata());
+    });
+
+    m_pendingMetadataRequests.append(request.release());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void UniqueIDBDatabase::processDatabaseRequestQueue()
</del><ins>+void UniqueIDBDatabase::openBackingStoreAndReadMetadata(const UniqueIDBDatabaseIdentifier&amp; identifier, const String&amp; databaseDirectory)
</ins><span class="cx"> {
</span><del>-    ASSERT(m_processingDatabaseQueueRequests);
</del><ins>+    ASSERT(!isMainThread());
+    ASSERT(!m_backingStore);
</ins><span class="cx"> 
</span><del>-    while (true) {
-        RefPtr&lt;AsyncRequest&gt; request;
-        {
-            MutexLocker locker(m_databaseQueueRequestsMutex);
-            if (m_databaseQueueRequests.isEmpty()) {
-                m_processingDatabaseQueueRequests = false;
-                return;
-            }
-            request = m_databaseQueueRequests.takeFirst();
-        }
</del><ins>+    if (m_inMemory) {
+        LOG_ERROR(&quot;Support for in-memory databases not yet implemented&quot;);
+        return;
+    }
</ins><span class="cx"> 
</span><ins>+    m_backingStore = UniqueIDBDatabaseBackingStoreSQLite::create(identifier, databaseDirectory);
+    std::unique_ptr&lt;IDBDatabaseMetadata&gt; metadata = m_backingStore-&gt;getOrEstablishMetadata();
+
+    postMainThreadTask(createAsyncTask(*this, &amp;UniqueIDBDatabase::didOpenBackingStoreAndReadMetadata, metadata ? *metadata : IDBDatabaseMetadata(), !!metadata));
+}
+
+void UniqueIDBDatabase::didOpenBackingStoreAndReadMetadata(const IDBDatabaseMetadata&amp; metadata, bool success)
+{
+    ASSERT(isMainThread());
+    ASSERT(!m_metadata);
+
+    m_didGetMetadataFromBackingStore = true;
+
+    if (success)
+        m_metadata = std::make_unique&lt;IDBDatabaseMetadata&gt;(metadata);
+
+    while (!m_pendingMetadataRequests.isEmpty()) {
+        RefPtr&lt;AsyncRequest&gt; request = m_pendingMetadataRequests.takeFirst();
</ins><span class="cx">         request-&gt;completeRequest();
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void UniqueIDBDatabase::getOrEstablishIDBDatabaseMetadata(std::function&lt;void(bool, const IDBDatabaseMetadata&amp;)&gt; completionCallback)
</del><ins>+String UniqueIDBDatabase::absoluteDatabaseDirectory() const
</ins><span class="cx"> {
</span><del>-    RefPtr&lt;AsyncRequest&gt; request = AsyncRequestImpl&lt;&gt;::create([completionCallback, this]() {
-        IDBDatabaseMetadata metadata;
-        bool success = getOrEstablishIDBDatabaseMetadataInternal(metadata);
</del><ins>+    ASSERT(isMainThread());
+    return DatabaseProcess::shared().absoluteIndexedDatabasePathFromDatabaseRelativePath(m_databaseRelativeDirectory);
+}
</ins><span class="cx"> 
</span><del>-        RunLoop::main()-&gt;dispatch([metadata, success, completionCallback]() {
-            completionCallback(success, metadata);
-        });
-    }, [completionCallback]() {
-        RunLoop::main()-&gt;dispatch([completionCallback]() {
-            // The boolean flag to the completion callback represents whether the attempt to get/establish metadata
-            // succeeded or failed.
-            // Since we're aborting the attempt, it failed, so we always pass in false.
-            completionCallback(false, IDBDatabaseMetadata());
-        });
-    });
</del><ins>+void UniqueIDBDatabase::postMainThreadTask(std::unique_ptr&lt;AsyncTask&gt; task)
+{
+    ASSERT(!isMainThread());
</ins><span class="cx"> 
</span><del>-    enqueueDatabaseQueueRequest(request.release());
</del><ins>+    if (!m_acceptingNewRequests)
+        return;
+
+    MutexLocker locker(m_mainThreadTaskMutex);
+
+    m_mainThreadTasks.append(std::move(task));
+
+    RunLoop::main()-&gt;dispatch(bind(&amp;UniqueIDBDatabase::performNextMainThreadTask, this));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool UniqueIDBDatabase::getOrEstablishIDBDatabaseMetadataInternal(const WebCore::IDBDatabaseMetadata&amp;)
</del><ins>+void UniqueIDBDatabase::performNextMainThreadTask()
</ins><span class="cx"> {
</span><del>-    // FIXME: This method is successfully called by messaging from the WebProcess, and calls back with dummy data.
-    // Needs real implementation.
</del><ins>+    ASSERT(isMainThread());
+
+    std::unique_ptr&lt;AsyncTask&gt; task;
+    {
+        MutexLocker locker(m_mainThreadTaskMutex);
+        ASSERT(!m_mainThreadTasks.isEmpty());
+        task = m_mainThreadTasks.takeFirst();
+    }
+
+    task-&gt;performTask();
+}
+
+void UniqueIDBDatabase::postDatabaseTask(std::unique_ptr&lt;AsyncTask&gt; task)
+{
+    ASSERT(isMainThread());
+
+    if (!m_acceptingNewRequests)
+        return;
+
+    MutexLocker locker(m_databaseTaskMutex);
+
+    m_databaseTasks.append(std::move(task));
+
+    DatabaseProcess::shared().queue().dispatch(bind(&amp;UniqueIDBDatabase::performNextDatabaseTask, this));
+}
+
+void UniqueIDBDatabase::performNextDatabaseTask()
+{
</ins><span class="cx">     ASSERT(!isMainThread());
</span><del>-    return false;
</del><ins>+
+    // It is possible that this database might be shutting down on the main thread.
+    // In this case, immediately after releasing m_databaseTaskMutex, this database might get deleted.
+    // We take a ref() to make sure the database is still live while this last task is performed.
+    RefPtr&lt;UniqueIDBDatabase&gt; protector(this);
+
+    std::unique_ptr&lt;AsyncTask&gt; task;
+    {
+        MutexLocker locker(m_databaseTaskMutex);
+
+        // This database might be shutting down on the main thread, in which case the task queue might be empty.
+        if (m_databaseTasks.isEmpty())
+            return;
+
+        task = m_databaseTasks.takeFirst();
+    }
+
+    task-&gt;performTask();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2DatabaseProcessIndexedDBUniqueIDBDatabaseh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -43,11 +43,13 @@
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><span class="cx"> class AsyncRequest;
</span><ins>+class AsyncTask;
</ins><span class="cx"> class DatabaseProcessIDBConnection;
</span><ins>+class UniqueIDBDatabaseBackingStore;
</ins><span class="cx"> 
</span><span class="cx"> struct SecurityOriginData;
</span><span class="cx"> 
</span><del>-class UniqueIDBDatabase : public RefCounted&lt;UniqueIDBDatabase&gt; {
</del><ins>+class UniqueIDBDatabase : public ThreadSafeRefCounted&lt;UniqueIDBDatabase&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;UniqueIDBDatabase&gt; create(const UniqueIDBDatabaseIdentifier&amp; identifier)
</span><span class="cx">     {
</span><span class="lines">@@ -68,18 +70,48 @@
</span><span class="cx"> 
</span><span class="cx">     UniqueIDBDatabaseIdentifier m_identifier;
</span><span class="cx"> 
</span><ins>+    bool m_inMemory;
+    String m_databaseRelativeDirectory;
+
</ins><span class="cx">     HashSet&lt;RefPtr&lt;DatabaseProcessIDBConnection&gt;&gt; m_connections;
</span><span class="cx">     HashMap&lt;uint64_t, RefPtr&lt;AsyncRequest&gt;&gt; m_databaseRequests;
</span><span class="cx"> 
</span><del>-    void enqueueDatabaseQueueRequest(PassRefPtr&lt;AsyncRequest&gt;);
</del><ins>+    String absoluteDatabaseDirectory() const;
</ins><span class="cx"> 
</span><ins>+    void postDatabaseTask(std::unique_ptr&lt;AsyncTask&gt;);
+    void shutdown();
+
+    // Method that attempts to make legal filenames from all legal database names
+    String filenameForDatabaseName() const;
+
+    // Returns a string that is appropriate for use as a unique filename
+    String databaseFilenameIdentifier(const SecurityOriginData&amp;) const;
+
+    // Returns true if this origin can use the same databases as the given origin.
+    bool canShareDatabases(const SecurityOriginData&amp;, const SecurityOriginData&amp;) const;
+    
</ins><span class="cx">     // To be called from the database workqueue thread only
</span><del>-    void processDatabaseRequestQueue();
-    bool getOrEstablishIDBDatabaseMetadataInternal(const WebCore::IDBDatabaseMetadata&amp;);
</del><ins>+    void performNextDatabaseTask();
+    void postMainThreadTask(std::unique_ptr&lt;AsyncTask&gt;);
+    void openBackingStoreAndReadMetadata(const UniqueIDBDatabaseIdentifier&amp;, const String&amp; databaseDirectory);
</ins><span class="cx"> 
</span><del>-    Mutex m_databaseQueueRequestsMutex;
-    Deque&lt;RefPtr&lt;AsyncRequest&gt;&gt; m_databaseQueueRequests;
-    bool m_processingDatabaseQueueRequests;
</del><ins>+    // Callbacks from the database workqueue thread, to be performed on the main thread only
+    void performNextMainThreadTask();
+    void didOpenBackingStoreAndReadMetadata(const WebCore::IDBDatabaseMetadata&amp;, bool success);
+
+    Deque&lt;RefPtr&lt;AsyncRequest&gt;&gt; m_pendingMetadataRequests;
+    bool m_acceptingNewRequests;
+
+    std::unique_ptr&lt;WebCore::IDBDatabaseMetadata&gt; m_metadata;
+    bool m_didGetMetadataFromBackingStore;
+
+    RefPtr&lt;UniqueIDBDatabaseBackingStore&gt; m_backingStore;
+
+    Deque&lt;std::unique_ptr&lt;AsyncTask&gt;&gt; m_databaseTasks;
+    Mutex m_databaseTaskMutex;
+
+    Deque&lt;std::unique_ptr&lt;AsyncTask&gt;&gt; m_mainThreadTasks;
+    Mutex m_mainThreadTaskMutex;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2DatabaseProcessIndexedDBUniqueIDBDatabaseBackingStoreh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h                                (rev 0)
+++ branches/jsCStack/Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,49 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef UniqueIDBDatabaseBackingStore_h
+#define UniqueIDBDatabaseBackingStore_h
+
+#if ENABLE(INDEXED_DATABASE) &amp;&amp; ENABLE(DATABASE_PROCESS)
+
+#include &lt;wtf/RefCounted.h&gt;
+
+namespace WebCore {
+struct IDBDatabaseMetadata;
+}
+
+namespace WebKit {
+
+class UniqueIDBDatabaseBackingStore : public RefCounted&lt;UniqueIDBDatabaseBackingStore&gt; {
+public:
+    virtual ~UniqueIDBDatabaseBackingStore() { }
+
+    virtual std::unique_ptr&lt;WebCore::IDBDatabaseMetadata&gt; getOrEstablishMetadata() = 0;
+};
+
+} // namespace WebKit
+
+#endif // ENABLE(INDEXED_DATABASE) &amp;&amp; ENABLE(DATABASE_PROCESS)
+#endif // UniqueIDBDatabaseBackingStore_h
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2DatabaseProcessIndexedDBUniqueIDBDatabaseIdentifiercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabaseIdentifier.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabaseIdentifier.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabaseIdentifier.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -75,6 +75,17 @@
</span><span class="cx">     return m_databaseName.isNull();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+UniqueIDBDatabaseIdentifier UniqueIDBDatabaseIdentifier::isolatedCopy() const
+{
+    UniqueIDBDatabaseIdentifier result;
+
+    result.m_databaseName = m_databaseName.isolatedCopy();
+    result.m_openingOrigin = m_openingOrigin.isolatedCopy();
+    result.m_mainFrameOrigin = m_mainFrameOrigin.isolatedCopy();
+
+    return result;
+}
+
</ins><span class="cx"> bool operator==(const UniqueIDBDatabaseIdentifier&amp; a, const UniqueIDBDatabaseIdentifier&amp; b)
</span><span class="cx"> {
</span><span class="cx">     if (&amp;a == &amp;b)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2DatabaseProcessIndexedDBUniqueIDBDatabaseIdentifierh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabaseIdentifier.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabaseIdentifier.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabaseIdentifier.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -50,6 +50,8 @@
</span><span class="cx">     bool isHashTableDeletedValue() const;
</span><span class="cx">     unsigned hash() const;
</span><span class="cx"> 
</span><ins>+    UniqueIDBDatabaseIdentifier isolatedCopy() const;
+
</ins><span class="cx"> private:
</span><span class="cx">     String m_databaseName;
</span><span class="cx">     SecurityOriginData m_openingOrigin;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2DatabaseProcessIndexedDBsqliteUniqueIDBDatabaseBackingStoreSQLitecpp"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebKit2/DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp                                (rev 0)
+++ branches/jsCStack/Source/WebKit2/DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,181 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;UniqueIDBDatabaseBackingStoreSQLite.h&quot;
+
+#if ENABLE(INDEXED_DATABASE) &amp;&amp; ENABLE(DATABASE_PROCESS)
+
+#include &lt;WebCore/FileSystem.h&gt;
+#include &lt;WebCore/IDBDatabaseMetadata.h&gt;
+#include &lt;WebCore/SQLiteDatabase.h&gt;
+#include &lt;WebCore/SQLiteStatement.h&gt;
+#include &lt;wtf/MainThread.h&gt;
+
+using namespace WebCore;
+
+namespace WebKit {
+
+// Current version of the metadata schema being used in the metadata database.
+static const int currentMetadataVersion = 1;
+
+UniqueIDBDatabaseBackingStoreSQLite::UniqueIDBDatabaseBackingStoreSQLite(const UniqueIDBDatabaseIdentifier&amp; identifier, const String&amp; databaseDirectory)
+    : m_identifier(identifier)
+    , m_absoluteDatabaseDirectory(databaseDirectory)
+{
+    // The backing store is meant to be created and used entirely on a background thread.
+    ASSERT(!isMainThread());
+}
+
+std::unique_ptr&lt;WebCore::IDBDatabaseMetadata&gt; UniqueIDBDatabaseBackingStoreSQLite::createAndPopulateInitialMetadata()
+{
+    ASSERT(!isMainThread());
+    ASSERT(m_metadataDB);
+    ASSERT(m_metadataDB-&gt;isOpen());
+
+    if (!m_metadataDB-&gt;executeCommand(&quot;CREATE TABLE IDBDatabaseInfo (key TEXT NOT NULL ON CONFLICT FAIL UNIQUE ON CONFLICT REPLACE, value TEXT NOT NULL ON CONFLICT FAIL);&quot;)) {
+        LOG_ERROR(&quot;Could not create IDBDatabaseInfo table in database (%i) - %s&quot;, m_metadataDB-&gt;lastError(), m_metadataDB-&gt;lastErrorMsg());
+        m_metadataDB = nullptr;
+        return nullptr;
+    }
+
+    {
+        SQLiteStatement sql(*m_metadataDB, &quot;INSERT INTO IDBDatabaseInfo VALUES ('MetadataVersion', ?);&quot;);
+        if (sql.prepare() != SQLResultOk
+            || sql.bindInt(1, currentMetadataVersion) != SQLResultOk
+            || sql.step() != SQLResultDone) {
+            LOG_ERROR(&quot;Could not insert database metadata version into IDBDatabaseInfo table (%i) - %s&quot;, m_metadataDB-&gt;lastError(), m_metadataDB-&gt;lastErrorMsg());
+            m_metadataDB = nullptr;
+            return nullptr;
+        }
+    }
+    {
+        SQLiteStatement sql(*m_metadataDB, &quot;INSERT INTO IDBDatabaseInfo VALUES ('DatabaseName', ?);&quot;);
+        if (sql.prepare() != SQLResultOk
+            || sql.bindText(1, m_identifier.databaseName()) != SQLResultOk
+            || sql.step() != SQLResultDone) {
+            LOG_ERROR(&quot;Could not insert database name into IDBDatabaseInfo table (%i) - %s&quot;, m_metadataDB-&gt;lastError(), m_metadataDB-&gt;lastErrorMsg());
+            m_metadataDB = nullptr;
+            return nullptr;
+        }
+    }
+    {
+        // Database versions are defined to be a uin64_t in the spec but sqlite3 doesn't support native binding of unsigned integers.
+        // Therefore we'll store the version as a String.
+        SQLiteStatement sql(*m_metadataDB, &quot;INSERT INTO IDBDatabaseInfo VALUES ('DatabaseVersion', ?);&quot;);
+        if (sql.prepare() != SQLResultOk
+            || sql.bindText(1, String::number(0)) != SQLResultOk
+            || sql.step() != SQLResultDone) {
+            LOG_ERROR(&quot;Could not insert default version into IDBDatabaseInfo table (%i) - %s&quot;, m_metadataDB-&gt;lastError(), m_metadataDB-&gt;lastErrorMsg());
+            m_metadataDB = nullptr;
+            return nullptr;
+        }
+    }
+
+    // This initial metadata matches the default values we just put into the metadata database.
+    auto metadata = std::make_unique&lt;IDBDatabaseMetadata&gt;();
+    metadata-&gt;name = m_identifier.databaseName();
+    metadata-&gt;version = 0;
+
+    return metadata;
+}
+
+std::unique_ptr&lt;IDBDatabaseMetadata&gt; UniqueIDBDatabaseBackingStoreSQLite::extractExistingMetadata()
+{
+    ASSERT(!isMainThread());
+    ASSERT(m_metadataDB);
+
+    if (!m_metadataDB-&gt;tableExists(&quot;IDBDatabaseInfo&quot;))
+        return nullptr;
+
+    auto metadata = std::make_unique&lt;IDBDatabaseMetadata&gt;();
+    {
+        SQLiteStatement sql(*m_metadataDB, &quot;SELECT value FROM IDBDatabaseInfo WHERE key = 'MetadataVersion';&quot;);
+        if (sql.isColumnNull(0))
+            return nullptr;
+        metadata-&gt;version = sql.getColumnInt(0);
+    }
+    {
+        SQLiteStatement sql(*m_metadataDB, &quot;SELECT value FROM IDBDatabaseInfo WHERE key = 'DatabaseName';&quot;);
+        if (sql.isColumnNull(0))
+            return nullptr;
+        metadata-&gt;name = sql.getColumnText(0);
+        if (metadata-&gt;name != m_identifier.databaseName()) {
+            LOG_ERROR(&quot;Database name in the metadata database ('%s') does not match the expected name ('%s')&quot;, metadata-&gt;name.utf8().data(), m_identifier.databaseName().utf8().data());
+            return nullptr;
+        }
+    }
+    {
+        SQLiteStatement sql(*m_metadataDB, &quot;SELECT value FROM IDBDatabaseInfo WHERE key = 'DatabaseVersion';&quot;);
+        if (sql.isColumnNull(0))
+            return nullptr;
+        String stringVersion = sql.getColumnText(0);
+        bool ok;
+        metadata-&gt;version = stringVersion.toUInt64Strict(&amp;ok);
+        if (!ok) {
+            LOG_ERROR(&quot;Database version on disk ('%s') does not cleanly convert to an unsigned 64-bit integer version&quot;, stringVersion.utf8().data());
+            return nullptr;
+        }
+    }
+
+    // FIXME: Once we save ObjectStores and indexes we need to extract their metadata, also.
+    return metadata;
+}
+
+std::unique_ptr&lt;SQLiteDatabase&gt; UniqueIDBDatabaseBackingStoreSQLite::openSQLiteDatabaseAtPath(const String&amp; path)
+{
+    ASSERT(!isMainThread());
+
+    auto sqliteDatabase = std::make_unique&lt;SQLiteDatabase&gt;();
+    if (!sqliteDatabase-&gt;open(path)) {
+        LOG_ERROR(&quot;Failed to open SQLite database at path '%s'&quot;, path.utf8().data());
+        return nullptr;
+    }
+
+    return sqliteDatabase;
+}
+
+std::unique_ptr&lt;IDBDatabaseMetadata&gt; UniqueIDBDatabaseBackingStoreSQLite::getOrEstablishMetadata()
+{
+    ASSERT(!isMainThread());
+
+    String metadataDBFilename = pathByAppendingComponent(m_absoluteDatabaseDirectory, &quot;IDBMetadata.sqlite3&quot;);
+    m_metadataDB = openSQLiteDatabaseAtPath(metadataDBFilename);
+    if (!m_metadataDB)
+        return nullptr;
+
+    std::unique_ptr&lt;IDBDatabaseMetadata&gt; metadata = extractExistingMetadata();
+    if (!metadata)
+        metadata = createAndPopulateInitialMetadata();
+
+    if (!metadata)
+        LOG_ERROR(&quot;Unable to establish IDB database at path '%s'&quot;, metadataDBFilename.utf8().data());
+
+    return metadata;
+}
+
+} // namespace WebKit
+
+#endif // ENABLE(INDEXED_DATABASE) &amp;&amp; ENABLE(DATABASE_PROCESS)
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2DatabaseProcessIndexedDBsqliteUniqueIDBDatabaseBackingStoreSQLiteh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebKit2/DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.h                                (rev 0)
+++ branches/jsCStack/Source/WebKit2/DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,68 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef UniqueIDBDatabaseBackingStoreSQLite_h
+#define UniqueIDBDatabaseBackingStoreSQLite_h
+
+#if ENABLE(INDEXED_DATABASE) &amp;&amp; ENABLE(DATABASE_PROCESS)
+
+#include &quot;UniqueIDBDatabase.h&quot; 
+#include &quot;UniqueIDBDatabaseBackingStore.h&quot;
+#include &lt;wtf/PassRefPtr.h&gt;
+#include &lt;wtf/text/WTFString.h&gt;
+
+namespace WebCore {
+class SQLiteDatabase;
+struct IDBDatabaseMetadata;
+}
+
+namespace WebKit {
+
+class UniqueIDBDatabaseBackingStoreSQLite FINAL : public UniqueIDBDatabaseBackingStore {
+public:
+    static PassRefPtr&lt;UniqueIDBDatabaseBackingStore&gt; create(const UniqueIDBDatabaseIdentifier&amp; identifier, const String&amp; databaseDirectory)
+    {
+        return adoptRef(new UniqueIDBDatabaseBackingStoreSQLite(identifier, databaseDirectory));
+    }
+
+    virtual std::unique_ptr&lt;WebCore::IDBDatabaseMetadata&gt; getOrEstablishMetadata() OVERRIDE;
+
+private:
+    UniqueIDBDatabaseBackingStoreSQLite(const UniqueIDBDatabaseIdentifier&amp;, const String&amp; databaseDirectory);
+
+    std::unique_ptr&lt;WebCore::SQLiteDatabase&gt; openSQLiteDatabaseAtPath(const String&amp;);
+    std::unique_ptr&lt;WebCore::IDBDatabaseMetadata&gt; extractExistingMetadata();
+    std::unique_ptr&lt;WebCore::IDBDatabaseMetadata&gt; createAndPopulateInitialMetadata();
+
+    UniqueIDBDatabaseIdentifier m_identifier;
+    String m_absoluteDatabaseDirectory;
+
+    std::unique_ptr&lt;WebCore::SQLiteDatabase&gt; m_metadataDB;
+};
+
+} // namespace WebKit
+
+#endif // ENABLE(INDEXED_DATABASE) &amp;&amp; ENABLE(DATABASE_PROCESS)
+#endif // UniqueIDBDatabaseBackingStoreSQLite_h
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2DerivedSourcesmake"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/DerivedSources.make (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/DerivedSources.make        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/DerivedSources.make        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -89,6 +89,7 @@
</span><span class="cx">     SecItemShimProxy \
</span><span class="cx">     StorageAreaMap \
</span><span class="cx">     StorageManager \
</span><ins>+    ViewGestureController \
</ins><span class="cx">     WebApplicationCacheManager \
</span><span class="cx">     WebApplicationCacheManagerProxy \
</span><span class="cx">     WebConnection \
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2GNUmakefileam"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/GNUmakefile.am (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/GNUmakefile.am        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/GNUmakefile.am        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -97,6 +97,7 @@
</span><span class="cx">         -I$(srcdir)/Source/WebKit2 \
</span><span class="cx">         -I$(srcdir)/Source/WebKit2/gtk \
</span><span class="cx">         -I$(srcdir)/Source/WebKit2/NetworkProcess \
</span><ins>+        -I$(srcdir)/Source/WebKit2/NetworkProcess/FileAPI \
</ins><span class="cx">         -I$(srcdir)/Source/WebKit2/Platform \
</span><span class="cx">         -I$(srcdir)/Source/WebKit2/Platform/CoreIPC \
</span><span class="cx">         -I$(srcdir)/Source/WebKit2/Platform/CoreIPC/gtk \
</span><span class="lines">@@ -112,10 +113,12 @@
</span><span class="cx">         -I$(srcdir)/Source/WebKit2/Shared/CoreIPCSupport \
</span><span class="cx">         -I$(srcdir)/Source/WebKit2/Shared/Downloads \
</span><span class="cx">         -I$(srcdir)/Source/WebKit2/Shared/Downloads/soup \
</span><ins>+        -I$(srcdir)/Source/WebKit2/Shared/FileAPI \
</ins><span class="cx">         -I$(srcdir)/Source/WebKit2/Shared/Databases \
</span><span class="cx">         -I$(srcdir)/Source/WebKit2/Shared/Databases/IndexedDB \
</span><span class="cx">         -I$(srcdir)/Source/WebKit2/Shared/gtk \
</span><span class="cx">         -I$(srcdir)/Source/WebKit2/Shared/Network \
</span><ins>+        -I$(srcdir)/Source/WebKit2/Shared/Network/CustomProtocols \
</ins><span class="cx">         -I$(srcdir)/Source/WebKit2/Shared/Plugins \
</span><span class="cx">         -I$(srcdir)/Source/WebKit2/Shared/Plugins/Netscape \
</span><span class="cx">         -I$(srcdir)/Source/WebKit2/Shared/Plugins/Netscape/x11 \
</span><span class="lines">@@ -145,6 +148,7 @@
</span><span class="cx">         -I$(srcdir)/Source/WebKit2/WebProcess/Cookies \
</span><span class="cx">         -I$(srcdir)/Source/WebKit2/WebProcess/Databases \
</span><span class="cx">         -I$(srcdir)/Source/WebKit2/WebProcess/Databases/IndexedDB \
</span><ins>+        -I$(srcdir)/Source/WebKit2/WebProcess/FileAPI \
</ins><span class="cx">         -I$(srcdir)/Source/WebKit2/WebProcess/FullScreen \
</span><span class="cx">         -I$(srcdir)/Source/WebKit2/WebProcess/Geolocation \
</span><span class="cx">         -I$(srcdir)/Source/WebKit2/WebProcess/gtk \
</span><span class="lines">@@ -158,6 +162,7 @@
</span><span class="cx">         -I$(srcdir)/Source/WebKit2/WebProcess/KeyValueStorage \
</span><span class="cx">         -I$(srcdir)/Source/WebKit2/WebProcess/Launching \
</span><span class="cx">         -I$(srcdir)/Source/WebKit2/WebProcess/MediaCache \
</span><ins>+        -I$(srcdir)/Source/WebKit2/WebProcess/Network \
</ins><span class="cx">         -I$(srcdir)/Source/WebKit2/WebProcess/NetworkInfo \
</span><span class="cx">         -I$(srcdir)/Source/WebKit2/WebProcess/Notifications \
</span><span class="cx">         -I$(srcdir)/Source/WebKit2/WebProcess/OriginData \
</span><span class="lines">@@ -280,6 +285,7 @@
</span><span class="cx">         $(PNG_LIBS) \
</span><span class="cx">         $(SQLITE3_LIBS) \
</span><span class="cx">         $(UNICODE_LIBS) \
</span><ins>+        $(UPOWER_GLIB_LIBS) \
</ins><span class="cx">         $(WEBP_LIBS) \
</span><span class="cx">         $(XRENDER_LIBS) \
</span><span class="cx">         $(XCOMPOSITE_LIBS) \
</span><span class="lines">@@ -366,6 +372,7 @@
</span><span class="cx">         $(GENSOURCES_WEBKIT2)/webkit2gtk/include/webkit2
</span><span class="cx"> 
</span><span class="cx"> vpath %.messages.in = \
</span><ins>+        $(WebKit2)/NetworkProcess \
</ins><span class="cx">         $(WebKit2)/PluginProcess \
</span><span class="cx">         $(WebKit2)/Shared \
</span><span class="cx">         $(WebKit2)/Shared/Authentication \
</span><span class="lines">@@ -374,6 +381,7 @@
</span><span class="cx">         $(WebKit2)/UIProcess/ApplicationCache \
</span><span class="cx">         $(WebKit2)/UIProcess/Downloads \
</span><span class="cx">         $(WebKit2)/UIProcess/Geolocation \
</span><ins>+        $(WebKit2)/UIProcess/Network \
</ins><span class="cx">         $(WebKit2)/UIProcess/Network/CustomProtocols \
</span><span class="cx">         $(WebKit2)/UIProcess/Plugins \
</span><span class="cx">         $(WebKit2)/UIProcess/ResourceCache \
</span><span class="lines">@@ -457,11 +465,44 @@
</span><span class="cx">         $(top_builddir)/stamp-webkit2enumtypes \
</span><span class="cx">         $(top_builddir)/stamp-webkit2marshal.cpp \
</span><span class="cx">         $(top_builddir)/stamp-webkit2marshal.h \
</span><ins>+        $(top_builddir)/Programs/WebKitNetworkProcess \
</ins><span class="cx">         $(top_builddir)/Programs/WebKitWebProcess
</span><span class="cx"> 
</span><span class="cx"> DISTCLEANFILES += \
</span><span class="cx">         $(top_builddir)/WebKit2/webkit2gtk-@WEBKITGTK_API_VERSION@.pc
</span><span class="cx"> 
</span><ins>+if ENABLE_NETWORK_PROCESS
+libexec_PROGRAMS += \
+        Programs/WebKitNetworkProcess
+endif
+
+Programs_WebKitNetworkProcess_CPPFLAGS = \
+        -I$(srcdir)/Source/WebKit2 \
+        -I$(srcdir)/Source/WebKit2/UIProcess/API/C \
+        -I$(srcdir)/Source/WebKit2/NetworkProcess/unix \
+        -I$(top_builddir)/DerivedSources/WebKit2 \
+        -I$(top_builddir)/DerivedSources/WebKit2/include \
+        -I$(top_builddir)/DerivedSources/WebKit2/include/WebCore \
+        $(global_cppflags) \
+        $(javascriptcore_cppflags)
+
+Programs_WebKitNetworkProcess_CFLAGS = \
+        $(global_cflags) \
+        $(GLIB_CFLAGS) \
+        $(GTK_CFLAGS) \
+        $(LIBSOUP_CFLAGS)
+
+Programs_WebKitNetworkProcess_SOURCES = \
+        Source/WebKit2/unix/NetworkMainUnix.cpp
+
+Programs_WebKitNetworkProcess_LDADD = \
+        libjavascriptcoregtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la \
+        libwebkit2gtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la \
+        $(GLIB_LIBS) \
+        $(GTK_LIBS) \
+        $(LIBSOUP_LIBS)
+
+
</ins><span class="cx"> if ENABLE_WEBKIT2
</span><span class="cx"> libexec_PROGRAMS += \
</span><span class="cx">         Programs/WebKitWebProcess
</span><span class="lines">@@ -499,6 +540,9 @@
</span><span class="cx">         $(GTK_UNIX_PRINTING_LIBS) \
</span><span class="cx">         $(LIBSOUP_LIBS)
</span><span class="cx"> 
</span><ins>+Programs_WebKitWebProcess_LDFLAGS = \
+        -no-fast-install
+
</ins><span class="cx"> libWebCoreGtk2_la_SOURCES = \
</span><span class="cx">         $(webcoregtk_sources)
</span><span class="cx"> 
</span><span class="lines">@@ -620,13 +664,15 @@
</span><span class="cx"> 
</span><span class="cx"> webcore_layer_gtk2_archives = $(foreach lib, $(webcore_layer_gtk2_deps), $(shell echo $(lib) | sed &quot;s/\(.*\)\.la/.libs\/\1.a/&quot;))
</span><span class="cx"> 
</span><del>-WebCoreLayerGtk2.a: $(webcore_layer_gtk2_deps)
</del><ins>+libWebCoreLayerGtk2.a: $(webcore_layer_gtk2_deps)
</ins><span class="cx">         $(AM_V_GEN)
</span><span class="cx">         $(AM_V_at)$(shell rm -f $@)
</span><del>-        $(AM_V_at)$(foreach archive, $(webcore_layer_gtk2_archives), $(shell ar t $(archive) | xargs -n50 ar cruT $@))
</del><ins>+        $(AM_V_at)$(shell find . -name &quot;*.o&quot; &gt; objects_list)
+        $(AM_V_at)$(foreach archive, $(webcore_layer_gtk2_archives), $(shell $(AR) t $(archive) | xargs -n1 basename | xargs -I obj_file grep -F obj_file objects_list | xargs -n50 $(AR) $(AR_FLAGS) $@))
+        $(AM_V_at)$(shell rm -f objects_list)
</ins><span class="cx"> 
</span><span class="cx"> DISTCLEANFILES += \
</span><del>-        $(top_builddir)/WebCoreLayerGtk2.a
</del><ins>+        $(top_builddir)/libWebCoreLayerGtk2.a
</ins><span class="cx"> 
</span><span class="cx"> Programs_WebKitPluginProcess_CPPFLAGS = \
</span><span class="cx">         -include $(srcdir)/Source/WebKit2/WebKit2Prefix.h \
</span><span class="lines">@@ -687,7 +733,7 @@
</span><span class="cx"> Programs_WebKitPluginProcess_LDADD = \
</span><span class="cx">         -lpthread \
</span><span class="cx">         libjavascriptcoregtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la \
</span><del>-        WebCoreLayerGtk2.a \
</del><ins>+        libWebCoreLayerGtk2.a \
</ins><span class="cx">         libWebKit2Platform.la \
</span><span class="cx">         $(CAIRO_LIBS) \
</span><span class="cx">         $(COVERAGE_LDFLAGS) \
</span><span class="lines">@@ -716,6 +762,9 @@
</span><span class="cx">         $(WINMM_LIBS) \
</span><span class="cx">         $(ZLIB_LIBS)
</span><span class="cx"> 
</span><ins>+Programs_WebKitPluginProcess_LDFLAGS = \
+        -no-fast-install
+
</ins><span class="cx"> Programs_WebKitPluginProcess_CXXFLAGS = \
</span><span class="cx">         -fvisibility-inlines-hidden \
</span><span class="cx">         $(global_cxxflags)
</span><span class="lines">@@ -735,12 +784,15 @@
</span><span class="cx">         $(WebKit2)/UIProcess/API/gtk/WebKitEnumTypes.cpp.template \
</span><span class="cx">         $(WebKit2)/UIProcess/InspectorServer/front-end/inspectorPageIndex.html \
</span><span class="cx">         $(WebKit2)/Scripts/generate-forwarding-headers.pl \
</span><ins>+        $(shell ls $(WebKit2)/NetworkProcess/*.in) \
</ins><span class="cx">         $(shell ls $(WebKit2)/PluginProcess/*.in) \
</span><span class="cx">         $(shell ls $(WebKit2)/Shared/*.in) \
</span><span class="cx">         $(shell ls $(WebKit2)/Shared/Authentication/*.in) \
</span><ins>+        $(shell ls $(WebKit2)/Shared/Network/CustomProtocols/*.in) \
</ins><span class="cx">         $(shell ls $(WebKit2)/Shared/Plugins/*.in) \
</span><span class="cx">         $(shell ls $(WebKit2)/UIProcess/*.in) \
</span><span class="cx">         $(shell ls $(WebKit2)/UIProcess/Downloads/*.in) \
</span><ins>+        $(shell ls $(WebKit2)/UIProcess/Network/*.in) \
</ins><span class="cx">         $(shell ls $(WebKit2)/UIProcess/Network/CustomProtocols/*.in) \
</span><span class="cx">         $(shell ls $(WebKit2)/UIProcess/Plugins/*.in) \
</span><span class="cx">         $(shell ls $(WebKit2)/UIProcess/Storage/*.in) \
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2GNUmakefilelistam"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/GNUmakefile.list.am (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/GNUmakefile.list.am        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/GNUmakefile.list.am        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -159,6 +159,16 @@
</span><span class="cx">         DerivedSources/WebKit2/DrawingAreaProxyMessages.h \
</span><span class="cx">         DerivedSources/WebKit2/EventDispatcherMessageReceiver.cpp \
</span><span class="cx">         DerivedSources/WebKit2/EventDispatcherMessages.h \
</span><ins>+        DerivedSources/WebKit2/NetworkConnectionToWebProcessMessageReceiver.cpp \
+        DerivedSources/WebKit2/NetworkConnectionToWebProcessMessages.h \
+        DerivedSources/WebKit2/NetworkProcessConnectionMessageReceiver.cpp \
+        DerivedSources/WebKit2/NetworkProcessConnectionMessages.h \
+        DerivedSources/WebKit2/NetworkProcessMessageReceiver.cpp \
+        DerivedSources/WebKit2/NetworkProcessMessages.h \
+        DerivedSources/WebKit2/NetworkProcessProxyMessageReceiver.cpp \
+        DerivedSources/WebKit2/NetworkProcessProxyMessages.h \
+        DerivedSources/WebKit2/NetworkResourceLoaderMessageReceiver.cpp \
+        DerivedSources/WebKit2/NetworkResourceLoaderMessages.h \
</ins><span class="cx">         DerivedSources/WebKit2/NPObjectMessageReceiverMessageReceiver.cpp \
</span><span class="cx">         DerivedSources/WebKit2/NPObjectMessageReceiverMessages.h \
</span><span class="cx">         DerivedSources/WebKit2/PluginControllerProxyMessageReceiver.cpp \
</span><span class="lines">@@ -233,16 +243,16 @@
</span><span class="cx">         DerivedSources/WebKit2/WebPageProxyMessages.h \
</span><span class="cx">         DerivedSources/WebKit2/WebPageMessageReceiver.cpp \
</span><span class="cx">         DerivedSources/WebKit2/WebPageMessages.h \
</span><del>-        DerivedSources/WebKit2/WebResourceCacheManagerMessageReceiver.cpp \
-        DerivedSources/WebKit2/WebResourceCacheManagerMessages.h \
-        DerivedSources/WebKit2/WebResourceCacheManagerProxyMessageReceiver.cpp \
-        DerivedSources/WebKit2/WebResourceCacheManagerProxyMessages.h \
</del><span class="cx">         DerivedSources/WebKit2/WebProcessConnectionMessageReceiver.cpp \
</span><span class="cx">         DerivedSources/WebKit2/WebProcessConnectionMessages.h \
</span><span class="cx">         DerivedSources/WebKit2/WebProcessMessageReceiver.cpp \
</span><span class="cx">         DerivedSources/WebKit2/WebProcessMessages.h \
</span><span class="cx">         DerivedSources/WebKit2/WebProcessProxyMessageReceiver.cpp \
</span><span class="cx">         DerivedSources/WebKit2/WebProcessProxyMessages.h \
</span><ins>+        DerivedSources/WebKit2/WebResourceCacheManagerMessageReceiver.cpp \
+        DerivedSources/WebKit2/WebResourceCacheManagerMessages.h \
+        DerivedSources/WebKit2/WebResourceCacheManagerProxyMessageReceiver.cpp \
+        DerivedSources/WebKit2/WebResourceCacheManagerProxyMessages.h \
</ins><span class="cx">         DerivedSources/WebKit2/WebResourceLoaderMessageReceiver.cpp \
</span><span class="cx">         DerivedSources/WebKit2/WebResourceLoaderMessages.h \
</span><span class="cx">         DerivedSources/WebKit2/WebSoupRequestManagerMessageReceiver.cpp \
</span><span class="lines">@@ -281,12 +291,12 @@
</span><span class="cx">         Source/WebKit2/Platform/CoreIPC/MessageReceiver.h \
</span><span class="cx">         Source/WebKit2/Platform/CoreIPC/MessageReceiverMap.cpp \
</span><span class="cx">         Source/WebKit2/Platform/CoreIPC/MessageReceiverMap.h \
</span><del>-        Source/WebKit2/Platform/CoreIPC/MessageSender.cpp \
-        Source/WebKit2/Platform/CoreIPC/MessageSender.h \
</del><span class="cx">         Source/WebKit2/Platform/CoreIPC/unix/AttachmentUnix.cpp \
</span><span class="cx">         Source/WebKit2/Platform/CoreIPC/unix/ConnectionUnix.cpp \
</span><span class="cx">         Source/WebKit2/Platform/IPC/DataReference.cpp \
</span><span class="cx">         Source/WebKit2/Platform/IPC/DataReference.h \
</span><ins>+        Source/WebKit2/Platform/IPC/MessageSender.cpp \
+        Source/WebKit2/Platform/IPC/MessageSender.h \
</ins><span class="cx">         Source/WebKit2/Platform/IPC/StringReference.cpp \
</span><span class="cx">         Source/WebKit2/Platform/IPC/StringReference.h \
</span><span class="cx">         Source/WebKit2/Platform/gtk/LoggingGtk.cpp \
</span><span class="lines">@@ -304,8 +314,31 @@
</span><span class="cx"> 
</span><span class="cx"> webkit2_sources += \
</span><span class="cx">         Source/WebKit2/config.h \
</span><ins>+        Source/WebKit2/NetworkProcess/FileAPI/NetworkBlobRegistry.cpp \
+        Source/WebKit2/NetworkProcess/FileAPI/NetworkBlobRegistry.h \
</ins><span class="cx">         Source/WebKit2/NetworkProcess/soup/NetworkProcessSoup.cpp \
</span><ins>+        Source/WebKit2/NetworkProcess/AsynchronousNetworkLoaderClient.cpp \
+        Source/WebKit2/NetworkProcess/AsynchronousNetworkLoaderClient.h \
+        Source/WebKit2/NetworkProcess/HostRecord.cpp \
+        Source/WebKit2/NetworkProcess/HostRecord.h \
+        Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp \
+        Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.h \
+        Source/WebKit2/NetworkProcess/NetworkLoaderClient.h \
+        Source/WebKit2/NetworkProcess/NetworkProcess.cpp \
+        Source/WebKit2/NetworkProcess/NetworkProcess.h \
+        Source/WebKit2/NetworkProcess/NetworkProcessPlatformStrategies.cpp \
+        Source/WebKit2/NetworkProcess/NetworkProcessPlatformStrategies.h \
+        Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp \
+        Source/WebKit2/NetworkProcess/NetworkResourceLoader.h \
+        Source/WebKit2/NetworkProcess/NetworkResourceLoadScheduler.cpp \
+        Source/WebKit2/NetworkProcess/NetworkResourceLoadScheduler.h \
+        Source/WebKit2/NetworkProcess/RemoteNetworkingContext.h \
</ins><span class="cx">         Source/WebKit2/NetworkProcess/soup/NetworkResourceLoadSchedulerSoup.cpp \
</span><ins>+        Source/WebKit2/NetworkProcess/soup/RemoteNetworkingContextSoup.cpp \
+        Source/WebKit2/NetworkProcess/SynchronousNetworkLoaderClient.cpp \
+        Source/WebKit2/NetworkProcess/SynchronousNetworkLoaderClient.h \
+        Source/WebKit2/NetworkProcess/unix/NetworkProcessMainUnix.cpp \
+        Source/WebKit2/NetworkProcess/unix/NetworkProcessMainUnix.h \
</ins><span class="cx">         Source/WebKit2/PluginProcess/PluginControllerProxy.cpp \
</span><span class="cx">         Source/WebKit2/PluginProcess/PluginControllerProxy.h \
</span><span class="cx">         Source/WebKit2/PluginProcess/PluginCreationParameters.cpp \
</span><span class="lines">@@ -324,6 +357,12 @@
</span><span class="cx">         Source/WebKit2/Shared/WebMemorySampler.h \
</span><span class="cx">         Source/WebKit2/Shared/APIArray.cpp \
</span><span class="cx">         Source/WebKit2/Shared/APIArray.h \
</span><ins>+        Source/WebKit2/Shared/APIFrameHandle.cpp \
+        Source/WebKit2/Shared/APIFrameHandle.h \
+        Source/WebKit2/Shared/APIGeometry.cpp \
+        Source/WebKit2/Shared/APIGeometry.h \
+        Source/WebKit2/Shared/APIPageHandle.cpp \
+        Source/WebKit2/Shared/APIPageHandle.h \
</ins><span class="cx">         Source/WebKit2/Shared/APIClient.h \
</span><span class="cx">         Source/WebKit2/Shared/API/c/cairo/WKImageCairo.cpp \
</span><span class="cx">         Source/WebKit2/Shared/API/c/cairo/WKImageCairo.h \
</span><span class="lines">@@ -398,6 +437,8 @@
</span><span class="cx">         Source/WebKit2/Shared/BlockingResponseMap.h \
</span><span class="cx">         Source/WebKit2/Shared/ShareableBitmap.cpp \
</span><span class="cx">         Source/WebKit2/Shared/ShareableBitmap.h \
</span><ins>+        Source/WebKit2/Shared/ShareableResource.cpp \
+        Source/WebKit2/Shared/ShareableResource.h \
</ins><span class="cx">         Source/WebKit2/Shared/CacheModel.cpp \
</span><span class="cx">         Source/WebKit2/Shared/CacheModel.h \
</span><span class="cx">         Source/WebKit2/Shared/ChildProcess.cpp \
</span><span class="lines">@@ -420,9 +461,13 @@
</span><span class="cx">         Source/WebKit2/Shared/Downloads/soup/DownloadSoupErrors.h \
</span><span class="cx">         Source/WebKit2/Shared/EditorState.cpp \
</span><span class="cx">         Source/WebKit2/Shared/EditorState.h \
</span><ins>+        Source/WebKit2/Shared/FileAPI/BlobRegistrationData.cpp \
+        Source/WebKit2/Shared/FileAPI/BlobRegistrationData.h \
</ins><span class="cx">         Source/WebKit2/Shared/FilterIterator.h \
</span><span class="cx">         Source/WebKit2/Shared/FontSmoothingLevel.h \
</span><span class="cx">         Source/WebKit2/Shared/ProcessExecutablePath.h \
</span><ins>+        Source/WebKit2/Shared/UserData.cpp \
+        Source/WebKit2/Shared/UserData.h \
</ins><span class="cx">         Source/WebKit2/Shared/cairo/ShareableBitmapCairo.cpp \
</span><span class="cx">         Source/WebKit2/Shared/gtk/ArgumentCodersGtk.h \
</span><span class="cx">         Source/WebKit2/Shared/gtk/ArgumentCodersGtk.cpp \
</span><span class="lines">@@ -444,7 +489,11 @@
</span><span class="cx">         Source/WebKit2/Shared/NativeWebKeyboardEvent.h \
</span><span class="cx">         Source/WebKit2/Shared/NativeWebMouseEvent.h \
</span><span class="cx">         Source/WebKit2/Shared/NativeWebWheelEvent.h \
</span><ins>+        Source/WebKit2/Shared/Network/CustomProtocols/CustomProtocolManager.h \
+        Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.cpp \
+        Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.h \
</ins><span class="cx">         Source/WebKit2/Shared/Network/NetworkProcessSupplement.h \
</span><ins>+        Source/WebKit2/Shared/Network/NetworkResourceLoadParameters.cpp \
</ins><span class="cx">         Source/WebKit2/Shared/Network/NetworkResourceLoadParameters.h \
</span><span class="cx">         Source/WebKit2/Shared/OriginAndDatabases.cpp \
</span><span class="cx">         Source/WebKit2/Shared/OriginAndDatabases.h \
</span><span class="lines">@@ -481,8 +530,6 @@
</span><span class="cx">         Source/WebKit2/Shared/SessionState.h \
</span><span class="cx">         Source/WebKit2/Shared/StatisticsData.cpp \
</span><span class="cx">         Source/WebKit2/Shared/StatisticsData.h \
</span><del>-        Source/WebKit2/Shared/soup/CertificateInfo.cpp \
-        Source/WebKit2/Shared/soup/CertificateInfo.h \
</del><span class="cx">         Source/WebKit2/Shared/soup/SoupCookiePersistentStorageType.h \
</span><span class="cx">         Source/WebKit2/Shared/soup/WebCoreArgumentCodersSoup.cpp \
</span><span class="cx">         Source/WebKit2/Shared/TextCheckerState.h \
</span><span class="lines">@@ -675,6 +722,8 @@
</span><span class="cx">         Source/WebKit2/UIProcess/API/gtk/WebKitBackForwardListItem.h \
</span><span class="cx">         Source/WebKit2/UIProcess/API/gtk/WebKitBackForwardListItem.cpp \
</span><span class="cx">         Source/WebKit2/UIProcess/API/gtk/WebKitBackForwardListPrivate.h \
</span><ins>+        Source/WebKit2/UIProcess/API/gtk/WebKitBatteryProvider.cpp \
+        Source/WebKit2/UIProcess/API/gtk/WebKitBatteryProvider.h \
</ins><span class="cx">         Source/WebKit2/UIProcess/API/gtk/WebKitCertificateInfo.cpp \
</span><span class="cx">         Source/WebKit2/UIProcess/API/gtk/WebKitCertificateInfo.h \
</span><span class="cx">         Source/WebKit2/UIProcess/API/gtk/WebKitCertificateInfoPrivate.h \
</span><span class="lines">@@ -853,7 +902,6 @@
</span><span class="cx">         Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.h \
</span><span class="cx">         Source/WebKit2/UIProcess/gtk/WebFullScreenClientGtk.cpp \
</span><span class="cx">         Source/WebKit2/UIProcess/gtk/WebFullScreenClientGtk.h \
</span><del>-        Source/WebKit2/UIProcess/gtk/WebFullScreenManagerProxyGtk.cpp \
</del><span class="cx">         Source/WebKit2/UIProcess/gtk/WebInspectorClientGtk.cpp \
</span><span class="cx">         Source/WebKit2/UIProcess/gtk/WebInspectorClientGtk.h \
</span><span class="cx">         Source/WebKit2/UIProcess/gtk/WebInspectorProxyGtk.cpp \
</span><span class="lines">@@ -865,6 +913,8 @@
</span><span class="cx">         Source/WebKit2/UIProcess/Launcher/gtk/ProcessLauncherGtk.cpp \
</span><span class="cx">         Source/WebKit2/UIProcess/Launcher/ProcessLauncher.cpp \
</span><span class="cx">         Source/WebKit2/UIProcess/Launcher/ProcessLauncher.h \
</span><ins>+        Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp \
+        Source/WebKit2/UIProcess/Network/NetworkProcessProxy.h \
</ins><span class="cx">         Source/WebKit2/UIProcess/Network/soup/NetworkProcessProxySoup.cpp \
</span><span class="cx">         Source/WebKit2/UIProcess/Notifications/NotificationPermissionRequest.cpp \
</span><span class="cx">         Source/WebKit2/UIProcess/Notifications/NotificationPermissionRequest.h \
</span><span class="lines">@@ -1040,6 +1090,8 @@
</span><span class="cx">         Source/WebKit2/WebProcess/Cookies/soup/WebKitSoupCookieJarSqlite.cpp \
</span><span class="cx">         Source/WebKit2/WebProcess/Cookies/soup/WebKitSoupCookieJarSqlite.h \
</span><span class="cx">         Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.h \
</span><ins>+        Source/WebKit2/WebProcess/FileAPI/BlobRegistryProxy.cpp \
+        Source/WebKit2/WebProcess/FileAPI/BlobRegistryProxy.h \
</ins><span class="cx">         Source/WebKit2/WebProcess/FullScreen/WebFullScreenManager.cpp \
</span><span class="cx">         Source/WebKit2/WebProcess/FullScreen/WebFullScreenManager.h \
</span><span class="cx">         Source/WebKit2/WebProcess/Geolocation/GeolocationPermissionRequestManager.cpp \
</span><span class="lines">@@ -1143,6 +1195,12 @@
</span><span class="cx">         Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleUserMessageCoders.h \
</span><span class="cx">         Source/WebKit2/WebProcess/MediaCache/WebMediaCacheManager.cpp \
</span><span class="cx">         Source/WebKit2/WebProcess/MediaCache/WebMediaCacheManager.h \
</span><ins>+        Source/WebKit2/WebProcess/Network/NetworkProcessConnection.cpp \
+        Source/WebKit2/WebProcess/Network/NetworkProcessConnection.h \
+        Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp \
+        Source/WebKit2/WebProcess/Network/WebResourceLoader.h \
+        Source/WebKit2/WebProcess/Network/WebResourceLoadScheduler.cpp \
+        Source/WebKit2/WebProcess/Network/WebResourceLoadScheduler.h \
</ins><span class="cx">         Source/WebKit2/WebProcess/NetworkInfo/WebNetworkInfoManager.cpp \
</span><span class="cx">         Source/WebKit2/WebProcess/NetworkInfo/WebNetworkInfoManager.h \
</span><span class="cx">         Source/WebKit2/WebProcess/Notifications/NotificationPermissionRequestManager.cpp \
</span><span class="lines">@@ -1365,8 +1423,6 @@
</span><span class="cx">         Source/WebKit2/Shared/gtk/ProcessExecutablePathGtk.cpp \
</span><span class="cx">         Source/WebKit2/Shared/gtk/WebEventFactory.cpp \
</span><span class="cx">         Source/WebKit2/Shared/cairo/ShareableBitmapCairo.cpp \
</span><del>-        Source/WebKit2/Shared/soup/CertificateInfo.cpp \
-        Source/WebKit2/Shared/soup/CertificateInfo.h \
</del><span class="cx">         Source/WebKit2/Shared/soup/WebCoreArgumentCodersSoup.cpp \
</span><span class="cx">         Source/WebKit2/UIProcess/Launcher/ProcessLauncher.cpp \
</span><span class="cx">         Source/WebKit2/UIProcess/Launcher/ProcessLauncher.h \
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2NetworkProcessAsynchronousNetworkLoaderClientcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/NetworkProcess/AsynchronousNetworkLoaderClient.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/NetworkProcess/AsynchronousNetworkLoaderClient.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/NetworkProcess/AsynchronousNetworkLoaderClient.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -26,11 +26,11 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;AsynchronousNetworkLoaderClient.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;CertificateInfo.h&quot;
</del><span class="cx"> #include &quot;DataReference.h&quot;
</span><span class="cx"> #include &quot;NetworkResourceLoader.h&quot;
</span><span class="cx"> #include &quot;WebCoreArgumentCoders.h&quot;
</span><span class="cx"> #include &quot;WebResourceLoaderMessages.h&quot;
</span><ins>+#include &lt;WebCore/CertificateInfo.h&gt;
</ins><span class="cx"> #include &lt;WebCore/ResourceError.h&gt;
</span><span class="cx"> #include &lt;WebCore/SharedBuffer.h&gt;
</span><span class="cx"> #include &lt;wtf/CurrentTime.h&gt;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2NetworkProcessNetworkProcesscpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/NetworkProcess/NetworkProcess.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/NetworkProcess/NetworkProcess.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/NetworkProcess/NetworkProcess.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -39,7 +39,6 @@
</span><span class="cx"> #include &quot;NetworkProcessProxyMessages.h&quot;
</span><span class="cx"> #include &quot;NetworkResourceLoader.h&quot;
</span><span class="cx"> #include &quot;RemoteNetworkingContext.h&quot;
</span><del>-#include &quot;SecItemShim.h&quot;
</del><span class="cx"> #include &quot;StatisticsData.h&quot;
</span><span class="cx"> #include &quot;WebContextMessages.h&quot;
</span><span class="cx"> #include &quot;WebCookieManager.h&quot;
</span><span class="lines">@@ -48,6 +47,10 @@
</span><span class="cx"> #include &lt;wtf/RunLoop.h&gt;
</span><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><span class="cx"> 
</span><ins>+#if ENABLE(SEC_ITEM_SHIM)
+#include &quot;SecItemShim.h&quot;
+#endif
+
</ins><span class="cx"> using namespace WebCore;
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="lines">@@ -196,6 +199,14 @@
</span><span class="cx"> 
</span><span class="cx">     CoreIPC::Attachment clientPort(listeningPort, MACH_MSG_TYPE_MAKE_SEND);
</span><span class="cx">     parentProcessConnection()-&gt;send(Messages::NetworkProcessProxy::DidCreateNetworkConnectionToWebProcess(clientPort), 0);
</span><ins>+#elif USE(UNIX_DOMAIN_SOCKETS)
+    CoreIPC::Connection::SocketPair socketPair = CoreIPC::Connection::createPlatformConnection();
+
+    RefPtr&lt;NetworkConnectionToWebProcess&gt; connection = NetworkConnectionToWebProcess::create(socketPair.server);
+    m_webProcessConnections.append(connection.release());
+
+    CoreIPC::Attachment clientSocket(socketPair.client);
+    parentProcessConnection()-&gt;send(Messages::NetworkProcessProxy::DidCreateNetworkConnectionToWebProcess(clientSocket), 0);
</ins><span class="cx"> #else
</span><span class="cx">     notImplemented();
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2NetworkProcessNetworkProcessh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/NetworkProcess/NetworkProcess.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/NetworkProcess/NetworkProcess.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/NetworkProcess/NetworkProcess.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -35,10 +35,12 @@
</span><span class="cx"> #include &quot;NetworkResourceLoadScheduler.h&quot;
</span><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><span class="cx"> 
</span><ins>+namespace WebCore {
+class CertificateInfo;
+}
+
</ins><span class="cx"> namespace WebKit {
</span><del>-
</del><span class="cx"> class AuthenticationManager;
</span><del>-class CertificateInfo;
</del><span class="cx"> class NetworkConnectionToWebProcess;
</span><span class="cx"> class NetworkProcessSupplement;
</span><span class="cx"> struct NetworkProcessCreationParameters;
</span><span class="lines">@@ -104,10 +106,14 @@
</span><span class="cx">     void downloadRequest(uint64_t downloadID, const WebCore::ResourceRequest&amp;);
</span><span class="cx">     void cancelDownload(uint64_t downloadID);
</span><span class="cx">     void setCacheModel(uint32_t);
</span><del>-    void allowSpecificHTTPSCertificateForHost(const CertificateInfo&amp;, const String&amp; host);
</del><ins>+    void allowSpecificHTTPSCertificateForHost(const WebCore::CertificateInfo&amp;, const String&amp; host);
</ins><span class="cx">     void getNetworkProcessStatistics(uint64_t callbackID);
</span><span class="cx">     void clearCacheForAllOrigins(uint32_t cachesToClear);
</span><span class="cx"> 
</span><ins>+#if USE(SOUP)
+    void setIgnoreTLSErrors(bool);
+#endif
+
</ins><span class="cx">     // Platform Helpers
</span><span class="cx">     void platformSetCacheModel(CacheModel);
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2NetworkProcessNetworkProcessmessagesin"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/NetworkProcess/NetworkProcess.messages.in (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/NetworkProcess/NetworkProcess.messages.in        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/NetworkProcess/NetworkProcess.messages.in        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -29,6 +29,10 @@
</span><span class="cx">     # Creates a connection for communication with a WebProcess
</span><span class="cx">     CreateNetworkConnectionToWebProcess()
</span><span class="cx"> 
</span><ins>+#if USE(SOUP)
+    SetIgnoreTLSErrors(bool ignoreTLSErrors)
+#endif
+
</ins><span class="cx">     EnsurePrivateBrowsingSession()
</span><span class="cx">     DestroyPrivateBrowsingSession()
</span><span class="cx"> 
</span><span class="lines">@@ -39,7 +43,7 @@
</span><span class="cx">     SetProcessSuppressionEnabled(bool flag)
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    AllowSpecificHTTPSCertificateForHost(WebKit::CertificateInfo certificate, String host)
</del><ins>+    AllowSpecificHTTPSCertificateForHost(WebCore::CertificateInfo certificate, String host)
</ins><span class="cx">     
</span><span class="cx">     GetNetworkProcessStatistics(uint64_t callbackID)
</span><span class="cx">     
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2NetworkProcessNetworkResourceLoadercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -30,7 +30,6 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;AsynchronousNetworkLoaderClient.h&quot;
</span><span class="cx"> #include &quot;AuthenticationManager.h&quot;
</span><del>-#include &quot;CertificateInfo.h&quot;
</del><span class="cx"> #include &quot;DataReference.h&quot;
</span><span class="cx"> #include &quot;Logging.h&quot;
</span><span class="cx"> #include &quot;NetworkBlobRegistry.h&quot;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2NetworkProcessmacNetworkProcessMacmm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/NetworkProcess/mac/NetworkProcessMac.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/NetworkProcess/mac/NetworkProcessMac.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/NetworkProcess/mac/NetworkProcessMac.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -28,7 +28,6 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(NETWORK_PROCESS)
</span><span class="cx"> 
</span><del>-#import &quot;CertificateInfo.h&quot;
</del><span class="cx"> #import &quot;NetworkProcessCreationParameters.h&quot;
</span><span class="cx"> #import &quot;NetworkResourceLoader.h&quot;
</span><span class="cx"> #import &quot;ResourceCachesToClear.h&quot;
</span><span class="lines">@@ -36,6 +35,7 @@
</span><span class="cx"> #import &quot;SandboxInitializationParameters.h&quot;
</span><span class="cx"> #import &quot;SecItemShim.h&quot;
</span><span class="cx"> #import &quot;StringUtilities.h&quot;
</span><ins>+#import &lt;WebCore/CertificateInfo.h&gt;
</ins><span class="cx"> #import &lt;WebCore/FileSystem.h&gt;
</span><span class="cx"> #import &lt;WebCore/LocalizedStrings.h&gt;
</span><span class="cx"> #import &lt;WebKitSystemInterface.h&gt;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2NetworkProcesssoupNetworkProcessSoupcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/NetworkProcess/soup/NetworkProcessSoup.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/NetworkProcess/soup/NetworkProcessSoup.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/NetworkProcess/soup/NetworkProcessSoup.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -28,30 +28,102 @@
</span><span class="cx"> #if ENABLE(NETWORK_PROCESS)
</span><span class="cx"> #include &quot;NetworkProcess.h&quot;
</span><span class="cx"> 
</span><ins>+#include &quot;CertificateInfo.h&quot;
</ins><span class="cx"> #include &quot;NetworkProcessCreationParameters.h&quot;
</span><ins>+#include &quot;ResourceCachesToClear.h&quot;
+#include &lt;WebCore/FileSystem.h&gt;
</ins><span class="cx"> #include &lt;WebCore/NotImplemented.h&gt;
</span><ins>+#include &lt;WebCore/ResourceHandle.h&gt;
+#include &lt;libsoup/soup.h&gt;
+#include &lt;wtf/gobject/GOwnPtr.h&gt;
+#include &lt;wtf/gobject/GRefPtr.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> using namespace WebCore;
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><del>-void NetworkProcess::platformInitializeNetworkProcess(const NetworkProcessCreationParameters&amp;)
</del><ins>+static uint64_t getCacheDiskFreeSize(SoupCache* cache)
</ins><span class="cx"> {
</span><ins>+    ASSERT(cache);
+
+    GOwnPtr&lt;char&gt; cacheDir;
+    g_object_get(G_OBJECT(cache), &quot;cache-dir&quot;, &amp;cacheDir.outPtr(), NULL);
+    if (!cacheDir)
+        return 0;
+
+    return WebCore::getVolumeFreeSizeForPath(cacheDir.get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void NetworkProcess::platformSetCacheModel(CacheModel)
</del><ins>+static uint64_t getMemorySize()
</ins><span class="cx"> {
</span><del>-    notImplemented();
</del><ins>+    static uint64_t kDefaultMemorySize = 512;
+#if !OS(WINDOWS)
+    long pageSize = sysconf(_SC_PAGESIZE);
+    if (pageSize == -1)
+        return kDefaultMemorySize;
+
+    long physPages = sysconf(_SC_PHYS_PAGES);
+    if (physPages == -1)
+        return kDefaultMemorySize;
+
+    return ((pageSize / 1024) * physPages) / 1024;
+#else
+    // Fallback to default for other platforms.
+    return kDefaultMemorySize;
+#endif
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void NetworkProcess::allowSpecificHTTPSCertificateForHost(const CertificateInfo&amp;, const String&amp;)
</del><ins>+void NetworkProcess::platformInitializeNetworkProcess(const NetworkProcessCreationParameters&amp; parameters)
</ins><span class="cx"> {
</span><del>-    notImplemented();
</del><ins>+    ASSERT(!parameters.diskCacheDirectory.isEmpty());
+    GRefPtr&lt;SoupCache&gt; soupCache = adoptGRef(soup_cache_new(parameters.diskCacheDirectory.utf8().data(), SOUP_CACHE_SINGLE_USER));
+    soup_session_add_feature(WebCore::ResourceHandle::defaultSession(), SOUP_SESSION_FEATURE(soupCache.get()));
+    soup_cache_load(soupCache.get());
+
+    setIgnoreTLSErrors(parameters.ignoreTLSErrors);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void NetworkProcess::platformSetCacheModel(CacheModel cacheModel)
+{
+    unsigned cacheTotalCapacity = 0;
+    unsigned cacheMinDeadCapacity = 0;
+    unsigned cacheMaxDeadCapacity = 0;
+    double deadDecodedDataDeletionInterval = 0;
+    unsigned pageCacheCapacity = 0;
+
+    unsigned long urlCacheMemoryCapacity = 0;
+    unsigned long urlCacheDiskCapacity = 0;
+
+    SoupSession* session = ResourceHandle::defaultSession();
+    SoupCache* cache = SOUP_CACHE(soup_session_get_feature(session, SOUP_TYPE_CACHE));
+    uint64_t diskFreeSize = getCacheDiskFreeSize(cache) / 1024 / 1024;
+
+    uint64_t memSize = getMemorySize();
+    calculateCacheSizes(cacheModel, memSize, diskFreeSize,
+        cacheTotalCapacity, cacheMinDeadCapacity, cacheMaxDeadCapacity, deadDecodedDataDeletionInterval,
+        pageCacheCapacity, urlCacheMemoryCapacity, urlCacheDiskCapacity);
+
+    if (urlCacheDiskCapacity &gt; soup_cache_get_max_size(cache))
+        soup_cache_set_max_size(cache, urlCacheDiskCapacity);
+}
+
+void NetworkProcess::setIgnoreTLSErrors(bool ignoreTLSErrors)
+{
+    ResourceHandle::setIgnoreSSLErrors(ignoreTLSErrors);
+}
+
+void NetworkProcess::allowSpecificHTTPSCertificateForHost(const CertificateInfo&amp; certificateInfo, const String&amp; host)
+{
+    WebCore::ResourceHandle::setClientCertificate(host, certificateInfo.certificate());
+}
+
</ins><span class="cx"> void NetworkProcess::clearCacheForAllOrigins(uint32_t cachesToClear)
</span><span class="cx"> {
</span><del>-    notImplemented();
</del><ins>+    if (cachesToClear == InMemoryResourceCachesOnly)
+        return;
+
+    SoupSession* session = ResourceHandle::defaultSession();
+    soup_cache_clear(SOUP_CACHE(soup_session_get_feature(session, SOUP_TYPE_CACHE)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void NetworkProcess::platformTerminate()
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2NetworkProcessunixNetworkProcessMainUnixcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/NetworkProcess/unix/NetworkProcessMainUnix.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/NetworkProcess/unix/NetworkProcessMainUnix.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/NetworkProcess/unix/NetworkProcessMainUnix.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -32,6 +32,7 @@
</span><span class="cx"> #include &quot;ProxyResolverSoup.h&quot;
</span><span class="cx"> #include &quot;WKBase.h&quot;
</span><span class="cx"> #include &quot;WebKit2Initialize.h&quot;
</span><ins>+#include &lt;WebCore/ResourceHandle.h&gt;
</ins><span class="cx"> #include &lt;WebKit2/NetworkProcess.h&gt;
</span><span class="cx"> #include &lt;error.h&gt;
</span><span class="cx"> #include &lt;runtime/InitializeThreading.h&gt;
</span><span class="lines">@@ -44,6 +45,10 @@
</span><span class="cx"> #include &lt;Ecore.h&gt;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if USE(SOUP)
+#include &lt;libsoup/soup.h&gt;
+#endif
+
</ins><span class="cx"> using namespace WebCore;
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="lines">@@ -64,7 +69,7 @@
</span><span class="cx">     InitializeWebKit2();
</span><span class="cx"> 
</span><span class="cx"> #if USE(SOUP)
</span><del>-    SoupSession* session = WebCore::ResourceHandle::defaultSession();
</del><ins>+    SoupSession* session = ResourceHandle::defaultSession();
</ins><span class="cx"> #if PLATFORM(EFL)
</span><span class="cx">     // Only for EFL because GTK port uses the default resolver, which uses GIO's proxy resolver.
</span><span class="cx">     const char* httpProxy = getenv(&quot;http_proxy&quot;);
</span><span class="lines">@@ -83,8 +88,23 @@
</span><span class="cx"> 
</span><span class="cx">     NetworkProcess::shared().initialize(parameters);
</span><span class="cx"> 
</span><ins>+#if USE(SOUP)
+    // Despite using system CAs to validate certificates we're
+    // accepting invalid certificates by default. New API will be
+    // added later to let client accept/discard invalid certificates.
+    g_object_set(session, SOUP_SESSION_SSL_USE_SYSTEM_CA_FILE, TRUE,
+        SOUP_SESSION_SSL_STRICT, FALSE, NULL);
+#endif
+
</ins><span class="cx">     RunLoop::run();
</span><span class="cx"> 
</span><ins>+#if USE(SOUP)
+    if (SoupSessionFeature* soupCache = soup_session_get_feature(session, SOUP_TYPE_CACHE)) {
+        soup_cache_flush(SOUP_CACHE(soupCache));
+        soup_cache_dump(SOUP_CACHE(soupCache));
+    }
+#endif
+
</ins><span class="cx">     return 0;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2PlatformCoreIPCArgumentDecodercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Platform/CoreIPC/ArgumentDecoder.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Platform/CoreIPC/ArgumentDecoder.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Platform/CoreIPC/ArgumentDecoder.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -126,13 +126,19 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+template&lt;typename Type&gt;
+static void decodeValueFromBuffer(Type&amp; value, uint8_t*&amp; bufferPosition)
+{
+    memcpy(&amp;value, bufferPosition, sizeof(value));
+    bufferPosition += sizeof(Type);
+}
+
</ins><span class="cx"> bool ArgumentDecoder::decode(bool&amp; result)
</span><span class="cx"> {
</span><span class="cx">     if (!alignBufferPosition(sizeof(result), sizeof(result)))
</span><span class="cx">         return false;
</span><span class="cx">     
</span><del>-    result = *reinterpret_cast&lt;bool*&gt;(m_bufferPos);
-    m_bufferPos += sizeof(result);
</del><ins>+    decodeValueFromBuffer(result, m_bufferPos);
</ins><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -141,8 +147,7 @@
</span><span class="cx">     if (!alignBufferPosition(sizeof(result), sizeof(result)))
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    result = *reinterpret_cast&lt;uint8_t*&gt;(m_bufferPos);
-    m_bufferPos += sizeof(result);
</del><ins>+    decodeValueFromBuffer(result, m_bufferPos);
</ins><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -151,8 +156,7 @@
</span><span class="cx">     if (!alignBufferPosition(sizeof(result), sizeof(result)))
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    result = *reinterpret_cast_ptr&lt;uint16_t*&gt;(m_bufferPos);
-    m_bufferPos += sizeof(result);
</del><ins>+    decodeValueFromBuffer(result, m_bufferPos);
</ins><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -160,9 +164,8 @@
</span><span class="cx"> {
</span><span class="cx">     if (!alignBufferPosition(sizeof(result), sizeof(result)))
</span><span class="cx">         return false;
</span><del>-    
-    result = *reinterpret_cast_ptr&lt;uint32_t*&gt;(m_bufferPos);
-    m_bufferPos += sizeof(result);
</del><ins>+
+    decodeValueFromBuffer(result, m_bufferPos);
</ins><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -171,8 +174,7 @@
</span><span class="cx">     if (!alignBufferPosition(sizeof(result), sizeof(result)))
</span><span class="cx">         return false;
</span><span class="cx">     
</span><del>-    result = *reinterpret_cast_ptr&lt;uint64_t*&gt;(m_bufferPos);
-    m_bufferPos += sizeof(result);
</del><ins>+    decodeValueFromBuffer(result, m_bufferPos);
</ins><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -181,8 +183,7 @@
</span><span class="cx">     if (!alignBufferPosition(sizeof(result), sizeof(result)))
</span><span class="cx">         return false;
</span><span class="cx">     
</span><del>-    result = *reinterpret_cast_ptr&lt;uint32_t*&gt;(m_bufferPos);
-    m_bufferPos += sizeof(result);
</del><ins>+    decodeValueFromBuffer(result, m_bufferPos);
</ins><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -190,9 +191,8 @@
</span><span class="cx"> {
</span><span class="cx">     if (!alignBufferPosition(sizeof(result), sizeof(result)))
</span><span class="cx">         return false;
</span><del>-    
-    result = *reinterpret_cast_ptr&lt;uint64_t*&gt;(m_bufferPos);
-    m_bufferPos += sizeof(result);
</del><ins>+
+    decodeValueFromBuffer(result, m_bufferPos);
</ins><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -200,9 +200,8 @@
</span><span class="cx"> {
</span><span class="cx">     if (!alignBufferPosition(sizeof(result), sizeof(result)))
</span><span class="cx">         return false;
</span><del>-    
-    result = *reinterpret_cast_ptr&lt;float*&gt;(m_bufferPos);
-    m_bufferPos += sizeof(result);
</del><ins>+
+    decodeValueFromBuffer(result, m_bufferPos);
</ins><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -211,8 +210,7 @@
</span><span class="cx">     if (!alignBufferPosition(sizeof(result), sizeof(result)))
</span><span class="cx">         return false;
</span><span class="cx">     
</span><del>-    result = *reinterpret_cast_ptr&lt;double*&gt;(m_bufferPos);
-    m_bufferPos += sizeof(result);
</del><ins>+    decodeValueFromBuffer(result, m_bufferPos);
</ins><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2PlatformCoreIPCArgumentEncodercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Platform/CoreIPC/ArgumentEncoder.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Platform/CoreIPC/ArgumentEncoder.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Platform/CoreIPC/ArgumentEncoder.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -123,67 +123,64 @@
</span><span class="cx">     encodeFixedLengthData(dataReference.data(), dataReference.size(), 1);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+template&lt;typename Type&gt;
+static void copyValueToBuffer(Type value, uint8_t* bufferPosition)
+{
+    memcpy(bufferPosition, &amp;value, sizeof(Type));
+}
+
</ins><span class="cx"> void ArgumentEncoder::encode(bool n)
</span><span class="cx"> {
</span><span class="cx">     uint8_t* buffer = grow(sizeof(n), sizeof(n));
</span><del>-    
-    *reinterpret_cast&lt;bool*&gt;(buffer) = n;
</del><ins>+    copyValueToBuffer(n, buffer);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void ArgumentEncoder::encode(uint8_t n)
</span><span class="cx"> {
</span><span class="cx">     uint8_t* buffer = grow(sizeof(n), sizeof(n));
</span><del>-
-    *reinterpret_cast&lt;uint8_t*&gt;(buffer) = n;
</del><ins>+    copyValueToBuffer(n, buffer);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void ArgumentEncoder::encode(uint16_t n)
</span><span class="cx"> {
</span><span class="cx">     uint8_t* buffer = grow(sizeof(n), sizeof(n));
</span><del>-
-    *reinterpret_cast_ptr&lt;uint16_t*&gt;(buffer) = n;
</del><ins>+    copyValueToBuffer(n, buffer);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void ArgumentEncoder::encode(uint32_t n)
</span><span class="cx"> {
</span><span class="cx">     uint8_t* buffer = grow(sizeof(n), sizeof(n));
</span><del>-    
-    *reinterpret_cast_ptr&lt;uint32_t*&gt;(buffer) = n;
</del><ins>+    copyValueToBuffer(n, buffer);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void ArgumentEncoder::encode(uint64_t n)
</span><span class="cx"> {
</span><span class="cx">     uint8_t* buffer = grow(sizeof(n), sizeof(n));
</span><del>-    
-    *reinterpret_cast_ptr&lt;uint64_t*&gt;(buffer) = n;
</del><ins>+    copyValueToBuffer(n, buffer);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void ArgumentEncoder::encode(int32_t n)
</span><span class="cx"> {
</span><span class="cx">     uint8_t* buffer = grow(sizeof(n), sizeof(n));
</span><del>-    
-    *reinterpret_cast_ptr&lt;int32_t*&gt;(buffer) = n;
</del><ins>+    copyValueToBuffer(n, buffer);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void ArgumentEncoder::encode(int64_t n)
</span><span class="cx"> {
</span><span class="cx">     uint8_t* buffer = grow(sizeof(n), sizeof(n));
</span><del>-    
-    *reinterpret_cast_ptr&lt;int64_t*&gt;(buffer) = n;
</del><ins>+    copyValueToBuffer(n, buffer);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void ArgumentEncoder::encode(float n)
</span><span class="cx"> {
</span><span class="cx">     uint8_t* buffer = grow(sizeof(n), sizeof(n));
</span><del>-
-    *reinterpret_cast_ptr&lt;float*&gt;(buffer) = n;
</del><ins>+    copyValueToBuffer(n, buffer);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void ArgumentEncoder::encode(double n)
</span><span class="cx"> {
</span><span class="cx">     uint8_t* buffer = grow(sizeof(n), sizeof(n));
</span><del>-
-    *reinterpret_cast_ptr&lt;double*&gt;(buffer) = n;
</del><ins>+    copyValueToBuffer(n, buffer);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void ArgumentEncoder::addAttachment(const Attachment&amp; attachment)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2PlatformCoreIPCConnectionh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Platform/CoreIPC/Connection.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Platform/CoreIPC/Connection.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Platform/CoreIPC/Connection.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -116,6 +116,13 @@
</span><span class="cx"> #elif USE(UNIX_DOMAIN_SOCKETS)
</span><span class="cx">     typedef int Identifier;
</span><span class="cx">     static bool identifierIsNull(Identifier identifier) { return !identifier; }
</span><ins>+
+    struct SocketPair {
+        int client;
+        int server;
+    };
+
+    static Connection::SocketPair createPlatformConnection();
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     static PassRefPtr&lt;Connection&gt; createServerConnection(Identifier, Client*, WTF::RunLoop* clientRunLoop);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2PlatformCoreIPCHandleMessageh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Platform/CoreIPC/HandleMessage.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Platform/CoreIPC/HandleMessage.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Platform/CoreIPC/HandleMessage.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -364,6 +364,12 @@
</span><span class="cx">     (object-&gt;*function)(std::get&lt;0&gt;(args), std::get&lt;1&gt;(args), std::get&lt;2&gt;(args), std::get&lt;3&gt;(args), std::get&lt;4&gt;(args), std::get&lt;5&gt;(args), std::get&lt;6&gt;(args), decoder, std::get&lt;0&gt;(replyArgs), std::get&lt;1&gt;(replyArgs), std::get&lt;2&gt;(replyArgs));
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+template&lt;typename C, typename MF, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename R1, typename R2, typename R3&gt;
+void callMemberFunction(std::tuple&lt;P1, P2, P3, P4, P5, P6, P7, P8&gt;&amp;&amp; args, MessageDecoder&amp; decoder, std::tuple&lt;R1, R2, R3&gt;&amp; replyArgs, C* object, MF function)
+{
+    (object-&gt;*function)(std::get&lt;0&gt;(args), std::get&lt;1&gt;(args), std::get&lt;2&gt;(args), std::get&lt;3&gt;(args), std::get&lt;4&gt;(args), std::get&lt;5&gt;(args), std::get&lt;6&gt;(args), std::get&lt;7&gt;(args), decoder, std::get&lt;0&gt;(replyArgs), std::get&lt;1&gt;(replyArgs), std::get&lt;2&gt;(replyArgs));
+}
+
</ins><span class="cx"> // Main dispatch functions
</span><span class="cx"> template&lt;typename T, typename C, typename MF&gt;
</span><span class="cx"> void handleMessage(MessageDecoder&amp; decoder, C* object, MF function)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2PlatformCoreIPCMessageReceiverMapcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Platform/CoreIPC/MessageReceiverMap.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Platform/CoreIPC/MessageReceiverMap.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Platform/CoreIPC/MessageReceiverMap.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -39,18 +39,18 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void MessageReceiverMap::addMessageReceiver(StringReference messageReceiverName, MessageReceiver* messageReceiver)
</del><ins>+void MessageReceiverMap::addMessageReceiver(StringReference messageReceiverName, MessageReceiver&amp; messageReceiver)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(!m_globalMessageReceivers.contains(messageReceiverName));
</span><del>-    m_globalMessageReceivers.set(messageReceiverName, messageReceiver);
</del><ins>+    m_globalMessageReceivers.set(messageReceiverName, &amp;messageReceiver);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void MessageReceiverMap::addMessageReceiver(StringReference messageReceiverName, uint64_t destinationID, MessageReceiver* messageReceiver)
</del><ins>+void MessageReceiverMap::addMessageReceiver(StringReference messageReceiverName, uint64_t destinationID, MessageReceiver&amp; messageReceiver)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(!m_messageReceivers.contains(std::make_pair(messageReceiverName, destinationID)));
</span><span class="cx">     ASSERT(!m_globalMessageReceivers.contains(messageReceiverName));
</span><span class="cx"> 
</span><del>-    m_messageReceivers.set(std::make_pair(messageReceiverName, destinationID), messageReceiver);
</del><ins>+    m_messageReceivers.set(std::make_pair(messageReceiverName, destinationID), &amp;messageReceiver);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MessageReceiverMap::removeMessageReceiver(StringReference messageReceiverName)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2PlatformCoreIPCMessageReceiverMaph"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Platform/CoreIPC/MessageReceiverMap.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Platform/CoreIPC/MessageReceiverMap.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Platform/CoreIPC/MessageReceiverMap.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -42,8 +42,8 @@
</span><span class="cx">     MessageReceiverMap();
</span><span class="cx">     ~MessageReceiverMap();
</span><span class="cx"> 
</span><del>-    void addMessageReceiver(StringReference messageReceiverName, MessageReceiver*);
-    void addMessageReceiver(StringReference messageReceiverName, uint64_t destinationID, MessageReceiver*);
</del><ins>+    void addMessageReceiver(StringReference messageReceiverName, MessageReceiver&amp;);
+    void addMessageReceiver(StringReference messageReceiverName, uint64_t destinationID, MessageReceiver&amp;);
</ins><span class="cx"> 
</span><span class="cx">     void removeMessageReceiver(StringReference messageReceiverName);
</span><span class="cx">     void removeMessageReceiver(StringReference messageReceiverName, uint64_t destinationID);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2PlatformCoreIPCMessageSendercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Platform/CoreIPC/MessageSender.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Platform/CoreIPC/MessageSender.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Platform/CoreIPC/MessageSender.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,42 +0,0 @@
</span><del>-/*
- * Copyright (C) 2013 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include &quot;config.h&quot;
-#include &quot;MessageSender.h&quot;
-
-namespace CoreIPC {
-
-MessageSender::~MessageSender()
-{
-}
-
-bool MessageSender::sendMessage(std::unique_ptr&lt;MessageEncoder&gt; encoder)
-{
-    ASSERT(messageSenderConnection());
-
-    return messageSenderConnection()-&gt;sendMessage(std::move(encoder));
-}
-
-} // namespace CoreIPC
</del></span></pre></div>
<a id="branchesjsCStackSourceWebKit2PlatformCoreIPCMessageSenderh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Platform/CoreIPC/MessageSender.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Platform/CoreIPC/MessageSender.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Platform/CoreIPC/MessageSender.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,78 +0,0 @@
</span><del>-/*
- * Copyright (C) 2010 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef MessageSender_h
-#define MessageSender_h
-
-#include &lt;wtf/Assertions.h&gt;
-#include &quot;Connection.h&quot;
-
-namespace CoreIPC {
-
-class MessageSender {
-public:
-    virtual ~MessageSender();
-
-    template&lt;typename U&gt; bool send(const U&amp; message)
-    {
-        return send(message, messageSenderDestinationID());
-    }
-
-    template&lt;typename U&gt; bool send(const U&amp; message, uint64_t destinationID)
-    {
-        static_assert(!U::isSync, &quot;Message is sync!&quot;);
-
-        auto encoder = std::make_unique&lt;MessageEncoder&gt;(U::receiverName(), U::name(), destinationID);
-        encoder-&gt;encode(message.arguments());
-        
-        return sendMessage(std::move(encoder));
-    }
-
-    template&lt;typename T&gt;
-    bool sendSync(T&amp;&amp; message, typename T::Reply&amp;&amp; reply, double timeout = Connection::NoTimeout, unsigned syncSendFlags = 0)
-    {
-        static_assert(T::isSync, &quot;Message is not sync!&quot;);
-
-        return sendSync(std::forward&lt;T&gt;(message), std::move(reply), messageSenderDestinationID(), timeout, syncSendFlags);
-    }
-
-    template&lt;typename T&gt;
-    bool sendSync(T&amp;&amp; message, typename T::Reply&amp;&amp; reply, uint64_t destinationID, double timeout = Connection::NoTimeout, unsigned syncSendFlags = 0)
-    {
-        ASSERT(messageSenderConnection());
-
-        return messageSenderConnection()-&gt;sendSync(std::move(message), std::move(reply), destinationID, timeout, syncSendFlags);
-    }
-
-    bool sendMessage(std::unique_ptr&lt;MessageEncoder&gt;);
-
-private:
-    virtual Connection* messageSenderConnection() = 0;
-    virtual uint64_t messageSenderDestinationID() = 0;
-};
-
-} // namespace CoreIPC
-
-#endif // MessageSender_h
</del></span></pre></div>
<a id="branchesjsCStackSourceWebKit2PlatformCoreIPCunixConnectionUnixcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Platform/CoreIPC/unix/ConnectionUnix.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Platform/CoreIPC/unix/ConnectionUnix.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Platform/CoreIPC/unix/ConnectionUnix.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -43,6 +43,16 @@
</span><span class="cx"> #include &lt;glib.h&gt;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#ifdef SOCK_SEQPACKET
+#define SOCKET_TYPE SOCK_SEQPACKET
+#else
+#if PLATFORM(GTK)
+#define SOCKET_TYPE SOCK_STREAM
+#else
+#define SOCKET_TYPE SOCK_DGRAM
+#endif
+#endif // SOCK_SEQPACKET
+
</ins><span class="cx"> namespace CoreIPC {
</span><span class="cx"> 
</span><span class="cx"> static const size_t messageMaxSize = 4096;
</span><span class="lines">@@ -506,4 +516,21 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+Connection::SocketPair Connection::createPlatformConnection()
+{
+    int sockets[2];
+    RELEASE_ASSERT(socketpair(AF_UNIX, SOCKET_TYPE, 0, sockets) != -1);
+
+    // Don't expose the child socket to the parent process.
+    while (fcntl(sockets[1], F_SETFD, FD_CLOEXEC)  == -1)
+        RELEASE_ASSERT(errno != EINTR);
+
+    // Don't expose the parent socket to potential future children.
+    while (fcntl(sockets[0], F_SETFD, FD_CLOEXEC) == -1)
+        RELEASE_ASSERT(errno != EINTR);
+
+    SocketPair socketPair = { sockets[0], sockets[1] };
+    return socketPair;
+}
+
</ins><span class="cx"> } // namespace CoreIPC
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2PlatformIPCDataReferencecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Platform/IPC/DataReference.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Platform/IPC/DataReference.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Platform/IPC/DataReference.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -29,7 +29,7 @@
</span><span class="cx"> #include &quot;ArgumentDecoder.h&quot;
</span><span class="cx"> #include &quot;ArgumentEncoder.h&quot;
</span><span class="cx"> 
</span><del>-namespace CoreIPC {
</del><ins>+namespace IPC {
</ins><span class="cx"> 
</span><span class="cx"> void DataReference::encode(ArgumentEncoder&amp; encoder) const
</span><span class="cx"> {
</span><span class="lines">@@ -41,6 +41,4 @@
</span><span class="cx">     return decoder.decodeVariableLengthByteArray(dataReference);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-} // namespace CoreIPC
-
-
</del><ins>+} // namespace IPC
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2PlatformIPCDataReferenceh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Platform/IPC/DataReference.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Platform/IPC/DataReference.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Platform/IPC/DataReference.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -28,7 +28,7 @@
</span><span class="cx"> 
</span><span class="cx"> #include &lt;wtf/Vector.h&gt;
</span><span class="cx"> 
</span><del>-namespace CoreIPC {
</del><ins>+namespace IPC {
</ins><span class="cx"> 
</span><span class="cx"> class ArgumentDecoder;
</span><span class="cx"> class ArgumentEncoder;
</span><span class="lines">@@ -80,6 +80,6 @@
</span><span class="cx">     size_t m_size;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-} // namespace CoreIPC
</del><ins>+} // namespace IPC
</ins><span class="cx"> 
</span><span class="cx"> #endif // DataReference_h
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2PlatformIPCMessageSendercpp"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebKit2/Platform/IPC/MessageSender.cpp (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Platform/IPC/MessageSender.cpp                                (rev 0)
+++ branches/jsCStack/Source/WebKit2/Platform/IPC/MessageSender.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,42 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;MessageSender.h&quot;
+
+namespace IPC {
+
+MessageSender::~MessageSender()
+{
+}
+
+bool MessageSender::sendMessage(std::unique_ptr&lt;MessageEncoder&gt; encoder, unsigned messageSendFlags)
+{
+    ASSERT(messageSenderConnection());
+
+    return messageSenderConnection()-&gt;sendMessage(std::move(encoder), messageSendFlags);
+}
+
+} // namespace IPC
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2PlatformIPCMessageSenderh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebKit2/Platform/IPC/MessageSender.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Platform/IPC/MessageSender.h                                (rev 0)
+++ branches/jsCStack/Source/WebKit2/Platform/IPC/MessageSender.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,78 @@
</span><ins>+/*
+ * Copyright (C) 2010 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef MessageSender_h
+#define MessageSender_h
+
+#include &lt;wtf/Assertions.h&gt;
+#include &quot;Connection.h&quot;
+
+namespace IPC {
+
+class MessageSender {
+public:
+    virtual ~MessageSender();
+
+    template&lt;typename U&gt; bool send(const U&amp; message)
+    {
+        return send(message, messageSenderDestinationID(), 0);
+    }
+
+    template&lt;typename U&gt; bool send(const U&amp; message, uint64_t destinationID, unsigned messageSendFlags = 0)
+    {
+        static_assert(!U::isSync, &quot;Message is sync!&quot;);
+
+        auto encoder = std::make_unique&lt;MessageEncoder&gt;(U::receiverName(), U::name(), destinationID);
+        encoder-&gt;encode(message.arguments());
+        
+        return sendMessage(std::move(encoder), messageSendFlags);
+    }
+
+    template&lt;typename T&gt;
+    bool sendSync(T&amp;&amp; message, typename T::Reply&amp;&amp; reply, double timeout = Connection::NoTimeout, unsigned syncSendFlags = 0)
+    {
+        static_assert(T::isSync, &quot;Message is not sync!&quot;);
+
+        return sendSync(std::forward&lt;T&gt;(message), std::move(reply), messageSenderDestinationID(), timeout, syncSendFlags);
+    }
+
+    template&lt;typename T&gt;
+    bool sendSync(T&amp;&amp; message, typename T::Reply&amp;&amp; reply, uint64_t destinationID, double timeout = Connection::NoTimeout, unsigned syncSendFlags = 0)
+    {
+        ASSERT(messageSenderConnection());
+
+        return messageSenderConnection()-&gt;sendSync(std::move(message), std::move(reply), destinationID, timeout, syncSendFlags);
+    }
+
+    virtual bool sendMessage(std::unique_ptr&lt;MessageEncoder&gt;, unsigned messageSendFlags);
+
+private:
+    virtual Connection* messageSenderConnection() = 0;
+    virtual uint64_t messageSenderDestinationID() = 0;
+};
+
+} // namespace IPC
+
+#endif // MessageSender_h
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2PlatformIPCStringReferencecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Platform/IPC/StringReference.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Platform/IPC/StringReference.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Platform/IPC/StringReference.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -32,7 +32,7 @@
</span><span class="cx"> #include &lt;wtf/StringHasher.h&gt;
</span><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><span class="cx"> 
</span><del>-namespace CoreIPC {
</del><ins>+namespace IPC {
</ins><span class="cx"> 
</span><span class="cx"> CString StringReference::toString() const
</span><span class="cx"> {
</span><span class="lines">@@ -61,4 +61,4 @@
</span><span class="cx">     return StringHasher::computeHash(reinterpret_cast&lt;const unsigned char*&gt;(a.data()), a.size());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-} // namespace CoreIPC
</del><ins>+} // namespace IPC
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2PlatformIPCStringReferenceh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Platform/IPC/StringReference.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Platform/IPC/StringReference.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Platform/IPC/StringReference.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -30,7 +30,7 @@
</span><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><span class="cx"> #include &lt;wtf/HashTraits.h&gt;
</span><span class="cx"> 
</span><del>-namespace CoreIPC {
</del><ins>+namespace IPC {
</ins><span class="cx"> 
</span><span class="cx"> class ArgumentEncoder;
</span><span class="cx"> class ArgumentDecoder;
</span><span class="lines">@@ -82,19 +82,19 @@
</span><span class="cx">     size_t m_size;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-} // namespace CoreIPC
</del><ins>+} // namespace IPC
</ins><span class="cx"> 
</span><span class="cx"> namespace WTF {
</span><span class="cx"> template&lt;typename T&gt; struct DefaultHash;
</span><span class="cx"> 
</span><del>-template&lt;&gt; struct DefaultHash&lt;CoreIPC::StringReference&gt; {
-    typedef CoreIPC::StringReference::Hash Hash;
</del><ins>+template&lt;&gt; struct DefaultHash&lt;IPC::StringReference&gt; {
+    typedef IPC::StringReference::Hash Hash;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><del>-template&lt;&gt; struct HashTraits&lt;CoreIPC::StringReference&gt; : GenericHashTraits&lt;CoreIPC::StringReference&gt; {
</del><ins>+template&lt;&gt; struct HashTraits&lt;IPC::StringReference&gt; : GenericHashTraits&lt;IPC::StringReference&gt; {
</ins><span class="cx">     static const bool emptyValueIsZero = 0;
</span><del>-    static void constructDeletedValue(CoreIPC::StringReference&amp; stringReference) { stringReference = CoreIPC::StringReference(0, std::numeric_limits&lt;size_t&gt;::max()); }
-    static bool isDeletedValue(const CoreIPC::StringReference&amp; stringReference) { return stringReference.size() == std::numeric_limits&lt;size_t&gt;::max(); }
</del><ins>+    static void constructDeletedValue(IPC::StringReference&amp; stringReference) { stringReference = IPC::StringReference(0, std::numeric_limits&lt;size_t&gt;::max()); }
+    static bool isDeletedValue(const IPC::StringReference&amp; stringReference) { return stringReference.size() == std::numeric_limits&lt;size_t&gt;::max(); }
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WTF
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2PlatformEflcmake"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/PlatformEfl.cmake (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/PlatformEfl.cmake        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/PlatformEfl.cmake        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -49,7 +49,6 @@
</span><span class="cx">     Shared/linux/SeccompFilters/Syscall.cpp
</span><span class="cx">     Shared/linux/SeccompFilters/SyscallPolicy.cpp
</span><span class="cx"> 
</span><del>-    Shared/soup/CertificateInfo.cpp
</del><span class="cx">     Shared/soup/WebCoreArgumentCodersSoup.cpp
</span><span class="cx"> 
</span><span class="cx">     UIProcess/DefaultUndoController.cpp
</span><span class="lines">@@ -147,7 +146,6 @@
</span><span class="cx">     UIProcess/efl/ViewClientEfl.cpp
</span><span class="cx">     UIProcess/efl/WebContextEfl.cpp
</span><span class="cx">     UIProcess/efl/WebContextMenuProxyEfl.cpp
</span><del>-    UIProcess/efl/WebFullScreenManagerProxyEfl.cpp
</del><span class="cx">     UIProcess/efl/WebInspectorProxyEfl.cpp
</span><span class="cx">     UIProcess/efl/WebPageProxyEfl.cpp
</span><span class="cx">     UIProcess/efl/WebPopupItemEfl.cpp
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2PlatformGTKcmake"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/PlatformGTK.cmake (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/PlatformGTK.cmake        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/PlatformGTK.cmake        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,3 +1,4 @@
</span><ins>+set(DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR ${DERIVED_SOURCES_DIR}/webkitdom)
</ins><span class="cx"> set(DERIVED_SOURCES_WEBKIT2GTK_DIR ${DERIVED_SOURCES_DIR}/webkit2gtk)
</span><span class="cx"> set(WEBKIT2_BUILT_API_DIR ${DERIVED_SOURCES_WEBKIT2GTK_DIR}/webkit2)
</span><span class="cx"> set(WEBKIT2_FORWARDING_HEADERS_DIR ${DERIVED_SOURCES_DIR}/ForwardingHeaders/webkit2gtk)
</span><span class="lines">@@ -32,8 +33,6 @@
</span><span class="cx"> 
</span><span class="cx">     Shared/API/c/cairo/WKImageCairo.cpp
</span><span class="cx"> 
</span><del>-    Shared/API/c/gtk/WKGraphicsContextGtk.cpp
-
</del><span class="cx">     Shared/Downloads/gtk/DownloadSoupErrorsGtk.cpp
</span><span class="cx"> 
</span><span class="cx">     Shared/Downloads/soup/DownloadSoup.cpp
</span><span class="lines">@@ -61,10 +60,10 @@
</span><span class="cx">     Shared/linux/SeccompFilters/Syscall.cpp
</span><span class="cx">     Shared/linux/SeccompFilters/SyscallPolicy.cpp
</span><span class="cx"> 
</span><del>-    Shared/soup/CertificateInfo.cpp
</del><span class="cx">     Shared/soup/WebCoreArgumentCodersSoup.cpp
</span><span class="cx"> 
</span><span class="cx">     UIProcess/DefaultUndoController.cpp
</span><ins>+    UIProcess/DrawingAreaProxyImpl.cpp
</ins><span class="cx"> 
</span><span class="cx">     UIProcess/API/C/CoordinatedGraphics/WKView.cpp
</span><span class="cx"> 
</span><span class="lines">@@ -82,6 +81,8 @@
</span><span class="cx">     UIProcess/API/gtk/PageClientImpl.h
</span><span class="cx">     UIProcess/API/gtk/WebKitAuthenticationDialog.cpp
</span><span class="cx">     UIProcess/API/gtk/WebKitAuthenticationDialog.h
</span><ins>+    UIProcess/API/gtk/WebKitAuthenticationRequest.cpp
+    UIProcess/API/gtk/WebKitAuthenticationRequest.h
</ins><span class="cx">     UIProcess/API/gtk/WebKitBackForwardList.cpp
</span><span class="cx">     UIProcess/API/gtk/WebKitBackForwardList.h
</span><span class="cx">     UIProcess/API/gtk/WebKitBackForwardListItem.cpp
</span><span class="lines">@@ -104,6 +105,8 @@
</span><span class="cx">     UIProcess/API/gtk/WebKitCookieManager.cpp
</span><span class="cx">     UIProcess/API/gtk/WebKitCookieManager.h
</span><span class="cx">     UIProcess/API/gtk/WebKitCookieManagerPrivate.h
</span><ins>+    UIProcess/API/gtk/WebKitCredential.cpp
+    UIProcess/API/gtk/WebKitCredential.h
</ins><span class="cx">     UIProcess/API/gtk/WebKitDefines.h
</span><span class="cx">     UIProcess/API/gtk/WebKitDownload.cpp
</span><span class="cx">     UIProcess/API/gtk/WebKitDownload.h
</span><span class="lines">@@ -242,7 +245,6 @@
</span><span class="cx">     UIProcess/gtk/WebContextGtk.cpp
</span><span class="cx">     UIProcess/gtk/WebContextMenuProxyGtk.cpp
</span><span class="cx">     UIProcess/gtk/WebFullScreenClientGtk.cpp
</span><del>-    UIProcess/gtk/WebFullScreenManagerProxyGtk.cpp
</del><span class="cx">     UIProcess/gtk/WebInspectorClientGtk.cpp
</span><span class="cx">     UIProcess/gtk/WebInspectorProxyGtk.cpp
</span><span class="cx">     UIProcess/gtk/WebPageProxyGtk.cpp
</span><span class="lines">@@ -257,6 +259,11 @@
</span><span class="cx">     WebProcess/Cookies/soup/WebCookieManagerSoup.cpp
</span><span class="cx">     WebProcess/Cookies/soup/WebKitSoupCookieJarSqlite.cpp
</span><span class="cx"> 
</span><ins>+    WebProcess/InjectedBundle/API/gtk/WebKitFrame.cpp
+    WebProcess/InjectedBundle/API/gtk/WebKitScriptWorld.cpp
+    WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp
+    WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp
+
</ins><span class="cx">     WebProcess/InjectedBundle/gtk/InjectedBundleGtk.cpp
</span><span class="cx"> 
</span><span class="cx">     WebProcess/Plugins/Netscape/unix/PluginProxyUnix.cpp
</span><span class="lines">@@ -271,6 +278,8 @@
</span><span class="cx"> 
</span><span class="cx">     WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.cpp
</span><span class="cx"> 
</span><ins>+    WebProcess/WebPage/DrawingAreaImpl.cpp
+
</ins><span class="cx">     WebProcess/WebPage/atk/WebPageAccessibilityObjectAtk.cpp
</span><span class="cx"> 
</span><span class="cx">     WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp
</span><span class="lines">@@ -278,6 +287,8 @@
</span><span class="cx">     WebProcess/WebPage/gtk/WebPageGtk.cpp
</span><span class="cx">     WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp
</span><span class="cx"> 
</span><ins>+    WebProcess/gtk/WebGtkExtensionManager.cpp
+    WebProcess/gtk/WebGtkInjectedBundleMain.cpp
</ins><span class="cx">     WebProcess/gtk/WebProcessMainGtk.cpp
</span><span class="cx"> 
</span><span class="cx">     WebProcess/soup/WebKitSoupRequestGeneric.cpp
</span><span class="lines">@@ -328,9 +339,20 @@
</span><span class="cx">     ${WEBKIT2_DIR}/UIProcess/API/gtk/WebKitWindowProperties.h
</span><span class="cx">     ${WEBKIT2_DIR}/UIProcess/API/gtk/webkit2.h
</span><span class="cx"> 
</span><ins>+    ${WEBKIT2_DIR}/WebProcess/InjectedBundle/API/gtk/WebKitFrame.cpp
+    ${WEBKIT2_DIR}/WebProcess/InjectedBundle/API/gtk/WebKitFrame.h
+    ${WEBKIT2_DIR}/WebProcess/InjectedBundle/API/gtk/WebKitFramePrivate.h
+    ${WEBKIT2_DIR}/WebProcess/InjectedBundle/API/gtk/WebKitScriptWorld.cpp
+    ${WEBKIT2_DIR}/WebProcess/InjectedBundle/API/gtk/WebKitScriptWorld.h
+    ${WEBKIT2_DIR}/WebProcess/InjectedBundle/API/gtk/WebKitScriptWorldPrivate.h
+    ${WEBKIT2_DIR}/WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp
</ins><span class="cx">     ${WEBKIT2_DIR}/WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.h
</span><ins>+    ${WEBKIT2_DIR}/WebProcess/InjectedBundle/API/gtk/WebKitWebExtensionPrivate.h
+    ${WEBKIT2_DIR}/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp
</ins><span class="cx">     ${WEBKIT2_DIR}/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.h
</span><ins>+    ${WEBKIT2_DIR}/WebProcess/InjectedBundle/API/gtk/WebKitWebPagePrivate.h
</ins><span class="cx">     ${WEBKIT2_DIR}/WebProcess/InjectedBundle/API/gtk/webkit-web-extension.h
</span><ins>+
</ins><span class="cx"> )
</span><span class="cx"> 
</span><span class="cx"> list(APPEND WebKit2_MESSAGES_IN_FILES
</span><span class="lines">@@ -342,11 +364,13 @@
</span><span class="cx"> # This is necessary because of a conflict between the GTK+ API WebKitVersion.h and one generated by WebCore.
</span><span class="cx"> list(INSERT WebKit2_INCLUDE_DIRECTORIES 0
</span><span class="cx">     &quot;${WEBKIT2_FORWARDING_HEADERS_DIR}&quot;
</span><ins>+    &quot;${WEBKIT2_FORWARDING_HEADERS_DIR}/webkit2extension&quot;
</ins><span class="cx">     &quot;${WEBKIT2_BUILT_API_DIR}&quot;
</span><span class="cx">     &quot;${DERIVED_SOURCES_WEBKIT2GTK_DIR}&quot;
</span><span class="cx"> )
</span><span class="cx"> 
</span><span class="cx"> list(APPEND WebKit2_INCLUDE_DIRECTORIES
</span><ins>+    &quot;${WEBCORE_DIR}/platform/cairo&quot;
</ins><span class="cx">     &quot;${WEBCORE_DIR}/platform/gtk&quot;
</span><span class="cx">     &quot;${WEBCORE_DIR}/platform/graphics/cairo&quot;
</span><span class="cx">     &quot;${WEBCORE_DIR}/platform/graphics/opentype&quot;
</span><span class="lines">@@ -363,6 +387,7 @@
</span><span class="cx">     &quot;${WEBKIT2_DIR}/UIProcess/API/gtk&quot;
</span><span class="cx">     &quot;${WEBKIT2_DIR}/UIProcess/gtk&quot;
</span><span class="cx">     &quot;${WEBKIT2_DIR}/UIProcess/soup&quot;
</span><ins>+    &quot;${WEBKIT2_DIR}/WebProcess/InjectedBundle/API/gtk&quot;
</ins><span class="cx">     &quot;${WEBKIT2_DIR}/WebProcess/gtk&quot;
</span><span class="cx">     &quot;${WEBKIT2_DIR}/WebProcess/soup&quot;
</span><span class="cx">     &quot;${WEBKIT2_DIR}/WebProcess/WebCoreSupport/gtk&quot;
</span><span class="lines">@@ -412,6 +437,11 @@
</span><span class="cx">     COMMAND ln -n -s -f ${WEBKIT2_DIR}/UIProcess/API/gtk ${WEBKIT2_FORWARDING_HEADERS_DIR}/webkit2
</span><span class="cx"> )
</span><span class="cx"> 
</span><ins>+add_custom_target(fake-installed-webextension-headers
+    mkdir -p ${WEBKIT2_FORWARDING_HEADERS_DIR}/webkit2extension
+    COMMAND ln -n -s -f ${WEBKIT2_DIR}/WebProcess/InjectedBundle/API/gtk ${WEBKIT2_FORWARDING_HEADERS_DIR}/webkit2extension/webkit2
+)
+
</ins><span class="cx"> add_custom_target(gtk-forwarding-headers
</span><span class="cx">     COMMAND ${PERL_EXECUTABLE} ${WEBKIT2_DIR}/Scripts/generate-forwarding-headers.pl ${WEBKIT2_DIR} ${DERIVED_SOURCES_WEBKIT2_DIR}/include gtk
</span><span class="cx"> )
</span><span class="lines">@@ -424,6 +454,7 @@
</span><span class="cx">      fake-installed-headers
</span><span class="cx">      gtk-forwarding-headers
</span><span class="cx">      soup-forwarding-headers
</span><ins>+     fake-installed-webextension-headers
</ins><span class="cx"> )
</span><span class="cx"> 
</span><span class="cx"> if (ENABLE_PLUGIN_PROCESS)
</span><span class="lines">@@ -448,3 +479,23 @@
</span><span class="cx">     target_link_libraries(${PluginProcess_EXECUTABLE_NAME} ${PluginProcess_LIBRARIES})
</span><span class="cx">     install(TARGETS ${PluginProcess_EXECUTABLE_NAME} DESTINATION &quot;${EXEC_INSTALL_DIR}&quot;)
</span><span class="cx"> endif () # ENABLE_PLUGIN_PROCESS
</span><ins>+
+# Commands for building the built-in injected bundle.
+include_directories(
+    &quot;${WEBKIT2_DIR}/Platform&quot;
+    &quot;${WEBKIT2_DIR}/Shared&quot;
+    &quot;${WEBKIT2_DIR}/Shared/API/c&quot;
+    &quot;${WEBKIT2_DIR}/UIProcess/API/C&quot;
+    &quot;${WEBKIT2_DIR}/WebProcess/InjectedBundle&quot;
+    &quot;${WEBKIT2_DIR}/WebProcess/InjectedBundle/API/c&quot;
+    &quot;${DERIVED_SOURCES_DIR}&quot;
+    &quot;${DERIVED_SOURCES_DIR}/InjectedBundle&quot;
+    &quot;${DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR}&quot;
+    &quot;${DERIVED_SOURCES_WEBKIT2_DIR}/include&quot;
+)
+
+add_library(webkit2gtkinjectedbundle MODULE
+    &quot;${WEBKIT2_DIR}/WebProcess/gtk/WebGtkInjectedBundleMain.cpp&quot;
+)
+add_dependencies(webkit2gtkinjectedbundle GObjectDOMBindings)
+list(APPEND WebKit2_LIBRARIES GObjectDOMBindings)
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2PluginProcessPluginProcesscpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/PluginProcess/PluginProcess.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/PluginProcess/PluginProcess.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/PluginProcess/PluginProcess.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -44,25 +44,6 @@
</span><span class="cx"> #include &lt;crt_externs.h&gt;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-#if USE(UNIX_DOMAIN_SOCKETS)
-#include &lt;errno.h&gt;
-#include &lt;fcntl.h&gt;
-#include &lt;sys/resource.h&gt;
-#include &lt;sys/socket.h&gt;
-#include &lt;unistd.h&gt;
-#include &lt;wtf/UniStdExtras.h&gt;
-
-#ifdef SOCK_SEQPACKET
-#define SOCKET_TYPE SOCK_SEQPACKET
-#else
-#if PLATFORM(GTK)
-#define SOCKET_TYPE SOCK_STREAM
-#else
-#define SOCKET_TYPE SOCK_DGRAM
-#endif
-#endif // SOCK_SEQPACKET
-#endif // USE(UNIX_DOMAIN_SOCKETS)
-
</del><span class="cx"> using namespace WebCore;
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="lines">@@ -183,36 +164,12 @@
</span><span class="cx">     CoreIPC::Attachment clientPort(listeningPort, MACH_MSG_TYPE_MAKE_SEND);
</span><span class="cx">     parentProcessConnection()-&gt;send(Messages::PluginProcessProxy::DidCreateWebProcessConnection(clientPort, m_supportsAsynchronousPluginInitialization), 0);
</span><span class="cx"> #elif USE(UNIX_DOMAIN_SOCKETS)
</span><del>-    int sockets[2];
-    if (socketpair(AF_UNIX, SOCKET_TYPE, 0, sockets) == -1) {
-        ASSERT_NOT_REACHED();
-        return;
-    }
</del><ins>+    CoreIPC::Connection::SocketPair socketPair = CoreIPC::Connection::createPlatformConnection();
</ins><span class="cx"> 
</span><del>-    // Don't expose the plugin process socket to the web process.
-    while (fcntl(sockets[1], F_SETFD, FD_CLOEXEC)  == -1) {
-        if (errno != EINTR) {
-            ASSERT_NOT_REACHED();
-            closeWithRetry(sockets[0]);
-            closeWithRetry(sockets[1]);
-            return;
-        }
-    }
-
-    // Don't expose the web process socket to possible future web processes.
-    while (fcntl(sockets[0], F_SETFD, FD_CLOEXEC) == -1) {
-        if (errno != EINTR) {
-            ASSERT_NOT_REACHED();
-            closeWithRetry(sockets[0]);
-            closeWithRetry(sockets[1]);
-            return;
-        }
-    }
-
-    RefPtr&lt;WebProcessConnection&gt; connection = WebProcessConnection::create(sockets[1]);
</del><ins>+    RefPtr&lt;WebProcessConnection&gt; connection = WebProcessConnection::create(socketPair.server);
</ins><span class="cx">     m_webProcessConnections.append(connection.release());
</span><span class="cx"> 
</span><del>-    CoreIPC::Attachment clientSocket(sockets[0]);
</del><ins>+    CoreIPC::Attachment clientSocket(socketPair.client);
</ins><span class="cx">     parentProcessConnection()-&gt;send(Messages::PluginProcessProxy::DidCreateWebProcessConnection(clientSocket, m_supportsAsynchronousPluginInitialization), 0);
</span><span class="cx"> #else
</span><span class="cx">     notImplemented();
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedAPICocoaWKRemoteObjectCodermm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/API/Cocoa/WKRemoteObjectCoder.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/API/Cocoa/WKRemoteObjectCoder.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/API/Cocoa/WKRemoteObjectCoder.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -29,10 +29,10 @@
</span><span class="cx"> #if WK_API_ENABLED
</span><span class="cx"> 
</span><span class="cx"> #import &quot;APIArray.h&quot;
</span><ins>+#import &quot;APINumber.h&quot;
</ins><span class="cx"> #import &quot;MutableDictionary.h&quot;
</span><span class="cx"> #import &quot;WKRemoteObjectInterfaceInternal.h&quot;
</span><span class="cx"> #import &quot;WebData.h&quot;
</span><del>-#import &quot;WebNumber.h&quot;
</del><span class="cx"> #import &quot;WebString.h&quot;
</span><span class="cx"> #import &lt;objc/runtime.h&gt;
</span><span class="cx"> #import &lt;wtf/RetainPtr.h&gt;
</span><span class="lines">@@ -242,17 +242,17 @@
</span><span class="cx"> 
</span><span class="cx"> - (void)encodeBool:(BOOL)value forKey:(NSString *)key
</span><span class="cx"> {
</span><del>-    _currentDictionary-&gt;set(escapeKey(key), WebBoolean::create(value));
</del><ins>+    _currentDictionary-&gt;set(escapeKey(key), API::Boolean::create(value));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)encodeInt64:(int64_t)value forKey:(NSString *)key
</span><span class="cx"> {
</span><del>-    _currentDictionary-&gt;set(escapeKey(key), WebUInt64::create(value));
</del><ins>+    _currentDictionary-&gt;set(escapeKey(key), API::UInt64::create(value));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)encodeDouble:(double)value forKey:(NSString *)key
</span><span class="cx"> {
</span><del>-    _currentDictionary-&gt;set(escapeKey(key), WebDouble::create(value));
</del><ins>+    _currentDictionary-&gt;set(escapeKey(key), API::Double::create(value));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (BOOL)requiresSecureCoding
</span><span class="lines">@@ -481,7 +481,7 @@
</span><span class="cx"> 
</span><span class="cx"> - (BOOL)decodeBoolForKey:(NSString *)key
</span><span class="cx"> {
</span><del>-    const WebBoolean* value = _currentDictionary-&gt;get&lt;WebBoolean&gt;(escapeKey(key));
</del><ins>+    const API::Boolean* value = _currentDictionary-&gt;get&lt;API::Boolean&gt;(escapeKey(key));
</ins><span class="cx">     if (!value)
</span><span class="cx">         return false;
</span><span class="cx">     return value-&gt;value();
</span><span class="lines">@@ -489,7 +489,7 @@
</span><span class="cx"> 
</span><span class="cx"> - (int64_t)decodeInt64ForKey:(NSString *)key
</span><span class="cx"> {
</span><del>-    const WebUInt64* value = _currentDictionary-&gt;get&lt;WebUInt64&gt;(escapeKey(key));
</del><ins>+    const API::UInt64* value = _currentDictionary-&gt;get&lt;API::UInt64&gt;(escapeKey(key));
</ins><span class="cx">     if (!value)
</span><span class="cx">         return 0;
</span><span class="cx">     return value-&gt;value();
</span><span class="lines">@@ -497,7 +497,7 @@
</span><span class="cx"> 
</span><span class="cx"> - (double)decodeDoubleForKey:(NSString *)key
</span><span class="cx"> {
</span><del>-    const WebDouble* value = _currentDictionary-&gt;get&lt;WebDouble&gt;(escapeKey(key));
</del><ins>+    const API::Double* value = _currentDictionary-&gt;get&lt;API::Double&gt;(escapeKey(key));
</ins><span class="cx">     if (!value)
</span><span class="cx">         return 0;
</span><span class="cx">     return value-&gt;value();
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedAPIcWKContextMenuItemcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/API/c/WKContextMenuItem.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/API/c/WKContextMenuItem.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/API/c/WKContextMenuItem.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -53,6 +53,9 @@
</span><span class="cx"> #if ENABLE(CONTEXT_MENUS)
</span><span class="cx">     return toAPI(WebContextMenuItem::create(WebContextMenuItemData(ActionType, toImpl(tag), toImpl(title)-&gt;string(), enabled, false)).leakRef());
</span><span class="cx"> #else
</span><ins>+    UNUSED_PARAM(tag);
+    UNUSED_PARAM(title);
+    UNUSED_PARAM(enabled);
</ins><span class="cx">     return 0;
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="lines">@@ -62,6 +65,10 @@
</span><span class="cx"> #if ENABLE(CONTEXT_MENUS)
</span><span class="cx">     return toAPI(WebContextMenuItem::create(WebContextMenuItemData(CheckableActionType, toImpl(tag), toImpl(title)-&gt;string(), enabled, checked)).leakRef());
</span><span class="cx"> #else
</span><ins>+    UNUSED_PARAM(tag);
+    UNUSED_PARAM(title);
+    UNUSED_PARAM(enabled);
+    UNUSED_PARAM(checked);
</ins><span class="cx">     return 0;
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="lines">@@ -71,6 +78,9 @@
</span><span class="cx"> #if ENABLE(CONTEXT_MENUS)
</span><span class="cx">     return toAPI(WebContextMenuItem::create(toImpl(title)-&gt;string(), enabled, toImpl(submenuItems)).leakRef());
</span><span class="cx"> #else
</span><ins>+    UNUSED_PARAM(title);
+    UNUSED_PARAM(enabled);
+    UNUSED_PARAM(submenuItems);
</ins><span class="cx">     return 0;
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="lines">@@ -117,6 +127,7 @@
</span><span class="cx">     return toAPI(toImpl(itemRef)-&gt;data()-&gt;action());
</span><span class="cx"> #endif
</span><span class="cx"> #else
</span><ins>+    UNUSED_PARAM(itemRef);
</ins><span class="cx">     return toAPI(ContextMenuItemTagNoAction);
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="lines">@@ -126,6 +137,7 @@
</span><span class="cx"> #if ENABLE(CONTEXT_MENUS)
</span><span class="cx">     return toAPI(toImpl(itemRef)-&gt;data()-&gt;type());
</span><span class="cx"> #else
</span><ins>+    UNUSED_PARAM(itemRef);
</ins><span class="cx">     return toAPI(ActionType);
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="lines">@@ -135,6 +147,7 @@
</span><span class="cx"> #if ENABLE(CONTEXT_MENUS)
</span><span class="cx">     return toCopiedAPI(toImpl(itemRef)-&gt;data()-&gt;title().impl());
</span><span class="cx"> #else
</span><ins>+    UNUSED_PARAM(itemRef);
</ins><span class="cx">     return 0;
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="lines">@@ -144,6 +157,7 @@
</span><span class="cx"> #if ENABLE(CONTEXT_MENUS)
</span><span class="cx">     return toImpl(itemRef)-&gt;data()-&gt;enabled();
</span><span class="cx"> #else
</span><ins>+    UNUSED_PARAM(itemRef);
</ins><span class="cx">     return false;
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="lines">@@ -153,6 +167,7 @@
</span><span class="cx"> #if ENABLE(CONTEXT_MENUS)
</span><span class="cx">     return toImpl(itemRef)-&gt;data()-&gt;checked();
</span><span class="cx"> #else
</span><ins>+    UNUSED_PARAM(itemRef);
</ins><span class="cx">     return false;
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="lines">@@ -162,6 +177,7 @@
</span><span class="cx"> #if ENABLE(CONTEXT_MENUS)
</span><span class="cx">     return toAPI(toImpl(itemRef)-&gt;submenuItemsAsAPIArray().leakRef());
</span><span class="cx"> #else
</span><ins>+    UNUSED_PARAM(itemRef);
</ins><span class="cx">     return 0;
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="lines">@@ -171,6 +187,7 @@
</span><span class="cx"> #if ENABLE(CONTEXT_MENUS)
</span><span class="cx">     return toAPI(toImpl(itemRef)-&gt;userData());
</span><span class="cx"> #else
</span><ins>+    UNUSED_PARAM(itemRef);
</ins><span class="cx">     return 0;
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="lines">@@ -179,5 +196,8 @@
</span><span class="cx"> {
</span><span class="cx"> #if ENABLE(CONTEXT_MENUS)
</span><span class="cx">     toImpl(itemRef)-&gt;setUserData(toImpl(userDataRef));
</span><ins>+#else
+    UNUSED_PARAM(itemRef);
+    UNUSED_PARAM(userDataRef);
</ins><span class="cx"> #endif
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedAPIcWKDictionarycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/API/c/WKDictionary.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/API/c/WKDictionary.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/API/c/WKDictionary.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -37,6 +37,15 @@
</span><span class="cx">     return toAPI(ImmutableDictionary::APIType);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+WK_EXPORT WKDictionaryRef WKDictionaryCreate(const WKStringRef* keys, const WKTypeRef* values, size_t numberOfValues)
+{
+    ImmutableDictionary::MapType map;
+    for (size_t i = 0; i &lt; numberOfValues; ++i)
+        map.add(toImpl(keys[i])-&gt;string(), toImpl(values[i]));
+
+    return toAPI(ImmutableDictionary::create(std::move(map)).release().leakRef());
+}
+
</ins><span class="cx"> WKTypeRef WKDictionaryGetItemForKey(WKDictionaryRef dictionaryRef, WKStringRef key)
</span><span class="cx"> {
</span><span class="cx">     return toImpl(dictionaryRef)-&gt;get(toImpl(key)-&gt;string());
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedAPIcWKDictionaryh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/API/c/WKDictionary.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/API/c/WKDictionary.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/API/c/WKDictionary.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -36,6 +36,8 @@
</span><span class="cx"> 
</span><span class="cx"> WK_EXPORT WKTypeID WKDictionaryGetTypeID();
</span><span class="cx"> 
</span><ins>+WK_EXPORT WKDictionaryRef WKDictionaryCreate(const WKStringRef* keys, const WKTypeRef* values, size_t numberOfValues);
+
</ins><span class="cx"> WK_EXPORT WKTypeRef WKDictionaryGetItemForKey(WKDictionaryRef dictionary, WKStringRef key);
</span><span class="cx"> WK_EXPORT size_t WKDictionaryGetSize(WKDictionaryRef dictionary);
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedAPIcWKGeometrycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/API/c/WKGeometry.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/API/c/WKGeometry.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/API/c/WKGeometry.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -26,42 +26,39 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;WKGeometry.h&quot;
</span><span class="cx"> 
</span><ins>+#include &quot;APIGeometry.h&quot;
</ins><span class="cx"> #include &quot;WKAPICast.h&quot;
</span><del>-#include &quot;WebGeometry.h&quot;
</del><span class="cx"> 
</span><span class="cx"> using namespace WebKit;
</span><span class="cx"> 
</span><span class="cx"> WKTypeID WKSizeGetTypeID()
</span><span class="cx"> {
</span><del>-    return toAPI(WebSize::APIType);
</del><ins>+    return toAPI(API::Size::APIType);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WKTypeID WKPointGetTypeID()
</span><span class="cx"> {
</span><del>-    return toAPI(WebPoint::APIType);
</del><ins>+    return toAPI(API::Point::APIType);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WKTypeID WKRectGetTypeID()
</span><span class="cx"> {
</span><del>-    return toAPI(WebRect::APIType);
</del><ins>+    return toAPI(API::Rect::APIType);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WKPointRef WKPointCreate(WKPoint point)
</span><span class="cx"> {
</span><del>-    RefPtr&lt;WebPoint&gt; webPoint = WebPoint::create(point);
-    return toAPI(webPoint.release().leakRef());
</del><ins>+    return toAPI(API::Point::create(point).leakRef());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WKSizeRef WKSizeCreate(WKSize size)
</span><span class="cx"> {
</span><del>-    RefPtr&lt;WebSize&gt; webSize = WebSize::create(size);
-    return toAPI(webSize.release().leakRef());
</del><ins>+    return toAPI(API::Size::create(size).leakRef());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WKRectRef WKRectCreate(WKRect rect)
</span><span class="cx"> {
</span><del>-    RefPtr&lt;WebRect&gt; webRect = WebRect::create(rect);
-    return toAPI(webRect.release().leakRef());
</del><ins>+    return toAPI(API::Rect::create(rect).leakRef());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WKSize WKSizeGetValue(WKSizeRef size)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedAPIcWKNumbercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/API/c/WKNumber.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/API/c/WKNumber.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/API/c/WKNumber.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -26,19 +26,19 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;WKNumber.h&quot;
</span><span class="cx"> 
</span><ins>+#include &quot;APINumber.h&quot;
</ins><span class="cx"> #include &quot;WKAPICast.h&quot;
</span><del>-#include &quot;WebNumber.h&quot;
</del><span class="cx"> 
</span><span class="cx"> using namespace WebKit;
</span><span class="cx"> 
</span><span class="cx"> WKTypeID WKBooleanGetTypeID()
</span><span class="cx"> {
</span><del>-    return toAPI(WebBoolean::APIType);
</del><ins>+    return toAPI(API::Boolean::APIType);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WKBooleanRef WKBooleanCreate(bool value)
</span><span class="cx"> {
</span><del>-    RefPtr&lt;WebBoolean&gt; booleanObject = WebBoolean::create(value);
</del><ins>+    RefPtr&lt;API::Boolean&gt; booleanObject = API::Boolean::create(value);
</ins><span class="cx">     return toAPI(booleanObject.release().leakRef());
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -49,12 +49,12 @@
</span><span class="cx"> 
</span><span class="cx"> WKTypeID WKDoubleGetTypeID()
</span><span class="cx"> {
</span><del>-    return toAPI(WebDouble::APIType);
</del><ins>+    return toAPI(API::Double::APIType);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WKDoubleRef WKDoubleCreate(double value)
</span><span class="cx"> {
</span><del>-    RefPtr&lt;WebDouble&gt; doubleObject = WebDouble::create(value);
</del><ins>+    RefPtr&lt;API::Double&gt; doubleObject = API::Double::create(value);
</ins><span class="cx">     return toAPI(doubleObject.release().leakRef());
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -65,12 +65,12 @@
</span><span class="cx"> 
</span><span class="cx"> WKTypeID WKUInt64GetTypeID()
</span><span class="cx"> {
</span><del>-    return toAPI(WebUInt64::APIType);
</del><ins>+    return toAPI(API::UInt64::APIType);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WKUInt64Ref WKUInt64Create(uint64_t value)
</span><span class="cx"> {
</span><del>-    RefPtr&lt;WebUInt64&gt; uint64Object = WebUInt64::create(value);
</del><ins>+    RefPtr&lt;API::UInt64&gt; uint64Object = API::UInt64::create(value);
</ins><span class="cx">     return toAPI(uint64Object.release().leakRef());
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedAPIcWKSharedAPICasth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/API/c/WKSharedAPICast.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/API/c/WKSharedAPICast.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/API/c/WKSharedAPICast.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -26,6 +26,7 @@
</span><span class="cx"> #ifndef WKSharedAPICast_h
</span><span class="cx"> #define WKSharedAPICast_h
</span><span class="cx"> 
</span><ins>+#include &quot;APINumber.h&quot;
</ins><span class="cx"> #include &quot;ImageOptions.h&quot;
</span><span class="cx"> #include &quot;SameDocumentNavigationType.h&quot;
</span><span class="cx"> #include &quot;WKBase.h&quot;
</span><span class="lines">@@ -42,7 +43,6 @@
</span><span class="cx"> #include &quot;WebError.h&quot;
</span><span class="cx"> #include &quot;WebEvent.h&quot;
</span><span class="cx"> #include &quot;WebFindOptions.h&quot;
</span><del>-#include &quot;WebNumber.h&quot;
</del><span class="cx"> #include &quot;WebSecurityOrigin.h&quot;
</span><span class="cx"> #include &quot;WebString.h&quot;
</span><span class="cx"> #include &quot;WebURL.h&quot;
</span><span class="lines">@@ -60,6 +60,9 @@
</span><span class="cx"> 
</span><span class="cx"> namespace API {
</span><span class="cx"> class Array;
</span><ins>+class Point;
+class Rect;
+class Size;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="lines">@@ -75,11 +78,8 @@
</span><span class="cx"> class WebData;
</span><span class="cx"> class WebGraphicsContext;
</span><span class="cx"> class WebImage;
</span><del>-class WebPoint;
-class WebRect;
</del><span class="cx"> class WebSecurityOrigin;
</span><span class="cx"> class WebSerializedScriptValue;
</span><del>-class WebSize;
</del><span class="cx"> class WebURLRequest;
</span><span class="cx"> class WebURLResponse;
</span><span class="cx"> class WebUserContentURLPattern;
</span><span class="lines">@@ -92,25 +92,25 @@
</span><span class="cx">     template&lt;&gt; struct ImplTypeInfo&lt;TheImplType*&gt; { typedef TheAPIType APIType; };
</span><span class="cx"> 
</span><span class="cx"> WK_ADD_API_MAPPING(WKArrayRef, API::Array)
</span><del>-WK_ADD_API_MAPPING(WKBooleanRef, WebBoolean)
</del><ins>+WK_ADD_API_MAPPING(WKBooleanRef, API::Boolean)
</ins><span class="cx"> WK_ADD_API_MAPPING(WKCertificateInfoRef, WebCertificateInfo)
</span><span class="cx"> WK_ADD_API_MAPPING(WKConnectionRef, WebConnection)
</span><span class="cx"> WK_ADD_API_MAPPING(WKContextMenuItemRef, WebContextMenuItem)
</span><span class="cx"> WK_ADD_API_MAPPING(WKDataRef, WebData)
</span><span class="cx"> WK_ADD_API_MAPPING(WKDictionaryRef, ImmutableDictionary)
</span><del>-WK_ADD_API_MAPPING(WKDoubleRef, WebDouble)
</del><ins>+WK_ADD_API_MAPPING(WKDoubleRef, API::Double)
</ins><span class="cx"> WK_ADD_API_MAPPING(WKErrorRef, WebError)
</span><span class="cx"> WK_ADD_API_MAPPING(WKGraphicsContextRef, WebGraphicsContext)
</span><span class="cx"> WK_ADD_API_MAPPING(WKImageRef, WebImage)
</span><span class="cx"> WK_ADD_API_MAPPING(WKMutableDictionaryRef, MutableDictionary)
</span><del>-WK_ADD_API_MAPPING(WKPointRef, WebPoint)
-WK_ADD_API_MAPPING(WKRectRef, WebRect)
</del><ins>+WK_ADD_API_MAPPING(WKPointRef, API::Point)
+WK_ADD_API_MAPPING(WKRectRef, API::Rect)
</ins><span class="cx"> WK_ADD_API_MAPPING(WKSecurityOriginRef, WebSecurityOrigin)
</span><span class="cx"> WK_ADD_API_MAPPING(WKSerializedScriptValueRef, WebSerializedScriptValue)
</span><del>-WK_ADD_API_MAPPING(WKSizeRef, WebSize)
</del><ins>+WK_ADD_API_MAPPING(WKSizeRef, API::Size)
</ins><span class="cx"> WK_ADD_API_MAPPING(WKStringRef, WebString)
</span><span class="cx"> WK_ADD_API_MAPPING(WKTypeRef, API::Object)
</span><del>-WK_ADD_API_MAPPING(WKUInt64Ref, WebUInt64)
</del><ins>+WK_ADD_API_MAPPING(WKUInt64Ref, API::UInt64)
</ins><span class="cx"> WK_ADD_API_MAPPING(WKURLRef, WebURL)
</span><span class="cx"> WK_ADD_API_MAPPING(WKURLRequestRef, WebURLRequest)
</span><span class="cx"> WK_ADD_API_MAPPING(WKURLResponseRef, WebURLResponse)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedAPIcWKURLRequestcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/API/c/WKURLRequest.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/API/c/WKURLRequest.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/API/c/WKURLRequest.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -45,7 +45,7 @@
</span><span class="cx"> 
</span><span class="cx"> WKURLRef WKURLRequestCopyURL(WKURLRequestRef requestRef)
</span><span class="cx"> {
</span><del>-    return toCopiedURLAPI(toImpl(requestRef)-&gt;url());
</del><ins>+    return toCopiedURLAPI(toImpl(requestRef)-&gt;resourceRequest().url());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WKURLRef WKURLRequestCopyFirstPartyForCookies(WKURLRequestRef requestRef)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedAPIcmacWKCertificateInfoMacmm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/API/c/mac/WKCertificateInfoMac.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/API/c/mac/WKCertificateInfoMac.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/API/c/mac/WKCertificateInfoMac.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -29,6 +29,7 @@
</span><span class="cx"> #import &quot;WKAPICast.h&quot;
</span><span class="cx"> #import &quot;WebCertificateInfo.h&quot;
</span><span class="cx"> 
</span><ins>+using namespace WebCore;
</ins><span class="cx"> using namespace WebKit;
</span><span class="cx"> 
</span><span class="cx"> WKCertificateInfoRef WKCertificateInfoCreateWithCertficateChain(CFArrayRef certificateChain)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedAPIcmacWKURLRequestNSmm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/API/c/mac/WKURLRequestNS.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/API/c/mac/WKURLRequestNS.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/API/c/mac/WKURLRequestNS.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -29,6 +29,7 @@
</span><span class="cx"> #import &quot;WKAPICast.h&quot;
</span><span class="cx"> #import &quot;WebURLRequest.h&quot;
</span><span class="cx"> 
</span><ins>+using namespace WebCore;
</ins><span class="cx"> using namespace WebKit;
</span><span class="cx"> 
</span><span class="cx"> WKURLRequestRef WKURLRequestCreateWithNSURLRequest(NSURLRequest* urlRequest)
</span><span class="lines">@@ -40,5 +41,5 @@
</span><span class="cx"> 
</span><span class="cx"> NSURLRequest* WKURLRequestCopyNSURLRequest(WKURLRequestRef urlRequest)
</span><span class="cx"> {
</span><del>-    return [toImpl(urlRequest)-&gt;platformRequest() copy];
</del><ins>+    return [toImpl(urlRequest)-&gt;resourceRequest().nsURLRequest(DoNotUpdateHTTPBody) copy];
</ins><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedAPIcmacWKURLResponseNSmm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/API/c/mac/WKURLResponseNS.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/API/c/mac/WKURLResponseNS.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/API/c/mac/WKURLResponseNS.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -40,5 +40,5 @@
</span><span class="cx"> 
</span><span class="cx"> NSURLResponse* WKURLResponseCopyNSURLResponse(WKURLResponseRef urlResponse)
</span><span class="cx"> {
</span><del>-    return [toImpl(urlResponse)-&gt;platformResponse() copy];
</del><ins>+    return [toImpl(urlResponse)-&gt;resourceResponse().nsURLResponse() copy];
</ins><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedAPIArrayh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/APIArray.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/APIArray.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/APIArray.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -35,7 +35,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace API {
</span><span class="cx"> 
</span><del>-class Array FINAL : public TypedObject&lt;Object::Type::Array&gt; {
</del><ins>+class Array FINAL : public ObjectImpl&lt;Object::Type::Array&gt; {
</ins><span class="cx"> private:
</span><span class="cx">     template&lt;typename T&gt;
</span><span class="cx">     static inline const T* getObject(const RefPtr&lt;Object&gt;&amp; object) { return static_cast&lt;const T*&gt;(object.get()); }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedAPIFrameHandlecpp"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebKit2/Shared/APIFrameHandle.cpp (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/APIFrameHandle.cpp                                (rev 0)
+++ branches/jsCStack/Source/WebKit2/Shared/APIFrameHandle.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,45 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;APIFrameHandle.h&quot;
+
+namespace API {
+
+RefPtr&lt;FrameHandle&gt; FrameHandle::create(uint64_t frameID)
+{
+    return adoptRef(new FrameHandle(frameID));
+}
+
+FrameHandle::FrameHandle(uint64_t frameID)
+    : m_frameID(frameID)
+{
+}
+
+FrameHandle::~FrameHandle()
+{
+}
+
+} // namespace API
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedAPIFrameHandleh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebKit2/Shared/APIFrameHandle.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/APIFrameHandle.h                                (rev 0)
+++ branches/jsCStack/Source/WebKit2/Shared/APIFrameHandle.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,49 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef APIFrameHandle_h
+#define APIFrameHandle_h
+
+#include &quot;APIObject.h&quot;
+#include &lt;wtf/RefPtr.h&gt;
+
+namespace API {
+
+class FrameHandle : public ObjectImpl&lt;Object::Type::FrameHandle&gt; {
+public:
+    static RefPtr&lt;FrameHandle&gt; create(uint64_t frameID);
+    virtual ~FrameHandle();
+
+    uint64_t frameID() const { return m_frameID; }
+
+private:
+    explicit FrameHandle(uint64_t frameID);
+
+    uint64_t m_frameID;
+};
+
+} // namespace API
+
+#endif // APIFrameHandle_h
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedAPIGeometrycpp"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebKit2/Shared/APIGeometry.cpp (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/APIGeometry.cpp                                (rev 0)
+++ branches/jsCStack/Source/WebKit2/Shared/APIGeometry.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,96 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;APIGeometry.h&quot;
+
+#include &quot;ArgumentDecoder.h&quot;
+#include &quot;ArgumentEncoder.h&quot;
+
+namespace API {
+
+void Point::encode(CoreIPC::ArgumentEncoder&amp; encoder) const
+{
+    encoder &lt;&lt; m_point.x;
+    encoder &lt;&lt; m_point.y;
+}
+
+bool Point::decode(CoreIPC::ArgumentDecoder&amp; decoder, RefPtr&lt;API::Object&gt;&amp; result)
+{
+    WKPoint point;
+    if (!decoder.decode(point.x))
+        return false;
+    if (!decoder.decode(point.y))
+        return false;
+
+    result = Point::create(point);
+    return true;
+}
+
+
+void Size::encode(CoreIPC::ArgumentEncoder&amp; encoder) const
+{
+    encoder &lt;&lt; m_size.width;
+    encoder &lt;&lt; m_size.height;
+}
+
+bool Size::decode(CoreIPC::ArgumentDecoder&amp; decoder, RefPtr&lt;API::Object&gt;&amp; result)
+{
+    WKSize size;
+    if (!decoder.decode(size.width))
+        return false;
+    if (!decoder.decode(size.height))
+        return false;
+
+    result = Size::create(size);
+    return true;
+}
+
+
+void Rect::encode(CoreIPC::ArgumentEncoder&amp; encoder) const
+{
+    encoder &lt;&lt; m_rect.origin.x;
+    encoder &lt;&lt; m_rect.origin.y;
+    encoder &lt;&lt; m_rect.size.width;
+    encoder &lt;&lt; m_rect.size.height;
+}
+
+bool Rect::decode(CoreIPC::ArgumentDecoder&amp; decoder, RefPtr&lt;API::Object&gt;&amp; result)
+{
+    WKRect rect;
+    if (!decoder.decode(rect.origin.x))
+        return false;
+    if (!decoder.decode(rect.origin.y))
+        return false;
+    if (!decoder.decode(rect.size.width))
+        return false;
+    if (!decoder.decode(rect.size.height))
+        return false;
+
+    result = Rect::create(rect);
+    return true;
+}
+
+} // namespace API
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedAPIGeometryh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebKit2/Shared/APIGeometry.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/APIGeometry.h                                (rev 0)
+++ branches/jsCStack/Source/WebKit2/Shared/APIGeometry.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,105 @@
</span><ins>+/*
+ * Copyright (C) 2011 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef APIGeometry_h
+#define APIGeometry_h
+
+#include &quot;APIObject.h&quot;
+#include &quot;WKGeometry.h&quot;
+#include &lt;WebCore/FloatRect.h&gt;
+#include &lt;wtf/PassRefPtr.h&gt;
+
+namespace CoreIPC {
+class ArgumentDecoder;
+class ArgumentEncoder;
+}
+
+namespace API {
+
+class Size : public API::ObjectImpl&lt;API::Object::Type::Size&gt; {
+public:
+    static PassRefPtr&lt;Size&gt; create(const WKSize&amp; size)
+    {
+        return adoptRef(new Size(size));
+    }
+
+    const WKSize&amp; size() const { return m_size; }
+
+    void encode(CoreIPC::ArgumentEncoder&amp;) const;
+    static bool decode(CoreIPC::ArgumentDecoder&amp;, RefPtr&lt;API::Object&gt;&amp;);
+
+private:
+    explicit Size(const WKSize&amp; size)
+        : m_size(size)
+    {
+    }
+
+    WKSize m_size;
+};
+
+class Point : public API::ObjectImpl&lt;API::Object::Type::Point&gt; {
+public:
+    static PassRefPtr&lt;Point&gt; create(const WKPoint&amp; point)
+    {
+        return adoptRef(new Point(point));
+    }
+
+    const WKPoint&amp; point() const { return m_point; }
+
+    void encode(CoreIPC::ArgumentEncoder&amp;) const;
+    static bool decode(CoreIPC::ArgumentDecoder&amp;, RefPtr&lt;API::Object&gt;&amp;);
+
+private:
+    explicit Point(const WKPoint&amp; point)
+        : m_point(point)
+    { }
+
+    WKPoint m_point;
+};
+
+class Rect : public API::ObjectImpl&lt;API::Object::Type::Rect&gt; {
+public:
+    static PassRefPtr&lt;Rect&gt; create(const WKRect&amp; rect)
+    {
+        return adoptRef(new Rect(rect));
+    }
+
+    const WKRect&amp; rect() const { return m_rect; }
+
+    void encode(CoreIPC::ArgumentEncoder&amp;) const;
+    static bool decode(CoreIPC::ArgumentDecoder&amp;, RefPtr&lt;API::Object&gt;&amp;);
+
+private:
+    explicit Rect(const WKRect&amp; rect)
+        : m_rect(rect)
+    {
+    }
+
+    WKRect m_rect;
+};
+
+} // namespace API
+
+#endif // APIGeometry_h
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedAPINumberh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebKit2/Shared/APINumber.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/APINumber.h                                (rev 0)
+++ branches/jsCStack/Source/WebKit2/Shared/APINumber.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,76 @@
</span><ins>+/*
+ * Copyright (C) 2010 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef APINumber_h
+#define APINumber_h
+
+#include &quot;APIObject.h&quot;
+#include &quot;ArgumentDecoder.h&quot;
+#include &quot;ArgumentEncoder.h&quot;
+#include &lt;wtf/PassRefPtr.h&gt;
+
+namespace API {
+
+template&lt;typename NumberType, API::Object::Type APIObjectType&gt;
+class Number : public ObjectImpl&lt;APIObjectType&gt; {
+public:
+    static PassRefPtr&lt;Number&gt; create(NumberType value)
+    {
+        return adoptRef(new Number(value));
+    }
+
+    NumberType value() const { return m_value; }
+
+    void encode(CoreIPC::ArgumentEncoder&amp; encoder) const
+    {
+        encoder &lt;&lt; m_value;
+    }
+
+    static bool decode(CoreIPC::ArgumentDecoder&amp; decoder, RefPtr&lt;Object&gt;&amp; result)
+    {
+        NumberType value;
+        if (!decoder.decode(value))
+            return false;
+
+        result = Number::create(value);
+        return true;
+    }
+
+private:
+    explicit Number(NumberType value)
+        : m_value(value)
+    {
+    }
+
+    const NumberType m_value;
+};
+
+typedef Number&lt;bool, API::Object::Type::Boolean&gt; Boolean;
+typedef Number&lt;double, API::Object::Type::Double&gt; Double;
+typedef Number&lt;uint64_t, API::Object::Type::UInt64&gt; UInt64;
+
+} // namespace API
+
+#endif // APINumber_h
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedAPIObjecth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/APIObject.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/APIObject.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/APIObject.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -26,7 +26,9 @@
</span><span class="cx"> #ifndef APIObject_h
</span><span class="cx"> #define APIObject_h
</span><span class="cx"> 
</span><ins>+#include &lt;functional&gt;
</ins><span class="cx"> #include &lt;wtf/RefCounted.h&gt;
</span><ins>+#include &lt;wtf/RefPtr.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> #if PLATFORM(MAC)
</span><span class="cx"> #include &quot;WKFoundation.h&quot;
</span><span class="lines">@@ -62,7 +64,10 @@
</span><span class="cx">         Data,
</span><span class="cx">         Dictionary,
</span><span class="cx">         Error,
</span><ins>+        FrameHandle,
</ins><span class="cx">         Image,
</span><ins>+        PageGroupData,
+        PageHandle,
</ins><span class="cx">         ProtectionSpace,
</span><span class="cx">         RenderLayer,
</span><span class="cx">         RenderObject,
</span><span class="lines">@@ -198,18 +203,18 @@
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> template &lt;Object::Type ArgumentType&gt;
</span><del>-class TypedObject : public Object {
</del><ins>+class ObjectImpl : public Object {
</ins><span class="cx"> public:
</span><span class="cx">     static const Type APIType = ArgumentType;
</span><span class="cx"> 
</span><del>-    virtual ~TypedObject()
</del><ins>+    virtual ~ObjectImpl()
</ins><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx"> protected:
</span><span class="cx">     friend class Object;
</span><span class="cx"> 
</span><del>-    TypedObject()
</del><ins>+    ObjectImpl()
</ins><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedAPIPageHandlecpp"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebKit2/Shared/APIPageHandle.cpp (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/APIPageHandle.cpp                                (rev 0)
+++ branches/jsCStack/Source/WebKit2/Shared/APIPageHandle.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,45 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;APIPageHandle.h&quot;
+
+namespace API {
+
+RefPtr&lt;PageHandle&gt; PageHandle::create(uint64_t pageID)
+{
+    return adoptRef(new PageHandle(pageID));
+}
+
+PageHandle::PageHandle(uint64_t pageID)
+    : m_pageID(pageID)
+{
+}
+
+PageHandle::~PageHandle()
+{
+}
+
+} // namespace API
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedAPIPageHandleh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebKit2/Shared/APIPageHandle.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/APIPageHandle.h                                (rev 0)
+++ branches/jsCStack/Source/WebKit2/Shared/APIPageHandle.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,49 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef APIPageHandle_h
+#define APIPageHandle_h
+
+#include &quot;APIObject.h&quot;
+#include &lt;wtf/RefPtr.h&gt;
+
+namespace API {
+
+class PageHandle : public ObjectImpl&lt;Object::Type::PageHandle&gt; {
+public:
+    static RefPtr&lt;PageHandle&gt; create(uint64_t pageID);
+    virtual ~PageHandle();
+
+    uint64_t pageID() const { return m_pageID; }
+
+private:
+    explicit PageHandle(uint64_t pageID);
+
+    uint64_t m_pageID;
+};
+
+} // namespace API
+
+#endif // APIPageHandle_h
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedAsyncTaskh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebKit2/Shared/AsyncTask.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/AsyncTask.h                                (rev 0)
+++ branches/jsCStack/Source/WebKit2/Shared/AsyncTask.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,105 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef AsyncTask_h
+#define AsyncTask_h
+
+#include &lt;WebCore/CrossThreadCopier.h&gt;
+#include &lt;functional&gt;
+
+namespace WebKit {
+
+class AsyncTask {
+    WTF_MAKE_NONCOPYABLE(AsyncTask);
+public:
+    virtual ~AsyncTask() { }
+
+    virtual void performTask() = 0;
+
+protected:
+    explicit AsyncTask() { }
+};
+
+template &lt;typename T, typename... Arguments&gt;
+class AsyncTaskImpl FINAL : public AsyncTask {
+public:
+    AsyncTaskImpl(T* callee, void (T::*method)(Arguments...), Arguments&amp;&amp;... arguments)
+    {
+        m_taskFunction = [callee, method, arguments...]() {
+            (callee-&gt;*method)(arguments...);
+        };
+    }
+
+    virtual ~AsyncTaskImpl()
+    {
+    }
+
+private:
+    virtual void performTask() OVERRIDE
+    {
+        m_taskFunction();
+    }
+
+    std::function&lt;void()&gt; m_taskFunction;
+};
+
+template&lt;typename T&gt;
+std::unique_ptr&lt;AsyncTask&gt; createAsyncTask(
+    T&amp; callee,
+    void (T::*method)())
+{
+    return std::make_unique&lt;AsyncTaskImpl&lt;T&gt;&gt;(&amp;callee, method);
+}
+
+template&lt;typename T, typename P1, typename MP1&gt;
+std::unique_ptr&lt;AsyncTask&gt; createAsyncTask(
+    T&amp; callee,
+    void (T::*method)(MP1),
+    const P1&amp; parameter1)
+{
+    return std::make_unique&lt;AsyncTaskImpl&lt;T, MP1&gt;&gt;(
+        &amp;callee,
+        method,
+        WebCore::CrossThreadCopier&lt;P1&gt;::copy(parameter1));
+}
+
+template&lt;typename T, typename P1, typename MP1, typename P2, typename MP2&gt;
+std::unique_ptr&lt;AsyncTask&gt; createAsyncTask(
+    T&amp; callee,
+    void (T::*method)(MP1, MP2),
+    const P1&amp; parameter1,
+    const P2&amp; parameter2)
+{
+    return std::make_unique&lt;AsyncTaskImpl&lt;T, MP1, MP2&gt;&gt;(
+        &amp;callee,
+        method,
+        WebCore::CrossThreadCopier&lt;P1&gt;::copy(parameter1),
+        WebCore::CrossThreadCopier&lt;P2&gt;::copy(parameter2));
+
+}
+
+} // namespace WebKit
+
+#endif // AsyncTask_h
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedAuthenticationAuthenticationManagercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/Authentication/AuthenticationManager.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/Authentication/AuthenticationManager.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/Authentication/AuthenticationManager.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -61,7 +61,7 @@
</span><span class="cx"> AuthenticationManager::AuthenticationManager(ChildProcess* process)
</span><span class="cx">     : m_process(process)
</span><span class="cx"> {
</span><del>-    m_process-&gt;addMessageReceiver(Messages::AuthenticationManager::messageReceiverName(), this);
</del><ins>+    m_process-&gt;addMessageReceiver(Messages::AuthenticationManager::messageReceiverName(), *this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> uint64_t AuthenticationManager::establishIdentifierForChallenge(const WebCore::AuthenticationChallenge&amp; authenticationChallenge)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedAuthenticationAuthenticationManagerh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/Authentication/AuthenticationManager.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/Authentication/AuthenticationManager.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/Authentication/AuthenticationManager.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -34,13 +34,13 @@
</span><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><del>-    class AuthenticationChallenge;
-    class Credential;
</del><ins>+class AuthenticationChallenge;
+class CertificateInfo;
+class Credential;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><del>-class CertificateInfo;
</del><span class="cx"> class ChildProcess;
</span><span class="cx"> class Download;
</span><span class="cx"> class WebFrame;
</span><span class="lines">@@ -59,7 +59,7 @@
</span><span class="cx">     // Called for downloads with or without the NetworkProcess
</span><span class="cx">     void didReceiveAuthenticationChallenge(Download*, const WebCore::AuthenticationChallenge&amp;);
</span><span class="cx"> 
</span><del>-    void useCredentialForChallenge(uint64_t challengeID, const WebCore::Credential&amp;, const CertificateInfo&amp;);
</del><ins>+    void useCredentialForChallenge(uint64_t challengeID, const WebCore::Credential&amp;, const WebCore::CertificateInfo&amp;);
</ins><span class="cx">     void continueWithoutCredentialForChallenge(uint64_t challengeID);
</span><span class="cx">     void cancelChallenge(uint64_t challengeID);
</span><span class="cx">     
</span><span class="lines">@@ -69,7 +69,7 @@
</span><span class="cx">     // CoreIPC::MessageReceiver
</span><span class="cx">     virtual void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageDecoder&amp;) OVERRIDE;
</span><span class="cx"> 
</span><del>-    bool tryUseCertificateInfoForChallenge(const WebCore::AuthenticationChallenge&amp;, const CertificateInfo&amp;);
</del><ins>+    bool tryUseCertificateInfoForChallenge(const WebCore::AuthenticationChallenge&amp;, const WebCore::CertificateInfo&amp;);
</ins><span class="cx"> 
</span><span class="cx">     uint64_t establishIdentifierForChallenge(const WebCore::AuthenticationChallenge&amp;);
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedAuthenticationAuthenticationManagermessagesin"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/Authentication/AuthenticationManager.messages.in (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/Authentication/AuthenticationManager.messages.in        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/Authentication/AuthenticationManager.messages.in        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -21,7 +21,7 @@
</span><span class="cx"> # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx"> 
</span><span class="cx"> messages -&gt; AuthenticationManager {
</span><del>-    void UseCredentialForChallenge(uint64_t challengeID, WebCore::Credential credential, WebKit::CertificateInfo certificate);
</del><ins>+    void UseCredentialForChallenge(uint64_t challengeID, WebCore::Credential credential, WebCore::CertificateInfo certificate);
</ins><span class="cx">     void ContinueWithoutCredentialForChallenge(uint64_t challengeID);
</span><span class="cx">     void CancelChallenge(uint64_t challengeID);
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedAuthenticationmacAuthenticationManagermacmm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/Authentication/mac/AuthenticationManager.mac.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/Authentication/mac/AuthenticationManager.mac.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/Authentication/mac/AuthenticationManager.mac.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -28,9 +28,9 @@
</span><span class="cx"> 
</span><span class="cx"> #if HAVE(SEC_IDENTITY)
</span><span class="cx"> 
</span><del>-#include &quot;CertificateInfo.h&quot;
</del><span class="cx"> #include &lt;Security/SecIdentity.h&gt;
</span><span class="cx"> #include &lt;WebCore/AuthenticationChallenge.h&gt;
</span><ins>+#include &lt;WebCore/CertificateInfo.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> using namespace WebCore;
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedChildProcesscpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/ChildProcess.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/ChildProcess.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/ChildProcess.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -92,12 +92,12 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ChildProcess::addMessageReceiver(CoreIPC::StringReference messageReceiverName, CoreIPC::MessageReceiver* messageReceiver)
</del><ins>+void ChildProcess::addMessageReceiver(CoreIPC::StringReference messageReceiverName, CoreIPC::MessageReceiver&amp; messageReceiver)
</ins><span class="cx"> {
</span><span class="cx">     m_messageReceiverMap.addMessageReceiver(messageReceiverName, messageReceiver);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ChildProcess::addMessageReceiver(CoreIPC::StringReference messageReceiverName, uint64_t destinationID, CoreIPC::MessageReceiver* messageReceiver)
</del><ins>+void ChildProcess::addMessageReceiver(CoreIPC::StringReference messageReceiverName, uint64_t destinationID, CoreIPC::MessageReceiver&amp; messageReceiver)
</ins><span class="cx"> {
</span><span class="cx">     m_messageReceiverMap.addMessageReceiver(messageReceiverName, destinationID, messageReceiver);
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedChildProcessh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/ChildProcess.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/ChildProcess.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/ChildProcess.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -57,8 +57,8 @@
</span><span class="cx">     void disableTermination();
</span><span class="cx">     void enableTermination();
</span><span class="cx"> 
</span><del>-    void addMessageReceiver(CoreIPC::StringReference messageReceiverName, CoreIPC::MessageReceiver*);
-    void addMessageReceiver(CoreIPC::StringReference messageReceiverName, uint64_t destinationID, CoreIPC::MessageReceiver*);
</del><ins>+    void addMessageReceiver(CoreIPC::StringReference messageReceiverName, CoreIPC::MessageReceiver&amp;);
+    void addMessageReceiver(CoreIPC::StringReference messageReceiverName, uint64_t destinationID, CoreIPC::MessageReceiver&amp;);
</ins><span class="cx">     void removeMessageReceiver(CoreIPC::StringReference messageReceiverName, uint64_t destinationID);
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(MAC)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedChildProcessProxycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/ChildProcessProxy.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/ChildProcessProxy.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/ChildProcessProxy.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -85,12 +85,12 @@
</span><span class="cx">     return connection()-&gt;sendMessage(std::move(encoder), messageSendFlags);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ChildProcessProxy::addMessageReceiver(CoreIPC::StringReference messageReceiverName, CoreIPC::MessageReceiver* messageReceiver)
</del><ins>+void ChildProcessProxy::addMessageReceiver(CoreIPC::StringReference messageReceiverName, CoreIPC::MessageReceiver&amp; messageReceiver)
</ins><span class="cx"> {
</span><span class="cx">     m_messageReceiverMap.addMessageReceiver(messageReceiverName, messageReceiver);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ChildProcessProxy::addMessageReceiver(CoreIPC::StringReference messageReceiverName, uint64_t destinationID, CoreIPC::MessageReceiver* messageReceiver)
</del><ins>+void ChildProcessProxy::addMessageReceiver(CoreIPC::StringReference messageReceiverName, uint64_t destinationID, CoreIPC::MessageReceiver&amp; messageReceiver)
</ins><span class="cx"> {
</span><span class="cx">     m_messageReceiverMap.addMessageReceiver(messageReceiverName, destinationID, messageReceiver);
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedChildProcessProxyh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/ChildProcessProxy.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/ChildProcessProxy.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/ChildProcessProxy.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -56,8 +56,8 @@
</span><span class="cx">         return m_connection.get();
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    void addMessageReceiver(CoreIPC::StringReference messageReceiverName, CoreIPC::MessageReceiver*);
-    void addMessageReceiver(CoreIPC::StringReference messageReceiverName, uint64_t destinationID, CoreIPC::MessageReceiver*);
</del><ins>+    void addMessageReceiver(CoreIPC::StringReference messageReceiverName, CoreIPC::MessageReceiver&amp;);
+    void addMessageReceiver(CoreIPC::StringReference messageReceiverName, uint64_t destinationID, CoreIPC::MessageReceiver&amp;);
</ins><span class="cx">     void removeMessageReceiver(CoreIPC::StringReference messageReceiverName, uint64_t destinationID);
</span><span class="cx"> 
</span><span class="cx">     bool isValid() const { return m_connection; }
</span><span class="lines">@@ -66,6 +66,8 @@
</span><span class="cx"> 
</span><span class="cx">     PlatformProcessIdentifier processIdentifier() const { return m_processLauncher-&gt;processIdentifier(); }
</span><span class="cx"> 
</span><ins>+    bool sendMessage(std::unique_ptr&lt;CoreIPC::MessageEncoder&gt;, unsigned messageSendFlags);
+
</ins><span class="cx"> protected:
</span><span class="cx">     void clearConnection();
</span><span class="cx">     void abortProcessLaunchIfNeeded();
</span><span class="lines">@@ -81,8 +83,6 @@
</span><span class="cx">     virtual void connectionWillOpen(CoreIPC::Connection*);
</span><span class="cx">     virtual void connectionWillClose(CoreIPC::Connection*);
</span><span class="cx"> 
</span><del>-    bool sendMessage(std::unique_ptr&lt;CoreIPC::MessageEncoder&gt;, unsigned messageSendFlags);
-
</del><span class="cx">     Vector&lt;std::pair&lt;std::unique_ptr&lt;CoreIPC::MessageEncoder&gt;, unsigned&gt;&gt; m_pendingMessages;
</span><span class="cx">     RefPtr&lt;ProcessLauncher&gt; m_processLauncher;
</span><span class="cx">     RefPtr&lt;CoreIPC::Connection&gt; m_connection;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedCocoaAPIObjectmm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/Cocoa/APIObject.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/Cocoa/APIObject.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/Cocoa/APIObject.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -32,7 +32,9 @@
</span><span class="cx"> #import &quot;WKBackForwardListItemInternal.h&quot;
</span><span class="cx"> #import &quot;WKBrowsingContextControllerInternal.h&quot;
</span><span class="cx"> #import &quot;WKBrowsingContextGroupInternal.h&quot;
</span><ins>+#import &quot;WKConnectionInternal.h&quot;
</ins><span class="cx"> #import &quot;WKNSArray.h&quot;
</span><ins>+#import &quot;WKNSData.h&quot;
</ins><span class="cx"> #import &quot;WKNSDictionary.h&quot;
</span><span class="cx"> #import &quot;WKNSError.h&quot;
</span><span class="cx"> #import &quot;WKNSString.h&quot;
</span><span class="lines">@@ -41,6 +43,12 @@
</span><span class="cx"> #import &quot;WKNSURLProtectionSpace.h&quot;
</span><span class="cx"> #import &quot;WKNavigationDataInternal.h&quot;
</span><span class="cx"> #import &quot;WKProcessGroupInternal.h&quot;
</span><ins>+#import &quot;WKWebProcessPlugInBrowserContextControllerInternal.h&quot;
+#import &quot;WKWebProcessPlugInFrameInternal.h&quot;
+#import &quot;WKWebProcessPlugInHitTestResultInternal.h&quot;
+#import &quot;WKWebProcessPlugInInternal.h&quot;
+#import &quot;WKWebProcessPlugInNodeHandleInternal.h&quot;
+#import &quot;WKWebProcessPlugInScriptWorldInternal.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> namespace API {
</span><span class="cx"> 
</span><span class="lines">@@ -79,10 +87,26 @@
</span><span class="cx">         wrapper = [WKBackForwardListItem alloc];
</span><span class="cx">         break;
</span><span class="cx"> 
</span><ins>+    case Type::Bundle:
+        wrapper = [WKWebProcessPlugInController alloc];
+        break;
+
+    case Type::BundlePage:
+        wrapper = [WKWebProcessPlugInBrowserContextController alloc];
+        break;
+
+    case Type::Connection:
+        wrapper = NSAllocateObject([WKConnection self], size, nullptr);
+        break;
+
</ins><span class="cx">     case Type::Context:
</span><span class="cx">         wrapper = [WKProcessGroup alloc];
</span><span class="cx">         break;
</span><span class="cx"> 
</span><ins>+    case Type::Data:
+        wrapper = [WKNSData alloc];
+        break;
+
</ins><span class="cx">     case Type::Dictionary:
</span><span class="cx">         wrapper = [WKNSDictionary alloc];
</span><span class="cx">         break;
</span><span class="lines">@@ -115,6 +139,22 @@
</span><span class="cx">         wrapper = NSAllocateObject([WKNSURL class], size, nullptr);
</span><span class="cx">         break;
</span><span class="cx"> 
</span><ins>+    case Type::BundleFrame:
+        wrapper = [WKWebProcessPlugInFrame alloc];
+        break;
+
+    case Type::BundleHitTestResult:
+        wrapper = [WKWebProcessPlugInHitTestResult alloc];
+        break;
+
+    case Type::BundleNodeHandle:
+        wrapper = [WKWebProcessPlugInNodeHandle alloc];
+        break;
+
+    case Type::BundleScriptWorld:
+        wrapper = [WKWebProcessPlugInScriptWorld alloc];
+        break;
+
</ins><span class="cx">     default:
</span><span class="cx">         wrapper = NSAllocateObject([WKObject class], size, nullptr);
</span><span class="cx">         break;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedCocoaWKNSDatah"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebKit2/Shared/Cocoa/WKNSData.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/Cocoa/WKNSData.h                                (rev 0)
+++ branches/jsCStack/Source/WebKit2/Shared/Cocoa/WKNSData.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,46 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;WKFoundation.h&quot;
+
+#if WK_API_ENABLED
+
+#import &quot;WKObject.h&quot;
+#import &quot;WebData.h&quot;
+
+namespace WebKit {
+
+inline NSData *wrapper(WebData&amp; data)
+{
+    ASSERT([data.wrapper() isKindOfClass:[NSData self]]);
+    return (NSData *)data.wrapper();
+}
+
+}
+
+@interface WKNSData : NSData &lt;WKObject&gt;
+@end
+
+#endif // WK_API_ENABLED
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedCocoaWKNSDatamm"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebKit2/Shared/Cocoa/WKNSData.mm (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/Cocoa/WKNSData.mm                                (rev 0)
+++ branches/jsCStack/Source/WebKit2/Shared/Cocoa/WKNSData.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,72 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;WKNSData.h&quot;
+
+#if WK_API_ENABLED
+
+using namespace WebKit;
+
+@implementation WKNSData {
+    API::ObjectStorage&lt;WebData&gt; _data;
+}
+
+- (void)dealloc
+{
+    _data-&gt;~WebData();
+
+    [super dealloc];
+}
+
+#pragma mark NSData primitive methods
+
+- (NSUInteger)length
+{
+    return _data-&gt;size();
+}
+
+- (const void*)bytes
+{
+    return _data-&gt;bytes();
+}
+
+#pragma mark NSCopying protocol implementation
+
+- (id)copyWithZone:(NSZone *)zone
+{
+    return [self retain];
+}
+
+#pragma mark WKObject protocol implementation
+
+- (API::Object&amp;)_apiObject
+{
+    return *_data;
+}
+
+@end
+
+#endif // WK_API_ENABLED
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedCocoaWKNSDictionarymm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/Cocoa/WKNSDictionary.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/Cocoa/WKNSDictionary.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/Cocoa/WKNSDictionary.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -82,7 +82,7 @@
</span><span class="cx">         return [self retain];
</span><span class="cx"> 
</span><span class="cx">     auto map = _dictionary-&gt;map();
</span><del>-    return ImmutableDictionary::adopt(map).leakRef()-&gt;wrapper();
</del><ins>+    return ImmutableDictionary::create(std::move(map)).release().leakRef()-&gt;wrapper();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #pragma mark WKObject protocol implementation
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedImmutableDictionarycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/ImmutableDictionary.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/ImmutableDictionary.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/ImmutableDictionary.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -31,15 +31,21 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><del>-ImmutableDictionary::ImmutableDictionary()
</del><ins>+RefPtr&lt;ImmutableDictionary&gt; ImmutableDictionary::create()
</ins><span class="cx"> {
</span><ins>+    return create({ });
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-ImmutableDictionary::ImmutableDictionary(MapType&amp; map)
</del><ins>+RefPtr&lt;ImmutableDictionary&gt; ImmutableDictionary::create(MapType map)
</ins><span class="cx"> {
</span><del>-    m_map.swap(map);
</del><ins>+    return adoptRef(new ImmutableDictionary(std::move(map)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+ImmutableDictionary::ImmutableDictionary(MapType map)
+    : m_map(std::move(map))
+{
+}
+
</ins><span class="cx"> ImmutableDictionary::~ImmutableDictionary()
</span><span class="cx"> {
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedImmutableDictionaryh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/ImmutableDictionary.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/ImmutableDictionary.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/ImmutableDictionary.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -40,18 +40,12 @@
</span><span class="cx"> 
</span><span class="cx"> // ImmutableDictionary - An immutable dictionary type suitable for vending to an API.
</span><span class="cx"> 
</span><del>-class ImmutableDictionary : public API::TypedObject&lt;API::Object::Type::Dictionary&gt; {
</del><ins>+class ImmutableDictionary : public API::ObjectImpl&lt;API::Object::Type::Dictionary&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     typedef HashMap&lt;String, RefPtr&lt;API::Object&gt;&gt; MapType;
</span><span class="cx"> 
</span><del>-    static PassRefPtr&lt;ImmutableDictionary&gt; create()
-    {
-        return adoptRef(new ImmutableDictionary);
-    }
-    static PassRefPtr&lt;ImmutableDictionary&gt; adopt(MapType&amp; map)
-    {
-        return adoptRef(new ImmutableDictionary(map));
-    }
</del><ins>+    static RefPtr&lt;ImmutableDictionary&gt; create();
+    static RefPtr&lt;ImmutableDictionary&gt; create(MapType);
</ins><span class="cx"> 
</span><span class="cx">     virtual ~ImmutableDictionary();
</span><span class="cx"> 
</span><span class="lines">@@ -89,8 +83,7 @@
</span><span class="cx">     const MapType&amp; map() const { return m_map; }
</span><span class="cx"> 
</span><span class="cx"> protected:
</span><del>-    ImmutableDictionary();
-    explicit ImmutableDictionary(MapType&amp;);
</del><ins>+    explicit ImmutableDictionary(MapType);
</ins><span class="cx"> 
</span><span class="cx">     MapType m_map;
</span><span class="cx"> };
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedMutableDictionarycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/MutableDictionary.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/MutableDictionary.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/MutableDictionary.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -29,6 +29,7 @@
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><span class="cx"> MutableDictionary::MutableDictionary()
</span><ins>+    : ImmutableDictionary({ })
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedNetworkNetworkProcessCreationParameterscpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -54,6 +54,9 @@
</span><span class="cx">     encoder &lt;&lt; httpProxy;
</span><span class="cx">     encoder &lt;&lt; httpsProxy;
</span><span class="cx"> #endif
</span><ins>+#if USE(SOUP)
+    encoder &lt;&lt; ignoreTLSErrors;
+#endif
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool NetworkProcessCreationParameters::decode(CoreIPC::ArgumentDecoder&amp; decoder, NetworkProcessCreationParameters&amp; result)
</span><span class="lines">@@ -87,6 +90,11 @@
</span><span class="cx">         return false;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if USE(SOUP)
+    if (!decoder.decode(result.ignoreTLSErrors))
+        return false;
+#endif
+
</ins><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedNetworkNetworkProcessCreationParametersh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -67,6 +67,10 @@
</span><span class="cx">     String httpProxy;
</span><span class="cx">     String httpsProxy;
</span><span class="cx"> #endif
</span><ins>+
+#if USE(SOUP)
+    bool ignoreTLSErrors;
+#endif
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedPluginsNetscapePluginInformationcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/Plugins/Netscape/PluginInformation.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/Plugins/Netscape/PluginInformation.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/Plugins/Netscape/PluginInformation.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -28,10 +28,10 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(NETSCAPE_PLUGIN_API)
</span><span class="cx"> 
</span><ins>+#include &quot;APINumber.h&quot;
</ins><span class="cx"> #include &quot;PluginInfoStore.h&quot;
</span><span class="cx"> #include &quot;PluginModuleInfo.h&quot;
</span><span class="cx"> #include &quot;WKAPICast.h&quot;
</span><del>-#include &quot;WebNumber.h&quot;
</del><span class="cx"> #include &quot;WebString.h&quot;
</span><span class="cx"> #include &quot;WebURL.h&quot;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="lines">@@ -113,7 +113,7 @@
</span><span class="cx"> #if ENABLE(NETSCAPE_PLUGIN_API)
</span><span class="cx">     map.set(pluginInformationPathKey(), WebString::create(plugin.path));
</span><span class="cx">     map.set(pluginInformationDisplayNameKey(), WebString::create(plugin.info.name));
</span><del>-    map.set(pluginInformationDefaultLoadPolicyKey(), WebUInt64::create(toWKPluginLoadPolicy(PluginInfoStore::defaultLoadPolicyForPlugin(plugin))));
</del><ins>+    map.set(pluginInformationDefaultLoadPolicyKey(), API::UInt64::create(toWKPluginLoadPolicy(PluginInfoStore::defaultLoadPolicyForPlugin(plugin))));
</ins><span class="cx"> 
</span><span class="cx">     getPlatformPluginModuleInformation(plugin, map);
</span><span class="cx"> #else
</span><span class="lines">@@ -127,7 +127,7 @@
</span><span class="cx">     ImmutableDictionary::MapType map;
</span><span class="cx">     getPluginModuleInformation(plugin, map);
</span><span class="cx"> 
</span><del>-    return ImmutableDictionary::adopt(map);
</del><ins>+    return ImmutableDictionary::create(std::move(map));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> PassRefPtr&lt;ImmutableDictionary&gt; createPluginInformationDictionary(const PluginModuleInfo&amp; plugin, const String&amp; frameURLString, const String&amp; mimeType, const String&amp; pageURLString, const String&amp; pluginspageAttributeURLString, const String&amp; pluginURLString, bool replacementObscured)
</span><span class="lines">@@ -145,9 +145,9 @@
</span><span class="cx">         map.set(pluginInformationPluginspageAttributeURLKey(), WebURL::create(pluginspageAttributeURLString));
</span><span class="cx">     if (!pluginURLString.isEmpty())
</span><span class="cx">         map.set(pluginInformationPluginURLKey(), WebURL::create(pluginURLString));
</span><del>-    map.set(plugInInformationReplacementObscuredKey(), WebBoolean::create(replacementObscured));
</del><ins>+    map.set(plugInInformationReplacementObscuredKey(), API::Boolean::create(replacementObscured));
</ins><span class="cx"> 
</span><del>-    return ImmutableDictionary::adopt(map);
</del><ins>+    return ImmutableDictionary::create(std::move(map));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> PassRefPtr&lt;ImmutableDictionary&gt; createPluginInformationDictionary(const String&amp; mimeType, const String&amp; frameURLString, const String&amp; pageURLString)
</span><span class="lines">@@ -161,7 +161,7 @@
</span><span class="cx">     if (!pageURLString.isEmpty())
</span><span class="cx">         map.set(pluginInformationPageURLKey(), WebURL::create(pageURLString));
</span><span class="cx"> 
</span><del>-    return ImmutableDictionary::adopt(map);
</del><ins>+    return ImmutableDictionary::create(std::move(map));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if !PLATFORM(MAC)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedPluginsNetscapemacPluginInformationMacmm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/Plugins/Netscape/mac/PluginInformationMac.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/Plugins/Netscape/mac/PluginInformationMac.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/Plugins/Netscape/mac/PluginInformationMac.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -28,10 +28,10 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(NETSCAPE_PLUGIN_API)
</span><span class="cx"> 
</span><ins>+#import &quot;APINumber.h&quot;
</ins><span class="cx"> #import &quot;PluginModuleInfo.h&quot;
</span><span class="cx"> #import &quot;PluginSandboxProfile.h&quot;
</span><span class="cx"> #import &quot;StringUtilities.h&quot;
</span><del>-#import &quot;WebNumber.h&quot;
</del><span class="cx"> #import &quot;WebString.h&quot;
</span><span class="cx"> #import &lt;WebKitSystemInterface.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -42,8 +42,8 @@
</span><span class="cx">     map.set(pluginInformationBundleIdentifierKey(), WebString::create(plugin.bundleIdentifier));
</span><span class="cx">     map.set(pluginInformationBundleVersionKey(), WebString::create(plugin.versionString));
</span><span class="cx">     map.set(pluginInformationBundleShortVersionKey(), WebString::create(plugin.shortVersionString));
</span><del>-    map.set(pluginInformationUpdatePastLastBlockedVersionIsKnownAvailableKey(), WebBoolean::create(WKIsPluginUpdateAvailable(nsStringFromWebCoreString(plugin.bundleIdentifier))));
-    map.set(pluginInformationHasSandboxProfileKey(), WebBoolean::create(pluginHasSandboxProfile(plugin.bundleIdentifier)));
</del><ins>+    map.set(pluginInformationUpdatePastLastBlockedVersionIsKnownAvailableKey(), API::Boolean::create(WKIsPluginUpdateAvailable(nsStringFromWebCoreString(plugin.bundleIdentifier))));
+    map.set(pluginInformationHasSandboxProfileKey(), API::Boolean::create(pluginHasSandboxProfile(plugin.bundleIdentifier)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedSecurityOriginDatacpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/SecurityOriginData.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/SecurityOriginData.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/SecurityOriginData.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -29,6 +29,7 @@
</span><span class="cx"> #include &quot;APIArray.h&quot;
</span><span class="cx"> #include &quot;WebCoreArgumentCoders.h&quot;
</span><span class="cx"> #include &quot;WebSecurityOrigin.h&quot;
</span><ins>+#include &lt;wtf/text/CString.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> using namespace WebCore;
</span><span class="cx"> 
</span><span class="lines">@@ -69,6 +70,17 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+SecurityOriginData SecurityOriginData::isolatedCopy() const
+{
+    SecurityOriginData result;
+
+    result.protocol = protocol.isolatedCopy();
+    result.host = host.isolatedCopy();
+    result.port = port;
+
+    return result;
+}
+
</ins><span class="cx"> void performAPICallbackWithSecurityOriginDataVector(const Vector&lt;SecurityOriginData&gt;&amp; originDatas, ArrayCallback* callback)
</span><span class="cx"> {
</span><span class="cx">     if (!callback) {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedSecurityOriginDatah"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/SecurityOriginData.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/SecurityOriginData.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/SecurityOriginData.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -52,6 +52,8 @@
</span><span class="cx">     String protocol;
</span><span class="cx">     String host;
</span><span class="cx">     int port;
</span><ins>+
+    SecurityOriginData isolatedCopy() const;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> void performAPICallbackWithSecurityOriginDataVector(const Vector&lt;SecurityOriginData&gt;&amp;, ArrayCallback*);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedUserDatacpp"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebKit2/Shared/UserData.cpp (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/UserData.cpp                                (rev 0)
+++ branches/jsCStack/Source/WebKit2/Shared/UserData.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,301 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;UserData.h&quot;
+
+#include &quot;APIArray.h&quot;
+#include &quot;APIFrameHandle.h&quot;
+#include &quot;APIGeometry.h&quot;
+#include &quot;APINumber.h&quot;
+#include &quot;ArgumentCoders.h&quot;
+#include &quot;ArgumentEncoder.h&quot;
+#include &quot;MutableDictionary.h&quot;
+#include &quot;WebSerializedScriptValue.h&quot;
+#include &quot;WebString.h&quot;
+#include &quot;WebURL.h&quot;
+
+namespace WebKit {
+
+UserData::UserData(API::Object* object)
+    : m_object(object)
+{
+}
+
+UserData::~UserData()
+{
+}
+
+RefPtr&lt;API::Object&gt; UserData::transform(API::Object* object, const std::function&lt;RefPtr&lt;API::Object&gt; (const API::Object&amp;)&gt; transformer)
+{
+    if (!object)
+        return nullptr;
+
+    if (object-&gt;type() == API::Object::Type::Array) {
+        auto&amp; array = static_cast&lt;API::Array&amp;&gt;(*object);
+
+        Vector&lt;RefPtr&lt;API::Object&gt;&gt; elements;
+        elements.reserveInitialCapacity(array.elements().size());
+        for (const auto&amp; element : array.elements())
+            elements.uncheckedAppend(transform(element.get(), transformer));
+
+        return API::Array::create(std::move(elements));
+    }
+
+    if (object-&gt;type() == API::Object::Type::Dictionary) {
+        auto&amp; dictionary = static_cast&lt;ImmutableDictionary&amp;&gt;(*object);
+
+        ImmutableDictionary::MapType map;
+        for (const auto&amp; keyValuePair : dictionary.map())
+            map.add(keyValuePair.key, transform(keyValuePair.value.get(), transformer));
+
+        return ImmutableDictionary::create(std::move(map));
+    }
+
+    if (auto transformedObject = transformer(*object))
+        return transformedObject;
+
+    return object;
+}
+
+void UserData::encode(CoreIPC::ArgumentEncoder&amp; encoder) const
+{
+    encode(encoder, m_object.get());
+}
+
+bool UserData::decode(CoreIPC::ArgumentDecoder&amp; decoder, UserData&amp; userData)
+{
+    return decode(decoder, userData.m_object);
+}
+
+void UserData::encode(CoreIPC::ArgumentEncoder&amp; encoder, const API::Object* object) const
+{
+    if (!object) {
+        encoder.encodeEnum(API::Object::Type::Null);
+        return;
+    }
+
+    encode(encoder, *object);
+}
+
+void UserData::encode(CoreIPC::ArgumentEncoder&amp; encoder, const API::Object&amp; object) const
+{
+    API::Object::Type type = object.type();
+    encoder.encodeEnum(type);
+
+    switch (object.type()) {
+    case API::Object::Type::Array: {
+        auto&amp; array = static_cast&lt;const API::Array&amp;&gt;(object);
+        encoder &lt;&lt; static_cast&lt;uint64_t&gt;(array.size());
+        for (size_t i = 0; i &lt; array.size(); ++i)
+            encode(encoder, array.at(i));
+        break;
+    }
+
+    case API::Object::Type::Boolean:
+        static_cast&lt;const API::Boolean&amp;&gt;(object).encode(encoder);
+        break;
+
+    case API::Object::Type::Dictionary: {
+        auto&amp; dictionary = static_cast&lt;const ImmutableDictionary&amp;&gt;(object);
+        auto&amp; map = dictionary.map();
+
+        encoder &lt;&lt; map.size();
+        for (const auto&amp; keyValuePair : map) {
+            encoder &lt;&lt; keyValuePair.key;
+            encode(encoder, keyValuePair.value.get());
+        }
+        break;
+    }
+
+    case API::Object::Type::FrameHandle: {
+        auto&amp; frameHandle = static_cast&lt;const API::FrameHandle&amp;&gt;(object);
+        encoder &lt;&lt; frameHandle.frameID();
+        break;
+    }
+
+    case API::Object::Type::Point:
+        static_cast&lt;const API::Point&amp;&gt;(object).encode(encoder);
+
+    case API::Object::Type::Rect:
+        static_cast&lt;const API::Rect&amp;&gt;(object).encode(encoder);
+
+    case API::Object::Type::SerializedScriptValue: {
+        auto&amp; serializedScriptValue = static_cast&lt;const WebSerializedScriptValue&amp;&gt;(object);
+        encoder &lt;&lt; serializedScriptValue.dataReference();
+        break;
+    }
+
+    case API::Object::Type::Size:
+        static_cast&lt;const API::Size&amp;&gt;(object).encode(encoder);
+        break;
+
+    case API::Object::Type::String: {
+        auto&amp; string = static_cast&lt;const WebString&amp;&gt;(object);
+        encoder &lt;&lt; string.string();
+        break;
+    }
+
+    case API::Object::Type::URL: {
+        auto&amp; url = static_cast&lt;const WebURL&amp;&gt;(object);
+        encoder &lt;&lt; url.string();
+        break;
+    }
+
+    case API::Object::Type::UInt64:
+        static_cast&lt;const API::UInt64&amp;&gt;(object).encode(encoder);
+        break;
+
+    default:
+        ASSERT_NOT_REACHED();
+    }
+}
+
+bool UserData::decode(CoreIPC::ArgumentDecoder&amp; decoder, RefPtr&lt;API::Object&gt;&amp; result)
+{
+    API::Object::Type type;
+    if (!decoder.decodeEnum(type))
+        return false;
+
+    switch (type) {
+    case API::Object::Type::Array: {
+        uint64_t size;
+        if (!decoder.decode(size))
+            return false;
+
+        Vector&lt;RefPtr&lt;API::Object&gt;&gt; elements;
+        for (size_t i = 0; i &lt; size; ++i) {
+            RefPtr&lt;API::Object&gt; element;
+            if (!decode(decoder, element))
+                return false;
+
+            elements.append(std::move(element));
+        }
+
+        result = API::Array::create(std::move(elements));
+        break;
+    }
+
+    case API::Object::Type::Boolean:
+        if (!API::Boolean::decode(decoder, result))
+            return false;
+        break;
+
+    case API::Object::Type::Dictionary: {
+        uint64_t size;
+        if (!decoder.decode(size))
+            return false;
+
+        ImmutableDictionary::MapType map;
+        for (size_t i = 0; i &lt; size; ++i) {
+            String key;
+            if (!decoder.decode(key))
+                return false;
+
+            RefPtr&lt;API::Object&gt; value;
+            if (!decode(decoder, value))
+                return false;
+
+            if (!map.add(std::move(key), std::move(value)).isNewEntry)
+                return false;
+        }
+
+        result = ImmutableDictionary::create(std::move(map));
+        break;
+    }
+
+    case API::Object::Type::Double:
+        if (!API::Double::decode(decoder, result))
+            return false;
+        break;
+
+    case API::Object::Type::FrameHandle: {
+        uint64_t frameID;
+        if (!decoder.decode(frameID))
+            return false;
+
+        result = API::FrameHandle::create(frameID);
+        break;
+    }
+
+    case API::Object::Type::Null:
+        result = nullptr;
+        break;
+        
+    case API::Object::Type::Point:
+        if (!API::Point::decode(decoder, result))
+            return false;
+        break;
+
+    case API::Object::Type::Rect:
+        if (!API::Rect::decode(decoder, result))
+            return false;
+        break;
+
+    case API::Object::Type::SerializedScriptValue: {
+        CoreIPC::DataReference dataReference;
+        if (!decoder.decode(dataReference))
+            return false;
+
+        auto vector = dataReference.vector();
+        result = WebSerializedScriptValue::adopt(vector);
+        break;
+    }
+
+    case API::Object::Type::Size:
+        if (!API::Size::decode(decoder, result))
+            return false;
+        break;
+
+    case API::Object::Type::String: {
+        String string;
+        if (!decoder.decode(string))
+            return false;
+
+        result = WebString::create(string);
+        break;
+    }
+
+    case API::Object::Type::URL: {
+        String string;
+        if (!decoder.decode(string))
+            return false;
+        result = WebURL::create(string);
+        break;
+    }
+
+    case API::Object::Type::UInt64:
+        if (!API::UInt64::decode(decoder, result))
+            return false;
+        break;
+
+    default:
+        ASSERT_NOT_REACHED();
+    }
+
+    return true;
+}
+
+} // namespace WebKit
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedUserDatah"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebKit2/Shared/UserData.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/UserData.h                                (rev 0)
+++ branches/jsCStack/Source/WebKit2/Shared/UserData.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,66 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef UserData_h
+#define UserData_h
+
+#include &lt;functional&gt;
+#include &lt;wtf/RefPtr.h&gt;
+
+namespace API {
+class Object;
+}
+
+namespace CoreIPC {
+class ArgumentEncoder;
+class ArgumentDecoder;
+}
+
+namespace WebKit {
+
+class UserData {
+public:
+    explicit UserData(API::Object* = nullptr);
+    ~UserData();
+
+    static RefPtr&lt;API::Object&gt; transform(API::Object*, const std::function&lt;RefPtr&lt;API::Object&gt; (const API::Object&amp;)&gt; transformer);
+
+    API::Object* object() const { return m_object.get(); }
+
+    void encode(CoreIPC::ArgumentEncoder&amp;) const;
+    static bool decode(CoreIPC::ArgumentDecoder&amp;, UserData&amp;);
+
+private:
+    void encode(CoreIPC::ArgumentEncoder&amp;, const API::Object*) const;
+    void encode(CoreIPC::ArgumentEncoder&amp;, const API::Object&amp;) const;
+
+    static bool decode(CoreIPC::ArgumentDecoder&amp;, RefPtr&lt;API::Object&gt;&amp;);
+
+    RefPtr&lt;API::Object&gt; m_object;
+};
+
+} // namespace WebKit
+
+#endif // UserData_h
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedUserMessageCodersh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/UserMessageCoders.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/UserMessageCoders.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/UserMessageCoders.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -27,6 +27,8 @@
</span><span class="cx"> #define UserMessageCoders_h
</span><span class="cx"> 
</span><span class="cx"> #include &quot;APIArray.h&quot;
</span><ins>+#include &quot;APIGeometry.h&quot;
+#include &quot;APINumber.h&quot;
</ins><span class="cx"> #include &quot;ArgumentDecoder.h&quot;
</span><span class="cx"> #include &quot;ArgumentEncoder.h&quot;
</span><span class="cx"> #include &quot;DataReference.h&quot;
</span><span class="lines">@@ -36,9 +38,7 @@
</span><span class="cx"> #include &quot;WebCoreArgumentCoders.h&quot;
</span><span class="cx"> #include &quot;WebData.h&quot;
</span><span class="cx"> #include &quot;WebError.h&quot;
</span><del>-#include &quot;WebGeometry.h&quot;
</del><span class="cx"> #include &quot;WebImage.h&quot;
</span><del>-#include &quot;WebNumber.h&quot;
</del><span class="cx"> #include &quot;WebRenderLayer.h&quot;
</span><span class="cx"> #include &quot;WebRenderObject.h&quot;
</span><span class="cx"> #include &quot;WebSerializedScriptValue.h&quot;
</span><span class="lines">@@ -58,11 +58,11 @@
</span><span class="cx"> //   - UserContentURLPattern -&gt; UserContentURLPattern
</span><span class="cx"> //   - WebCertificateInfo -&gt; WebCertificateInfo
</span><span class="cx"> //   - WebData -&gt; WebData
</span><del>-//   - WebDouble -&gt; WebDouble
</del><ins>+//   - API::Double -&gt; API::Double
</ins><span class="cx"> //   - WebImage -&gt; WebImage
</span><span class="cx"> //   - WebRenderLayer -&gt; WebRenderLayer
</span><span class="cx"> //   - WebRenderObject -&gt; WebRenderObject
</span><del>-//   - WebUInt64 -&gt; WebUInt64
</del><ins>+//   - API::UInt64 -&gt; API::UInt64
</ins><span class="cx"> //   - WebURL -&gt; WebURL
</span><span class="cx"> //   - WebURLRequest -&gt; WebURLRequest
</span><span class="cx"> //   - WebURLResponse -&gt; WebURLResponse
</span><span class="lines">@@ -113,34 +113,34 @@
</span><span class="cx">             return true;
</span><span class="cx">         }
</span><span class="cx">         case API::Object::Type::Boolean: {
</span><del>-            WebBoolean* booleanObject = static_cast&lt;WebBoolean*&gt;(m_root);
</del><ins>+            API::Boolean* booleanObject = static_cast&lt;API::Boolean*&gt;(m_root);
</ins><span class="cx">             encoder &lt;&lt; booleanObject-&gt;value();
</span><span class="cx">             return true;
</span><span class="cx">         }
</span><span class="cx">         case API::Object::Type::Double: {
</span><del>-            WebDouble* doubleObject = static_cast&lt;WebDouble*&gt;(m_root);
</del><ins>+            API::Double* doubleObject = static_cast&lt;API::Double*&gt;(m_root);
</ins><span class="cx">             encoder &lt;&lt; doubleObject-&gt;value();
</span><span class="cx">             return true;
</span><span class="cx">         }
</span><span class="cx">         case API::Object::Type::UInt64: {
</span><del>-            WebUInt64* uint64Object = static_cast&lt;WebUInt64*&gt;(m_root);
</del><ins>+            API::UInt64* uint64Object = static_cast&lt;API::UInt64*&gt;(m_root);
</ins><span class="cx">             encoder &lt;&lt; uint64Object-&gt;value();
</span><span class="cx">             return true;
</span><span class="cx">         }
</span><span class="cx">         case API::Object::Type::Point: {
</span><del>-            WebPoint* pointObject = static_cast&lt;WebPoint*&gt;(m_root);
</del><ins>+            API::Point* pointObject = static_cast&lt;API::Point*&gt;(m_root);
</ins><span class="cx">             encoder &lt;&lt; pointObject-&gt;point().x;
</span><span class="cx">             encoder &lt;&lt; pointObject-&gt;point().y;
</span><span class="cx">             return true;
</span><span class="cx">         }
</span><span class="cx">         case API::Object::Type::Size: {
</span><del>-            WebSize* sizeObject = static_cast&lt;WebSize*&gt;(m_root);
</del><ins>+            API::Size* sizeObject = static_cast&lt;API::Size*&gt;(m_root);
</ins><span class="cx">             encoder &lt;&lt; sizeObject-&gt;size().width;
</span><span class="cx">             encoder &lt;&lt; sizeObject-&gt;size().height;
</span><span class="cx">             return true;
</span><span class="cx">         }
</span><span class="cx">         case API::Object::Type::Rect: {
</span><del>-            WebRect* rectObject = static_cast&lt;WebRect*&gt;(m_root);
</del><ins>+            API::Rect* rectObject = static_cast&lt;API::Rect*&gt;(m_root);
</ins><span class="cx">             encoder &lt;&lt; rectObject-&gt;rect().origin.x;
</span><span class="cx">             encoder &lt;&lt; rectObject-&gt;rect().origin.y;
</span><span class="cx">             encoder &lt;&lt; rectObject-&gt;rect().size.width;
</span><span class="lines">@@ -249,9 +249,9 @@
</span><span class="cx"> //   - UserContentURLPattern -&gt; UserContentURLPattern
</span><span class="cx"> //   - WebCertificateInfo -&gt; WebCertificateInfo
</span><span class="cx"> //   - WebData -&gt; WebData
</span><del>-//   - WebDouble -&gt; WebDouble
</del><ins>+//   - API::Double -&gt; API::Double
</ins><span class="cx"> //   - WebImage -&gt; WebImage
</span><del>-//   - WebUInt64 -&gt; WebUInt64
</del><ins>+//   - API::UInt64 -&gt; API::UInt64
</ins><span class="cx"> //   - WebURL -&gt; WebURL
</span><span class="cx"> //   - WebURLRequest -&gt; WebURLRequest
</span><span class="cx"> //   - WebURLResponse -&gt; WebURLResponse
</span><span class="lines">@@ -307,7 +307,7 @@
</span><span class="cx">                     return false;
</span><span class="cx">             }
</span><span class="cx"> 
</span><del>-            coder.m_root = ImmutableDictionary::adopt(map);
</del><ins>+            coder.m_root = ImmutableDictionary::create(std::move(map));
</ins><span class="cx">             break;
</span><span class="cx">         }
</span><span class="cx">         case API::Object::Type::String: {
</span><span class="lines">@@ -330,21 +330,21 @@
</span><span class="cx">             double value;
</span><span class="cx">             if (!decoder.decode(value))
</span><span class="cx">                 return false;
</span><del>-            coder.m_root = WebDouble::create(value);
</del><ins>+            coder.m_root = API::Double::create(value);
</ins><span class="cx">             break;
</span><span class="cx">         }
</span><span class="cx">         case API::Object::Type::UInt64: {
</span><span class="cx">             uint64_t value;
</span><span class="cx">             if (!decoder.decode(value))
</span><span class="cx">                 return false;
</span><del>-            coder.m_root = WebUInt64::create(value);
</del><ins>+            coder.m_root = API::UInt64::create(value);
</ins><span class="cx">             break;
</span><span class="cx">         }
</span><span class="cx">         case API::Object::Type::Boolean: {
</span><span class="cx">             bool value;
</span><span class="cx">             if (!decoder.decode(value))
</span><span class="cx">                 return false;
</span><del>-            coder.m_root = WebBoolean::create(value);
</del><ins>+            coder.m_root = API::Boolean::create(value);
</ins><span class="cx">             break;
</span><span class="cx">         }
</span><span class="cx">         case API::Object::Type::Size: {
</span><span class="lines">@@ -354,7 +354,7 @@
</span><span class="cx">                 return false;
</span><span class="cx">             if (!decoder.decode(height))
</span><span class="cx">                 return false;
</span><del>-            coder.m_root = WebSize::create(WKSizeMake(width, height));
</del><ins>+            coder.m_root = API::Size::create(WKSizeMake(width, height));
</ins><span class="cx">             break;
</span><span class="cx">         }
</span><span class="cx">         case API::Object::Type::Point: {
</span><span class="lines">@@ -364,7 +364,7 @@
</span><span class="cx">                 return false;
</span><span class="cx">             if (!decoder.decode(y))
</span><span class="cx">                 return false;
</span><del>-            coder.m_root = WebPoint::create(WKPointMake(x, y));
</del><ins>+            coder.m_root = API::Point::create(WKPointMake(x, y));
</ins><span class="cx">             break;
</span><span class="cx">         }
</span><span class="cx">         case API::Object::Type::Rect: {
</span><span class="lines">@@ -380,7 +380,7 @@
</span><span class="cx">                 return false;
</span><span class="cx">             if (!decoder.decode(height))
</span><span class="cx">                 return false;
</span><del>-            coder.m_root = WebRect::create(WKRectMake(x, y, width, height));
</del><ins>+            coder.m_root = API::Rect::create(WKRectMake(x, y, width, height));
</ins><span class="cx">             break;
</span><span class="cx">         }
</span><span class="cx">         case API::Object::Type::RenderLayer: {
</span><span class="lines">@@ -504,7 +504,7 @@
</span><span class="cx">             break;
</span><span class="cx">         }
</span><span class="cx">         case API::Object::Type::CertificateInfo: {
</span><del>-            CertificateInfo certificateInfo;
</del><ins>+            WebCore::CertificateInfo certificateInfo;
</ins><span class="cx">             if (!decoder.decode(certificateInfo))
</span><span class="cx">                 return false;
</span><span class="cx">             coder.m_root = WebCertificateInfo::create(certificateInfo);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedWebArchiveh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/WebArchive.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/WebArchive.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/WebArchive.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -46,7 +46,7 @@
</span><span class="cx"> class WebArchiveResource;
</span><span class="cx"> class WebData;
</span><span class="cx"> 
</span><del>-class WebArchive : public API::TypedObject&lt;API::Object::Type::WebArchive&gt; {
</del><ins>+class WebArchive : public API::ObjectImpl&lt;API::Object::Type::WebArchive&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     virtual ~WebArchive();
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedWebArchiveResourceh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/WebArchiveResource.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/WebArchiveResource.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/WebArchiveResource.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -43,7 +43,7 @@
</span><span class="cx"> class WebString;
</span><span class="cx"> class WebURL;
</span><span class="cx"> 
</span><del>-class WebArchiveResource : public API::TypedObject&lt;API::Object::Type::WebArchiveResource&gt; {
</del><ins>+class WebArchiveResource : public API::ObjectImpl&lt;API::Object::Type::WebArchiveResource&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     virtual ~WebArchiveResource();
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedWebBackForwardListItemh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/WebBackForwardListItem.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/WebBackForwardListItem.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/WebBackForwardListItem.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -37,7 +37,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><del>-class WebBackForwardListItem : public API::TypedObject&lt;API::Object::Type::BackForwardListItem&gt; {
</del><ins>+class WebBackForwardListItem : public API::ObjectImpl&lt;API::Object::Type::BackForwardListItem&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;WebBackForwardListItem&gt; create(const String&amp; originalURL, const String&amp; url, const String&amp; title, const uint8_t* backForwardData, size_t backForwardDataSize, uint64_t itemID)
</span><span class="cx">     {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedWebBatteryStatush"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/WebBatteryStatus.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/WebBatteryStatus.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/WebBatteryStatus.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -35,7 +35,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><del>-class WebBatteryStatus : public API::TypedObject&lt;API::Object::Type::BatteryStatus&gt; {
</del><ins>+class WebBatteryStatus : public API::ObjectImpl&lt;API::Object::Type::BatteryStatus&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     struct Data {
</span><span class="cx">         void encode(CoreIPC::ArgumentEncoder&amp;) const;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedWebCertificateInfoh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/WebCertificateInfo.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/WebCertificateInfo.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/WebCertificateInfo.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -27,27 +27,27 @@
</span><span class="cx"> #define WebCertificateInfo_h
</span><span class="cx"> 
</span><span class="cx"> #include &quot;APIObject.h&quot;
</span><del>-#include &quot;CertificateInfo.h&quot;
</del><ins>+#include &lt;WebCore/CertificateInfo.h&gt;
</ins><span class="cx"> #include &lt;wtf/PassRefPtr.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><del>-class WebCertificateInfo : public API::TypedObject&lt;API::Object::Type::CertificateInfo&gt; {
</del><ins>+class WebCertificateInfo : public API::ObjectImpl&lt;API::Object::Type::CertificateInfo&gt; {
</ins><span class="cx"> public:
</span><del>-    static PassRefPtr&lt;WebCertificateInfo&gt; create(const CertificateInfo&amp; info)
</del><ins>+    static PassRefPtr&lt;WebCertificateInfo&gt; create(const WebCore::CertificateInfo&amp; info)
</ins><span class="cx">     {
</span><span class="cx">         return adoptRef(new WebCertificateInfo(info));
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    const CertificateInfo&amp; certificateInfo() const { return m_certificateInfo; }
</del><ins>+    const WebCore::CertificateInfo&amp; certificateInfo() const { return m_certificateInfo; }
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    explicit WebCertificateInfo(const CertificateInfo&amp; info)
</del><ins>+    explicit WebCertificateInfo(const WebCore::CertificateInfo&amp; info)
</ins><span class="cx">         : m_certificateInfo(info)
</span><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    CertificateInfo m_certificateInfo;
</del><ins>+    WebCore::CertificateInfo m_certificateInfo;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedWebConnectioncpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/WebConnection.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/WebConnection.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/WebConnection.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -55,7 +55,7 @@
</span><span class="cx">     encoder-&gt;encode(messageName);
</span><span class="cx">     encodeMessageBody(*encoder, messageBody);
</span><span class="cx"> 
</span><del>-    sendMessage(std::move(encoder));
</del><ins>+    sendMessage(std::move(encoder), 0);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebConnection::didClose()
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedWebConnectionh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/WebConnection.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/WebConnection.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/WebConnection.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -34,7 +34,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><del>-class WebConnection : public API::TypedObject&lt;API::Object::Type::Connection&gt;, public CoreIPC::MessageReceiver, public CoreIPC::MessageSender {
</del><ins>+class WebConnection : public API::ObjectImpl&lt;API::Object::Type::Connection&gt;, public CoreIPC::MessageReceiver, public CoreIPC::MessageSender {
</ins><span class="cx"> public:
</span><span class="cx">     virtual ~WebConnection();
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedWebContextMenuItemh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/WebContextMenuItem.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/WebContextMenuItem.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/WebContextMenuItem.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -37,7 +37,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><del>-class WebContextMenuItem : public API::TypedObject&lt;API::Object::Type::ContextMenuItem&gt; {
</del><ins>+class WebContextMenuItem : public API::ObjectImpl&lt;API::Object::Type::ContextMenuItem&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;WebContextMenuItem&gt; create(const WebContextMenuItemData&amp; data)
</span><span class="cx">     {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedWebCoreArgumentCoderscpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/WebCoreArgumentCoders.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/WebCoreArgumentCoders.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/WebCoreArgumentCoders.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -28,6 +28,7 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;ShareableBitmap.h&quot;
</span><span class="cx"> #include &lt;WebCore/AuthenticationChallenge.h&gt;
</span><ins>+#include &lt;WebCore/CertificateInfo.h&gt;
</ins><span class="cx"> #include &lt;WebCore/Cookie.h&gt;
</span><span class="cx"> #include &lt;WebCore/Credential.h&gt;
</span><span class="cx"> #include &lt;WebCore/Cursor.h&gt;
</span><span class="lines">@@ -92,7 +93,6 @@
</span><span class="cx">     return SimpleArgumentCoder&lt;TransformationMatrix&gt;::decode(decoder, transformationMatrix);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-
</del><span class="cx"> void ArgumentCoder&lt;FloatPoint&gt;::encode(ArgumentEncoder&amp; encoder, const FloatPoint&amp; floatPoint)
</span><span class="cx"> {
</span><span class="cx">     SimpleArgumentCoder&lt;FloatPoint&gt;::encode(encoder, floatPoint);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedWebCoreArgumentCodersh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/WebCoreArgumentCoders.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/WebCoreArgumentCoders.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/WebCoreArgumentCoders.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -31,6 +31,7 @@
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> class AffineTransform;
</span><span class="cx"> class AuthenticationChallenge;
</span><ins>+class CertificateInfo;
</ins><span class="cx"> class Color;
</span><span class="cx"> class Credential;
</span><span class="cx"> class Cursor;
</span><span class="lines">@@ -103,6 +104,11 @@
</span><span class="cx">     static bool decode(ArgumentDecoder&amp;, WebCore::TransformationMatrix&amp;);
</span><span class="cx"> };
</span><span class="cx"> 
</span><ins>+template&lt;&gt; struct ArgumentCoder&lt;WebCore::CertificateInfo&gt; {
+    static void encode(ArgumentEncoder&amp;, const WebCore::CertificateInfo&amp;);
+    static bool decode(ArgumentDecoder&amp;, WebCore::CertificateInfo&amp;);
+};
+
</ins><span class="cx"> template&lt;&gt; struct ArgumentCoder&lt;WebCore::FloatPoint&gt; {
</span><span class="cx">     static void encode(ArgumentEncoder&amp;, const WebCore::FloatPoint&amp;);
</span><span class="cx">     static bool decode(ArgumentDecoder&amp;, WebCore::FloatPoint&amp;);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedWebCrossThreadCopiercpp"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebKit2/Shared/WebCrossThreadCopier.cpp (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/WebCrossThreadCopier.cpp                                (rev 0)
+++ branches/jsCStack/Source/WebKit2/Shared/WebCrossThreadCopier.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,43 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include &quot;config.h&quot;
+#include &quot;WebCrossThreadCopier.h&quot;
+
+#if ENABLE(INDEXED_DATABASE)
+
+#include &quot;UniqueIDBDatabaseIdentifier.h&quot;
+
+using namespace WebKit;
+
+namespace WebCore {
+
+UniqueIDBDatabaseIdentifier CrossThreadCopierBase&lt;false, false, UniqueIDBDatabaseIdentifier&gt;::copy(const UniqueIDBDatabaseIdentifier&amp; identifier)
+{
+    return identifier.isolatedCopy();
+}
+
+} // namespace WebCore
+
+#endif // ENABLE(INDEXED_DATABASE)
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedWebCrossThreadCopierh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebKit2/Shared/WebCrossThreadCopier.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/WebCrossThreadCopier.h                                (rev 0)
+++ branches/jsCStack/Source/WebKit2/Shared/WebCrossThreadCopier.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,46 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef WebCrossThreadCopier_h
+#define WebCrossThreadCopier_h
+
+#include &lt;WebCore/CrossThreadCopier.h&gt;
+
+#if ENABLE(INDEXED_DATABASE)
+
+namespace WebKit {
+class UniqueIDBDatabaseIdentifier;
+}
+
+namespace WebCore {
+
+template&lt;&gt; struct CrossThreadCopierBase&lt;false, false, WebKit::UniqueIDBDatabaseIdentifier&gt; {
+    static WebKit::UniqueIDBDatabaseIdentifier copy(const WebKit::UniqueIDBDatabaseIdentifier&amp;);
+};
+
+} // namespace WebCore
+
+#endif // ENABLE(INDEXED_DATABASE)
+#endif // WebCrossThreadCopier_h
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedWebDatah"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/WebData.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/WebData.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/WebData.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -35,7 +35,7 @@
</span><span class="cx"> 
</span><span class="cx"> // WebData - A data buffer type suitable for vending to an API.
</span><span class="cx"> 
</span><del>-class WebData : public API::TypedObject&lt;API::Object::Type::Data&gt; {
</del><ins>+class WebData : public API::ObjectImpl&lt;API::Object::Type::Data&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     typedef void (*FreeDataFunction)(unsigned char*, const void* context);
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedWebErrorh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/WebError.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/WebError.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/WebError.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -34,7 +34,7 @@
</span><span class="cx"> 
</span><span class="cx"> // WebError - An error type suitable for vending to an API.
</span><span class="cx"> 
</span><del>-class WebError : public API::TypedObject&lt;API::Object::Type::Error&gt; {
</del><ins>+class WebError : public API::ObjectImpl&lt;API::Object::Type::Error&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;WebError&gt; create()
</span><span class="cx">     {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedWebGeolocationPositionh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/WebGeolocationPosition.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/WebGeolocationPosition.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/WebGeolocationPosition.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -33,7 +33,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><del>-class WebGeolocationPosition : public API::TypedObject&lt;API::Object::Type::GeolocationPosition&gt; {
</del><ins>+class WebGeolocationPosition : public API::ObjectImpl&lt;API::Object::Type::GeolocationPosition&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     struct Data {
</span><span class="cx">         void encode(CoreIPC::ArgumentEncoder&amp;) const;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedWebGeometryh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/WebGeometry.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/WebGeometry.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/WebGeometry.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,94 +0,0 @@
</span><del>-/*
- * Copyright (C) 2011 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef WebGeometry_h
-#define WebGeometry_h
-
-#include &quot;APIObject.h&quot;
-#include &quot;WKGeometry.h&quot;
-#include &lt;WebCore/FloatRect.h&gt;
-#include &lt;wtf/PassRefPtr.h&gt;
-
-namespace CoreIPC {
-    class ArgumentDecoder;
-    class ArgumentEncoder;
-}
-
-namespace WebKit {
-
-class WebSize : public API::TypedObject&lt;API::Object::Type::Size&gt; {
-public:
-    static PassRefPtr&lt;WebSize&gt; create(const WKSize&amp; size)
-    {
-        return adoptRef(new WebSize(size));
-    }
-
-    const WKSize&amp; size() const { return m_size; }
-
-private:
-    explicit WebSize(const WKSize&amp; size)
-        : m_size(size)
-    { }
-
-    WKSize m_size;
-};
-
-class WebPoint : public API::TypedObject&lt;API::Object::Type::Point&gt; {
-public:
-    static PassRefPtr&lt;WebPoint&gt; create(const WKPoint&amp; point)
-    {
-        return adoptRef(new WebPoint(point));
-    }
-
-    const WKPoint&amp; point() const { return m_point; }
-
-private:
-    explicit WebPoint(const WKPoint&amp; point)
-        : m_point(point)
-    { }
-
-    WKPoint m_point;
-};
-
-class WebRect : public API::TypedObject&lt;API::Object::Type::Rect&gt; {
-public:
-    static PassRefPtr&lt;WebRect&gt; create(const WKRect&amp; rect)
-    {
-        return adoptRef(new WebRect(rect));
-    }
-
-    const WKRect&amp; rect() const { return m_rect; }
-
-private:
-    explicit WebRect(const WKRect&amp; rect)
-        : m_rect(rect)
-    { }
-
-    WKRect m_rect;
-};
-
-} // namespace WebKit
-
-#endif // WebGeometry_h
</del></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedWebHitTestResulth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/WebHitTestResult.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/WebHitTestResult.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/WebHitTestResult.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -40,7 +40,7 @@
</span><span class="cx"> 
</span><span class="cx"> class WebFrame;
</span><span class="cx"> 
</span><del>-class WebHitTestResult : public API::TypedObject&lt;API::Object::Type::HitTestResult&gt; {
</del><ins>+class WebHitTestResult : public API::ObjectImpl&lt;API::Object::Type::HitTestResult&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     struct Data {
</span><span class="cx">         String absoluteImageURL;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedWebImageh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/WebImage.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/WebImage.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/WebImage.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -40,7 +40,7 @@
</span><span class="cx"> 
</span><span class="cx"> // WebImage - An image type suitable for vending to an API.
</span><span class="cx"> 
</span><del>-class WebImage : public API::TypedObject&lt;API::Object::Type::Image&gt; {
</del><ins>+class WebImage : public API::ObjectImpl&lt;API::Object::Type::Image&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;WebImage&gt; create(const WebCore::IntSize&amp;, ImageOptions);
</span><span class="cx">     static PassRefPtr&lt;WebImage&gt; create(PassRefPtr&lt;ShareableBitmap&gt;);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedWebNetworkInfoh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/WebNetworkInfo.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/WebNetworkInfo.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/WebNetworkInfo.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -35,7 +35,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><del>-class WebNetworkInfo : public API::TypedObject&lt;API::Object::Type::NetworkInfo&gt; {
</del><ins>+class WebNetworkInfo : public API::ObjectImpl&lt;API::Object::Type::NetworkInfo&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     struct Data {
</span><span class="cx">         void encode(CoreIPC::ArgumentEncoder&amp;) const;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedWebNumberh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/WebNumber.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/WebNumber.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/WebNumber.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,59 +0,0 @@
</span><del>-/*
- * Copyright (C) 2010 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef WebNumber_h
-#define WebNumber_h
-
-#include &quot;APIObject.h&quot;
-#include &lt;wtf/PassRefPtr.h&gt;
-
-namespace WebKit {
-
-template&lt;typename NumberType, API::Object::Type APIObjectType&gt;
-class WebNumber : public API::TypedObject&lt;APIObjectType&gt; {
-public:
-    static PassRefPtr&lt;WebNumber&gt; create(NumberType value)
-    {
-        return adoptRef(new WebNumber(value));
-    }
-
-    NumberType value() const { return m_value; }
-
-private:
-    explicit WebNumber(NumberType value)
-        : m_value(value)
-    {
-    }
-
-    const NumberType m_value;
-};
-
-typedef WebNumber&lt;bool, API::Object::Type::Boolean&gt; WebBoolean;
-typedef WebNumber&lt;double, API::Object::Type::Double&gt; WebDouble;
-typedef WebNumber&lt;uint64_t, API::Object::Type::UInt64&gt; WebUInt64;
-
-} // namespace WebKit
-
-#endif // WebNumber_h
</del></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedWebOpenPanelParametersh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/WebOpenPanelParameters.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/WebOpenPanelParameters.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/WebOpenPanelParameters.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><del>-class WebOpenPanelParameters : public API::TypedObject&lt;API::Object::Type::OpenPanelParameters&gt; {
</del><ins>+class WebOpenPanelParameters : public API::ObjectImpl&lt;API::Object::Type::OpenPanelParameters&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;WebOpenPanelParameters&gt; create(const WebCore::FileChooserSettings&amp;);
</span><span class="cx">     ~WebOpenPanelParameters();
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedWebPageCreationParameterscpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/WebPageCreationParameters.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/WebPageCreationParameters.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/WebPageCreationParameters.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -59,6 +59,7 @@
</span><span class="cx">     encoder &lt;&lt; minimumLayoutSize;
</span><span class="cx">     encoder &lt;&lt; autoSizingShouldExpandToViewHeight;
</span><span class="cx">     encoder.encodeEnum(scrollPinningBehavior);
</span><ins>+    encoder &lt;&lt; backgroundExtendsBeyondPage;
</ins><span class="cx"> 
</span><span class="cx"> #if PLATFORM(MAC)
</span><span class="cx">     encoder.encodeEnum(layerHostingMode);
</span><span class="lines">@@ -120,6 +121,8 @@
</span><span class="cx">         return false;
</span><span class="cx">     if (!decoder.decodeEnum(parameters.scrollPinningBehavior))
</span><span class="cx">         return false;
</span><ins>+    if (!decoder.decode(parameters.backgroundExtendsBeyondPage))
+        return false;
</ins><span class="cx">     
</span><span class="cx"> #if PLATFORM(MAC)
</span><span class="cx">     if (!decoder.decodeEnum(parameters.layerHostingMode))
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedWebPageCreationParametersh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/WebPageCreationParameters.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/WebPageCreationParameters.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/WebPageCreationParameters.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -97,6 +97,8 @@
</span><span class="cx">     
</span><span class="cx">     WebCore::ScrollPinningBehavior scrollPinningBehavior;
</span><span class="cx"> 
</span><ins>+    bool backgroundExtendsBeyondPage;
+
</ins><span class="cx"> #if PLATFORM(MAC)
</span><span class="cx">     LayerHostingMode layerHostingMode;
</span><span class="cx">     ColorSpaceData colorSpace;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedWebPreferencesStoreh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/WebPreferencesStore.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/WebPreferencesStore.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/WebPreferencesStore.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -178,6 +178,7 @@
</span><span class="cx">     macro(VideoPluginProxyEnabled, isVideoPluginProxyEnabled, Bool, bool, DEFAULT_VIDEO_PLUGIN_PROXY_ENABLED) \
</span><span class="cx">     macro(UseLegacyTextAlignPositionedElementBehavior, useLegacyTextAlignPositionedElementBehavior, Bool, bool, false) \
</span><span class="cx">     macro(SpatialNavigationEnabled, spatialNavigationEnabled, Bool, bool, false) \
</span><ins>+    macro(MediaSourceEnabled, mediaSourceEnabled, Bool, bool, false) \
</ins><span class="cx">     \
</span><span class="cx"> 
</span><span class="cx"> #define FOR_EACH_WEBKIT_DOUBLE_PREFERENCE(macro) \
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedWebRenderLayerh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/WebRenderLayer.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/WebRenderLayer.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/WebRenderLayer.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -36,7 +36,7 @@
</span><span class="cx"> 
</span><span class="cx"> class WebPage;
</span><span class="cx"> 
</span><del>-class WebRenderLayer : public API::TypedObject&lt;API::Object::Type::RenderLayer&gt; {
</del><ins>+class WebRenderLayer : public API::ObjectImpl&lt;API::Object::Type::RenderLayer&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     enum CompositingLayerType { None, Normal, Tiled, Media, Container };
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedWebRenderObjecth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/WebRenderObject.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/WebRenderObject.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/WebRenderObject.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -43,7 +43,7 @@
</span><span class="cx"> 
</span><span class="cx"> class WebPage;
</span><span class="cx"> 
</span><del>-class WebRenderObject : public API::TypedObject&lt;API::Object::Type::RenderObject&gt; {
</del><ins>+class WebRenderObject : public API::ObjectImpl&lt;API::Object::Type::RenderObject&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;WebRenderObject&gt; create(WebPage*);
</span><span class="cx">     static PassRefPtr&lt;WebRenderObject&gt; create(WebCore::RenderObject* renderer)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedWebSecurityOriginh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/WebSecurityOrigin.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/WebSecurityOrigin.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/WebSecurityOrigin.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -32,7 +32,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><del>-class WebSecurityOrigin : public API::TypedObject&lt;API::Object::Type::SecurityOrigin&gt; {
</del><ins>+class WebSecurityOrigin : public API::ObjectImpl&lt;API::Object::Type::SecurityOrigin&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;WebSecurityOrigin&gt; createFromString(const String&amp; string)
</span><span class="cx">     {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedWebSerializedScriptValueh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/WebSerializedScriptValue.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/WebSerializedScriptValue.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/WebSerializedScriptValue.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -34,7 +34,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><del>-class WebSerializedScriptValue : public API::TypedObject&lt;API::Object::Type::SerializedScriptValue&gt; {
</del><ins>+class WebSerializedScriptValue : public API::ObjectImpl&lt;API::Object::Type::SerializedScriptValue&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;WebSerializedScriptValue&gt; create(PassRefPtr&lt;WebCore::SerializedScriptValue&gt; serializedValue)
</span><span class="cx">     {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedWebStringh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/WebString.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/WebString.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/WebString.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx"> 
</span><span class="cx"> // WebString - A string type suitable for vending to an API.
</span><span class="cx"> 
</span><del>-class WebString : public API::TypedObject&lt;API::Object::Type::String&gt; {
</del><ins>+class WebString : public API::ObjectImpl&lt;API::Object::Type::String&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;WebString&gt; createNull()
</span><span class="cx">     {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedWebURLh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/WebURL.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/WebURL.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/WebURL.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -37,7 +37,7 @@
</span><span class="cx"> 
</span><span class="cx"> // WebURL - A URL type suitable for vending to an API.
</span><span class="cx"> 
</span><del>-class WebURL : public API::TypedObject&lt;API::Object::Type::URL&gt; {
</del><ins>+class WebURL : public API::ObjectImpl&lt;API::Object::Type::URL&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;WebURL&gt; create(const String&amp; string)
</span><span class="cx">     {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedWebURLRequestcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/WebURLRequest.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/WebURLRequest.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/WebURLRequest.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -16,11 +16,6 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;WebURLRequest&gt; WebURLRequest::create(const URL&amp; url)
-{
-    return adoptRef(new WebURLRequest(ResourceRequest(url)));
-}
-
</del><span class="cx"> WebURLRequest::WebURLRequest(const ResourceRequest&amp; request)
</span><span class="cx">     : m_request(request)
</span><span class="cx"> {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedWebURLRequesth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/WebURLRequest.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/WebURLRequest.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/WebURLRequest.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -30,39 +30,22 @@
</span><span class="cx"> #include &lt;WebCore/ResourceRequest.h&gt;
</span><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><span class="cx"> 
</span><del>-#if PLATFORM(MAC)
-typedef NSURLRequest* PlatformRequest;
-#else
-typedef void* PlatformRequest;
-#endif
-
</del><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><del>-class WebURLRequest : public API::TypedObject&lt;API::Object::Type::URLRequest&gt; {
</del><ins>+class WebURLRequest : public API::ObjectImpl&lt;API::Object::Type::URLRequest&gt; {
</ins><span class="cx"> public:
</span><del>-    static PassRefPtr&lt;WebURLRequest&gt; create(const WebCore::URL&amp;);
-
</del><span class="cx">     static PassRefPtr&lt;WebURLRequest&gt; create(const WebCore::ResourceRequest&amp; request)
</span><span class="cx">     {
</span><span class="cx">         return adoptRef(new WebURLRequest(request));
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    static PassRefPtr&lt;WebURLRequest&gt; create(PlatformRequest platformRequest)
-    {
-        return adoptRef(new WebURLRequest(platformRequest));
-    }
-
-    PlatformRequest platformRequest() const;
</del><span class="cx">     const WebCore::ResourceRequest&amp; resourceRequest() const { return m_request; }
</span><span class="cx"> 
</span><del>-    const String&amp; url() const { return m_request.url(); }
-
</del><span class="cx">     static double defaultTimeoutInterval(); // May return 0 when using platform default.
</span><span class="cx">     static void setDefaultTimeoutInterval(double);
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     explicit WebURLRequest(const WebCore::ResourceRequest&amp;);
</span><del>-    explicit WebURLRequest(PlatformRequest);
</del><span class="cx"> 
</span><span class="cx">     WebCore::ResourceRequest m_request;
</span><span class="cx"> };
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedWebURLResponseh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/WebURLResponse.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/WebURLResponse.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/WebURLResponse.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -30,32 +30,19 @@
</span><span class="cx"> #include &lt;WebCore/ResourceResponse.h&gt;
</span><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><span class="cx"> 
</span><del>-#if PLATFORM(MAC)
-typedef NSURLResponse* PlatformResponse;
-#else
-typedef void* PlatformResponse;
-#endif
-
</del><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><del>-class WebURLResponse : public API::TypedObject&lt;API::Object::Type::URLResponse&gt; {
</del><ins>+class WebURLResponse : public API::ObjectImpl&lt;API::Object::Type::URLResponse&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;WebURLResponse&gt; create(const WebCore::ResourceResponse&amp; response)
</span><span class="cx">     {
</span><span class="cx">         return adoptRef(new WebURLResponse(response));
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    static PassRefPtr&lt;WebURLResponse&gt; create(PlatformResponse platformResponse)
-    {
-        return adoptRef(new WebURLResponse(platformResponse));
-    }
-
-    PlatformResponse platformResponse() const;
</del><span class="cx">     const WebCore::ResourceResponse&amp; resourceResponse() const { return m_response; }
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     explicit WebURLResponse(const WebCore::ResourceResponse&amp;);
</span><del>-    explicit WebURLResponse(PlatformResponse);
</del><span class="cx"> 
</span><span class="cx">     WebCore::ResourceResponse m_response;
</span><span class="cx"> };
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedWebUserContentURLPatternh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/WebUserContentURLPattern.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/WebUserContentURLPattern.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/WebUserContentURLPattern.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -34,7 +34,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><del>-class WebUserContentURLPattern : public API::TypedObject&lt;API::Object::Type::UserContentURLPattern&gt; {
</del><ins>+class WebUserContentURLPattern : public API::ObjectImpl&lt;API::Object::Type::UserContentURLPattern&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;WebUserContentURLPattern&gt; create(const String&amp; pattern)
</span><span class="cx">     {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedmacCertificateInfoh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/mac/CertificateInfo.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/mac/CertificateInfo.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/mac/CertificateInfo.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,60 +0,0 @@
</span><del>-/*
- * Copyright (C) 2010 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef CertificateInfo_h
-#define CertificateInfo_h
-
-#include &lt;WebCore/ResourceResponse.h&gt;
-#include &lt;wtf/RetainPtr.h&gt;
-
-namespace CoreIPC {
-class ArgumentDecoder;
-class ArgumentEncoder;
-}
-
-namespace WebKit {
-
-class CertificateInfo {
-public:
-    CertificateInfo();
-    explicit CertificateInfo(const WebCore::ResourceResponse&amp;);
-    explicit CertificateInfo(CFArrayRef certificateChain);
-
-    CFArrayRef certificateChain() const { return m_certificateChain.get(); }
-
-    void encode(CoreIPC::ArgumentEncoder&amp;) const;
-    static bool decode(CoreIPC::ArgumentDecoder&amp;, CertificateInfo&amp;);
-
-#ifndef NDEBUG
-    void dump() const;
-#endif
-
-private:
-    RetainPtr&lt;CFArrayRef&gt; m_certificateChain;
-};
-
-} // namespace WebKit
-
-#endif // CertificateInfo_h
</del></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedmacCertificateInfomm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/mac/CertificateInfo.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/mac/CertificateInfo.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/mac/CertificateInfo.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,91 +0,0 @@
</span><del>-/*
- * Copyright (C) 2010 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import &quot;config.h&quot;
-#import &quot;CertificateInfo.h&quot;
-
-#import &quot;ArgumentCodersCF.h&quot;
-#import &quot;ArgumentDecoder.h&quot;
-#import &quot;ArgumentEncoder.h&quot;
-
-using namespace WebCore;
-
-namespace WebKit {
-
-CertificateInfo::CertificateInfo()
-{
-}
-
-CertificateInfo::CertificateInfo(const ResourceResponse&amp; response)
-    : m_certificateChain(response.certificateChain())
-{
-}
-
-CertificateInfo::CertificateInfo(CFArrayRef certificateChain)
-    : m_certificateChain(certificateChain)
-{
-}
-
-void CertificateInfo::encode(CoreIPC::ArgumentEncoder&amp; encoder) const
-{
-    if (!m_certificateChain) {
-        encoder &lt;&lt; false;
-        return;
-    }
-
-    encoder &lt;&lt; true;
-    CoreIPC::encode(encoder, m_certificateChain.get());
-}
-
-bool CertificateInfo::decode(CoreIPC::ArgumentDecoder&amp; decoder, CertificateInfo&amp; c)
-{
-    bool hasCertificateChain;
-    if (!decoder.decode(hasCertificateChain))
-        return false;
-
-    if (!hasCertificateChain)
-        return true;
-
-    if (!CoreIPC::decode(decoder, c.m_certificateChain))
-        return false;
-
-    return true;
-}
-
-#ifndef NDEBUG
-void CertificateInfo::dump() const
-{
-    unsigned entries = m_certificateChain ? CFArrayGetCount(m_certificateChain.get()) : 0;
-
-    NSLog(@&quot;CertificateInfo\n&quot;);
-    NSLog(@&quot;  Entries: %d\n&quot;, entries);
-    for (unsigned i = 0; i &lt; entries; ++i) {
-        RetainPtr&lt;CFStringRef&gt; summary = adoptCF(SecCertificateCopySubjectSummary((SecCertificateRef)CFArrayGetValueAtIndex(m_certificateChain.get(), i)));
-        NSLog(@&quot;  %@&quot;, (NSString *)summary.get());
-    }
-}
-#endif
-
-} // namespace WebKit
</del></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedmacObjCObjectGraphh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/mac/ObjCObjectGraph.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/mac/ObjCObjectGraph.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/mac/ObjCObjectGraph.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -31,7 +31,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><del>-class ObjCObjectGraph : public API::TypedObject&lt;API::Object::Type::ObjCObjectGraph&gt; {
</del><ins>+class ObjCObjectGraph : public API::ObjectImpl&lt;API::Object::Type::ObjCObjectGraph&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;ObjCObjectGraph&gt; create(id rootObject)
</span><span class="cx">     {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedmacObjCObjectGraphCodersmm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/mac/ObjCObjectGraphCoders.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/mac/ObjCObjectGraphCoders.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/mac/ObjCObjectGraphCoders.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -40,7 +40,6 @@
</span><span class="cx"> #import &quot;InjectedBundleUserMessageCoders.h&quot;
</span><span class="cx"> #import &quot;WKBundleAPICast.h&quot;
</span><span class="cx"> #import &quot;WKWebProcessPlugInBrowserContextControllerInternal.h&quot;
</span><del>-#import &quot;WKWebProcessPlugInBrowserContextControllerPrivate.h&quot;
</del><span class="cx"> #import &quot;WKWebProcessPlugInInternal.h&quot;
</span><span class="cx"> #import &quot;WebPage.h&quot;
</span><span class="cx"> #import &quot;WebProcess.h&quot;
</span><span class="lines">@@ -464,7 +463,7 @@
</span><span class="cx">             if (!webPage)
</span><span class="cx">                 coder.m_root = [NSNull null];
</span><span class="cx">             else 
</span><del>-                coder.m_root = [[WKWebProcessPlugInController _shared] _browserContextControllerForBundlePageRef:toAPI(webPage)];
</del><ins>+                coder.m_root = wrapper(*webPage);
</ins><span class="cx">             break;
</span><span class="cx">         }
</span><span class="cx">         case WKTypeRefWrapperType: {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedmacWebCoreArgumentCodersMacmm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/mac/WebCoreArgumentCodersMac.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/mac/WebCoreArgumentCodersMac.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/mac/WebCoreArgumentCodersMac.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,5 +1,6 @@
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2010 Apple Inc. All rights reserved.
</span><ins>+ * Copyright (C) 2013 Company 100 Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -28,14 +29,13 @@
</span><span class="cx"> 
</span><span class="cx"> #import &quot;ArgumentCodersCF.h&quot;
</span><span class="cx"> #import &quot;DataReference.h&quot;
</span><del>-#import &quot;CertificateInfo.h&quot;
</del><span class="cx"> #import &quot;WebKitSystemInterface.h&quot;
</span><ins>+#import &lt;WebCore/CertificateInfo.h&gt;
</ins><span class="cx"> #import &lt;WebCore/KeyboardEvent.h&gt;
</span><span class="cx"> #import &lt;WebCore/ResourceError.h&gt;
</span><span class="cx"> #import &lt;WebCore/ResourceRequest.h&gt;
</span><span class="cx"> 
</span><span class="cx"> using namespace WebCore;
</span><del>-using namespace WebKit;
</del><span class="cx"> 
</span><span class="cx"> namespace CoreIPC {
</span><span class="cx"> 
</span><span class="lines">@@ -134,6 +134,36 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void ArgumentCoder&lt;CertificateInfo&gt;::encode(ArgumentEncoder&amp; encoder, const CertificateInfo&amp; certificateInfo)
+{
+    CFArrayRef certificateChain = certificateInfo.certificateChain();
+    if (!certificateChain) {
+        encoder &lt;&lt; false;
+        return;
+    }
+
+    encoder &lt;&lt; true;
+    CoreIPC::encode(encoder, certificateChain);
+}
+
+bool ArgumentCoder&lt;CertificateInfo&gt;::decode(ArgumentDecoder&amp; decoder, CertificateInfo&amp; certificateInfo)
+{
+    bool hasCertificateChain;
+    if (!decoder.decode(hasCertificateChain))
+        return false;
+
+    if (!hasCertificateChain)
+        return true;
+
+    RetainPtr&lt;CFArrayRef&gt; certificateChain;
+    if (!CoreIPC::decode(decoder, certificateChain))
+        return false;
+
+    certificateInfo.setCertificateChain(certificateChain.get());
+
+    return true;
+}
+
</ins><span class="cx"> static NSString* nsString(const String&amp; string)
</span><span class="cx"> {
</span><span class="cx">     return string.impl() ? [NSString stringWithCharacters:reinterpret_cast&lt;const UniChar*&gt;(string.characters()) length:string.length()] : @&quot;&quot;;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedmacWebURLRequestMacmm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/mac/WebURLRequestMac.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/mac/WebURLRequestMac.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/mac/WebURLRequestMac.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,43 +0,0 @@
</span><del>-/*
- * Copyright (C) 2010 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import &quot;config.h&quot;
-#import &quot;WebURLRequest.h&quot;
-
-using namespace WebCore;
-
-namespace WebKit {
-
-WebURLRequest::WebURLRequest(PlatformRequest platformRequest)
-    : m_request(platformRequest)
-{
-}
-
-PlatformRequest WebURLRequest::platformRequest() const
-{
-    return m_request.nsURLRequest(DoNotUpdateHTTPBody);
-}
-
-} // namespace WebKit
</del></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedmacWebURLResponseMacmm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/mac/WebURLResponseMac.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/mac/WebURLResponseMac.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/mac/WebURLResponseMac.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,41 +0,0 @@
</span><del>-/*
- * Copyright (C) 2010 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import &quot;config.h&quot;
-#import &quot;WebURLResponse.h&quot;
-
-namespace WebKit {
-
-WebURLResponse::WebURLResponse(PlatformResponse platformResponse)
-    : m_response(platformResponse)
-{
-}
-
-PlatformResponse WebURLResponse::platformResponse() const
-{
-    return m_response.nsURLResponse();
-}
-
-} // namespace WebKit
</del></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedsoupCertificateInfocpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/soup/CertificateInfo.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/soup/CertificateInfo.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/soup/CertificateInfo.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,116 +0,0 @@
</span><del>-/*
- * Copyright (C) 2012 Igalia S.L.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include &quot;config.h&quot;
-#include &quot;CertificateInfo.h&quot;
-
-#include &quot;ArgumentDecoder.h&quot;
-#include &quot;ArgumentEncoder.h&quot;
-#include &quot;DataReference.h&quot;
-#include &lt;WebCore/ResourceError.h&gt;
-#include &lt;WebCore/ResourceResponse.h&gt;
-#include &lt;libsoup/soup.h&gt;
-
-using namespace WebCore;
-
-namespace WebKit {
-
-CertificateInfo::CertificateInfo()
-    : m_tlsErrors(static_cast&lt;GTlsCertificateFlags&gt;(0))
-{
-}
-
-CertificateInfo::CertificateInfo(const ResourceResponse&amp; response)
-    : m_certificate(response.soupMessageCertificate())
-    , m_tlsErrors(response.soupMessageTLSErrors())
-{
-}
-
-CertificateInfo::CertificateInfo(const ResourceError&amp; resourceError)
-    : m_certificate(resourceError.certificate())
-    , m_tlsErrors(static_cast&lt;GTlsCertificateFlags&gt;(resourceError.tlsErrors()))
-{
-}
-
-CertificateInfo::CertificateInfo(GTlsCertificate* certificate, GTlsCertificateFlags tlsErrors)
-    : m_certificate(certificate)
-    , m_tlsErrors(tlsErrors)
-{
-}
-
-CertificateInfo::~CertificateInfo()
-{
-}
-
-void CertificateInfo::encode(CoreIPC::ArgumentEncoder&amp; encoder) const
-{
-    if (!m_certificate) {
-        encoder &lt;&lt; false;
-        return;
-    }
-
-    GByteArray* certificateData = 0;
-    g_object_get(G_OBJECT(m_certificate.get()), &quot;certificate&quot;, &amp;certificateData, NULL);
-    if (!certificateData) {
-        encoder &lt;&lt; false;
-        return;
-    }
-
-    encoder &lt;&lt; true;
-    GRefPtr&lt;GByteArray&gt; certificate = adoptGRef(certificateData);
-    encoder.encodeVariableLengthByteArray(CoreIPC::DataReference(certificate-&gt;data, certificate-&gt;len));
-    encoder &lt;&lt; static_cast&lt;uint32_t&gt;(m_tlsErrors);
-}
-
-bool CertificateInfo::decode(CoreIPC::ArgumentDecoder&amp; decoder, CertificateInfo&amp; certificateInfo)
-{
-    bool hasCertificate;
-    if (!decoder.decode(hasCertificate))
-        return false;
-
-    if (!hasCertificate)
-        return true;
-
-    CoreIPC::DataReference certificateDataReference;
-    if (!decoder.decodeVariableLengthByteArray(certificateDataReference))
-        return false;
-
-    GByteArray* certificateData = g_byte_array_sized_new(certificateDataReference.size());
-    certificateData = g_byte_array_append(certificateData, certificateDataReference.data(), certificateDataReference.size());
-    GRefPtr&lt;GByteArray&gt; certificate = adoptGRef(certificateData);
-
-    GTlsBackend* backend = g_tls_backend_get_default();
-    certificateInfo.m_certificate = adoptGRef(G_TLS_CERTIFICATE(g_initable_new(
-        g_tls_backend_get_certificate_type(backend), 0, 0, &quot;certificate&quot;, certificate.get(), nullptr)));
-
-    uint32_t tlsErrors;
-    if (!decoder.decode(tlsErrors))
-        return false;
-    certificateInfo.m_tlsErrors = static_cast&lt;GTlsCertificateFlags&gt;(tlsErrors);
-
-    return true;
-}
-
-} // namespace WebKit
</del></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedsoupCertificateInfoh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/soup/CertificateInfo.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/soup/CertificateInfo.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/soup/CertificateInfo.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,66 +0,0 @@
</span><del>-/*
- * Copyright (C) 2010 Apple Inc. All rights reserved.
- * Portions Copyright (c) 2010 Motorola Mobility, Inc.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef CertificateInfo_h
-#define CertificateInfo_h
-
-#include &lt;libsoup/soup.h&gt;
-#include &lt;wtf/gobject/GRefPtr.h&gt;
-
-namespace CoreIPC {
-class ArgumentDecoder;
-class ArgumentEncoder;
-}
-
-namespace WebCore {
-class ResourceError;
-class ResourceResponse;
-}
-
-namespace WebKit {
-
-class CertificateInfo {
-public:
-    CertificateInfo();
-    explicit CertificateInfo(const WebCore::ResourceResponse&amp;);
-    explicit CertificateInfo(const WebCore::ResourceError&amp;);
-    explicit CertificateInfo(GTlsCertificate*, GTlsCertificateFlags);
-    ~CertificateInfo();
-
-    GTlsCertificate* certificate() const { return m_certificate.get(); }
-    GTlsCertificateFlags tlsErrors() const { return m_tlsErrors; }
-
-    void encode(CoreIPC::ArgumentEncoder&amp;) const;
-    static bool decode(CoreIPC::ArgumentDecoder&amp;, CertificateInfo&amp;);
-
-private:
-    GRefPtr&lt;GTlsCertificate&gt; m_certificate;
-    GTlsCertificateFlags m_tlsErrors;
-};
-
-} // namespace WebKit
-
-#endif // CertificateInfo_h
</del></span></pre></div>
<a id="branchesjsCStackSourceWebKit2SharedsoupWebCoreArgumentCodersSoupcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/Shared/soup/WebCoreArgumentCodersSoup.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/Shared/soup/WebCoreArgumentCodersSoup.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/Shared/soup/WebCoreArgumentCodersSoup.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,6 +1,7 @@
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2010 Apple Inc. All rights reserved.
</span><span class="cx">  * Portions Copyright (c) 2010 Motorola Mobility, Inc.  All rights reserved.
</span><ins>+ * Portions Copyright (c) 2013 Company 100 Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -25,16 +26,16 @@
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> #include &quot;config.h&quot;
</span><ins>+#include &quot;DataReference.h&quot;
</ins><span class="cx"> #include &quot;WebCoreArgumentCoders.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;CertificateInfo.h&quot;
</del><ins>+#include &lt;WebCore/CertificateInfo.h&gt;
</ins><span class="cx"> #include &lt;WebCore/ResourceError.h&gt;
</span><span class="cx"> #include &lt;WebCore/ResourceRequest.h&gt;
</span><span class="cx"> #include &lt;WebCore/ResourceResponse.h&gt;
</span><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><span class="cx"> 
</span><span class="cx"> using namespace WebCore;
</span><del>-using namespace WebKit;
</del><span class="cx"> 
</span><span class="cx"> namespace CoreIPC {
</span><span class="cx"> 
</span><span class="lines">@@ -67,7 +68,56 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void ArgumentCoder&lt;CertificateInfo&gt;::encode(ArgumentEncoder&amp; encoder, const CertificateInfo&amp; certificateInfo)
+{
+    if (!certificateInfo.certificate()) {
+        encoder &lt;&lt; false;
+        return;
+    }
</ins><span class="cx"> 
</span><ins>+    GByteArray* certificateData = 0;
+    g_object_get(G_OBJECT(certificateInfo.certificate()), &quot;certificate&quot;, &amp;certificateData, NULL);
+    if (!certificateData) {
+        encoder &lt;&lt; false;
+        return;
+    }
+
+    encoder &lt;&lt; true;
+    GRefPtr&lt;GByteArray&gt; certificate = adoptGRef(certificateData);
+    encoder.encodeVariableLengthByteArray(CoreIPC::DataReference(certificate-&gt;data, certificate-&gt;len));
+    encoder &lt;&lt; static_cast&lt;uint32_t&gt;(certificateInfo.tlsErrors());
+}
+
+bool ArgumentCoder&lt;CertificateInfo&gt;::decode(ArgumentDecoder&amp; decoder, CertificateInfo&amp; certificateInfo)
+{
+    bool hasCertificate;
+    if (!decoder.decode(hasCertificate))
+        return false;
+
+    if (!hasCertificate)
+        return true;
+
+    CoreIPC::DataReference certificateDataReference;
+    if (!decoder.decodeVariableLengthByteArray(certificateDataReference))
+        return false;
+
+    GByteArray* certificateData = g_byte_array_sized_new(certificateDataReference.size());
+    certificateData = g_byte_array_append(certificateData, certificateDataReference.data(), certificateDataReference.size());
+    GRefPtr&lt;GByteArray&gt; certificateBytes = adoptGRef(certificateData);
+
+    GTlsBackend* backend = g_tls_backend_get_default();
+    GRefPtr&lt;GTlsCertificate&gt; certificate = adoptGRef(G_TLS_CERTIFICATE(g_initable_new(
+        g_tls_backend_get_certificate_type(backend), 0, 0, &quot;certificate&quot;, certificateBytes.get(), nullptr)));
+    certificateInfo.setCertificate(certificate.get());
+
+    uint32_t tlsErrors;
+    if (!decoder.decode(tlsErrors))
+        return false;
+    certificateInfo.setTLSErrors(static_cast&lt;GTlsCertificateFlags&gt;(tlsErrors));
+
+    return true;
+}
+
</ins><span class="cx"> void ArgumentCoder&lt;ResourceError&gt;::encodePlatformData(ArgumentEncoder&amp; encoder, const ResourceError&amp; resourceError)
</span><span class="cx"> {
</span><span class="cx">     encoder &lt;&lt; CertificateInfo(resourceError);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPICCoordinatedGraphicsWKViewcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/API/C/CoordinatedGraphics/WKView.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/C/CoordinatedGraphics/WKView.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/C/CoordinatedGraphics/WKView.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -182,7 +182,7 @@
</span><span class="cx"> bool WKViewExitFullScreen(WKViewRef viewRef)
</span><span class="cx"> {
</span><span class="cx"> #if ENABLE(FULLSCREEN_API)
</span><del>-    return toImpl(viewRef)-&gt;exitFullScreen();
</del><ins>+    return toImpl(viewRef)-&gt;requestExitFullScreen();
</ins><span class="cx"> #else
</span><span class="cx">     UNUSED_PARAM(viewRef);
</span><span class="cx">     return false;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPICWKPagecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/API/C/WKPage.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/C/WKPage.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/C/WKPage.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -495,6 +495,16 @@
</span><span class="cx">     toImpl(pageRef)-&gt;setRubberBandsAtBottom(rubberBandsAtBottom);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void WKPageSetBackgroundExtendsBeyondPage(WKPageRef pageRef, bool backgroundExtendsBeyondPage)
+{
+    toImpl(pageRef)-&gt;setBackgroundExtendsBeyondPage(backgroundExtendsBeyondPage);
+}
+
+bool WKPageBackgroundExtendsBeyondPage(WKPageRef pageRef)
+{
+    return toImpl(pageRef)-&gt;backgroundExtendsBeyondPage();
+}
+
</ins><span class="cx"> void WKPageSetPaginationMode(WKPageRef pageRef, WKPaginationMode paginationMode)
</span><span class="cx"> {
</span><span class="cx">     Pagination::Mode mode;
</span><span class="lines">@@ -633,6 +643,9 @@
</span><span class="cx"> {
</span><span class="cx"> #if ENABLE(CONTEXT_MENUS)
</span><span class="cx">     toImpl(pageRef)-&gt;initializeContextMenuClient(wkClient);
</span><ins>+#else
+    UNUSED_PARAM(pageRef);
+    UNUSED_PARAM(wkClient);
</ins><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -847,6 +860,9 @@
</span><span class="cx"> {
</span><span class="cx"> #if ENABLE(CONTEXT_MENUS)
</span><span class="cx">     toImpl(page)-&gt;contextMenuItemSelected(*(toImpl(item)-&gt;data()));
</span><ins>+#else
+    UNUSED_PARAM(page);
+    UNUSED_PARAM(item);
</ins><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPICWKPageh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/API/C/WKPage.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/C/WKPage.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/C/WKPage.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -176,6 +176,9 @@
</span><span class="cx"> WK_EXPORT bool WKPageRubberBandsAtBottom(WKPageRef);
</span><span class="cx"> WK_EXPORT void WKPageSetRubberBandsAtBottom(WKPageRef, bool rubberBandsAtBottom);
</span><span class="cx"> 
</span><ins>+WK_EXPORT void WKPageSetBackgroundExtendsBeyondPage(WKPageRef, bool backgroundExtendsBeyondPage);
+WK_EXPORT bool WKPageBackgroundExtendsBeyondPage(WKPageRef);
+
</ins><span class="cx"> WK_EXPORT bool WKPageCanDelete(WKPageRef page);
</span><span class="cx"> WK_EXPORT bool WKPageHasSelectedRange(WKPageRef page);
</span><span class="cx"> WK_EXPORT bool WKPageIsContentEditable(WKPageRef page);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPICWKPagePolicyClientInternalh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebKit2/UIProcess/API/C/WKPagePolicyClientInternal.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/C/WKPagePolicyClientInternal.h                                (rev 0)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/C/WKPagePolicyClientInternal.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,58 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef WKPagePolicyClientInternal_h
+#define WKPagePolicyClientInternal_h
+
+#include &quot;WKPagePolicyClient.h&quot;
+
+#ifdef __cplusplus
+extern &quot;C&quot; {
+#endif
+
+typedef void (*WKPageDecidePolicyForNavigationActionCallback_internal)(WKPageRef page, WKFrameRef frame, WKFrameNavigationType navigationType, WKEventModifiers modifiers, WKEventMouseButton mouseButton, WKFrameRef originatingFrame, WKURLRequestRef originalRequest, WKURLRequestRef request, WKFramePolicyListenerRef listener, WKTypeRef userData, const void* clientInfo);
+
+typedef struct WKPagePolicyClientInternal {
+    WKPagePolicyClientBase                                               base;
+
+    // Version 0.
+    WKPageDecidePolicyForNavigationActionCallback_deprecatedForUseWithV0 decidePolicyForNavigationAction_deprecatedForUseWithV0;
+    WKPageDecidePolicyForNewWindowActionCallback                         decidePolicyForNewWindowAction;
+    WKPageDecidePolicyForResponseCallback_deprecatedForUseWithV0         decidePolicyForResponse_deprecatedForUseWithV0;
+    WKPageUnableToImplementPolicyCallback                                unableToImplementPolicy;
+
+    // Version 1.
+    WKPageDecidePolicyForNavigationActionCallback                        decidePolicyForNavigationAction_deprecatedForUseWithV1;
+    WKPageDecidePolicyForResponseCallback                                decidePolicyForResponse;
+
+    // Internal.
+    WKPageDecidePolicyForNavigationActionCallback_internal               decidePolicyForNavigationAction;
+} WKPagePolicyClientInternal;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // WKPagePolicyClientInternal_h
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPICWKPreferencescpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1206,16 +1206,6 @@
</span><span class="cx">     return toImpl(preferencesRef)-&gt;simpleLineLayoutDebugBordersEnabled();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WKPreferencesSetBackgroundShouldExtendBeyondPage(WKPreferencesRef preferencesRef, bool flag)
-{
-    toImpl(preferencesRef)-&gt;setBackgroundShouldExtendBeyondPage(flag);
-}
-
-bool WKPreferencesGetBackgroundShouldExtendBeyondPage(WKPreferencesRef preferencesRef)
-{
-    return toImpl(preferencesRef)-&gt;backgroundShouldExtendBeyondPage();
-}
-
</del><span class="cx"> void WKPreferencesSetMediaStreamEnabled(WKPreferencesRef preferencesRef, bool enabled)
</span><span class="cx"> {
</span><span class="cx">     toImpl(preferencesRef)-&gt;setMediaStreamEnabled(enabled);
</span><span class="lines">@@ -1245,3 +1235,13 @@
</span><span class="cx"> {
</span><span class="cx">     return toImpl(preferencesRef)-&gt;spatialNavigationEnabled();
</span><span class="cx"> }
</span><ins>+
+void WKPreferencesSetMediaSourceEnabled(WKPreferencesRef preferencesRef, bool enabled)
+{
+    toImpl(preferencesRef)-&gt;setMediaSourceEnabled(enabled);
+}
+
+bool WKPreferencesGetMediaSourceEnabled(WKPreferencesRef preferencesRef)
+{
+    return toImpl(preferencesRef)-&gt;mediaSourceEnabled();
+}
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPICWKPreferencesPrivateh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/API/C/WKPreferencesPrivate.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/C/WKPreferencesPrivate.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/C/WKPreferencesPrivate.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -304,16 +304,16 @@
</span><span class="cx"> WK_EXPORT void WKPreferencesSetSimpleLineLayoutDebugBordersEnabled(WKPreferencesRef, bool);
</span><span class="cx"> WK_EXPORT bool WKPreferencesGetSimpleLineLayoutDebugBordersEnabled(WKPreferencesRef);
</span><span class="cx"> 
</span><del>-// Defaults to false.
-WK_EXPORT void WKPreferencesSetBackgroundShouldExtendBeyondPage(WKPreferencesRef, bool);
-WK_EXPORT bool WKPreferencesGetBackgroundShouldExtendBeyondPage(WKPreferencesRef);
-
</del><span class="cx"> WK_EXPORT void WKPreferencesResetTestRunnerOverrides(WKPreferencesRef preferencesRef);
</span><span class="cx"> 
</span><span class="cx"> // Defaults to false.
</span><span class="cx"> WK_EXPORT void WKPreferencesSetUseLegacyTextAlignPositionedElementBehavior(WKPreferencesRef preferencesRef, bool enabled);
</span><span class="cx"> WK_EXPORT bool WKPreferencesUseLegacyTextAlignPositionedElementBehavior(WKPreferencesRef preferencesRef);
</span><span class="cx"> 
</span><ins>+// Defaults to false.
+WK_EXPORT void WKPreferencesSetMediaSourceEnabled(WKPreferencesRef preferencesRef, bool enabled);
+WK_EXPORT bool WKPreferencesGetMediaSourceEnabled(WKPreferencesRef preferencesRef);
+
</ins><span class="cx"> #ifdef __cplusplus
</span><span class="cx"> }
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPICgtkWKInspectorClientGtkh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/API/C/gtk/WKInspectorClientGtk.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/C/gtk/WKInspectorClientGtk.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/C/gtk/WKInspectorClientGtk.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -36,6 +36,7 @@
</span><span class="cx"> typedef void (*WKInspectorClientGtkInspectorDidCloseCallback)(WKInspectorRef inspector, const void* clientInfo);
</span><span class="cx"> typedef void (*WKInspectorClientGtkInspectedURLChangedCallback)(WKInspectorRef inspector, WKStringRef url, const void* clientInfo);
</span><span class="cx"> typedef void (*WKInspectorClientGtkDidChangeAttachedHeightCallback)(WKInspectorRef inspector, unsigned height, const void* clientInfo);
</span><ins>+typedef void (*WKInspectorClientGtkDidChangeAttachedWidthCallback)(WKInspectorRef inspector, unsigned width, const void* clientInfo);
</ins><span class="cx"> 
</span><span class="cx"> typedef struct WKInspectorClientGtkBase {
</span><span class="cx">     int                                                 version;
</span><span class="lines">@@ -52,6 +53,7 @@
</span><span class="cx">     WKInspectorClientGtkInspectorCallback               attach;
</span><span class="cx">     WKInspectorClientGtkInspectorCallback               detach;
</span><span class="cx">     WKInspectorClientGtkDidChangeAttachedHeightCallback didChangeAttachedHeight;
</span><ins>+    WKInspectorClientGtkDidChangeAttachedWidthCallback  didChangeAttachedWidth;
</ins><span class="cx"> } WKInspectorClientGtkV0;
</span><span class="cx"> 
</span><span class="cx"> WK_EXPORT void WKInspectorSetInspectorClientGtk(WKInspectorRef inspectorRef, const WKInspectorClientGtkBase* client);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPICmacWKContextPrivateMacmm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/API/C/mac/WKContextPrivateMac.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/C/mac/WKContextPrivateMac.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/C/mac/WKContextPrivateMac.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -27,6 +27,7 @@
</span><span class="cx"> #import &quot;WKContextPrivateMac.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #import &quot;APIArray.h&quot;
</span><ins>+#import &quot;APINumber.h&quot;
</ins><span class="cx"> #import &quot;ImmutableDictionary.h&quot;
</span><span class="cx"> #import &quot;PluginInfoStore.h&quot;
</span><span class="cx"> #import &quot;PluginInformation.h&quot;
</span><span class="lines">@@ -37,7 +38,6 @@
</span><span class="cx"> #import &quot;WKSharedAPICast.h&quot;
</span><span class="cx"> #import &quot;WKStringCF.h&quot;
</span><span class="cx"> #import &quot;WebContext.h&quot;
</span><del>-#import &quot;WebNumber.h&quot;
</del><span class="cx"> #import &quot;WebString.h&quot;
</span><span class="cx"> #import &lt;WebKitSystemInterface.h&gt;
</span><span class="cx"> #import &lt;wtf/RetainPtr.h&gt;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPICocoaWKBrowsingContextControllermm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/API/Cocoa/WKBrowsingContextController.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/Cocoa/WKBrowsingContextController.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/Cocoa/WKBrowsingContextController.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -84,6 +84,16 @@
</span><span class="cx">         [m_controller didChangeValueForKey:@&quot;title&quot;];
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    virtual void willChangeActiveURL() OVERRIDE
+    {
+        [m_controller willChangeValueForKey:@&quot;activeURL&quot;];
+    }
+
+    virtual void didChangeActiveURL() OVERRIDE
+    {
+        [m_controller didChangeValueForKey:@&quot;activeURL&quot;];
+    }
+
</ins><span class="cx">     virtual void willChangeEstimatedProgress() OVERRIDE
</span><span class="cx">     {
</span><span class="cx">         [m_controller willChangeValueForKey:@&quot;estimatedProgress&quot;];
</span><span class="lines">@@ -101,6 +111,7 @@
</span><span class="cx"> NSString * const WKActionNavigationTypeKey = @&quot;WKActionNavigationTypeKey&quot;;
</span><span class="cx"> NSString * const WKActionMouseButtonKey = @&quot;WKActionMouseButtonKey&quot;;
</span><span class="cx"> NSString * const WKActionModifierFlagsKey = @&quot;WKActionModifierFlagsKey&quot;;
</span><ins>+NSString * const WKActionOriginalURLRequestKey = @&quot;WKActionOriginalURLRequestKey&quot;;
</ins><span class="cx"> NSString * const WKActionURLRequestKey = @&quot;WKActionURLRequestKey&quot;;
</span><span class="cx"> NSString * const WKActionURLResponseKey = @&quot;WKActionURLResponseKey&quot;;
</span><span class="cx"> NSString * const WKActionFrameNameKey = @&quot;WKActionFrameNameKey&quot;;
</span><span class="lines">@@ -501,6 +512,15 @@
</span><span class="cx">     [loadDelegate browsingContextControllerDidChangeBackForwardList:browsingContext addedItem:added removedItems:removed];
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+static void processDidCrash(WKPageRef page, const void* clientInfo)
+{
+    WKBrowsingContextController *browsingContext = (WKBrowsingContextController *)clientInfo;
+    auto loadDelegate = browsingContext-&gt;_loadDelegate.get();
+
+    if ([loadDelegate respondsToSelector:@selector(browsingContextControllerWebProcessDidCrash:)])
+        [(id &lt;WKBrowsingContextLoadDelegatePrivate&gt;)loadDelegate browsingContextControllerWebProcessDidCrash:browsingContext];
+}
+
</ins><span class="cx"> static void setUpPageLoaderClient(WKBrowsingContextController *browsingContext, WebPageProxy&amp; page)
</span><span class="cx"> {
</span><span class="cx">     WKPageLoaderClientV3 loaderClient;
</span><span class="lines">@@ -523,6 +543,8 @@
</span><span class="cx">     loaderClient.didFinishProgress = didFinishProgress;
</span><span class="cx">     loaderClient.didChangeBackForwardList = didChangeBackForwardList;
</span><span class="cx"> 
</span><ins>+    loaderClient.processDidCrash = processDidCrash;
+
</ins><span class="cx">     page.initializeLoaderClient(&amp;loaderClient.base);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -551,13 +573,13 @@
</span><span class="cx"> 
</span><span class="cx"> static void setUpPagePolicyClient(WKBrowsingContextController *browsingContext, WebPageProxy&amp; page)
</span><span class="cx"> {
</span><del>-    WKPagePolicyClientV1 policyClient;
</del><ins>+    WKPagePolicyClientInternal policyClient;
</ins><span class="cx">     memset(&amp;policyClient, 0, sizeof(policyClient));
</span><span class="cx"> 
</span><del>-    policyClient.base.version = 1;
</del><ins>+    policyClient.base.version = 2;
</ins><span class="cx">     policyClient.base.clientInfo = browsingContext;
</span><span class="cx"> 
</span><del>-    policyClient.decidePolicyForNavigationAction = [](WKPageRef page, WKFrameRef frame, WKFrameNavigationType navigationType, WKEventModifiers modifiers, WKEventMouseButton mouseButton, WKFrameRef originatingFrame, WKURLRequestRef request, WKFramePolicyListenerRef listener, WKTypeRef userData, const void* clientInfo)
</del><ins>+    policyClient.decidePolicyForNavigationAction = [](WKPageRef page, WKFrameRef frame, WKFrameNavigationType navigationType, WKEventModifiers modifiers, WKEventMouseButton mouseButton, WKFrameRef originatingFrame, WKURLRequestRef originalRequest, WKURLRequestRef request, WKFramePolicyListenerRef listener, WKTypeRef userData, const void* clientInfo)
</ins><span class="cx">     {
</span><span class="cx">         WKBrowsingContextController *browsingContext = (WKBrowsingContextController *)clientInfo;
</span><span class="cx">         auto policyDelegate = browsingContext-&gt;_policyDelegate.get();
</span><span class="lines">@@ -568,6 +590,7 @@
</span><span class="cx">                 WKActionNavigationTypeKey: @(navigationType),
</span><span class="cx">                 WKActionModifierFlagsKey: @(modifiers),
</span><span class="cx">                 WKActionMouseButtonKey: @(mouseButton),
</span><ins>+                WKActionOriginalURLRequestKey: adoptNS(WKURLRequestCopyNSURLRequest(originalRequest)).get(),
</ins><span class="cx">                 WKActionURLRequestKey: adoptNS(WKURLRequestCopyNSURLRequest(request)).get()
</span><span class="cx">             };
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPICocoaWKBrowsingContextLoadDelegatePrivateh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/API/Cocoa/WKBrowsingContextLoadDelegatePrivate.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/Cocoa/WKBrowsingContextLoadDelegatePrivate.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/Cocoa/WKBrowsingContextLoadDelegatePrivate.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -31,4 +31,6 @@
</span><span class="cx"> - (BOOL)browsingContextController:(WKBrowsingContextController *)sender canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace;
</span><span class="cx"> - (void)browsingContextController:(WKBrowsingContextController *)sender didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge;
</span><span class="cx"> 
</span><ins>+- (void)browsingContextControllerWebProcessDidCrash:(WKBrowsingContextController *)sender;
+
</ins><span class="cx"> @end
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPICocoaWKBrowsingContextPolicyDelegateh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/API/Cocoa/WKBrowsingContextPolicyDelegate.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/Cocoa/WKBrowsingContextPolicyDelegate.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/Cocoa/WKBrowsingContextPolicyDelegate.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -33,6 +33,7 @@
</span><span class="cx"> WK_EXPORT extern NSString * const WKActionNavigationTypeKey;      // NSNumber (WKNavigationType)
</span><span class="cx"> WK_EXPORT extern NSString * const WKActionMouseButtonKey;         // NSNumber (0 for left button, 1 for middle button, 2 for right button)
</span><span class="cx"> WK_EXPORT extern NSString * const WKActionModifierFlagsKey;       // NSNumber (unsigned)
</span><ins>+WK_EXPORT extern NSString * const WKActionOriginalURLRequestKey;  // NSURLRequest
</ins><span class="cx"> WK_EXPORT extern NSString * const WKActionURLRequestKey;          // NSURLRequest
</span><span class="cx"> WK_EXPORT extern NSString * const WKActionURLResponseKey;         // NSURLResponse
</span><span class="cx"> WK_EXPORT extern NSString * const WKActionFrameNameKey;           // NSString
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPICocoaWKConnectionmm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/API/Cocoa/WKConnection.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/Cocoa/WKConnection.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/Cocoa/WKConnection.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -40,15 +40,13 @@
</span><span class="cx"> using namespace WebKit;
</span><span class="cx"> 
</span><span class="cx"> @implementation WKConnection {
</span><del>-    API::ObjectStorage&lt;WebConnection&gt; _connection;
</del><span class="cx">     RetainPtr&lt;WKRemoteObjectRegistry&gt; _remoteObjectRegistry;
</span><del>-
</del><span class="cx">     WeakObjCPtr&lt;id &lt;WKConnectionDelegate&gt;&gt; _delegate;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)dealloc
</span><span class="cx"> {
</span><del>-    _connection-&gt;~WebConnection();
</del><ins>+    self._connection.~WebConnection();
</ins><span class="cx"> 
</span><span class="cx">     [super dealloc];
</span><span class="cx"> }
</span><span class="lines">@@ -98,30 +96,35 @@
</span><span class="cx"> {
</span><span class="cx">     _delegate = delegate;
</span><span class="cx">     if (delegate)
</span><del>-        setUpClient(self, *_connection);
</del><ins>+        setUpClient(self, self._connection);
</ins><span class="cx">     else
</span><del>-        _connection-&gt;initializeConnectionClient(nullptr);
</del><ins>+        self._connection.initializeConnectionClient(nullptr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)sendMessageWithName:(NSString *)messageName body:(id)messageBody
</span><span class="cx"> {
</span><span class="cx">     RefPtr&lt;ObjCObjectGraph&gt; wkMessageBody = ObjCObjectGraph::create(messageBody);
</span><del>-    _connection-&gt;postMessage(messageName, wkMessageBody.get());
</del><ins>+    self._connection.postMessage(messageName, wkMessageBody.get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (WKRemoteObjectRegistry *)remoteObjectRegistry
</span><span class="cx"> {
</span><span class="cx">     if (!_remoteObjectRegistry)
</span><del>-        _remoteObjectRegistry = adoptNS([[WKRemoteObjectRegistry alloc] _initWithConnectionRef:toAPI(_connection.get())]);
</del><ins>+        _remoteObjectRegistry = adoptNS([[WKRemoteObjectRegistry alloc] _initWithConnectionRef:toAPI(&amp;self._connection)]);
</ins><span class="cx"> 
</span><span class="cx">     return _remoteObjectRegistry.get();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+- (WebConnection&amp;)_connection
+{
+    return *static_cast&lt;WebConnection*&gt;(object_getIndexedIvars(self));
+}
+
</ins><span class="cx"> #pragma mark WKObject protocol implementation
</span><span class="cx"> 
</span><span class="cx"> - (API::Object&amp;)_apiObject
</span><span class="cx"> {
</span><del>-    return *_connection;
</del><ins>+    return *static_cast&lt;API::Object*&gt;(object_getIndexedIvars(self));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> @end
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPICocoaWKViewPrivateh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -77,6 +77,8 @@
</span><span class="cx"> @property (readwrite) BOOL shouldClipToVisibleRect;
</span><span class="cx"> @property (readwrite) BOOL shouldExpandToViewHeightForAutoLayout;
</span><span class="cx"> @property (readonly, getter=isUsingUISideCompositing) BOOL usingUISideCompositing;
</span><ins>+@property (readwrite) BOOL allowsMagnification;
+@property (readwrite) double magnification;
</ins><span class="cx"> 
</span><span class="cx"> @property(copy, nonatomic) NSColor *underlayColor;
</span><span class="cx"> 
</span><span class="lines">@@ -94,6 +96,8 @@
</span><span class="cx"> - (void)forceAsyncDrawingAreaSizeUpdate:(NSSize)size;
</span><span class="cx"> - (void)waitForAsyncDrawingAreaSizeUpdate;
</span><span class="cx"> 
</span><ins>+- (void)setMagnification:(double)magnification centeredAtPoint:(NSPoint)point;
+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> @end
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPIgtkPageClientImplcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -289,4 +289,49 @@
</span><span class="cx">     notImplemented();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if ENABLE(FULLSCREEN_API)
+WebFullScreenManagerProxyClient&amp; PageClientImpl::fullScreenManagerProxyClient()
+{
+    return *this;
+}
+
+void PageClientImpl::closeFullScreenManager()
+{
+    notImplemented();
+}
+
+bool PageClientImpl::isFullScreen()
+{
+    notImplemented();
+    return false;
+}
+
+void PageClientImpl::enterFullScreen()
+{
+    if (!m_viewWidget)
+        return;
+
+    webkitWebViewBaseEnterFullScreen(WEBKIT_WEB_VIEW_BASE(m_viewWidget));
+}
+
+void PageClientImpl::exitFullScreen()
+{
+    if (!m_viewWidget)
+        return;
+
+    webkitWebViewBaseExitFullScreen(WEBKIT_WEB_VIEW_BASE(m_viewWidget));
+}
+
+void PageClientImpl::beganEnterFullScreen(const IntRect&amp; initialFrame, const IntRect&amp; finalFrame)
+{
+    notImplemented();
+}
+
+void PageClientImpl::beganExitFullScreen(const IntRect&amp; initialFrame, const IntRect&amp; finalFrame)
+{
+    notImplemented();
+}
+
+#endif // ENABLE(FULLSCREEN_API)
+
</ins><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPIgtkPageClientImplh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -31,6 +31,7 @@
</span><span class="cx"> #include &quot;DefaultUndoController.h&quot;
</span><span class="cx"> #include &quot;KeyBindingTranslator.h&quot;
</span><span class="cx"> #include &quot;PageClient.h&quot;
</span><ins>+#include &quot;WebFullScreenManagerProxy.h&quot;
</ins><span class="cx"> #include &quot;WebPageProxy.h&quot;
</span><span class="cx"> #include &quot;WindowsKeyboardCodes.h&quot;
</span><span class="cx"> #include &lt;WebCore/IntSize.h&gt;
</span><span class="lines">@@ -41,7 +42,11 @@
</span><span class="cx"> class DrawingAreaProxy;
</span><span class="cx"> class WebPageNamespace;
</span><span class="cx"> 
</span><del>-class PageClientImpl : public PageClient {
</del><ins>+class PageClientImpl : public PageClient
+#if ENABLE(FULLSCREEN_API)
+    , public WebFullScreenManagerProxyClient
+#endif
+{
</ins><span class="cx"> public:
</span><span class="cx">     ~PageClientImpl();
</span><span class="cx">     static PassOwnPtr&lt;PageClientImpl&gt; create(GtkWidget* viewWidget)
</span><span class="lines">@@ -54,6 +59,7 @@
</span><span class="cx"> private:
</span><span class="cx">     explicit PageClientImpl(GtkWidget*);
</span><span class="cx"> 
</span><ins>+    // PageClient
</ins><span class="cx">     virtual std::unique_ptr&lt;DrawingAreaProxy&gt; createDrawingAreaProxy() OVERRIDE;
</span><span class="cx">     virtual void setViewNeedsDisplay(const WebCore::IntRect&amp;) OVERRIDE;
</span><span class="cx">     virtual void displayView() OVERRIDE;
</span><span class="lines">@@ -101,6 +107,21 @@
</span><span class="cx">     virtual void handleDownloadRequest(DownloadProxy*) OVERRIDE;
</span><span class="cx">     virtual void didCommitLoadForMainFrame() OVERRIDE;
</span><span class="cx"> 
</span><ins>+    // Auxiliary Client Creation
+#if ENABLE(FULLSCREEN_API)
+    virtual WebFullScreenManagerProxyClient&amp; fullScreenManagerProxyClient() FINAL;
+#endif
+
+#if ENABLE(FULLSCREEN_API)
+    // WebFullScreenManagerProxyClient
+    virtual void closeFullScreenManager() OVERRIDE;
+    virtual bool isFullScreen() OVERRIDE;
+    virtual void enterFullScreen() OVERRIDE;
+    virtual void exitFullScreen() OVERRIDE;
+    virtual void beganEnterFullScreen(const WebCore::IntRect&amp; initialFrame, const WebCore::IntRect&amp; finalFrame) OVERRIDE;
+    virtual void beganExitFullScreen(const WebCore::IntRect&amp; initialFrame, const WebCore::IntRect&amp; finalFrame) OVERRIDE;
+#endif
+
</ins><span class="cx">     // Members of PageClientImpl class
</span><span class="cx">     GtkWidget* m_viewWidget;
</span><span class="cx">     DefaultUndoController m_undoController;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPIgtkWebKitBatteryProvidercpp"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitBatteryProvider.cpp (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitBatteryProvider.cpp                                (rev 0)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitBatteryProvider.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,106 @@
</span><ins>+/*
+ * Copyright (C) 2013 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;WebKitBatteryProvider.h&quot;
+
+#if ENABLE(BATTERY_STATUS)
+
+#include &quot;WebBatteryManagerProxy.h&quot;
+#include &quot;WebBatteryStatus.h&quot;
+#include &lt;limits&gt;
+
+using namespace WebKit;
+
+static inline WebKitBatteryProvider* toBatteryProvider(const void* clientInfo)
+{
+    return static_cast&lt;WebKitBatteryProvider*&gt;(const_cast&lt;void*&gt;(clientInfo));
+}
+
+static void startUpdatingCallback(WKBatteryManagerRef batteryManager, const void* clientInfo)
+{
+    toBatteryProvider(clientInfo)-&gt;startUpdating();
+}
+
+static void stopUpdatingCallback(WKBatteryManagerRef batteryManager, const void* clientInfo)
+{
+    toBatteryProvider(clientInfo)-&gt;stopUpdating();
+}
+
+PassRefPtr&lt;WebKitBatteryProvider&gt; WebKitBatteryProvider::create(WebBatteryManagerProxy* batteryManager)
+{
+    return adoptRef(new WebKitBatteryProvider(batteryManager));
+}
+
+WebKitBatteryProvider::WebKitBatteryProvider(WebBatteryManagerProxy* batteryManager)
+    : m_batteryManager(batteryManager)
+    , m_provider(this)
+{
+    ASSERT(batteryManager);
+
+    WKBatteryProviderV0 wkBatteryProvider = {
+        {
+            0, // version
+            this // clientInfo
+        },
+        startUpdatingCallback,
+        stopUpdatingCallback
+    };
+    WKBatteryManagerSetProvider(toAPI(batteryManager), &amp;wkBatteryProvider.base);
+}
+
+WebKitBatteryProvider::~WebKitBatteryProvider()
+{
+    m_provider.stopUpdating();
+}
+
+void WebKitBatteryProvider::startUpdating()
+{
+    m_provider.startUpdating();
+}
+
+void WebKitBatteryProvider::stopUpdating()
+{
+    m_provider.stopUpdating();
+}
+
+void WebKitBatteryProvider::updateBatteryStatus(WebCore::BatteryProviderUPowerStatus status, double secondsRemaining, double batteryLevel)
+{
+    RefPtr&lt;WebBatteryStatus&gt; batteryStatus;
+
+    switch (status) {
+    case WebCore::NotAvailable:
+        // When an implementation cannot report battery status, the default values should be used.
+        batteryStatus = WebBatteryStatus::create(true, std::numeric_limits&lt;double&gt;::infinity(),
+            std::numeric_limits&lt;double&gt;::infinity(), 1.0);
+        break;
+    case WebCore::Charging:
+        batteryStatus = WebBatteryStatus::create(true, secondsRemaining, 0, batteryLevel);
+        break;
+    case WebCore::Discharging:
+        batteryStatus = WebBatteryStatus::create(false, 0, secondsRemaining, batteryLevel);
+        break;
+    default:
+        ASSERT_NOT_REACHED();
+    }
+
+    m_batteryManager-&gt;providerUpdateBatteryStatus(batteryStatus.get());
+}
+
+#endif // ENABLE(BATTERY_STATUS)
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPIgtkWebKitBatteryProviderh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitBatteryProvider.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitBatteryProvider.h                                (rev 0)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitBatteryProvider.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,55 @@
</span><ins>+/*
+ * Copyright (C) 2013 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef WebKitBatteryProvider_h
+#define WebKitBatteryProvider_h
+
+#if ENABLE(BATTERY_STATUS)
+
+#include &quot;WebKitPrivate.h&quot;
+#include &lt;WebCore/BatteryProviderUPowerClient.h&gt;
+#include &lt;WebCore/BatteryProviderUPower.h&gt;
+#include &lt;wtf/PassRefPtr.h&gt;
+#include &lt;wtf/RefCounted.h&gt;
+
+namespace WebKit {
+
+class WebKitBatteryProvider : public RefCounted&lt;WebKitBatteryProvider&gt;, public WebCore::BatteryProviderUPowerClient {
+public:
+    static PassRefPtr&lt;WebKitBatteryProvider&gt; create(WebBatteryManagerProxy*);
+    virtual ~WebKitBatteryProvider();
+
+    void startUpdating();
+    void stopUpdating();
+
+private:
+    WebKitBatteryProvider(WebBatteryManagerProxy*);
+
+    // WebCore::BatteryProviderUPowerClient
+    virtual void updateBatteryStatus(WebCore::BatteryProviderUPowerStatus, double secondsRemaining, double batteryLevel);
+
+    RefPtr&lt;WebBatteryManagerProxy&gt; m_batteryManager;
+    WebCore::BatteryProviderUPower m_provider;
+};
+
+}
+
+#endif // ENABLE(BATTERY_STATUS)
+
+#endif // WebKitBatteryProvider_h
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPIgtkWebKitCertificateInfoPrivateh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitCertificateInfoPrivate.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitCertificateInfoPrivate.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitCertificateInfoPrivate.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -20,9 +20,9 @@
</span><span class="cx"> #ifndef WebKitCertificateInfoPrivate_h
</span><span class="cx"> #define WebKitCertificateInfoPrivate_h
</span><span class="cx"> 
</span><del>-#include &quot;CertificateInfo.h&quot;
</del><span class="cx"> #include &quot;WebKitCertificateInfo.h&quot;
</span><span class="cx"> #include &quot;WebKitPrivate.h&quot;
</span><ins>+#include &lt;WebCore/CertificateInfo.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> struct _WebKitCertificateInfo {
</span><span class="cx">     _WebKitCertificateInfo(GTlsCertificate* certificate, GTlsCertificateFlags tlsErrors)
</span><span class="lines">@@ -35,9 +35,9 @@
</span><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    WebKit::CertificateInfo certificateInfo;
</del><ins>+    WebCore::CertificateInfo certificateInfo;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><del>-const WebKit::CertificateInfo&amp; webkitCertificateInfoGetCertificateInfo(WebKitCertificateInfo*);
</del><ins>+const WebCore::CertificateInfo&amp; webkitCertificateInfoGetCertificateInfo(WebKitCertificateInfo*);
</ins><span class="cx"> 
</span><span class="cx"> #endif // WebKitCertificateInfoPrivate_h
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPIgtkWebKitInjectedBundleClientcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitInjectedBundleClient.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitInjectedBundleClient.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitInjectedBundleClient.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -35,13 +35,13 @@
</span><span class="cx"> {
</span><span class="cx">     if (g_str_equal(messageName, &quot;DidInitiateLoadForResource&quot;)) {
</span><span class="cx">         WebFrameProxy* frame = static_cast&lt;WebFrameProxy*&gt;(message.get(String::fromUTF8(&quot;Frame&quot;)));
</span><del>-        WebUInt64* resourceIdentifier = static_cast&lt;WebUInt64*&gt;(message.get(String::fromUTF8(&quot;Identifier&quot;)));
</del><ins>+        API::UInt64* resourceIdentifier = static_cast&lt;API::UInt64*&gt;(message.get(String::fromUTF8(&quot;Identifier&quot;)));
</ins><span class="cx">         WebURLRequest* webRequest = static_cast&lt;WebURLRequest*&gt;(message.get(String::fromUTF8(&quot;Request&quot;)));
</span><span class="cx">         GRefPtr&lt;WebKitURIRequest&gt; request = adoptGRef(webkitURIRequestCreateForResourceRequest(webRequest-&gt;resourceRequest()));
</span><span class="cx"> 
</span><span class="cx">         webkitWebViewResourceLoadStarted(webView, frame, resourceIdentifier-&gt;value(), request.get());
</span><span class="cx">     } else if (g_str_equal(messageName, &quot;DidSendRequestForResource&quot;)) {
</span><del>-        WebUInt64* resourceIdentifier = static_cast&lt;WebUInt64*&gt;(message.get(String::fromUTF8(&quot;Identifier&quot;)));
</del><ins>+        API::UInt64* resourceIdentifier = static_cast&lt;API::UInt64*&gt;(message.get(String::fromUTF8(&quot;Identifier&quot;)));
</ins><span class="cx">         GRefPtr&lt;WebKitWebResource&gt; resource = webkitWebViewGetLoadingWebResource(webView, resourceIdentifier-&gt;value());
</span><span class="cx">         if (!resource)
</span><span class="cx">             return;
</span><span class="lines">@@ -53,7 +53,7 @@
</span><span class="cx"> 
</span><span class="cx">         webkitWebResourceSentRequest(resource.get(), request.get(), redirectResponse.get());
</span><span class="cx">     } else if (g_str_equal(messageName, &quot;DidReceiveResponseForResource&quot;)) {
</span><del>-        WebUInt64* resourceIdentifier = static_cast&lt;WebUInt64*&gt;(message.get(String::fromUTF8(&quot;Identifier&quot;)));
</del><ins>+        API::UInt64* resourceIdentifier = static_cast&lt;API::UInt64*&gt;(message.get(String::fromUTF8(&quot;Identifier&quot;)));
</ins><span class="cx">         GRefPtr&lt;WebKitWebResource&gt; resource = webkitWebViewGetLoadingWebResource(webView, resourceIdentifier-&gt;value());
</span><span class="cx">         if (!resource)
</span><span class="cx">             return;
</span><span class="lines">@@ -63,15 +63,15 @@
</span><span class="cx"> 
</span><span class="cx">         webkitWebResourceSetResponse(resource.get(), response.get());
</span><span class="cx">     } else if (g_str_equal(messageName, &quot;DidReceiveContentLengthForResource&quot;)) {
</span><del>-        WebUInt64* resourceIdentifier = static_cast&lt;WebUInt64*&gt;(message.get(String::fromUTF8(&quot;Identifier&quot;)));
</del><ins>+        API::UInt64* resourceIdentifier = static_cast&lt;API::UInt64*&gt;(message.get(String::fromUTF8(&quot;Identifier&quot;)));
</ins><span class="cx">         GRefPtr&lt;WebKitWebResource&gt; resource = webkitWebViewGetLoadingWebResource(webView, resourceIdentifier-&gt;value());
</span><span class="cx">         if (!resource)
</span><span class="cx">             return;
</span><span class="cx"> 
</span><del>-        WebUInt64* contentLength = static_cast&lt;WebUInt64*&gt;(message.get(String::fromUTF8(&quot;ContentLength&quot;)));
</del><ins>+        API::UInt64* contentLength = static_cast&lt;API::UInt64*&gt;(message.get(String::fromUTF8(&quot;ContentLength&quot;)));
</ins><span class="cx">         webkitWebResourceNotifyProgress(resource.get(), contentLength-&gt;value());
</span><span class="cx">     } else if (g_str_equal(messageName, &quot;DidFinishLoadForResource&quot;)) {
</span><del>-        WebUInt64* resourceIdentifier = static_cast&lt;WebUInt64*&gt;(message.get(String::fromUTF8(&quot;Identifier&quot;)));
</del><ins>+        API::UInt64* resourceIdentifier = static_cast&lt;API::UInt64*&gt;(message.get(String::fromUTF8(&quot;Identifier&quot;)));
</ins><span class="cx">         GRefPtr&lt;WebKitWebResource&gt; resource = webkitWebViewGetLoadingWebResource(webView, resourceIdentifier-&gt;value());
</span><span class="cx">         if (!resource)
</span><span class="cx">             return;
</span><span class="lines">@@ -79,7 +79,7 @@
</span><span class="cx">         webkitWebResourceFinished(resource.get());
</span><span class="cx">         webkitWebViewRemoveLoadingWebResource(webView, resourceIdentifier-&gt;value());
</span><span class="cx">     } else if (g_str_equal(messageName, &quot;DidFailLoadForResource&quot;)) {
</span><del>-        WebUInt64* resourceIdentifier = static_cast&lt;WebUInt64*&gt;(message.get(String::fromUTF8(&quot;Identifier&quot;)));
</del><ins>+        API::UInt64* resourceIdentifier = static_cast&lt;API::UInt64*&gt;(message.get(String::fromUTF8(&quot;Identifier&quot;)));
</ins><span class="cx">         GRefPtr&lt;WebKitWebResource&gt; resource = webkitWebViewGetLoadingWebResource(webView, resourceIdentifier-&gt;value());
</span><span class="cx">         if (!resource)
</span><span class="cx">             return;
</span><span class="lines">@@ -92,7 +92,7 @@
</span><span class="cx">         webkitWebResourceFailed(resource.get(), resourceError.get());
</span><span class="cx">         webkitWebViewRemoveLoadingWebResource(webView, resourceIdentifier-&gt;value());
</span><span class="cx">     } else if (g_str_equal(messageName, &quot;DidGetSnapshot&quot;)) {
</span><del>-        WebUInt64* callbackID = static_cast&lt;WebUInt64*&gt;(message.get(&quot;CallbackID&quot;));
</del><ins>+        API::UInt64* callbackID = static_cast&lt;API::UInt64*&gt;(message.get(&quot;CallbackID&quot;));
</ins><span class="cx">         WebImage* image = static_cast&lt;WebImage*&gt;(message.get(&quot;Snapshot&quot;));
</span><span class="cx">         webKitWebViewDidReceiveSnapshot(webView, callbackID-&gt;value(), image);
</span><span class="cx">     } else
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPIgtkWebKitSettingscpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -137,7 +137,8 @@
</span><span class="cx">     PROP_ENABLE_ACCELERATED_2D_CANVAS,
</span><span class="cx">     PROP_ENABLE_WRITE_CONSOLE_MESSAGES_TO_STDOUT,
</span><span class="cx">     PROP_ENABLE_MEDIA_STREAM,
</span><del>-    PROP_ENABLE_SPATIAL_NAVIGATION
</del><ins>+    PROP_ENABLE_SPATIAL_NAVIGATION,
+    PROP_ENABLE_MEDIASOURCE
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> static void webKitSettingsConstructed(GObject* object)
</span><span class="lines">@@ -305,6 +306,9 @@
</span><span class="cx">     case PROP_ENABLE_SPATIAL_NAVIGATION:
</span><span class="cx">         webkit_settings_set_enable_spatial_navigation(settings, g_value_get_boolean(value));
</span><span class="cx">         break;
</span><ins>+    case PROP_ENABLE_MEDIASOURCE:
+        webkit_settings_set_enable_mediasource(settings, g_value_get_boolean(value));
+        break;
</ins><span class="cx">     default:
</span><span class="cx">         G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, paramSpec);
</span><span class="cx">         break;
</span><span class="lines">@@ -457,6 +461,9 @@
</span><span class="cx">     case PROP_ENABLE_SPATIAL_NAVIGATION:
</span><span class="cx">         g_value_set_boolean(value, webkit_settings_get_enable_spatial_navigation(settings));
</span><span class="cx">         break;
</span><ins>+    case PROP_ENABLE_MEDIASOURCE:
+        g_value_set_boolean(value, webkit_settings_get_enable_mediasource(settings));
+        break;
</ins><span class="cx"> 
</span><span class="cx">     default:
</span><span class="cx">         G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, paramSpec);
</span><span class="lines">@@ -1189,6 +1196,25 @@
</span><span class="cx">             FALSE,
</span><span class="cx">             readWriteConstructParamFlags));
</span><span class="cx"> 
</span><ins>+    /**
+     * WebKitSettings:enable-mediasource:
+     *
+     * Enable or disable support for MediaSource on pages. MediaSource is an
+     * experimental proposal which extends HTMLMediaElement to allow
+     * JavaScript to generate media streams for playback.  The standard is
+     * currently a work-in-progress by the W3C HTML Media Task Force.
+     *
+     * See also http://www.w3.org/TR/media-source/
+     *
+     * Since: 2.4
+     */
+    g_object_class_install_property(gObjectClass,
+        PROP_ENABLE_MEDIASOURCE,
+        g_param_spec_boolean(&quot;enable-mediasource&quot;,
+            _(&quot;Enable MediaSource&quot;),
+            _(&quot;Whether MediaSource should be enabled.&quot;),
+            FALSE,
+            readWriteConstructParamFlags));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebPreferences* webkitSettingsGetPreferences(WebKitSettings* settings)
</span><span class="lines">@@ -2932,3 +2958,42 @@
</span><span class="cx"> 
</span><span class="cx">     return settings-&gt;priv-&gt;preferences-&gt;spatialNavigationEnabled();
</span><span class="cx"> }
</span><ins>+
+/**
+ * webkit_settings_get_enable_mediasource:
+ * @settings: a #WebKitSettings
+ *
+ * Get the #WebKitSettings:enable-mediasource property.
+ *
+ * Returns: %TRUE If MediaSource support is enabled or %FALSE otherwise.
+ *
+ * Since: 2.4
+ */
+gboolean webkit_settings_get_enable_mediasource(WebKitSettings* settings)
+{
+    g_return_val_if_fail(WEBKIT_IS_SETTINGS(settings), FALSE);
+
+    return settings-&gt;priv-&gt;preferences-&gt;mediaSourceEnabled();
+}
+
+/**
+ * webkit_settings_set_enable_mediasource:
+ * @settings: a #WebKitSettings
+ * @enabled: Value to be set
+ *
+ * Set the #WebKitSettings:enable-mediasource property.
+ *
+ * Since: 2.4
+ */
+void webkit_settings_set_enable_mediasource(WebKitSettings* settings, gboolean enabled)
+{
+    g_return_if_fail(WEBKIT_IS_SETTINGS(settings));
+
+    WebKitSettingsPrivate* priv = settings-&gt;priv;
+    bool currentValue = priv-&gt;preferences-&gt;mediaSourceEnabled();
+    if (currentValue == enabled)
+        return;
+
+    priv-&gt;preferences-&gt;setMediaSourceEnabled(enabled);
+    g_object_notify(G_OBJECT(settings), &quot;enable-mediasource&quot;);
+}
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPIgtkWebKitSettingsh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -407,6 +407,13 @@
</span><span class="cx"> webkit_settings_set_enable_spatial_navigation                  (WebKitSettings *settings,
</span><span class="cx">                                                                 gboolean        enabled);
</span><span class="cx"> 
</span><ins>+WEBKIT_API gboolean
+webkit_settings_get_enable_mediasource                         (WebKitSettings *settings);
+
+WEBKIT_API void
+webkit_settings_set_enable_mediasource                         (WebKitSettings *settings,
+                                                                gboolean        enabled);
+
</ins><span class="cx"> G_END_DECLS
</span><span class="cx"> 
</span><span class="cx"> #endif /* WebKitSettings_h */
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPIgtkWebKitWebContextcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -20,9 +20,11 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;WebKitWebContext.h&quot;
</span><span class="cx"> 
</span><ins>+#include &quot;WebBatteryManagerProxy.h&quot;
</ins><span class="cx"> #include &quot;WebCertificateInfo.h&quot;
</span><span class="cx"> #include &quot;WebCookieManagerProxy.h&quot;
</span><span class="cx"> #include &quot;WebGeolocationManagerProxy.h&quot;
</span><ins>+#include &quot;WebKitBatteryProvider.h&quot;
</ins><span class="cx"> #include &quot;WebKitCertificateInfoPrivate.h&quot;
</span><span class="cx"> #include &quot;WebKitCookieManagerPrivate.h&quot;
</span><span class="cx"> #include &quot;WebKitDownloadClient.h&quot;
</span><span class="lines">@@ -139,6 +141,9 @@
</span><span class="cx"> #if ENABLE(GEOLOCATION)
</span><span class="cx">     RefPtr&lt;WebKitGeolocationProvider&gt; geolocationProvider;
</span><span class="cx"> #endif
</span><ins>+#if ENABLE(BATTERY_STATUS)
+    RefPtr&lt;WebKitBatteryProvider&gt; batteryProvider;
+#endif
</ins><span class="cx"> #if ENABLE(SPELLCHECK)
</span><span class="cx">     OwnPtr&lt;WebKitTextChecker&gt; textChecker;
</span><span class="cx"> #endif
</span><span class="lines">@@ -199,6 +204,9 @@
</span><span class="cx">     priv-&gt;context = WebContext::create(WebCore::filenameToString(injectedBundleFilename().data()));
</span><span class="cx">     priv-&gt;requestManager = webContext-&gt;priv-&gt;context-&gt;supplement&lt;WebSoupRequestManagerProxy&gt;();
</span><span class="cx">     priv-&gt;context-&gt;setCacheModel(CacheModelPrimaryWebBrowser);
</span><ins>+#if ENABLE(NETWORK_PROCESS)
+    priv-&gt;context-&gt;setUsesNetworkProcess(true);
+#endif
</ins><span class="cx">     priv-&gt;tlsErrorsPolicy = WEBKIT_TLS_ERRORS_POLICY_IGNORE;
</span><span class="cx"> 
</span><span class="cx">     attachInjectedBundleClientToContext(webContext.get());
</span><span class="lines">@@ -208,6 +216,9 @@
</span><span class="cx"> #if ENABLE(GEOLOCATION)
</span><span class="cx">     priv-&gt;geolocationProvider = WebKitGeolocationProvider::create(priv-&gt;context-&gt;supplement&lt;WebGeolocationManagerProxy&gt;());
</span><span class="cx"> #endif
</span><ins>+#if ENABLE(BATTERY_STATUS)
+    priv-&gt;batteryProvider = WebKitBatteryProvider::create(priv-&gt;context-&gt;supplement&lt;WebBatteryManagerProxy&gt;());
+#endif
</ins><span class="cx"> #if ENABLE(SPELLCHECK)
</span><span class="cx">     priv-&gt;textChecker = WebKitTextChecker::create();
</span><span class="cx"> #endif
</span><span class="lines">@@ -806,7 +817,7 @@
</span><span class="cx"> 
</span><span class="cx">     ImmutableDictionary::MapType message;
</span><span class="cx">     message.set(String::fromUTF8(&quot;Hostname&quot;), WebString::create(String::fromUTF8(hostname)));
</span><del>-    context-&gt;priv-&gt;context-&gt;postMessageToInjectedBundle(String::fromUTF8(&quot;PrefetchDNS&quot;), ImmutableDictionary::adopt(message).get());
</del><ins>+    context-&gt;priv-&gt;context-&gt;postMessageToInjectedBundle(String::fromUTF8(&quot;PrefetchDNS&quot;), ImmutableDictionary::create(std::move(message)).get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /**
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPIgtkWebKitWebViewcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -21,7 +21,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;WebKitWebView.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;CertificateInfo.h&quot;
</del><span class="cx"> #include &quot;ImageOptions.h&quot;
</span><span class="cx"> #include &quot;WebCertificateInfo.h&quot;
</span><span class="cx"> #include &quot;WebContextMenuItem.h&quot;
</span><span class="lines">@@ -60,6 +59,7 @@
</span><span class="cx"> #include &quot;WebKitWebViewPrivate.h&quot;
</span><span class="cx"> #include &quot;WebKitWindowPropertiesPrivate.h&quot;
</span><span class="cx"> #include &lt;JavaScriptCore/APICast.h&gt;
</span><ins>+#include &lt;WebCore/CertificateInfo.h&gt;
</ins><span class="cx"> #include &lt;WebCore/DragIcon.h&gt;
</span><span class="cx"> #include &lt;WebCore/GOwnPtrGtk.h&gt;
</span><span class="cx"> #include &lt;WebCore/GOwnPtrSoup.h&gt;
</span><span class="lines">@@ -3028,7 +3028,7 @@
</span><span class="cx">     if (!mainFrame)
</span><span class="cx">         return FALSE;
</span><span class="cx"> 
</span><del>-    const CertificateInfo&amp; certificateInfo = mainFrame-&gt;certificateInfo()-&gt;certificateInfo();
</del><ins>+    const WebCore::CertificateInfo&amp; certificateInfo = mainFrame-&gt;certificateInfo()-&gt;certificateInfo();
</ins><span class="cx">     if (certificate)
</span><span class="cx">         *certificate = certificateInfo.certificate();
</span><span class="cx">     if (errors)
</span><span class="lines">@@ -3096,12 +3096,12 @@
</span><span class="cx"> 
</span><span class="cx">     ImmutableDictionary::MapType message;
</span><span class="cx">     uint64_t callbackID = generateSnapshotCallbackID();
</span><del>-    message.set(String::fromUTF8(&quot;SnapshotOptions&quot;), WebUInt64::create(static_cast&lt;uint64_t&gt;(webKitSnapshotOptionsToSnapshotOptions(options))));
-    message.set(String::fromUTF8(&quot;SnapshotRegion&quot;), WebUInt64::create(static_cast&lt;uint64_t&gt;(region)));
-    message.set(String::fromUTF8(&quot;CallbackID&quot;), WebUInt64::create(callbackID));
</del><ins>+    message.set(String::fromUTF8(&quot;SnapshotOptions&quot;), API::UInt64::create(static_cast&lt;uint64_t&gt;(webKitSnapshotOptionsToSnapshotOptions(options))));
+    message.set(String::fromUTF8(&quot;SnapshotRegion&quot;), API::UInt64::create(static_cast&lt;uint64_t&gt;(region)));
+    message.set(String::fromUTF8(&quot;CallbackID&quot;), API::UInt64::create(callbackID));
</ins><span class="cx"> 
</span><span class="cx">     webView-&gt;priv-&gt;snapshotResultsMap.set(callbackID, adoptGRef(g_task_new(webView, cancellable, callback, userData)));
</span><del>-    getPage(webView)-&gt;postMessageToInjectedBundle(String::fromUTF8(&quot;GetSnapshot&quot;), ImmutableDictionary::adopt(message).get());
</del><ins>+    getPage(webView)-&gt;postMessageToInjectedBundle(String::fromUTF8(&quot;GetSnapshot&quot;), ImmutableDictionary::create(std::move(message)).get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /**
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPIgtkWebKitWebViewBasecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -2,6 +2,7 @@
</span><span class="cx">  * Copyright (C) 2010 Apple Inc. All rights reserved.
</span><span class="cx">  * Portions Copyright (c) 2010 Motorola Mobility, Inc.  All rights reserved.
</span><span class="cx">  * Copyright (C) 2011 Igalia S.L.
</span><ins>+ * Copyright (C) 2013 Gustavo Noronha Silva &lt;gns@gnome.org&gt;.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -105,7 +106,8 @@
</span><span class="cx">     bool needsResizeOnMap;
</span><span class="cx">     GtkWidget* authenticationDialog;
</span><span class="cx">     GtkWidget* inspectorView;
</span><del>-    unsigned inspectorViewHeight;
</del><ins>+    AttachmentSide inspectorAttachmentSide;
+    unsigned inspectorViewSize;
</ins><span class="cx">     GOwnPtr&lt;GdkEvent&gt; contextMenuEvent;
</span><span class="cx">     WebContextMenuProxyGtk* activeContextMenuProxy;
</span><span class="cx">     WebViewBaseInputMethodFilter inputMethodFilter;
</span><span class="lines">@@ -320,8 +322,18 @@
</span><span class="cx">     gtk_widget_queue_draw(GTK_WIDGET(webViewBase));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void webkitWebViewBaseAddWebInspector(WebKitWebViewBase* webViewBase, GtkWidget* inspector)
</del><ins>+void webkitWebViewBaseAddWebInspector(WebKitWebViewBase* webViewBase, GtkWidget* inspector, AttachmentSide attachmentSide)
</ins><span class="cx"> {
</span><ins>+    if (webViewBase-&gt;priv-&gt;inspectorView == inspector &amp;&amp; webViewBase-&gt;priv-&gt;inspectorAttachmentSide == attachmentSide)
+        return;
+
+    webViewBase-&gt;priv-&gt;inspectorAttachmentSide = attachmentSide;
+
+    if (webViewBase-&gt;priv-&gt;inspectorView == inspector) {
+        gtk_widget_queue_resize(GTK_WIDGET(webViewBase));
+        return;
+    }
+
</ins><span class="cx">     webViewBase-&gt;priv-&gt;inspectorView = inspector;
</span><span class="cx">     gtk_container_add(GTK_CONTAINER(webViewBase), inspector);
</span><span class="cx"> }
</span><span class="lines">@@ -337,7 +349,7 @@
</span><span class="cx"> 
</span><span class="cx">     if (priv-&gt;inspectorView == widget) {
</span><span class="cx">         priv-&gt;inspectorView = 0;
</span><del>-        priv-&gt;inspectorViewHeight = 0;
</del><ins>+        priv-&gt;inspectorViewSize = 0;
</ins><span class="cx">     } else if (priv-&gt;authenticationDialog == widget) {
</span><span class="cx">         priv-&gt;authenticationDialog = 0;
</span><span class="cx">     } else {
</span><span class="lines">@@ -480,13 +492,23 @@
</span><span class="cx">     IntRect viewRect(allocation-&gt;x, allocation-&gt;y, allocation-&gt;width, allocation-&gt;height);
</span><span class="cx">     WebKitWebViewBasePrivate* priv = webViewBase-&gt;priv;
</span><span class="cx">     if (priv-&gt;inspectorView) {
</span><del>-        int inspectorViewHeight = std::min(static_cast&lt;int&gt;(priv-&gt;inspectorViewHeight), allocation-&gt;height);
</del><span class="cx">         GtkAllocation childAllocation = viewRect;
</span><del>-        childAllocation.y = allocation-&gt;height - inspectorViewHeight;
-        childAllocation.height = inspectorViewHeight;
</del><ins>+
+        if (priv-&gt;inspectorAttachmentSide == AttachmentSideBottom) {
+            int inspectorViewHeight = std::min(static_cast&lt;int&gt;(priv-&gt;inspectorViewSize), allocation-&gt;height);
+            childAllocation.x = 0;
+            childAllocation.y = allocation-&gt;height - inspectorViewHeight;
+            childAllocation.height = inspectorViewHeight;
+            viewRect.setHeight(std::max(allocation-&gt;height - inspectorViewHeight, 1));
+        } else {
+            int inspectorViewWidth = std::min(static_cast&lt;int&gt;(priv-&gt;inspectorViewSize), allocation-&gt;width);
+            childAllocation.y = 0;
+            childAllocation.x = allocation-&gt;width - inspectorViewWidth;
+            childAllocation.width = inspectorViewWidth;
+            viewRect.setWidth(std::max(allocation-&gt;width - inspectorViewWidth, 1));
+        }
+
</ins><span class="cx">         gtk_widget_size_allocate(priv-&gt;inspectorView, &amp;childAllocation);
</span><del>-
-        viewRect.setHeight(std::max(allocation-&gt;height - inspectorViewHeight, 1));
</del><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // The authentication dialog is centered in the view rect, which means that it
</span><span class="lines">@@ -934,10 +956,6 @@
</span><span class="cx">     priv-&gt;pageProxy = context-&gt;createWebPage(*priv-&gt;pageClient, pageGroup);
</span><span class="cx">     priv-&gt;pageProxy-&gt;initializeWebPage();
</span><span class="cx"> 
</span><del>-#if ENABLE(FULLSCREEN_API)
-    priv-&gt;pageProxy-&gt;fullScreenManager()-&gt;setWebView(webkitWebViewBase);
-#endif
-
</del><span class="cx"> #if USE(TEXTURE_MAPPER_GL)
</span><span class="cx">     if (priv-&gt;redirectedWindow)
</span><span class="cx">         priv-&gt;pageProxy-&gt;setAcceleratedCompositingWindowId(priv-&gt;redirectedWindow-&gt;windowId());
</span><span class="lines">@@ -1050,11 +1068,11 @@
</span><span class="cx">     webkitWebViewBase-&gt;priv-&gt;fullScreenClient.initialize(wkClient);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void webkitWebViewBaseSetInspectorViewHeight(WebKitWebViewBase* webkitWebViewBase, unsigned height)
</del><ins>+void webkitWebViewBaseSetInspectorViewSize(WebKitWebViewBase* webkitWebViewBase, unsigned size)
</ins><span class="cx"> {
</span><del>-    if (webkitWebViewBase-&gt;priv-&gt;inspectorViewHeight == height)
</del><ins>+    if (webkitWebViewBase-&gt;priv-&gt;inspectorViewSize == size)
</ins><span class="cx">         return;
</span><del>-    webkitWebViewBase-&gt;priv-&gt;inspectorViewHeight = height;
</del><ins>+    webkitWebViewBase-&gt;priv-&gt;inspectorViewSize = size;
</ins><span class="cx">     if (webkitWebViewBase-&gt;priv-&gt;inspectorView)
</span><span class="cx">         gtk_widget_queue_resize_no_redraw(GTK_WIDGET(webkitWebViewBase));
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPIgtkWebKitWebViewBasePrivateh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBasePrivate.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBasePrivate.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBasePrivate.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -29,6 +29,7 @@
</span><span class="cx"> #define WebKitWebViewBasePrivate_h
</span><span class="cx"> 
</span><span class="cx"> #include &quot;WebContextMenuProxyGtk.h&quot;
</span><ins>+#include &quot;WebInspectorProxy.h&quot;
</ins><span class="cx"> #include &quot;WebKitPrivate.h&quot;
</span><span class="cx"> #include &quot;WebKitWebViewBase.h&quot;
</span><span class="cx"> #include &quot;WebPageProxy.h&quot;
</span><span class="lines">@@ -45,7 +46,7 @@
</span><span class="cx"> void webkitWebViewBaseEnterFullScreen(WebKitWebViewBase*);
</span><span class="cx"> void webkitWebViewBaseExitFullScreen(WebKitWebViewBase*);
</span><span class="cx"> void webkitWebViewBaseInitializeFullScreenClient(WebKitWebViewBase*, const WKFullScreenClientGtkBase*);
</span><del>-void webkitWebViewBaseSetInspectorViewHeight(WebKitWebViewBase*, unsigned height);
</del><ins>+void webkitWebViewBaseSetInspectorViewSize(WebKitWebViewBase*, unsigned size);
</ins><span class="cx"> void webkitWebViewBaseSetActiveContextMenuProxy(WebKitWebViewBase*, WebKit::WebContextMenuProxyGtk*);
</span><span class="cx"> WebKit::WebContextMenuProxyGtk* webkitWebViewBaseGetActiveContextMenuProxy(WebKitWebViewBase*);
</span><span class="cx"> GdkEvent* webkitWebViewBaseTakeContextMenuEvent(WebKitWebViewBase*);
</span><span class="lines">@@ -70,6 +71,6 @@
</span><span class="cx"> 
</span><span class="cx"> void webkitWebViewBaseAddAuthenticationDialog(WebKitWebViewBase*, GtkWidget* authDialog);
</span><span class="cx"> void webkitWebViewBaseCancelAuthenticationDialog(WebKitWebViewBase*);
</span><del>-void webkitWebViewBaseAddWebInspector(WebKitWebViewBase*, GtkWidget* inspector);
</del><ins>+void webkitWebViewBaseAddWebInspector(WebKitWebViewBase*, GtkWidget* inspector, WebKit::AttachmentSide);
</ins><span class="cx"> 
</span><span class="cx"> #endif // WebKitWebViewBasePrivate_h
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPIgtkWebKitWindowPropertiescpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -20,10 +20,10 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;WebKitWindowProperties.h&quot;
</span><span class="cx"> 
</span><ins>+#include &quot;APINumber.h&quot;
</ins><span class="cx"> #include &quot;ImmutableDictionary.h&quot;
</span><span class="cx"> #include &quot;WebKitPrivate.h&quot;
</span><span class="cx"> #include &quot;WebKitWindowPropertiesPrivate.h&quot;
</span><del>-#include &quot;WebNumber.h&quot;
</del><span class="cx"> #include &quot;WebURLRequest.h&quot;
</span><span class="cx"> #include &lt;WebCore/IntRect.h&gt;
</span><span class="cx"> #include &lt;glib/gi18n-lib.h&gt;
</span><span class="lines">@@ -378,48 +378,48 @@
</span><span class="cx"> {
</span><span class="cx">     GdkRectangle geometry = windowProperties-&gt;priv-&gt;geometry;
</span><span class="cx"> 
</span><del>-    WebDouble* doubleValue = static_cast&lt;WebDouble*&gt;(features-&gt;get(&quot;x&quot;));
</del><ins>+    API::Double* doubleValue = static_cast&lt;API::Double*&gt;(features-&gt;get(&quot;x&quot;));
</ins><span class="cx">     if (doubleValue)
</span><span class="cx">         geometry.x = doubleValue-&gt;value();
</span><span class="cx"> 
</span><del>-    doubleValue = static_cast&lt;WebDouble*&gt;(features-&gt;get(&quot;y&quot;));
</del><ins>+    doubleValue = static_cast&lt;API::Double*&gt;(features-&gt;get(&quot;y&quot;));
</ins><span class="cx">     if (doubleValue)
</span><span class="cx">         geometry.y = doubleValue-&gt;value();
</span><span class="cx"> 
</span><del>-    doubleValue = static_cast&lt;WebDouble*&gt;(features-&gt;get(&quot;width&quot;));
</del><ins>+    doubleValue = static_cast&lt;API::Double*&gt;(features-&gt;get(&quot;width&quot;));
</ins><span class="cx">     if (doubleValue)
</span><span class="cx">         geometry.width = doubleValue-&gt;value();
</span><span class="cx"> 
</span><del>-    doubleValue = static_cast&lt;WebDouble*&gt;(features-&gt;get(&quot;height&quot;));
</del><ins>+    doubleValue = static_cast&lt;API::Double*&gt;(features-&gt;get(&quot;height&quot;));
</ins><span class="cx">     if (doubleValue)
</span><span class="cx">         geometry.height = doubleValue-&gt;value();
</span><span class="cx">     webkitWindowPropertiesSetGeometry(windowProperties, &amp;geometry);
</span><span class="cx"> 
</span><del>-    WebBoolean* booleanValue = static_cast&lt;WebBoolean*&gt;(features-&gt;get(&quot;menuBarVisible&quot;));
</del><ins>+    API::Boolean* booleanValue = static_cast&lt;API::Boolean*&gt;(features-&gt;get(&quot;menuBarVisible&quot;));
</ins><span class="cx">     if (booleanValue)
</span><span class="cx">         webkitWindowPropertiesSetMenubarVisible(windowProperties, booleanValue-&gt;value());
</span><span class="cx"> 
</span><del>-    booleanValue = static_cast&lt;WebBoolean*&gt;(features-&gt;get(&quot;statusBarVisible&quot;));
</del><ins>+    booleanValue = static_cast&lt;API::Boolean*&gt;(features-&gt;get(&quot;statusBarVisible&quot;));
</ins><span class="cx">     if (booleanValue)
</span><span class="cx">         webkitWindowPropertiesSetStatusbarVisible(windowProperties, booleanValue-&gt;value());
</span><span class="cx"> 
</span><del>-    booleanValue = static_cast&lt;WebBoolean*&gt;(features-&gt;get(&quot;toolBarVisible&quot;));
</del><ins>+    booleanValue = static_cast&lt;API::Boolean*&gt;(features-&gt;get(&quot;toolBarVisible&quot;));
</ins><span class="cx">     if (booleanValue)
</span><span class="cx">         webkitWindowPropertiesSetToolbarVisible(windowProperties, booleanValue-&gt;value());
</span><span class="cx"> 
</span><del>-    booleanValue = static_cast&lt;WebBoolean*&gt;(features-&gt;get(&quot;locationBarVisible&quot;));
</del><ins>+    booleanValue = static_cast&lt;API::Boolean*&gt;(features-&gt;get(&quot;locationBarVisible&quot;));
</ins><span class="cx">     if (booleanValue)
</span><span class="cx">         webkitWindowPropertiesSetLocationbarVisible(windowProperties, booleanValue-&gt;value());
</span><span class="cx"> 
</span><del>-    booleanValue = static_cast&lt;WebBoolean*&gt;(features-&gt;get(&quot;scrollbarsVisible&quot;));
</del><ins>+    booleanValue = static_cast&lt;API::Boolean*&gt;(features-&gt;get(&quot;scrollbarsVisible&quot;));
</ins><span class="cx">     if (booleanValue)
</span><span class="cx">         webkitWindowPropertiesSetScrollbarsVisible(windowProperties, booleanValue-&gt;value());
</span><span class="cx"> 
</span><del>-    booleanValue = static_cast&lt;WebBoolean*&gt;(features-&gt;get(&quot;resizable&quot;));
</del><ins>+    booleanValue = static_cast&lt;API::Boolean*&gt;(features-&gt;get(&quot;resizable&quot;));
</ins><span class="cx">     if (booleanValue)
</span><span class="cx">         webkitWindowPropertiesSetResizable(windowProperties, booleanValue-&gt;value());
</span><span class="cx"> 
</span><del>-    booleanValue = static_cast&lt;WebBoolean*&gt;(features-&gt;get(&quot;fullscreen&quot;));
</del><ins>+    booleanValue = static_cast&lt;API::Boolean*&gt;(features-&gt;get(&quot;fullscreen&quot;));
</ins><span class="cx">     if (booleanValue)
</span><span class="cx">         webkitWindowPropertiesSetFullscreen(windowProperties, booleanValue-&gt;value());
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPIgtkdocswebkit2gtksectionstxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -368,6 +368,8 @@
</span><span class="cx"> webkit_settings_set_enable_media_stream
</span><span class="cx"> webkit_settings_get_enable_spatial_navigation
</span><span class="cx"> webkit_settings_set_enable_spatial_navigation
</span><ins>+webkit_settings_get_enable_mediasource
+webkit_settings_set_enable_mediasource
</ins><span class="cx"> 
</span><span class="cx"> &lt;SUBSECTION Standard&gt;
</span><span class="cx"> WebKitSettingsClass
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPIgtktestsDOMNodeTestcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/tests/DOMNodeTest.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/tests/DOMNodeTest.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/tests/DOMNodeTest.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -22,6 +22,7 @@
</span><span class="cx"> #include &quot;WebProcessTest.h&quot;
</span><span class="cx"> #include &lt;gio/gio.h&gt;
</span><span class="cx"> #include &lt;webkit2/webkit-web-extension.h&gt;
</span><ins>+#include &lt;wtf/gobject/GOwnPtr.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> class WebKitDOMNodeTest : public WebProcessTest {
</span><span class="cx"> public:
</span><span class="lines">@@ -169,12 +170,36 @@
</span><span class="cx">         return true;
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    bool testTagNames(WebKitWebExtension* extension, GVariant* args)
+    {
+        static const char* expectedTagNames[] = { &quot;HTML&quot;, &quot;HEAD&quot;, &quot;BODY&quot;, &quot;VIDEO&quot;, &quot;SOURCE&quot;, &quot;VIDEO&quot;, &quot;SOURCE&quot;, &quot;INPUT&quot; };
+
+        WebKitWebPage* page = webkit_web_extension_get_page(extension, webPageFromArgs(args));
+        g_assert(WEBKIT_IS_WEB_PAGE(page));
+        WebKitDOMDocument* document = webkit_web_page_get_dom_document(page);
+        g_assert(WEBKIT_DOM_IS_DOCUMENT(document));
+
+        WebKitDOMNodeList* list = webkit_dom_document_get_elements_by_tag_name(document, &quot;*&quot;);
+        gulong nodeCount = webkit_dom_node_list_get_length(list);
+        g_assert_cmpuint(nodeCount, ==, G_N_ELEMENTS(expectedTagNames));
+        for (unsigned i = 0; i &lt; nodeCount; i++) {
+            WebKitDOMNode* node = webkit_dom_node_list_item(list, i);
+            g_assert(WEBKIT_DOM_IS_NODE(node));
+            GOwnPtr&lt;char&gt; tagName(webkit_dom_node_get_node_name(node));
+            g_assert_cmpstr(tagName.get(), ==, expectedTagNames[i]);
+        }
+
+        return true;
+    }
+
</ins><span class="cx">     virtual bool runTest(const char* testName, WebKitWebExtension* extension, GVariant* args)
</span><span class="cx">     {
</span><span class="cx">         if (!strcmp(testName, &quot;hierarchy-navigation&quot;))
</span><span class="cx">             return testHierarchyNavigation(extension, args);
</span><span class="cx">         if (!strcmp(testName, &quot;insertion&quot;))
</span><span class="cx">             return testInsertion(extension, args);
</span><ins>+        if (!strcmp(testName, &quot;tag-names&quot;))
+            return testTagNames(extension, args);
</ins><span class="cx"> 
</span><span class="cx">         g_assert_not_reached();
</span><span class="cx">         return false;
</span><span class="lines">@@ -185,6 +210,7 @@
</span><span class="cx"> {
</span><span class="cx">     REGISTER_TEST(WebKitDOMNodeTest, &quot;WebKitDOMNode/hierarchy-navigation&quot;);
</span><span class="cx">     REGISTER_TEST(WebKitDOMNodeTest, &quot;WebKitDOMNode/insertion&quot;);
</span><ins>+    REGISTER_TEST(WebKitDOMNodeTest, &quot;WebKitDOMNode/tag-names&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPIgtktestsTestDOMNodecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/tests/TestDOMNode.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/tests/TestDOMNode.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/tests/TestDOMNode.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -50,6 +50,27 @@
</span><span class="cx">     g_assert(testRunner-&gt;runTest(&quot;WebKitDOMNode&quot;, &quot;insertion&quot;, g_variant_builder_end(&amp;builder)));
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+static void testWebKitDOMNodeTagNames(WebViewTest* test, gconstpointer)
+{
+    static const char* testHTML = &quot;&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;&quot;
+        &quot;&lt;video id='video' preload='none'&gt;&quot;
+        &quot;    &lt;source src='movie.ogg' type='video/ogg'&gt;&quot;
+        &quot;        Your browser does not support the video tag.&quot;
+        &quot;&lt;/video&gt;&quot;
+        &quot;&lt;video id='video2' preload='none'&gt;&quot;
+        &quot;     &lt;source src='movie.ogg' type='video/ogg'&gt;&quot;
+        &quot;        Your browser does not support the video tag.&quot;
+        &quot;&lt;/video&gt;&quot;
+        &quot;&lt;input type='hidden' id='test' name='finish' value='false'&gt;&lt;/body&gt;&lt;/html&gt;&quot;;
+    test-&gt;loadHtml(testHTML, 0);
+    test-&gt;waitUntilLoadFinished();
+
+    GVariantBuilder builder;
+    g_variant_builder_init(&amp;builder, G_VARIANT_TYPE_VARDICT);
+    g_variant_builder_add(&amp;builder, &quot;{sv}&quot;, &quot;pageID&quot;, g_variant_new_uint64(webkit_web_view_get_page_id(test-&gt;m_webView)));
+    g_assert(testRunner-&gt;runTest(&quot;WebKitDOMNode&quot;, &quot;tag-names&quot;, g_variant_builder_end(&amp;builder)));
+}
+
</ins><span class="cx"> void beforeAll()
</span><span class="cx"> {
</span><span class="cx">     testRunner = new WebProcessTestRunner();
</span><span class="lines">@@ -57,6 +78,7 @@
</span><span class="cx"> 
</span><span class="cx">     WebViewTest::add(&quot;WebKitDOMNode&quot;, &quot;hierarchy-navigation&quot;, testWebKitDOMNodeHierarchyNavigation);
</span><span class="cx">     WebViewTest::add(&quot;WebKitDOMNode&quot;, &quot;insertion&quot;, testWebKitDOMNodeInsertion);
</span><ins>+    WebViewTest::add(&quot;WebKitDOMNode&quot;, &quot;tag-names&quot;, testWebKitDOMNodeTagNames);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void afterAll()
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPIgtktestsTestMaincpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/tests/TestMain.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/tests/TestMain.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/tests/TestMain.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -58,6 +58,8 @@
</span><span class="cx">     g_setenv(&quot;WEBKIT_EXEC_PATH&quot;, WEBKIT_EXEC_PATH, FALSE);
</span><span class="cx">     g_setenv(&quot;WEBKIT_INJECTED_BUNDLE_PATH&quot;, WEBKIT_INJECTED_BUNDLE_PATH, FALSE);
</span><span class="cx">     g_setenv(&quot;LC_ALL&quot;, &quot;C&quot;, TRUE);
</span><ins>+    g_setenv(&quot;GIO_USE_VFS&quot;, &quot;local&quot;, TRUE);
+    g_setenv(&quot;GSETTINGS_BACKEND&quot;, &quot;memory&quot;, TRUE);
</ins><span class="cx">     g_test_bug_base(&quot;https://bugs.webkit.org/&quot;);
</span><span class="cx"> 
</span><span class="cx">     registerGResource();
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPIgtktestsTestWebKitAccessibilitycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitAccessibility.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitAccessibility.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitAccessibility.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -182,7 +182,7 @@
</span><span class="cx">     currentParent = currentChild;
</span><span class="cx">     currentChild = atspi_accessible_get_child_at_index(currentParent.get(), 0, 0);
</span><span class="cx">     g_assert(ATSPI_IS_ACCESSIBLE(currentChild.get()));
</span><del>-    checkAtspiAccessible(currentChild.get(), &quot;&quot;, ATSPI_ROLE_DOCUMENT_FRAME);
</del><ins>+    checkAtspiAccessible(currentChild.get(), &quot;&quot;, ATSPI_ROLE_DOCUMENT_WEB);
</ins><span class="cx"> 
</span><span class="cx">     // HTML H1's accessible element (Web Process).
</span><span class="cx">     currentParent = currentChild;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPIgtktestsTestWebKitSettingscpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitSettings.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitSettings.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitSettings.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -268,6 +268,11 @@
</span><span class="cx">     webkit_settings_set_enable_spatial_navigation(settings, TRUE);
</span><span class="cx">     g_assert(webkit_settings_get_enable_spatial_navigation(settings));
</span><span class="cx"> 
</span><ins>+    // MediaSource is disabled by default
+    g_assert(!webkit_settings_get_enable_mediasource(settings));
+    webkit_settings_set_enable_mediasource(settings, TRUE);
+    g_assert(webkit_settings_get_enable_mediasource(settings));
+
</ins><span class="cx">     g_object_unref(G_OBJECT(settings));
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPIgtktestsWebProcessTestRunnercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/tests/WebProcessTestRunner.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/tests/WebProcessTestRunner.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/gtk/tests/WebProcessTestRunner.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -26,7 +26,11 @@
</span><span class="cx">     : m_mainLoop(g_main_loop_new(0, TRUE))
</span><span class="cx">     , m_bus(adoptGRef(g_test_dbus_new(G_TEST_DBUS_NONE)))
</span><span class="cx"> {
</span><ins>+    // Save the DISPLAY env var to restore it after calling g_test_dbus_up() that unsets it.
+    // See https://bugs.webkit.org/show_bug.cgi?id=125621.
+    const char* display = g_getenv(&quot;DISPLAY&quot;);
</ins><span class="cx">     g_test_dbus_up(m_bus.get());
</span><ins>+    g_setenv(&quot;DISPLAY&quot;, display, FALSE);
</ins><span class="cx">     m_connection = adoptGRef(g_bus_get_sync(G_BUS_TYPE_SESSION, 0, 0));
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPIiosPageClientImplIOSh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/API/ios/PageClientImplIOS.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/ios/PageClientImplIOS.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/ios/PageClientImplIOS.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -27,18 +27,24 @@
</span><span class="cx"> #define PageClientImplIOS_h
</span><span class="cx"> 
</span><span class="cx"> #import &quot;PageClient.h&quot;
</span><ins>+#import &quot;WebFullScreenManagerProxy.h&quot;
</ins><span class="cx"> #import &lt;wtf/RetainPtr.h&gt;
</span><span class="cx"> 
</span><span class="cx"> @class WKContentView;
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx">     
</span><del>-class PageClientImpl : public PageClient {
</del><ins>+class PageClientImpl : public PageClient
+#if ENABLE(FULLSCREEN_API)
+    , public WebFullScreenManagerProxyClient
+#endif
+    {
</ins><span class="cx"> public:
</span><span class="cx">     explicit PageClientImpl(WKContentView *);
</span><span class="cx">     virtual ~PageClientImpl();
</span><span class="cx">     
</span><span class="cx"> private:
</span><ins>+    // PageClient
</ins><span class="cx">     virtual std::unique_ptr&lt;DrawingAreaProxy&gt; createDrawingAreaProxy() OVERRIDE;
</span><span class="cx">     virtual void setViewNeedsDisplay(const WebCore::IntRect&amp;) OVERRIDE;
</span><span class="cx">     virtual void displayView() OVERRIDE;
</span><span class="lines">@@ -102,6 +108,21 @@
</span><span class="cx">     virtual void selectionDidChange() OVERRIDE;
</span><span class="cx">     virtual bool interpretKeyEvent(const NativeWebKeyboardEvent&amp;, bool isCharEvent) OVERRIDE;
</span><span class="cx"> 
</span><ins>+    // Auxiliary Client Creation
+#if ENABLE(FULLSCREEN_API)
+    virual WebFullScreenManagerProxyClient&amp; fullScreenManagerProxyClient() OVERRIDE;
+#endif
+
+#if ENABLE(FULLSCREEN_API)
+    // WebFullScreenManagerProxyClient
+    virtual void closeFullScreenManager() OVERRIDE;
+    virtual bool isFullScreen() OVERRIDE;
+    virtual void enterFullScreen() OVERRIDE;
+    virtual void exitFullScreen() OVERRIDE;
+    virtual void beganEnterFullScreen(const WebCore::IntRect&amp; initialFrame, const WebCore::IntRect&amp; finalFrame) OVERRIDE;
+    virtual void beganExitFullScreen(const WebCore::IntRect&amp; initialFrame, const WebCore::IntRect&amp; finalFrame) OVERRIDE;
+#endif
+
</ins><span class="cx">     WKContentView *m_view;
</span><span class="cx"> };
</span><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPIiosPageClientImplIOSmm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/API/ios/PageClientImplIOS.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/ios/PageClientImplIOS.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/ios/PageClientImplIOS.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -341,4 +341,40 @@
</span><span class="cx">     [m_view _stopAssistingNode];
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if ENABLE(FULLSCREEN_API)
+
+WebFullScreenManagerProxyClient&amp; PageClientImpl::fullScreenManagerProxyClient()
+{
+    return *this;
+}
+
+// WebFullScreenManagerProxyClient
+
+void PageClientImpl::closeFullScreenManager()
+{
+}
+
+bool PageClientImpl::isFullScreen()
+{
+    return false;
+}
+
+void PageClientImpl::enterFullScreen()
+{
+}
+
+void PageClientImpl::exitFullScreen()
+{
+}
+
+void PageClientImpl::beganEnterFullScreen(const IntRect&amp;, const IntRect&amp;)
+{
+}
+
+void PageClientImpl::beganExitFullScreen(const IntRect&amp;, const IntRect&amp;)
+{
+}
+
+#endif // ENABLE(FULLSCREEN_API)
+
</ins><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPIiosWKGeolocationProviderIOSmm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/API/ios/WKGeolocationProviderIOS.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/ios/WKGeolocationProviderIOS.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/ios/WKGeolocationProviderIOS.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -139,7 +139,8 @@
</span><span class="cx"> -(id)init
</span><span class="cx"> {
</span><span class="cx">     ASSERT_NOT_REACHED();
</span><del>-    return [self initWithContext:(WebContext::sharedProcessContext())];
</del><ins>+    [self release];
+    return nil;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> -(id)initWithContext:(WebContext*)context
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPImacPageClientImplh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/API/mac/PageClientImpl.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/mac/PageClientImpl.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/mac/PageClientImpl.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -28,6 +28,7 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;CorrectionPanel.h&quot;
</span><span class="cx"> #include &quot;PageClient.h&quot;
</span><ins>+#include &quot;WebFullScreenManagerProxy.h&quot;
</ins><span class="cx"> #include &lt;wtf/RetainPtr.h&gt;
</span><span class="cx"> 
</span><span class="cx"> @class WKEditorUndoTargetObjC;
</span><span class="lines">@@ -40,14 +41,19 @@
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> class FindIndicatorWindow;
</span><span class="cx"> 
</span><del>-class PageClientImpl FINAL : public PageClient {
</del><ins>+class PageClientImpl FINAL : public PageClient
+#if ENABLE(FULLSCREEN_API)
+    , public WebFullScreenManagerProxyClient
+#endif
+    {
</ins><span class="cx"> public:
</span><del>-    explicit PageClientImpl(WKView*);
</del><ins>+    explicit PageClientImpl(WKView *);
</ins><span class="cx">     virtual ~PageClientImpl();
</span><span class="cx">     
</span><span class="cx">     void viewWillMoveToAnotherWindow();
</span><span class="cx"> 
</span><span class="cx"> private:
</span><ins>+    // PageClient
</ins><span class="cx">     virtual std::unique_ptr&lt;DrawingAreaProxy&gt; createDrawingAreaProxy();
</span><span class="cx">     virtual void setViewNeedsDisplay(const WebCore::IntRect&amp;);
</span><span class="cx">     virtual void displayView();
</span><span class="lines">@@ -134,6 +140,21 @@
</span><span class="cx">     virtual Vector&lt;String&gt; dictationAlternatives(uint64_t dictationContext);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+    // Auxiliary Client Creation
+#if ENABLE(FULLSCREEN_API)
+    WebFullScreenManagerProxyClient&amp; fullScreenManagerProxyClient() OVERRIDE;
+#endif
+
+#if ENABLE(FULLSCREEN_API)
+    // WebFullScreenManagerProxyClient
+    virtual void closeFullScreenManager() OVERRIDE;
+    virtual bool isFullScreen() OVERRIDE;
+    virtual void enterFullScreen() OVERRIDE;
+    virtual void exitFullScreen() OVERRIDE;
+    virtual void beganEnterFullScreen(const WebCore::IntRect&amp; initialFrame, const WebCore::IntRect&amp; finalFrame) OVERRIDE;
+    virtual void beganExitFullScreen(const WebCore::IntRect&amp; initialFrame, const WebCore::IntRect&amp; finalFrame) OVERRIDE;
+#endif
+
</ins><span class="cx">     WKView* m_wkView;
</span><span class="cx">     RetainPtr&lt;WKEditorUndoTargetObjC&gt; m_undoTarget;
</span><span class="cx"> #if USE(AUTOCORRECTION_PANEL)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPImacPageClientImplmm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/API/mac/PageClientImpl.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/mac/PageClientImpl.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/mac/PageClientImpl.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -26,20 +26,17 @@
</span><span class="cx"> #import &quot;config.h&quot;
</span><span class="cx"> #import &quot;PageClientImpl.h&quot;
</span><span class="cx"> 
</span><del>-#if USE(DICTATION_ALTERNATIVES)
-#import &lt;AppKit/NSTextAlternatives.h&gt;
-#endif
</del><span class="cx"> #import &quot;AttributedString.h&quot;
</span><span class="cx"> #import &quot;ColorSpaceData.h&quot;
</span><span class="cx"> #import &quot;DataReference.h&quot;
</span><span class="cx"> #import &quot;DictionaryPopupInfo.h&quot;
</span><span class="cx"> #import &quot;FindIndicator.h&quot;
</span><span class="cx"> #import &quot;NativeWebKeyboardEvent.h&quot;
</span><ins>+#import &quot;StringUtilities.h&quot;
</ins><span class="cx"> #import &quot;WKAPICast.h&quot;
</span><ins>+#import &quot;WKFullScreenWindowController.h&quot;
</ins><span class="cx"> #import &quot;WKStringCF.h&quot;
</span><span class="cx"> #import &quot;WKViewInternal.h&quot;
</span><del>-#import &quot;WKViewPrivate.h&quot;
-#import &quot;StringUtilities.h&quot;
</del><span class="cx"> #import &quot;WebColorPickerMac.h&quot;
</span><span class="cx"> #import &quot;WebContextMenuProxyMac.h&quot;
</span><span class="cx"> #import &quot;WebEditCommandProxy.h&quot;
</span><span class="lines">@@ -53,10 +50,14 @@
</span><span class="cx"> #import &lt;WebCore/KeyboardEvent.h&gt;
</span><span class="cx"> #import &lt;WebCore/NotImplemented.h&gt;
</span><span class="cx"> #import &lt;WebCore/SharedBuffer.h&gt;
</span><ins>+#import &lt;WebKitSystemInterface.h&gt;
</ins><span class="cx"> #import &lt;wtf/text/CString.h&gt;
</span><span class="cx"> #import &lt;wtf/text/WTFString.h&gt;
</span><del>-#import &lt;WebKitSystemInterface.h&gt;
</del><span class="cx"> 
</span><ins>+#if USE(DICTATION_ALTERNATIVES)
+#import &lt;AppKit/NSTextAlternatives.h&gt;
+#endif
+
</ins><span class="cx"> @interface NSApplication (WebNSApplicationDetails)
</span><span class="cx"> - (NSCursor *)_cursorRectCursor;
</span><span class="cx"> @end
</span><span class="lines">@@ -554,4 +555,48 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if ENABLE(FULLSCREEN_API)
+
+WebFullScreenManagerProxyClient&amp; PageClientImpl::fullScreenManagerProxyClient()
+{
+    return *this;
+}
+
+// WebFullScreenManagerProxyClient
+
+void PageClientImpl::closeFullScreenManager()
+{
+    [m_wkView _closeFullScreenWindowController];
+}
+
+bool PageClientImpl::isFullScreen()
+{
+    if (!m_wkView._hasFullScreenWindowController)
+        return false;
+
+    return m_wkView._fullScreenWindowController.isFullScreen;
+}
+
+void PageClientImpl::enterFullScreen()
+{
+    [m_wkView._fullScreenWindowController enterFullScreen:nil];
+}
+
+void PageClientImpl::exitFullScreen()
+{
+    [m_wkView._fullScreenWindowController exitFullScreen];
+}
+
+void PageClientImpl::beganEnterFullScreen(const IntRect&amp; initialFrame, const IntRect&amp; finalFrame)
+{
+    [m_wkView._fullScreenWindowController beganEnterFullScreenWithInitialFrame:initialFrame finalFrame:finalFrame];
+}
+
+void PageClientImpl::beganExitFullScreen(const IntRect&amp; initialFrame, const IntRect&amp; finalFrame)
+{
+    [m_wkView._fullScreenWindowController beganExitFullScreenWithInitialFrame:initialFrame finalFrame:finalFrame];
+}
+
+#endif // ENABLE(FULLSCREEN_API)
+
</ins><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPImacWKViewmm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/API/mac/WKView.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/mac/WKView.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/mac/WKView.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -49,6 +49,7 @@
</span><span class="cx"> #import &quot;TextChecker.h&quot;
</span><span class="cx"> #import &quot;TextCheckerState.h&quot;
</span><span class="cx"> #import &quot;TiledCoreAnimationDrawingAreaProxy.h&quot;
</span><ins>+#import &quot;ViewGestureController.h&quot;
</ins><span class="cx"> #import &quot;WKAPICast.h&quot;
</span><span class="cx"> #import &quot;WKFullScreenWindowController.h&quot;
</span><span class="cx"> #import &quot;WKPrintingView.h&quot;
</span><span class="lines">@@ -58,7 +59,6 @@
</span><span class="cx"> #import &quot;WKViewPrivate.h&quot;
</span><span class="cx"> #import &quot;WebContext.h&quot;
</span><span class="cx"> #import &quot;WebEventFactory.h&quot;
</span><del>-#import &quot;WebFullScreenManagerProxy.h&quot;
</del><span class="cx"> #import &quot;WebKit2Initialize.h&quot;
</span><span class="cx"> #import &quot;WebPage.h&quot;
</span><span class="cx"> #import &quot;WebPageGroup.h&quot;
</span><span class="lines">@@ -75,6 +75,7 @@
</span><span class="cx"> #import &lt;WebCore/FloatRect.h&gt;
</span><span class="cx"> #import &lt;WebCore/Image.h&gt;
</span><span class="cx"> #import &lt;WebCore/IntRect.h&gt;
</span><ins>+#import &lt;WebCore/FileSystem.h&gt;
</ins><span class="cx"> #import &lt;WebCore/KeyboardEvent.h&gt;
</span><span class="cx"> #import &lt;WebCore/LocalizedStrings.h&gt;
</span><span class="cx"> #import &lt;WebCore/PlatformEventFactoryMac.h&gt;
</span><span class="lines">@@ -82,10 +83,9 @@
</span><span class="cx"> #import &lt;WebCore/Region.h&gt;
</span><span class="cx"> #import &lt;WebCore/SharedBuffer.h&gt;
</span><span class="cx"> #import &lt;WebCore/TextAlternativeWithRange.h&gt;
</span><del>-#import &lt;WebCore/WebCoreNSStringExtras.h&gt;
</del><span class="cx"> #import &lt;WebCore/WebCoreFullScreenPlaceholderView.h&gt;
</span><span class="cx"> #import &lt;WebCore/WebCoreFullScreenWindow.h&gt;
</span><del>-#import &lt;WebCore/FileSystem.h&gt;
</del><ins>+#import &lt;WebCore/WebCoreNSStringExtras.h&gt;
</ins><span class="cx"> #import &lt;WebKitSystemInterface.h&gt;
</span><span class="cx"> #import &lt;sys/stat.h&gt;
</span><span class="cx"> #import &lt;wtf/RefPtr.h&gt;
</span><span class="lines">@@ -232,6 +232,9 @@
</span><span class="cx">     NSRect _contentPreparationRect;
</span><span class="cx">     BOOL _useContentPreparationRectForVisibleRect;
</span><span class="cx">     BOOL _windowOcclusionDetectionEnabled;
</span><ins>+
+    std::unique_ptr&lt;ViewGestureController&gt; _gestureController;
+    BOOL _allowsMagnification;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> @end
</span><span class="lines">@@ -2782,12 +2785,12 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(FULLSCREEN_API)
</span><del>-- (BOOL)hasFullScreenWindowController
</del><ins>+- (BOOL)_hasFullScreenWindowController
</ins><span class="cx"> {
</span><span class="cx">     return (bool)_data-&gt;_fullScreenWindowController;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (WKFullScreenWindowController*)fullScreenWindowController
</del><ins>+- (WKFullScreenWindowController *)_fullScreenWindowController
</ins><span class="cx"> {
</span><span class="cx">     if (!_data-&gt;_fullScreenWindowController)
</span><span class="cx">         _data-&gt;_fullScreenWindowController = adoptNS([[WKFullScreenWindowController alloc] initWithWindow:[self createFullScreenWindow] webView:self]);
</span><span class="lines">@@ -2795,11 +2798,12 @@
</span><span class="cx">     return _data-&gt;_fullScreenWindowController.get();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (void)closeFullScreenWindowController
</del><ins>+- (void)_closeFullScreenWindowController
</ins><span class="cx"> {
</span><span class="cx">     if (!_data-&gt;_fullScreenWindowController)
</span><span class="cx">         return;
</span><del>-    [_data-&gt;_fullScreenWindowController.get() close];
</del><ins>+
+    [_data-&gt;_fullScreenWindowController close];
</ins><span class="cx">     _data-&gt;_fullScreenWindowController = nullptr;
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="lines">@@ -2911,9 +2915,7 @@
</span><span class="cx">     _data-&gt;_page = toImpl(contextRef)-&gt;createWebPage(*_data-&gt;_pageClient, toImpl(pageGroupRef), toImpl(relatedPage));
</span><span class="cx">     _data-&gt;_page-&gt;setIntrinsicDeviceScaleFactor([self _intrinsicDeviceScaleFactor]);
</span><span class="cx">     _data-&gt;_page-&gt;initializeWebPage();
</span><del>-#if ENABLE(FULLSCREEN_API)
-    _data-&gt;_page-&gt;fullScreenManager()-&gt;setWebView(self);
-#endif
</del><ins>+
</ins><span class="cx">     _data-&gt;_mouseDownEvent = nil;
</span><span class="cx">     _data-&gt;_ignoringMouseDraggedEvents = NO;
</span><span class="cx">     _data-&gt;_clipsToVisibleRect = NO;
</span><span class="lines">@@ -3122,7 +3124,7 @@
</span><span class="cx">     _data-&gt;_page-&gt;setUnderlayColor(colorFromNSColor(underlayColor));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (NSView*)fullScreenPlaceholderView
</del><ins>+- (NSView *)fullScreenPlaceholderView
</ins><span class="cx"> {
</span><span class="cx"> #if ENABLE(FULLSCREEN_API)
</span><span class="cx">     if (_data-&gt;_fullScreenWindowController &amp;&amp; [_data-&gt;_fullScreenWindowController isFullScreen])
</span><span class="lines">@@ -3131,6 +3133,20 @@
</span><span class="cx">     return nil;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+- (NSWindow *)createFullScreenWindow
+{
+#if ENABLE(FULLSCREEN_API)
+#if __MAC_OS_X_VERSION_MIN_REQUIRED &lt;= 1080
+    NSRect contentRect = NSZeroRect;
+#else
+    NSRect contentRect = [[NSScreen mainScreen] frame];
+#endif
+    return [[[WebCoreFullScreenWindow alloc] initWithContentRect:contentRect styleMask:(NSBorderlessWindowMask | NSResizableWindowMask) backing:NSBackingStoreBuffered defer:NO] autorelease];
+#else
+    return nil;
+#endif
+}
+
</ins><span class="cx"> - (void)beginDeferringViewInWindowChanges
</span><span class="cx"> {
</span><span class="cx">     if (_data-&gt;_shouldDeferViewInWindowChanges) {
</span><span class="lines">@@ -3222,7 +3238,7 @@
</span><span class="cx"> - (void)waitForAsyncDrawingAreaSizeUpdate
</span><span class="cx"> {
</span><span class="cx">     if (DrawingAreaProxy* drawingArea = _data-&gt;_page-&gt;drawingArea()) {
</span><del>-        // If a geometry update is still pending then the action of recieving the
</del><ins>+        // If a geometry update is still pending then the action of receiving the
</ins><span class="cx">         // first geometry update may result in another update being scheduled -
</span><span class="cx">         // we should wait for this to complete too.
</span><span class="cx">         drawingArea-&gt;waitForPossibleGeometryUpdate(DrawingAreaProxy::didUpdateBackingStoreStateTimeout * 0.5);
</span><span class="lines">@@ -3230,20 +3246,6 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (NSWindow*)createFullScreenWindow
-{
-#if ENABLE(FULLSCREEN_API)
-#if __MAC_OS_X_VERSION_MIN_REQUIRED &lt;= 1080
-    NSRect contentRect = NSZeroRect;
-#else
-    NSRect contentRect = [[NSScreen mainScreen] frame];
-#endif
-    return [[[WebCoreFullScreenWindow alloc] initWithContentRect:contentRect styleMask:(NSBorderlessWindowMask | NSResizableWindowMask) backing:NSBackingStoreBuffered defer:NO] autorelease];
-#else
-    return nil;
-#endif
-}
-
</del><span class="cx"> - (BOOL)isUsingUISideCompositing
</span><span class="cx"> {
</span><span class="cx">     if (DrawingAreaProxy* drawingArea = _data-&gt;_page-&gt;drawingArea())
</span><span class="lines">@@ -3252,6 +3254,62 @@
</span><span class="cx">     return NO;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+- (void)_ensureGestureController
+{
+    if (_data-&gt;_gestureController)
+        return;
+
+    _data-&gt;_gestureController = std::make_unique&lt;ViewGestureController&gt;(*_data-&gt;_page);
+}
+
+- (void)setAllowsMagnification:(BOOL)allowsMagnification
+{
+    _data-&gt;_allowsMagnification = allowsMagnification;
+}
+
+- (BOOL)allowsMagnification
+{
+    return _data-&gt;_allowsMagnification;
+}
+
+- (void)magnifyWithEvent:(NSEvent *)event
+{
+    if (!_data-&gt;_allowsMagnification) {
+        [super magnifyWithEvent:event];
+        return;
+    }
+
+    [self _ensureGestureController];
+
+    _data-&gt;_gestureController-&gt;handleMagnificationGesture(event.magnification, [self convertPoint:event.locationInWindow fromView:nil]);
+}
+
+-(void)endGestureWithEvent:(NSEvent *)event
+{
+    if (!_data-&gt;_gestureController) {
+        [super endGestureWithEvent:event];
+        return;
+    }
+
+    _data-&gt;_gestureController-&gt;endActiveGesture();
+}
+
+- (void)setMagnification:(double)magnification centeredAtPoint:(NSPoint)point
+{
+    _data-&gt;_page-&gt;scalePage(magnification, roundedIntPoint(point));
+}
+
+- (void)setMagnification:(double)magnification
+{
+    FloatPoint viewCenter(NSMidX([self bounds]), NSMidY([self bounds]));
+    _data-&gt;_page-&gt;scalePage(magnification, roundedIntPoint(viewCenter));
+}
+
+- (double)magnification
+{
+    return _data-&gt;_page-&gt;pageScaleFactor();
+}
+
</ins><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> @implementation WKResponderChainSink
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPImacWKViewInternalh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/API/mac/WKViewInternal.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/API/mac/WKViewInternal.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/API/mac/WKViewInternal.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -23,7 +23,7 @@
</span><span class="cx">  * THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#import &quot;WKView.h&quot;
</del><ins>+#import &quot;WKViewPrivate.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> #import &quot;PluginComplexTextInputState.h&quot;
</span><span class="cx"> #import &quot;WebFindOptions.h&quot;
</span><span class="lines">@@ -83,12 +83,6 @@
</span><span class="cx"> 
</span><span class="cx"> - (WebKit::ColorSpaceData)_colorSpace;
</span><span class="cx"> 
</span><del>-#if ENABLE(FULLSCREEN_API)
-- (BOOL)hasFullScreenWindowController;
-- (WKFullScreenWindowController*)fullScreenWindowController;
-- (void)closeFullScreenWindowController;
-#endif
-
</del><span class="cx"> - (void)_cacheWindowBottomCornerRect;
</span><span class="cx"> 
</span><span class="cx"> - (NSInteger)spellCheckerDocumentTag;
</span><span class="lines">@@ -97,4 +91,10 @@
</span><span class="cx"> - (void)_setSuppressVisibilityUpdates:(BOOL)suppressVisibilityUpdates;
</span><span class="cx"> - (BOOL)_suppressVisibilityUpdates;
</span><span class="cx"> 
</span><ins>+// FullScreen
+
+@property (readonly) BOOL _hasFullScreenWindowController;
+@property (readonly) WKFullScreenWindowController *_fullScreenWindowController;
+- (void)_closeFullScreenWindowController;
+
</ins><span class="cx"> @end
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAPINavigationDatah"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/APINavigationData.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/APINavigationData.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/APINavigationData.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -32,7 +32,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace API {
</span><span class="cx"> 
</span><del>-class NavigationData : public TypedObject&lt;Object::Type::NavigationData&gt; {
</del><ins>+class NavigationData : public ObjectImpl&lt;Object::Type::NavigationData&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;NavigationData&gt; create(const WebKit::WebNavigationDataStore&amp; store)
</span><span class="cx">     {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAuthenticationAuthenticationChallengeProxycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/Authentication/AuthenticationChallengeProxy.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/Authentication/AuthenticationChallengeProxy.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/Authentication/AuthenticationChallengeProxy.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -66,7 +66,7 @@
</span><span class="cx">         m_connection-&gt;send(Messages::AuthenticationManager::ContinueWithoutCredentialForChallenge(m_challengeID), 0);
</span><span class="cx">     else {
</span><span class="cx">         WebCertificateInfo* certificateInfo = credential-&gt;certificateInfo();
</span><del>-        CertificateInfo platformInfo = certificateInfo ? certificateInfo-&gt;certificateInfo() : CertificateInfo();
</del><ins>+        WebCore::CertificateInfo platformInfo = certificateInfo ? certificateInfo-&gt;certificateInfo() : WebCore::CertificateInfo();
</ins><span class="cx">         m_connection-&gt;send(Messages::AuthenticationManager::UseCredentialForChallenge(m_challengeID, credential-&gt;core(), platformInfo), 0);
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAuthenticationAuthenticationChallengeProxyh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/Authentication/AuthenticationChallengeProxy.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/Authentication/AuthenticationChallengeProxy.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/Authentication/AuthenticationChallengeProxy.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -41,7 +41,7 @@
</span><span class="cx"> class WebCredential;
</span><span class="cx"> class WebProtectionSpace;
</span><span class="cx"> 
</span><del>-class AuthenticationChallengeProxy : public API::TypedObject&lt;API::Object::Type::AuthenticationChallenge&gt; {
</del><ins>+class AuthenticationChallengeProxy : public API::ObjectImpl&lt;API::Object::Type::AuthenticationChallenge&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;AuthenticationChallengeProxy&gt; create(const WebCore::AuthenticationChallenge&amp; authenticationChallenge, uint64_t challengeID, CoreIPC::Connection* connection)
</span><span class="cx">     {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAuthenticationAuthenticationDecisionListenerh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/Authentication/AuthenticationDecisionListener.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/Authentication/AuthenticationDecisionListener.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/Authentication/AuthenticationDecisionListener.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -35,7 +35,7 @@
</span><span class="cx"> class AuthenticationChallengeProxy;
</span><span class="cx"> class WebCredential;
</span><span class="cx"> 
</span><del>-class AuthenticationDecisionListener : public API::TypedObject&lt;API::Object::Type::AuthenticationDecisionListener&gt; {
</del><ins>+class AuthenticationDecisionListener : public API::ObjectImpl&lt;API::Object::Type::AuthenticationDecisionListener&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;AuthenticationDecisionListener&gt; create(AuthenticationChallengeProxy* authenticationChallenge)
</span><span class="cx">     {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAuthenticationWebCredentialh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/Authentication/WebCredential.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/Authentication/WebCredential.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/Authentication/WebCredential.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -37,7 +37,7 @@
</span><span class="cx"> 
</span><span class="cx"> class WebCertificateInfo;
</span><span class="cx"> 
</span><del>-class WebCredential : public API::TypedObject&lt;API::Object::Type::Credential&gt; {
</del><ins>+class WebCredential : public API::ObjectImpl&lt;API::Object::Type::Credential&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     ~WebCredential();
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessAuthenticationWebProtectionSpaceh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/Authentication/WebProtectionSpace.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/Authentication/WebProtectionSpace.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/Authentication/WebProtectionSpace.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -32,7 +32,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><del>-class WebProtectionSpace : public API::TypedObject&lt;API::Object::Type::ProtectionSpace&gt; {
</del><ins>+class WebProtectionSpace : public API::ObjectImpl&lt;API::Object::Type::ProtectionSpace&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;WebProtectionSpace&gt; create(const WebCore::ProtectionSpace&amp; protectionSpace)
</span><span class="cx">     {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessCoordinatedGraphicsCoordinatedLayerTreeHostProxycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx">     : m_drawingAreaProxy(drawingAreaProxy)
</span><span class="cx">     , m_scene(adoptRef(new CoordinatedGraphicsScene(this)))
</span><span class="cx"> {
</span><del>-    m_drawingAreaProxy-&gt;page()-&gt;process().addMessageReceiver(Messages::CoordinatedLayerTreeHostProxy::messageReceiverName(), m_drawingAreaProxy-&gt;page()-&gt;pageID(), this);
</del><ins>+    m_drawingAreaProxy-&gt;page()-&gt;process().addMessageReceiver(Messages::CoordinatedLayerTreeHostProxy::messageReceiverName(), m_drawingAreaProxy-&gt;page()-&gt;pageID(), *this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> CoordinatedLayerTreeHostProxy::~CoordinatedLayerTreeHostProxy()
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessCoordinatedGraphicsWebViewcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/CoordinatedGraphics/WebView.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/CoordinatedGraphics/WebView.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/CoordinatedGraphics/WebView.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -194,13 +194,16 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(FULLSCREEN_API)
</span><del>-bool WebView::exitFullScreen()
</del><ins>+WebFullScreenManagerProxyClient&amp; WebView::fullScreenManagerProxyClient()
</ins><span class="cx"> {
</span><del>-#if PLATFORM(EFL)
-    // FIXME: Implement this for other platforms.
-    if (!m_page-&gt;fullScreenManager()-&gt;isFullScreen())
</del><ins>+    return *this;
+}
+
+bool WebView::requestExitFullScreen()
+{
+    if (!isFullScreen())
</ins><span class="cx">         return false;
</span><del>-#endif
</del><ins>+
</ins><span class="cx">     m_page-&gt;fullScreenManager()-&gt;requestExitFullScreen();
</span><span class="cx">     return true;
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessCoordinatedGraphicsWebViewh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/CoordinatedGraphics/WebView.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/CoordinatedGraphics/WebView.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/CoordinatedGraphics/WebView.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -33,7 +33,7 @@
</span><span class="cx"> #include &quot;DefaultUndoController.h&quot;
</span><span class="cx"> #include &quot;PageClient.h&quot;
</span><span class="cx"> #include &quot;WebContext.h&quot;
</span><del>-#include &quot;WebGeometry.h&quot;
</del><ins>+#include &quot;WebFullScreenManagerProxy.h&quot;
</ins><span class="cx"> #include &quot;WebPageGroup.h&quot;
</span><span class="cx"> #include &quot;WebPageProxy.h&quot;
</span><span class="cx"> #include &quot;WebPreferences.h&quot;
</span><span class="lines">@@ -46,7 +46,11 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><del>-class WebView : public API::TypedObject&lt;API::Object::Type::View&gt;, public PageClient {
</del><ins>+class WebView : public API::ObjectImpl&lt;API::Object::Type::View&gt;, public PageClient
+#if ENABLE(FULLSCREEN_API)
+    , public WebFullScreenManagerProxyClient
+#endif
+    {
</ins><span class="cx"> public:
</span><span class="cx">     virtual ~WebView();
</span><span class="cx"> 
</span><span class="lines">@@ -93,7 +97,7 @@
</span><span class="cx">     bool showsAsSource() const;
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(FULLSCREEN_API)
</span><del>-    bool exitFullScreen();
</del><ins>+    bool requestExitFullScreen();
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     void findZoomableAreaForPoint(const WebCore::IntPoint&amp;, const WebCore::IntSize&amp;);
</span><span class="lines">@@ -189,6 +193,18 @@
</span><span class="cx">     virtual void exitAcceleratedCompositingMode() OVERRIDE;
</span><span class="cx">     virtual void updateAcceleratedCompositingMode(const LayerTreeContext&amp;) OVERRIDE;
</span><span class="cx"> 
</span><ins>+#if ENABLE(FULLSCREEN_API)
+    WebFullScreenManagerProxyClient&amp; fullScreenManagerProxyClient() OVERRIDE;
+
+    // WebFullScreenManagerProxyClient
+    virtual void closeFullScreenManager() OVERRIDE { }
+    virtual bool isFullScreen() OVERRIDE { return false; }
+    virtual void enterFullScreen() OVERRIDE { }
+    virtual void exitFullScreen() OVERRIDE { }
+    virtual void beganEnterFullScreen(const WebCore::IntRect&amp;, const WebCore::IntRect&amp;) OVERRIDE { }
+    virtual void beganExitFullScreen(const WebCore::IntRect&amp;, const WebCore::IntRect&amp;) OVERRIDE { }
+#endif
+
</ins><span class="cx"> protected:
</span><span class="cx">     WebViewClient m_client;
</span><span class="cx">     RefPtr&lt;WebPageProxy&gt; m_page;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessDownloadsDownloadProxyh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/Downloads/DownloadProxy.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/Downloads/DownloadProxy.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/Downloads/DownloadProxy.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -46,7 +46,7 @@
</span><span class="cx"> class WebData;
</span><span class="cx"> class WebPageProxy;
</span><span class="cx"> 
</span><del>-class DownloadProxy : public API::TypedObject&lt;API::Object::Type::Download&gt;, public CoreIPC::MessageReceiver {
</del><ins>+class DownloadProxy : public API::ObjectImpl&lt;API::Object::Type::Download&gt;, public CoreIPC::MessageReceiver {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;DownloadProxy&gt; create(DownloadProxyMap&amp;, WebContext&amp;);
</span><span class="cx">     ~DownloadProxy();
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessDownloadsDownloadProxyMapcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/Downloads/DownloadProxyMap.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/Downloads/DownloadProxyMap.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/Downloads/DownloadProxyMap.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -49,7 +49,7 @@
</span><span class="cx">     RefPtr&lt;DownloadProxy&gt; downloadProxy = DownloadProxy::create(*this, webContext);
</span><span class="cx">     m_downloads.set(downloadProxy-&gt;downloadID(), downloadProxy);
</span><span class="cx"> 
</span><del>-    m_process-&gt;addMessageReceiver(Messages::DownloadProxy::messageReceiverName(), downloadProxy-&gt;downloadID(), downloadProxy.get());
</del><ins>+    m_process-&gt;addMessageReceiver(Messages::DownloadProxy::messageReceiverName(), downloadProxy-&gt;downloadID(), *downloadProxy);
</ins><span class="cx"> 
</span><span class="cx">     return downloadProxy.get();
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessDrawingAreaProxycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/DrawingAreaProxy.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/DrawingAreaProxy.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/DrawingAreaProxy.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -41,7 +41,7 @@
</span><span class="cx">     , m_webPageProxy(webPageProxy)
</span><span class="cx">     , m_size(webPageProxy-&gt;viewSize())
</span><span class="cx"> {
</span><del>-    m_webPageProxy-&gt;process().addMessageReceiver(Messages::DrawingAreaProxy::messageReceiverName(), webPageProxy-&gt;pageID(), this);
</del><ins>+    m_webPageProxy-&gt;process().addMessageReceiver(Messages::DrawingAreaProxy::messageReceiverName(), webPageProxy-&gt;pageID(), *this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> DrawingAreaProxy::~DrawingAreaProxy()
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessDrawingAreaProxyh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/DrawingAreaProxy.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/DrawingAreaProxy.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/DrawingAreaProxy.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -70,6 +70,10 @@
</span><span class="cx">     virtual void colorSpaceDidChange() { }
</span><span class="cx">     virtual void minimumLayoutSizeDidChange() { }
</span><span class="cx"> 
</span><ins>+    virtual void beginTransientZoom() { }
+    virtual void adjustTransientZoom(double scale, WebCore::FloatPoint origin) { }
+    virtual void commitTransientZoom(double scale, WebCore::FloatPoint origin) { }
+
</ins><span class="cx"> protected:
</span><span class="cx">     explicit DrawingAreaProxy(DrawingAreaType, WebPageProxy*);
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessGeolocationPermissionRequestProxyh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/GeolocationPermissionRequestProxy.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/GeolocationPermissionRequestProxy.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/GeolocationPermissionRequestProxy.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -33,7 +33,7 @@
</span><span class="cx"> 
</span><span class="cx"> class GeolocationPermissionRequestManagerProxy;
</span><span class="cx"> 
</span><del>-class GeolocationPermissionRequestProxy : public API::TypedObject&lt;API::Object::Type::GeolocationPermissionRequest&gt; {
</del><ins>+class GeolocationPermissionRequestProxy : public API::ObjectImpl&lt;API::Object::Type::GeolocationPermissionRequest&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;GeolocationPermissionRequestProxy&gt; create(GeolocationPermissionRequestManagerProxy* manager, uint64_t geolocationID)
</span><span class="cx">     {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessNetworkCustomProtocolsmacCustomProtocolManagerProxyMacmm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/Network/CustomProtocols/mac/CustomProtocolManagerProxyMac.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/Network/CustomProtocols/mac/CustomProtocolManagerProxyMac.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/Network/CustomProtocols/mac/CustomProtocolManagerProxyMac.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -126,7 +126,7 @@
</span><span class="cx">     : m_childProcessProxy(childProcessProxy)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(m_childProcessProxy);
</span><del>-    m_childProcessProxy-&gt;addMessageReceiver(Messages::CustomProtocolManagerProxy::messageReceiverName(), this);
</del><ins>+    m_childProcessProxy-&gt;addMessageReceiver(Messages::CustomProtocolManagerProxy::messageReceiverName(), *this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void CustomProtocolManagerProxy::startLoading(uint64_t customProtocolID, const ResourceRequest&amp; coreRequest)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessNetworkNetworkProcessProxycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -33,11 +33,14 @@
</span><span class="cx"> #include &quot;DownloadProxyMessages.h&quot;
</span><span class="cx"> #include &quot;NetworkProcessCreationParameters.h&quot;
</span><span class="cx"> #include &quot;NetworkProcessMessages.h&quot;
</span><del>-#include &quot;SecItemShimProxy.h&quot;
</del><span class="cx"> #include &quot;WebContext.h&quot;
</span><span class="cx"> #include &quot;WebProcessMessages.h&quot;
</span><span class="cx"> #include &lt;wtf/RunLoop.h&gt;
</span><span class="cx"> 
</span><ins>+#if ENABLE(SEC_ITEM_SHIM)
+#include &quot;SecItemShimProxy.h&quot;
+#endif
+
</ins><span class="cx"> #define MESSAGE_CHECK(assertion) MESSAGE_CHECK_BASE(assertion, connection())
</span><span class="cx"> 
</span><span class="cx"> using namespace WebCore;
</span><span class="lines">@@ -108,6 +111,8 @@
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(MAC)
</span><span class="cx">         reply-&gt;send(CoreIPC::Attachment(0, MACH_MSG_TYPE_MOVE_SEND));
</span><ins>+#elif USE(UNIX_DOMAIN_SOCKETS)
+        reply-&gt;send(CoreIPC::Attachment());
</ins><span class="cx"> #else
</span><span class="cx">         notImplemented();
</span><span class="cx"> #endif
</span><span class="lines">@@ -158,6 +163,8 @@
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(MAC)
</span><span class="cx">     reply-&gt;send(CoreIPC::Attachment(connectionIdentifier.port(), MACH_MSG_TYPE_MOVE_SEND));
</span><ins>+#elif USE(UNIX_DOMAIN_SOCKETS)
+    reply-&gt;send(connectionIdentifier);
</ins><span class="cx"> #else
</span><span class="cx">     notImplemented();
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessNetworksoupNetworkProcessProxySoupcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/Network/soup/NetworkProcessProxySoup.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/Network/soup/NetworkProcessProxySoup.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/Network/soup/NetworkProcessProxySoup.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -27,11 +27,19 @@
</span><span class="cx"> #if ENABLE(NETWORK_PROCESS)
</span><span class="cx"> 
</span><span class="cx"> #include &quot;NetworkProcessProxy.h&quot;
</span><ins>+#include &lt;glib.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><span class="cx"> void NetworkProcessProxy::platformGetLaunchOptions(ProcessLauncher::LaunchOptions&amp; launchOptions)
</span><span class="cx"> {
</span><ins>+#ifndef NDEBUG
+    const char* networkProcessCmdPrefix = g_getenv(&quot;NETWORK_PROCESS_CMD_PREFIX&quot;);
+    if (networkProcessCmdPrefix &amp;&amp; *networkProcessCmdPrefix)
+        launchOptions.processCmdPrefix = String::fromUTF8(networkProcessCmdPrefix);
+#else
+    UNUSED_PARAM(launchOptions);
+#endif
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessNotificationsNotificationPermissionRequesth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/Notifications/NotificationPermissionRequest.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/Notifications/NotificationPermissionRequest.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/Notifications/NotificationPermissionRequest.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -33,7 +33,7 @@
</span><span class="cx"> 
</span><span class="cx"> class NotificationPermissionRequestManagerProxy;
</span><span class="cx"> 
</span><del>-class NotificationPermissionRequest : public API::TypedObject&lt;API::Object::Type::NotificationPermissionRequest&gt; {
</del><ins>+class NotificationPermissionRequest : public API::ObjectImpl&lt;API::Object::Type::NotificationPermissionRequest&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;NotificationPermissionRequest&gt; create(NotificationPermissionRequestManagerProxy*, uint64_t notificationID);
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessNotificationsWebNotificationh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/Notifications/WebNotification.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/Notifications/WebNotification.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/Notifications/WebNotification.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -41,7 +41,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><del>-class WebNotification : public API::TypedObject&lt;API::Object::Type::Notification&gt; {
</del><ins>+class WebNotification : public API::ObjectImpl&lt;API::Object::Type::Notification&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;WebNotification&gt; create(const String&amp; title, const String&amp; body, const String&amp; iconURL, const String&amp; tag, const String&amp; lang, const String&amp; dir, const String&amp; originString, uint64_t notificationID)
</span><span class="cx">     {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessNotificationsWebNotificationManagerProxycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -96,7 +96,7 @@
</span><span class="cx">     RefPtr&lt;API::Array&gt; knownOrigins = knownPermissions-&gt;keys();
</span><span class="cx">     for (size_t i = 0; i &lt; knownOrigins-&gt;size(); ++i) {
</span><span class="cx">         WebString* origin = knownOrigins-&gt;at&lt;WebString&gt;(i);
</span><del>-        permissions.set(origin-&gt;string(), knownPermissions-&gt;get&lt;WebBoolean&gt;(origin-&gt;string())-&gt;value());
</del><ins>+        permissions.set(origin-&gt;string(), knownPermissions-&gt;get&lt;API::Boolean&gt;(origin-&gt;string())-&gt;value());
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -208,7 +208,7 @@
</span><span class="cx">     
</span><span class="cx">     size_t size = globalNotificationIDs-&gt;size();
</span><span class="cx">     for (size_t i = 0; i &lt; size; ++i) {
</span><del>-        auto it = m_globalNotificationMap.find(globalNotificationIDs-&gt;at&lt;WebUInt64&gt;(i)-&gt;value());
</del><ins>+        auto it = m_globalNotificationMap.find(globalNotificationIDs-&gt;at&lt;API::UInt64&gt;(i)-&gt;value());
</ins><span class="cx">         if (it == m_globalNotificationMap.end())
</span><span class="cx">             continue;
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessNotificationsWebNotificationManagerProxyh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -46,7 +46,7 @@
</span><span class="cx"> class WebPageProxy;
</span><span class="cx"> class WebSecurityOrigin;
</span><span class="cx"> 
</span><del>-class WebNotificationManagerProxy : public API::TypedObject&lt;API::Object::Type::NotificationManager&gt;, public WebContextSupplement {
</del><ins>+class WebNotificationManagerProxy : public API::ObjectImpl&lt;API::Object::Type::NotificationManager&gt;, public WebContextSupplement {
</ins><span class="cx"> public:
</span><span class="cx"> 
</span><span class="cx">     static const char* supplementName();
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessNotificationsWebNotificationProvidercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/Notifications/WebNotificationProvider.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/Notifications/WebNotificationProvider.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/Notifications/WebNotificationProvider.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -27,11 +27,11 @@
</span><span class="cx"> #include &quot;WebNotificationProvider.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;APIArray.h&quot;
</span><ins>+#include &quot;APINumber.h&quot;
</ins><span class="cx"> #include &quot;ImmutableDictionary.h&quot;
</span><span class="cx"> #include &quot;WKAPICast.h&quot;
</span><span class="cx"> #include &quot;WebNotification.h&quot;
</span><span class="cx"> #include &quot;WebNotificationManagerProxy.h&quot;
</span><del>-#include &quot;WebNumber.h&quot;
</del><span class="cx"> #include &quot;WebSecurityOrigin.h&quot;
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="lines">@@ -69,7 +69,7 @@
</span><span class="cx">     arrayIDs.reserveInitialCapacity(notificationIDs.size());
</span><span class="cx"> 
</span><span class="cx">     for (const auto&amp; notificationID : notificationIDs)
</span><del>-        arrayIDs.uncheckedAppend(WebUInt64::create(notificationID));
</del><ins>+        arrayIDs.uncheckedAppend(API::UInt64::create(notificationID));
</ins><span class="cx"> 
</span><span class="cx">     m_client.clearNotifications(toAPI(API::Array::create(std::move(arrayIDs)).get()), m_client.base.clientInfo);
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessPageClienth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/PageClient.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/PageClient.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/PageClient.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -43,11 +43,7 @@
</span><span class="cx"> OBJC_CLASS WKView;
</span><span class="cx"> OBJC_CLASS NSTextAlternatives;
</span><span class="cx"> #endif
</span><del>-
-#if PLATFORM(IOS)
-OBJC_CLASS UIWKView;
</del><span class="cx"> #endif
</span><del>-#endif
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx">     class Cursor;
</span><span class="lines">@@ -59,16 +55,22 @@
</span><span class="cx"> class DrawingAreaProxy;
</span><span class="cx"> class FindIndicator;
</span><span class="cx"> class NativeWebKeyboardEvent;
</span><ins>+class WebContextMenuProxy;
+class WebEditCommandProxy;
+class WebPopupMenuProxy;
+
</ins><span class="cx"> #if ENABLE(TOUCH_EVENTS)
</span><span class="cx"> class NativeWebTouchEvent;
</span><span class="cx"> #endif
</span><del>-class WebContextMenuProxy;
-class WebEditCommandProxy;
-class WebPopupMenuProxy;
</del><ins>+
</ins><span class="cx"> #if ENABLE(INPUT_TYPE_COLOR)
</span><span class="cx"> class WebColorPicker;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if ENABLE(FULLSCREEN_API)
+class WebFullScreenManagerProxyClient;
+#endif
+
</ins><span class="cx"> #if PLATFORM(MAC)
</span><span class="cx"> struct ColorSpaceData;
</span><span class="cx"> #endif
</span><span class="lines">@@ -242,6 +244,11 @@
</span><span class="cx">     virtual void selectionDidChange() = 0;
</span><span class="cx">     virtual bool interpretKeyEvent(const NativeWebKeyboardEvent&amp;, bool isCharEvent) = 0;
</span><span class="cx"> #endif
</span><ins>+
+    // Auxiliary Client Creation
+#if ENABLE(FULLSCREEN_API)
+    virtual WebFullScreenManagerProxyClient&amp; fullScreenManagerProxyClient() = 0;
+#endif
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessPageLoadStatecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/PageLoadState.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/PageLoadState.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/PageLoadState.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -28,9 +28,12 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><ins>+// Progress always starts at this value. This helps provide feedback as soon as a load starts.
+static const double initialProgressValue = 0.1;
+
</ins><span class="cx"> PageLoadState::PageLoadState()
</span><del>-    : m_state(State::Finished)
-    , m_estimatedProgress(0)
</del><ins>+    : m_mayHaveUncommittedChanges(false)
+    , m_outstandingTransactionCount(0)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -54,185 +57,233 @@
</span><span class="cx">     m_observers.remove(index);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void PageLoadState::reset()
</del><ins>+void PageLoadState::endTransaction()
</ins><span class="cx"> {
</span><del>-    setState(State::Finished);
</del><ins>+    ASSERT(m_outstandingTransactionCount &gt; 0);
</ins><span class="cx"> 
</span><del>-    m_pendingAPIRequestURL = String();
-    m_provisionalURL = String();
-    m_url = String();
</del><ins>+    if (!--m_outstandingTransactionCount)
+        commitChanges();
+}
</ins><span class="cx"> 
</span><del>-    m_unreachableURL = String();
</del><ins>+void PageLoadState::commitChanges()
+{
+    if (!m_mayHaveUncommittedChanges)
+        return;
+
+    m_mayHaveUncommittedChanges = false;
+
+    bool titleChanged = m_committedState.title != m_uncommittedState.title;
+    bool isLoadingChanged = isLoadingState(m_committedState.state) != isLoadingState(m_uncommittedState.state);
+    bool activeURLChanged = activeURL(m_committedState) != activeURL(m_uncommittedState);
+    bool estimatedProgressChanged = estimatedProgress(m_committedState) != estimatedProgress(m_uncommittedState);
+
+    if (titleChanged)
+        callObserverCallback(&amp;Observer::willChangeTitle);
+    if (isLoadingChanged)
+        callObserverCallback(&amp;Observer::willChangeIsLoading);
+    if (activeURLChanged)
+        callObserverCallback(&amp;Observer::willChangeActiveURL);
+    if (estimatedProgressChanged)
+        callObserverCallback(&amp;Observer::willChangeEstimatedProgress);
+
+    m_committedState = m_uncommittedState;
+
+    // The &quot;did&quot; ordering is the reverse of the &quot;will&quot;. This is a requirement of Cocoa Key-Value Observing.
+    if (estimatedProgressChanged)
+        callObserverCallback(&amp;Observer::didChangeEstimatedProgress);
+    if (activeURLChanged)
+        callObserverCallback(&amp;Observer::didChangeActiveURL);
+    if (isLoadingChanged)
+        callObserverCallback(&amp;Observer::didChangeIsLoading);
+    if (titleChanged)
+        callObserverCallback(&amp;Observer::didChangeTitle);
+}
+
+void PageLoadState::reset(const Transaction::Token&amp; token)
+{
+    ASSERT_UNUSED(token, &amp;token.m_pageLoadState == this);
+
+    m_uncommittedState.state = State::Finished;
+
+    m_uncommittedState.pendingAPIRequestURL = String();
+    m_uncommittedState.provisionalURL = String();
+    m_uncommittedState.url = String();
+
+    m_uncommittedState.unreachableURL = String();
</ins><span class="cx">     m_lastUnreachableURL = String();
</span><span class="cx"> 
</span><del>-    callObserverCallback(&amp;Observer::willChangeTitle);
-    m_title = String();
-    callObserverCallback(&amp;Observer::didChangeTitle);
</del><ins>+    m_uncommittedState.title = String();
</ins><span class="cx"> 
</span><del>-    callObserverCallback(&amp;Observer::willChangeEstimatedProgress);
-    m_estimatedProgress = 0;
-    callObserverCallback(&amp;Observer::didChangeEstimatedProgress);
</del><ins>+    m_uncommittedState.estimatedProgress = 0;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool PageLoadState::isLoading() const
</span><span class="cx"> {
</span><del>-    return isLoadingState(m_state);
</del><ins>+    return isLoadingState(m_committedState.state);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-String PageLoadState::activeURL() const
</del><ins>+String PageLoadState::activeURL(const Data&amp; data)
</ins><span class="cx"> {
</span><span class="cx">     // If there is a currently pending URL, it is the active URL,
</span><span class="cx">     // even when there's no main frame yet, as it might be the
</span><span class="cx">     // first API request.
</span><del>-    if (!m_pendingAPIRequestURL.isNull())
-        return m_pendingAPIRequestURL;
</del><ins>+    if (!data.pendingAPIRequestURL.isNull())
+        return data.pendingAPIRequestURL;
</ins><span class="cx"> 
</span><del>-    if (!m_unreachableURL.isEmpty())
-        return m_unreachableURL;
</del><ins>+    if (!data.unreachableURL.isEmpty())
+        return data.unreachableURL;
</ins><span class="cx"> 
</span><del>-    switch (m_state) {
</del><ins>+    switch (data.state) {
</ins><span class="cx">     case State::Provisional:
</span><del>-        return m_provisionalURL;
</del><ins>+        return data.provisionalURL;
</ins><span class="cx">     case State::Committed:
</span><span class="cx">     case State::Finished:
</span><del>-        return m_url;
</del><ins>+        return data.url;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     ASSERT_NOT_REACHED();
</span><span class="cx">     return String();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-// Always start progress at initialProgressValue. This helps provide feedback as
-// soon as a load starts.
</del><ins>+String PageLoadState::activeURL() const
+{
+    return activeURL(m_committedState);
+}
</ins><span class="cx"> 
</span><del>-static const double initialProgressValue = 0.1;
-
-double PageLoadState::estimatedProgress() const
</del><ins>+double PageLoadState::estimatedProgress(const Data&amp; data)
</ins><span class="cx"> {
</span><del>-    if (!m_pendingAPIRequestURL.isNull())
</del><ins>+    if (!data.pendingAPIRequestURL.isNull())
</ins><span class="cx">         return initialProgressValue;
</span><span class="cx"> 
</span><del>-    return m_estimatedProgress;
</del><ins>+    return data.estimatedProgress;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+double PageLoadState::estimatedProgress() const
+{
+    return estimatedProgress(m_committedState);
+}
+
</ins><span class="cx"> const String&amp; PageLoadState::pendingAPIRequestURL() const
</span><span class="cx"> {
</span><del>-    return m_pendingAPIRequestURL;
</del><ins>+    return m_committedState.pendingAPIRequestURL;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void PageLoadState::setPendingAPIRequestURL(const String&amp; pendingAPIRequestURL)
</del><ins>+void PageLoadState::setPendingAPIRequestURL(const Transaction::Token&amp; token, const String&amp; pendingAPIRequestURL)
</ins><span class="cx"> {
</span><del>-    callObserverCallback(&amp;Observer::willChangeEstimatedProgress);
-    m_pendingAPIRequestURL = pendingAPIRequestURL;
-    callObserverCallback(&amp;Observer::didChangeEstimatedProgress);
</del><ins>+    ASSERT_UNUSED(token, &amp;token.m_pageLoadState == this);
+    m_uncommittedState.pendingAPIRequestURL = pendingAPIRequestURL;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void PageLoadState::clearPendingAPIRequestURL()
</del><ins>+void PageLoadState::clearPendingAPIRequestURL(const Transaction::Token&amp; token)
</ins><span class="cx"> {
</span><del>-    callObserverCallback(&amp;Observer::willChangeEstimatedProgress);
-    m_pendingAPIRequestURL = String();
-    callObserverCallback(&amp;Observer::didChangeEstimatedProgress);
</del><ins>+    ASSERT_UNUSED(token, &amp;token.m_pageLoadState == this);
+    m_uncommittedState.pendingAPIRequestURL = String();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void PageLoadState::didStartProvisionalLoad(const String&amp; url, const String&amp; unreachableURL)
</del><ins>+void PageLoadState::didStartProvisionalLoad(const Transaction::Token&amp; token, const String&amp; url, const String&amp; unreachableURL)
</ins><span class="cx"> {
</span><del>-    ASSERT(m_provisionalURL.isEmpty());
</del><ins>+    ASSERT_UNUSED(token, &amp;token.m_pageLoadState == this);
+    ASSERT(m_uncommittedState.provisionalURL.isEmpty());
</ins><span class="cx"> 
</span><del>-    setState(State::Provisional);
</del><ins>+    m_uncommittedState.state = State::Provisional;
</ins><span class="cx"> 
</span><del>-    m_provisionalURL = url;
</del><ins>+    m_uncommittedState.provisionalURL = url;
</ins><span class="cx"> 
</span><del>-    setUnreachableURL(unreachableURL);
</del><ins>+    setUnreachableURL(token, unreachableURL);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void PageLoadState::didReceiveServerRedirectForProvisionalLoad(const String&amp; url)
</del><ins>+void PageLoadState::didReceiveServerRedirectForProvisionalLoad(const Transaction::Token&amp; token, const String&amp; url)
</ins><span class="cx"> {
</span><del>-    ASSERT(m_state == State::Provisional);
</del><ins>+    ASSERT_UNUSED(token, &amp;token.m_pageLoadState == this);
+    ASSERT(m_uncommittedState.state == State::Provisional);
</ins><span class="cx"> 
</span><del>-    m_provisionalURL = url;
</del><ins>+    m_uncommittedState.provisionalURL = url;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void PageLoadState::didFailProvisionalLoad()
</del><ins>+void PageLoadState::didFailProvisionalLoad(const Transaction::Token&amp; token)
</ins><span class="cx"> {
</span><del>-    ASSERT(m_state == State::Provisional);
</del><ins>+    ASSERT_UNUSED(token, &amp;token.m_pageLoadState == this);
+    ASSERT(m_uncommittedState.state == State::Provisional);
</ins><span class="cx"> 
</span><del>-    setState(State::Finished);
</del><ins>+    m_uncommittedState.state = State::Finished;
</ins><span class="cx"> 
</span><del>-    m_provisionalURL = String();
-    m_unreachableURL = m_lastUnreachableURL;
</del><ins>+    m_uncommittedState.provisionalURL = String();
+    m_uncommittedState.unreachableURL = m_lastUnreachableURL;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void PageLoadState::didCommitLoad()
</del><ins>+void PageLoadState::didCommitLoad(const Transaction::Token&amp; token)
</ins><span class="cx"> {
</span><del>-    ASSERT(m_state == State::Provisional);
</del><ins>+    ASSERT_UNUSED(token, &amp;token.m_pageLoadState == this);
+    ASSERT(m_uncommittedState.state == State::Provisional);
</ins><span class="cx"> 
</span><del>-    setState(State::Committed);
</del><ins>+    m_uncommittedState.state = State::Committed;
</ins><span class="cx"> 
</span><del>-    m_url = m_provisionalURL;
-    m_provisionalURL = String();
</del><ins>+    m_uncommittedState.url = m_uncommittedState.provisionalURL;
+    m_uncommittedState.provisionalURL = String();
</ins><span class="cx"> 
</span><del>-    m_title = String();
</del><ins>+    m_uncommittedState.title = String();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void PageLoadState::didFinishLoad()
</del><ins>+void PageLoadState::didFinishLoad(const Transaction::Token&amp; token)
</ins><span class="cx"> {
</span><del>-    ASSERT(m_state == State::Committed);
-    ASSERT(m_provisionalURL.isEmpty());
</del><ins>+    ASSERT_UNUSED(token, &amp;token.m_pageLoadState == this);
+    ASSERT(m_uncommittedState.state == State::Committed);
+    ASSERT(m_uncommittedState.provisionalURL.isEmpty());
</ins><span class="cx"> 
</span><del>-    setState(State::Finished);
</del><ins>+    m_uncommittedState.state = State::Finished;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void PageLoadState::didFailLoad()
</del><ins>+void PageLoadState::didFailLoad(const Transaction::Token&amp; token)
</ins><span class="cx"> {
</span><del>-    ASSERT(m_provisionalURL.isEmpty());
</del><ins>+    ASSERT_UNUSED(token, &amp;token.m_pageLoadState == this);
+    ASSERT(m_uncommittedState.provisionalURL.isEmpty());
</ins><span class="cx"> 
</span><del>-    setState(State::Finished);
</del><ins>+    m_uncommittedState.state = State::Finished;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void PageLoadState::didSameDocumentNavigation(const String&amp; url)
</del><ins>+void PageLoadState::didSameDocumentNavigation(const Transaction::Token&amp; token, const String&amp; url)
</ins><span class="cx"> {
</span><del>-    ASSERT(!m_url.isEmpty());
</del><ins>+    ASSERT_UNUSED(token, &amp;token.m_pageLoadState == this);
+    ASSERT(!m_uncommittedState.url.isEmpty());
</ins><span class="cx"> 
</span><del>-    m_url = url;
</del><ins>+    m_uncommittedState.url = url;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void PageLoadState::setUnreachableURL(const String&amp; unreachableURL)
</del><ins>+void PageLoadState::setUnreachableURL(const Transaction::Token&amp; token, const String&amp; unreachableURL)
</ins><span class="cx"> {
</span><del>-    m_lastUnreachableURL = m_unreachableURL;
-    m_unreachableURL = unreachableURL;
</del><ins>+    ASSERT_UNUSED(token, &amp;token.m_pageLoadState == this);
+
+    m_lastUnreachableURL = m_uncommittedState.unreachableURL;
+    m_uncommittedState.unreachableURL = unreachableURL;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> const String&amp; PageLoadState::title() const
</span><span class="cx"> {
</span><del>-    return m_title;
</del><ins>+    return m_committedState.title;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void PageLoadState::setTitle(const String&amp; title)
</del><ins>+void PageLoadState::setTitle(const Transaction::Token&amp; token, const String&amp; title)
</ins><span class="cx"> {
</span><del>-    callObserverCallback(&amp;Observer::willChangeTitle);
-    m_title = title;
-    callObserverCallback(&amp;Observer::didChangeTitle);
</del><ins>+    ASSERT_UNUSED(token, &amp;token.m_pageLoadState == this);
+    m_uncommittedState.title = title;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void PageLoadState::didStartProgress()
</del><ins>+void PageLoadState::didStartProgress(const Transaction::Token&amp; token)
</ins><span class="cx"> {
</span><del>-    callObserverCallback(&amp;Observer::willChangeEstimatedProgress);
-    m_estimatedProgress = initialProgressValue;
-    callObserverCallback(&amp;Observer::didChangeEstimatedProgress);
</del><ins>+    ASSERT_UNUSED(token, &amp;token.m_pageLoadState == this);
+    m_uncommittedState.estimatedProgress = initialProgressValue;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void PageLoadState::didChangeProgress(double value)
</del><ins>+void PageLoadState::didChangeProgress(const Transaction::Token&amp; token, double value)
</ins><span class="cx"> {
</span><del>-    callObserverCallback(&amp;Observer::willChangeEstimatedProgress);
-    m_estimatedProgress = value;
-    callObserverCallback(&amp;Observer::didChangeEstimatedProgress);
</del><ins>+    ASSERT_UNUSED(token, &amp;token.m_pageLoadState == this);
+    m_uncommittedState.estimatedProgress = value;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void PageLoadState::didFinishProgress()
</del><ins>+void PageLoadState::didFinishProgress(const Transaction::Token&amp; token)
</ins><span class="cx"> {
</span><del>-    callObserverCallback(&amp;Observer::willChangeEstimatedProgress);
-    m_estimatedProgress = 1;
-    callObserverCallback(&amp;Observer::didChangeEstimatedProgress);
</del><ins>+    ASSERT_UNUSED(token, &amp;token.m_pageLoadState == this);
+    m_uncommittedState.estimatedProgress = 1;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool PageLoadState::isLoadingState(State state)
</span><span class="lines">@@ -250,25 +301,6 @@
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void PageLoadState::setState(State state)
-{
-    if (m_state == state)
-        return;
-
-    bool isLoadingIsChanging = false;
-
-    if (isLoadingState(m_state) != isLoadingState(state))
-        isLoadingIsChanging = true;
-
-    if (isLoadingIsChanging)
-        callObserverCallback(&amp;Observer::willChangeIsLoading);
-
-    m_state = state;
-
-    if (isLoadingIsChanging)
-        callObserverCallback(&amp;Observer::didChangeIsLoading);
-}
-
</del><span class="cx"> void PageLoadState::callObserverCallback(void (Observer::*callback)())
</span><span class="cx"> {
</span><span class="cx">     for (auto* observer : m_observers)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessPageLoadStateh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/PageLoadState.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/PageLoadState.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/PageLoadState.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -51,69 +51,137 @@
</span><span class="cx">         virtual void willChangeTitle() = 0;
</span><span class="cx">         virtual void didChangeTitle() = 0;
</span><span class="cx"> 
</span><ins>+        virtual void willChangeActiveURL() = 0;
+        virtual void didChangeActiveURL() = 0;
+
</ins><span class="cx">         virtual void willChangeEstimatedProgress() = 0;
</span><span class="cx">         virtual void didChangeEstimatedProgress() = 0;
</span><span class="cx">     };
</span><span class="cx"> 
</span><ins>+    class Transaction {
+        WTF_MAKE_NONCOPYABLE(Transaction);
+    public:
+        Transaction(Transaction&amp;&amp; other)
+            : m_pageLoadState(other.m_pageLoadState)
+        {
+            other.m_pageLoadState = nullptr;
+        }
+
+        ~Transaction()
+        {
+            if (m_pageLoadState)
+                m_pageLoadState-&gt;endTransaction();
+        }
+
+    private:
+        friend class PageLoadState;
+
+        explicit Transaction(PageLoadState&amp; pageLoadState)
+            : m_pageLoadState(&amp;pageLoadState)
+        {
+            m_pageLoadState-&gt;beginTransaction();
+        }
+
+        class Token {
+        public:
+            Token(Transaction&amp; transaction)
+#if !ASSERT_DISABLED
+                : m_pageLoadState(*transaction.m_pageLoadState)
+#endif
+            {
+                transaction.m_pageLoadState-&gt;m_mayHaveUncommittedChanges = true;
+            }
+
+#if !ASSERT_DISABLED
+            PageLoadState&amp; m_pageLoadState;
+#endif
+        };
+
+        PageLoadState* m_pageLoadState;
+    };
+
</ins><span class="cx">     void addObserver(Observer&amp;);
</span><span class="cx">     void removeObserver(Observer&amp;);
</span><span class="cx"> 
</span><del>-    void reset();
</del><ins>+    Transaction transaction() { return Transaction(*this); }
+    void commitChanges();
</ins><span class="cx"> 
</span><ins>+    void reset(const Transaction::Token&amp;);
+
</ins><span class="cx">     bool isLoading() const;
</span><span class="cx"> 
</span><del>-    const String&amp; provisionalURL() const { return m_provisionalURL; }
-    const String&amp; url() const { return m_url; }
-    const String&amp; unreachableURL() const { return m_unreachableURL; }
</del><ins>+    const String&amp; provisionalURL() const { return m_committedState.provisionalURL; }
+    const String&amp; url() const { return m_committedState.url; }
+    const String&amp; unreachableURL() const { return m_committedState.unreachableURL; }
</ins><span class="cx"> 
</span><span class="cx">     String activeURL() const;
</span><span class="cx"> 
</span><span class="cx">     double estimatedProgress() const;
</span><span class="cx"> 
</span><span class="cx">     const String&amp; pendingAPIRequestURL() const;
</span><del>-    void setPendingAPIRequestURL(const String&amp;);
-    void clearPendingAPIRequestURL();
</del><ins>+    void setPendingAPIRequestURL(const Transaction::Token&amp;, const String&amp;);
+    void clearPendingAPIRequestURL(const Transaction::Token&amp;);
</ins><span class="cx"> 
</span><del>-    void didStartProvisionalLoad(const String&amp; url, const String&amp; unreachableURL);
-    void didReceiveServerRedirectForProvisionalLoad(const String&amp; url);
-    void didFailProvisionalLoad();
</del><ins>+    void didStartProvisionalLoad(const Transaction::Token&amp;, const String&amp; url, const String&amp; unreachableURL);
+    void didReceiveServerRedirectForProvisionalLoad(const Transaction::Token&amp;, const String&amp; url);
+    void didFailProvisionalLoad(const Transaction::Token&amp;);
</ins><span class="cx"> 
</span><del>-    void didCommitLoad();
-    void didFinishLoad();
-    void didFailLoad();
</del><ins>+    void didCommitLoad(const Transaction::Token&amp;);
+    void didFinishLoad(const Transaction::Token&amp;);
+    void didFailLoad(const Transaction::Token&amp;);
</ins><span class="cx"> 
</span><del>-    void didSameDocumentNavigation(const String&amp; url);
</del><ins>+    void didSameDocumentNavigation(const Transaction::Token&amp;, const String&amp; url);
</ins><span class="cx"> 
</span><del>-    void setUnreachableURL(const String&amp;);
</del><ins>+    void setUnreachableURL(const Transaction::Token&amp;, const String&amp;);
</ins><span class="cx"> 
</span><span class="cx">     const String&amp; title() const;
</span><del>-    void setTitle(const String&amp;);
</del><ins>+    void setTitle(const Transaction::Token&amp;, const String&amp;);
</ins><span class="cx"> 
</span><del>-    void didStartProgress();
-    void didChangeProgress(double);
-    void didFinishProgress();
</del><ins>+    void didStartProgress(const Transaction::Token&amp;);
+    void didChangeProgress(const Transaction::Token&amp;, double);
+    void didFinishProgress(const Transaction::Token&amp;);
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     static bool isLoadingState(State);
</span><del>-    void setState(State);
</del><span class="cx"> 
</span><ins>+    void beginTransaction() { ++m_outstandingTransactionCount; }
+    void endTransaction();
+
</ins><span class="cx">     void callObserverCallback(void (Observer::*)());
</span><span class="cx"> 
</span><span class="cx">     Vector&lt;Observer*&gt; m_observers;
</span><span class="cx"> 
</span><del>-    State m_state;
</del><ins>+    struct Data {
+        Data()
+            : state(State::Finished)
+            , estimatedProgress(0)
+        {
+        }
</ins><span class="cx"> 
</span><del>-    String m_pendingAPIRequestURL;
</del><ins>+        State state;
</ins><span class="cx"> 
</span><del>-    String m_provisionalURL;
-    String m_url;
</del><ins>+        String pendingAPIRequestURL;
</ins><span class="cx"> 
</span><del>-    String m_unreachableURL;
</del><ins>+        String provisionalURL;
+        String url;
+
+        String unreachableURL;
+
+        String title;
+
+        double estimatedProgress;
+    };
+
+    static String activeURL(const Data&amp;);
+    static double estimatedProgress(const Data&amp;);
+
+    Data m_committedState;
+    Data m_uncommittedState;
+
</ins><span class="cx">     String m_lastUnreachableURL;
</span><span class="cx"> 
</span><del>-    String m_title;
-
-    double m_estimatedProgress;
</del><ins>+    bool m_mayHaveUncommittedChanges;
+    unsigned m_outstandingTransactionCount;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessPluginsPlugInAutoStartProvidercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/Plugins/PlugInAutoStartProvider.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/Plugins/PlugInAutoStartProvider.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/Plugins/PlugInAutoStartProvider.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -89,14 +89,14 @@
</span><span class="cx">         for (PlugInAutoStartOriginHash::const_iterator valueIt = it-&gt;value.begin(); valueIt != valueEnd; ++valueIt) {
</span><span class="cx">             if (now &gt; valueIt-&gt;value)
</span><span class="cx">                 continue;
</span><del>-            hashMap.set(String::number(valueIt-&gt;key), WebDouble::create(valueIt-&gt;value));
</del><ins>+            hashMap.set(String::number(valueIt-&gt;key), API::Double::create(valueIt-&gt;value));
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         if (hashMap.size())
</span><del>-            map.set(it-&gt;key, ImmutableDictionary::adopt(hashMap));
</del><ins>+            map.set(it-&gt;key, ImmutableDictionary::create(std::move(hashMap)));
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    return ImmutableDictionary::adopt(map);
</del><ins>+    return ImmutableDictionary::create(std::move(map));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void PlugInAutoStartProvider::setAutoStartOriginsTable(ImmutableDictionary&amp; table)
</span><span class="lines">@@ -116,10 +116,10 @@
</span><span class="cx">             if (!ok)
</span><span class="cx">                 continue;
</span><span class="cx"> 
</span><del>-            if (hashIt-&gt;value-&gt;type() != WebDouble::APIType)
</del><ins>+            if (hashIt-&gt;value-&gt;type() != API::Double::APIType)
</ins><span class="cx">                 continue;
</span><span class="cx"> 
</span><del>-            double expirationTime = static_cast&lt;WebDouble*&gt;(hashIt-&gt;value.get())-&gt;value();
</del><ins>+            double expirationTime = static_cast&lt;API::Double*&gt;(hashIt-&gt;value.get())-&gt;value();
</ins><span class="cx">             hashes.set(hash, expirationTime);
</span><span class="cx">             hashMap.set(hash, expirationTime);
</span><span class="cx">             m_hashToOriginMap.set(hash, it-&gt;key);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessPluginsWebPluginSiteDataManagerh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/Plugins/WebPluginSiteDataManager.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/Plugins/WebPluginSiteDataManager.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/Plugins/WebPluginSiteDataManager.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -41,7 +41,7 @@
</span><span class="cx"> 
</span><span class="cx"> typedef GenericCallback&lt;WKArrayRef&gt; ArrayCallback;
</span><span class="cx"> 
</span><del>-class WebPluginSiteDataManager : public API::TypedObject&lt;API::Object::Type::PluginSiteDataManager&gt; {
</del><ins>+class WebPluginSiteDataManager : public API::ObjectImpl&lt;API::Object::Type::PluginSiteDataManager&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;WebPluginSiteDataManager&gt; create(WebContext*);
</span><span class="cx">     virtual ~WebPluginSiteDataManager();
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessStatisticsRequestcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/StatisticsRequest.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/StatisticsRequest.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/StatisticsRequest.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -56,7 +56,7 @@
</span><span class="cx"> {
</span><span class="cx">     HashMap&lt;String, uint64_t&gt;::const_iterator end = map.end();
</span><span class="cx">     for (HashMap&lt;String, uint64_t&gt;::const_iterator it = map.begin(); it != end; ++it)
</span><del>-        dictionary-&gt;set(it-&gt;key, RefPtr&lt;WebUInt64&gt;(WebUInt64::create(it-&gt;value)).get());
</del><ins>+        dictionary-&gt;set(it-&gt;key, RefPtr&lt;API::UInt64&gt;(API::UInt64::create(it-&gt;value)).get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static PassRefPtr&lt;MutableDictionary&gt; createDictionaryFromHashMap(const HashMap&lt;String, uint64_t&gt;&amp; map)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebApplicationCacheManagerProxycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebApplicationCacheManagerProxy.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebApplicationCacheManagerProxy.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebApplicationCacheManagerProxy.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -47,7 +47,7 @@
</span><span class="cx"> WebApplicationCacheManagerProxy::WebApplicationCacheManagerProxy(WebContext* context)
</span><span class="cx">     : WebContextSupplement(context)
</span><span class="cx"> {
</span><del>-    context-&gt;addMessageReceiver(Messages::WebApplicationCacheManagerProxy::messageReceiverName(), this);
</del><ins>+    context-&gt;addMessageReceiver(Messages::WebApplicationCacheManagerProxy::messageReceiverName(), *this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebApplicationCacheManagerProxy::~WebApplicationCacheManagerProxy()
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebApplicationCacheManagerProxyh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebApplicationCacheManagerProxy.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebApplicationCacheManagerProxy.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebApplicationCacheManagerProxy.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -45,7 +45,7 @@
</span><span class="cx"> 
</span><span class="cx"> typedef GenericCallback&lt;WKArrayRef&gt; ArrayCallback;
</span><span class="cx"> 
</span><del>-class WebApplicationCacheManagerProxy : public API::TypedObject&lt;API::Object::Type::ApplicationCacheManager&gt;, public WebContextSupplement, private CoreIPC::MessageReceiver {
</del><ins>+class WebApplicationCacheManagerProxy : public API::ObjectImpl&lt;API::Object::Type::ApplicationCacheManager&gt;, public WebContextSupplement, private CoreIPC::MessageReceiver {
</ins><span class="cx"> public:
</span><span class="cx">     static const char* supplementName();
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebBackForwardListh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebBackForwardList.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebBackForwardList.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebBackForwardList.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -44,7 +44,7 @@
</span><span class="cx">  *      Back        Forward
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-class WebBackForwardList : public API::TypedObject&lt;API::Object::Type::BackForwardList&gt; {
</del><ins>+class WebBackForwardList : public API::ObjectImpl&lt;API::Object::Type::BackForwardList&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRef&lt;WebBackForwardList&gt; create(WebPageProxy&amp; page)
</span><span class="cx">     {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebBatteryManagerProxycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebBatteryManagerProxy.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebBatteryManagerProxy.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebBatteryManagerProxy.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx">     : WebContextSupplement(context)
</span><span class="cx">     , m_isUpdating(false)
</span><span class="cx"> {
</span><del>-    WebContextSupplement::context()-&gt;addMessageReceiver(Messages::WebBatteryManagerProxy::messageReceiverName(), this);
</del><ins>+    WebContextSupplement::context()-&gt;addMessageReceiver(Messages::WebBatteryManagerProxy::messageReceiverName(), *this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebBatteryManagerProxy::~WebBatteryManagerProxy()
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebBatteryManagerProxyh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebBatteryManagerProxy.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebBatteryManagerProxy.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebBatteryManagerProxy.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -39,7 +39,7 @@
</span><span class="cx"> class WebContext;
</span><span class="cx"> class WebBatteryStatus;
</span><span class="cx"> 
</span><del>-class WebBatteryManagerProxy : public API::TypedObject&lt;API::Object::Type::BatteryManager&gt;, public WebContextSupplement, private CoreIPC::MessageReceiver {
</del><ins>+class WebBatteryManagerProxy : public API::ObjectImpl&lt;API::Object::Type::BatteryManager&gt;, public WebContextSupplement, private CoreIPC::MessageReceiver {
</ins><span class="cx"> public:
</span><span class="cx">     static const char* supplementName();
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebColorPickerResultListenerProxyh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebColorPickerResultListenerProxy.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebColorPickerResultListenerProxy.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebColorPickerResultListenerProxy.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -37,7 +37,7 @@
</span><span class="cx"> 
</span><span class="cx"> class WebPageProxy;
</span><span class="cx"> 
</span><del>-class WebColorPickerResultListenerProxy : public API::TypedObject&lt;API::Object::Type::ColorPickerResultListener&gt; {
</del><ins>+class WebColorPickerResultListenerProxy : public API::ObjectImpl&lt;API::Object::Type::ColorPickerResultListener&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;WebColorPickerResultListenerProxy&gt; create(WebPageProxy* page)
</span><span class="cx">     {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebConnectionToWebProcesscpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebConnectionToWebProcess.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebConnectionToWebProcess.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebConnectionToWebProcess.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -40,7 +40,7 @@
</span><span class="cx"> WebConnectionToWebProcess::WebConnectionToWebProcess(WebProcessProxy* process)
</span><span class="cx">     : m_process(process)
</span><span class="cx"> {
</span><del>-    m_process-&gt;addMessageReceiver(Messages::WebConnection::messageReceiverName(), this);
</del><ins>+    m_process-&gt;addMessageReceiver(Messages::WebConnection::messageReceiverName(), *this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebConnectionToWebProcess::invalidate()
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebContextcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebContext.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebContext.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebContext.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -123,14 +123,6 @@
</span><span class="cx">     return contexts();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-#if PLATFORM(IOS)
-WebContext* WebContext::sharedProcessContext()
-{
-    static WKContextRef sharedContextRef = WKContextCreate();
-    return toImpl(sharedContextRef);
-}
-#endif
-
</del><span class="cx"> WebContext::WebContext(const String&amp; injectedBundlePath)
</span><span class="cx">     : m_processModel(ProcessModelSharedSecondaryProcess)
</span><span class="cx">     , m_webProcessCountLimit(UINT_MAX)
</span><span class="lines">@@ -163,8 +155,8 @@
</span><span class="cx"> {
</span><span class="cx">     platformInitialize();
</span><span class="cx"> 
</span><del>-    addMessageReceiver(Messages::WebContext::messageReceiverName(), this);
-    addMessageReceiver(WebContextLegacyMessages::messageReceiverName(), this);
</del><ins>+    addMessageReceiver(Messages::WebContext::messageReceiverName(), *this);
+    addMessageReceiver(WebContextLegacyMessages::messageReceiverName(), *this);
</ins><span class="cx"> 
</span><span class="cx">     // NOTE: These sub-objects must be initialized after m_messageReceiverMap..
</span><span class="cx">     m_iconDatabase = WebIconDatabase::create(this);
</span><span class="lines">@@ -919,12 +911,12 @@
</span><span class="cx">     return ensureSharedWebProcess().createDownloadProxy();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebContext::addMessageReceiver(CoreIPC::StringReference messageReceiverName, CoreIPC::MessageReceiver* messageReceiver)
</del><ins>+void WebContext::addMessageReceiver(CoreIPC::StringReference messageReceiverName, CoreIPC::MessageReceiver&amp; messageReceiver)
</ins><span class="cx"> {
</span><span class="cx">     m_messageReceiverMap.addMessageReceiver(messageReceiverName, messageReceiver);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebContext::addMessageReceiver(CoreIPC::StringReference messageReceiverName, uint64_t destinationID, CoreIPC::MessageReceiver* messageReceiver)
</del><ins>+void WebContext::addMessageReceiver(CoreIPC::StringReference messageReceiverName, uint64_t destinationID, CoreIPC::MessageReceiver&amp; messageReceiver)
</ins><span class="cx"> {
</span><span class="cx">     m_messageReceiverMap.addMessageReceiver(messageReceiverName, destinationID, messageReceiver);
</span><span class="cx"> }
</span><span class="lines">@@ -1301,7 +1293,7 @@
</span><span class="cx">         map.set(ASCIILiteral(&quot;version&quot;), WebString::create(pluginModule.versionString));
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-        plugins.uncheckedAppend(ImmutableDictionary::adopt(map));
</del><ins>+        plugins.uncheckedAppend(ImmutableDictionary::create(std::move(map)));
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     m_client.plugInInformationBecameAvailable(this, API::Array::create(std::move(plugins)).get());
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebContexth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebContext.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebContext.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebContext.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -90,7 +90,7 @@
</span><span class="cx"> extern NSString *SchemeForCustomProtocolUnregisteredNotificationName;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-class WebContext : public API::TypedObject&lt;API::Object::Type::Context&gt;, private CoreIPC::MessageReceiver
</del><ins>+class WebContext : public API::ObjectImpl&lt;API::Object::Type::Context&gt;, private CoreIPC::MessageReceiver
</ins><span class="cx"> #if ENABLE(NETSCAPE_PLUGIN_API)
</span><span class="cx">     , private PluginInfoStoreClient
</span><span class="cx"> #endif
</span><span class="lines">@@ -101,10 +101,6 @@
</span><span class="cx">     static PassRefPtr&lt;WebContext&gt; create(const String&amp; injectedBundlePath);
</span><span class="cx">     virtual ~WebContext();
</span><span class="cx"> 
</span><del>-#if PLATFORM(IOS)
-    static WebContext *sharedProcessContext();
-#endif
-
</del><span class="cx">     static const Vector&lt;WebContext*&gt;&amp; allContexts();
</span><span class="cx"> 
</span><span class="cx">     template &lt;typename T&gt;
</span><span class="lines">@@ -119,8 +115,8 @@
</span><span class="cx">         m_supplements.add(T::supplementName(), T::create(this));
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    void addMessageReceiver(CoreIPC::StringReference messageReceiverName, CoreIPC::MessageReceiver*);
-    void addMessageReceiver(CoreIPC::StringReference messageReceiverName, uint64_t destinationID, CoreIPC::MessageReceiver*);
</del><ins>+    void addMessageReceiver(CoreIPC::StringReference messageReceiverName, CoreIPC::MessageReceiver&amp;);
+    void addMessageReceiver(CoreIPC::StringReference messageReceiverName, uint64_t destinationID, CoreIPC::MessageReceiver&amp;);
</ins><span class="cx">     void removeMessageReceiver(CoreIPC::StringReference messageReceiverName, uint64_t destinationID);
</span><span class="cx"> 
</span><span class="cx">     bool dispatchMessage(CoreIPC::Connection*, CoreIPC::MessageDecoder&amp;);
</span><span class="lines">@@ -520,6 +516,13 @@
</span><span class="cx"> {
</span><span class="cx">     switch (m_processModel) {
</span><span class="cx">     case ProcessModelSharedSecondaryProcess:
</span><ins>+#if ENABLE(NETWORK_PROCESS)
+        if (m_usesNetworkProcess) {
+            if (m_networkProcess-&gt;canSendMessage())
+                m_networkProcess-&gt;send(std::forward&lt;T&gt;(message), 0);
+            return;
+        }
+#endif
</ins><span class="cx">         if (!m_processes.isEmpty() &amp;&amp; m_processes[0]-&gt;canSendMessage())
</span><span class="cx">             m_processes[0]-&gt;send(std::forward&lt;T&gt;(message), 0);
</span><span class="cx">         return;
</span><span class="lines">@@ -540,6 +543,13 @@
</span><span class="cx"> {
</span><span class="cx">     switch (m_processModel) {
</span><span class="cx">     case ProcessModelSharedSecondaryProcess:
</span><ins>+#if ENABLE(NETWORK_PROCESS)
+        if (m_usesNetworkProcess) {
+            ensureNetworkProcess();
+            m_networkProcess-&gt;send(std::forward&lt;T&gt;(message), 0);
+            return;
+        }
+#endif
</ins><span class="cx">         ensureSharedWebProcess();
</span><span class="cx">         m_processes[0]-&gt;send(std::forward&lt;T&gt;(message), 0);
</span><span class="cx">         return;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebCookieManagerProxycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -51,7 +51,7 @@
</span><span class="cx">     , m_cookiePersistentStorageType(SoupCookiePersistentStorageSQLite)
</span><span class="cx"> #endif
</span><span class="cx"> {
</span><del>-    WebContextSupplement::context()-&gt;addMessageReceiver(Messages::WebCookieManagerProxy::messageReceiverName(), this);
</del><ins>+    WebContextSupplement::context()-&gt;addMessageReceiver(Messages::WebCookieManagerProxy::messageReceiverName(), *this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebCookieManagerProxy::~WebCookieManagerProxy()
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebCookieManagerProxyh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebCookieManagerProxy.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebCookieManagerProxy.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebCookieManagerProxy.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -51,7 +51,7 @@
</span><span class="cx"> typedef GenericCallback&lt;WKArrayRef&gt; ArrayCallback;
</span><span class="cx"> typedef GenericCallback&lt;WKHTTPCookieAcceptPolicy, HTTPCookieAcceptPolicy&gt; HTTPCookieAcceptPolicyCallback;
</span><span class="cx"> 
</span><del>-class WebCookieManagerProxy : public API::TypedObject&lt;API::Object::Type::CookieManager&gt;, public WebContextSupplement, private CoreIPC::MessageReceiver {
</del><ins>+class WebCookieManagerProxy : public API::ObjectImpl&lt;API::Object::Type::CookieManager&gt;, public WebContextSupplement, private CoreIPC::MessageReceiver {
</ins><span class="cx"> public:
</span><span class="cx">     static const char* supplementName();
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebDatabaseManagerProxycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebDatabaseManagerProxy.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebDatabaseManagerProxy.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebDatabaseManagerProxy.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -100,7 +100,7 @@
</span><span class="cx"> WebDatabaseManagerProxy::WebDatabaseManagerProxy(WebContext* webContext)
</span><span class="cx">     : WebContextSupplement(webContext)
</span><span class="cx"> {
</span><del>-    WebContextSupplement::context()-&gt;addMessageReceiver(Messages::WebDatabaseManagerProxy::messageReceiverName(), this);
</del><ins>+    WebContextSupplement::context()-&gt;addMessageReceiver(Messages::WebDatabaseManagerProxy::messageReceiverName(), *this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebDatabaseManagerProxy::~WebDatabaseManagerProxy()
</span><span class="lines">@@ -170,19 +170,19 @@
</span><span class="cx"> 
</span><span class="cx">             detailsMap.set(databaseDetailsNameKey(), WebString::create(databaseDetails.name()));
</span><span class="cx">             detailsMap.set(databaseDetailsDisplayNameKey(), WebString::create(databaseDetails.displayName()));
</span><del>-            detailsMap.set(databaseDetailsExpectedUsageKey(), WebUInt64::create(databaseDetails.expectedUsage()));
-            detailsMap.set(databaseDetailsCurrentUsageKey(), WebUInt64::create(databaseDetails.currentUsage()));
</del><ins>+            detailsMap.set(databaseDetailsExpectedUsageKey(), API::UInt64::create(databaseDetails.expectedUsage()));
+            detailsMap.set(databaseDetailsCurrentUsageKey(), API::UInt64::create(databaseDetails.currentUsage()));
</ins><span class="cx"> 
</span><del>-            databases.uncheckedAppend(ImmutableDictionary::adopt(detailsMap));
</del><ins>+            databases.uncheckedAppend(ImmutableDictionary::create(std::move(detailsMap)));
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         HashMap&lt;String, RefPtr&lt;API::Object&gt;&gt; originAndDatabasesMap;
</span><span class="cx">         originAndDatabasesMap.set(originKey(), origin);
</span><del>-        originAndDatabasesMap.set(originQuotaKey(), WebUInt64::create(originAndDatabases.originQuota));
-        originAndDatabasesMap.set(originUsageKey(), WebUInt64::create(originAndDatabases.originUsage));
</del><ins>+        originAndDatabasesMap.set(originQuotaKey(), API::UInt64::create(originAndDatabases.originQuota));
+        originAndDatabasesMap.set(originUsageKey(), API::UInt64::create(originAndDatabases.originUsage));
</ins><span class="cx">         originAndDatabasesMap.set(databaseDetailsKey(), API::Array::create(std::move(databases)));
</span><span class="cx"> 
</span><del>-        result.uncheckedAppend(ImmutableDictionary::adopt(originAndDatabasesMap));
</del><ins>+        result.uncheckedAppend(ImmutableDictionary::create(std::move(originAndDatabasesMap)));
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     callback-&gt;performCallbackWithReturnValue(API::Array::create(std::move(result)).get());
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebDatabaseManagerProxyh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebDatabaseManagerProxy.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebDatabaseManagerProxy.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebDatabaseManagerProxy.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -46,7 +46,7 @@
</span><span class="cx"> 
</span><span class="cx"> typedef GenericCallback&lt;WKArrayRef&gt; ArrayCallback;
</span><span class="cx"> 
</span><del>-class WebDatabaseManagerProxy : public API::TypedObject&lt;API::Object::Type::DatabaseManager&gt;, public WebContextSupplement, private CoreIPC::MessageReceiver {
</del><ins>+class WebDatabaseManagerProxy : public API::ObjectImpl&lt;API::Object::Type::DatabaseManager&gt;, public WebContextSupplement, private CoreIPC::MessageReceiver {
</ins><span class="cx"> public:
</span><span class="cx">     static const char* supplementName();
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebEditCommandProxyh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebEditCommandProxy.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebEditCommandProxy.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebEditCommandProxy.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -36,7 +36,7 @@
</span><span class="cx"> 
</span><span class="cx"> class WebPageProxy;
</span><span class="cx"> 
</span><del>-class WebEditCommandProxy : public API::TypedObject&lt;API::Object::Type::EditCommandProxy&gt; {
</del><ins>+class WebEditCommandProxy : public API::ObjectImpl&lt;API::Object::Type::EditCommandProxy&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;WebEditCommandProxy&gt; create(uint64_t commandID, WebCore::EditAction editAction, WebPageProxy* page)
</span><span class="cx">     {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebFormClientcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebFormClient.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebFormClient.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebFormClient.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -41,7 +41,7 @@
</span><span class="cx">     ImmutableDictionary::MapType map;
</span><span class="cx">     for (size_t i = 0; i &lt; textFieldValues.size(); ++i)
</span><span class="cx">         map.set(textFieldValues[i].first, WebString::create(textFieldValues[i].second));
</span><del>-    RefPtr&lt;ImmutableDictionary&gt; textFieldsMap = ImmutableDictionary::adopt(map);
</del><ins>+    RefPtr&lt;ImmutableDictionary&gt; textFieldsMap = ImmutableDictionary::create(std::move(map));
</ins><span class="cx"> 
</span><span class="cx">     m_client.willSubmitForm(toAPI(page), toAPI(frame), toAPI(sourceFrame), toAPI(textFieldsMap.get()), toAPI(userData), toAPI(listener), m_client.base.clientInfo);
</span><span class="cx">     return true;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebFrameProxycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebFrameProxy.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebFrameProxy.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebFrameProxy.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -139,7 +139,7 @@
</span><span class="cx">     m_frameLoadState.didFailProvisionalLoad();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebFrameProxy::didCommitLoad(const String&amp; contentType, const CertificateInfo&amp; certificateInfo)
</del><ins>+void WebFrameProxy::didCommitLoad(const String&amp; contentType, const WebCore::CertificateInfo&amp; certificateInfo)
</ins><span class="cx"> {
</span><span class="cx">     m_frameLoadState.didCommitLoad();
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebFrameProxyh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebFrameProxy.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebFrameProxy.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebFrameProxy.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -40,9 +40,11 @@
</span><span class="cx">     class Connection;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+namespace WebCore {
+class CertificateInfo;
+}
+
</ins><span class="cx"> namespace WebKit {
</span><del>-
-class CertificateInfo;
</del><span class="cx"> class WebCertificateInfo;
</span><span class="cx"> class WebFormSubmissionListenerProxy;
</span><span class="cx"> class WebFramePolicyListenerProxy;
</span><span class="lines">@@ -50,7 +52,7 @@
</span><span class="cx"> 
</span><span class="cx"> typedef GenericCallback&lt;WKDataRef&gt; DataCallback;
</span><span class="cx"> 
</span><del>-class WebFrameProxy : public API::TypedObject&lt;API::Object::Type::Frame&gt; {
</del><ins>+class WebFrameProxy : public API::ObjectImpl&lt;API::Object::Type::Frame&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;WebFrameProxy&gt; create(WebPageProxy* page, uint64_t frameID)
</span><span class="cx">     {
</span><span class="lines">@@ -100,7 +102,7 @@
</span><span class="cx">     void didStartProvisionalLoad(const String&amp; url);
</span><span class="cx">     void didReceiveServerRedirectForProvisionalLoad(const String&amp; url);
</span><span class="cx">     void didFailProvisionalLoad();
</span><del>-    void didCommitLoad(const String&amp; contentType, const CertificateInfo&amp;);
</del><ins>+    void didCommitLoad(const String&amp; contentType, const WebCore::CertificateInfo&amp;);
</ins><span class="cx">     void didFinishLoad();
</span><span class="cx">     void didFailLoad();
</span><span class="cx">     void didSameDocumentNavigation(const String&amp;); // eg. anchor navigation, session state change.
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebFullScreenManagerProxycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebFullScreenManagerProxy.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebFullScreenManagerProxy.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebFullScreenManagerProxy.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -28,36 +28,32 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(FULLSCREEN_API)
</span><span class="cx"> 
</span><del>-#include &quot;WebContext.h&quot;
</del><span class="cx"> #include &quot;WebFullScreenManagerMessages.h&quot;
</span><span class="cx"> #include &quot;WebFullScreenManagerProxyMessages.h&quot;
</span><ins>+#include &quot;WebPageProxy.h&quot;
+#include &quot;WebProcessProxy.h&quot;
+#include &lt;WebCore/IntRect.h&gt;
</ins><span class="cx"> 
</span><ins>+using namespace WebCore;
+
</ins><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;WebFullScreenManagerProxy&gt; WebFullScreenManagerProxy::create(WebPageProxy* page)
</del><ins>+PassRefPtr&lt;WebFullScreenManagerProxy&gt; WebFullScreenManagerProxy::create(WebPageProxy&amp; page, WebFullScreenManagerProxyClient&amp; client)
</ins><span class="cx"> {
</span><del>-    return adoptRef(new WebFullScreenManagerProxy(page));
</del><ins>+    return adoptRef(new WebFullScreenManagerProxy(page, client));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-WebFullScreenManagerProxy::WebFullScreenManagerProxy(WebPageProxy* page)
-    : m_page(page)
-    , m_webView(0)
-#if PLATFORM(EFL)
-    , m_hasRequestedFullScreen(false)
-#endif
</del><ins>+WebFullScreenManagerProxy::WebFullScreenManagerProxy(WebPageProxy&amp; page, WebFullScreenManagerProxyClient&amp; client)
+    : m_page(&amp;page)
+    , m_client(&amp;client)
</ins><span class="cx"> {
</span><del>-    m_page-&gt;process().addMessageReceiver(Messages::WebFullScreenManagerProxy::messageReceiverName(), m_page-&gt;pageID(), this);
</del><ins>+    m_page-&gt;process().addMessageReceiver(Messages::WebFullScreenManagerProxy::messageReceiverName(), m_page-&gt;pageID(), *this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebFullScreenManagerProxy::~WebFullScreenManagerProxy()
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebFullScreenManagerProxy::setWebView(PlatformWebView* webView)
-{
-    m_webView = webView;
-}
-
</del><span class="cx"> void WebFullScreenManagerProxy::willEnterFullScreen()
</span><span class="cx"> {
</span><span class="cx">     m_page-&gt;process().send(Messages::WebFullScreenManager::WillEnterFullScreen(), m_page-&gt;pageID());
</span><span class="lines">@@ -103,6 +99,59 @@
</span><span class="cx">     m_page-&gt;process().send(Messages::WebFullScreenManager::RestoreScrollPosition(), m_page-&gt;pageID());
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void WebFullScreenManagerProxy::invalidate()
+{
+    m_page-&gt;process().removeMessageReceiver(Messages::WebFullScreenManagerProxy::messageReceiverName(), m_page-&gt;pageID());
+
+    if (!m_client)
+        return;
+
+    m_client-&gt;closeFullScreenManager();
+    m_client = nullptr;
+}
+
+void WebFullScreenManagerProxy::close()
+{
+    if (!m_client)
+        return;
+    m_client-&gt;closeFullScreenManager();
+}
+
+bool WebFullScreenManagerProxy::isFullScreen()
+{
+    if (!m_client)
+        return false;
+    return m_client-&gt;isFullScreen();
+}
+
+void WebFullScreenManagerProxy::enterFullScreen()
+{
+    if (!m_client)
+        return;
+    m_client-&gt;enterFullScreen();
+}
+
+void WebFullScreenManagerProxy::exitFullScreen()
+{
+    if (!m_client)
+        return;
+    m_client-&gt;exitFullScreen();
+}
+    
+void WebFullScreenManagerProxy::beganEnterFullScreen(const IntRect&amp; initialFrame, const IntRect&amp; finalFrame)
+{
+    if (!m_client)
+        return;
+    m_client-&gt;beganEnterFullScreen(initialFrame, finalFrame);
+}
+
+void WebFullScreenManagerProxy::beganExitFullScreen(const IntRect&amp; initialFrame, const IntRect&amp; finalFrame)
+{
+    if (!m_client)
+        return;
+    m_client-&gt;beganExitFullScreen(initialFrame, finalFrame);
+}
+
</ins><span class="cx"> } // namespace WebKit
</span><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(FULLSCREEN_API)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebFullScreenManagerProxyh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebFullScreenManagerProxy.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebFullScreenManagerProxy.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebFullScreenManagerProxy.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -37,33 +37,29 @@
</span><span class="cx"> class IntRect;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-#if PLATFORM(MAC)
-OBJC_CLASS WKView;
-#elif PLATFORM(GTK)
-typedef struct _WebKitWebViewBase WebKitWebViewBase;
-#endif
-
</del><span class="cx"> namespace WebKit {
</span><del>-    
-#if PLATFORM(MAC)
-typedef WKView PlatformWebView;
-#elif PLATFORM(GTK)
-typedef WebKitWebViewBase PlatformWebView;
-#elif PLATFORM(EFL)
-typedef Evas_Object PlatformWebView;
-#endif
</del><span class="cx"> 
</span><span class="cx"> class WebPageProxy;
</span><del>-class LayerTreeContext;
</del><span class="cx"> 
</span><ins>+class WebFullScreenManagerProxyClient {
+public:
+    virtual ~WebFullScreenManagerProxyClient() { }
+
+    virtual void closeFullScreenManager() = 0;
+    virtual bool isFullScreen() = 0;
+    virtual void enterFullScreen() = 0;
+    virtual void exitFullScreen() = 0;
+    virtual void beganEnterFullScreen(const WebCore::IntRect&amp; initialFrame, const WebCore::IntRect&amp; finalFrame) = 0;
+    virtual void beganExitFullScreen(const WebCore::IntRect&amp; initialFrame, const WebCore::IntRect&amp; finalFrame) = 0;
+};
+
</ins><span class="cx"> class WebFullScreenManagerProxy : public RefCounted&lt;WebFullScreenManagerProxy&gt;, public CoreIPC::MessageReceiver {
</span><span class="cx"> public:
</span><del>-    static PassRefPtr&lt;WebFullScreenManagerProxy&gt; create(WebPageProxy*);
</del><ins>+    static PassRefPtr&lt;WebFullScreenManagerProxy&gt; create(WebPageProxy&amp;, WebFullScreenManagerProxyClient&amp;);
</ins><span class="cx">     virtual ~WebFullScreenManagerProxy();
</span><span class="cx"> 
</span><span class="cx">     void invalidate();
</span><span class="cx"> 
</span><del>-    void setWebView(PlatformWebView*);
</del><span class="cx">     bool isFullScreen();
</span><span class="cx">     void close();
</span><span class="cx"> 
</span><span class="lines">@@ -77,7 +73,7 @@
</span><span class="cx">     void restoreScrollPosition();
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    explicit WebFullScreenManagerProxy(WebPageProxy*);
</del><ins>+    explicit WebFullScreenManagerProxy(WebPageProxy&amp;, WebFullScreenManagerProxyClient&amp;);
</ins><span class="cx"> 
</span><span class="cx">     void supportsFullScreen(bool withKeyboard, bool&amp;);
</span><span class="cx">     void enterFullScreen();
</span><span class="lines">@@ -89,11 +85,7 @@
</span><span class="cx">     virtual void didReceiveSyncMessage(CoreIPC::Connection*, CoreIPC::MessageDecoder&amp;, std::unique_ptr&lt;CoreIPC::MessageEncoder&gt;&amp;) OVERRIDE;
</span><span class="cx"> 
</span><span class="cx">     WebPageProxy* m_page;
</span><del>-    PlatformWebView* m_webView;
-
-#if PLATFORM(EFL)
-    bool m_hasRequestedFullScreen;
-#endif
</del><ins>+    WebFullScreenManagerProxyClient* m_client;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebGeolocationManagerProxycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebGeolocationManagerProxy.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebGeolocationManagerProxy.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebGeolocationManagerProxy.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -45,7 +45,7 @@
</span><span class="cx"> WebGeolocationManagerProxy::WebGeolocationManagerProxy(WebContext* context)
</span><span class="cx">     : WebContextSupplement(context)
</span><span class="cx"> {
</span><del>-    WebContextSupplement::context()-&gt;addMessageReceiver(Messages::WebGeolocationManagerProxy::messageReceiverName(), this);
</del><ins>+    WebContextSupplement::context()-&gt;addMessageReceiver(Messages::WebGeolocationManagerProxy::messageReceiverName(), *this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebGeolocationManagerProxy::initializeProvider(const WKGeolocationProviderBase* provider)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebGeolocationManagerProxyh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebGeolocationManagerProxy.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebGeolocationManagerProxy.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebGeolocationManagerProxy.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -39,7 +39,7 @@
</span><span class="cx"> class WebContext;
</span><span class="cx"> class WebGeolocationPosition;
</span><span class="cx"> 
</span><del>-class WebGeolocationManagerProxy : public API::TypedObject&lt;API::Object::Type::GeolocationManager&gt;, public WebContextSupplement, private CoreIPC::MessageReceiver {
</del><ins>+class WebGeolocationManagerProxy : public API::ObjectImpl&lt;API::Object::Type::GeolocationManager&gt;, public WebContextSupplement, private CoreIPC::MessageReceiver {
</ins><span class="cx"> public:
</span><span class="cx">     static const char* supplementName();
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebGrammarDetailh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebGrammarDetail.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebGrammarDetail.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebGrammarDetail.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -34,7 +34,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><del>-class WebGrammarDetail : public API::TypedObject&lt;API::Object::Type::GrammarDetail&gt; {
</del><ins>+class WebGrammarDetail : public API::ObjectImpl&lt;API::Object::Type::GrammarDetail&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;WebGrammarDetail&gt; create(int location, int length, API::Array* guesses, const String&amp; userDescription);
</span><span class="cx">     static PassRefPtr&lt;WebGrammarDetail&gt; create(const WebCore::GrammarDetail&amp;);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebIconDatabasecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebIconDatabase.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebIconDatabase.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebIconDatabase.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -56,7 +56,7 @@
</span><span class="cx">     , m_urlImportCompleted(false)
</span><span class="cx">     , m_databaseCleanupDisabled(false)
</span><span class="cx"> {
</span><del>-    m_webContext-&gt;addMessageReceiver(Messages::WebIconDatabase::messageReceiverName(), this);
</del><ins>+    m_webContext-&gt;addMessageReceiver(Messages::WebIconDatabase::messageReceiverName(), *this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebIconDatabase::invalidate()
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebIconDatabaseh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebIconDatabase.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebIconDatabase.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebIconDatabase.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -53,7 +53,7 @@
</span><span class="cx"> 
</span><span class="cx"> class WebContext;
</span><span class="cx"> 
</span><del>-class WebIconDatabase : public API::TypedObject&lt;API::Object::Type::IconDatabase&gt;, public WebCore::IconDatabaseClient, private CoreIPC::MessageReceiver {
</del><ins>+class WebIconDatabase : public API::ObjectImpl&lt;API::Object::Type::IconDatabase&gt;, public WebCore::IconDatabaseClient, private CoreIPC::MessageReceiver {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;WebIconDatabase&gt; create(WebContext*);
</span><span class="cx">     virtual ~WebIconDatabase();
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebInspectorProxycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebInspectorProxy.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebInspectorProxy.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebInspectorProxy.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -140,7 +140,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> {
</span><span class="cx">     m_level = WebInspectorPageGroups::shared().inspectorLevel(m_page-&gt;pageGroup());
</span><del>-    m_page-&gt;process().addMessageReceiver(Messages::WebInspectorProxy::messageReceiverName(), m_page-&gt;pageID(), this);
</del><ins>+    m_page-&gt;process().addMessageReceiver(Messages::WebInspectorProxy::messageReceiverName(), m_page-&gt;pageID(), *this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebInspectorProxy::~WebInspectorProxy()
</span><span class="lines">@@ -365,7 +365,7 @@
</span><span class="cx"> {
</span><span class="cx">     // Use URL so we can compare just the paths.
</span><span class="cx">     URL inspectorURL(URL(), webInspectorProxy-&gt;inspectorPageURL());
</span><del>-    URL requestURL(URL(), toImpl(requestRef)-&gt;url());
</del><ins>+    URL requestURL(URL(), toImpl(requestRef)-&gt;resourceRequest().url());
</ins><span class="cx"> 
</span><span class="cx">     ASSERT(WebCore::SchemeRegistry::shouldTreatURLSchemeAsLocal(inspectorURL.protocol()));
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebInspectorProxyh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebInspectorProxy.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebInspectorProxy.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebInspectorProxy.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -69,7 +69,7 @@
</span><span class="cx">     AttachmentSideRight
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-class WebInspectorProxy : public API::TypedObject&lt;API::Object::Type::Inspector&gt;, public CoreIPC::MessageReceiver {
</del><ins>+class WebInspectorProxy : public API::ObjectImpl&lt;API::Object::Type::Inspector&gt;, public CoreIPC::MessageReceiver {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;WebInspectorProxy&gt; create(WebPageProxy* page)
</span><span class="cx">     {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebKeyValueStorageManagerh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebKeyValueStorageManager.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebKeyValueStorageManager.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebKeyValueStorageManager.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx"> 
</span><span class="cx"> typedef GenericCallback&lt;WKArrayRef&gt; ArrayCallback;
</span><span class="cx"> 
</span><del>-class WebKeyValueStorageManager : public API::TypedObject&lt;API::Object::Type::KeyValueStorageManager&gt;, public WebContextSupplement {
</del><ins>+class WebKeyValueStorageManager : public API::ObjectImpl&lt;API::Object::Type::KeyValueStorageManager&gt;, public WebContextSupplement {
</ins><span class="cx"> public:
</span><span class="cx">     static const char* supplementName();
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebMediaCacheManagerProxycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebMediaCacheManagerProxy.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebMediaCacheManagerProxy.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebMediaCacheManagerProxy.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -47,7 +47,7 @@
</span><span class="cx"> WebMediaCacheManagerProxy::WebMediaCacheManagerProxy(WebContext* context)
</span><span class="cx">     : WebContextSupplement(context)
</span><span class="cx"> {
</span><del>-    WebContextSupplement::context()-&gt;addMessageReceiver(Messages::WebMediaCacheManagerProxy::messageReceiverName(), this);
</del><ins>+    WebContextSupplement::context()-&gt;addMessageReceiver(Messages::WebMediaCacheManagerProxy::messageReceiverName(), *this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebMediaCacheManagerProxy::~WebMediaCacheManagerProxy()
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebMediaCacheManagerProxyh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebMediaCacheManagerProxy.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebMediaCacheManagerProxy.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebMediaCacheManagerProxy.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -41,7 +41,7 @@
</span><span class="cx"> 
</span><span class="cx"> typedef GenericCallback&lt;WKArrayRef&gt; ArrayCallback;
</span><span class="cx"> 
</span><del>-class WebMediaCacheManagerProxy : public API::TypedObject&lt;API::Object::Type::MediaCacheManager&gt;, public WebContextSupplement, private CoreIPC::MessageReceiver {
</del><ins>+class WebMediaCacheManagerProxy : public API::ObjectImpl&lt;API::Object::Type::MediaCacheManager&gt;, public WebContextSupplement, private CoreIPC::MessageReceiver {
</ins><span class="cx"> public:
</span><span class="cx">     static const char* supplementName();
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebNetworkInfoManagerProxycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebNetworkInfoManagerProxy.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebNetworkInfoManagerProxy.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebNetworkInfoManagerProxy.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -49,7 +49,7 @@
</span><span class="cx">     : WebContextSupplement(context)
</span><span class="cx">     , m_isUpdating(false)
</span><span class="cx"> {
</span><del>-    WebContextSupplement::context()-&gt;addMessageReceiver(Messages::WebNetworkInfoManagerProxy::messageReceiverName(), this);
</del><ins>+    WebContextSupplement::context()-&gt;addMessageReceiver(Messages::WebNetworkInfoManagerProxy::messageReceiverName(), *this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebNetworkInfoManagerProxy::~WebNetworkInfoManagerProxy()
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebNetworkInfoManagerProxyh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebNetworkInfoManagerProxy.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebNetworkInfoManagerProxy.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebNetworkInfoManagerProxy.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -39,7 +39,7 @@
</span><span class="cx"> class WebContext;
</span><span class="cx"> class WebNetworkInfo;
</span><span class="cx"> 
</span><del>-class WebNetworkInfoManagerProxy : public API::TypedObject&lt;API::Object::Type::NetworkInfoManager&gt;, public WebContextSupplement, private CoreIPC::MessageReceiver {
</del><ins>+class WebNetworkInfoManagerProxy : public API::ObjectImpl&lt;API::Object::Type::NetworkInfoManager&gt;, public WebContextSupplement, private CoreIPC::MessageReceiver {
</ins><span class="cx"> public:
</span><span class="cx">     static const char* supplementName();
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebOpenPanelResultListenerProxyh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebOpenPanelResultListenerProxy.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebOpenPanelResultListenerProxy.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebOpenPanelResultListenerProxy.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx"> 
</span><span class="cx"> class WebPageProxy;
</span><span class="cx"> 
</span><del>-class WebOpenPanelResultListenerProxy : public API::TypedObject&lt;API::Object::Type::FramePolicyListener&gt; {
</del><ins>+class WebOpenPanelResultListenerProxy : public API::ObjectImpl&lt;API::Object::Type::FramePolicyListener&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;WebOpenPanelResultListenerProxy&gt; create(WebPageProxy* page)
</span><span class="cx">     {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebOriginDataManagerProxycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebOriginDataManagerProxy.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebOriginDataManagerProxy.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebOriginDataManagerProxy.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -45,9 +45,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebOriginDataManagerProxy::WebOriginDataManagerProxy(WebContext* context)
</span><del>-: WebContextSupplement(context)
</del><ins>+    : WebContextSupplement(context)
</ins><span class="cx"> {
</span><del>-    context-&gt;addMessageReceiver(Messages::WebOriginDataManagerProxy::messageReceiverName(), this);
</del><ins>+    context-&gt;addMessageReceiver(Messages::WebOriginDataManagerProxy::messageReceiverName(), *this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebOriginDataManagerProxy::~WebOriginDataManagerProxy()
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebOriginDataManagerProxyh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebOriginDataManagerProxy.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebOriginDataManagerProxy.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebOriginDataManagerProxy.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -47,7 +47,7 @@
</span><span class="cx"> 
</span><span class="cx"> typedef GenericCallback&lt;WKArrayRef&gt; ArrayCallback;
</span><span class="cx"> 
</span><del>-class WebOriginDataManagerProxy : public API::TypedObject&lt;API::Object::Type::OriginDataManager&gt;, public WebContextSupplement, private CoreIPC::MessageReceiver {
</del><ins>+class WebOriginDataManagerProxy : public API::ObjectImpl&lt;API::Object::Type::OriginDataManager&gt;, public WebContextSupplement, private CoreIPC::MessageReceiver {
</ins><span class="cx"> public:
</span><span class="cx">     static const char* supplementName();
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebPageGrouph"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebPageGroup.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebPageGroup.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebPageGroup.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx"> class WebPreferences;
</span><span class="cx"> class WebPageProxy;
</span><span class="cx"> 
</span><del>-class WebPageGroup : public API::TypedObject&lt;API::Object::Type::PageGroup&gt; {
</del><ins>+class WebPageGroup : public API::ObjectImpl&lt;API::Object::Type::PageGroup&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     WebPageGroup(const String&amp; identifier = String(), bool visibleToInjectedBundle = true, bool visibleToHistoryClient = true);
</span><span class="cx">     static PassRefPtr&lt;WebPageGroup&gt; create(const String&amp; identifier = String(), bool visibleToInjectedBundle = true, bool visibleToHistoryClient = true);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebPageProxycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebPageProxy.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebPageProxy.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebPageProxy.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -296,6 +296,7 @@
</span><span class="cx">     , m_rubberBandsAtRight(true)
</span><span class="cx">     , m_rubberBandsAtTop(true)
</span><span class="cx">     , m_rubberBandsAtBottom(true)
</span><ins>+    , m_backgroundExtendsBeyondPage(false)
</ins><span class="cx">     , m_mainFrameInViewSourceMode(false)
</span><span class="cx">     , m_pageCount(0)
</span><span class="cx">     , m_renderTreeSize(0)
</span><span class="lines">@@ -335,13 +336,13 @@
</span><span class="cx">     m_inspector = WebInspectorProxy::create(this);
</span><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(FULLSCREEN_API)
</span><del>-    m_fullScreenManager = WebFullScreenManagerProxy::create(this);
</del><ins>+    m_fullScreenManager = WebFullScreenManagerProxy::create(*this, m_pageClient.fullScreenManagerProxyClient());
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(VIBRATION)
</span><span class="cx">     m_vibration = WebVibrationProxy::create(this);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    m_process-&gt;addMessageReceiver(Messages::WebPageProxy::messageReceiverName(), m_pageID, this);
</del><ins>+    m_process-&gt;addMessageReceiver(Messages::WebPageProxy::messageReceiverName(), m_pageID, *this);
</ins><span class="cx"> 
</span><span class="cx">     // FIXME: If we ever expose the session storage size as a preference, we need to pass it here.
</span><span class="cx">     m_process-&gt;context().storageManager().createSessionStorageNamespace(m_pageID, m_process-&gt;isValid() ? m_process-&gt;connection() : 0, std::numeric_limits&lt;unsigned&gt;::max());
</span><span class="lines">@@ -472,13 +473,13 @@
</span><span class="cx">     else
</span><span class="cx">         m_process = m_process-&gt;context().createNewWebProcessRespectingProcessCountLimit();
</span><span class="cx">     m_process-&gt;addExistingWebPage(this, m_pageID);
</span><del>-    m_process-&gt;addMessageReceiver(Messages::WebPageProxy::messageReceiverName(), m_pageID, this);
</del><ins>+    m_process-&gt;addMessageReceiver(Messages::WebPageProxy::messageReceiverName(), m_pageID, *this);
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><span class="cx">     m_inspector = WebInspectorProxy::create(this);
</span><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(FULLSCREEN_API)
</span><del>-    m_fullScreenManager = WebFullScreenManagerProxy::create(this);
</del><ins>+    m_fullScreenManager = WebFullScreenManagerProxy::create(*this, m_pageClient.fullScreenManagerProxyClient());
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     initializeWebPage();
</span><span class="lines">@@ -524,13 +525,13 @@
</span><span class="cx">     process().send(Messages::WebProcess::CreateWebPage(m_pageID, m_creationParameters), 0);
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(PAGE_VISIBILITY_API)
</span><del>-    process().send(Messages::WebPage::SetVisibilityState(m_visibilityState, /* isInitialState */ true), m_pageID);
</del><ins>+    send(Messages::WebPage::SetVisibilityState(m_visibilityState, /* isInitialState */ true));
</ins><span class="cx"> #elif ENABLE(HIDDEN_PAGE_DOM_TIMER_THROTTLING)
</span><del>-    process().send(Messages::WebPage::SetVisibilityState(isViewVisible() ? PageVisibilityStateVisible : PageVisibilityStateHidden, /* isInitialState */ true), m_pageID);
</del><ins>+    send(Messages::WebPage::SetVisibilityState(isViewVisible() ? PageVisibilityStateVisible : PageVisibilityStateHidden, /* isInitialState */ true));
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(MAC)
</span><del>-    process().send(Messages::WebPage::SetSmartInsertDeleteEnabled(m_isSmartInsertDeleteEnabled), m_pageID);
</del><ins>+    send(Messages::WebPage::SetSmartInsertDeleteEnabled(m_isSmartInsertDeleteEnabled));
</ins><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -599,8 +600,10 @@
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::loadURL(const String&amp; url, API::Object* userData)
</span><span class="cx"> {
</span><del>-    m_pageLoadState.setPendingAPIRequestURL(url);
</del><ins>+    auto transaction = m_pageLoadState.transaction();
</ins><span class="cx"> 
</span><ins>+    m_pageLoadState.setPendingAPIRequestURL(transaction, url);
+
</ins><span class="cx">     if (!isValid())
</span><span class="cx">         reattachToWebProcess();
</span><span class="cx"> 
</span><span class="lines">@@ -614,8 +617,10 @@
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::loadURLRequest(WebURLRequest* urlRequest, API::Object* userData)
</span><span class="cx"> {
</span><del>-    m_pageLoadState.setPendingAPIRequestURL(urlRequest-&gt;resourceRequest().url());
</del><ins>+    auto transaction = m_pageLoadState.transaction();
</ins><span class="cx"> 
</span><ins>+    m_pageLoadState.setPendingAPIRequestURL(transaction, urlRequest-&gt;resourceRequest().url());
+
</ins><span class="cx">     if (!isValid())
</span><span class="cx">         reattachToWebProcess();
</span><span class="cx"> 
</span><span class="lines">@@ -679,8 +684,10 @@
</span><span class="cx">     if (!isValid())
</span><span class="cx">         reattachToWebProcess();
</span><span class="cx"> 
</span><del>-    m_pageLoadState.setUnreachableURL(unreachableURL);
</del><ins>+    auto transaction = m_pageLoadState.transaction();
</ins><span class="cx"> 
</span><ins>+    m_pageLoadState.setUnreachableURL(transaction, unreachableURL);
+
</ins><span class="cx">     if (m_mainFrame)
</span><span class="cx">         m_mainFrame-&gt;setUnreachableURL(unreachableURL);
</span><span class="cx"> 
</span><span class="lines">@@ -722,7 +729,8 @@
</span><span class="cx"> 
</span><span class="cx">     if (m_backForwardList-&gt;currentItem()) {
</span><span class="cx">         String url = m_backForwardList-&gt;currentItem()-&gt;url();
</span><del>-        m_pageLoadState.setPendingAPIRequestURL(url);
</del><ins>+        auto transaction = m_pageLoadState.transaction();
+        m_pageLoadState.setPendingAPIRequestURL(transaction, url);
</ins><span class="cx"> 
</span><span class="cx">         // We may not have an extension yet if back/forward list was reinstated after a WebProcess crash or a browser relaunch
</span><span class="cx">         bool createdExtension = maybeInitializeSandboxExtensionHandle(URL(URL(), url), sandboxExtensionHandle);
</span><span class="lines">@@ -748,8 +756,10 @@
</span><span class="cx">     if (!forwardItem)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    m_pageLoadState.setPendingAPIRequestURL(forwardItem-&gt;url());
</del><ins>+    auto transaction = m_pageLoadState.transaction();
</ins><span class="cx"> 
</span><ins>+    m_pageLoadState.setPendingAPIRequestURL(transaction, forwardItem-&gt;url());
+
</ins><span class="cx">     if (!isValid()) {
</span><span class="cx">         reattachToWebProcessWithItem(forwardItem);
</span><span class="cx">         return;
</span><span class="lines">@@ -773,8 +783,10 @@
</span><span class="cx">     if (!backItem)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    m_pageLoadState.setPendingAPIRequestURL(backItem-&gt;url());
</del><ins>+    auto transaction = m_pageLoadState.transaction();
</ins><span class="cx"> 
</span><ins>+    m_pageLoadState.setPendingAPIRequestURL(transaction, backItem-&gt;url());
+
</ins><span class="cx">     if (!isValid()) {
</span><span class="cx">         reattachToWebProcessWithItem(backItem);
</span><span class="cx">         return;
</span><span class="lines">@@ -796,8 +808,10 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     
</span><del>-    m_pageLoadState.setPendingAPIRequestURL(item-&gt;url());
</del><ins>+    auto transaction = m_pageLoadState.transaction();
</ins><span class="cx"> 
</span><ins>+    m_pageLoadState.setPendingAPIRequestURL(transaction, item-&gt;url());
+
</ins><span class="cx">     m_process-&gt;send(Messages::WebPage::GoToBackForwardItem(item-&gt;itemID()), m_pageID);
</span><span class="cx">     m_process-&gt;responsivenessTimer()-&gt;start();
</span><span class="cx"> }
</span><span class="lines">@@ -1404,8 +1418,10 @@
</span><span class="cx">     if (!isValid())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><ins>+    auto transaction = m_pageLoadState.transaction();
+
</ins><span class="cx">     if (action == PolicyIgnore)
</span><del>-        m_pageLoadState.clearPendingAPIRequestURL();
</del><ins>+        m_pageLoadState.clearPendingAPIRequestURL(transaction);
</ins><span class="cx"> 
</span><span class="cx">     uint64_t downloadID = 0;
</span><span class="cx">     if (action == PolicyDownload) {
</span><span class="lines">@@ -1738,6 +1754,23 @@
</span><span class="cx">     m_rubberBandsAtBottom = rubberBandsAtBottom;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void WebPageProxy::setBackgroundExtendsBeyondPage(bool backgroundExtendsBeyondPage)
+{
+    if (backgroundExtendsBeyondPage == m_backgroundExtendsBeyondPage)
+        return;
+
+    m_backgroundExtendsBeyondPage = backgroundExtendsBeyondPage;
+
+    if (!isValid())
+        return;
+    m_process-&gt;send(Messages::WebPage::SetBackgroundExtendsBeyondPage(backgroundExtendsBeyondPage), m_pageID);
+}
+
+bool WebPageProxy::backgroundExtendsBeyondPage() const
+{
+    return m_backgroundExtendsBeyondPage;
+}
+
</ins><span class="cx"> void WebPageProxy::setPaginationMode(WebCore::Pagination::Mode mode)
</span><span class="cx"> {
</span><span class="cx">     if (mode == m_paginationMode)
</span><span class="lines">@@ -2045,29 +2078,37 @@
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::didStartProgress()
</span><span class="cx"> {
</span><del>-    m_pageLoadState.didStartProgress();
</del><ins>+    auto transaction = m_pageLoadState.transaction();
+    m_pageLoadState.didStartProgress(transaction);
</ins><span class="cx"> 
</span><ins>+    m_pageLoadState.commitChanges();
</ins><span class="cx">     m_loaderClient.didStartProgress(this);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::didChangeProgress(double value)
</span><span class="cx"> {
</span><del>-    m_pageLoadState.didChangeProgress(value);
</del><ins>+    auto transaction = m_pageLoadState.transaction();
+    m_pageLoadState.didChangeProgress(transaction, value);
</ins><span class="cx"> 
</span><ins>+    m_pageLoadState.commitChanges();
</ins><span class="cx">     m_loaderClient.didChangeProgress(this);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::didFinishProgress()
</span><span class="cx"> {
</span><del>-    m_pageLoadState.didFinishProgress();
</del><ins>+    auto transaction = m_pageLoadState.transaction();
+    m_pageLoadState.didFinishProgress(transaction);
</ins><span class="cx"> 
</span><ins>+    m_pageLoadState.commitChanges();
</ins><span class="cx">     m_loaderClient.didFinishProgress(this);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::didStartProvisionalLoadForFrame(uint64_t frameID, const String&amp; url, const String&amp; unreachableURL, CoreIPC::MessageDecoder&amp; decoder)
</span><span class="cx"> {
</span><del>-    m_pageLoadState.clearPendingAPIRequestURL();
</del><ins>+    auto transaction = m_pageLoadState.transaction();
</ins><span class="cx"> 
</span><ins>+    m_pageLoadState.clearPendingAPIRequestURL(transaction);
+
</ins><span class="cx">     RefPtr&lt;API::Object&gt; userData;
</span><span class="cx">     WebContextUserMessageDecoder messageDecoder(userData, process());
</span><span class="cx">     if (!decoder.decode(messageDecoder))
</span><span class="lines">@@ -2078,11 +2119,12 @@
</span><span class="cx">     MESSAGE_CHECK_URL(url);
</span><span class="cx"> 
</span><span class="cx">     if (frame-&gt;isMainFrame())
</span><del>-        m_pageLoadState.didStartProvisionalLoad(url, unreachableURL);
</del><ins>+        m_pageLoadState.didStartProvisionalLoad(transaction, url, unreachableURL);
</ins><span class="cx"> 
</span><span class="cx">     frame-&gt;setUnreachableURL(unreachableURL);
</span><span class="cx">     frame-&gt;didStartProvisionalLoad(url);
</span><span class="cx"> 
</span><ins>+    m_pageLoadState.commitChanges();
</ins><span class="cx">     m_loaderClient.didStartProvisionalLoadForFrame(this, frame, userData.get());
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -2097,11 +2139,14 @@
</span><span class="cx">     MESSAGE_CHECK(frame);
</span><span class="cx">     MESSAGE_CHECK_URL(url);
</span><span class="cx"> 
</span><ins>+    auto transaction = m_pageLoadState.transaction();
+
</ins><span class="cx">     if (frame-&gt;isMainFrame())
</span><del>-        m_pageLoadState.didReceiveServerRedirectForProvisionalLoad(url);
</del><ins>+        m_pageLoadState.didReceiveServerRedirectForProvisionalLoad(transaction, url);
</ins><span class="cx"> 
</span><span class="cx">     frame-&gt;didReceiveServerRedirectForProvisionalLoad(url);
</span><span class="cx"> 
</span><ins>+    m_pageLoadState.commitChanges();
</ins><span class="cx">     m_loaderClient.didReceiveServerRedirectForProvisionalLoadForFrame(this, frame, userData.get());
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -2115,11 +2160,14 @@
</span><span class="cx">     WebFrameProxy* frame = m_process-&gt;webFrame(frameID);
</span><span class="cx">     MESSAGE_CHECK(frame);
</span><span class="cx"> 
</span><ins>+    auto transaction = m_pageLoadState.transaction();
+
</ins><span class="cx">     if (frame-&gt;isMainFrame())
</span><del>-        m_pageLoadState.didFailProvisionalLoad();
</del><ins>+        m_pageLoadState.didFailProvisionalLoad(transaction);
</ins><span class="cx"> 
</span><span class="cx">     frame-&gt;didFailProvisionalLoad();
</span><span class="cx"> 
</span><ins>+    m_pageLoadState.commitChanges();
</ins><span class="cx">     m_loaderClient.didFailProvisionalLoadWithErrorForFrame(this, frame, error, userData.get());
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -2136,7 +2184,7 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebPageProxy::didCommitLoadForFrame(uint64_t frameID, const String&amp; mimeType, uint32_t opaqueFrameLoadType, const CertificateInfo&amp; certificateInfo, CoreIPC::MessageDecoder&amp; decoder)
</del><ins>+void WebPageProxy::didCommitLoadForFrame(uint64_t frameID, const String&amp; mimeType, uint32_t opaqueFrameLoadType, const WebCore::CertificateInfo&amp; certificateInfo, CoreIPC::MessageDecoder&amp; decoder)
</ins><span class="cx"> {
</span><span class="cx">     RefPtr&lt;API::Object&gt; userData;
</span><span class="cx">     WebContextUserMessageDecoder messageDecoder(userData, process());
</span><span class="lines">@@ -2146,8 +2194,10 @@
</span><span class="cx">     WebFrameProxy* frame = m_process-&gt;webFrame(frameID);
</span><span class="cx">     MESSAGE_CHECK(frame);
</span><span class="cx"> 
</span><ins>+    auto transaction = m_pageLoadState.transaction();
+
</ins><span class="cx">     if (frame-&gt;isMainFrame()) {
</span><del>-        m_pageLoadState.didCommitLoad();
</del><ins>+        m_pageLoadState.didCommitLoad(transaction);
</ins><span class="cx">         m_pageClient.didCommitLoadForMainFrame();
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -2170,6 +2220,7 @@
</span><span class="cx">     if (frame-&gt;isMainFrame() &amp;&amp; static_cast&lt;FrameLoadType&gt;(opaqueFrameLoadType) == FrameLoadTypeStandard)
</span><span class="cx">         m_pageScaleFactor = 1;
</span><span class="cx"> 
</span><ins>+    m_pageLoadState.commitChanges();
</ins><span class="cx">     m_loaderClient.didCommitLoadForFrame(this, frame, userData.get());
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -2196,11 +2247,14 @@
</span><span class="cx">     WebFrameProxy* frame = m_process-&gt;webFrame(frameID);
</span><span class="cx">     MESSAGE_CHECK(frame);
</span><span class="cx"> 
</span><ins>+    auto transaction = m_pageLoadState.transaction();
+
</ins><span class="cx">     if (frame-&gt;isMainFrame())
</span><del>-        m_pageLoadState.didFinishLoad();
</del><ins>+        m_pageLoadState.didFinishLoad(transaction);
</ins><span class="cx"> 
</span><span class="cx">     frame-&gt;didFinishLoad();
</span><span class="cx"> 
</span><ins>+    m_pageLoadState.commitChanges();
</ins><span class="cx">     m_loaderClient.didFinishLoadForFrame(this, frame, userData.get());
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -2216,11 +2270,14 @@
</span><span class="cx"> 
</span><span class="cx">     clearLoadDependentCallbacks();
</span><span class="cx"> 
</span><ins>+    auto transaction = m_pageLoadState.transaction();
+
</ins><span class="cx">     if (frame-&gt;isMainFrame())
</span><del>-        m_pageLoadState.didFailLoad();
</del><ins>+        m_pageLoadState.didFailLoad(transaction);
</ins><span class="cx"> 
</span><span class="cx">     frame-&gt;didFailLoad();
</span><span class="cx"> 
</span><ins>+    m_pageLoadState.commitChanges();
</ins><span class="cx">     m_loaderClient.didFailLoadWithErrorForFrame(this, frame, error, userData.get());
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -2235,12 +2292,15 @@
</span><span class="cx">     MESSAGE_CHECK(frame);
</span><span class="cx">     MESSAGE_CHECK_URL(url);
</span><span class="cx"> 
</span><ins>+    auto transaction = m_pageLoadState.transaction();
+
</ins><span class="cx">     if (frame-&gt;isMainFrame())
</span><del>-        m_pageLoadState.didSameDocumentNavigation(url);
</del><ins>+        m_pageLoadState.didSameDocumentNavigation(transaction, url);
</ins><span class="cx"> 
</span><del>-    m_pageLoadState.clearPendingAPIRequestURL();
</del><ins>+    m_pageLoadState.clearPendingAPIRequestURL(transaction);
</ins><span class="cx">     frame-&gt;didSameDocumentNavigation(url);
</span><span class="cx"> 
</span><ins>+    m_pageLoadState.commitChanges();
</ins><span class="cx">     m_loaderClient.didSameDocumentNavigationForFrame(this, frame, static_cast&lt;SameDocumentNavigationType&gt;(opaqueSameDocumentNavigationType), userData.get());
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -2254,11 +2314,14 @@
</span><span class="cx">     WebFrameProxy* frame = m_process-&gt;webFrame(frameID);
</span><span class="cx">     MESSAGE_CHECK(frame);
</span><span class="cx"> 
</span><ins>+    auto transaction = m_pageLoadState.transaction();
+
</ins><span class="cx">     if (frame-&gt;isMainFrame())
</span><del>-        m_pageLoadState.setTitle(title);
</del><ins>+        m_pageLoadState.setTitle(transaction, title);
</ins><span class="cx"> 
</span><span class="cx">     frame-&gt;didChangeTitle(title);
</span><span class="cx">     
</span><ins>+    m_pageLoadState.commitChanges();
</ins><span class="cx">     m_loaderClient.didReceiveTitleForFrame(this, title, frame, userData.get());
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -2361,19 +2424,22 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // PolicyClient
</span><del>-void WebPageProxy::decidePolicyForNavigationAction(uint64_t frameID, uint32_t opaqueNavigationType, uint32_t opaqueModifiers, int32_t opaqueMouseButton, uint64_t originatingFrameID, const ResourceRequest&amp; request, uint64_t listenerID, CoreIPC::MessageDecoder&amp; decoder, bool&amp; receivedPolicyAction, uint64_t&amp; policyAction, uint64_t&amp; downloadID)
</del><ins>+void WebPageProxy::decidePolicyForNavigationAction(uint64_t frameID, uint32_t opaqueNavigationType, uint32_t opaqueModifiers, int32_t opaqueMouseButton, uint64_t originatingFrameID, const WebCore::ResourceRequest&amp; originalRequest, const ResourceRequest&amp; request, uint64_t listenerID, CoreIPC::MessageDecoder&amp; decoder, bool&amp; receivedPolicyAction, uint64_t&amp; policyAction, uint64_t&amp; downloadID)
</ins><span class="cx"> {
</span><span class="cx">     RefPtr&lt;API::Object&gt; userData;
</span><span class="cx">     WebContextUserMessageDecoder messageDecoder(userData, process());
</span><span class="cx">     if (!decoder.decode(messageDecoder))
</span><span class="cx">         return;
</span><span class="cx"> 
</span><ins>+    auto transaction = m_pageLoadState.transaction();
+
</ins><span class="cx">     if (request.url() != m_pageLoadState.pendingAPIRequestURL())
</span><del>-        m_pageLoadState.clearPendingAPIRequestURL();
</del><ins>+        m_pageLoadState.clearPendingAPIRequestURL(transaction);
</ins><span class="cx"> 
</span><span class="cx">     WebFrameProxy* frame = m_process-&gt;webFrame(frameID);
</span><span class="cx">     MESSAGE_CHECK(frame);
</span><span class="cx">     MESSAGE_CHECK_URL(request.url());
</span><ins>+    MESSAGE_CHECK_URL(originalRequest.url());
</ins><span class="cx"> 
</span><span class="cx">     NavigationType navigationType = static_cast&lt;NavigationType&gt;(opaqueNavigationType);
</span><span class="cx">     WebEvent::Modifiers modifiers = static_cast&lt;WebEvent::Modifiers&gt;(opaqueModifiers);
</span><span class="lines">@@ -2387,7 +2453,7 @@
</span><span class="cx">     m_inDecidePolicyForNavigationAction = true;
</span><span class="cx">     m_syncNavigationActionPolicyActionIsValid = false;
</span><span class="cx">     
</span><del>-    if (!m_policyClient.decidePolicyForNavigationAction(this, frame, navigationType, modifiers, mouseButton, originatingFrame, request, listener.get(), userData.get()))
</del><ins>+    if (!m_policyClient.decidePolicyForNavigationAction(this, frame, navigationType, modifiers, mouseButton, originatingFrame, originalRequest, request, listener.get(), userData.get()))
</ins><span class="cx">         listener-&gt;use();
</span><span class="cx"> 
</span><span class="cx">     m_inDecidePolicyForNavigationAction = false;
</span><span class="lines">@@ -3013,7 +3079,7 @@
</span><span class="cx">         apiRects.reserveInitialCapacity(rects.size());
</span><span class="cx"> 
</span><span class="cx">         for (const auto&amp; rect : rects)
</span><del>-            apiRects.uncheckedAppend(WebRect::create(toAPI(rect)));
</del><ins>+            apiRects.uncheckedAppend(API::Rect::create(toAPI(rect)));
</ins><span class="cx"> 
</span><span class="cx">         matches.uncheckedAppend(API::Array::create(std::move(apiRects)));
</span><span class="cx">     }
</span><span class="lines">@@ -3026,6 +3092,21 @@
</span><span class="cx">     m_findClient.didFailToFindString(this, string);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+bool WebPageProxy::sendMessage(std::unique_ptr&lt;CoreIPC::MessageEncoder&gt; encoder, unsigned messageSendFlags)
+{
+    return m_process-&gt;sendMessage(std::move(encoder), messageSendFlags);
+}
+
+CoreIPC::Connection* WebPageProxy::messageSenderConnection()
+{
+    return m_process-&gt;connection();
+}
+
+uint64_t WebPageProxy::messageSenderDestinationID()
+{
+    return m_pageID;
+}
+
</ins><span class="cx"> void WebPageProxy::valueChangedForPopupMenu(WebPopupMenuProxy*, int32_t newSelectedIndex)
</span><span class="cx"> {
</span><span class="cx">     m_process-&gt;send(Messages::WebPage::DidChangeSelectedIndexForActivePopupMenu(newSelectedIndex), m_pageID);
</span><span class="lines">@@ -3663,11 +3744,12 @@
</span><span class="cx"> 
</span><span class="cx">     resetStateAfterProcessExited();
</span><span class="cx"> 
</span><del>-    // FIXME: Consider calling reset after calling out to the loader client,
-    // having the page load state available could be useful.
-    m_pageLoadState.reset();
</del><ins>+    auto transaction = m_pageLoadState.transaction();
</ins><span class="cx"> 
</span><ins>+    m_pageLoadState.reset(transaction);
+
</ins><span class="cx">     m_pageClient.processDidCrash();
</span><ins>+
</ins><span class="cx">     m_loaderClient.processDidCrash(this);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -3825,6 +3907,7 @@
</span><span class="cx">     m_creationParameters.minimumLayoutSize = m_minimumLayoutSize;
</span><span class="cx">     m_creationParameters.autoSizingShouldExpandToViewHeight = m_autoSizingShouldExpandToViewHeight;
</span><span class="cx">     m_creationParameters.scrollPinningBehavior = m_scrollPinningBehavior;
</span><ins>+    m_creationParameters.backgroundExtendsBeyondPage = m_backgroundExtendsBeyondPage;
</ins><span class="cx"> 
</span><span class="cx"> #if PLATFORM(MAC)
</span><span class="cx">     m_creationParameters.layerHostingMode = m_layerHostingMode;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebPageProxyh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebPageProxy.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebPageProxy.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebPageProxy.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -34,6 +34,7 @@
</span><span class="cx"> #include &quot;EditorState.h&quot;
</span><span class="cx"> #include &quot;GeolocationPermissionRequestManagerProxy.h&quot;
</span><span class="cx"> #include &quot;LayerTreeContext.h&quot;
</span><ins>+#include &quot;MessageSender.h&quot;
</ins><span class="cx"> #include &quot;NotificationPermissionRequestManagerProxy.h&quot;
</span><span class="cx"> #include &quot;PageLoadState.h&quot;
</span><span class="cx"> #include &quot;PlatformProcessIdentifier.h&quot;
</span><span class="lines">@@ -313,13 +314,13 @@
</span><span class="cx"> };
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-class WebPageProxy
-    : public API::TypedObject&lt;API::Object::Type::Page&gt;
</del><ins>+class WebPageProxy : public API::ObjectImpl&lt;API::Object::Type::Page&gt;
</ins><span class="cx"> #if ENABLE(INPUT_TYPE_COLOR)
</span><span class="cx">     , public WebColorPicker::Client
</span><span class="cx"> #endif
</span><span class="cx">     , public WebPopupMenuProxy::Client
</span><del>-    , public CoreIPC::MessageReceiver {
</del><ins>+    , public CoreIPC::MessageReceiver
+    , public CoreIPC::MessageSender {
</ins><span class="cx"> public:
</span><span class="cx"> 
</span><span class="cx">     static PassRefPtr&lt;WebPageProxy&gt; create(PageClient&amp;, WebProcessProxy&amp;, WebPageGroup&amp;, uint64_t pageID);
</span><span class="lines">@@ -584,6 +585,9 @@
</span><span class="cx">     bool rubberBandsAtBottom() const;
</span><span class="cx">     void setRubberBandsAtBottom(bool);
</span><span class="cx"> 
</span><ins>+    void setBackgroundExtendsBeyondPage(bool);
+    bool backgroundExtendsBeyondPage() const;
+
</ins><span class="cx">     void setPaginationMode(WebCore::Pagination::Mode);
</span><span class="cx">     WebCore::Pagination::Mode paginationMode() const { return m_paginationMode; }
</span><span class="cx">     void setPaginationBehavesLikeColumns(bool);
</span><span class="lines">@@ -860,6 +864,11 @@
</span><span class="cx">     virtual void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageDecoder&amp;) OVERRIDE;
</span><span class="cx">     virtual void didReceiveSyncMessage(CoreIPC::Connection*, CoreIPC::MessageDecoder&amp;, std::unique_ptr&lt;CoreIPC::MessageEncoder&gt;&amp;) OVERRIDE;
</span><span class="cx"> 
</span><ins>+    // CoreIPC::MessageSender
+    virtual bool sendMessage(std::unique_ptr&lt;CoreIPC::MessageEncoder&gt;, unsigned messageSendFlags) OVERRIDE;
+    virtual CoreIPC::Connection* messageSenderConnection() OVERRIDE;
+    virtual uint64_t messageSenderDestinationID() OVERRIDE;
+
</ins><span class="cx">     // WebPopupMenuProxy::Client
</span><span class="cx">     virtual void valueChangedForPopupMenu(WebPopupMenuProxy*, int32_t newSelectedIndex);
</span><span class="cx">     virtual void setTextFromItemForPopupMenu(WebPopupMenuProxy*, int32_t index);
</span><span class="lines">@@ -877,7 +886,7 @@
</span><span class="cx">     void didStartProvisionalLoadForFrame(uint64_t frameID, const String&amp; url, const String&amp; unreachableURL, CoreIPC::MessageDecoder&amp;);
</span><span class="cx">     void didReceiveServerRedirectForProvisionalLoadForFrame(uint64_t frameID, const String&amp;, CoreIPC::MessageDecoder&amp;);
</span><span class="cx">     void didFailProvisionalLoadForFrame(uint64_t frameID, const WebCore::ResourceError&amp;, CoreIPC::MessageDecoder&amp;);
</span><del>-    void didCommitLoadForFrame(uint64_t frameID, const String&amp; mimeType, uint32_t frameLoadType, const CertificateInfo&amp;, CoreIPC::MessageDecoder&amp;);
</del><ins>+    void didCommitLoadForFrame(uint64_t frameID, const String&amp; mimeType, uint32_t frameLoadType, const WebCore::CertificateInfo&amp;, CoreIPC::MessageDecoder&amp;);
</ins><span class="cx">     void didFinishDocumentLoadForFrame(uint64_t frameID, CoreIPC::MessageDecoder&amp;);
</span><span class="cx">     void didFinishLoadForFrame(uint64_t frameID, CoreIPC::MessageDecoder&amp;);
</span><span class="cx">     void didFailLoadForFrame(uint64_t frameID, const WebCore::ResourceError&amp;, CoreIPC::MessageDecoder&amp;);
</span><span class="lines">@@ -895,7 +904,7 @@
</span><span class="cx">     void didChangeProgress(double);
</span><span class="cx">     void didFinishProgress();
</span><span class="cx"> 
</span><del>-    void decidePolicyForNavigationAction(uint64_t frameID, uint32_t navigationType, uint32_t modifiers, int32_t mouseButton, uint64_t originatingFrameID, const WebCore::ResourceRequest&amp;, uint64_t listenerID, CoreIPC::MessageDecoder&amp;, bool&amp; receivedPolicyAction, uint64_t&amp; policyAction, uint64_t&amp; downloadID);
</del><ins>+    void decidePolicyForNavigationAction(uint64_t frameID, uint32_t navigationType, uint32_t modifiers, int32_t mouseButton, uint64_t originatingFrameID, const WebCore::ResourceRequest&amp; originalRequest, const WebCore::ResourceRequest&amp; request, uint64_t listenerID, CoreIPC::MessageDecoder&amp;, bool&amp; receivedPolicyAction, uint64_t&amp; policyAction, uint64_t&amp; downloadID);
</ins><span class="cx">     void decidePolicyForNewWindowAction(uint64_t frameID, uint32_t navigationType, uint32_t modifiers, int32_t mouseButton, const WebCore::ResourceRequest&amp;, const String&amp; frameName, uint64_t listenerID, CoreIPC::MessageDecoder&amp;);
</span><span class="cx">     void decidePolicyForResponse(uint64_t frameID, const WebCore::ResourceResponse&amp;, const WebCore::ResourceRequest&amp;, bool canShowMIMEType, uint64_t listenerID, CoreIPC::MessageDecoder&amp;);
</span><span class="cx">     void decidePolicyForResponseSync(uint64_t frameID, const WebCore::ResourceResponse&amp;, const WebCore::ResourceRequest&amp;, bool canShowMIMEType, uint64_t listenerID, CoreIPC::MessageDecoder&amp;, bool&amp; receivedPolicyAction, uint64_t&amp; policyAction, uint64_t&amp; downloadID);
</span><span class="lines">@@ -1326,6 +1335,8 @@
</span><span class="cx">     bool m_rubberBandsAtTop;
</span><span class="cx">     bool m_rubberBandsAtBottom;
</span><span class="cx"> 
</span><ins>+    bool m_backgroundExtendsBeyondPage;
+
</ins><span class="cx">     bool m_mainFrameInViewSourceMode;
</span><span class="cx">         
</span><span class="cx">     unsigned m_pageCount;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebPageProxymessagesin"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebPageProxy.messages.in (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebPageProxy.messages.in        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebPageProxy.messages.in        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -103,7 +103,7 @@
</span><span class="cx"> 
</span><span class="cx">     # Policy messages
</span><span class="cx">     DecidePolicyForResponseSync(uint64_t frameID, WebCore::ResourceResponse response, WebCore::ResourceRequest request, bool canShowMIMEType, uint64_t listenerID, WebKit::InjectedBundleUserMessageEncoder userData) -&gt; (bool receivedPolicyAction, uint64_t policyAction, uint64_t downloadID) Variadic
</span><del>-    DecidePolicyForNavigationAction(uint64_t frameID, uint32_t navigationType, uint32_t modifiers, int32_t mouseButton, uint64_t originatingFrameID, WebCore::ResourceRequest request, uint64_t listenerID, WebKit::InjectedBundleUserMessageEncoder userData) -&gt; (bool receivedPolicyAction, uint64_t policyAction, uint64_t downloadID) Variadic
</del><ins>+    DecidePolicyForNavigationAction(uint64_t frameID, uint32_t navigationType, uint32_t modifiers, int32_t mouseButton, uint64_t originatingFrameID, WebCore::ResourceRequest originalRequest, WebCore::ResourceRequest request, uint64_t listenerID, WebKit::InjectedBundleUserMessageEncoder userData) -&gt; (bool receivedPolicyAction, uint64_t policyAction, uint64_t downloadID) Variadic
</ins><span class="cx">     DecidePolicyForNewWindowAction(uint64_t frameID, uint32_t navigationType, uint32_t modifiers, int32_t mouseButton, WebCore::ResourceRequest request, String frameName, uint64_t listenerID, WebKit::InjectedBundleUserMessageEncoder userData) Variadic
</span><span class="cx">     UnableToImplementPolicy(uint64_t frameID, WebCore::ResourceError error, WebKit::InjectedBundleUserMessageEncoder userData)  Variadic
</span><span class="cx"> 
</span><span class="lines">@@ -117,7 +117,7 @@
</span><span class="cx">     DidCreateSubframe(uint64_t frameID)
</span><span class="cx"> 
</span><span class="cx">     # Frame load messages
</span><del>-    DidCommitLoadForFrame(uint64_t frameID, String mimeType, uint32_t loadType, WebKit::CertificateInfo certificateInfo, WebKit::InjectedBundleUserMessageEncoder userData) Variadic
</del><ins>+    DidCommitLoadForFrame(uint64_t frameID, String mimeType, uint32_t loadType, WebCore::CertificateInfo certificateInfo, WebKit::InjectedBundleUserMessageEncoder userData) Variadic
</ins><span class="cx">     DidFailLoadForFrame(uint64_t frameID, WebCore::ResourceError error, WebKit::InjectedBundleUserMessageEncoder userData) Variadic
</span><span class="cx">     DidFailProvisionalLoadForFrame(uint64_t frameID, WebCore::ResourceError error, WebKit::InjectedBundleUserMessageEncoder userData) Variadic
</span><span class="cx">     DidFinishDocumentLoadForFrame(uint64_t frameID, WebKit::InjectedBundleUserMessageEncoder userData) Variadic
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebPolicyClientcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebPolicyClient.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebPolicyClient.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebPolicyClient.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -34,17 +34,20 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><del>-bool WebPolicyClient::decidePolicyForNavigationAction(WebPageProxy* page, WebFrameProxy* frame, NavigationType type, WebEvent::Modifiers modifiers, WebMouseEvent::Button mouseButton, WebFrameProxy* originatingFrame, const ResourceRequest&amp; resourceRequest, WebFramePolicyListenerProxy* listener, API::Object* userData)
</del><ins>+bool WebPolicyClient::decidePolicyForNavigationAction(WebPageProxy* page, WebFrameProxy* frame, NavigationType type, WebEvent::Modifiers modifiers, WebMouseEvent::Button mouseButton, WebFrameProxy* originatingFrame, const ResourceRequest&amp; originalResourceRequest, const ResourceRequest&amp; resourceRequest, WebFramePolicyListenerProxy* listener, API::Object* userData)
</ins><span class="cx"> {
</span><del>-    if (!m_client.decidePolicyForNavigationAction_deprecatedForUseWithV0 &amp;&amp; !m_client.decidePolicyForNavigationAction)
</del><ins>+    if (!m_client.decidePolicyForNavigationAction_deprecatedForUseWithV0 &amp;&amp; !m_client.decidePolicyForNavigationAction_deprecatedForUseWithV1 &amp;&amp; !m_client.decidePolicyForNavigationAction)
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><ins>+    RefPtr&lt;WebURLRequest&gt; originalRequest = WebURLRequest::create(originalResourceRequest);
</ins><span class="cx">     RefPtr&lt;WebURLRequest&gt; request = WebURLRequest::create(resourceRequest);
</span><span class="cx"> 
</span><span class="cx">     if (m_client.decidePolicyForNavigationAction_deprecatedForUseWithV0)
</span><span class="cx">         m_client.decidePolicyForNavigationAction_deprecatedForUseWithV0(toAPI(page), toAPI(frame), toAPI(type), toAPI(modifiers), toAPI(mouseButton), toAPI(request.get()), toAPI(listener), toAPI(userData), m_client.base.clientInfo);
</span><ins>+    else if (m_client.decidePolicyForNavigationAction_deprecatedForUseWithV1)
+        m_client.decidePolicyForNavigationAction_deprecatedForUseWithV1(toAPI(page), toAPI(frame), toAPI(type), toAPI(modifiers), toAPI(mouseButton), toAPI(originatingFrame), toAPI(request.get()), toAPI(listener), toAPI(userData), m_client.base.clientInfo);
</ins><span class="cx">     else
</span><del>-        m_client.decidePolicyForNavigationAction(toAPI(page), toAPI(frame), toAPI(type), toAPI(modifiers), toAPI(mouseButton), toAPI(originatingFrame), toAPI(request.get()), toAPI(listener), toAPI(userData), m_client.base.clientInfo);
</del><ins>+        m_client.decidePolicyForNavigationAction(toAPI(page), toAPI(frame), toAPI(type), toAPI(modifiers), toAPI(mouseButton), toAPI(originatingFrame), toAPI(originalRequest.get()), toAPI(request.get()), toAPI(listener), toAPI(userData), m_client.base.clientInfo);
</ins><span class="cx"> 
</span><span class="cx">     return true;
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebPolicyClienth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebPolicyClient.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebPolicyClient.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebPolicyClient.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -28,6 +28,7 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;APIClient.h&quot;
</span><span class="cx"> #include &quot;WKPage.h&quot;
</span><ins>+#include &quot;WKPagePolicyClientInternal.h&quot;
</ins><span class="cx"> #include &quot;WebEvent.h&quot;
</span><span class="cx"> #include &lt;WebCore/FrameLoaderTypes.h&gt;
</span><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><span class="lines">@@ -36,7 +37,7 @@
</span><span class="cx"> class Object;
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; struct ClientTraits&lt;WKPagePolicyClientBase&gt; {
</span><del>-    typedef std::tuple&lt;WKPagePolicyClientV0, WKPagePolicyClientV1&gt; Versions;
</del><ins>+    typedef std::tuple&lt;WKPagePolicyClientV0, WKPagePolicyClientV1, WKPagePolicyClientInternal&gt; Versions;
</ins><span class="cx"> };
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -54,7 +55,7 @@
</span><span class="cx"> 
</span><span class="cx"> class WebPolicyClient : public API::Client&lt;WKPagePolicyClientBase&gt; {
</span><span class="cx"> public:
</span><del>-    bool decidePolicyForNavigationAction(WebPageProxy*, WebFrameProxy*, WebCore::NavigationType, WebEvent::Modifiers, WebMouseEvent::Button, WebFrameProxy* originatingFrame, const WebCore::ResourceRequest&amp;, WebFramePolicyListenerProxy*, API::Object* userData);
</del><ins>+    bool decidePolicyForNavigationAction(WebPageProxy*, WebFrameProxy*, WebCore::NavigationType, WebEvent::Modifiers, WebMouseEvent::Button, WebFrameProxy* originatingFrame, const WebCore::ResourceRequest&amp; originalRequest, const WebCore::ResourceRequest&amp;, WebFramePolicyListenerProxy*, API::Object* userData);
</ins><span class="cx">     bool decidePolicyForNewWindowAction(WebPageProxy*, WebFrameProxy*, WebCore::NavigationType, WebEvent::Modifiers, WebMouseEvent::Button, const WebCore::ResourceRequest&amp;, const String&amp; frameName, WebFramePolicyListenerProxy*, API::Object* userData);
</span><span class="cx">     bool decidePolicyForResponse(WebPageProxy*, WebFrameProxy*, const WebCore::ResourceResponse&amp;, const WebCore::ResourceRequest&amp;, bool canShowMIMEType, WebFramePolicyListenerProxy*, API::Object* userData);
</span><span class="cx">     void unableToImplementPolicy(WebPageProxy*, WebFrameProxy*, const WebCore::ResourceError&amp;, API::Object* userData);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebPreferencesh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebPreferences.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebPreferences.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebPreferences.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -41,7 +41,7 @@
</span><span class="cx"> 
</span><span class="cx"> class WebPageGroup;
</span><span class="cx"> 
</span><del>-class WebPreferences : public API::TypedObject&lt;API::Object::Type::Preferences&gt; {
</del><ins>+class WebPreferences : public API::ObjectImpl&lt;API::Object::Type::Preferences&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;WebPreferences&gt; create()
</span><span class="cx">     {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebProcessProxycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebProcessProxy.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebProcessProxy.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebProcessProxy.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -26,6 +26,7 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;WebProcessProxy.h&quot;
</span><span class="cx"> 
</span><ins>+#include &quot;APIFrameHandle.h&quot;
</ins><span class="cx"> #include &quot;CustomProtocolManagerProxyMessages.h&quot;
</span><span class="cx"> #include &quot;DataReference.h&quot;
</span><span class="cx"> #include &quot;DownloadProxyMap.h&quot;
</span><span class="lines">@@ -33,6 +34,7 @@
</span><span class="cx"> #include &quot;PluginProcessManager.h&quot;
</span><span class="cx"> #include &quot;TextChecker.h&quot;
</span><span class="cx"> #include &quot;TextCheckerState.h&quot;
</span><ins>+#include &quot;UserData.h&quot;
</ins><span class="cx"> #include &quot;WebBackForwardListItem.h&quot;
</span><span class="cx"> #include &quot;WebContext.h&quot;
</span><span class="cx"> #include &quot;WebNavigationDataStore.h&quot;
</span><span class="lines">@@ -685,4 +687,19 @@
</span><span class="cx">     WebCore::disableSuddenTermination();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+RefPtr&lt;API::Object&gt; WebProcessProxy::apiObjectByConvertingToHandles(API::Object* object)
+{
+    return UserData::transform(object, [](const API::Object&amp; object) -&gt; RefPtr&lt;API::Object&gt; {
+        switch (object.type()) {
+        case API::Object::Type::Frame: {
+            auto&amp; frame = static_cast&lt;const WebFrameProxy&amp;&gt;(object);
+            return API::FrameHandle::create(frame.frameID());
+        }
+
+        default:
+            return nullptr;
+        }
+    });
+}
+
</ins><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebProcessProxyh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebProcessProxy.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebProcessProxy.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebProcessProxy.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -126,6 +126,8 @@
</span><span class="cx"> 
</span><span class="cx">     void requestTermination();
</span><span class="cx"> 
</span><ins>+    RefPtr&lt;API::Object&gt; apiObjectByConvertingToHandles(API::Object*);
+
</ins><span class="cx"> private:
</span><span class="cx">     explicit WebProcessProxy(WebContext&amp;);
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebResourceCacheManagerProxycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebResourceCacheManagerProxy.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebResourceCacheManagerProxy.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebResourceCacheManagerProxy.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -54,7 +54,7 @@
</span><span class="cx"> WebResourceCacheManagerProxy::WebResourceCacheManagerProxy(WebContext* webContext)
</span><span class="cx">     : WebContextSupplement(webContext)
</span><span class="cx"> {
</span><del>-    WebContextSupplement::context()-&gt;addMessageReceiver(Messages::WebResourceCacheManagerProxy::messageReceiverName(), this);
</del><ins>+    WebContextSupplement::context()-&gt;addMessageReceiver(Messages::WebResourceCacheManagerProxy::messageReceiverName(), *this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebResourceCacheManagerProxy::~WebResourceCacheManagerProxy()
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebResourceCacheManagerProxyh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebResourceCacheManagerProxy.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebResourceCacheManagerProxy.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebResourceCacheManagerProxy.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -44,7 +44,7 @@
</span><span class="cx"> 
</span><span class="cx"> typedef GenericCallback&lt;WKArrayRef&gt; ArrayCallback;
</span><span class="cx"> 
</span><del>-class WebResourceCacheManagerProxy : public API::TypedObject&lt;API::Object::Type::CacheManager&gt;, public WebContextSupplement, private CoreIPC::MessageReceiver {
</del><ins>+class WebResourceCacheManagerProxy : public API::ObjectImpl&lt;API::Object::Type::CacheManager&gt;, public WebContextSupplement, private CoreIPC::MessageReceiver {
</ins><span class="cx"> public:
</span><span class="cx">     static const char* supplementName();
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebTextCheckerh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebTextChecker.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebTextChecker.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebTextChecker.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -35,7 +35,7 @@
</span><span class="cx"> 
</span><span class="cx"> class WebPageProxy;
</span><span class="cx"> 
</span><del>-class WebTextChecker : public API::TypedObject&lt;API::Object::Type::TextChecker&gt; {
</del><ins>+class WebTextChecker : public API::ObjectImpl&lt;API::Object::Type::TextChecker&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static WebTextChecker* shared();
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebUIClientcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebUIClient.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebUIClient.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebUIClient.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -26,6 +26,7 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;WebUIClient.h&quot;
</span><span class="cx"> 
</span><ins>+#include &quot;APINumber.h&quot;
</ins><span class="cx"> #include &quot;ImmutableDictionary.h&quot;
</span><span class="cx"> #include &quot;NativeWebKeyboardEvent.h&quot;
</span><span class="cx"> #include &quot;NativeWebWheelEvent.h&quot;
</span><span class="lines">@@ -33,7 +34,6 @@
</span><span class="cx"> #include &quot;PluginInformation.h&quot;
</span><span class="cx"> #include &quot;WKAPICast.h&quot;
</span><span class="cx"> #include &quot;WebColorPickerResultListenerProxy.h&quot;
</span><del>-#include &quot;WebNumber.h&quot;
</del><span class="cx"> #include &quot;WebOpenPanelResultListenerProxy.h&quot;
</span><span class="cx"> #include &quot;WebPageProxy.h&quot;
</span><span class="cx"> #include &lt;WebCore/FloatRect.h&gt;
</span><span class="lines">@@ -56,22 +56,22 @@
</span><span class="cx"> 
</span><span class="cx">     ImmutableDictionary::MapType map;
</span><span class="cx">     if (windowFeatures.xSet)
</span><del>-        map.set(&quot;x&quot;, WebDouble::create(windowFeatures.x));
</del><ins>+        map.set(&quot;x&quot;, API::Double::create(windowFeatures.x));
</ins><span class="cx">     if (windowFeatures.ySet)
</span><del>-        map.set(&quot;y&quot;, WebDouble::create(windowFeatures.y));
</del><ins>+        map.set(&quot;y&quot;, API::Double::create(windowFeatures.y));
</ins><span class="cx">     if (windowFeatures.widthSet)
</span><del>-        map.set(&quot;width&quot;, WebDouble::create(windowFeatures.width));
</del><ins>+        map.set(&quot;width&quot;, API::Double::create(windowFeatures.width));
</ins><span class="cx">     if (windowFeatures.heightSet)
</span><del>-        map.set(&quot;height&quot;, WebDouble::create(windowFeatures.height));
-    map.set(&quot;menuBarVisible&quot;, WebBoolean::create(windowFeatures.menuBarVisible));
-    map.set(&quot;statusBarVisible&quot;, WebBoolean::create(windowFeatures.statusBarVisible));
-    map.set(&quot;toolBarVisible&quot;, WebBoolean::create(windowFeatures.toolBarVisible));
-    map.set(&quot;locationBarVisible&quot;, WebBoolean::create(windowFeatures.locationBarVisible));
-    map.set(&quot;scrollbarsVisible&quot;, WebBoolean::create(windowFeatures.scrollbarsVisible));
-    map.set(&quot;resizable&quot;, WebBoolean::create(windowFeatures.resizable));
-    map.set(&quot;fullscreen&quot;, WebBoolean::create(windowFeatures.fullscreen));
-    map.set(&quot;dialog&quot;, WebBoolean::create(windowFeatures.dialog));
-    RefPtr&lt;ImmutableDictionary&gt; featuresMap = ImmutableDictionary::adopt(map);
</del><ins>+        map.set(&quot;height&quot;, API::Double::create(windowFeatures.height));
+    map.set(&quot;menuBarVisible&quot;, API::Boolean::create(windowFeatures.menuBarVisible));
+    map.set(&quot;statusBarVisible&quot;, API::Boolean::create(windowFeatures.statusBarVisible));
+    map.set(&quot;toolBarVisible&quot;, API::Boolean::create(windowFeatures.toolBarVisible));
+    map.set(&quot;locationBarVisible&quot;, API::Boolean::create(windowFeatures.locationBarVisible));
+    map.set(&quot;scrollbarsVisible&quot;, API::Boolean::create(windowFeatures.scrollbarsVisible));
+    map.set(&quot;resizable&quot;, API::Boolean::create(windowFeatures.resizable));
+    map.set(&quot;fullscreen&quot;, API::Boolean::create(windowFeatures.fullscreen));
+    map.set(&quot;dialog&quot;, API::Boolean::create(windowFeatures.dialog));
+    RefPtr&lt;ImmutableDictionary&gt; featuresMap = ImmutableDictionary::create(std::move(map));
</ins><span class="cx"> 
</span><span class="cx">     if (!m_client.base.version)
</span><span class="cx">         return adoptRef(toImpl(m_client.createNewPage_deprecatedForUseWithV0(toAPI(page), toAPI(featuresMap.get()), toAPI(modifiers), toAPI(button), m_client.base.clientInfo)));
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebVibrationProxycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebVibrationProxy.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebVibrationProxy.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebVibrationProxy.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -43,7 +43,7 @@
</span><span class="cx"> WebVibrationProxy::WebVibrationProxy(WebPageProxy* page)
</span><span class="cx">     : m_page(page)
</span><span class="cx"> {
</span><del>-    m_page-&gt;process().context().addMessageReceiver(Messages::WebVibrationProxy::messageReceiverName(), m_page-&gt;pageID(), this);
</del><ins>+    m_page-&gt;process().context().addMessageReceiver(Messages::WebVibrationProxy::messageReceiverName(), m_page-&gt;pageID(), *this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebVibrationProxy::~WebVibrationProxy()
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebVibrationProxyh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebVibrationProxy.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebVibrationProxy.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebVibrationProxy.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -37,7 +37,7 @@
</span><span class="cx"> 
</span><span class="cx"> class WebPageProxy;
</span><span class="cx"> 
</span><del>-class WebVibrationProxy : public API::TypedObject&lt;API::Object::Type::Vibration&gt;, private CoreIPC::MessageReceiver {
</del><ins>+class WebVibrationProxy : public API::ObjectImpl&lt;API::Object::Type::Vibration&gt;, private CoreIPC::MessageReceiver {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;WebVibrationProxy&gt; create(WebPageProxy*);
</span><span class="cx">     virtual ~WebVibrationProxy();
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessWebViewportAttributesh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/WebViewportAttributes.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/WebViewportAttributes.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/WebViewportAttributes.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -32,7 +32,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><del>-class WebViewportAttributes : public API::TypedObject&lt;API::Object::Type::ViewportAttributes&gt; {
</del><ins>+class WebViewportAttributes : public API::ObjectImpl&lt;API::Object::Type::ViewportAttributes&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;WebViewportAttributes&gt; create(const WebCore::ViewportAttributes&amp; attributes)
</span><span class="cx">     {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcesscfWebPageProxyCFcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/cf/WebPageProxyCF.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/cf/WebPageProxyCF.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/cf/WebPageProxyCF.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -151,6 +151,8 @@
</span><span class="cx">             provisionalURL = static_cast&lt;CFStringRef&gt;(value);
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    auto transaction = m_pageLoadState.transaction();
+
</ins><span class="cx">     if (backForwardListDictionary) {
</span><span class="cx">         if (!m_backForwardList-&gt;restoreFromCFDictionaryRepresentation(backForwardListDictionary))
</span><span class="cx">             LOG(SessionState, &quot;Failed to restore back/forward list from SessionHistory dictionary&quot;);
</span><span class="lines">@@ -165,7 +167,7 @@
</span><span class="cx">                     process().send(Messages::WebPage::RestoreSession(state), m_pageID);
</span><span class="cx">                 else {
</span><span class="cx">                     if (WebBackForwardListItem* item = m_backForwardList-&gt;currentItem())
</span><del>-                        m_pageLoadState.setPendingAPIRequestURL(item-&gt;url());
</del><ins>+                        m_pageLoadState.setPendingAPIRequestURL(transaction, item-&gt;url());
</ins><span class="cx"> 
</span><span class="cx">                     process().send(Messages::WebPage::RestoreSessionAndNavigateToCurrentItem(state), m_pageID);
</span><span class="cx">                 }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcesseflWebFullScreenManagerProxyEflcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/efl/WebFullScreenManagerProxyEfl.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/efl/WebFullScreenManagerProxyEfl.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/efl/WebFullScreenManagerProxyEfl.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,91 +0,0 @@
</span><del>-/*
- * Copyright (C) 2012 Samsung Electronics
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include &quot;config.h&quot;
-#include &quot;WebFullScreenManagerProxy.h&quot;
-#include &quot;WebFullScreenManagerProxyMessages.h&quot;
-
-#if ENABLE(FULLSCREEN_API)
-
-#include &quot;EwkView.h&quot;
-#include &lt;WebCore/NotImplemented.h&gt;
-
-using namespace WebCore;
-
-namespace WebKit {
-
-void WebFullScreenManagerProxy::invalidate()
-{
-    m_page-&gt;process().removeMessageReceiver(Messages::WebFullScreenManagerProxy::messageReceiverName(), m_page-&gt;pageID());
-    m_webView = 0;
-}
-
-void WebFullScreenManagerProxy::close()
-{
-    notImplemented();
-}
-
-bool WebFullScreenManagerProxy::isFullScreen()
-{
-    return m_hasRequestedFullScreen;
-}
-
-void WebFullScreenManagerProxy::enterFullScreen()
-{
-    if (!m_webView || m_hasRequestedFullScreen)
-        return;
-
-    m_hasRequestedFullScreen = true;
-
-    willEnterFullScreen();
-    toEwkView(m_webView)-&gt;enterFullScreen();
-    didEnterFullScreen();
-}
-
-void WebFullScreenManagerProxy::exitFullScreen()
-{
-    if (!m_webView || !m_hasRequestedFullScreen)
-        return;
-
-    m_hasRequestedFullScreen = false;
-
-    willExitFullScreen();
-    toEwkView(m_webView)-&gt;exitFullScreen();
-    didExitFullScreen();
-}
-
-void WebFullScreenManagerProxy::beganEnterFullScreen(const IntRect&amp; /*initialFrame*/, const IntRect&amp; /*finalFrame*/)
-{
-    notImplemented();
-}
-
-void WebFullScreenManagerProxy::beganExitFullScreen(const IntRect&amp; /*initialFrame*/, const IntRect&amp; /*finalFrame*/)
-{
-    notImplemented();
-}
-
-} // namespace WebKit
-
-#endif // ENABLE(FULLSCREEN_API)
</del></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcesseflWebPopupItemEflh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/efl/WebPopupItemEfl.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/efl/WebPopupItemEfl.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/efl/WebPopupItemEfl.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -32,7 +32,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><del>-class WebPopupItemEfl : public API::TypedObject&lt;API::Object::Type::PopupMenuItem&gt; {
</del><ins>+class WebPopupItemEfl : public API::ObjectImpl&lt;API::Object::Type::PopupMenuItem&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;WebPopupItemEfl&gt; create(const WebPopupItem&amp; data)
</span><span class="cx">     {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcesseflWebViewEflcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/efl/WebViewEfl.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/efl/WebViewEfl.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/efl/WebViewEfl.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -57,16 +57,13 @@
</span><span class="cx"> WebViewEfl::WebViewEfl(WebContext* context, WebPageGroup* pageGroup)
</span><span class="cx">     : WebView(context, pageGroup)
</span><span class="cx">     , m_ewkView(0)
</span><ins>+    , m_hasRequestedFullScreen(false)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebViewEfl::setEwkView(EwkView* ewkView)
</span><span class="cx"> {
</span><span class="cx">     m_ewkView = ewkView;
</span><del>-
-#if ENABLE(FULLSCREEN_API)
-    m_page-&gt;fullScreenManager()-&gt;setWebView(ewkView-&gt;evasObject());
-#endif
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebViewEfl::paintToCairoSurface(cairo_surface_t* surface)
</span><span class="lines">@@ -90,10 +87,12 @@
</span><span class="cx">     return WebPopupMenuListenerEfl::create(page);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if ENABLE(CONTEXT_MENUS)
</ins><span class="cx"> PassRefPtr&lt;WebContextMenuProxy&gt; WebViewEfl::createContextMenuProxy(WebPageProxy* page)
</span><span class="cx"> {
</span><span class="cx">     return WebContextMenuProxyEfl::create(m_ewkView, page);
</span><span class="cx"> }
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx"> void WebViewEfl::setCursor(const Cursor&amp; cursor)
</span><span class="cx"> {
</span><span class="lines">@@ -143,4 +142,40 @@
</span><span class="cx">     m_page-&gt;handleMouseEvent(NativeWebMouseEvent(event, transformFromScene(), m_userViewportTransform.toAffineTransform()));
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if ENABLE(FULLSCREEN_API)
+
+// WebFullScreenManagerProxyClient
+bool WebViewEfl::isFullScreen()
+{
+    return m_hasRequestedFullScreen;
+}
+
+void WebViewEfl::enterFullScreen()
+{
+    if (!m_ewkView || m_hasRequestedFullScreen)
+        return;
+
+    m_hasRequestedFullScreen = true;
+
+    WebFullScreenManagerProxy* manager = m_page-&gt;fullScreenManager();
+    manager-&gt;willEnterFullScreen();
+    m_ewkView-&gt;enterFullScreen();
+    manager-&gt;didEnterFullScreen();
+}
+
+void WebViewEfl::exitFullScreen()
+{
+    if (!m_ewkView || !m_hasRequestedFullScreen)
+        return;
+
+    m_hasRequestedFullScreen = false;
+
+    WebFullScreenManagerProxy* manager = m_page-&gt;fullScreenManager();
+    manager-&gt;willExitFullScreen();
+    m_ewkView-&gt;exitFullScreen();
+    manager-&gt;didExitFullScreen();
+}
+
+#endif // ENABLE(FULLSCREEN_API)
+
</ins><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcesseflWebViewEflh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/efl/WebViewEfl.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/efl/WebViewEfl.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/efl/WebViewEfl.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -36,7 +36,8 @@
</span><span class="cx"> class EwkTouchEvent;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-class WebViewEfl : public WebView {
</del><ins>+class WebViewEfl : public WebView
+    {
</ins><span class="cx"> public:
</span><span class="cx">     void setEwkView(EwkView*);
</span><span class="cx">     EwkView* ewkView() { return m_ewkView; }
</span><span class="lines">@@ -56,12 +57,26 @@
</span><span class="cx"> 
</span><span class="cx">     void setCursor(const WebCore::Cursor&amp;) OVERRIDE;
</span><span class="cx">     PassRefPtr&lt;WebPopupMenuProxy&gt; createPopupMenuProxy(WebPageProxy*) OVERRIDE;
</span><del>-    PassRefPtr&lt;WebContextMenuProxy&gt; createContextMenuProxy(WebPageProxy*) OVERRIDE;
</del><span class="cx">     void updateTextInputState() OVERRIDE;
</span><span class="cx">     void handleDownloadRequest(DownloadProxy*) OVERRIDE;
</span><span class="cx"> 
</span><ins>+#if ENABLE(CONTEXT_MENUS)
+    PassRefPtr&lt;WebContextMenuProxy&gt; createContextMenuProxy(WebPageProxy*) OVERRIDE;
+#endif
+
+#if ENABLE(FULLSCREEN_API)
+    // WebFullScreenManagerProxyClient
+    virtual void closeFullScreenManager() OVERRIDE FINAL { }
+    virtual bool isFullScreen() OVERRIDE FINAL;
+    virtual void enterFullScreen() OVERRIDE FINAL;
+    virtual void exitFullScreen() OVERRIDE FINAL;
+    virtual void beganEnterFullScreen(const WebCore::IntRect&amp;, const WebCore::IntRect&amp;) OVERRIDE FINAL { }
+    virtual void beganExitFullScreen(const WebCore::IntRect&amp;, const WebCore::IntRect&amp;) OVERRIDE FINAL { }
+#endif
+
</ins><span class="cx"> private:
</span><span class="cx">     EwkView* m_ewkView;
</span><ins>+    bool m_hasRequestedFullScreen;
</ins><span class="cx"> 
</span><span class="cx">     friend class WebView;
</span><span class="cx"> };
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessgtkWebContextGtkcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/gtk/WebContextGtk.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/gtk/WebContextGtk.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/gtk/WebContextGtk.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -40,6 +40,10 @@
</span><span class="cx"> #include &lt;wtf/gobject/GOwnPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><span class="cx"> 
</span><ins>+#if ENABLE(NETWORK_PROCESS)
+#include &quot;NetworkProcessMessages.h&quot;
+#endif
+
</ins><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><span class="cx"> static void initInspectorServer()
</span><span class="lines">@@ -97,8 +101,10 @@
</span><span class="cx">     parameters.urlSchemesRegistered = supplement&lt;WebSoupRequestManagerProxy&gt;()-&gt;registeredURISchemes();
</span><span class="cx">     supplement&lt;WebCookieManagerProxy&gt;()-&gt;getCookiePersistentStorage(parameters.cookiePersistentStoragePath, parameters.cookiePersistentStorageType);
</span><span class="cx">     parameters.cookieAcceptPolicy = m_initialHTTPCookieAcceptPolicy;
</span><ins>+    parameters.shouldTrackVisitedLinks = true;
+#if !ENABLE(NETWORK_PROCESS)
</ins><span class="cx">     parameters.ignoreTLSErrors = m_ignoreTLSErrors;
</span><del>-    parameters.shouldTrackVisitedLinks = true;
</del><ins>+#endif
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebContext::platformInvalidateContext()
</span><span class="lines">@@ -138,6 +144,12 @@
</span><span class="cx"> void WebContext::setIgnoreTLSErrors(bool ignoreTLSErrors)
</span><span class="cx"> {
</span><span class="cx">     m_ignoreTLSErrors = ignoreTLSErrors;
</span><ins>+#if ENABLE(NETWORK_PROCESS)
+    if (usesNetworkProcess() &amp;&amp; networkProcess()) {
+        networkProcess()-&gt;send(Messages::NetworkProcess::SetIgnoreTLSErrors(m_ignoreTLSErrors), 0);
+        return;
+    }
+#endif
</ins><span class="cx">     sendToAllProcesses(Messages::WebProcess::SetIgnoreTLSErrors(m_ignoreTLSErrors));
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessgtkWebFullScreenManagerProxyGtkcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/gtk/WebFullScreenManagerProxyGtk.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/gtk/WebFullScreenManagerProxyGtk.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/gtk/WebFullScreenManagerProxyGtk.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,81 +0,0 @@
</span><del>-/*
- *  Copyright (C) 2011 Igalia S.L.
- *
- *  This library is free software; you can redistribute it and/or
- *  modify it under the terms of the GNU Library General Public
- *  License as published by the Free Software Foundation; either
- *  version 2 of the License, or (at your option) any later version.
- *
- *  This library is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *  Library General Public License for more details.
- *
- *  You should have received a copy of the GNU Library General Public License
- *  along with this library; see the file COPYING.LIB.  If not, write to
- *  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- *  Boston, MA 02110-1301, USA.
- */
-
-#include &quot;config.h&quot;
-#include &quot;WebFullScreenManagerProxy.h&quot;
-
-#if ENABLE(FULLSCREEN_API)
-
-#include &quot;WebContext.h&quot;
-#include &quot;WebFullScreenManagerMessages.h&quot;
-#include &quot;WebFullScreenManagerProxyMessages.h&quot;
-#include &quot;WebKitWebViewBasePrivate.h&quot;
-#include &quot;WebProcess.h&quot;
-#include &lt;WebCore/NotImplemented.h&gt;
-
-using namespace WebCore;
-
-namespace WebKit {
-
-void WebFullScreenManagerProxy::invalidate()
-{
-    m_page-&gt;process().removeMessageReceiver(Messages::WebFullScreenManagerProxy::messageReceiverName(), m_page-&gt;pageID());
-    m_webView = 0;
-}
-
-void WebFullScreenManagerProxy::close()
-{
-    notImplemented();
-}
-
-bool WebFullScreenManagerProxy::isFullScreen()
-{
-    notImplemented();
-    return false;
-}
-
-void WebFullScreenManagerProxy::enterFullScreen()
-{
-    if (!m_webView)
-        return;
-
-    webkitWebViewBaseEnterFullScreen(m_webView);
-}
-
-void WebFullScreenManagerProxy::exitFullScreen()
-{
-    if (!m_webView)
-        return;
-
-    webkitWebViewBaseExitFullScreen(m_webView);
-}
-
-void WebFullScreenManagerProxy::beganEnterFullScreen(const IntRect&amp; initialFrame, const IntRect&amp; finalFrame)
-{
-    notImplemented();
-}
-
-void WebFullScreenManagerProxy::beganExitFullScreen(const IntRect&amp; initialFrame, const IntRect&amp; finalFrame)
-{
-    notImplemented();
-}
-
-} // namespace WebKit
-
-#endif // ENABLE(FULLSCREEN_API)
</del></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessgtkWebInspectorClientGtkcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/gtk/WebInspectorClientGtk.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/gtk/WebInspectorClientGtk.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/gtk/WebInspectorClientGtk.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -81,4 +81,11 @@
</span><span class="cx">     m_client.didChangeAttachedHeight(toAPI(inspector), height, m_client.base.clientInfo);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void WebInspectorClientGtk::didChangeAttachedWidth(WebInspectorProxy* inspector, unsigned width)
+{
+    if (!m_client.didChangeAttachedWidth)
+        return;
+    m_client.didChangeAttachedWidth(toAPI(inspector), width, m_client.base.clientInfo);
+}
+
</ins><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessgtkWebInspectorClientGtkh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/gtk/WebInspectorClientGtk.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/gtk/WebInspectorClientGtk.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/gtk/WebInspectorClientGtk.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -52,6 +52,7 @@
</span><span class="cx">     bool attach(WebInspectorProxy*);
</span><span class="cx">     bool detach(WebInspectorProxy*);
</span><span class="cx">     void didChangeAttachedHeight(WebInspectorProxy*, unsigned height);
</span><ins>+    void didChangeAttachedWidth(WebInspectorProxy*, unsigned width);
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessgtkWebInspectorProxyGtkcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/gtk/WebInspectorProxyGtk.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/gtk/WebInspectorProxyGtk.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/gtk/WebInspectorProxyGtk.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -2,6 +2,7 @@
</span><span class="cx">  * Copyright (C) 2010 Apple Inc. All rights reserved.
</span><span class="cx">  * Portions Copyright (c) 2010 Motorola Mobility, Inc.  All rights reserved.
</span><span class="cx">  * Copyright (C) 2012 Igalia S.L.
</span><ins>+ * Copyright (C) 2013 Gustavo Noronha Silva &lt;gns@gnome.org&gt;.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -176,15 +177,20 @@
</span><span class="cx">         m_inspectorWindow = 0;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    // Set a default attached height based on InspectorFrontendClientLocal.
-    static const unsigned defaultAttachedHeight = 300;
-    unsigned maximumAttachedHeight = platformInspectedWindowHeight() * 3 / 4;
-    platformSetAttachedWindowHeight(std::max(minimumAttachedHeight, std::min(defaultAttachedHeight, maximumAttachedHeight)));
</del><ins>+    // Set a default attached size based on InspectorFrontendClientLocal.
+    static const unsigned defaultAttachedSize = 300;
+    if (m_attachmentSide == AttachmentSideBottom) {
+        unsigned maximumAttachedHeight = platformInspectedWindowHeight() * 3 / 4;
+        platformSetAttachedWindowHeight(std::max(minimumAttachedHeight, std::min(defaultAttachedSize, maximumAttachedHeight)));
+    } else {
+        unsigned maximumAttachedWidth = platformInspectedWindowWidth() * 3 / 4;
+        platformSetAttachedWindowWidth(std::max(minimumAttachedWidth, std::min(defaultAttachedSize, maximumAttachedWidth)));
+    }
</ins><span class="cx"> 
</span><span class="cx">     if (m_client.attach(this))
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    webkitWebViewBaseAddWebInspector(WEBKIT_WEB_VIEW_BASE(m_page-&gt;viewWidget()), m_inspectorView);
</del><ins>+    webkitWebViewBaseAddWebInspector(WEBKIT_WEB_VIEW_BASE(m_page-&gt;viewWidget()), m_inspectorView, m_attachmentSide);
</ins><span class="cx">     gtk_widget_show(m_inspectorView);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -212,12 +218,16 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     m_client.didChangeAttachedHeight(this, height);
</span><del>-    webkitWebViewBaseSetInspectorViewHeight(WEBKIT_WEB_VIEW_BASE(m_page-&gt;viewWidget()), height);
</del><ins>+    webkitWebViewBaseSetInspectorViewSize(WEBKIT_WEB_VIEW_BASE(m_page-&gt;viewWidget()), height);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebInspectorProxy::platformSetAttachedWindowWidth(unsigned)
</del><ins>+void WebInspectorProxy::platformSetAttachedWindowWidth(unsigned width)
</ins><span class="cx"> {
</span><del>-    notImplemented();
</del><ins>+    if (!m_isAttached)
+        return;
+
+    m_client.didChangeAttachedWidth(this, width);
+    webkitWebViewBaseSetInspectorViewSize(WEBKIT_WEB_VIEW_BASE(m_page-&gt;viewWidget()), width);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebInspectorProxy::platformSetToolbarHeight(unsigned)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessiosWebFullScreenManagerProxyIOSmm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/ios/WebFullScreenManagerProxyIOS.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/ios/WebFullScreenManagerProxyIOS.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/ios/WebFullScreenManagerProxyIOS.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,75 +0,0 @@
</span><del>-/*
- * Copyright (C) 2010 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import &quot;config.h&quot;
-#import &quot;WebFullScreenManagerProxy.h&quot;
-
-#if ENABLE(FULLSCREEN_API) &amp;&amp; PLATFORM(IOS)
-
-using namespace WebCore;
-
-namespace WebKit {
-
-void WebFullScreenManagerProxy::invalidate()
-{
-    if (!m_webView)
-        return;
-    
-    m_webView = 0;
-}
-
-void WebFullScreenManagerProxy::close()
-{
-    // No-op.
-}
-
-bool WebFullScreenManagerProxy::isFullScreen()
-{
-    return false;
-}
-
-void WebFullScreenManagerProxy::enterFullScreen()
-{
-    // No-op.
-}
-
-void WebFullScreenManagerProxy::exitFullScreen()
-{
-    // No-op.
-}
-    
-void WebFullScreenManagerProxy::beganEnterFullScreen(const IntRect&amp; initialFrame, const IntRect&amp; finalFrame)
-{
-    // No-op.
-}
-
-void WebFullScreenManagerProxy::beganExitFullScreen(const IntRect&amp; initialFrame, const IntRect&amp; finalFrame)
-{
-    // No-op.
-}
-
-} // namespace WebKit
-
-#endif
</del></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessiosWebPageProxyIOSmm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -105,9 +105,8 @@
</span><span class="cx">     if (!isValid())
</span><span class="cx">         return true;
</span><span class="cx">     
</span><del>-    bool handled = true;
-    process().sendSync(Messages::WebPage::InsertText(text, replacementRangeStart, replacementRangeEnd), Messages::WebPage::InsertText::Reply(handled, m_editorState), m_pageID);
-    return handled;
</del><ins>+    process().send(Messages::WebPage::InsertText(text, replacementRangeStart, replacementRangeEnd), m_pageID);
+    return true;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool WebPageProxy::insertDictatedText(const String&amp;, uint64_t, uint64_t, const Vector&lt;WebCore::TextAlternativeWithRange&gt;&amp;)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessmacRemoteLayerTreeHostmm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/mac/RemoteLayerTreeHost.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/mac/RemoteLayerTreeHost.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/mac/RemoteLayerTreeHost.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -46,7 +46,7 @@
</span><span class="cx">     : m_webPageProxy(webPageProxy)
</span><span class="cx">     , m_rootLayer(nullptr)
</span><span class="cx"> {
</span><del>-    m_webPageProxy-&gt;process().addMessageReceiver(Messages::RemoteLayerTreeHost::messageReceiverName(), m_webPageProxy-&gt;pageID(), this);
</del><ins>+    m_webPageProxy-&gt;process().addMessageReceiver(Messages::RemoteLayerTreeHost::messageReceiverName(), m_webPageProxy-&gt;pageID(), *this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> RemoteLayerTreeHost::~RemoteLayerTreeHost()
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessmacTiledCoreAnimationDrawingAreaProxyh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -50,6 +50,10 @@
</span><span class="cx">     virtual void exitAcceleratedCompositingMode(uint64_t backingStoreStateID, const UpdateInfo&amp;) OVERRIDE;
</span><span class="cx">     virtual void updateAcceleratedCompositingMode(uint64_t backingStoreStateID, const LayerTreeContext&amp;) OVERRIDE;
</span><span class="cx"> 
</span><ins>+    virtual void beginTransientZoom() OVERRIDE;
+    virtual void adjustTransientZoom(double scale, WebCore::FloatPoint origin) OVERRIDE;
+    virtual void commitTransientZoom(double scale, WebCore::FloatPoint origin) OVERRIDE;
+
</ins><span class="cx">     // Message handlers.
</span><span class="cx">     virtual void didUpdateGeometry() OVERRIDE;
</span><span class="cx">     virtual void intrinsicContentSizeDidChange(const WebCore::IntSize&amp; newIntrinsicContentSize) OVERRIDE;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessmacTiledCoreAnimationDrawingAreaProxymm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -148,6 +148,21 @@
</span><span class="cx">     m_isWaitingForDidUpdateGeometry = true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void TiledCoreAnimationDrawingAreaProxy::beginTransientZoom()
+{
+    m_webPageProxy-&gt;process().send(Messages::DrawingArea::BeginTransientZoom(), m_webPageProxy-&gt;pageID());
+}
+
+void TiledCoreAnimationDrawingAreaProxy::adjustTransientZoom(double scale, FloatPoint origin)
+{
+    m_webPageProxy-&gt;process().send(Messages::DrawingArea::AdjustTransientZoom(scale, origin), m_webPageProxy-&gt;pageID());
+}
+
+void TiledCoreAnimationDrawingAreaProxy::commitTransientZoom(double scale, FloatPoint origin)
+{
+    m_webPageProxy-&gt;process().send(Messages::DrawingArea::CommitTransientZoom(scale, origin), m_webPageProxy-&gt;pageID());
+}
+
</ins><span class="cx"> } // namespace WebKit
</span><span class="cx"> 
</span><span class="cx"> #endif // !PLATFORM(IOS)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessmacViewGestureControllerh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebKit2/UIProcess/mac/ViewGestureController.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/mac/ViewGestureController.h                                (rev 0)
+++ branches/jsCStack/Source/WebKit2/UIProcess/mac/ViewGestureController.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,74 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef ViewGestureController_h
+#define ViewGestureController_h
+
+#include &quot;MessageReceiver.h&quot;
+#include &lt;WebCore/FloatRect.h&gt;
+
+namespace WebKit {
+
+class WebPageProxy;
+
+class ViewGestureController : private CoreIPC::MessageReceiver {
+    WTF_MAKE_NONCOPYABLE(ViewGestureController);
+public:
+    ViewGestureController(WebPageProxy&amp;);
+    ~ViewGestureController();
+
+    void handleMagnificationGesture(double scale, WebCore::FloatPoint origin);
+
+    void endActiveGesture();
+
+    enum class ViewGestureType {
+        None,
+        Magnification,
+    };
+
+private:
+    // CoreIPC::MessageReceiver.
+    virtual void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageDecoder&amp;) OVERRIDE;
+
+    // Message handlers.
+    void didBeginTransientZoom(WebCore::FloatRect visibleContentBounds);
+
+    void endMagnificationGesture();
+    WebCore::FloatPoint scaledMagnificationOrigin(WebCore::FloatPoint origin, double scale);
+
+    WebPageProxy&amp; m_webPageProxy;
+
+    double m_magnification;
+    WebCore::FloatPoint m_magnificationOrigin;
+
+    ViewGestureType m_activeGestureType;
+
+    WebCore::FloatRect m_visibleContentRect;
+    bool m_visibleContentRectIsValid;
+};
+
+} // namespace WebKit
+
+#endif // ViewGestureController_h
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessmacViewGestureControllermessagesin"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebKit2/UIProcess/mac/ViewGestureController.messages.in (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/mac/ViewGestureController.messages.in                                (rev 0)
+++ branches/jsCStack/Source/WebKit2/UIProcess/mac/ViewGestureController.messages.in        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+# Copyright (C) 2013 Apple Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1.  Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer.
+# 2.  Redistributions in binary form must reproduce the above copyright
+#     notice, this list of conditions and the following disclaimer in the
+#     documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR
+# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+messages -&gt; ViewGestureController {
+    DidBeginTransientZoom(WebCore::FloatRect visibleContentBounds)
+}
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessmacWKFullScreenWindowControllermm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -349,7 +349,6 @@
</span><span class="cx"> 
</span><span class="cx"> - (void)beganExitFullScreenWithInitialFrame:(const WebCore::IntRect&amp;)initialFrame finalFrame:(const WebCore::IntRect&amp;)finalFrame
</span><span class="cx"> {
</span><del>-
</del><span class="cx">     if (_fullScreenState != WaitingToExitFullScreen)
</span><span class="cx">         return;
</span><span class="cx">     _fullScreenState = ExitingFullScreen;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessmacWebFullScreenManagerProxyMacmm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/mac/WebFullScreenManagerProxyMac.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/mac/WebFullScreenManagerProxyMac.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/mac/WebFullScreenManagerProxyMac.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,99 +0,0 @@
</span><del>-/*
- * Copyright (C) 2010 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import &quot;config.h&quot;
-#import &quot;WebFullScreenManagerProxy.h&quot;
-
-#if ENABLE(FULLSCREEN_API) &amp;&amp; !PLATFORM(IOS)
-
-#import &quot;LayerTreeContext.h&quot;
-#import &quot;WKFullScreenWindowController.h&quot;
-#import &quot;WKViewInternal.h&quot;
-#import &quot;WebFullScreenManagerProxyMessages.h&quot;
-#import &quot;WebPageProxy.h&quot;
-#import &quot;WebProcessProxy.h&quot;
-#import &lt;WebCore/IntRect.h&gt;
-
-using namespace WebCore;
-
-namespace WebKit {
-
-void WebFullScreenManagerProxy::invalidate()
-{
-    m_page-&gt;process().removeMessageReceiver(Messages::WebFullScreenManagerProxy::messageReceiverName(), m_page-&gt;pageID());
-
-    if (!m_webView)
-        return;
-    
-    [m_webView closeFullScreenWindowController];
-    m_webView = 0;
-}
-
-void WebFullScreenManagerProxy::close()
-{
-    if (!m_webView)
-        return;
-    [[m_webView fullScreenWindowController] close];
-}
-
-bool WebFullScreenManagerProxy::isFullScreen()
-{
-    if (!m_webView)
-        return false;
-    if (![m_webView hasFullScreenWindowController])
-        return false;
-
-    return [[m_webView fullScreenWindowController] isFullScreen];
-}
-
-void WebFullScreenManagerProxy::enterFullScreen()
-{
-    if (!m_webView)
-        return;
-    [[m_webView fullScreenWindowController] enterFullScreen:nil];
-}
-
-void WebFullScreenManagerProxy::exitFullScreen()
-{
-    if (!m_webView)
-        return;
-    [[m_webView fullScreenWindowController] exitFullScreen];
-}
-    
-void WebFullScreenManagerProxy::beganEnterFullScreen(const IntRect&amp; initialFrame, const IntRect&amp; finalFrame)
-{
-    if (m_webView)
-        [[m_webView fullScreenWindowController] beganEnterFullScreenWithInitialFrame:initialFrame finalFrame:finalFrame];
-}
-
-void WebFullScreenManagerProxy::beganExitFullScreen(const IntRect&amp; initialFrame, const IntRect&amp; finalFrame)
-{
-    if (m_webView)
-        [[m_webView fullScreenWindowController] beganExitFullScreenWithInitialFrame:initialFrame finalFrame:finalFrame];
-}
-
-} // namespace WebKit
-
-#endif
</del></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcessmacWebPageProxyMacmm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -92,15 +92,14 @@
</span><span class="cx"> 
</span><span class="cx"> static String userVisibleWebKitVersionString()
</span><span class="cx"> {
</span><del>-    // If the version is 4 digits long or longer, then the first digit represents
-    // the version of the OS. Our user agent string should not include this first digit,
-    // so strip it off and report the rest as the version. &lt;rdar://problem/4997547&gt;
</del><ins>+    // If the version is longer than 3 digits then the leading digits represent the version of the OS. Our user agent
+    // string should not include the leading digits, so strip them off and report the rest as the version. &lt;rdar://problem/4997547&gt;
</ins><span class="cx">     NSString *fullVersion = [[NSBundle bundleForClass:NSClassFromString(@&quot;WKView&quot;)] objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey];
</span><span class="cx">     NSRange nonDigitRange = [fullVersion rangeOfCharacterFromSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]];
</span><del>-    if (nonDigitRange.location == NSNotFound &amp;&amp; [fullVersion length] &gt;= 4)
-        return [fullVersion substringFromIndex:1];
-    if (nonDigitRange.location != NSNotFound &amp;&amp; nonDigitRange.location &gt;= 4)
-        return [fullVersion substringFromIndex:1];
</del><ins>+    if (nonDigitRange.location == NSNotFound &amp;&amp; fullVersion.length &gt; 3)
+        return [fullVersion substringFromIndex:fullVersion.length - 3];
+    if (nonDigitRange.location != NSNotFound &amp;&amp; nonDigitRange.location &gt; 3)
+        return [fullVersion substringFromIndex:nonDigitRange.location - 3];
</ins><span class="cx">     return fullVersion;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcesssoupWebContextSoupcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/soup/WebContextSoup.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/soup/WebContextSoup.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/soup/WebContextSoup.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -31,8 +31,9 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><del>-void WebContext::platformInitializeNetworkProcess(NetworkProcessCreationParameters&amp;)
</del><ins>+void WebContext::platformInitializeNetworkProcess(NetworkProcessCreationParameters&amp; parameters)
</ins><span class="cx"> {
</span><ins>+    parameters.ignoreTLSErrors = m_ignoreTLSErrors;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcesssoupWebSoupRequestManagerProxycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/soup/WebSoupRequestManagerProxy.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/soup/WebSoupRequestManagerProxy.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/soup/WebSoupRequestManagerProxy.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -42,7 +42,7 @@
</span><span class="cx">     : WebContextSupplement(context)
</span><span class="cx">     , m_loadFailed(false)
</span><span class="cx"> {
</span><del>-    WebContextSupplement::context()-&gt;addMessageReceiver(Messages::WebSoupRequestManagerProxy::messageReceiverName(), this);
</del><ins>+    WebContextSupplement::context()-&gt;addMessageReceiver(Messages::WebSoupRequestManagerProxy::messageReceiverName(), *this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebSoupRequestManagerProxy::~WebSoupRequestManagerProxy()
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2UIProcesssoupWebSoupRequestManagerProxyh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/UIProcess/soup/WebSoupRequestManagerProxy.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/UIProcess/soup/WebSoupRequestManagerProxy.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/UIProcess/soup/WebSoupRequestManagerProxy.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -34,7 +34,7 @@
</span><span class="cx"> class WebContext;
</span><span class="cx"> class WebData;
</span><span class="cx"> 
</span><del>-class WebSoupRequestManagerProxy : public API::TypedObject&lt;API::Object::Type::SoupRequestManager&gt;, public WebContextSupplement, private CoreIPC::MessageReceiver {
</del><ins>+class WebSoupRequestManagerProxy : public API::ObjectImpl&lt;API::Object::Type::SoupRequestManager&gt;, public WebContextSupplement, private CoreIPC::MessageReceiver {
</ins><span class="cx"> public:
</span><span class="cx">     static const char* supplementName();
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebKit2xcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -47,7 +47,7 @@
</span><span class="cx"> /* End PBXAggregateTarget section */
</span><span class="cx"> 
</span><span class="cx"> /* Begin PBXBuildFile section */
</span><del>-                0F174AA3142A4CB70039250F /* WebGeometry.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F174AA2142A4CB60039250F /* WebGeometry.h */; };
</del><ins>+                0F174AA3142A4CB70039250F /* APIGeometry.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F174AA2142A4CB60039250F /* APIGeometry.h */; };
</ins><span class="cx">                 0F174AA7142AAC610039250F /* WKGeometry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F174AA6142AAC610039250F /* WKGeometry.cpp */; };
</span><span class="cx">                 0FB659231208B4DB0044816C /* DrawingAreaInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB659221208B4DB0044816C /* DrawingAreaInfo.h */; };
</span><span class="cx">                 1A043976124D034800FFBFB5 /* PluginProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A043974124D034800FFBFB5 /* PluginProcess.h */; };
</span><span class="lines">@@ -74,7 +74,6 @@
</span><span class="cx">                 1A0F29CC120B37160053D1B9 /* VisitedLinkTable.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A0F29CA120B37160053D1B9 /* VisitedLinkTable.h */; };
</span><span class="cx">                 1A0F29E3120B44420053D1B9 /* VisitedLinkProvider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A0F29E1120B44420053D1B9 /* VisitedLinkProvider.cpp */; };
</span><span class="cx">                 1A0F29E4120B44420053D1B9 /* VisitedLinkProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A0F29E2120B44420053D1B9 /* VisitedLinkProvider.h */; };
</span><del>-                1A119A95127B796200A9ECB1 /* MessageSender.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A119A94127B796200A9ECB1 /* MessageSender.h */; };
</del><span class="cx">                 1A17977F137EE82C00F97D45 /* PluginCreationParameters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A17977D137EE82C00F97D45 /* PluginCreationParameters.cpp */; };
</span><span class="cx">                 1A179780137EE82C00F97D45 /* PluginCreationParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A17977E137EE82C00F97D45 /* PluginCreationParameters.h */; };
</span><span class="cx">                 1A186EEA12EF7618008E5F37 /* LayerTreeHost.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A186EE812EF7618008E5F37 /* LayerTreeHost.h */; };
</span><span class="lines">@@ -161,7 +160,6 @@
</span><span class="cx">                 1A64230912DD09EB00CAAE2C /* DrawingAreaProxyMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A64230712DD09EB00CAAE2C /* DrawingAreaProxyMessages.h */; };
</span><span class="cx">                 1A64245E12DE29A100CAAE2C /* UpdateInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A64245C12DE29A100CAAE2C /* UpdateInfo.h */; };
</span><span class="cx">                 1A64245F12DE29A100CAAE2C /* UpdateInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A64245D12DE29A100CAAE2C /* UpdateInfo.cpp */; };
</span><del>-                1A6506D2175015E700174518 /* MessageSender.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A6506D1175015E700174518 /* MessageSender.cpp */; };
</del><span class="cx">                 1A6F9F9011E13EFC00DB1371 /* CommandLine.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A6F9F8E11E13EFC00DB1371 /* CommandLine.h */; };
</span><span class="cx">                 1A6F9FB711E1408500DB1371 /* CommandLineMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A6F9FB611E1408500DB1371 /* CommandLineMac.cpp */; };
</span><span class="cx">                 1A6FB7AE11E64B6800DB1371 /* PluginView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A6FB7AC11E64B6800DB1371 /* PluginView.cpp */; };
</span><span class="lines">@@ -224,6 +222,8 @@
</span><span class="cx">                 1AA5889211EE70400061B882 /* NetscapePluginStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AA5889011EE70400061B882 /* NetscapePluginStream.h */; };
</span><span class="cx">                 1AA5889311EE70400061B882 /* NetscapePluginStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AA5889111EE70400061B882 /* NetscapePluginStream.cpp */; };
</span><span class="cx">                 1AA9BAE1184FFAC7003B6BC6 /* WeakObjCPtr.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AA9BAE0184FFAC7003B6BC6 /* WeakObjCPtr.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><ins>+                1AAB0379185A7C6A00EDF501 /* MessageSender.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AAB0377185A7C6A00EDF501 /* MessageSender.cpp */; };
+                1AAB037A185A7C6A00EDF501 /* MessageSender.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AAB0378185A7C6A00EDF501 /* MessageSender.h */; };
</ins><span class="cx">                 1AAB4A8D1296F0A20023952F /* SandboxExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AAB4A8C1296F0A20023952F /* SandboxExtension.h */; };
</span><span class="cx">                 1AAB4AAA1296F1540023952F /* SandboxExtensionMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1AAB4AA91296F1540023952F /* SandboxExtensionMac.mm */; };
</span><span class="cx">                 1AABFE3A1829C1ED005B070E /* WKRemoteObjectInterfaceInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AABFE391829C1ED005B070E /* WKRemoteObjectInterfaceInternal.h */; };
</span><span class="lines">@@ -263,6 +263,13 @@
</span><span class="cx">                 1AB8A1F418400B8F00E9AE69 /* WKPageFindClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AB8A1F318400B8F00E9AE69 /* WKPageFindClient.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 1AB8A1F618400B9D00E9AE69 /* WKPageFindMatchesClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AB8A1F518400B9D00E9AE69 /* WKPageFindMatchesClient.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 1AB8A1F818400BB800E9AE69 /* WKPageContextMenuClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AB8A1F718400BB800E9AE69 /* WKPageContextMenuClient.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><ins>+                1AC1336718565B5700F3EC05 /* UserData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AC1336518565B5700F3EC05 /* UserData.cpp */; };
+                1AC1336818565B5700F3EC05 /* UserData.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AC1336618565B5700F3EC05 /* UserData.h */; };
+                1AC1336C18565C7A00F3EC05 /* APIPageHandle.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AC1336B18565C7A00F3EC05 /* APIPageHandle.h */; };
+                1AC1336E18565D2B00F3EC05 /* APIPageHandle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AC1336D18565D2B00F3EC05 /* APIPageHandle.cpp */; };
+                1AC1337118566C7C00F3EC05 /* APIFrameHandle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AC1336F18566C7C00F3EC05 /* APIFrameHandle.cpp */; };
+                1AC1337218566C7C00F3EC05 /* APIFrameHandle.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AC1337018566C7C00F3EC05 /* APIFrameHandle.h */; };
+                1AC133741857C21E00F3EC05 /* APIGeometry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AC133731857C21E00F3EC05 /* APIGeometry.cpp */; };
</ins><span class="cx">                 1AC25FC212A48F6000BD2671 /* PluginProcessShim.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1AC25F8A12A48E0300BD2671 /* PluginProcessShim.mm */; };
</span><span class="cx">                 1AC4C82916B876A90069DCCD /* MessageFlags.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AC4C82816B876A90069DCCD /* MessageFlags.h */; };
</span><span class="cx">                 1AC5FFC2174BFD1B0001483D /* PluginProcessAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AC5FFC1174BFD1B0001483D /* PluginProcessAttributes.h */; };
</span><span class="lines">@@ -325,6 +332,18 @@
</span><span class="cx">                 1CA8B954127C891500576C2B /* WebInspectorMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1C8E2DAD1278C5B200BC7BD0 /* WebInspectorMac.mm */; };
</span><span class="cx">                 1CB75C941701E880009F809F /* DockRight.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 1CB75C931701E880009F809F /* DockRight.pdf */; };
</span><span class="cx">                 1CBC945E16515ED200D68AAE /* DockBottom.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 1CBC945D16515ED200D68AAE /* DockBottom.pdf */; };
</span><ins>+                1F7506AD1859161C00EC0FF7 /* WKWebProcessPlugInFrame.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1F01816A1858DC1500F92884 /* WKWebProcessPlugInFrame.mm */; };
+                1F7506AE1859162200EC0FF7 /* WKWebProcessPlugInHitTestResult.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1F01816D1858DC1600F92884 /* WKWebProcessPlugInHitTestResult.mm */; };
+                1F7506AF1859162800EC0FF7 /* WKWebProcessPlugInNodeHandle.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1F0181701858DC1600F92884 /* WKWebProcessPlugInNodeHandle.mm */; };
+                1F7506B01859162C00EC0FF7 /* WKWebProcessPlugInScriptWorld.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1F0181731858DC1600F92884 /* WKWebProcessPlugInScriptWorld.mm */; };
+                1F7506B11859163700EC0FF7 /* WKWebProcessPlugInFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F0181691858DC1500F92884 /* WKWebProcessPlugInFrame.h */; settings = {ATTRIBUTES = (Public, ); }; };
+                1F7506B21859163E00EC0FF7 /* WKWebProcessPlugInHitTestResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F01816C1858DC1500F92884 /* WKWebProcessPlugInHitTestResult.h */; settings = {ATTRIBUTES = (Public, ); }; };
+                1F7506B31859164500EC0FF7 /* WKWebProcessPlugInNodeHandle.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F01816F1858DC1600F92884 /* WKWebProcessPlugInNodeHandle.h */; settings = {ATTRIBUTES = (Public, ); }; };
+                1F7506B41859164C00EC0FF7 /* WKWebProcessPlugInScriptWorld.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F0181721858DC1600F92884 /* WKWebProcessPlugInScriptWorld.h */; settings = {ATTRIBUTES = (Public, ); }; };
+                1F7506B51859165400EC0FF7 /* WKWebProcessPlugInScriptWorldInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F0181741858DC1600F92884 /* WKWebProcessPlugInScriptWorldInternal.h */; };
+                1F7506B61859165700EC0FF7 /* WKWebProcessPlugInNodeHandleInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F0181711858DC1600F92884 /* WKWebProcessPlugInNodeHandleInternal.h */; };
+                1F7506B71859165A00EC0FF7 /* WKWebProcessPlugInHitTestResultInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F01816E1858DC1600F92884 /* WKWebProcessPlugInHitTestResultInternal.h */; };
+                1F7506B81859165D00EC0FF7 /* WKWebProcessPlugInFrameInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F01816B1858DC1500F92884 /* WKWebProcessPlugInFrameInternal.h */; };
</ins><span class="cx">                 1QQ417CB12C00CCA002BE67B /* TextCheckerCompletion.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CC417C912C00CCA002BE67B /* TextCheckerCompletion.h */; };
</span><span class="cx">                 1ZZ417EF12C00D87002BE67B /* TextCheckerCompletion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1BB417C912C00CCA002BE67B /* TextCheckerCompletion.cpp */; };
</span><span class="cx">                 290F4272172A0C7400939FF0 /* ChildProcessSupplement.h in Headers */ = {isa = PBXBuildFile; fileRef = 290F4271172A0C7400939FF0 /* ChildProcessSupplement.h */; };
</span><span class="lines">@@ -345,6 +364,10 @@
</span><span class="cx">                 29CD55AB128E294F00133C85 /* WKAccessibilityWebPageObject.mm in Sources */ = {isa = PBXBuildFile; fileRef = 29CD55A9128E294F00133C85 /* WKAccessibilityWebPageObject.mm */; };
</span><span class="cx">                 29D55DF1161BF9F10031A2E3 /* WebPageGroupProxyMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 29D55DEF161BF9F10031A2E3 /* WebPageGroupProxyMessageReceiver.cpp */; };
</span><span class="cx">                 29D55DF2161BF9F10031A2E3 /* WebPageGroupProxyMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 29D55DF0161BF9F10031A2E3 /* WebPageGroupProxyMessages.h */; };
</span><ins>+                2D125C5E1857EA05003BA3CB /* ViewGestureController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D125C5C1857EA05003BA3CB /* ViewGestureController.h */; };
+                2D125C5F1857EA05003BA3CB /* ViewGestureController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2D125C5D1857EA05003BA3CB /* ViewGestureController.cpp */; };
+                2D1B5D5D185869C8006C6596 /* ViewGestureControllerMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2D1B5D5B185869C8006C6596 /* ViewGestureControllerMessageReceiver.cpp */; };
+                2D1B5D5E185869C8006C6596 /* ViewGestureControllerMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D1B5D5C185869C8006C6596 /* ViewGestureControllerMessages.h */; };
</ins><span class="cx">                 2D2ADF0916362DD500197E47 /* PDFPluginTextAnnotation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2D2ADF0616362DC700197E47 /* PDFPluginTextAnnotation.mm */; };
</span><span class="cx">                 2D2ADF0B16362DDB00197E47 /* PDFPluginAnnotation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2D2ADF031636243500197E47 /* PDFPluginAnnotation.mm */; };
</span><span class="cx">                 2D2ADF1016364D8200197E47 /* PDFPluginChoiceAnnotation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2D2ADF0E16364D8200197E47 /* PDFPluginChoiceAnnotation.mm */; };
</span><span class="lines">@@ -441,6 +464,9 @@
</span><span class="cx">                 371B32DE184D67490013E2B2 /* WKNSURLProtectionSpace.h in Headers */ = {isa = PBXBuildFile; fileRef = 371B32DC184D67490013E2B2 /* WKNSURLProtectionSpace.h */; };
</span><span class="cx">                 372CAF0B1833FD910040AC27 /* WKNSError.h in Headers */ = {isa = PBXBuildFile; fileRef = 372CAF091833FD910040AC27 /* WKNSError.h */; };
</span><span class="cx">                 372CAF0C1833FD910040AC27 /* WKNSError.mm in Sources */ = {isa = PBXBuildFile; fileRef = 372CAF0A1833FD910040AC27 /* WKNSError.mm */; };
</span><ins>+                373CEAD5185417AE008C363D /* WKNSData.mm in Sources */ = {isa = PBXBuildFile; fileRef = 373CEAD3185417AE008C363D /* WKNSData.mm */; };
+                373CEAD6185417AE008C363D /* WKNSData.h in Headers */ = {isa = PBXBuildFile; fileRef = 373CEAD4185417AE008C363D /* WKNSData.h */; };
+                373CEAD81859553F008C363D /* WKPagePolicyClientInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 373CEAD71859553F008C363D /* WKPagePolicyClientInternal.h */; };
</ins><span class="cx">                 374436881820E7240049579F /* WKObject.mm in Sources */ = {isa = PBXBuildFile; fileRef = 374436871820E7240049579F /* WKObject.mm */; };
</span><span class="cx">                 3760881E150413E900FC82C7 /* WebRenderObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3760881C150413E900FC82C7 /* WebRenderObject.cpp */; };
</span><span class="cx">                 3760881F150413E900FC82C7 /* WebRenderObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 3760881D150413E900FC82C7 /* WebRenderObject.h */; };
</span><span class="lines">@@ -566,9 +592,13 @@
</span><span class="cx">                 515E773318402D510007203F /* UniqueIDBDatabaseIdentifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 515E773118402D510007203F /* UniqueIDBDatabaseIdentifier.cpp */; };
</span><span class="cx">                 515E773418402D510007203F /* UniqueIDBDatabaseIdentifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 515E773218402D510007203F /* UniqueIDBDatabaseIdentifier.h */; };
</span><span class="cx">                 5160BFE113381DF900918999 /* Logging.mac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5160BFE013381DF900918999 /* Logging.mac.mm */; };
</span><ins>+                516311871858446600534647 /* WebCrossThreadCopier.h in Headers */ = {isa = PBXBuildFile; fileRef = 516311861858446600534647 /* WebCrossThreadCopier.h */; };
</ins><span class="cx">                 516319921628980A00E22F00 /* NetworkProcessProxyMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 516319911628980A00E22F00 /* NetworkProcessProxyMac.mm */; };
</span><span class="cx">                 5163199416289A6000E22F00 /* NetworkProcessMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51ACC9341628064800342550 /* NetworkProcessMessageReceiver.cpp */; };
</span><span class="cx">                 5163199516289A6300E22F00 /* NetworkProcessMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 51ACC9351628064800342550 /* NetworkProcessMessages.h */; };
</span><ins>+                51654EFD184EF33F007DC837 /* UniqueIDBDatabaseBackingStoreSQLite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51654EFB184EF33F007DC837 /* UniqueIDBDatabaseBackingStoreSQLite.cpp */; };
+                51654EFE184EF33F007DC837 /* UniqueIDBDatabaseBackingStoreSQLite.h in Headers */ = {isa = PBXBuildFile; fileRef = 51654EFC184EF33F007DC837 /* UniqueIDBDatabaseBackingStoreSQLite.h */; };
+                51654F00184EF34A007DC837 /* UniqueIDBDatabaseBackingStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 51654EFF184EF34A007DC837 /* UniqueIDBDatabaseBackingStore.h */; };
</ins><span class="cx">                 5167EEA0170377BF007681CA /* DiskCacheMonitor.h in Headers */ = {isa = PBXBuildFile; fileRef = 5167EE9E170377BF007681CA /* DiskCacheMonitor.h */; };
</span><span class="cx">                 5167EEA1170377BF007681CA /* DiskCacheMonitor.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5167EE9F170377BF007681CA /* DiskCacheMonitor.mm */; };
</span><span class="cx">                 516A4A5D120A2CCD00C05B7F /* WebError.h in Headers */ = {isa = PBXBuildFile; fileRef = 516A4A5B120A2CCD00C05B7F /* WebError.h */; };
</span><span class="lines">@@ -628,6 +658,8 @@
</span><span class="cx">                 51B15A8513843A3900321AD8 /* EnvironmentUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 51B15A8313843A3900321AD8 /* EnvironmentUtilities.h */; };
</span><span class="cx">                 51B3005012529D0E000B5CA0 /* WebBackForwardListCF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51B3004E12529D0E000B5CA0 /* WebBackForwardListCF.cpp */; };
</span><span class="cx">                 51B3005112529D0E000B5CA0 /* WebPageProxyCF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51B3004F12529D0E000B5CA0 /* WebPageProxyCF.cpp */; };
</span><ins>+                51BA24441858EE3000EA2811 /* AsyncTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 51BA24431858EE3000EA2811 /* AsyncTask.h */; };
+                51BA24461858F55D00EA2811 /* WebCrossThreadCopier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51BA24451858F41500EA2811 /* WebCrossThreadCopier.cpp */; };
</ins><span class="cx">                 51C96118183D294700D2002E /* WebIDBServerConnectionMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51C96116183D294700D2002E /* WebIDBServerConnectionMessageReceiver.cpp */; };
</span><span class="cx">                 51C96119183D294700D2002E /* WebIDBServerConnectionMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 51C96117183D294700D2002E /* WebIDBServerConnectionMessages.h */; };
</span><span class="cx">                 51CBBA0F165219B6005BE8FD /* NetworkResourceLoadParameters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51CBBA0D165219B6005BE8FD /* NetworkResourceLoadParameters.cpp */; };
</span><span class="lines">@@ -879,7 +911,7 @@
</span><span class="cx">                 BC3066BF125A442100E71278 /* WebProcessMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = BC3066BD125A442100E71278 /* WebProcessMessages.h */; };
</span><span class="cx">                 BC306824125A6B9400E71278 /* WebProcessCreationParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = BC306822125A6B9400E71278 /* WebProcessCreationParameters.h */; };
</span><span class="cx">                 BC306825125A6B9400E71278 /* WebProcessCreationParameters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC306823125A6B9400E71278 /* WebProcessCreationParameters.cpp */; };
</span><del>-                BC33DD681238464600360F3F /* WebNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = BC33DD671238464600360F3F /* WebNumber.h */; };
</del><ins>+                BC33DD681238464600360F3F /* APINumber.h in Headers */ = {isa = PBXBuildFile; fileRef = BC33DD671238464600360F3F /* APINumber.h */; };
</ins><span class="cx">                 BC33E0D112408E8600360F3F /* InjectedBundleRangeHandle.h in Headers */ = {isa = PBXBuildFile; fileRef = BC33E0CF12408E8600360F3F /* InjectedBundleRangeHandle.h */; };
</span><span class="cx">                 BC33E0D212408E8600360F3F /* InjectedBundleRangeHandle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC33E0D012408E8600360F3F /* InjectedBundleRangeHandle.cpp */; };
</span><span class="cx">                 BC39C4351626366F008BC689 /* WKDOMRange.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC39C4331626366F008BC689 /* WKDOMRange.mm */; };
</span><span class="lines">@@ -1036,7 +1068,6 @@
</span><span class="cx">                 BC9099801256A98200083756 /* WKStringPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = BC90997F1256A98200083756 /* WKStringPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 BC90A1D2122DD55E00CC8C50 /* WebURLResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = BC90A1D0122DD55E00CC8C50 /* WebURLResponse.h */; };
</span><span class="cx">                 BC90A1D3122DD55E00CC8C50 /* WebURLResponse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC90A1D1122DD55E00CC8C50 /* WebURLResponse.cpp */; };
</span><del>-                BC90A1D7122DD66A00CC8C50 /* WebURLResponseMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC90A1D5122DD66A00CC8C50 /* WebURLResponseMac.mm */; };
</del><span class="cx">                 BC963D6B113DD19200574BE2 /* WebPage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC963D6A113DD19200574BE2 /* WebPage.cpp */; };
</span><span class="cx">                 BC963D6E113DD1A500574BE2 /* WebPageMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC963D6D113DD1A500574BE2 /* WebPageMac.mm */; };
</span><span class="cx">                 BC989D81161A7E5D000D46D3 /* WKWebProcessPlugIn.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC989D7F161A7E5B000D46D3 /* WKWebProcessPlugIn.mm */; };
</span><span class="lines">@@ -1142,7 +1173,6 @@
</span><span class="cx">                 BCE17B7E1381F1170012A641 /* WKPagePrivateMac.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE17B7C1381F1170012A641 /* WKPagePrivateMac.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 BCE2315D122C30CA00D5C35A /* WebURLRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE2315B122C30CA00D5C35A /* WebURLRequest.h */; };
</span><span class="cx">                 BCE2315E122C30CA00D5C35A /* WebURLRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCE2315C122C30CA00D5C35A /* WebURLRequest.cpp */; };
</span><del>-                BCE231C2122C466E00D5C35A /* WebURLRequestMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = BCE231C0122C466E00D5C35A /* WebURLRequestMac.mm */; };
</del><span class="cx">                 BCE23263122C6CF300D5C35A /* WebCoreArgumentCodersMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = BCE23262122C6CF300D5C35A /* WebCoreArgumentCodersMac.mm */; };
</span><span class="cx">                 BCE469531214E6CB000B98EB /* WebFormClient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCE4694F1214E6CB000B98EB /* WebFormClient.cpp */; };
</span><span class="cx">                 BCE469541214E6CB000B98EB /* WebFormClient.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE469501214E6CB000B98EB /* WebFormClient.h */; };
</span><span class="lines">@@ -1169,8 +1199,6 @@
</span><span class="cx">                 BCF18638167D071E00A1A85A /* CacheModel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCF18637167D071E00A1A85A /* CacheModel.cpp */; };
</span><span class="cx">                 BCF4DE23168E4BD500C94AFC /* NetworkProcessSupplement.h in Headers */ = {isa = PBXBuildFile; fileRef = BCF4DE22168E4BD500C94AFC /* NetworkProcessSupplement.h */; };
</span><span class="cx">                 BCF4DE25168FA44800C94AFC /* WebContextSupplement.h in Headers */ = {isa = PBXBuildFile; fileRef = BCF4DE24168FA44800C94AFC /* WebContextSupplement.h */; };
</span><del>-                BCF505E71243047B005955AE /* CertificateInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = BCF505E51243047B005955AE /* CertificateInfo.h */; };
-                BCF505E81243047B005955AE /* CertificateInfo.mm in Sources */ = {isa = PBXBuildFile; fileRef = BCF505E61243047B005955AE /* CertificateInfo.mm */; };
</del><span class="cx">                 BCF50728124329AA005955AE /* WebCertificateInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = BCF50726124329AA005955AE /* WebCertificateInfo.h */; };
</span><span class="cx">                 BCF69F861176CD6F00471A52 /* WebHistoryClient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCF69F841176CD6F00471A52 /* WebHistoryClient.cpp */; };
</span><span class="cx">                 BCF69F871176CD6F00471A52 /* WebHistoryClient.h in Headers */ = {isa = PBXBuildFile; fileRef = BCF69F851176CD6F00471A52 /* WebHistoryClient.h */; };
</span><span class="lines">@@ -1226,7 +1254,6 @@
</span><span class="cx">                 CDC3831017212440008A2FC3 /* CookieStorageShim.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDC3830D1721242D008A2FC3 /* CookieStorageShim.cpp */; };
</span><span class="cx">                 CDCA85C8132ABA4E00E961DF /* WKFullScreenWindowController.mm in Sources */ = {isa = PBXBuildFile; fileRef = CDCA85C6132ABA4E00E961DF /* WKFullScreenWindowController.mm */; };
</span><span class="cx">                 CDCA85C9132ABA4E00E961DF /* WKFullScreenWindowController.h in Headers */ = {isa = PBXBuildFile; fileRef = CDCA85C7132ABA4E00E961DF /* WKFullScreenWindowController.h */; };
</span><del>-                CDCA85EE132AD70100E961DF /* WebFullScreenManagerProxyMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = CDCA85DE132AD05300E961DF /* WebFullScreenManagerProxyMac.mm */; };
</del><span class="cx">                 CDDF622F1728A20D001EC01F /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BCD0042C110C1E27003B8A67 /* CoreServices.framework */; };
</span><span class="cx">                 CEDA12E2152CD1AE00D9E08D /* WebAlternativeTextClient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CEDA12DF152CCAE800D9E08D /* WebAlternativeTextClient.cpp */; };
</span><span class="cx">                 CEDA12E3152CD1B300D9E08D /* WebAlternativeTextClient.h in Headers */ = {isa = PBXBuildFile; fileRef = CEDA12DE152CCAE800D9E08D /* WebAlternativeTextClient.h */; };
</span><span class="lines">@@ -1543,7 +1570,7 @@
</span><span class="cx"> /* Begin PBXFileReference section */
</span><span class="cx">                 0867D6A5FE840307C02AAC07 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = &quot;&lt;absolute&gt;&quot;; };
</span><span class="cx">                 089C1667FE841158C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                0F174AA2142A4CB60039250F /* WebGeometry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebGeometry.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><ins>+                0F174AA2142A4CB60039250F /* APIGeometry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APIGeometry.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 0F174AA6142AAC610039250F /* WKGeometry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKGeometry.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 0FB659221208B4DB0044816C /* DrawingAreaInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DrawingAreaInfo.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = &quot;&lt;absolute&gt;&quot;; };
</span><span class="lines">@@ -1574,7 +1601,6 @@
</span><span class="cx">                 1A0F29CA120B37160053D1B9 /* VisitedLinkTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VisitedLinkTable.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1A0F29E1120B44420053D1B9 /* VisitedLinkProvider.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VisitedLinkProvider.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1A0F29E2120B44420053D1B9 /* VisitedLinkProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VisitedLinkProvider.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                1A119A94127B796200A9ECB1 /* MessageSender.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MessageSender.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 1A17635416B1D5D000D88FD6 /* StorageNamespaceImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StorageNamespaceImpl.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1A17635516B1D5D000D88FD6 /* StorageNamespaceImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StorageNamespaceImpl.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1A17977D137EE82C00F97D45 /* PluginCreationParameters.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PluginCreationParameters.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -1673,7 +1699,6 @@
</span><span class="cx">                 1A64230712DD09EB00CAAE2C /* DrawingAreaProxyMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DrawingAreaProxyMessages.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1A64245C12DE29A100CAAE2C /* UpdateInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UpdateInfo.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1A64245D12DE29A100CAAE2C /* UpdateInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UpdateInfo.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                1A6506D1175015E700174518 /* MessageSender.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MessageSender.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 1A6F9F8E11E13EFC00DB1371 /* CommandLine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CommandLine.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1A6F9FB611E1408500DB1371 /* CommandLineMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CommandLineMac.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1A6FB7AC11E64B6800DB1371 /* PluginView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PluginView.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -1745,6 +1770,8 @@
</span><span class="cx">                 1AA5889011EE70400061B882 /* NetscapePluginStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetscapePluginStream.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1AA5889111EE70400061B882 /* NetscapePluginStream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NetscapePluginStream.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1AA9BAE0184FFAC7003B6BC6 /* WeakObjCPtr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WeakObjCPtr.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                1AAB0377185A7C6A00EDF501 /* MessageSender.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MessageSender.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1AAB0378185A7C6A00EDF501 /* MessageSender.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MessageSender.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 1AAB4A8C1296F0A20023952F /* SandboxExtension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SandboxExtension.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1AAB4AA91296F1540023952F /* SandboxExtensionMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SandboxExtensionMac.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1AABFE391829C1ED005B070E /* WKRemoteObjectInterfaceInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKRemoteObjectInterfaceInternal.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -1787,6 +1814,13 @@
</span><span class="cx">                 1AB8A1F318400B8F00E9AE69 /* WKPageFindClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKPageFindClient.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1AB8A1F518400B9D00E9AE69 /* WKPageFindMatchesClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKPageFindMatchesClient.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1AB8A1F718400BB800E9AE69 /* WKPageContextMenuClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKPageContextMenuClient.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                1AC1336518565B5700F3EC05 /* UserData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UserData.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1AC1336618565B5700F3EC05 /* UserData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserData.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1AC1336B18565C7A00F3EC05 /* APIPageHandle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APIPageHandle.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1AC1336D18565D2B00F3EC05 /* APIPageHandle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = APIPageHandle.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1AC1336F18566C7C00F3EC05 /* APIFrameHandle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = APIFrameHandle.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1AC1337018566C7C00F3EC05 /* APIFrameHandle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APIFrameHandle.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1AC133731857C21E00F3EC05 /* APIGeometry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = APIGeometry.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 1AC25F8912A48E0300BD2671 /* PluginProcessShim.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PluginProcessShim.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1AC25F8A12A48E0300BD2671 /* PluginProcessShim.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PluginProcessShim.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1AC25FB012A48EA700BD2671 /* PluginProcessShim.dylib */ = {isa = PBXFileReference; explicitFileType = &quot;compiled.mach-o.dylib&quot;; includeInIndex = 0; path = PluginProcessShim.dylib; sourceTree = BUILT_PRODUCTS_DIR; };
</span><span class="lines">@@ -1856,6 +1890,18 @@
</span><span class="cx">                 1CB75C931701E880009F809F /* DockRight.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; name = DockRight.pdf; path = Resources/DockRight.pdf; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1CBC945D16515ED200D68AAE /* DockBottom.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; name = DockBottom.pdf; path = Resources/DockBottom.pdf; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1CC417C912C00CCA002BE67B /* TextCheckerCompletion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextCheckerCompletion.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                1F0181691858DC1500F92884 /* WKWebProcessPlugInFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKWebProcessPlugInFrame.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1F01816A1858DC1500F92884 /* WKWebProcessPlugInFrame.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKWebProcessPlugInFrame.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1F01816B1858DC1500F92884 /* WKWebProcessPlugInFrameInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKWebProcessPlugInFrameInternal.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1F01816C1858DC1500F92884 /* WKWebProcessPlugInHitTestResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKWebProcessPlugInHitTestResult.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1F01816D1858DC1600F92884 /* WKWebProcessPlugInHitTestResult.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKWebProcessPlugInHitTestResult.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1F01816E1858DC1600F92884 /* WKWebProcessPlugInHitTestResultInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKWebProcessPlugInHitTestResultInternal.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1F01816F1858DC1600F92884 /* WKWebProcessPlugInNodeHandle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKWebProcessPlugInNodeHandle.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1F0181701858DC1600F92884 /* WKWebProcessPlugInNodeHandle.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKWebProcessPlugInNodeHandle.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1F0181711858DC1600F92884 /* WKWebProcessPlugInNodeHandleInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKWebProcessPlugInNodeHandleInternal.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1F0181721858DC1600F92884 /* WKWebProcessPlugInScriptWorld.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKWebProcessPlugInScriptWorld.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1F0181731858DC1600F92884 /* WKWebProcessPlugInScriptWorld.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKWebProcessPlugInScriptWorld.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1F0181741858DC1600F92884 /* WKWebProcessPlugInScriptWorldInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKWebProcessPlugInScriptWorldInternal.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 290F4271172A0C7400939FF0 /* ChildProcessSupplement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChildProcessSupplement.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 293EBEA91627D9C9005F89F1 /* WKDOMText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKDOMText.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 293EBEAA1627D9C9005F89F1 /* WKDOMText.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKDOMText.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -1877,6 +1923,11 @@
</span><span class="cx">                 29D55DEE161BF8780031A2E3 /* WebPageGroupProxy.messages.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = WebPageGroupProxy.messages.in; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 29D55DEF161BF9F10031A2E3 /* WebPageGroupProxyMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebPageGroupProxyMessageReceiver.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 29D55DF0161BF9F10031A2E3 /* WebPageGroupProxyMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebPageGroupProxyMessages.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                2D125C5C1857EA05003BA3CB /* ViewGestureController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ViewGestureController.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2D125C5D1857EA05003BA3CB /* ViewGestureController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ViewGestureController.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2D1B5D5A18586599006C6596 /* ViewGestureController.messages.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = ViewGestureController.messages.in; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2D1B5D5B185869C8006C6596 /* ViewGestureControllerMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ViewGestureControllerMessageReceiver.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2D1B5D5C185869C8006C6596 /* ViewGestureControllerMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ViewGestureControllerMessages.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 2D2ADF021636243500197E47 /* PDFPluginAnnotation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PDFPluginAnnotation.h; path = PDF/PDFPluginAnnotation.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2D2ADF031636243500197E47 /* PDFPluginAnnotation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = PDFPluginAnnotation.mm; path = PDF/PDFPluginAnnotation.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2D2ADF0516362DC700197E47 /* PDFPluginTextAnnotation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PDFPluginTextAnnotation.h; path = PDF/PDFPluginTextAnnotation.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -1989,6 +2040,9 @@
</span><span class="cx">                 371B32DC184D67490013E2B2 /* WKNSURLProtectionSpace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKNSURLProtectionSpace.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 372CAF091833FD910040AC27 /* WKNSError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKNSError.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 372CAF0A1833FD910040AC27 /* WKNSError.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKNSError.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                373CEAD3185417AE008C363D /* WKNSData.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKNSData.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                373CEAD4185417AE008C363D /* WKNSData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKNSData.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                373CEAD71859553F008C363D /* WKPagePolicyClientInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKPagePolicyClientInternal.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 374436871820E7240049579F /* WKObject.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKObject.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 3760881C150413E900FC82C7 /* WebRenderObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebRenderObject.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 3760881D150413E900FC82C7 /* WebRenderObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebRenderObject.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -2124,7 +2178,11 @@
</span><span class="cx">                 515E773118402D510007203F /* UniqueIDBDatabaseIdentifier.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UniqueIDBDatabaseIdentifier.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 515E773218402D510007203F /* UniqueIDBDatabaseIdentifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UniqueIDBDatabaseIdentifier.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 5160BFE013381DF900918999 /* Logging.mac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = Logging.mac.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                516311861858446600534647 /* WebCrossThreadCopier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebCrossThreadCopier.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 516319911628980A00E22F00 /* NetworkProcessProxyMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = NetworkProcessProxyMac.mm; path = mac/NetworkProcessProxyMac.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                51654EFB184EF33F007DC837 /* UniqueIDBDatabaseBackingStoreSQLite.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UniqueIDBDatabaseBackingStoreSQLite.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                51654EFC184EF33F007DC837 /* UniqueIDBDatabaseBackingStoreSQLite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UniqueIDBDatabaseBackingStoreSQLite.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                51654EFF184EF34A007DC837 /* UniqueIDBDatabaseBackingStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UniqueIDBDatabaseBackingStore.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 5167EE9E170377BF007681CA /* DiskCacheMonitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DiskCacheMonitor.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 5167EE9F170377BF007681CA /* DiskCacheMonitor.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DiskCacheMonitor.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 516A4A5B120A2CCD00C05B7F /* WebError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebError.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -2190,6 +2248,8 @@
</span><span class="cx">                 51B15A8313843A3900321AD8 /* EnvironmentUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EnvironmentUtilities.h; path = unix/EnvironmentUtilities.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51B3004E12529D0E000B5CA0 /* WebBackForwardListCF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebBackForwardListCF.cpp; path = cf/WebBackForwardListCF.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51B3004F12529D0E000B5CA0 /* WebPageProxyCF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebPageProxyCF.cpp; path = cf/WebPageProxyCF.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                51BA24431858EE3000EA2811 /* AsyncTask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AsyncTask.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                51BA24451858F41500EA2811 /* WebCrossThreadCopier.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WebCrossThreadCopier.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 51C96115183C95FF00D2002E /* WebIDBServerConnection.messages.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = WebIDBServerConnection.messages.in; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51C96116183D294700D2002E /* WebIDBServerConnectionMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebIDBServerConnectionMessageReceiver.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51C96117183D294700D2002E /* WebIDBServerConnectionMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebIDBServerConnectionMessages.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -2470,7 +2530,7 @@
</span><span class="cx">                 BC329DA616ACE5A900316DE2 /* WKWebArchive.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKWebArchive.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 BC329DA916ACE5BF00316DE2 /* WKWebArchiveResource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKWebArchiveResource.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 BC329DAA16ACE5C000316DE2 /* WKWebArchiveResource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKWebArchiveResource.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                BC33DD671238464600360F3F /* WebNumber.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebNumber.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><ins>+                BC33DD671238464600360F3F /* APINumber.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APINumber.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 BC33E0CF12408E8600360F3F /* InjectedBundleRangeHandle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InjectedBundleRangeHandle.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 BC33E0D012408E8600360F3F /* InjectedBundleRangeHandle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InjectedBundleRangeHandle.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 BC39C4331626366F008BC689 /* WKDOMRange.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKDOMRange.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -2631,7 +2691,6 @@
</span><span class="cx">                 BC90997F1256A98200083756 /* WKStringPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKStringPrivate.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 BC90A1D0122DD55E00CC8C50 /* WebURLResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebURLResponse.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 BC90A1D1122DD55E00CC8C50 /* WebURLResponse.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebURLResponse.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                BC90A1D5122DD66A00CC8C50 /* WebURLResponseMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebURLResponseMac.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 BC963D6A113DD19200574BE2 /* WebPage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebPage.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 BC963D6D113DD1A500574BE2 /* WebPageMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebPageMac.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 BC989D7F161A7E5B000D46D3 /* WKWebProcessPlugIn.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKWebProcessPlugIn.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -2740,7 +2799,6 @@
</span><span class="cx">                 BCE17B7C1381F1170012A641 /* WKPagePrivateMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WKPagePrivateMac.h; path = mac/WKPagePrivateMac.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 BCE2315B122C30CA00D5C35A /* WebURLRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebURLRequest.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 BCE2315C122C30CA00D5C35A /* WebURLRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebURLRequest.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                BCE231C0122C466E00D5C35A /* WebURLRequestMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebURLRequestMac.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 BCE23262122C6CF300D5C35A /* WebCoreArgumentCodersMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebCoreArgumentCodersMac.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 BCE4694F1214E6CB000B98EB /* WebFormClient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebFormClient.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 BCE469501214E6CB000B98EB /* WebFormClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebFormClient.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -2773,8 +2831,6 @@
</span><span class="cx">                 BCF18637167D071E00A1A85A /* CacheModel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CacheModel.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 BCF4DE22168E4BD500C94AFC /* NetworkProcessSupplement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NetworkProcessSupplement.h; path = Network/NetworkProcessSupplement.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 BCF4DE24168FA44800C94AFC /* WebContextSupplement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebContextSupplement.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                BCF505E51243047B005955AE /* CertificateInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CertificateInfo.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                BCF505E61243047B005955AE /* CertificateInfo.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CertificateInfo.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 BCF5068412431861005955AE /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = /System/Library/Frameworks/Security.framework; sourceTree = &quot;&lt;absolute&gt;&quot;; };
</span><span class="cx">                 BCF50726124329AA005955AE /* WebCertificateInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebCertificateInfo.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 BCF69F841176CD6F00471A52 /* WebHistoryClient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebHistoryClient.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -2839,7 +2895,6 @@
</span><span class="cx">                 CDCA85C6132ABA4E00E961DF /* WKFullScreenWindowController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKFullScreenWindowController.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 CDCA85C7132ABA4E00E961DF /* WKFullScreenWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKFullScreenWindowController.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 CDCA85D4132AC2B300E961DF /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = &quot;&lt;absolute&gt;&quot;; };
</span><del>-                CDCA85DE132AD05300E961DF /* WebFullScreenManagerProxyMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebFullScreenManagerProxyMac.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 CEDA12DE152CCAE800D9E08D /* WebAlternativeTextClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebAlternativeTextClient.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 CEDA12DF152CCAE800D9E08D /* WebAlternativeTextClient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebAlternativeTextClient.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 D3B9484211FF4B6500032B39 /* WebPopupMenu.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebPopupMenu.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -3411,12 +3466,20 @@
</span><span class="cx">                                 BC64696D11DBE603006455B0 /* APIArray.cpp */,
</span><span class="cx">                                 BC64696E11DBE603006455B0 /* APIArray.h */,
</span><span class="cx">                                 1A3DD205125E5A2F004515E6 /* APIClient.h */,
</span><ins>+                                1AC1336F18566C7C00F3EC05 /* APIFrameHandle.cpp */,
+                                1AC1337018566C7C00F3EC05 /* APIFrameHandle.h */,
+                                1AC133731857C21E00F3EC05 /* APIGeometry.cpp */,
+                                0F174AA2142A4CB60039250F /* APIGeometry.h */,
+                                BC33DD671238464600360F3F /* APINumber.h */,
</ins><span class="cx">                                 B63403F814910D57001070B5 /* APIObject.cpp */,
</span><span class="cx">                                 BCF04C8C11FF9B7D00F86A58 /* APIObject.h */,
</span><ins>+                                1AC1336D18565D2B00F3EC05 /* APIPageHandle.cpp */,
+                                1AC1336B18565C7A00F3EC05 /* APIPageHandle.h */,
</ins><span class="cx">                                 A7D792D51767CB6E00881CBE /* ActivityAssertion.cpp */,
</span><span class="cx">                                 A7D792D41767CB0900881CBE /* ActivityAssertion.h */,
</span><span class="cx">                                 515E7725183DD6F60007203F /* AsyncRequest.cpp */,
</span><span class="cx">                                 515E7726183DD6F60007203F /* AsyncRequest.h */,
</span><ins>+                                51BA24431858EE3000EA2811 /* AsyncTask.h */,
</ins><span class="cx">                                 4F601430155C5A32001FBDE0 /* BlockingResponseMap.h */,
</span><span class="cx">                                 BCF18637167D071E00A1A85A /* CacheModel.cpp */,
</span><span class="cx">                                 BC3065F91259344E00E71278 /* CacheModel.h */,
</span><span class="lines">@@ -3472,6 +3535,8 @@
</span><span class="cx">                                 1A5E4DA312D3BD3D0099A2BB /* TextCheckerState.h */,
</span><span class="cx">                                 1A64245D12DE29A100CAAE2C /* UpdateInfo.cpp */,
</span><span class="cx">                                 1A64245C12DE29A100CAAE2C /* UpdateInfo.h */,
</span><ins>+                                1AC1336518565B5700F3EC05 /* UserData.cpp */,
+                                1AC1336618565B5700F3EC05 /* UserData.h */,
</ins><span class="cx">                                 BCB0B0DF12305AB100B1341E /* UserMessageCoders.h */,
</span><span class="cx">                                 865E0484181A090D001F72F2 /* ViewState.h */,
</span><span class="cx">                                 1A0F29C9120B37160053D1B9 /* VisitedLinkTable.cpp */,
</span><span class="lines">@@ -3494,6 +3559,8 @@
</span><span class="cx">                                 510FBB991288C95E00AFFDF4 /* WebContextMenuItemData.h */,
</span><span class="cx">                                 939AE7651316E99C00AE06A6 /* WebCoreArgumentCoders.cpp */,
</span><span class="cx">                                 BC1DD7B1114DC396005ADAF3 /* WebCoreArgumentCoders.h */,
</span><ins>+                                51BA24451858F41500EA2811 /* WebCrossThreadCopier.cpp */,
+                                516311861858446600534647 /* WebCrossThreadCopier.h */,
</ins><span class="cx">                                 51578B821209ECEF00A37C4A /* WebData.h */,
</span><span class="cx">                                 BC575612126E0138006F0F12 /* WebError.cpp */,
</span><span class="cx">                                 516A4A5B120A2CCD00C05B7F /* WebError.h */,
</span><span class="lines">@@ -3504,7 +3571,6 @@
</span><span class="cx">                                 1A90C1ED1264FD50003E44D4 /* WebFindOptions.h */,
</span><span class="cx">                                 BC0E607212D6BC200012A72A /* WebGeolocationPosition.cpp */,
</span><span class="cx">                                 BC0E607112D6BC200012A72A /* WebGeolocationPosition.h */,
</span><del>-                                0F174AA2142A4CB60039250F /* WebGeometry.h */,
</del><span class="cx">                                 7801C095142290C400FAF9AF /* WebHitTestResult.cpp */,
</span><span class="cx">                                 7801C096142290C400FAF9AF /* WebHitTestResult.h */,
</span><span class="cx">                                 BCCF6ABA12C91EF9008F9C35 /* WebImage.cpp */,
</span><span class="lines">@@ -3516,7 +3582,6 @@
</span><span class="cx">                                 905620E912BC248B000799B6 /* WebMemorySampler.h */,
</span><span class="cx">                                 C0337DAF127A28D0008FF4F4 /* WebMouseEvent.cpp */,
</span><span class="cx">                                 BCF69F981176CED600471A52 /* WebNavigationDataStore.h */,
</span><del>-                                BC33DD671238464600360F3F /* WebNumber.h */,
</del><span class="cx">                                 BC857FB412B830E600EDEB2E /* WebOpenPanelParameters.cpp */,
</span><span class="cx">                                 BC857FB312B830E600EDEB2E /* WebOpenPanelParameters.h */,
</span><span class="cx">                                 C06C6093124C14430001682F /* WebPageCreationParameters.cpp */,
</span><span class="lines">@@ -3615,8 +3680,6 @@
</span><span class="cx">                                 1A3EED11161A53D600AEB4F5 /* MessageReceiver.h */,
</span><span class="cx">                                 1A3EED0C161A535300AEB4F5 /* MessageReceiverMap.cpp */,
</span><span class="cx">                                 1A3EED0D161A535300AEB4F5 /* MessageReceiverMap.h */,
</span><del>-                                1A6506D1175015E700174518 /* MessageSender.cpp */,
-                                1A119A94127B796200A9ECB1 /* MessageSender.h */,
</del><span class="cx">                         );
</span><span class="cx">                         path = CoreIPC;
</span><span class="cx">                         sourceTree = &quot;&lt;group&gt;&quot;;
</span><span class="lines">@@ -3636,6 +3699,8 @@
</span><span class="cx">                 1AE00D6818327C1200087DD7 /* IPC */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><ins>+                                1AAB0377185A7C6A00EDF501 /* MessageSender.cpp */,
+                                1AAB0378185A7C6A00EDF501 /* MessageSender.h */,
</ins><span class="cx">                                 1AC7537D183BE50F0072CB15 /* DataReference.cpp */,
</span><span class="cx">                                 1AC7537E183BE50F0072CB15 /* DataReference.h */,
</span><span class="cx">                                 1AE00D6918327C1200087DD7 /* StringReference.cpp */,
</span><span class="lines">@@ -3673,6 +3738,25 @@
</span><span class="cx">                         path = mac;
</span><span class="cx">                         sourceTree = &quot;&lt;group&gt;&quot;;
</span><span class="cx">                 };
</span><ins>+                1F0181681858DC1500F92884 /* Cocoa */ = {
+                        isa = PBXGroup;
+                        children = (
+                                1F0181691858DC1500F92884 /* WKWebProcessPlugInFrame.h */,
+                                1F01816A1858DC1500F92884 /* WKWebProcessPlugInFrame.mm */,
+                                1F01816B1858DC1500F92884 /* WKWebProcessPlugInFrameInternal.h */,
+                                1F01816C1858DC1500F92884 /* WKWebProcessPlugInHitTestResult.h */,
+                                1F01816D1858DC1600F92884 /* WKWebProcessPlugInHitTestResult.mm */,
+                                1F01816E1858DC1600F92884 /* WKWebProcessPlugInHitTestResultInternal.h */,
+                                1F01816F1858DC1600F92884 /* WKWebProcessPlugInNodeHandle.h */,
+                                1F0181701858DC1600F92884 /* WKWebProcessPlugInNodeHandle.mm */,
+                                1F0181711858DC1600F92884 /* WKWebProcessPlugInNodeHandleInternal.h */,
+                                1F0181721858DC1600F92884 /* WKWebProcessPlugInScriptWorld.h */,
+                                1F0181731858DC1600F92884 /* WKWebProcessPlugInScriptWorld.mm */,
+                                1F0181741858DC1600F92884 /* WKWebProcessPlugInScriptWorldInternal.h */,
+                        );
+                        path = Cocoa;
+                        sourceTree = &quot;&lt;group&gt;&quot;;
+                };
</ins><span class="cx">                 2989A40E167D1813004F96D2 /* CustomProtocols */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><span class="lines">@@ -3829,6 +3913,8 @@
</span><span class="cx">                                 378E1A3B181ED6FF0031007A /* APIObject.mm */,
</span><span class="cx">                                 37C4C0921814B3AF003688B9 /* WKNSArray.h */,
</span><span class="cx">                                 37C4C0911814B3AF003688B9 /* WKNSArray.mm */,
</span><ins>+                                373CEAD4185417AE008C363D /* WKNSData.h */,
+                                373CEAD3185417AE008C363D /* WKNSData.mm */,
</ins><span class="cx">                                 371A19401824D29300F32A5E /* WKNSDictionary.h */,
</span><span class="cx">                                 371A193F1824D29300F32A5E /* WKNSDictionary.mm */,
</span><span class="cx">                                 372CAF091833FD910040AC27 /* WKNSError.h */,
</span><span class="lines">@@ -4016,6 +4102,15 @@
</span><span class="cx">                         name = mac;
</span><span class="cx">                         sourceTree = &quot;&lt;group&gt;&quot;;
</span><span class="cx">                 };
</span><ins>+                51654EF0184EF241007DC837 /* sqlite */ = {
+                        isa = PBXGroup;
+                        children = (
+                                51654EFB184EF33F007DC837 /* UniqueIDBDatabaseBackingStoreSQLite.cpp */,
+                                51654EFC184EF33F007DC837 /* UniqueIDBDatabaseBackingStoreSQLite.h */,
+                        );
+                        path = sqlite;
+                        sourceTree = &quot;&lt;group&gt;&quot;;
+                };
</ins><span class="cx">                 517DD5BB180DA7C40081660B /* Databases */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><span class="lines">@@ -4140,11 +4235,13 @@
</span><span class="cx">                 51E351F9180F5CF600E53BE9 /* IndexedDB */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><ins>+                                51654EF0184EF241007DC837 /* sqlite */,
</ins><span class="cx">                                 51D0D42E183B34130097041D /* DatabaseProcessIDBConnection.cpp */,
</span><span class="cx">                                 51D0D42F183B34130097041D /* DatabaseProcessIDBConnection.h */,
</span><span class="cx">                                 51D0D430183B34130097041D /* DatabaseProcessIDBConnection.messages.in */,
</span><span class="cx">                                 515E772D184015800007203F /* UniqueIDBDatabase.cpp */,
</span><span class="cx">                                 515E772E184015800007203F /* UniqueIDBDatabase.h */,
</span><ins>+                                51654EFF184EF34A007DC837 /* UniqueIDBDatabaseBackingStore.h */,
</ins><span class="cx">                                 515E773118402D510007203F /* UniqueIDBDatabaseIdentifier.cpp */,
</span><span class="cx">                                 515E773218402D510007203F /* UniqueIDBDatabaseIdentifier.h */,
</span><span class="cx">                         );
</span><span class="lines">@@ -4644,6 +4741,7 @@
</span><span class="cx">                                 BC7B633512A45ABA00D174A4 /* WKPageGroup.h */,
</span><span class="cx">                                 1AB8A1EB1840080900E9AE69 /* WKPageLoaderClient.h */,
</span><span class="cx">                                 1AB8A1ED18400ACB00E9AE69 /* WKPagePolicyClient.h */,
</span><ins>+                                373CEAD71859553F008C363D /* WKPagePolicyClientInternal.h */,
</ins><span class="cx">                                 BC177464118B9FF4007D9E9A /* WKPagePrivate.h */,
</span><span class="cx">                                 1AB8A1F118400B6200E9AE69 /* WKPageUIClient.h */,
</span><span class="cx">                                 1AC86FF1130B46D3002C1257 /* WKPluginSiteDataManager.cpp */,
</span><span class="lines">@@ -4748,8 +4846,6 @@
</span><span class="cx">                                 C574A58012E66681002DFE98 /* PasteboardTypes.mm */,
</span><span class="cx">                                 E19582D2153CBFD700B60875 /* PDFKitImports.h */,
</span><span class="cx">                                 E19582D4153CC05300B60875 /* PDFKitImports.mm */,
</span><del>-                                BCF505E51243047B005955AE /* CertificateInfo.h */,
-                                BCF505E61243047B005955AE /* CertificateInfo.mm */,
</del><span class="cx">                                 E1CC1B8F12D7EADF00625838 /* PrintInfoMac.mm */,
</span><span class="cx">                                 2D47B56A1810714E003A3AEE /* RemoteLayerBackingStore.mm */,
</span><span class="cx">                                 2D47B56B1810714E003A3AEE /* RemoteLayerBackingStore.h */,
</span><span class="lines">@@ -4773,8 +4869,6 @@
</span><span class="cx">                                 BC111B5B112F629800337BAB /* WebEventFactory.h */,
</span><span class="cx">                                 BC111B5C112F629800337BAB /* WebEventFactory.mm */,
</span><span class="cx">                                 905620E512BC2476000799B6 /* WebMemorySampler.mac.mm */,
</span><del>-                                BCE231C0122C466E00D5C35A /* WebURLRequestMac.mm */,
-                                BC90A1D5122DD66A00CC8C50 /* WebURLResponseMac.mm */,
</del><span class="cx">                         );
</span><span class="cx">                         path = mac;
</span><span class="cx">                         sourceTree = &quot;&lt;group&gt;&quot;;
</span><span class="lines">@@ -4844,6 +4938,7 @@
</span><span class="cx">                 BC204EE711C83EAD008F3375 /* API */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><ins>+                                1F0181681858DC1500F92884 /* Cocoa */,
</ins><span class="cx">                                 BC204EE811C83EB7008F3375 /* c */,
</span><span class="cx">                                 BC989D4516181691000D46D3 /* mac */,
</span><span class="cx">                         );
</span><span class="lines">@@ -5232,13 +5327,15 @@
</span><span class="cx">                                 1AA417ED12C00D87002BE67B /* TextCheckerMac.mm */,
</span><span class="cx">                                 1AF05D8514688348008B1E81 /* TiledCoreAnimationDrawingAreaProxy.h */,
</span><span class="cx">                                 1AF05D8414688348008B1E81 /* TiledCoreAnimationDrawingAreaProxy.mm */,
</span><ins>+                                2D125C5C1857EA05003BA3CB /* ViewGestureController.h */,
+                                2D125C5D1857EA05003BA3CB /* ViewGestureController.cpp */,
+                                2D1B5D5A18586599006C6596 /* ViewGestureController.messages.in */,
</ins><span class="cx">                                 728E86EF1795188C0087879E /* WebColorPickerMac.h */,
</span><span class="cx">                                 728E86F01795188C0087879E /* WebColorPickerMac.mm */,
</span><span class="cx">                                 1A1C648611F415B700553C19 /* WebContextMac.mm */,
</span><span class="cx">                                 51ACBB9E127A8F2C00D203B9 /* WebContextMenuProxyMac.h */,
</span><span class="cx">                                 51ACBB9F127A8F2C00D203B9 /* WebContextMenuProxyMac.mm */,
</span><span class="cx">                                 F6D632BA133D181B00743D77 /* WebCookieManagerProxyMac.mm */,
</span><del>-                                CDCA85DE132AD05300E961DF /* WebFullScreenManagerProxyMac.mm */,
</del><span class="cx">                                 1CA8B935127C774E00576C2B /* WebInspectorProxyMac.mm */,
</span><span class="cx">                                 BC857E8512B71EBB00EDEB2E /* WebPageProxyMac.mm */,
</span><span class="cx">                                 BC5750951268F3C6006F0F12 /* WebPopupMenuProxyMac.h */,
</span><span class="lines">@@ -5411,6 +5508,8 @@
</span><span class="cx">                                 1A334DEC16DE8F88006A8E38 /* StorageAreaMapMessages.h */,
</span><span class="cx">                                 1AB31A9416BC688100F6DBC9 /* StorageManagerMessageReceiver.cpp */,
</span><span class="cx">                                 1AB31A9516BC688100F6DBC9 /* StorageManagerMessages.h */,
</span><ins>+                                2D1B5D5B185869C8006C6596 /* ViewGestureControllerMessageReceiver.cpp */,
+                                2D1B5D5C185869C8006C6596 /* ViewGestureControllerMessages.h */,
</ins><span class="cx">                                 512E3568130B57F000ABD19A /* WebApplicationCacheManagerMessageReceiver.cpp */,
</span><span class="cx">                                 512E3569130B57F000ABD19A /* WebApplicationCacheManagerMessages.h */,
</span><span class="cx">                                 512E35F6130B642E00ABD19A /* WebApplicationCacheManagerProxyMessageReceiver.cpp */,
</span><span class="lines">@@ -5601,6 +5700,7 @@
</span><span class="cx">                                 BC032DA910F437D10058C15A /* Arguments.h in Headers */,
</span><span class="cx">                                 BCEE966D112FAF57006BCC24 /* Attachment.h in Headers */,
</span><span class="cx">                                 E1A31732134CEA6C007C9A4F /* AttributedString.h in Headers */,
</span><ins>+                                51BA24441858EE3000EA2811 /* AsyncTask.h in Headers */,
</ins><span class="cx">                                 512F589712A8838800629530 /* AuthenticationChallengeProxy.h in Headers */,
</span><span class="cx">                                 1A445B9F184D5FB5004B3414 /* WKContextInjectedBundleClient.h in Headers */,
</span><span class="cx">                                 512F589912A8838800629530 /* AuthenticationDecisionListener.h in Headers */,
</span><span class="lines">@@ -5688,6 +5788,7 @@
</span><span class="cx">                                 BC8147A912F64CDA007B2C32 /* InjectedBundlePagePolicyClient.h in Headers */,
</span><span class="cx">                                 BCA8C6B011E3C08700812FB7 /* InjectedBundlePageUIClient.h in Headers */,
</span><span class="cx">                                 1A9E32891821636900F5D04C /* WKRemoteObjectRegistry.h in Headers */,
</span><ins>+                                51654EFE184EF33F007DC837 /* UniqueIDBDatabaseBackingStoreSQLite.h in Headers */,
</ins><span class="cx">                                 BC33E0D112408E8600360F3F /* InjectedBundleRangeHandle.h in Headers */,
</span><span class="cx">                                 BC14DF77120B5B7900826C0C /* InjectedBundleScriptWorld.h in Headers */,
</span><span class="cx">                                 BCB0B0DE12305A8C00B1341E /* InjectedBundleUserMessageCoders.h in Headers */,
</span><span class="lines">@@ -5703,12 +5804,12 @@
</span><span class="cx">                                 1A24B5F311F531E800C38269 /* MachUtilities.h in Headers */,
</span><span class="cx">                                 1A232903162C867300D82F7A /* MessageDecoder.h in Headers */,
</span><span class="cx">                                 51FCB18617BBFE0300394CD8 /* AsynchronousNetworkLoaderClient.h in Headers */,
</span><ins>+                                2D1B5D5E185869C8006C6596 /* ViewGestureControllerMessages.h in Headers */,
</ins><span class="cx">                                 1A2328FF162C866A00D82F7A /* MessageEncoder.h in Headers */,
</span><span class="cx">                                 1AC4C82916B876A90069DCCD /* MessageFlags.h in Headers */,
</span><span class="cx">                                 1AE00D6C18327C1200087DD7 /* StringReference.h in Headers */,
</span><span class="cx">                                 1A3EED12161A53D600AEB4F5 /* MessageReceiver.h in Headers */,
</span><span class="cx">                                 1A3EED0F161A535400AEB4F5 /* MessageReceiverMap.h in Headers */,
</span><del>-                                1A119A95127B796200A9ECB1 /* MessageSender.h in Headers */,
</del><span class="cx">                                 C0E3AA7C1209E83C00A49D01 /* Module.h in Headers */,
</span><span class="cx">                                 BCB0AEE9122F53E300B1341E /* MutableDictionary.h in Headers */,
</span><span class="cx">                                 1A6FBA2A11E6862700DB1371 /* NetscapeBrowserFuncs.h in Headers */,
</span><span class="lines">@@ -5722,6 +5823,7 @@
</span><span class="cx">                                 517CF0E4163A486C00C2950E /* NetworkProcessConnectionMessages.h in Headers */,
</span><span class="cx">                                 51795571162877D200FA43B6 /* NetworkProcessCreationParameters.h in Headers */,
</span><span class="cx">                                 1A9E329F1822FEDD00F5D04C /* WKRemoteObjectCoder.h in Headers */,
</span><ins>+                                1AC1336818565B5700F3EC05 /* UserData.h in Headers */,
</ins><span class="cx">                                 5163199516289A6300E22F00 /* NetworkProcessMessages.h in Headers */,
</span><span class="cx">                                 E14A954A16E016A40068DE82 /* NetworkProcessPlatformStrategies.h in Headers */,
</span><span class="cx">                                 5179556E162877B300FA43B6 /* NetworkProcessProxy.h in Headers */,
</span><span class="lines">@@ -5738,8 +5840,10 @@
</span><span class="cx">                                 1AB474E0184D446A0051B622 /* WKBundlePageEditorClient.h in Headers */,
</span><span class="cx">                                 1A2D848B127F6A49001EB962 /* NPIdentifierData.h in Headers */,
</span><span class="cx">                                 1AE4976811FF658E0048B464 /* NPJSObject.h in Headers */,
</span><ins>+                                516311871858446600534647 /* WebCrossThreadCopier.h in Headers */,
</ins><span class="cx">                                 1AB474E2184D44800051B622 /* WKBundlePageFormClient.h in Headers */,
</span><span class="cx">                                 1A2D82A5127F4EAB001EB962 /* NPObjectMessageReceiver.h in Headers */,
</span><ins>+                                1F7506B41859164C00EC0FF7 /* WKWebProcessPlugInScriptWorld.h in Headers */,
</ins><span class="cx">                                 1A2D843A127F65D5001EB962 /* NPObjectMessageReceiverMessages.h in Headers */,
</span><span class="cx">                                 1A2D82A7127F4EAB001EB962 /* NPObjectProxy.h in Headers */,
</span><span class="cx">                                 1A2D82A9127F4EAB001EB962 /* NPRemoteObjectMap.h in Headers */,
</span><span class="lines">@@ -5759,7 +5863,6 @@
</span><span class="cx">                                 C574A58112E66681002DFE98 /* PasteboardTypes.h in Headers */,
</span><span class="cx">                                 E19582D3153CBFD700B60875 /* PDFKitImports.h in Headers */,
</span><span class="cx">                                 51FCB18917BBFE0300394CD8 /* SynchronousNetworkLoaderClient.h in Headers */,
</span><del>-                                BCF505E71243047B005955AE /* CertificateInfo.h in Headers */,
</del><span class="cx">                                 1AE00D4F182D6F5000087DD7 /* WKBrowsingContextHandleInternal.h in Headers */,
</span><span class="cx">                                 BCC43ABB127B95DC00317F16 /* PlatformPopupMenuData.h in Headers */,
</span><span class="cx">                                 BC8780FC1161C2B800CC2768 /* PlatformProcessIdentifier.h in Headers */,
</span><span class="lines">@@ -5783,6 +5886,7 @@
</span><span class="cx">                                 1A2BB6D114117B4D000F35D4 /* PluginProcessConnectionMessages.h in Headers */,
</span><span class="cx">                                 1A2D90D21281C966001EB962 /* PluginProcessCreationParameters.h in Headers */,
</span><span class="cx">                                 1A0EC603124A9F2C007EF4A5 /* PluginProcessManager.h in Headers */,
</span><ins>+                                1F7506B31859164500EC0FF7 /* WKWebProcessPlugInNodeHandle.h in Headers */,
</ins><span class="cx">                                 1A0EC6C0124BBD9B007EF4A5 /* PluginProcessMessages.h in Headers */,
</span><span class="cx">                                 1A0EC75E124BC7B2007EF4A5 /* PluginProcessProxy.h in Headers */,
</span><span class="cx">                                 1A043B5E124D5E9D00FFBFB5 /* PluginProcessProxyMessages.h in Headers */,
</span><span class="lines">@@ -5790,6 +5894,7 @@
</span><span class="cx">                                 1A8EFA711252B84100F7067F /* PluginProxyMessages.h in Headers */,
</span><span class="cx">                                 1A4A9F3312B844E2008FE984 /* PluginQuirks.h in Headers */,
</span><span class="cx">                                 7CD622781739D863005BD7FF /* PluginSandboxProfile.h in Headers */,
</span><ins>+                                1AAB037A185A7C6A00EDF501 /* MessageSender.h in Headers */,
</ins><span class="cx">                                 1A6FB7AF11E64B6800DB1371 /* PluginView.h in Headers */,
</span><span class="cx">                                 E1CC1B9012D7EADF00625838 /* PrintInfo.h in Headers */,
</span><span class="cx">                                 BC1A7C581136E19C00FB7167 /* ProcessLauncher.h in Headers */,
</span><span class="lines">@@ -5861,6 +5966,7 @@
</span><span class="cx">                                 BC4A6290147312BE006C681A /* WebConnection.h in Headers */,
</span><span class="cx">                                 BC4A6292147312BE006C681A /* WebConnectionClient.h in Headers */,
</span><span class="cx">                                 1A1FEC1D1627B45700700F6D /* WebConnectionMessages.h in Headers */,
</span><ins>+                                1F7506B21859163E00EC0FF7 /* WKWebProcessPlugInHitTestResult.h in Headers */,
</ins><span class="cx">                                 BC4A62A814744EC7006C681A /* WebConnectionToWebProcess.h in Headers */,
</span><span class="cx">                                 BCB9E2431120DACA00A137E0 /* WebContext.h in Headers */,
</span><span class="cx">                                 31A505FA1680025500A930EB /* WebContextClient.h in Headers */,
</span><span class="lines">@@ -5893,10 +5999,12 @@
</span><span class="cx">                                 F6A25FDD12ADC6CC00DC40CC /* WebDatabaseManager.h in Headers */,
</span><span class="cx">                                 F62A76B712B1B25F0005F1B6 /* WebDatabaseManagerMessages.h in Headers */,
</span><span class="cx">                                 F62A765D12B1ABC30005F1B6 /* WebDatabaseManagerProxy.h in Headers */,
</span><ins>+                                1F7506B11859163700EC0FF7 /* WKWebProcessPlugInFrame.h in Headers */,
</ins><span class="cx">                                 1A445BA3184D5FCF004B3414 /* WKContextDownloadClient.h in Headers */,
</span><span class="cx">                                 BCAC111F12C92C1F00B08EEE /* WebDatabaseManagerProxyClient.h in Headers */,
</span><span class="cx">                                 F62A76B912B1B25F0005F1B6 /* WebDatabaseManagerProxyMessages.h in Headers */,
</span><span class="cx">                                 1AB7D72C1288CAAD00CFD08C /* WebDownloadClient.h in Headers */,
</span><ins>+                                51654F00184EF34A007DC837 /* UniqueIDBDatabaseBackingStore.h in Headers */,
</ins><span class="cx">                                 BC032D7B10F4378D0058C15A /* WebDragClient.h in Headers */,
</span><span class="cx">                                 BCA0EF9F12332642007D3CFB /* WebEditCommandProxy.h in Headers */,
</span><span class="cx">                                 BC032D7D10F4378D0058C15A /* WebEditorClient.h in Headers */,
</span><span class="lines">@@ -5923,7 +6031,7 @@
</span><span class="cx">                                 BC0E618312D6CB1D0012A72A /* WebGeolocationManagerProxyMessages.h in Headers */,
</span><span class="cx">                                 BC0E607312D6BC200012A72A /* WebGeolocationPosition.h in Headers */,
</span><span class="cx">                                 BC1BE1F212D54DBD0004A228 /* WebGeolocationProvider.h in Headers */,
</span><del>-                                0F174AA3142A4CB70039250F /* WebGeometry.h in Headers */,
</del><ins>+                                0F174AA3142A4CB70039250F /* APIGeometry.h in Headers */,
</ins><span class="cx">                                 BCF69F871176CD6F00471A52 /* WebHistoryClient.h in Headers */,
</span><span class="cx">                                 7801C09A142290C400FAF9AF /* WebHitTestResult.h in Headers */,
</span><span class="cx">                                 511B24AB132E097200065A0C /* WebIconDatabase.h in Headers */,
</span><span class="lines">@@ -5931,6 +6039,7 @@
</span><span class="cx">                                 51D02F6A132EC73700BEAA96 /* WebIconDatabaseMessages.h in Headers */,
</span><span class="cx">                                 511B24A7132E095700065A0C /* WebIconDatabaseProxy.h in Headers */,
</span><span class="cx">                                 1AB474EA184D45130051B622 /* WKBundlePagePolicyClient.h in Headers */,
</span><ins>+                                1F7506B71859165A00EC0FF7 /* WKWebProcessPlugInHitTestResultInternal.h in Headers */,
</ins><span class="cx">                                 51D02F6C132EC73700BEAA96 /* WebIconDatabaseProxyMessages.h in Headers */,
</span><span class="cx">                                 BCCF6ABD12C91EF9008F9C35 /* WebImage.h in Headers */,
</span><span class="cx">                                 1C8E28201275D15400BC7BD0 /* WebInspector.h in Headers */,
</span><span class="lines">@@ -5947,6 +6056,7 @@
</span><span class="cx">                                 BC9BA5051697C45300E44616 /* WebKit2Initialize.h in Headers */,
</span><span class="cx">                                 BC59534210FC04520098F82D /* WebLoaderClient.h in Headers */,
</span><span class="cx">                                 33D3A3C2133960B000709BE4 /* WebMediaCacheManager.h in Headers */,
</span><ins>+                                2D125C5E1857EA05003BA3CB /* ViewGestureController.h in Headers */,
</ins><span class="cx">                                 33D3A3C91339617900709BE4 /* WebMediaCacheManagerMessages.h in Headers */,
</span><span class="cx">                                 37C4C08D1814AC5C003688B9 /* WKBackForwardList.h in Headers */,
</span><span class="cx">                                 371A19421824D29300F32A5E /* WKNSDictionary.h in Headers */,
</span><span class="lines">@@ -5961,7 +6071,7 @@
</span><span class="cx">                                 31BA924E148831260062EDB5 /* WebNotificationManagerMessages.h in Headers */,
</span><span class="cx">                                 31A2EC4B148997C200810D71 /* WebNotificationManagerProxy.h in Headers */,
</span><span class="cx">                                 31A2EC4E148997C200810D71 /* WebNotificationProvider.h in Headers */,
</span><del>-                                BC33DD681238464600360F3F /* WebNumber.h in Headers */,
</del><ins>+                                BC33DD681238464600360F3F /* APINumber.h in Headers */,
</ins><span class="cx">                                 BC857FB512B830E600EDEB2E /* WebOpenPanelParameters.h in Headers */,
</span><span class="cx">                                 BC857F8512B82D0B00EDEB2E /* WebOpenPanelResultListener.h in Headers */,
</span><span class="cx">                                 BC1DFEA412B31F87005DF730 /* WebOpenPanelResultListenerProxy.h in Headers */,
</span><span class="lines">@@ -5995,6 +6105,7 @@
</span><span class="cx">                                 BCEE7AD112817988009827DA /* WebProcessProxyMessages.h in Headers */,
</span><span class="cx">                                 BCE0E425168B7A280057E66A /* WebProcessSupplement.h in Headers */,
</span><span class="cx">                                 512F589D12A8838800629530 /* WebProtectionSpace.h in Headers */,
</span><ins>+                                1AC1337218566C7C00F3EC05 /* APIFrameHandle.h in Headers */,
</ins><span class="cx">                                 37948404150C350600E52CE9 /* WebRenderLayer.h in Headers */,
</span><span class="cx">                                 51E351F6180F5C7500E53BE9 /* WebIDBFactoryBackend.h in Headers */,
</span><span class="cx">                                 3760881F150413E900FC82C7 /* WebRenderObject.h in Headers */,
</span><span class="lines">@@ -6011,6 +6122,7 @@
</span><span class="cx">                                 BCC5715B115ADAEF001CCAF9 /* WebSystemInterface.h in Headers */,
</span><span class="cx">                                 1A594ABB112A1FB6009DE7C7 /* WebUIClient.h in Headers */,
</span><span class="cx">                                 BCA0EF7F12331E78007D3CFB /* WebUndoStep.h in Headers */,
</span><ins>+                                1AC1336C18565C7A00F3EC05 /* APIPageHandle.h in Headers */,
</ins><span class="cx">                                 1AB474E8184D44D00051B622 /* WKBundlePageDiagnosticLoggingClient.h in Headers */,
</span><span class="cx">                                 1AC7537C183A9FDB0072CB15 /* PageLoadState.h in Headers */,
</span><span class="cx">                                 BCDB86C11200FB97007254BE /* WebURL.h in Headers */,
</span><span class="lines">@@ -6166,10 +6278,12 @@
</span><span class="cx">                                 BC8A501511765F5600757573 /* WKRetainPtr.h in Headers */,
</span><span class="cx">                                 F634445D12A885E9000612D8 /* WKSecurityOrigin.h in Headers */,
</span><span class="cx">                                 BC407604124FF0270068F20A /* WKSerializedScriptValue.h in Headers */,
</span><ins>+                                1F7506B81859165D00EC0FF7 /* WKWebProcessPlugInFrameInternal.h in Headers */,
</ins><span class="cx">                                 F67DD7BA125E40D9007BDCB8 /* WKSerializedScriptValuePrivate.h in Headers */,
</span><span class="cx">                                 BCDDB32B124EC2AB0048D13C /* WKSharedAPICast.h in Headers */,
</span><span class="cx">                                 BC407606124FF0270068F20A /* WKString.h in Headers */,
</span><span class="cx">                                 7C9D1537184584DA009D3918 /* WKBrowsingContextGroupInternal.h in Headers */,
</span><ins>+                                373CEAD81859553F008C363D /* WKPagePolicyClientInternal.h in Headers */,
</ins><span class="cx">                                 BC40761A124FF0370068F20A /* WKStringCF.h in Headers */,
</span><span class="cx">                                 759CCD591808F1690078E8A8 /* WebOriginDataManagerProxyChangeClient.h in Headers */,
</span><span class="cx">                                 BC9099801256A98200083756 /* WKStringPrivate.h in Headers */,
</span><span class="lines">@@ -6195,6 +6309,9 @@
</span><span class="cx">                                 BC8F2F2B16273A2C005FACB5 /* WKWebProcessPlugInBrowserContextController.h in Headers */,
</span><span class="cx">                                 BC8F2F2E16273ACC005FACB5 /* WKWebProcessPlugInBrowserContextControllerInternal.h in Headers */,
</span><span class="cx">                                 29501724162A4504004A9D71 /* WKWebProcessPlugInBrowserContextControllerPrivate.h in Headers */,
</span><ins>+                                 1F7506B61859165700EC0FF7 /* WKWebProcessPlugInNodeHandleInternal.h in Headers */,
+                                 1F7506B51859165400EC0FF7 /* WKWebProcessPlugInScriptWorldInternal.h in Headers */,
+                                373CEAD6185417AE008C363D /* WKNSData.h in Headers */,
</ins><span class="cx">                                 1AB8A1F018400B0000E9AE69 /* WKPageFormClient.h in Headers */,
</span><span class="cx">                                 BC989D85161A9890000D46D3 /* WKWebProcessPlugInInternal.h in Headers */,
</span><span class="cx">                                 BC04EFFC16E65AFB00E336F0 /* WKWebProcessPlugInPrivate.h in Headers */,
</span><span class="lines">@@ -6921,6 +7038,7 @@
</span><span class="cx">                                 A7D792D61767CB6E00881CBE /* ActivityAssertion.cpp in Sources */,
</span><span class="cx">                                 B63403F914910D57001070B5 /* APIObject.cpp in Sources */,
</span><span class="cx">                                 1A3D610513A7F03A00F95D4E /* ArgumentCoders.cpp in Sources */,
</span><ins>+                                1F7506AE1859162200EC0FF7 /* WKWebProcessPlugInHitTestResult.mm in Sources */,
</ins><span class="cx">                                 1AAF0C4B12B16334008E49E2 /* ArgumentCodersCF.cpp in Sources */,
</span><span class="cx">                                 E179FD9F134D38250015B883 /* ArgumentCodersMac.mm in Sources */,
</span><span class="cx">                                 1AE00D601831792100087DD7 /* FrameLoadState.cpp in Sources */,
</span><span class="lines">@@ -7031,7 +7149,6 @@
</span><span class="cx">                                 1A2328FE162C866A00D82F7A /* MessageEncoder.cpp in Sources */,
</span><span class="cx">                                 1A3EED0E161A535400AEB4F5 /* MessageReceiverMap.cpp in Sources */,
</span><span class="cx">                                 1A9E328E182165A900F5D04C /* WKRemoteObjectInterface.mm in Sources */,
</span><del>-                                1A6506D2175015E700174518 /* MessageSender.cpp in Sources */,
</del><span class="cx">                                 C0E3AA7B1209E83500A49D01 /* Module.cpp in Sources */,
</span><span class="cx">                                 C0E3AA7A1209E83000A49D01 /* ModuleMac.mm in Sources */,
</span><span class="cx">                                 370F34A21829BE1E009027C8 /* WKNavigationData.mm in Sources */,
</span><span class="lines">@@ -7097,7 +7214,6 @@
</span><span class="cx">                                 2D429BFD1721E2C700EC681F /* PDFPluginPasswordField.mm in Sources */,
</span><span class="cx">                                 2D2ADF0916362DD500197E47 /* PDFPluginTextAnnotation.mm in Sources */,
</span><span class="cx">                                 371B32DD184D67490013E2B2 /* WKNSURLProtectionSpace.mm in Sources */,
</span><del>-                                BCF505E81243047B005955AE /* CertificateInfo.mm in Sources */,
</del><span class="cx">                                 BCC43ABA127B95DC00317F16 /* PlatformPopupMenuData.cpp in Sources */,
</span><span class="cx">                                 1A6FB7D211E651E200DB1371 /* Plugin.cpp in Sources */,
</span><span class="cx">                                 31A67E0C165B2A99006CBA66 /* PlugInAutoStartProvider.cpp in Sources */,
</span><span class="lines">@@ -7125,6 +7241,7 @@
</span><span class="cx">                                 1A2D90BB1281C931001EB962 /* PluginProcessProxyMac.mm in Sources */,
</span><span class="cx">                                 1A043B5D124D5E9D00FFBFB5 /* PluginProcessProxyMessageReceiver.cpp in Sources */,
</span><span class="cx">                                 1A043DC2124FF87500FFBFB5 /* PluginProxy.cpp in Sources */,
</span><ins>+                                1AC1336718565B5700F3EC05 /* UserData.cpp in Sources */,
</ins><span class="cx">                                 1A2D92211281DC1B001EB962 /* PluginProxyMac.mm in Sources */,
</span><span class="cx">                                 755422C418062BF90046F6A8 /* WebOriginDataManagerProxy.cpp in Sources */,
</span><span class="cx">                                 1A8EFA701252B84100F7067F /* PluginProxyMessageReceiver.cpp in Sources */,
</span><span class="lines">@@ -7134,9 +7251,11 @@
</span><span class="cx">                                 1A6FB7AE11E64B6800DB1371 /* PluginView.cpp in Sources */,
</span><span class="cx">                                 E18C92F412DB9E7100CF2AEB /* PrintInfo.cpp in Sources */,
</span><span class="cx">                                 E1CC1B9112D7EADF00625838 /* PrintInfoMac.mm in Sources */,
</span><ins>+                                1AC1336E18565D2B00F3EC05 /* APIPageHandle.cpp in Sources */,
</ins><span class="cx">                                 1AE117F611DBB30900981615 /* ProcessLauncher.cpp in Sources */,
</span><span class="cx">                                 BC111B1D112F5FE600337BAB /* ProcessLauncherMac.mm in Sources */,
</span><span class="cx">                                 1AB16AE9164B3A8800290D62 /* RemoteLayerTreeContext.mm in Sources */,
</span><ins>+                                1AAB0379185A7C6A00EDF501 /* MessageSender.cpp in Sources */,
</ins><span class="cx">                                 1AB16ADD1648598400290D62 /* RemoteLayerTreeDrawingArea.mm in Sources */,
</span><span class="cx">                                 1AB16AE11648656D00290D62 /* RemoteLayerTreeDrawingAreaProxy.mm in Sources */,
</span><span class="cx">                                 1AA3D75B1651B44F008713D0 /* RemoteLayerTreeHost.mm in Sources */,
</span><span class="lines">@@ -7157,6 +7276,7 @@
</span><span class="cx">                                 515E772B184008B90007203F /* DatabaseProcessCreationParameters.cpp in Sources */,
</span><span class="cx">                                 1A6420E412DCE2FF00CAAE2C /* ShareableBitmap.cpp in Sources */,
</span><span class="cx">                                 C01A260112662F2100C9ED55 /* ShareableBitmapCG.cpp in Sources */,
</span><ins>+                                1F7506AF1859162800EC0FF7 /* WKWebProcessPlugInNodeHandle.mm in Sources */,
</ins><span class="cx">                                 51217460164C20E30037A5C1 /* ShareableResource.cpp in Sources */,
</span><span class="cx">                                 1A24BF3A120896A600FBB059 /* SharedMemoryMac.cpp in Sources */,
</span><span class="cx">                                 5272B28A1406985D0096A5D0 /* StatisticsData.cpp in Sources */,
</span><span class="lines">@@ -7169,6 +7289,7 @@
</span><span class="cx">                                 1A44B95716B737AA00B7BBD8 /* StorageNamespaceImpl.cpp in Sources */,
</span><span class="cx">                                 1AFF49001833DE78009AB15A /* WKDeprecatedFunctions.cpp in Sources */,
</span><span class="cx">                                 517DD5BE180DA7D30081660B /* DatabaseProcessProxy.cpp in Sources */,
</span><ins>+                                51654EFD184EF33F007DC837 /* UniqueIDBDatabaseBackingStoreSQLite.cpp in Sources */,
</ins><span class="cx">                                 296BD85E15019BC30071F424 /* StringUtilities.mm in Sources */,
</span><span class="cx">                                 1ZZ417EF12C00D87002BE67B /* TextCheckerCompletion.cpp in Sources */,
</span><span class="cx">                                 51E351FF180F5D0F00E53BE9 /* DatabaseProcess.cpp in Sources */,
</span><span class="lines">@@ -7191,6 +7312,7 @@
</span><span class="cx">                                 C5E1AFEE16B21025006CC1F2 /* WebArchiveResource.cpp in Sources */,
</span><span class="cx">                                 BC72BA1D11E64907001EB4EA /* WebBackForwardList.cpp in Sources */,
</span><span class="cx">                                 51B3005012529D0E000B5CA0 /* WebBackForwardListCF.cpp in Sources */,
</span><ins>+                                1AC133741857C21E00F3EC05 /* APIGeometry.cpp in Sources */,
</ins><span class="cx">                                 518D2CAD12D5153B003BB93B /* WebBackForwardListItem.cpp in Sources */,
</span><span class="cx">                                 BC72B9FA11E6476B001EB4EA /* WebBackForwardListProxy.cpp in Sources */,
</span><span class="cx">                                 BC111A5A112F4FBB00337BAB /* WebChromeClient.cpp in Sources */,
</span><span class="lines">@@ -7203,6 +7325,7 @@
</span><span class="cx">                                 BCD3675C148C26C000447E87 /* WebConnectionToUIProcess.cpp in Sources */,
</span><span class="cx">                                 BC4A62A714744EC7006C681A /* WebConnectionToWebProcess.cpp in Sources */,
</span><span class="cx">                                 BC82836516B354F600A278FE /* WebContentProcessMain.mm in Sources */,
</span><ins>+                                2D125C5F1857EA05003BA3CB /* ViewGestureController.cpp in Sources */,
</ins><span class="cx">                                 BC82839916B48DC000A278FE /* WebContentServiceEntryPoint.mm in Sources */,
</span><span class="cx">                                 BCB9E2441120DACA00A137E0 /* WebContext.cpp in Sources */,
</span><span class="cx">                                 31A505F91680025500A930EB /* WebContextClient.cpp in Sources */,
</span><span class="lines">@@ -7260,7 +7383,6 @@
</span><span class="cx">                                 755422BD18062BB20046F6A8 /* WKOriginDataManager.cpp in Sources */,
</span><span class="cx">                                 CD73BA4E131ACDB700EEDED2 /* WebFullScreenManagerMessageReceiver.cpp in Sources */,
</span><span class="cx">                                 CD6F75F4131B66D000D6B21E /* WebFullScreenManagerProxy.cpp in Sources */,
</span><del>-                                CDCA85EE132AD70100E961DF /* WebFullScreenManagerProxyMac.mm in Sources */,
</del><span class="cx">                                 CD73BA47131ACC9A00EEDED2 /* WebFullScreenManagerProxyMessageReceiver.cpp in Sources */,
</span><span class="cx">                                 BC1BE1E112D54A410004A228 /* WebGeolocationClient.cpp in Sources */,
</span><span class="cx">                                 BC0E5FE612D697160012A72A /* WebGeolocationManager.cpp in Sources */,
</span><span class="lines">@@ -7318,6 +7440,7 @@
</span><span class="cx">                                 C0CE72A01247E71D00BC0EC4 /* WebPageMessageReceiver.cpp in Sources */,
</span><span class="cx">                                 BC111B0F112F5E4F00337BAB /* WebPageProxy.cpp in Sources */,
</span><span class="cx">                                 51B3005112529D0E000B5CA0 /* WebPageProxyCF.cpp in Sources */,
</span><ins>+                                1F7506AD1859161C00EC0FF7 /* WKWebProcessPlugInFrame.mm in Sources */,
</ins><span class="cx">                                 BC857E8712B71EBB00EDEB2E /* WebPageProxyMac.mm in Sources */,
</span><span class="cx">                                 BCBD3914125BB1A800D2C29F /* WebPageProxyMessageReceiver.cpp in Sources */,
</span><span class="cx">                                 1A3E736211CC2659007BD539 /* WebPlatformStrategies.cpp in Sources */,
</span><span class="lines">@@ -7339,6 +7462,7 @@
</span><span class="cx">                                 1A043A0A124D11A900FFBFB5 /* WebProcessConnection.cpp in Sources */,
</span><span class="cx">                                 1A043F6912514D8B00FFBFB5 /* WebProcessConnectionMessageReceiver.cpp in Sources */,
</span><span class="cx">                                 BC306825125A6B9400E71278 /* WebProcessCreationParameters.cpp in Sources */,
</span><ins>+                                1F7506B01859162C00EC0FF7 /* WKWebProcessPlugInScriptWorld.mm in Sources */,
</ins><span class="cx">                                 75E749EB180DBB9800088BA6 /* WebOriginDataManagerProxyMessageReceiver.cpp in Sources */,
</span><span class="cx">                                 BC3065C412592F8900E71278 /* WebProcessMac.mm in Sources */,
</span><span class="cx">                                 BC3066BE125A442100E71278 /* WebProcessMessageReceiver.cpp in Sources */,
</span><span class="lines">@@ -7365,9 +7489,7 @@
</span><span class="cx">                                 1A594ABA112A1FB6009DE7C7 /* WebUIClient.cpp in Sources */,
</span><span class="cx">                                 BCA0EF8012331E78007D3CFB /* WebUndoStep.cpp in Sources */,
</span><span class="cx">                                 BCE2315E122C30CA00D5C35A /* WebURLRequest.cpp in Sources */,
</span><del>-                                BCE231C2122C466E00D5C35A /* WebURLRequestMac.mm in Sources */,
</del><span class="cx">                                 BC90A1D3122DD55E00CC8C50 /* WebURLResponse.cpp in Sources */,
</span><del>-                                BC90A1D7122DD66A00CC8C50 /* WebURLResponseMac.mm in Sources */,
</del><span class="cx">                                 C0337DD1127A2980008FF4F4 /* WebWheelEvent.cpp in Sources */,
</span><span class="cx">                                 51FCB18517BBFE0300394CD8 /* AsynchronousNetworkLoaderClient.cpp in Sources */,
</span><span class="cx">                                 29CD55AB128E294F00133C85 /* WKAccessibilityWebPageObject.mm in Sources */,
</span><span class="lines">@@ -7468,16 +7590,19 @@
</span><span class="cx">                                 BCBAACEC145225E30053F82F /* WKProcessGroup.mm in Sources */,
</span><span class="cx">                                 512F58FB12A88A5400629530 /* WKProtectionSpace.cpp in Sources */,
</span><span class="cx">                                 37948408150C4B9700E52CE9 /* WKRenderLayer.cpp in Sources */,
</span><ins>+                                2D1B5D5D185869C8006C6596 /* ViewGestureControllerMessageReceiver.cpp in Sources */,
</ins><span class="cx">                                 37608822150414F700FC82C7 /* WKRenderObject.cpp in Sources */,
</span><span class="cx">                                 3336763A130C99DC006C9DE2 /* WKResourceCacheManager.cpp in Sources */,
</span><span class="cx">                                 F634445C12A885E9000612D8 /* WKSecurityOrigin.cpp in Sources */,
</span><span class="cx">                                 BC407603124FF0270068F20A /* WKSerializedScriptValue.cpp in Sources */,
</span><ins>+                                1AC1337118566C7C00F3EC05 /* APIFrameHandle.cpp in Sources */,
</ins><span class="cx">                                 BC407605124FF0270068F20A /* WKString.cpp in Sources */,
</span><span class="cx">                                 BC407619124FF0370068F20A /* WKStringCF.mm in Sources */,
</span><span class="cx">                                 1A4A9AA912B7E796008FE984 /* WKTextInputWindowController.mm in Sources */,
</span><span class="cx">                                 1AC7537B183A9FDB0072CB15 /* PageLoadState.cpp in Sources */,
</span><span class="cx">                                 BC407607124FF0270068F20A /* WKType.cpp in Sources */,
</span><span class="cx">                                 7CD5EBBE1746B04C000C1C45 /* WKTypeRefWrapper.mm in Sources */,
</span><ins>+                                51BA24461858F55D00EA2811 /* WebCrossThreadCopier.cpp in Sources */,
</ins><span class="cx">                                 BC407609124FF0270068F20A /* WKURL.cpp in Sources */,
</span><span class="cx">                                 BC40761B124FF0370068F20A /* WKURLCF.mm in Sources */,
</span><span class="cx">                                 BC40760B124FF0270068F20A /* WKURLRequest.cpp in Sources */,
</span><span class="lines">@@ -7489,6 +7614,7 @@
</span><span class="cx">                                 BC8699B6116AADAA002A925B /* WKView.mm in Sources */,
</span><span class="cx">                                 C5E1AFE816B20B67006CC1F2 /* WKWebArchive.cpp in Sources */,
</span><span class="cx">                                 C5E1AFEA16B20B7B006CC1F2 /* WKWebArchiveResource.cpp in Sources */,
</span><ins>+                                373CEAD5185417AE008C363D /* WKNSData.mm in Sources */,
</ins><span class="cx">                                 BC989D81161A7E5D000D46D3 /* WKWebProcessPlugIn.mm in Sources */,
</span><span class="cx">                                 BC8F2F2A16273A2C005FACB5 /* WKWebProcessPlugInBrowserContextController.mm in Sources */,
</span><span class="cx">                                 BC2E6E8D1141971500A63B1E /* WorkQueue.cpp in Sources */,
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessApplicationCacheWebApplicationCacheManagercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/ApplicationCache/WebApplicationCacheManager.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/ApplicationCache/WebApplicationCacheManager.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/ApplicationCache/WebApplicationCacheManager.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx"> WebApplicationCacheManager::WebApplicationCacheManager(ChildProcess* childProcess)
</span><span class="cx">     : m_childProcess(childProcess)
</span><span class="cx"> {
</span><del>-    m_childProcess-&gt;addMessageReceiver(Messages::WebApplicationCacheManager::messageReceiverName(), this);
</del><ins>+    m_childProcess-&gt;addMessageReceiver(Messages::WebApplicationCacheManager::messageReceiverName(), *this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebApplicationCacheManager::getApplicationCacheOrigins(uint64_t callbackID)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessBatteryWebBatteryManagercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/Battery/WebBatteryManager.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/Battery/WebBatteryManager.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/Battery/WebBatteryManager.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx"> WebBatteryManager::WebBatteryManager(WebProcess* process)
</span><span class="cx">     : m_process(process)
</span><span class="cx"> {
</span><del>-    m_process-&gt;addMessageReceiver(Messages::WebBatteryManager::messageReceiverName(), this);
</del><ins>+    m_process-&gt;addMessageReceiver(Messages::WebBatteryManager::messageReceiverName(), *this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebBatteryManager::~WebBatteryManager()
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessCookiesWebCookieManagercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/Cookies/WebCookieManager.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/Cookies/WebCookieManager.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/Cookies/WebCookieManager.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -51,7 +51,7 @@
</span><span class="cx"> WebCookieManager::WebCookieManager(ChildProcess* process)
</span><span class="cx">     : m_process(process)
</span><span class="cx"> {
</span><del>-    m_process-&gt;addMessageReceiver(Messages::WebCookieManager::messageReceiverName(), this);
</del><ins>+    m_process-&gt;addMessageReceiver(Messages::WebCookieManager::messageReceiverName(), *this);
</ins><span class="cx"> 
</span><span class="cx">     ASSERT(!sharedCookieManager);
</span><span class="cx">     sharedCookieManager = this;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessGeolocationWebGeolocationManagercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/Geolocation/WebGeolocationManager.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/Geolocation/WebGeolocationManager.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/Geolocation/WebGeolocationManager.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx"> WebGeolocationManager::WebGeolocationManager(WebProcess* process)
</span><span class="cx">     : m_process(process)
</span><span class="cx"> {
</span><del>-    m_process-&gt;addMessageReceiver(Messages::WebGeolocationManager::messageReceiverName(), this);
</del><ins>+    m_process-&gt;addMessageReceiver(Messages::WebGeolocationManager::messageReceiverName(), *this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebGeolocationManager::registerWebPage(WebPage* page)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessIconDatabaseWebIconDatabaseProxycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/IconDatabase/WebIconDatabaseProxy.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/IconDatabase/WebIconDatabaseProxy.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/IconDatabase/WebIconDatabaseProxy.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -45,7 +45,7 @@
</span><span class="cx">     : m_isEnabled(false)
</span><span class="cx">     , m_process(process)
</span><span class="cx"> {
</span><del>-    m_process-&gt;addMessageReceiver(Messages::WebIconDatabaseProxy::messageReceiverName(), this);
</del><ins>+    m_process-&gt;addMessageReceiver(Messages::WebIconDatabaseProxy::messageReceiverName(), *this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool WebIconDatabaseProxy::isEnabled() const
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPICocoaWKWebProcessPlugInFrameh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.h                                (rev 0)
+++ branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,47 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &lt;WebKit2/WKFoundation.h&gt;
+
+#if WK_API_ENABLED
+
+#import &lt;CoreGraphics/CoreGraphics.h&gt;
+#import &lt;Foundation/Foundation.h&gt;
+#import &lt;JavaScriptCore/JSContext.h&gt;
+
+@class WKWebProcessPlugInHitTestResult;
+@class WKWebProcessPlugInNodeHandle;
+@class WKWebProcessPlugInScriptWorld;
+
+WK_API_CLASS
+@interface WKWebProcessPlugInFrame : NSObject
+
+- (JSContext *)jsContextForWorld:(WKWebProcessPlugInScriptWorld *)world;
+- (WKWebProcessPlugInHitTestResult *)hitTest:(CGPoint)point;
+- (JSValue *)jsNodeForNodeHandle:(WKWebProcessPlugInNodeHandle *)nodeHandle inWorld:(WKWebProcessPlugInScriptWorld *)world;
+
+@end
+
+#endif // WK_API_ENABLED
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPICocoaWKWebProcessPlugInFramemm"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm                                (rev 0)
+++ branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,75 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;config.h&quot;
+#import &quot;WKWebProcessPlugInFrameInternal.h&quot;
+
+#if WK_API_ENABLED
+
+#import &quot;WKWebProcessPlugInHitTestResultInternal.h&quot;
+#import &quot;WKWebProcessPlugInNodeHandleInternal.h&quot;
+#import &quot;WKWebProcessPlugInScriptWorldInternal.h&quot;
+#import &lt;JavaScriptCore/JSValue.h&gt;
+#import &lt;WebCore/IntPoint.h&gt;
+
+using namespace WebKit;
+
+@implementation WKWebProcessPlugInFrame {
+    API::ObjectStorage&lt;WebFrame&gt; _frame;
+}
+
+- (void)dealloc
+{
+    _frame-&gt;~WebFrame();
+    [super dealloc];
+}
+
+- (JSContext *)jsContextForWorld:(WKWebProcessPlugInScriptWorld *)world
+{
+    return [JSContext contextWithJSGlobalContextRef:_frame-&gt;jsContextForWorld(&amp;[world _scriptWorld])];
+}
+
+- (WKWebProcessPlugInHitTestResult *)hitTest:(CGPoint)point
+{
+    RefPtr&lt;InjectedBundleHitTestResult&gt; hitTestResult = _frame-&gt;hitTest(WebCore::IntPoint(point));
+    return [wrapper(*hitTestResult.release().leakRef()) autorelease];
+}
+
+- (JSValue *)jsNodeForNodeHandle:(WKWebProcessPlugInNodeHandle *)nodeHandle inWorld:(WKWebProcessPlugInScriptWorld *)world
+{
+    JSValueRef valueRef = _frame-&gt;jsWrapperForWorld(&amp;[nodeHandle _nodeHandle], &amp;[world _scriptWorld]);
+    return [JSValue valueWithJSValueRef:valueRef inContext:[self jsContextForWorld:world]];
+}
+
+#pragma mark WKObject protocol implementation
+
+- (API::Object&amp;)_apiObject
+{
+    return *_frame;
+}
+
+@end
+
+#endif // WK_API_ENABLED
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPICocoaWKWebProcessPlugInFrameInternalh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrameInternal.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrameInternal.h                                (rev 0)
+++ branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrameInternal.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,45 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;WKWebProcessPlugInFrame.h&quot;
+
+#if WK_API_ENABLED
+
+#import &quot;WKObject.h&quot;
+#import &quot;WKWebProcessPlugInFrame.h&quot;
+#import &quot;WebFrame.h&quot;
+
+namespace WebKit {
+
+inline WKWebProcessPlugInFrame *wrapper(WebFrame&amp; frame)
+{
+    ASSERT([frame.wrapper() isKindOfClass:[WKWebProcessPlugInFrame class]]);
+    return (WKWebProcessPlugInFrame *)frame.wrapper(); }
+}
+
+@interface WKWebProcessPlugInFrame () &lt;WKObject&gt;
+@end
+
+#endif // WK_API_ENABLED
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPICocoaWKWebProcessPlugInHitTestResulth"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResult.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResult.h                                (rev 0)
+++ branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResult.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,41 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &lt;WebKit2/WKFoundation.h&gt;
+
+#if WK_API_ENABLED
+
+#import &lt;Foundation/Foundation.h&gt;
+
+@class WKWebProcessPlugInNodeHandle;
+
+WK_API_CLASS
+@interface WKWebProcessPlugInHitTestResult : NSObject
+
+@property (readonly) WKWebProcessPlugInNodeHandle *nodeHandle;
+
+@end
+
+#endif // WK_API_ENABLED
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPICocoaWKWebProcessPlugInHitTestResultmm"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResult.mm (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResult.mm                                (rev 0)
+++ branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResult.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,60 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;config.h&quot;
+#import &quot;WKWebProcessPlugInHitTestResultInternal.h&quot;
+
+#if WK_API_ENABLED
+
+#import &quot;WKWebProcessPlugInNodeHandleInternal.h&quot;
+
+using namespace WebKit;
+
+@implementation WKWebProcessPlugInHitTestResult {
+    API::ObjectStorage&lt;InjectedBundleHitTestResult&gt; _hitTestResult;
+}
+
+- (void)dealloc
+{
+    _hitTestResult-&gt;~InjectedBundleHitTestResult();
+    [super dealloc];
+}
+
+- (WKWebProcessPlugInNodeHandle *)nodeHandle
+{
+    RefPtr&lt;InjectedBundleNodeHandle&gt; nodeHandle = _hitTestResult-&gt;nodeHandle();
+    return [wrapper(*nodeHandle.release().leakRef()) autorelease];
+}
+
+#pragma mark WKObject protocol implementation
+
+- (API::Object&amp;)_apiObject
+{
+    return *_hitTestResult;
+}
+
+@end
+
+#endif // WK_API_ENABLED
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPICocoaWKWebProcessPlugInHitTestResultInternalh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResultInternal.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResultInternal.h                                (rev 0)
+++ branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResultInternal.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,46 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;WKWebProcessPlugInHitTestResult.h&quot;
+
+#if WK_API_ENABLED
+
+#import &quot;WKObject.h&quot;
+#import &quot;InjectedBundleHitTestResult.h&quot;
+
+namespace WebKit {
+
+inline WKWebProcessPlugInHitTestResult *wrapper(InjectedBundleHitTestResult&amp; hitTestResult)
+{
+    ASSERT([hitTestResult.wrapper() isKindOfClass:[WKWebProcessPlugInHitTestResult class]]);
+    return (WKWebProcessPlugInHitTestResult *)hitTestResult.wrapper();
+}
+
+}
+
+@interface WKWebProcessPlugInHitTestResult () &lt;WKObject&gt;
+@end
+
+#endif // WK_API_ENABLED
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPICocoaWKWebProcessPlugInNodeHandleh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.h                                (rev 0)
+++ branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,36 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &lt;WebKit2/WKFoundation.h&gt;
+
+#if WK_API_ENABLED
+
+#import &lt;Foundation/Foundation.h&gt;
+
+WK_API_CLASS
+@interface WKWebProcessPlugInNodeHandle : NSObject
+@end
+
+#endif // WK_API_ENABLED
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPICocoaWKWebProcessPlugInNodeHandlemm"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm                                (rev 0)
+++ branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,61 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;config.h&quot;
+#import &quot;WKWebProcessPlugInNodeHandleInternal.h&quot;
+
+#if WK_API_ENABLED
+
+using namespace WebKit;
+
+@implementation WKWebProcessPlugInNodeHandle {
+    API::ObjectStorage&lt;InjectedBundleNodeHandle&gt; _nodeHandle;
+}
+
+- (void)dealloc
+{
+    _nodeHandle-&gt;~InjectedBundleNodeHandle();
+    [super dealloc];
+}
+
+#pragma mark WKObject protocol implementation
+
+- (API::Object&amp;)_apiObject
+{
+    return *_nodeHandle;
+}
+
+@end
+
+@implementation WKWebProcessPlugInNodeHandle (Internal)
+
+- (InjectedBundleNodeHandle&amp;)_nodeHandle
+{
+    return *_nodeHandle;
+}
+
+@end
+
+#endif // WK_API_ENABLED
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPICocoaWKWebProcessPlugInNodeHandleInternalh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandleInternal.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandleInternal.h                                (rev 0)
+++ branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandleInternal.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,52 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;WKWebProcessPlugInNodeHandle.h&quot;
+
+#if WK_API_ENABLED
+
+#import &quot;InjectedBundleNodeHandle.h&quot;
+#import &quot;WKObject.h&quot;
+
+namespace WebKit {
+
+inline WKWebProcessPlugInNodeHandle *wrapper(InjectedBundleNodeHandle&amp; nodeHandle)
+{
+    ASSERT([nodeHandle.wrapper() isKindOfClass:[WKWebProcessPlugInNodeHandle class]]);
+    return (WKWebProcessPlugInNodeHandle *)nodeHandle.wrapper();
+}
+
+}
+
+@interface WKWebProcessPlugInNodeHandle () &lt;WKObject&gt;
+@end
+
+@interface WKWebProcessPlugInNodeHandle (Internal)
+
+@property (readonly) WebKit::InjectedBundleNodeHandle&amp; _nodeHandle;
+
+@end
+
+#endif // WK_API_ENABLED
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPICocoaWKWebProcessPlugInScriptWorldh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.h                                (rev 0)
+++ branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,40 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &lt;WebKit2/WKFoundation.h&gt;
+
+#if WK_API_ENABLED
+
+#import &lt;Foundation/Foundation.h&gt;
+
+WK_API_CLASS
+@interface WKWebProcessPlugInScriptWorld : NSObject
+
++ (WKWebProcessPlugInScriptWorld *)world;
++ (WKWebProcessPlugInScriptWorld *)normalWorld;
+
+@end
+
+#endif // WK_API_ENABLED
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPICocoaWKWebProcessPlugInScriptWorldmm"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.mm (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.mm                                (rev 0)
+++ branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,72 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;config.h&quot;
+#import &quot;WKWebProcessPlugInScriptWorldInternal.h&quot;
+
+#if WK_API_ENABLED
+
+using namespace WebKit;
+
+@implementation WKWebProcessPlugInScriptWorld {
+    API::ObjectStorage&lt;InjectedBundleScriptWorld&gt; _world;
+}
+
++ (WKWebProcessPlugInScriptWorld *)world
+{
+    RefPtr&lt;InjectedBundleScriptWorld&gt; scriptWorld = InjectedBundleScriptWorld::create();
+    return [wrapper(*scriptWorld.release().leakRef()) autorelease];
+}
+
++ (WKWebProcessPlugInScriptWorld *)normalWorld
+{
+    return [wrapper(*InjectedBundleScriptWorld::normalWorld()) autorelease];
+}
+
+- (void)dealloc
+{
+    _world-&gt;~InjectedBundleScriptWorld();
+    [super dealloc];
+}
+
+#pragma mark WKObject protocol implementation
+
+- (API::Object&amp;)_apiObject
+{
+    return *_world;
+}
+
+@end
+
+@implementation WKWebProcessPlugInScriptWorld (Internal)
+
+- (InjectedBundleScriptWorld&amp;)_scriptWorld
+{
+    return *_world;
+}
+
+@end
+
+#endif // WK_API_ENABLED
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPICocoaWKWebProcessPlugInScriptWorldInternalh"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorldInternal.h (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorldInternal.h                                (rev 0)
+++ branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorldInternal.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,52 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;WKWebProcessPlugInScriptWorld.h&quot;
+
+#if WK_API_ENABLED
+
+#import &quot;InjectedBundleScriptWorld.h&quot;
+#import &quot;WKObject.h&quot;
+
+namespace WebKit {
+
+inline WKWebProcessPlugInScriptWorld *wrapper(InjectedBundleScriptWorld&amp; world)
+{
+    ASSERT([world.wrapper() isKindOfClass:[WKWebProcessPlugInScriptWorld class]]);
+    return (WKWebProcessPlugInScriptWorld *)world.wrapper();
+}
+
+}
+
+@interface WKWebProcessPlugInScriptWorld () &lt;WKObject&gt;
+@end
+
+@interface WKWebProcessPlugInScriptWorld (Internal)
+
+@property (readonly) WebKit::InjectedBundleScriptWorld&amp; _scriptWorld;
+
+@end
+
+#endif // WK_API_ENABLED
</ins></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPIcWKBundlePagecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -65,6 +65,9 @@
</span><span class="cx"> {
</span><span class="cx"> #if ENABLE(CONTEXT_MENUS)
</span><span class="cx">     toImpl(pageRef)-&gt;initializeInjectedBundleContextMenuClient(wkClient);
</span><ins>+#else
+    UNUSED_PARAM(pageRef);
+    UNUSED_PARAM(wkClient);
</ins><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -163,6 +166,9 @@
</span><span class="cx"> {
</span><span class="cx"> #if ENABLE(CONTEXT_MENUS)
</span><span class="cx">     toImpl(pageRef)-&gt;contextMenu()-&gt;itemSelected(*toImpl(item)-&gt;data());
</span><ins>+#else
+    UNUSED_PARAM(pageRef);
+    UNUSED_PARAM(item);
</ins><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -188,6 +194,7 @@
</span><span class="cx"> 
</span><span class="cx">     return toAPI(contextMenuItems(*contextMenu).leakRef());
</span><span class="cx"> #else
</span><ins>+    UNUSED_PARAM(pageRef);
</ins><span class="cx">     return nullptr;
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="lines">@@ -201,6 +208,8 @@
</span><span class="cx"> 
</span><span class="cx">     return toAPI(contextMenuItems(*contextMenu).leakRef());
</span><span class="cx"> #else
</span><ins>+    UNUSED_PARAM(pageRef);
+    UNUSED_PARAM(point);
</ins><span class="cx">     return nullptr;
</span><span class="cx"> #endif
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPIgtkWebKitWebPagecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -155,9 +155,9 @@
</span><span class="cx">     ImmutableDictionary::MapType message;
</span><span class="cx">     message.set(String::fromUTF8(&quot;Page&quot;), toImpl(page));
</span><span class="cx">     message.set(String::fromUTF8(&quot;Frame&quot;), toImpl(frame));
</span><del>-    message.set(String::fromUTF8(&quot;Identifier&quot;), WebUInt64::create(identifier));
</del><ins>+    message.set(String::fromUTF8(&quot;Identifier&quot;), API::UInt64::create(identifier));
</ins><span class="cx">     message.set(String::fromUTF8(&quot;Request&quot;), toImpl(request));
</span><del>-    WebProcess::shared().injectedBundle()-&gt;postMessage(String::fromUTF8(&quot;WebPage.DidInitiateLoadForResource&quot;), ImmutableDictionary::adopt(message).get());
</del><ins>+    WebProcess::shared().injectedBundle()-&gt;postMessage(String::fromUTF8(&quot;WebPage.DidInitiateLoadForResource&quot;), ImmutableDictionary::create(std::move(message)).get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static WKURLRequestRef willSendRequestForFrame(WKBundlePageRef page, WKBundleFrameRef, uint64_t identifier, WKURLRequestRef wkRequest, WKURLResponseRef wkRedirectResponse, const void* clientInfo)
</span><span class="lines">@@ -176,11 +176,11 @@
</span><span class="cx"> 
</span><span class="cx">     ImmutableDictionary::MapType message;
</span><span class="cx">     message.set(String::fromUTF8(&quot;Page&quot;), toImpl(page));
</span><del>-    message.set(String::fromUTF8(&quot;Identifier&quot;), WebUInt64::create(identifier));
</del><ins>+    message.set(String::fromUTF8(&quot;Identifier&quot;), API::UInt64::create(identifier));
</ins><span class="cx">     message.set(String::fromUTF8(&quot;Request&quot;), newRequest.get());
</span><span class="cx">     if (!toImpl(wkRedirectResponse)-&gt;resourceResponse().isNull())
</span><span class="cx">         message.set(String::fromUTF8(&quot;RedirectResponse&quot;), toImpl(wkRedirectResponse));
</span><del>-    WebProcess::shared().injectedBundle()-&gt;postMessage(String::fromUTF8(&quot;WebPage.DidSendRequestForResource&quot;), ImmutableDictionary::adopt(message).get());
</del><ins>+    WebProcess::shared().injectedBundle()-&gt;postMessage(String::fromUTF8(&quot;WebPage.DidSendRequestForResource&quot;), ImmutableDictionary::create(std::move(message)).get());
</ins><span class="cx"> 
</span><span class="cx">     return toAPI(newRequest.release().leakRef());
</span><span class="cx"> }
</span><span class="lines">@@ -189,35 +189,35 @@
</span><span class="cx"> {
</span><span class="cx">     ImmutableDictionary::MapType message;
</span><span class="cx">     message.set(String::fromUTF8(&quot;Page&quot;), toImpl(page));
</span><del>-    message.set(String::fromUTF8(&quot;Identifier&quot;), WebUInt64::create(identifier));
</del><ins>+    message.set(String::fromUTF8(&quot;Identifier&quot;), API::UInt64::create(identifier));
</ins><span class="cx">     message.set(String::fromUTF8(&quot;Response&quot;), toImpl(response));
</span><del>-    WebProcess::shared().injectedBundle()-&gt;postMessage(String::fromUTF8(&quot;WebPage.DidReceiveResponseForResource&quot;), ImmutableDictionary::adopt(message).get());
</del><ins>+    WebProcess::shared().injectedBundle()-&gt;postMessage(String::fromUTF8(&quot;WebPage.DidReceiveResponseForResource&quot;), ImmutableDictionary::create(std::move(message)).get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static void didReceiveContentLengthForResource(WKBundlePageRef page, WKBundleFrameRef, uint64_t identifier, uint64_t length, const void*)
</span><span class="cx"> {
</span><span class="cx">     ImmutableDictionary::MapType message;
</span><span class="cx">     message.set(String::fromUTF8(&quot;Page&quot;), toImpl(page));
</span><del>-    message.set(String::fromUTF8(&quot;Identifier&quot;), WebUInt64::create(identifier));
-    message.set(String::fromUTF8(&quot;ContentLength&quot;), WebUInt64::create(length));
-    WebProcess::shared().injectedBundle()-&gt;postMessage(String::fromUTF8(&quot;WebPage.DidReceiveContentLengthForResource&quot;), ImmutableDictionary::adopt(message).get());
</del><ins>+    message.set(String::fromUTF8(&quot;Identifier&quot;), API::UInt64::create(identifier));
+    message.set(String::fromUTF8(&quot;ContentLength&quot;), API::UInt64::create(length));
+    WebProcess::shared().injectedBundle()-&gt;postMessage(String::fromUTF8(&quot;WebPage.DidReceiveContentLengthForResource&quot;), ImmutableDictionary::create(std::move(message)).get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static void didFinishLoadForResource(WKBundlePageRef page, WKBundleFrameRef, uint64_t identifier, const void*)
</span><span class="cx"> {
</span><span class="cx">     ImmutableDictionary::MapType message;
</span><span class="cx">     message.set(String::fromUTF8(&quot;Page&quot;), toImpl(page));
</span><del>-    message.set(String::fromUTF8(&quot;Identifier&quot;), WebUInt64::create(identifier));
-    WebProcess::shared().injectedBundle()-&gt;postMessage(String::fromUTF8(&quot;WebPage.DidFinishLoadForResource&quot;), ImmutableDictionary::adopt(message).get());
</del><ins>+    message.set(String::fromUTF8(&quot;Identifier&quot;), API::UInt64::create(identifier));
+    WebProcess::shared().injectedBundle()-&gt;postMessage(String::fromUTF8(&quot;WebPage.DidFinishLoadForResource&quot;), ImmutableDictionary::create(std::move(message)).get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static void didFailLoadForResource(WKBundlePageRef page, WKBundleFrameRef, uint64_t identifier, WKErrorRef error, const void*)
</span><span class="cx"> {
</span><span class="cx">     ImmutableDictionary::MapType message;
</span><span class="cx">     message.set(String::fromUTF8(&quot;Page&quot;), toImpl(page));
</span><del>-    message.set(String::fromUTF8(&quot;Identifier&quot;), WebUInt64::create(identifier));
</del><ins>+    message.set(String::fromUTF8(&quot;Identifier&quot;), API::UInt64::create(identifier));
</ins><span class="cx">     message.set(String::fromUTF8(&quot;Error&quot;), toImpl(error));
</span><del>-    WebProcess::shared().injectedBundle()-&gt;postMessage(String::fromUTF8(&quot;WebPage.DidFailLoadForResource&quot;), ImmutableDictionary::adopt(message).get());
</del><ins>+    WebProcess::shared().injectedBundle()-&gt;postMessage(String::fromUTF8(&quot;WebPage.DidFailLoadForResource&quot;), ImmutableDictionary::create(std::move(message)).get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static void webkitWebPageGetProperty(GObject* object, guint propId, GValue* value, GParamSpec* paramSpec)
</span><span class="lines">@@ -374,9 +374,9 @@
</span><span class="cx"> void webkitWebPageDidReceiveMessage(WebKitWebPage* page, const String&amp; messageName, ImmutableDictionary&amp; message)
</span><span class="cx"> {
</span><span class="cx">     if (messageName == String(&quot;GetSnapshot&quot;)) {
</span><del>-        SnapshotOptions snapshotOptions = static_cast&lt;SnapshotOptions&gt;(static_cast&lt;WebUInt64*&gt;(message.get(&quot;SnapshotOptions&quot;))-&gt;value());
-        uint64_t callbackID = static_cast&lt;WebUInt64*&gt;(message.get(&quot;CallbackID&quot;))-&gt;value();
-        SnapshotRegion region = static_cast&lt;SnapshotRegion&gt;(static_cast&lt;WebUInt64*&gt;(message.get(&quot;SnapshotRegion&quot;))-&gt;value());
</del><ins>+        SnapshotOptions snapshotOptions = static_cast&lt;SnapshotOptions&gt;(static_cast&lt;API::UInt64*&gt;(message.get(&quot;SnapshotOptions&quot;))-&gt;value());
+        uint64_t callbackID = static_cast&lt;API::UInt64*&gt;(message.get(&quot;CallbackID&quot;))-&gt;value();
+        SnapshotRegion region = static_cast&lt;SnapshotRegion&gt;(static_cast&lt;API::UInt64*&gt;(message.get(&quot;SnapshotRegion&quot;))-&gt;value());
</ins><span class="cx"> 
</span><span class="cx">         RefPtr&lt;WebImage&gt; snapshotImage;
</span><span class="cx">         WebPage* webPage = page-&gt;priv-&gt;webPage;
</span><span class="lines">@@ -398,9 +398,9 @@
</span><span class="cx"> 
</span><span class="cx">         ImmutableDictionary::MapType messageReply;
</span><span class="cx">         messageReply.set(&quot;Page&quot;, webPage);
</span><del>-        messageReply.set(&quot;CallbackID&quot;, WebUInt64::create(callbackID));
</del><ins>+        messageReply.set(&quot;CallbackID&quot;, API::UInt64::create(callbackID));
</ins><span class="cx">         messageReply.set(&quot;Snapshot&quot;, snapshotImage);
</span><del>-        WebProcess::shared().injectedBundle()-&gt;postMessage(&quot;WebPage.DidGetSnapshot&quot;, ImmutableDictionary::adopt(messageReply).get());
</del><ins>+        WebProcess::shared().injectedBundle()-&gt;postMessage(&quot;WebPage.DidGetSnapshot&quot;, ImmutableDictionary::create(std::move(messageReply)).get());
</ins><span class="cx">     } else
</span><span class="cx">         ASSERT_NOT_REACHED();
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPImacWKWebProcessPlugInh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -39,9 +39,6 @@
</span><span class="cx"> - (void)webProcessPlugIn:(WKWebProcessPlugInController *)plugInController initializeWithObject:(id)initializationObject;
</span><span class="cx"> - (void)webProcessPlugIn:(WKWebProcessPlugInController *)plugInController didCreateBrowserContextController:(WKWebProcessPlugInBrowserContextController *)browserContextController;
</span><span class="cx"> - (void)webProcessPlugIn:(WKWebProcessPlugInController *)plugInController willDestroyBrowserContextController:(WKWebProcessPlugInBrowserContextController *)browserContextController;
</span><del>-
-- (void)webProcessPlugInInitialize:(WKWebProcessPlugInController *)plugInController DEPRECATED_ATTRIBUTE;
-
</del><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> WK_API_CLASS
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPImacWKWebProcessPlugInmm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -28,7 +28,6 @@
</span><span class="cx"> 
</span><span class="cx"> #if WK_API_ENABLED
</span><span class="cx"> 
</span><del>-#import &quot;InjectedBundle.h&quot;
</del><span class="cx"> #import &quot;WKConnectionInternal.h&quot;
</span><span class="cx"> #import &quot;WKBundle.h&quot;
</span><span class="cx"> #import &quot;WKBundleAPICast.h&quot;
</span><span class="lines">@@ -38,53 +37,40 @@
</span><span class="cx"> 
</span><span class="cx"> using namespace WebKit;
</span><span class="cx"> 
</span><del>-typedef HashMap&lt;WKBundlePageRef, RetainPtr&lt;WKWebProcessPlugInBrowserContextController *&gt;&gt; BundlePageWrapperCache;
-
</del><span class="cx"> @interface WKWebProcessPlugInController () {
</span><ins>+    API::ObjectStorage&lt;InjectedBundle&gt; _bundle;
</ins><span class="cx">     RetainPtr&lt;id &lt;WKWebProcessPlugIn&gt;&gt; _principalClassInstance;
</span><del>-    RefPtr&lt;InjectedBundle&gt; _bundle;
-    BundlePageWrapperCache _bundlePageWrapperCache;
-    RetainPtr&lt;WKConnection *&gt; _connectionWrapper;
</del><span class="cx"> }
</span><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> @implementation WKWebProcessPlugInController
</span><span class="cx"> 
</span><ins>+- (void)dealloc
+{
+    _bundle-&gt;~InjectedBundle();
+
+    [super dealloc];
+}
+
</ins><span class="cx"> static void didCreatePage(WKBundleRef bundle, WKBundlePageRef page, const void* clientInfo)
</span><span class="cx"> {
</span><span class="cx">     WKWebProcessPlugInController *plugInController = (WKWebProcessPlugInController *)clientInfo;
</span><del>-    id&lt;WKWebProcessPlugIn&gt; principalClassInstance = plugInController-&gt;_principalClassInstance.get();
</del><ins>+    id &lt;WKWebProcessPlugIn&gt; principalClassInstance = plugInController-&gt;_principalClassInstance.get();
</ins><span class="cx"> 
</span><del>-    if ([principalClassInstance respondsToSelector:@selector(webProcessPlugIn:didCreateBrowserContextController:)]) {
-        ASSERT(!plugInController-&gt;_bundlePageWrapperCache.contains(page));
-
-        WKWebProcessPlugInBrowserContextController* browserContextController = [[WKWebProcessPlugInBrowserContextController alloc] _initWithBundlePageRef:page];
-        plugInController-&gt;_bundlePageWrapperCache.set(page, browserContextController);
-
-        [principalClassInstance webProcessPlugIn:plugInController didCreateBrowserContextController:browserContextController];
-    }
</del><ins>+    if ([principalClassInstance respondsToSelector:@selector(webProcessPlugIn:didCreateBrowserContextController:)])
+        [principalClassInstance webProcessPlugIn:plugInController didCreateBrowserContextController:wrapper(*toImpl(page))];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static void willDestroyPage(WKBundleRef bundle, WKBundlePageRef page, const void* clientInfo)
</span><span class="cx"> {
</span><span class="cx">     WKWebProcessPlugInController *plugInController = (WKWebProcessPlugInController *)clientInfo;
</span><del>-    id&lt;WKWebProcessPlugIn&gt; principalClassInstance = plugInController-&gt;_principalClassInstance.get();
</del><ins>+    id &lt;WKWebProcessPlugIn&gt; principalClassInstance = plugInController-&gt;_principalClassInstance.get();
</ins><span class="cx"> 
</span><del>-    // If we never added the bundle page to the cache, which can happen if webProcessPlugIn:didCreateBrowserContextController: is not implemented,
-    // there is no reason to call webProcessPlugIn:willDestroyBrowserContextController:, so don't.
-    BundlePageWrapperCache::iterator it = plugInController-&gt;_bundlePageWrapperCache.find(page);
-    if (it == plugInController-&gt;_bundlePageWrapperCache.end()) {
-        ASSERT(![principalClassInstance respondsToSelector:@selector(webProcessPlugIn:didCreateBrowserContextController:)]);
-        return;
-    }
-
</del><span class="cx">     if ([principalClassInstance respondsToSelector:@selector(webProcessPlugIn:willDestroyBrowserContextController:)])
</span><del>-        [principalClassInstance webProcessPlugIn:plugInController willDestroyBrowserContextController:it-&gt;value.get()];
-
-    plugInController-&gt;_bundlePageWrapperCache.remove(it);
</del><ins>+        [principalClassInstance webProcessPlugIn:plugInController willDestroyBrowserContextController:wrapper(*toImpl(page))];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-static void setUpBundleClient(WKWebProcessPlugInController *plugInController, WKBundleRef bundleRef)
</del><ins>+static void setUpBundleClient(WKWebProcessPlugInController *plugInController, InjectedBundle&amp; bundle)
</ins><span class="cx"> {
</span><span class="cx">     WKBundleClientV1 bundleClient;
</span><span class="cx">     memset(&amp;bundleClient, 0, sizeof(bundleClient));
</span><span class="lines">@@ -94,43 +80,27 @@
</span><span class="cx">     bundleClient.didCreatePage = didCreatePage;
</span><span class="cx">     bundleClient.willDestroyPage = willDestroyPage;
</span><span class="cx"> 
</span><del>-    WKBundleSetClient(bundleRef, &amp;bundleClient.base);
</del><ins>+    bundle.initializeClient(&amp;bundleClient.base);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-static WKWebProcessPlugInController *sharedInstance;
-
-+ (WKWebProcessPlugInController *)_shared
</del><ins>+- (void)_setPrincipalClassInstance:(id &lt;WKWebProcessPlugIn&gt;)principalClassInstance
</ins><span class="cx"> {
</span><del>-    ASSERT_WITH_MESSAGE(sharedInstance, &quot;+[WKWebProcessPlugIn _shared] called without first initializing it.&quot;);
-    return sharedInstance;
-}
-
-- (id)_initWithPrincipalClassInstance:(id&lt;WKWebProcessPlugIn&gt;)principalClassInstance bundleRef:(WKBundleRef)bundleRef
-{
-    self = [super init];
-    if (!self)
-        return nil;
-
</del><ins>+    ASSERT(!_principalClassInstance);
</ins><span class="cx">     _principalClassInstance = principalClassInstance;
</span><del>-    _bundle = toImpl(bundleRef);
</del><span class="cx"> 
</span><del>-    ASSERT_WITH_MESSAGE(!sharedInstance, &quot;WKWebProcessPlugInController initialized multiple times.&quot;);
-    sharedInstance = self;
-
-    setUpBundleClient(self, bundleRef);
-
-    return self;
</del><ins>+    setUpBundleClient(self, *_bundle);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (WKWebProcessPlugInBrowserContextController *)_browserContextControllerForBundlePageRef:(WKBundlePageRef)pageRef
</del><ins>+- (WKConnection *)connection
</ins><span class="cx"> {
</span><del>-    ASSERT(_bundlePageWrapperCache.contains(pageRef));
-    return _bundlePageWrapperCache.get(pageRef).get();
</del><ins>+    return wrapper(*_bundle-&gt;webConnectionToUIProcess());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (WKConnection *)connection
</del><ins>+#pragma mark WKObject protocol implementation
+
+- (API::Object&amp;)_apiObject
</ins><span class="cx"> {
</span><del>-    return wrapper(*_bundle-&gt;webConnectionToUIProcess());
</del><ins>+    return *_bundle;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> @end
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPImacWKWebProcessPlugInBrowserContextControllermm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -44,23 +44,19 @@
</span><span class="cx"> using namespace WebKit;
</span><span class="cx"> 
</span><span class="cx"> @implementation WKWebProcessPlugInBrowserContextController {
</span><del>-    WKRetainPtr&lt;WKBundlePageRef&gt; _bundlePageRef;
</del><ins>+    API::ObjectStorage&lt;WebPage&gt; _page;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (id)_initWithBundlePageRef:(WKBundlePageRef)bundlePageRef
</del><ins>+- (void)dealloc
</ins><span class="cx"> {
</span><del>-    self = [super init];
-    if (!self)
-        return nil;
</del><ins>+    _page-&gt;~WebPage();
</ins><span class="cx"> 
</span><del>-    _bundlePageRef = bundlePageRef;
-
-    return self;
</del><ins>+    [super dealloc];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (WKDOMDocument *)mainFrameDocument
</span><span class="cx"> {
</span><del>-    WebCore::Frame* webCoreMainFrame = toImpl(_bundlePageRef.get())-&gt;mainFrame();
</del><ins>+    Frame* webCoreMainFrame = _page-&gt;mainFrame();
</ins><span class="cx">     if (!webCoreMainFrame)
</span><span class="cx">         return nil;
</span><span class="cx"> 
</span><span class="lines">@@ -69,25 +65,32 @@
</span><span class="cx"> 
</span><span class="cx"> - (WKDOMRange *)selectedRange
</span><span class="cx"> {
</span><del>-    RefPtr&lt;WebCore::Range&gt; range = toImpl(_bundlePageRef.get())-&gt;currentSelectionAsRange();
</del><ins>+    RefPtr&lt;Range&gt; range = _page-&gt;currentSelectionAsRange();
</ins><span class="cx">     if (!range)
</span><span class="cx">         return nil;
</span><span class="cx"> 
</span><span class="cx">     return toWKDOMRange(range.get());
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#pragma mark WKObject protocol implementation
+
+- (API::Object&amp;)_apiObject
+{
+    return *_page;
+}
+
</ins><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> @implementation WKWebProcessPlugInBrowserContextController (Private)
</span><span class="cx"> 
</span><span class="cx"> - (WKBundlePageRef)_bundlePageRef
</span><span class="cx"> {
</span><del>-    return _bundlePageRef.get();
</del><ins>+    return toAPI(_page.get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (WKBrowsingContextHandle *)handle
</span><span class="cx"> {
</span><del>-    return [[[WKBrowsingContextHandle alloc] _initWithPageID:toImpl(_bundlePageRef.get())-&gt;pageID()] autorelease];
</del><ins>+    return [[[WKBrowsingContextHandle alloc] _initWithPageID:_page-&gt;pageID()] autorelease];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> + (instancetype)lookUpBrowsingContextFromHandle:(WKBrowsingContextHandle *)handle
</span><span class="lines">@@ -96,7 +99,7 @@
</span><span class="cx">     if (!webPage)
</span><span class="cx">         return nil;
</span><span class="cx"> 
</span><del>-    return [[WKWebProcessPlugInController _shared] _browserContextControllerForBundlePageRef:toAPI(webPage)];
</del><ins>+    return wrapper(*webPage);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> @end
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPImacWKWebProcessPlugInBrowserContextControllerInternalh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerInternal.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerInternal.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerInternal.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -24,14 +24,23 @@
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> #import &quot;WKWebProcessPlugInBrowserContextControllerPrivate.h&quot;
</span><del>-#import &quot;WKBase.h&quot;
</del><span class="cx"> 
</span><span class="cx"> #if WK_API_ENABLED
</span><span class="cx"> 
</span><del>-@interface WKWebProcessPlugInBrowserContextController ()
</del><ins>+#import &quot;WKObject.h&quot;
+#import &quot;WebPage.h&quot;
</ins><span class="cx"> 
</span><del>-- (id)_initWithBundlePageRef:(WKBundlePageRef)bundlePageRef;
</del><ins>+namespace WebKit {
</ins><span class="cx"> 
</span><ins>+inline WKWebProcessPlugInBrowserContextController *wrapper(WebPage&amp; page)
+{
+    ASSERT([page.wrapper() isKindOfClass:[WKWebProcessPlugInBrowserContextController class]]);
+    return (WKWebProcessPlugInBrowserContextController *)page.wrapper();
+}
+
+}
+
+@interface WKWebProcessPlugInBrowserContextController () &lt;WKObject&gt;
</ins><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> #endif // WK_API_ENABLED
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPImacWKWebProcessPlugInInternalh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInInternal.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInInternal.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInInternal.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -23,17 +23,25 @@
</span><span class="cx">  * THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#import &quot;WKWebProcessPlugIn.h&quot;
</del><ins>+#import &quot;WKWebProcessPlugInPrivate.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> #if WK_API_ENABLED
</span><span class="cx"> 
</span><del>-@interface WKWebProcessPlugInController ()
</del><ins>+#import &quot;InjectedBundle.h&quot;
+#import &quot;WKObject.h&quot;
</ins><span class="cx"> 
</span><del>-+ (WKWebProcessPlugInController *)_shared;
-- (id)_initWithPrincipalClassInstance:(id&lt;WKWebProcessPlugIn&gt;)principalClassInstance bundleRef:(WKBundleRef)bundleRef;
</del><ins>+namespace WebKit {
</ins><span class="cx"> 
</span><del>-- (WKWebProcessPlugInBrowserContextController *)_browserContextControllerForBundlePageRef:(WKBundlePageRef)pageRef;
</del><ins>+inline WKWebProcessPlugInController *wrapper(InjectedBundle&amp; bundle)
+{
+    ASSERT([bundle.wrapper() isKindOfClass:[WKWebProcessPlugInController class]]);
+    return (WKWebProcessPlugInController *)bundle.wrapper();
+}
</ins><span class="cx"> 
</span><ins>+}
+
+@interface WKWebProcessPlugInController () &lt;WKObject&gt;
+- (void)_setPrincipalClassInstance:(id &lt;WKWebProcessPlugIn&gt;)principalClassInstance;
</ins><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> #endif // WK_API_ENABLED
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessInjectedBundleAPImacWKWebProcessPlugInPrivateh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInPrivate.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInPrivate.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInPrivate.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -29,7 +29,7 @@
</span><span class="cx"> 
</span><span class="cx"> @interface WKWebProcessPlugInController (Private)
</span><span class="cx"> 
</span><del>-@property(readonly) WKBundleRef _bundleRef;
</del><ins>+@property (readonly) WKBundleRef _bundleRef;
</ins><span class="cx"> 
</span><span class="cx"> @end
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessInjectedBundleDOMInjectedBundleNodeHandleh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -44,7 +44,7 @@
</span><span class="cx"> class WebFrame;
</span><span class="cx"> class WebImage;
</span><span class="cx"> 
</span><del>-class InjectedBundleNodeHandle : public API::TypedObject&lt;API::Object::Type::BundleNodeHandle&gt; {
</del><ins>+class InjectedBundleNodeHandle : public API::ObjectImpl&lt;API::Object::Type::BundleNodeHandle&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;InjectedBundleNodeHandle&gt; getOrCreate(JSContextRef, JSObjectRef);
</span><span class="cx">     static PassRefPtr&lt;InjectedBundleNodeHandle&gt; getOrCreate(WebCore::Node*);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessInjectedBundleDOMInjectedBundleRangeHandleh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -39,7 +39,7 @@
</span><span class="cx"> 
</span><span class="cx"> class InjectedBundleScriptWorld;
</span><span class="cx"> 
</span><del>-class InjectedBundleRangeHandle : public API::TypedObject&lt;API::Object::Type::BundleRangeHandle&gt; {
</del><ins>+class InjectedBundleRangeHandle : public API::ObjectImpl&lt;API::Object::Type::BundleRangeHandle&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;InjectedBundleRangeHandle&gt; getOrCreate(JSContextRef, JSObjectRef);
</span><span class="cx">     static PassRefPtr&lt;InjectedBundleRangeHandle&gt; getOrCreate(WebCore::Range*);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessInjectedBundleInjectedBundleh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -74,7 +74,7 @@
</span><span class="cx"> class WebPage;
</span><span class="cx"> class WebPageGroupProxy;
</span><span class="cx"> 
</span><del>-class InjectedBundle : public API::TypedObject&lt;API::Object::Type::Bundle&gt; {
</del><ins>+class InjectedBundle : public API::ObjectImpl&lt;API::Object::Type::Bundle&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;InjectedBundle&gt; create(const String&amp; path)
</span><span class="cx">     {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessInjectedBundleInjectedBundleBackForwardListh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleBackForwardList.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleBackForwardList.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleBackForwardList.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -35,7 +35,7 @@
</span><span class="cx"> 
</span><span class="cx"> class InjectedBundleBackForwardListItem;
</span><span class="cx"> 
</span><del>-class InjectedBundleBackForwardList : public API::TypedObject&lt;API::Object::Type::BundleBackForwardList&gt; {
</del><ins>+class InjectedBundleBackForwardList : public API::ObjectImpl&lt;API::Object::Type::BundleBackForwardList&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;InjectedBundleBackForwardList&gt; create(WebPage* page)
</span><span class="cx">     {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessInjectedBundleInjectedBundleBackForwardListItemh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleBackForwardListItem.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleBackForwardListItem.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleBackForwardListItem.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -37,7 +37,7 @@
</span><span class="cx"> 
</span><span class="cx"> class WebPageProxy;
</span><span class="cx"> 
</span><del>-class InjectedBundleBackForwardListItem : public API::TypedObject&lt;API::Object::Type::BundleBackForwardListItem&gt; {
</del><ins>+class InjectedBundleBackForwardListItem : public API::ObjectImpl&lt;API::Object::Type::BundleBackForwardListItem&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;InjectedBundleBackForwardListItem&gt; create(PassRefPtr&lt;WebCore::HistoryItem&gt; item)
</span><span class="cx">     {
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessInjectedBundleInjectedBundleDOMWindowExtensionh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleDOMWindowExtension.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleDOMWindowExtension.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleDOMWindowExtension.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -40,7 +40,7 @@
</span><span class="cx"> class InjectedBundleScriptWorld;
</span><span class="cx"> class WebFrame;
</span><span class="cx"> 
</span><del>-class InjectedBundleDOMWindowExtension : public API::TypedObject&lt;API::Object::Type::BundleDOMWindowExtension&gt; {
</del><ins>+class InjectedBundleDOMWindowExtension : public API::ObjectImpl&lt;API::Object::Type::BundleDOMWindowExtension&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;InjectedBundleDOMWindowExtension&gt; create(WebFrame*, InjectedBundleScriptWorld*);
</span><span class="cx">     static InjectedBundleDOMWindowExtension* get(WebCore::DOMWindowExtension*);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessInjectedBundleInjectedBundleHitTestResulth"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleHitTestResult.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleHitTestResult.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleHitTestResult.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx"> class InjectedBundleNodeHandle;
</span><span class="cx"> class WebFrame;
</span><span class="cx"> 
</span><del>-class InjectedBundleHitTestResult : public API::TypedObject&lt;API::Object::Type::BundleHitTestResult&gt; {
</del><ins>+class InjectedBundleHitTestResult : public API::ObjectImpl&lt;API::Object::Type::BundleHitTestResult&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;InjectedBundleHitTestResult&gt; create(const WebCore::HitTestResult&amp;);
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessInjectedBundleInjectedBundleNavigationActionh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleNavigationAction.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleNavigationAction.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleNavigationAction.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -43,7 +43,7 @@
</span><span class="cx"> 
</span><span class="cx"> class WebFrame;
</span><span class="cx"> 
</span><del>-class InjectedBundleNavigationAction : public API::TypedObject&lt;API::Object::Type::BundleNavigationAction&gt; {
</del><ins>+class InjectedBundleNavigationAction : public API::ObjectImpl&lt;API::Object::Type::BundleNavigationAction&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;InjectedBundleNavigationAction&gt; create(WebFrame*, const WebCore::NavigationAction&amp;, PassRefPtr&lt;WebCore::FormState&gt;);
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessInjectedBundleInjectedBundlePageFormClientcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageFormClient.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageFormClient.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageFormClient.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -103,7 +103,7 @@
</span><span class="cx">     ImmutableDictionary::MapType map;
</span><span class="cx">     for (size_t i = 0; i &lt; values.size(); ++i)
</span><span class="cx">         map.set(values[i].first, WebString::create(values[i].second));
</span><del>-    RefPtr&lt;ImmutableDictionary&gt; textFieldsMap = ImmutableDictionary::adopt(map);
</del><ins>+    auto textFieldsMap = ImmutableDictionary::create(std::move(map));
</ins><span class="cx"> 
</span><span class="cx">     m_client.willSendSubmitEvent(toAPI(page), toAPI(nodeHandle.get()), toAPI(frame), toAPI(sourceFrame), toAPI(textFieldsMap.get()), m_client.base.clientInfo);
</span><span class="cx"> }
</span><span class="lines">@@ -118,7 +118,7 @@
</span><span class="cx">     ImmutableDictionary::MapType map;
</span><span class="cx">     for (size_t i = 0; i &lt; values.size(); ++i)
</span><span class="cx">         map.set(values[i].first, WebString::create(values[i].second));
</span><del>-    RefPtr&lt;ImmutableDictionary&gt; textFieldsMap = ImmutableDictionary::adopt(map);
</del><ins>+    auto textFieldsMap = ImmutableDictionary::create(std::move(map));
</ins><span class="cx"> 
</span><span class="cx">     WKTypeRef userDataToPass = 0;
</span><span class="cx">     m_client.willSubmitForm(toAPI(page), toAPI(nodeHandle.get()), toAPI(frame), toAPI(sourceFrame), toAPI(textFieldsMap.get()), &amp;userDataToPass, m_client.base.clientInfo);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessInjectedBundleInjectedBundleScriptWorldh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleScriptWorld.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleScriptWorld.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleScriptWorld.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -36,7 +36,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><del>-class InjectedBundleScriptWorld : public API::TypedObject&lt;API::Object::Type::BundleScriptWorld&gt; {
</del><ins>+class InjectedBundleScriptWorld : public API::ObjectImpl&lt;API::Object::Type::BundleScriptWorld&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;InjectedBundleScriptWorld&gt; create();
</span><span class="cx">     static PassRefPtr&lt;InjectedBundleScriptWorld&gt; getOrCreate(WebCore::DOMWrapperWorld&amp;);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessInjectedBundlemacInjectedBundleMacmm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/mac/InjectedBundleMac.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/mac/InjectedBundleMac.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/InjectedBundle/mac/InjectedBundleMac.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -98,25 +98,20 @@
</span><span class="cx">         return false;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    id&lt;WKWebProcessPlugIn&gt; instance = (id&lt;WKWebProcessPlugIn&gt;)[[principalClass alloc] init];
</del><ins>+    id &lt;WKWebProcessPlugIn&gt; instance = (id &lt;WKWebProcessPlugIn&gt;)[[principalClass alloc] init];
</ins><span class="cx">     if (!instance) {
</span><span class="cx">         WTFLogAlways(&quot;InjectedBundle::load failed - Could not initialize an instance of the principal class.\n&quot;);
</span><span class="cx">         return false;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    // Create the shared WKWebProcessPlugInController.
-    [[WKWebProcessPlugInController alloc] _initWithPrincipalClassInstance:instance bundleRef:toAPI(this)];
</del><ins>+    WKWebProcessPlugInController* plugInController = WebKit::wrapper(*this);
+    [plugInController _setPrincipalClassInstance:instance];
</ins><span class="cx"> 
</span><span class="cx">     if ([instance respondsToSelector:@selector(webProcessPlugIn:initializeWithObject:)]) {
</span><span class="cx">         RetainPtr&lt;id&gt; objCInitializationUserData;
</span><span class="cx">         if (initializationUserData &amp;&amp; initializationUserData-&gt;type() == API::Object::Type::ObjCObjectGraph)
</span><span class="cx">             objCInitializationUserData = static_cast&lt;ObjCObjectGraph*&gt;(initializationUserData)-&gt;rootObject();
</span><del>-        [instance webProcessPlugIn:[WKWebProcessPlugInController _shared] initializeWithObject:objCInitializationUserData.get()];
-    } else if ([instance respondsToSelector:@selector(webProcessPlugInInitialize:)]) {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored &quot;-Wdeprecated-declarations&quot;
-        [instance webProcessPlugInInitialize:[WKWebProcessPlugInController _shared]];
-#pragma clang diagnostic pop
</del><ins>+        [instance webProcessPlugIn:plugInController initializeWithObject:objCInitializationUserData.get()];
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     return true;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessMediaCacheWebMediaCacheManagercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/MediaCache/WebMediaCacheManager.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/MediaCache/WebMediaCacheManager.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/MediaCache/WebMediaCacheManager.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -43,7 +43,7 @@
</span><span class="cx"> WebMediaCacheManager::WebMediaCacheManager(WebProcess* process)
</span><span class="cx">     : m_process(process)
</span><span class="cx"> {
</span><del>-    m_process-&gt;addMessageReceiver(Messages::WebMediaCacheManager::messageReceiverName(), this);
</del><ins>+    m_process-&gt;addMessageReceiver(Messages::WebMediaCacheManager::messageReceiverName(), *this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebMediaCacheManager::getHostnamesWithMediaCache(uint64_t callbackID)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessNetworkWebResourceLoadercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -28,7 +28,6 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(NETWORK_PROCESS)
</span><span class="cx"> 
</span><del>-#include &quot;CertificateInfo.h&quot;
</del><span class="cx"> #include &quot;DataReference.h&quot;
</span><span class="cx"> #include &quot;Logging.h&quot;
</span><span class="cx"> #include &quot;NetworkProcessConnection.h&quot;
</span><span class="lines">@@ -36,6 +35,7 @@
</span><span class="cx"> #include &quot;WebCoreArgumentCoders.h&quot;
</span><span class="cx"> #include &quot;WebErrors.h&quot;
</span><span class="cx"> #include &quot;WebProcess.h&quot;
</span><ins>+#include &lt;WebCore/CertificateInfo.h&gt;
</ins><span class="cx"> #include &lt;WebCore/DocumentLoader.h&gt;
</span><span class="cx"> #include &lt;WebCore/ResourceBuffer.h&gt;
</span><span class="cx"> #include &lt;WebCore/ResourceError.h&gt;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessNetworkWebResourceLoaderh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/Network/WebResourceLoader.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/Network/WebResourceLoader.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/Network/WebResourceLoader.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -40,6 +40,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><ins>+class CertificateInfo;
</ins><span class="cx"> class ProtectionSpace;
</span><span class="cx"> class ResourceBuffer;
</span><span class="cx"> class ResourceError;
</span><span class="lines">@@ -50,7 +51,6 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><del>-class CertificateInfo;
</del><span class="cx"> typedef uint64_t ResourceLoadIdentifier;
</span><span class="cx"> 
</span><span class="cx"> class WebResourceLoader : public RefCounted&lt;WebResourceLoader&gt;, public CoreIPC::MessageSender {
</span><span class="lines">@@ -76,7 +76,7 @@
</span><span class="cx"> 
</span><span class="cx">     void willSendRequest(const WebCore::ResourceRequest&amp;, const WebCore::ResourceResponse&amp; redirectResponse);
</span><span class="cx">     void didSendData(uint64_t bytesSent, uint64_t totalBytesToBeSent);
</span><del>-    void didReceiveResponseWithCertificateInfo(const WebCore::ResourceResponse&amp;, const CertificateInfo&amp;, bool needsContinueDidReceiveResponseMessage);
</del><ins>+    void didReceiveResponseWithCertificateInfo(const WebCore::ResourceResponse&amp;, const WebCore::CertificateInfo&amp;, bool needsContinueDidReceiveResponseMessage);
</ins><span class="cx">     void didReceiveData(const CoreIPC::DataReference&amp;, int64_t encodedDataLength);
</span><span class="cx">     void didFinishResourceLoad(double finishTime);
</span><span class="cx">     void didFailResourceLoad(const WebCore::ResourceError&amp;);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessNetworkWebResourceLoadermessagesin"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/Network/WebResourceLoader.messages.in (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/Network/WebResourceLoader.messages.in        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/Network/WebResourceLoader.messages.in        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -29,7 +29,7 @@
</span><span class="cx">     // FIXME (NetworkProcess): We'll need much more granularity for response messages.
</span><span class="cx">     WillSendRequest(WebCore::ResourceRequest request, WebCore::ResourceResponse redirectResponse)
</span><span class="cx">     DidSendData(uint64_t bytesSent, uint64_t totalBytesToBeSent)
</span><del>-    DidReceiveResponseWithCertificateInfo(WebCore::ResourceResponse response, WebKit::CertificateInfo certificateInfo, bool needsContinueDidReceiveResponseMessage)
</del><ins>+    DidReceiveResponseWithCertificateInfo(WebCore::ResourceResponse response, WebCore::CertificateInfo certificateInfo, bool needsContinueDidReceiveResponseMessage)
</ins><span class="cx">     DidReceiveData(CoreIPC::DataReference data, int64_t encodedDataLength)
</span><span class="cx">     DidFinishResourceLoad(double finishTime)
</span><span class="cx">     DidFailResourceLoad(WebCore::ResourceError error)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessNetworkInfoWebNetworkInfoManagercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/NetworkInfo/WebNetworkInfoManager.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/NetworkInfo/WebNetworkInfoManager.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/NetworkInfo/WebNetworkInfoManager.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx"> WebNetworkInfoManager::WebNetworkInfoManager(WebProcess* process)
</span><span class="cx">     : m_process(process)
</span><span class="cx"> {
</span><del>-    m_process-&gt;addMessageReceiver(Messages::WebNetworkInfoManager::messageReceiverName(), this);
</del><ins>+    m_process-&gt;addMessageReceiver(Messages::WebNetworkInfoManager::messageReceiverName(), *this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebNetworkInfoManager::~WebNetworkInfoManager()
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessNotificationsWebNotificationManagercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/Notifications/WebNotificationManager.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/Notifications/WebNotificationManager.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/Notifications/WebNotificationManager.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -64,7 +64,7 @@
</span><span class="cx">     : m_process(process)
</span><span class="cx"> {
</span><span class="cx"> #if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS)
</span><del>-    m_process-&gt;addMessageReceiver(Messages::WebNotificationManager::messageReceiverName(), this);
</del><ins>+    m_process-&gt;addMessageReceiver(Messages::WebNotificationManager::messageReceiverName(), *this);
</ins><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessOriginDataWebOriginDataManagercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/OriginData/WebOriginDataManager.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/OriginData/WebOriginDataManager.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/OriginData/WebOriginDataManager.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx"> WebOriginDataManager::WebOriginDataManager(ChildProcess* childProcess)
</span><span class="cx">     : m_childProcess(childProcess)
</span><span class="cx"> {
</span><del>-    m_childProcess-&gt;addMessageReceiver(Messages::WebOriginDataManager::messageReceiverName(), this);
</del><ins>+    m_childProcess-&gt;addMessageReceiver(Messages::WebOriginDataManager::messageReceiverName(), *this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebOriginDataManager::getOrigins(WKOriginDataTypes, uint64_t callbackID)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessPluginsPluginViewcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/Plugins/PluginView.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/Plugins/PluginView.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/Plugins/PluginView.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -63,12 +63,12 @@
</span><span class="cx"> #include &lt;WebCore/RenderEmbeddedObject.h&gt;
</span><span class="cx"> #include &lt;WebCore/ResourceLoadScheduler.h&gt;
</span><span class="cx"> #include &lt;WebCore/ScriptController.h&gt;
</span><del>-#include &lt;WebCore/ScriptValue.h&gt;
</del><span class="cx"> #include &lt;WebCore/ScrollView.h&gt;
</span><span class="cx"> #include &lt;WebCore/SecurityOrigin.h&gt;
</span><span class="cx"> #include &lt;WebCore/SecurityPolicy.h&gt;
</span><span class="cx"> #include &lt;WebCore/Settings.h&gt;
</span><span class="cx"> #include &lt;WebCore/UserGestureIndicator.h&gt;
</span><ins>+#include &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> #include &lt;wtf/text/StringBuilder.h&gt;
</span><span class="cx"> 
</span><span class="cx"> using namespace JSC;
</span><span class="lines">@@ -1179,7 +1179,7 @@
</span><span class="cx">     // Evaluate the JavaScript code. Note that running JavaScript here could cause the plug-in to be destroyed, so we
</span><span class="cx">     // grab references to the plug-in here.
</span><span class="cx">     RefPtr&lt;Plugin&gt; plugin = m_plugin;
</span><del>-    ScriptValue result = frame-&gt;script().executeScript(jsString, request-&gt;allowPopups());
</del><ins>+    Deprecated::ScriptValue result = frame-&gt;script().executeScript(jsString, request-&gt;allowPopups());
</ins><span class="cx"> 
</span><span class="cx">     // Check if evaluating the JavaScript destroyed the plug-in.
</span><span class="cx">     if (!plugin-&gt;controller())
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessResourceCacheWebResourceCacheManagercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/ResourceCache/WebResourceCacheManager.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/ResourceCache/WebResourceCacheManager.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/ResourceCache/WebResourceCacheManager.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -47,7 +47,7 @@
</span><span class="cx"> WebResourceCacheManager::WebResourceCacheManager(WebProcess* process)
</span><span class="cx">     : m_process(process)
</span><span class="cx"> {
</span><del>-    m_process-&gt;addMessageReceiver(Messages::WebResourceCacheManager::messageReceiverName(), this);
</del><ins>+    m_process-&gt;addMessageReceiver(Messages::WebResourceCacheManager::messageReceiverName(), *this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebResourceCacheManager::getCacheOrigins(uint64_t callbackID) const
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessStorageStorageAreaMapcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/Storage/StorageAreaMap.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/Storage/StorageAreaMap.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/Storage/StorageAreaMap.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -71,7 +71,7 @@
</span><span class="cx">         WebProcess::shared().parentProcessConnection()-&gt;send(Messages::StorageManager::CreateLocalStorageMap(m_storageMapID, storageNamespace-&gt;storageNamespaceID(), SecurityOriginData::fromSecurityOrigin(m_securityOrigin.get())), 0);
</span><span class="cx">     else
</span><span class="cx">         WebProcess::shared().parentProcessConnection()-&gt;send(Messages::StorageManager::CreateSessionStorageMap(m_storageMapID, storageNamespace-&gt;storageNamespaceID(), SecurityOriginData::fromSecurityOrigin(m_securityOrigin.get())), 0);
</span><del>-    WebProcess::shared().addMessageReceiver(Messages::StorageAreaMap::messageReceiverName(), m_storageMapID, this);
</del><ins>+    WebProcess::shared().addMessageReceiver(Messages::StorageAreaMap::messageReceiverName(), m_storageMapID, *this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> StorageAreaMap::~StorageAreaMap()
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessWebConnectionToUIProcesscpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/WebConnectionToUIProcess.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/WebConnectionToUIProcess.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/WebConnectionToUIProcess.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -42,7 +42,7 @@
</span><span class="cx"> WebConnectionToUIProcess::WebConnectionToUIProcess(WebProcess* process)
</span><span class="cx">     : m_process(process)
</span><span class="cx"> {
</span><del>-    m_process-&gt;addMessageReceiver(Messages::WebConnection::messageReceiverName(), this);
</del><ins>+    m_process-&gt;addMessageReceiver(Messages::WebConnection::messageReceiverName(), *this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebConnectionToUIProcess::invalidate()
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessWebCoreSupportWebChromeClientcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -589,7 +589,8 @@
</span><span class="cx">     WebFrame* webFrame = webFrameLoaderClient ? webFrameLoaderClient-&gt;webFrame() : 0;
</span><span class="cx">     ASSERT(webFrame);
</span><span class="cx"> 
</span><del>-    m_page-&gt;sendSync(Messages::WebPageProxy::PrintFrame(webFrame-&gt;frameID()), Messages::WebPageProxy::PrintFrame::Reply());
</del><ins>+    unsigned syncSendFlags = (WebCore::AXObjectCache::accessibilityEnabled()) ? CoreIPC::SpinRunLoopWhileWaitingForReply : 0;
+    m_page-&gt;sendSync(Messages::WebPageProxy::PrintFrame(webFrame-&gt;frameID()), Messages::WebPageProxy::PrintFrame::Reply(), CoreIPC::Connection::NoTimeout, syncSendFlags);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(SQL_DATABASE)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessWebCoreSupportWebDatabaseManagercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/WebCoreSupport/WebDatabaseManager.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/WebCoreSupport/WebDatabaseManager.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/WebCoreSupport/WebDatabaseManager.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -50,7 +50,7 @@
</span><span class="cx"> WebDatabaseManager::WebDatabaseManager(WebProcess* process)
</span><span class="cx">     : m_process(process)
</span><span class="cx"> {
</span><del>-    m_process-&gt;addMessageReceiver(Messages::WebDatabaseManager::messageReceiverName(), this);
</del><ins>+    m_process-&gt;addMessageReceiver(Messages::WebDatabaseManager::messageReceiverName(), *this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebDatabaseManager::initialize(const WebProcessCreationParameters&amp; parameters)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessWebCoreSupportWebFrameLoaderClientcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -27,7 +27,6 @@
</span><span class="cx"> #include &quot;WebFrameLoaderClient.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;AuthenticationManager.h&quot;
</span><del>-#include &quot;CertificateInfo.h&quot;
</del><span class="cx"> #include &quot;DataReference.h&quot;
</span><span class="cx"> #include &quot;InjectedBundle.h&quot;
</span><span class="cx"> #include &quot;InjectedBundleBackForwardListItem.h&quot;
</span><span class="lines">@@ -52,6 +51,7 @@
</span><span class="cx"> #include &lt;JavaScriptCore/APICast.h&gt;
</span><span class="cx"> #include &lt;JavaScriptCore/JSObject.h&gt;
</span><span class="cx"> #include &lt;WebCore/AXObjectCache.h&gt;
</span><ins>+#include &lt;WebCore/CertificateInfo.h&gt;
</ins><span class="cx"> #include &lt;WebCore/Chrome.h&gt;
</span><span class="cx"> #include &lt;WebCore/DOMWrapperWorld.h&gt;
</span><span class="cx"> #include &lt;WebCore/DocumentLoader.h&gt;
</span><span class="lines">@@ -728,7 +728,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // Notify the UIProcess.
</span><del>-    if (!webPage-&gt;sendSync(Messages::WebPageProxy::DecidePolicyForNavigationAction(m_frame-&gt;frameID(), action-&gt;navigationType(), action-&gt;modifiers(), action-&gt;mouseButton(), originatingFrame ? originatingFrame-&gt;frameID() : 0, request, listenerID, InjectedBundleUserMessageEncoder(userData.get())), Messages::WebPageProxy::DecidePolicyForNavigationAction::Reply(receivedPolicyAction, policyAction, downloadID)))
</del><ins>+    if (!webPage-&gt;sendSync(Messages::WebPageProxy::DecidePolicyForNavigationAction(m_frame-&gt;frameID(), action-&gt;navigationType(), action-&gt;modifiers(), action-&gt;mouseButton(), originatingFrame ? originatingFrame-&gt;frameID() : 0, navigationAction.resourceRequest(), request, listenerID, InjectedBundleUserMessageEncoder(userData.get())), Messages::WebPageProxy::DecidePolicyForNavigationAction::Reply(receivedPolicyAction, policyAction, downloadID)))
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     // We call this synchronously because WebCore cannot gracefully handle a frame load without a synchronous navigation policy reply.
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessWebPageDrawingAreah"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/WebPage/DrawingArea.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/WebPage/DrawingArea.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/WebPage/DrawingArea.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -126,6 +126,10 @@
</span><span class="cx">     virtual void updateGeometry(const WebCore::IntSize&amp; viewSize, const WebCore::IntSize&amp; layerPosition) { }
</span><span class="cx">     virtual void setDeviceScaleFactor(float) { }
</span><span class="cx">     virtual void setColorSpace(const ColorSpaceData&amp;) { }
</span><ins>+
+    virtual void beginTransientZoom() { }
+    virtual void adjustTransientZoom(double scale, WebCore::FloatPoint origin) { }
+    virtual void commitTransientZoom(double scale, WebCore::FloatPoint origin) { }
</ins><span class="cx"> #endif
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessWebPageDrawingAreamessagesin"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/WebPage/DrawingArea.messages.in (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/WebPage/DrawingArea.messages.in        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/WebPage/DrawingArea.messages.in        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -30,5 +30,9 @@
</span><span class="cx">     UpdateGeometry(WebCore::IntSize viewSize, WebCore::IntSize layerPosition)
</span><span class="cx">     SetDeviceScaleFactor(float deviceScaleFactor)
</span><span class="cx">     SetColorSpace(WebKit::ColorSpaceData colorSpace)
</span><ins>+    
+    BeginTransientZoom()
+    AdjustTransientZoom(double scale, WebCore::FloatPoint origin)
+    CommitTransientZoom(double scale, WebCore::FloatPoint origin)
</ins><span class="cx"> #endif
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessWebPagePageBannerh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/WebPage/PageBanner.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/WebPage/PageBanner.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/WebPage/PageBanner.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -43,7 +43,7 @@
</span><span class="cx"> 
</span><span class="cx"> class WebPage;
</span><span class="cx"> 
</span><del>-class PageBanner : public API::TypedObject&lt;API::Object::Type::BundlePageBanner&gt; {
</del><ins>+class PageBanner : public API::ObjectImpl&lt;API::Object::Type::BundlePageBanner&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     enum Type {
</span><span class="cx">         NotSet,
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessWebPagePageOverlayh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/WebPage/PageOverlay.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/WebPage/PageOverlay.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/WebPage/PageOverlay.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -42,7 +42,7 @@
</span><span class="cx"> class WebMouseEvent;
</span><span class="cx"> class WebPage;
</span><span class="cx"> 
</span><del>-class PageOverlay : public API::TypedObject&lt;API::Object::Type::BundlePageOverlay&gt; {
</del><ins>+class PageOverlay : public API::ObjectImpl&lt;API::Object::Type::BundlePageOverlay&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     class Client {
</span><span class="cx">     protected:
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessWebPageWebFrameh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/WebPage/WebFrame.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/WebPage/WebFrame.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/WebPage/WebFrame.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -58,7 +58,7 @@
</span><span class="cx"> class InjectedBundleScriptWorld;
</span><span class="cx"> class WebPage;
</span><span class="cx"> 
</span><del>-class WebFrame : public API::TypedObject&lt;API::Object::Type::BundleFrame&gt; {
</del><ins>+class WebFrame : public API::ObjectImpl&lt;API::Object::Type::BundleFrame&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;WebFrame&gt; createWithCoreMainFrame(WebPage*, WebCore::Frame*);
</span><span class="cx">     static PassRefPtr&lt;WebFrame&gt; createSubframe(WebPage*, const String&amp; frameName, WebCore::HTMLFrameOwnerElement*);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessWebPageWebInspectorcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/WebPage/WebInspector.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/WebPage/WebInspector.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/WebPage/WebInspector.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -34,12 +34,11 @@
</span><span class="cx"> #include &quot;WebPageCreationParameters.h&quot;
</span><span class="cx"> #include &quot;WebProcess.h&quot;
</span><span class="cx"> #include &lt;WebCore/InspectorController.h&gt;
</span><del>-#include &lt;WebCore/InspectorForwarding.h&gt;
</del><span class="cx"> #include &lt;WebCore/InspectorFrontendClient.h&gt;
</span><span class="cx"> #include &lt;WebCore/MainFrame.h&gt;
</span><span class="cx"> #include &lt;WebCore/Page.h&gt;
</span><span class="cx"> #include &lt;WebCore/ScriptController.h&gt;
</span><del>-#include &lt;WebCore/ScriptValue.h&gt;
</del><ins>+#include &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> #include &lt;wtf/text/StringConcatenate.h&gt;
</span><span class="cx"> 
</span><span class="cx"> using namespace WebCore;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessWebPageWebInspectorh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/WebPage/WebInspector.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/WebPage/WebInspector.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/WebPage/WebInspector.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -30,20 +30,16 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;APIObject.h&quot;
</span><span class="cx"> #include &quot;Connection.h&quot;
</span><ins>+#include &lt;WebCore/InspectorForwarding.h&gt;
</ins><span class="cx"> #include &lt;wtf/Noncopyable.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><del>-namespace WebCore {
-class InspectorFrontendChannel;
-}
-
</del><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><span class="cx"> class WebInspectorFrontendClient;
</span><span class="cx"> class WebPage;
</span><del>-struct WebPageCreationParameters;
</del><span class="cx"> 
</span><del>-class WebInspector : public API::TypedObject&lt;API::Object::Type::BundleInspector&gt; {
</del><ins>+class WebInspector : public API::ObjectImpl&lt;API::Object::Type::BundleInspector&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;WebInspector&gt; create(WebPage*, WebCore::InspectorFrontendChannel*);
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessWebPageWebPagecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -70,7 +70,6 @@
</span><span class="cx"> #include &quot;WebFullScreenManager.h&quot;
</span><span class="cx"> #include &quot;WebFullScreenManagerMessages.h&quot;
</span><span class="cx"> #include &quot;WebGeolocationClient.h&quot;
</span><del>-#include &quot;WebGeometry.h&quot;
</del><span class="cx"> #include &quot;WebImage.h&quot;
</span><span class="cx"> #include &quot;WebInspector.h&quot;
</span><span class="cx"> #include &quot;WebInspectorClient.h&quot;
</span><span class="lines">@@ -128,7 +127,6 @@
</span><span class="cx"> #include &lt;WebCore/RuntimeEnabledFeatures.h&gt;
</span><span class="cx"> #include &lt;WebCore/SchemeRegistry.h&gt;
</span><span class="cx"> #include &lt;WebCore/ScriptController.h&gt;
</span><del>-#include &lt;WebCore/ScriptValue.h&gt;
</del><span class="cx"> #include &lt;WebCore/SerializedScriptValue.h&gt;
</span><span class="cx"> #include &lt;WebCore/Settings.h&gt;
</span><span class="cx"> #include &lt;WebCore/ShadowRoot.h&gt;
</span><span class="lines">@@ -139,6 +137,7 @@
</span><span class="cx"> #include &lt;WebCore/VisiblePosition.h&gt;
</span><span class="cx"> #include &lt;WebCore/VisibleUnits.h&gt;
</span><span class="cx"> #include &lt;WebCore/markup.h&gt;
</span><ins>+#include &lt;bindings/ScriptValue.h&gt;
</ins><span class="cx"> #include &lt;runtime/JSCJSValue.h&gt;
</span><span class="cx"> #include &lt;runtime/JSLock.h&gt;
</span><span class="cx"> #include &lt;runtime/Operations.h&gt;
</span><span class="lines">@@ -389,6 +388,7 @@
</span><span class="cx">     setAutoSizingShouldExpandToViewHeight(parameters.autoSizingShouldExpandToViewHeight);
</span><span class="cx">     
</span><span class="cx">     setScrollPinningBehavior(parameters.scrollPinningBehavior);
</span><ins>+    setBackgroundExtendsBeyondPage(parameters.backgroundExtendsBeyondPage);
</ins><span class="cx"> 
</span><span class="cx">     m_userAgent = parameters.userAgent;
</span><span class="cx"> 
</span><span class="lines">@@ -404,18 +404,18 @@
</span><span class="cx">     // We use the DidFirstLayout milestone to determine when to unfreeze the layer tree.
</span><span class="cx">     m_page-&gt;addLayoutMilestones(DidFirstLayout);
</span><span class="cx"> 
</span><del>-    WebProcess::shared().addMessageReceiver(Messages::WebPage::messageReceiverName(), m_pageID, this);
</del><ins>+    WebProcess::shared().addMessageReceiver(Messages::WebPage::messageReceiverName(), m_pageID, *this);
</ins><span class="cx"> 
</span><span class="cx">     // FIXME: This should be done in the object constructors, and the objects themselves should be message receivers.
</span><del>-    WebProcess::shared().addMessageReceiver(Messages::DrawingArea::messageReceiverName(), m_pageID, this);
</del><ins>+    WebProcess::shared().addMessageReceiver(Messages::DrawingArea::messageReceiverName(), m_pageID, *this);
</ins><span class="cx"> #if USE(COORDINATED_GRAPHICS)
</span><del>-    WebProcess::shared().addMessageReceiver(Messages::CoordinatedLayerTreeHost::messageReceiverName(), m_pageID, this);
</del><ins>+    WebProcess::shared().addMessageReceiver(Messages::CoordinatedLayerTreeHost::messageReceiverName(), m_pageID, *this);
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><del>-    WebProcess::shared().addMessageReceiver(Messages::WebInspector::messageReceiverName(), m_pageID, this);
</del><ins>+    WebProcess::shared().addMessageReceiver(Messages::WebInspector::messageReceiverName(), m_pageID, *this);
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(FULLSCREEN_API)
</span><del>-    WebProcess::shared().addMessageReceiver(Messages::WebFullScreenManager::messageReceiverName(), m_pageID, this);
</del><ins>+    WebProcess::shared().addMessageReceiver(Messages::WebFullScreenManager::messageReceiverName(), m_pageID, *this);
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #ifndef NDEBUG
</span><span class="lines">@@ -692,7 +692,7 @@
</span><span class="cx">     repaintRects.reserveInitialCapacity(view-&gt;trackedRepaintRects().size());
</span><span class="cx"> 
</span><span class="cx">     for (const auto&amp; repaintRect : view-&gt;trackedRepaintRects())
</span><del>-        repaintRects.uncheckedAppend(WebRect::create(toAPI(repaintRect)));
</del><ins>+        repaintRects.uncheckedAppend(API::Rect::create(toAPI(repaintRect)));
</ins><span class="cx"> 
</span><span class="cx">     return API::Array::create(std::move(repaintRects));
</span><span class="cx"> }
</span><span class="lines">@@ -1319,6 +1319,12 @@
</span><span class="cx">     m_page-&gt;setShouldSuppressScrollbarAnimations(suppressAnimations);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void WebPage::setBackgroundExtendsBeyondPage(bool backgroundExtendsBeyondPage)
+{
+    if (m_page-&gt;settings().backgroundShouldExtendBeyondPage() != backgroundExtendsBeyondPage)
+        m_page-&gt;settings().setBackgroundShouldExtendBeyondPage(backgroundExtendsBeyondPage);
+}
+
</ins><span class="cx"> void WebPage::setPaginationMode(uint32_t mode)
</span><span class="cx"> {
</span><span class="cx">     Pagination pagination = m_page-&gt;pagination();
</span><span class="lines">@@ -2524,10 +2530,13 @@
</span><span class="cx">     settings.setLowPowerVideoAudioBufferSizeEnabled(store.getBoolValueForKey(WebPreferencesKey::lowPowerVideoAudioBufferSizeEnabledKey()));
</span><span class="cx">     settings.setSimpleLineLayoutEnabled(store.getBoolValueForKey(WebPreferencesKey::simpleLineLayoutEnabledKey()));
</span><span class="cx">     settings.setSimpleLineLayoutDebugBordersEnabled(store.getBoolValueForKey(WebPreferencesKey::simpleLineLayoutDebugBordersEnabledKey()));
</span><del>-    settings.setBackgroundShouldExtendBeyondPage(store.getBoolValueForKey(WebPreferencesKey::backgroundShouldExtendBeyondPageKey()));
</del><span class="cx"> 
</span><span class="cx">     settings.setUseLegacyTextAlignPositionedElementBehavior(store.getBoolValueForKey(WebPreferencesKey::useLegacyTextAlignPositionedElementBehaviorKey()));
</span><span class="cx"> 
</span><ins>+#if ENABLE(MEDIA_SOURCE)
+    settings.setMediaSourceEnabled(store.getBoolValueForKey(WebPreferencesKey::mediaSourceEnabledKey()));
+#endif
+
</ins><span class="cx">     platformPreferencesDidChange(store);
</span><span class="cx"> 
</span><span class="cx">     if (m_drawingArea)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessWebPageWebPageh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/WebPage/WebPage.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/WebPage/WebPage.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/WebPage/WebPage.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -163,7 +163,7 @@
</span><span class="cx"> 
</span><span class="cx"> typedef Vector&lt;RefPtr&lt;PageOverlay&gt;&gt; PageOverlayList;
</span><span class="cx"> 
</span><del>-class WebPage : public API::TypedObject&lt;API::Object::Type::BundlePage&gt;, public CoreIPC::MessageReceiver, public CoreIPC::MessageSender {
</del><ins>+class WebPage : public API::ObjectImpl&lt;API::Object::Type::BundlePage&gt;, public CoreIPC::MessageReceiver, public CoreIPC::MessageSender {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;WebPage&gt; create(uint64_t pageID, const WebPageCreationParameters&amp;);
</span><span class="cx">     virtual ~WebPage();
</span><span class="lines">@@ -318,6 +318,8 @@
</span><span class="cx"> 
</span><span class="cx">     void setSuppressScrollbarAnimations(bool);
</span><span class="cx"> 
</span><ins>+    void setBackgroundExtendsBeyondPage(bool);
+
</ins><span class="cx">     void setPaginationMode(uint32_t /* WebCore::Pagination::Mode */);
</span><span class="cx">     void setPaginationBehavesLikeColumns(bool);
</span><span class="cx">     void setPageLength(double);
</span><span class="lines">@@ -407,6 +409,7 @@
</span><span class="cx">     void elementDidBlur(WebCore::Node*);
</span><span class="cx">     void requestAutocorrectionData(const String&amp; textForAutocorrection, uint64_t callbackID);
</span><span class="cx">     void applyAutocorrection(const String&amp; correction, const String&amp; originalText, uint64_t callbackID);
</span><ins>+    void insertText(const String&amp; text, uint64_t replacementRangeStart, uint64_t replacementRangeEnd);
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     NotificationPermissionRequestManager* notificationPermissionRequestManager();
</span><span class="lines">@@ -479,7 +482,9 @@
</span><span class="cx">     void setComposition(const String&amp; text, Vector&lt;WebCore::CompositionUnderline&gt; underlines, uint64_t selectionStart, uint64_t selectionEnd, uint64_t replacementRangeStart, uint64_t replacementRangeEnd, EditorState&amp; newState);
</span><span class="cx">     void confirmComposition(EditorState&amp; newState);
</span><span class="cx">     void cancelComposition(EditorState&amp; newState);
</span><ins>+#if !PLATFORM(IOS)
</ins><span class="cx">     void insertText(const String&amp; text, uint64_t replacementRangeStart, uint64_t replacementRangeEnd, bool&amp; handled, EditorState&amp; newState);
</span><ins>+#endif
</ins><span class="cx">     void getMarkedRange(uint64_t&amp; location, uint64_t&amp; length);
</span><span class="cx">     void getSelectedRange(uint64_t&amp; location, uint64_t&amp; length);
</span><span class="cx">     void getAttributedSubstringFromRange(uint64_t location, uint64_t length, AttributedString&amp;);
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessWebPageWebPagemessagesin"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -47,6 +47,7 @@
</span><span class="cx">     ExtendSelection(uint32_t granularity)
</span><span class="cx">     RequestAutocorrectionData(String textForAutocorrection, uint64_t callbackID)
</span><span class="cx">     ApplyAutocorrection(String correction, String originalText, uint64_t callbackID)
</span><ins>+    InsertText(String text, uint64_t replacementRangeStart, uint64_t replacementRangeEnd)
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(TOUCH_EVENTS)
</span><span class="lines">@@ -147,6 +148,8 @@
</span><span class="cx">     ListenForLayoutMilestones(uint32_t milestones)
</span><span class="cx">     SetSuppressScrollbarAnimations(bool suppressAnimations)
</span><span class="cx"> 
</span><ins>+    SetBackgroundExtendsBeyondPage(bool backgroundExtendsBeyondPage)
+
</ins><span class="cx">     SetPaginationMode(uint32_t mode)
</span><span class="cx">     SetPaginationBehavesLikeColumns(bool behavesLikeColumns)
</span><span class="cx">     SetPageLength(double pageLength)
</span><span class="lines">@@ -271,7 +274,6 @@
</span><span class="cx">     SetComposition(String text, Vector&lt;WebCore::CompositionUnderline&gt; underlines, uint64_t selectionStart, uint64_t selectionEnd, uint64_t replacementRangeStart, uint64_t replacementRangeEnd) -&gt; (WebKit::EditorState newState)
</span><span class="cx">     ConfirmComposition() -&gt; (WebKit::EditorState newState)
</span><span class="cx">     CancelComposition() -&gt; (WebKit::EditorState newState)
</span><del>-    InsertText(String text, uint64_t replacementRangeStart, uint64_t replacementRangeEnd) -&gt; (bool handled, WebKit::EditorState newState)
</del><span class="cx">     GetMarkedRange() -&gt; (uint64_t location, uint64_t length)
</span><span class="cx">     GetSelectedRange() -&gt; (uint64_t location, uint64_t length)
</span><span class="cx">     GetAttributedSubstringFromRange(uint64_t location, uint64_t length) -&gt; (WebKit::AttributedString result)
</span><span class="lines">@@ -282,7 +284,9 @@
</span><span class="cx">     AcceptsFirstMouse(int eventNumber, WebKit::WebMouseEvent event) -&gt; (bool result)
</span><span class="cx">     InsertDictatedText(String text, uint64_t replacementRangeStart, uint64_t replacementRangeEnd, Vector&lt;WebCore::DictationAlternative&gt; dictationAlternatives) -&gt; (bool handled, WebKit::EditorState newState)
</span><span class="cx"> #endif
</span><del>-
</del><ins>+#if PLATFORM(MAC) &amp;&amp; !PLATFORM(IOS)
+    InsertText(String text, uint64_t replacementRangeStart, uint64_t replacementRangeEnd) -&gt; (bool handled, WebKit::EditorState newState)
+#endif
</ins><span class="cx">     SetMinimumLayoutSize(WebCore::IntSize minimumLayoutSize)
</span><span class="cx">     SetAutoSizingShouldExpandToViewHeight(bool shouldExpand)
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessWebPageWebPageGroupProxyh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/WebPage/WebPageGroupProxy.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/WebPage/WebPageGroupProxy.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/WebPage/WebPageGroupProxy.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -41,7 +41,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><del>-class WebPageGroupProxy : public API::TypedObject&lt;API::Object::Type::BundlePageGroup&gt; {
</del><ins>+class WebPageGroupProxy : public API::ObjectImpl&lt;API::Object::Type::BundlePageGroup&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;WebPageGroupProxy&gt; create(const WebPageGroupData&amp;);
</span><span class="cx">     virtual ~WebPageGroupProxy();
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessWebPageiosWebPageIOSmm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -118,7 +118,7 @@
</span><span class="cx">     return TextIterator::rangeFromLocationAndLength(frame-&gt;selection().rootEditableElementOrDocumentElement(), nsrange.location, nsrange.length);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebPage::insertText(const String&amp; text, uint64_t replacementRangeStart, uint64_t replacementRangeEnd, bool&amp; handled, EditorState&amp; newState)
</del><ins>+void WebPage::insertText(const String&amp; text, uint64_t replacementRangeStart, uint64_t replacementRangeEnd)
</ins><span class="cx"> {
</span><span class="cx">     Frame&amp; frame = m_page-&gt;focusController().focusedOrMainFrame();
</span><span class="cx">     
</span><span class="lines">@@ -131,13 +131,9 @@
</span><span class="cx">     if (!frame.editor().hasComposition()) {
</span><span class="cx">         // An insertText: might be handled by other responders in the chain if we don't handle it.
</span><span class="cx">         // One example is space bar that results in scrolling down the page.
</span><del>-        handled = frame.editor().insertText(text, 0);
-    } else {
-        handled = true;
</del><ins>+        frame.editor().insertText(text, 0);
+    } else
</ins><span class="cx">         frame.editor().confirmComposition(text);
</span><del>-    }
-    
-    newState = editorState();
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPage::insertDictatedText(const String&amp;, uint64_t, uint64_t, const Vector&lt;WebCore::DictationAlternative&gt;&amp;, bool&amp;, EditorState&amp;)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessWebPagemacTiledCoreAnimationDrawingAreah"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -104,6 +104,10 @@
</span><span class="cx">     virtual void setLayerHostingMode(uint32_t) OVERRIDE;
</span><span class="cx">     virtual void setColorSpace(const ColorSpaceData&amp;) OVERRIDE;
</span><span class="cx"> 
</span><ins>+    virtual void beginTransientZoom() OVERRIDE;
+    virtual void adjustTransientZoom(double scale, WebCore::FloatPoint origin) OVERRIDE;
+    virtual void commitTransientZoom(double scale, WebCore::FloatPoint origin) OVERRIDE;
+
</ins><span class="cx">     void updateLayerHostingContext();
</span><span class="cx"> 
</span><span class="cx">     void setRootCompositingLayer(CALayer *);
</span><span class="lines">@@ -143,6 +147,8 @@
</span><span class="cx">     WebCore::IntSize m_lastSentIntrinsicContentSize;
</span><span class="cx">     WebCore::Timer&lt;TiledCoreAnimationDrawingArea&gt; m_updateIntrinsicContentSizeTimer;
</span><span class="cx">     bool m_inUpdateGeometry;
</span><ins>+
+    double m_transientZoomScale;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessWebPagemacTiledCoreAnimationDrawingAreamm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -32,6 +32,7 @@
</span><span class="cx"> #import &quot;DrawingAreaProxyMessages.h&quot;
</span><span class="cx"> #import &quot;LayerHostingContext.h&quot;
</span><span class="cx"> #import &quot;LayerTreeContext.h&quot;
</span><ins>+#import &quot;ViewGestureControllerMessages.h&quot;
</ins><span class="cx"> #import &quot;WebFrame.h&quot;
</span><span class="cx"> #import &quot;WebPage.h&quot;
</span><span class="cx"> #import &quot;WebPageCreationParameters.h&quot;
</span><span class="lines">@@ -43,6 +44,8 @@
</span><span class="cx"> #import &lt;WebCore/GraphicsLayerCA.h&gt;
</span><span class="cx"> #import &lt;WebCore/MainFrame.h&gt;
</span><span class="cx"> #import &lt;WebCore/Page.h&gt;
</span><ins>+#import &lt;WebCore/RenderLayerBacking.h&gt;
+#import &lt;WebCore/RenderLayerCompositor.h&gt;
</ins><span class="cx"> #import &lt;WebCore/RenderView.h&gt;
</span><span class="cx"> #import &lt;WebCore/Settings.h&gt;
</span><span class="cx"> #import &lt;WebCore/TiledBacking.h&gt;
</span><span class="lines">@@ -697,6 +700,54 @@
</span><span class="cx">     return frameView &amp;&amp; frameView-&gt;frame().isMainFrame();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void TiledCoreAnimationDrawingArea::beginTransientZoom()
+{
+    FloatRect visibleContentRect = m_webPage-&gt;corePage()-&gt;mainFrame().view()-&gt;visibleContentRect(ScrollableArea::IncludeScrollbars);
+    m_webPage-&gt;send(Messages::ViewGestureController::DidBeginTransientZoom(visibleContentRect));
+}
+
+void TiledCoreAnimationDrawingArea::adjustTransientZoom(double scale, FloatPoint origin)
+{
+    // FIXME: Scrollbars should stay in-place and change height while zooming.
+    // FIXME: Keep around pageScale=1 tiles so we can zoom out without gaps.
+    // FIXME: Bring in unparented-but-painted tiles when zooming out, to fill in any gaps.
+
+    if (!m_rootLayer)
+        return;
+
+    RenderView* renderView = m_webPage-&gt;corePage()-&gt;mainFrame().view()-&gt;renderView();
+
+    TransformationMatrix transform;
+    transform.translate(origin.x(), origin.y());
+    transform.scale(scale);
+
+    PlatformCALayer* renderViewLayer = static_cast&lt;GraphicsLayerCA*&gt;(renderView-&gt;layer()-&gt;backing()-&gt;graphicsLayer())-&gt;platformCALayer();
+    renderViewLayer-&gt;setTransform(transform);
+    renderViewLayer-&gt;setAnchorPoint(FloatPoint3D());
+    renderViewLayer-&gt;setPosition(FloatPoint3D());
+
+    // FIXME: We should transform the shadow layer as well, instead of hiding it.
+    PlatformCALayer* shadowLayer = static_cast&lt;GraphicsLayerCA*&gt;(renderView-&gt;compositor().layerForContentShadow())-&gt;platformCALayer();
+    shadowLayer-&gt;setHidden(true);
+
+    m_transientZoomScale = scale;
+}
+
+void TiledCoreAnimationDrawingArea::commitTransientZoom(double scale, FloatPoint origin)
+{
+    RenderView* renderView = m_webPage-&gt;corePage()-&gt;mainFrame().view()-&gt;renderView();
+
+    // If the page scale is already the target scale, scalePage() will short-circuit
+    // and not apply the transform, so we can't clear it.
+    if (m_transientZoomScale != m_webPage-&gt;pageScaleFactor())
+       static_cast&lt;GraphicsLayerCA*&gt;(renderView-&gt;layer()-&gt;backing()-&gt;graphicsLayer())-&gt;platformCALayer()-&gt;setTransform(TransformationMatrix());
+
+    PlatformCALayer* shadowLayer = static_cast&lt;GraphicsLayerCA*&gt;(renderView-&gt;compositor().layerForContentShadow())-&gt;platformCALayer();
+    shadowLayer-&gt;setHidden(false);
+
+    m_webPage-&gt;scalePage(scale, roundedIntPoint(origin));
+}
+
</ins><span class="cx"> } // namespace WebKit
</span><span class="cx"> 
</span><span class="cx"> #endif // !PLATFORM(IOS)
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessWebPagemacWKAccessibilityWebPageObjectmm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/WebPage/mac/WKAccessibilityWebPageObject.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/WebPage/mac/WKAccessibilityWebPageObject.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/WebPage/mac/WKAccessibilityWebPageObject.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -209,7 +209,7 @@
</span><span class="cx">     
</span><span class="cx">     if (toImpl(result.get())-&gt;type() == WebString::APIType)
</span><span class="cx">         return CFBridgingRelease(WKStringCopyCFString(kCFAllocatorDefault, (WKStringRef)result.get()));
</span><del>-    else if (toImpl(result.get())-&gt;type() == WebBoolean::APIType)
</del><ins>+    else if (toImpl(result.get())-&gt;type() == API::Boolean::APIType)
</ins><span class="cx">         return [NSNumber numberWithBool:WKBooleanGetValue(static_cast&lt;WKBooleanRef&gt;(result.get()))];
</span><span class="cx"> 
</span><span class="cx">     return nil;
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessWebProcesscpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/WebProcess.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/WebProcess.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/WebProcess.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -26,6 +26,7 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;WebProcess.h&quot;
</span><span class="cx"> 
</span><ins>+#include &quot;APIFrameHandle.h&quot;
</ins><span class="cx"> #include &quot;AuthenticationManager.h&quot;
</span><span class="cx"> #include &quot;EventDispatcher.h&quot;
</span><span class="cx"> #include &quot;InjectedBundle.h&quot;
</span><span class="lines">@@ -33,6 +34,7 @@
</span><span class="cx"> #include &quot;Logging.h&quot;
</span><span class="cx"> #include &quot;PluginProcessConnectionManager.h&quot;
</span><span class="cx"> #include &quot;StatisticsData.h&quot;
</span><ins>+#include &quot;UserData.h&quot;
</ins><span class="cx"> #include &quot;WebApplicationCacheManager.h&quot;
</span><span class="cx"> #include &quot;WebConnectionToUIProcess.h&quot;
</span><span class="cx"> #include &quot;WebContextMessages.h&quot;
</span><span class="lines">@@ -372,11 +374,13 @@
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(MAC)
</span><span class="cx">     CoreIPC::Connection::Identifier connectionIdentifier(encodedConnectionIdentifier.port());
</span><del>-    if (CoreIPC::Connection::identifierIsNull(connectionIdentifier))
-        return;
</del><ins>+#elif USE(UNIX_DOMAIN_SOCKETS)
+    CoreIPC::Connection::Identifier connectionIdentifier = encodedConnectionIdentifier.releaseFileDescriptor();
</ins><span class="cx"> #else
</span><span class="cx">     ASSERT_NOT_REACHED();
</span><span class="cx"> #endif
</span><ins>+    if (CoreIPC::Connection::identifierIsNull(connectionIdentifier))
+        return;
</ins><span class="cx">     m_networkProcessConnection = NetworkProcessConnection::create(connectionIdentifier);
</span><span class="cx"> }
</span><span class="cx"> #endif // ENABLE(NETWORK_PROCESS)
</span><span class="lines">@@ -1182,4 +1186,20 @@
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+RefPtr&lt;API::Object&gt; WebProcess::apiObjectByConvertingFromHandles(API::Object* object)
+{
+    return UserData::transform(object, [this](const API::Object&amp; object) -&gt; RefPtr&lt;API::Object&gt; {
+        switch (object.type()) {
+        case API::Object::Type::FrameHandle: {
+            auto&amp; frameHandle = static_cast&lt;const API::FrameHandle&amp;&gt;(object);
+
+            return webFrame(frameHandle.frameID());
+        }
+
+        default:
+            return nullptr;
+        }
+    });
+}
+
</ins><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessWebProcessh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/WebProcess.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/WebProcess.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/WebProcess.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -47,7 +47,12 @@
</span><span class="cx"> #include &lt;dispatch/dispatch.h&gt;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+namespace API {
+class Object;
+}
+
</ins><span class="cx"> namespace WebCore {
</span><ins>+class CertificateInfo;
</ins><span class="cx"> class PageGroup;
</span><span class="cx"> class ResourceRequest;
</span><span class="cx"> struct PluginInfo;
</span><span class="lines">@@ -72,11 +77,7 @@
</span><span class="cx"> #if ENABLE(NETWORK_PROCESS)
</span><span class="cx"> class NetworkProcessConnection;
</span><span class="cx"> class WebResourceLoadScheduler;
</span><del>-#else
-#if USE(SOUP)
-class CertificateInfo;
</del><span class="cx"> #endif
</span><del>-#endif
</del><span class="cx"> 
</span><span class="cx"> #if ENABLE(DATABASE_PROCESS)
</span><span class="cx"> class WebToDatabaseProcessConnection;
</span><span class="lines">@@ -174,13 +175,15 @@
</span><span class="cx">     void updateActivePages();
</span><span class="cx"> 
</span><span class="cx"> #if !ENABLE(NETWORK_PROCESS) &amp;&amp; USE(SOUP)
</span><del>-    void allowSpecificHTTPSCertificateForHost(const CertificateInfo&amp;, const String&amp; host);
</del><ins>+    void allowSpecificHTTPSCertificateForHost(const WebCore::CertificateInfo&amp;, const String&amp; host);
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx">     void resetAllGeolocationPermissions();
</span><span class="cx"> #endif // PLATFORM(IOS)
</span><span class="cx"> 
</span><ins>+    RefPtr&lt;API::Object&gt; apiObjectByConvertingFromHandles(API::Object*);
+
</ins><span class="cx"> private:
</span><span class="cx">     WebProcess();
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessWebProcessmessagesin"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/WebProcess.messages.in (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/WebProcess.messages.in        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/WebProcess.messages.in        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -84,6 +84,6 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if !ENABLE(NETWORK_PROCESS) &amp;&amp; USE(SOUP)
</span><del>-    AllowSpecificHTTPSCertificateForHost(WebKit::CertificateInfo certificate, String host)
</del><ins>+    AllowSpecificHTTPSCertificateForHost(WebCore::CertificateInfo certificate, String host)
</ins><span class="cx"> #endif
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcessgtkWebGtkExtensionManagerh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/gtk/WebGtkExtensionManager.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/gtk/WebGtkExtensionManager.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/gtk/WebGtkExtensionManager.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -38,9 +38,9 @@
</span><span class="cx">     WTF_MAKE_NONCOPYABLE(WebGtkExtensionManager);
</span><span class="cx"> 
</span><span class="cx"> public:
</span><del>-    static WebGtkExtensionManager&amp; shared();
</del><ins>+    WK_EXPORT static WebGtkExtensionManager&amp; shared();
</ins><span class="cx"> 
</span><del>-    void initialize(WKBundleRef, WKTypeRef);
</del><ins>+    WK_EXPORT void initialize(WKBundleRef, WKTypeRef);
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     WebGtkExtensionManager();
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcesssoupWebProcessSoupcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/soup/WebProcessSoup.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/soup/WebProcessSoup.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/soup/WebProcessSoup.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -90,10 +90,18 @@
</span><span class="cx">     unsigned long urlCacheMemoryCapacity = 0;
</span><span class="cx">     unsigned long urlCacheDiskCapacity = 0;
</span><span class="cx"> 
</span><del>-    SoupSession* session = WebCore::ResourceHandle::defaultSession();
-    SoupCache* cache = SOUP_CACHE(soup_session_get_feature(session, SOUP_TYPE_CACHE));
-    uint64_t diskFreeSize = getCacheDiskFreeSize(cache) / 1024 / 1024;
</del><ins>+    uint64_t diskFreeSize = 0;
+    SoupCache* cache = nullptr;
</ins><span class="cx"> 
</span><ins>+#if ENABLE(NETWORK_PROCESS)
+    if (!m_usesNetworkProcess) {
+#endif
+        SoupSession* session = WebCore::ResourceHandle::defaultSession();
+        cache = SOUP_CACHE(soup_session_get_feature(session, SOUP_TYPE_CACHE));
+        diskFreeSize = getCacheDiskFreeSize(cache) / 1024 / 1024;
+#if ENABLE(NETWORK_PROCESS)
+    }
+#endif
</ins><span class="cx">     uint64_t memSize = getMemorySize();
</span><span class="cx">     calculateCacheSizes(cacheModel, memSize, diskFreeSize,
</span><span class="cx">                         cacheTotalCapacity, cacheMinDeadCapacity, cacheMaxDeadCapacity, deadDecodedDataDeletionInterval,
</span><span class="lines">@@ -103,6 +111,14 @@
</span><span class="cx">     WebCore::memoryCache()-&gt;setDeadDecodedDataDeletionInterval(deadDecodedDataDeletionInterval);
</span><span class="cx">     WebCore::pageCache()-&gt;setCapacity(pageCacheCapacity);
</span><span class="cx"> 
</span><ins>+#if ENABLE(NETWORK_PROCESS)
+    if (!m_usesNetworkProcess) {
+#endif
+        if (urlCacheDiskCapacity &gt; soup_cache_get_max_size(cache))
+            soup_cache_set_max_size(cache, urlCacheDiskCapacity);
+#if ENABLE(NETWORK_PROCESS)
+    }
+#endif
</ins><span class="cx">     if (urlCacheDiskCapacity &gt; soup_cache_get_max_size(cache))
</span><span class="cx">         soup_cache_set_max_size(cache, urlCacheDiskCapacity);
</span><span class="cx"> }
</span><span class="lines">@@ -112,6 +128,11 @@
</span><span class="cx">     if (cachesToClear == InMemoryResourceCachesOnly)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><ins>+    // If we're using the network process then it is the only one that needs to clear the disk cache.
+#if ENABLE(NETWORK_PROCESS)
+    if (m_usesNetworkProcess)
+        return;
+#endif
</ins><span class="cx">     SoupSession* session = WebCore::ResourceHandle::defaultSession();
</span><span class="cx">     soup_cache_clear(SOUP_CACHE(soup_session_get_feature(session, SOUP_TYPE_CACHE)));
</span><span class="cx"> }
</span><span class="lines">@@ -177,11 +198,16 @@
</span><span class="cx">     }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    ASSERT(!parameters.diskCacheDirectory.isEmpty());
-    GRefPtr&lt;SoupCache&gt; soupCache = adoptGRef(soup_cache_new(parameters.diskCacheDirectory.utf8().data(), SOUP_CACHE_SINGLE_USER));
-    soup_session_add_feature(WebCore::ResourceHandle::defaultSession(), SOUP_SESSION_FEATURE(soupCache.get()));
-    soup_cache_load(soupCache.get());
-
</del><ins>+#if ENABLE(NETWORK_PROCESS)
+    if (!m_usesNetworkProcess) {
+#endif
+        ASSERT(!parameters.diskCacheDirectory.isEmpty());
+        GRefPtr&lt;SoupCache&gt; soupCache = adoptGRef(soup_cache_new(parameters.diskCacheDirectory.utf8().data(), SOUP_CACHE_SINGLE_USER));
+        soup_session_add_feature(WebCore::ResourceHandle::defaultSession(), SOUP_SESSION_FEATURE(soupCache.get()));
+        soup_cache_load(soupCache.get());
+#if ENABLE(NETWORK_PROCESS)
+    }
+#endif
</ins><span class="cx">     if (!parameters.languages.isEmpty())
</span><span class="cx">         setSoupSessionAcceptLanguage(parameters.languages);
</span><span class="cx"> 
</span><span class="lines">@@ -210,7 +236,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if !ENABLE(NETWORK_PROCESS)
</span><del>-void WebProcess::allowSpecificHTTPSCertificateForHost(const CertificateInfo&amp; certificateInfo, const String&amp; host)
</del><ins>+void WebProcess::allowSpecificHTTPSCertificateForHost(const WebCore::CertificateInfo&amp; certificateInfo, const String&amp; host)
</ins><span class="cx"> {
</span><span class="cx">     WebCore::ResourceHandle::setClientCertificate(host, certificateInfo.certificate());
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2WebProcesssoupWebSoupRequestManagercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/WebProcess/soup/WebSoupRequestManager.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/WebProcess/soup/WebSoupRequestManager.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/WebProcess/soup/WebSoupRequestManager.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -84,7 +84,7 @@
</span><span class="cx">     : m_process(process)
</span><span class="cx">     , m_schemes(adoptGRef(g_ptr_array_new_with_free_func(g_free)))
</span><span class="cx"> {
</span><del>-    m_process-&gt;addMessageReceiver(Messages::WebSoupRequestManager::messageReceiverName(), this);
</del><ins>+    m_process-&gt;addMessageReceiver(Messages::WebSoupRequestManager::messageReceiverName(), *this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebSoupRequestManager::~WebSoupRequestManager()
</span></span></pre></div>
<a id="branchesjsCStackSourceWebKit2configh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/WebKit2/config.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/WebKit2/config.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/WebKit2/config.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -88,3 +88,6 @@
</span><span class="cx"> #define ENABLE_SEC_ITEM_SHIM 1
</span><span class="cx"> #endif
</span><span class="cx"> #endif
</span><ins>+
+// FIXME: Remove this once everything has been moved over to the IPC namespace.
+#define CoreIPC IPC
</ins></span></pre></div>
<a id="branchesjsCStackSourceautotoolsSetupAutomakem4"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/autotools/SetupAutomake.m4 (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/autotools/SetupAutomake.m4        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/autotools/SetupAutomake.m4        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -13,6 +13,7 @@
</span><span class="cx"> # For the moment we need to check whether or not indexed database is
</span><span class="cx"> # enabled because it determines if we build leveldb or not.
</span><span class="cx"> AM_WEBKIT_FEATURE_CONDITIONAL([ENABLE_INDEXED_DATABASE])
</span><ins>+AM_WEBKIT_FEATURE_CONDITIONAL([ENABLE_NETWORK_PROCESS])
</ins><span class="cx"> 
</span><span class="cx"> # OS conditionals.
</span><span class="cx"> AM_CONDITIONAL([OS_WIN32],[test &quot;$os_win32&quot; = &quot;yes&quot;])
</span></span></pre></div>
<a id="branchesjsCStackSourceautotoolsSetupCompilerFlagsm4"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/autotools/SetupCompilerFlags.m4 (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/autotools/SetupCompilerFlags.m4        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/autotools/SetupCompilerFlags.m4        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -9,10 +9,9 @@
</span><span class="cx"> fi
</span><span class="cx"> 
</span><span class="cx"> # libstdc++ is at the moment the only option as the C++ standard library when compiling with Clang.
</span><del>-# -Wno-c++11-extensions, currently only usable with Clang, suppresses warnings of C++11 extensions in use.
</del><span class="cx"> # Suppress unused arguments warnings for C++ files as well.
</span><span class="cx"> if test &quot;$cxx_compiler&quot; = &quot;clang++&quot;; then
</span><del>-    CXXFLAGS=&quot;$CXXFLAGS -stdlib=libstdc++ -Wno-c++11-extensions -Qunused-arguments&quot;
</del><ins>+    CXXFLAGS=&quot;$CXXFLAGS -stdlib=libstdc++ -Qunused-arguments&quot;
</ins><span class="cx"> fi
</span><span class="cx"> 
</span><span class="cx"> if test &quot;$host_cpu&quot; = &quot;sh4&quot;; then
</span></span></pre></div>
<a id="branchesjsCStackSourceautotoolsSetupLibtoolm4"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/autotools/SetupLibtool.m4 (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/autotools/SetupLibtool.m4        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/autotools/SetupLibtool.m4        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -8,6 +8,7 @@
</span><span class="cx"> if test -z &quot;$AR_FLAGS&quot;; then
</span><span class="cx">     AR_FLAGS=&quot;cruT&quot;
</span><span class="cx"> fi
</span><ins>+AC_SUBST([AR_FLAGS])
</ins><span class="cx"> 
</span><span class="cx"> DOLT
</span><span class="cx"> AC_DISABLE_STATIC
</span></span></pre></div>
<a id="branchesjsCStackSourceautotoolsSetupWebKitFeaturesm4"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/autotools/SetupWebKitFeatures.m4 (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/autotools/SetupWebKitFeatures.m4        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/autotools/SetupWebKitFeatures.m4        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -155,6 +155,7 @@
</span><span class="cx">     ENABLE_NAVIGATOR_CONTENT_UTILS=0 \
</span><span class="cx">     ENABLE_NETSCAPE_PLUGIN_API=1 \
</span><span class="cx">     ENABLE_NETWORK_INFO=0 \
</span><ins>+    ENABLE_NETWORK_PROCESS=0 \
</ins><span class="cx">     ENABLE_NOTIFICATIONS=0 \
</span><span class="cx">     ENABLE_ORIENTATION_EVENTS=0 \
</span><span class="cx">     ENABLE_PAGE_VISIBILITY_API=1 \
</span><span class="lines">@@ -172,6 +173,7 @@
</span><span class="cx">     ENABLE_SQL_DATABASE=1 \
</span><span class="cx">     ENABLE_SUBPIXEL_LAYOUT=1 \
</span><span class="cx">     ENABLE_TEMPLATE_ELEMENT=1 \
</span><ins>+    ENABLE_SATURATED_LAYOUT_ARITHMETIC=1\
</ins><span class="cx">     ENABLE_TEXT_AUTOSIZING=0 \
</span><span class="cx">     ENABLE_THREADED_HTML_PARSER=0 \
</span><span class="cx">     ENABLE_TOUCH_EVENTS=0 \
</span></span></pre></div>
<a id="branchesjsCStackSourcecmakeOptionsGTKcmake"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/cmake/OptionsGTK.cmake (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/cmake/OptionsGTK.cmake        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/cmake/OptionsGTK.cmake        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -31,6 +31,7 @@
</span><span class="cx"> WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_NETSCAPE_PLUGIN_API ON)
</span><span class="cx"> WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_NETWORK_INFO ON)
</span><span class="cx"> WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_PAGE_VISIBILITY_API ON)
</span><ins>+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_QUOTA OFF)
</ins><span class="cx"> WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_RESOLUTION_MEDIA_QUERY OFF)
</span><span class="cx"> WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_REQUEST_ANIMATION_FRAME ON)
</span><span class="cx"> WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_SECCOMP_FILTERS OFF)
</span></span></pre></div>
<a id="branchesjsCStackSourcecmakeWebKitHelperscmake"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/cmake/WebKitHelpers.cmake (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/cmake/WebKitHelpers.cmake        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Source/cmake/WebKitHelpers.cmake        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -45,12 +45,6 @@
</span><span class="cx">             set(OLD_COMPILE_FLAGS &quot;-Werror -Wno-error=unused-parameter ${OLD_COMPILE_FLAGS}&quot;)
</span><span class="cx">         endif ()
</span><span class="cx"> 
</span><del>-        # Disable C++0x compat warnings for GCC &gt;= 4.6.0 until we build
-        # cleanly with that.
-        if (NOT ${OPTION_IGNORECXX_WARNINGS} AND NOT ${COMPILER_VERSION} VERSION_LESS &quot;4.6.0&quot;)
-            set(OLD_COMPILE_FLAGS &quot;${OLD_COMPILE_FLAGS} -Wno-c++0x-compat&quot;)
-        endif ()
-
</del><span class="cx">         set_target_properties(${_target} PROPERTIES
</span><span class="cx">             COMPILE_FLAGS &quot;${OLD_COMPILE_FLAGS}&quot;)
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackToolsBuildSlaveSupportbuildwebkitorgconfigconfigjson"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/BuildSlaveSupport/build.webkit.org-config/config.json (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/BuildSlaveSupport/build.webkit.org-config/config.json        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/BuildSlaveSupport/build.webkit.org-config/config.json        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -15,16 +15,13 @@
</span><span class="cx">                     
</span><span class="cx">                     { &quot;name&quot;: &quot;apple-mini-129&quot;, &quot;platform&quot;: &quot;mac-mavericks&quot;},
</span><span class="cx">                     { &quot;name&quot;: &quot;apple-mini-130&quot;, &quot;platform&quot;: &quot;mac-mavericks&quot;},
</span><ins>+                    { &quot;name&quot;: &quot;apple-mini-178&quot;, &quot;platform&quot;: &quot;mac-mavericks&quot;},
+                    { &quot;name&quot;: &quot;apple-mini-179&quot;, &quot;platform&quot;: &quot;mac-mavericks&quot;},
</ins><span class="cx">                     { &quot;name&quot;: &quot;apple-macpro-5&quot;, &quot;platform&quot;: &quot;mac-mavericks&quot; },
</span><span class="cx">                     { &quot;name&quot;: &quot;apple-macpro-8&quot;, &quot;platform&quot;: &quot;mac-mavericks&quot; },
</span><span class="cx">                     { &quot;name&quot;: &quot;apple-mini-211&quot;, &quot;platform&quot;: &quot;mac-mavericks&quot; },
</span><span class="cx">                     { &quot;name&quot;: &quot;apple-mini-212&quot;, &quot;platform&quot;: &quot;mac-mavericks&quot; },
</span><span class="cx">                     
</span><del>-                    { &quot;name&quot;: &quot;apple-seo-01&quot;, &quot;platform&quot;: &quot;mac-mavericks&quot;},
-                    { &quot;name&quot;: &quot;apple-seo-02&quot;, &quot;platform&quot;: &quot;mac-mavericks&quot;},
-                    { &quot;name&quot;: &quot;apple-seo-03&quot;, &quot;platform&quot;: &quot;mac-mavericks&quot;},
-                    { &quot;name&quot;: &quot;apple-seo-06&quot;, &quot;platform&quot;: &quot;mac-mavericks&quot;},
-
</del><span class="cx">                     { &quot;name&quot;: &quot;apple-windows-1&quot;, &quot;platform&quot;: &quot;win&quot;},
</span><span class="cx">                     { &quot;name&quot;: &quot;apple-windows-2&quot;, &quot;platform&quot;: &quot;win&quot;},
</span><span class="cx">                     { &quot;name&quot;: &quot;apple-windows-3&quot;, &quot;platform&quot;: &quot;win&quot;},
</span><span class="lines">@@ -85,15 +82,15 @@
</span><span class="cx">                     { &quot;name&quot;: &quot;Apple Mavericks Debug (Build)&quot;, &quot;type&quot;: &quot;Build&quot;, &quot;builddir&quot;: &quot;mavericks-debug&quot;,
</span><span class="cx">                       &quot;platform&quot;: &quot;mac-mavericks&quot;, &quot;configuration&quot;: &quot;debug&quot;, &quot;architectures&quot;: [&quot;x86_64&quot;],
</span><span class="cx">                       &quot;triggers&quot;: [&quot;mavericks-debug-tests-wk1&quot;, &quot;mavericks-debug-tests-wk2&quot;],
</span><del>-                      &quot;slavenames&quot;: [&quot;apple-seo-01&quot;, &quot;apple-seo-06&quot;]
</del><ins>+                      &quot;slavenames&quot;: [&quot;apple-mini-178&quot;, &quot;apple-mini-179&quot;]
</ins><span class="cx">                     },
</span><span class="cx">                     { &quot;name&quot;: &quot;Apple Mavericks Debug WK1 (Tests)&quot;, &quot;type&quot;: &quot;Test&quot;, &quot;builddir&quot;: &quot;mavericks-debug-tests-wk1&quot;,
</span><span class="cx">                       &quot;platform&quot;: &quot;mac-mavericks&quot;, &quot;configuration&quot;: &quot;debug&quot;, &quot;architectures&quot;: [&quot;x86_64&quot;],
</span><del>-                      &quot;slavenames&quot;: [&quot;apple-seo-02&quot;, &quot;apple-macpro-5&quot;]
</del><ins>+                      &quot;slavenames&quot;: [&quot;apple-macpro-5&quot;]
</ins><span class="cx">                     },
</span><span class="cx">                     { &quot;name&quot;: &quot;Apple Mavericks Debug WK2 (Tests)&quot;, &quot;type&quot;: &quot;TestWebKit2&quot;, &quot;builddir&quot;: &quot;mavericks-debug-tests-wk2&quot;,
</span><span class="cx">                       &quot;platform&quot;: &quot;mac-mavericks&quot;, &quot;configuration&quot;: &quot;debug&quot;, &quot;architectures&quot;: [&quot;x86_64&quot;],
</span><del>-                      &quot;slavenames&quot;: [&quot;apple-seo-03&quot;, &quot;apple-macpro-8&quot;, &quot;apple-mini-211&quot;]
</del><ins>+                      &quot;slavenames&quot;: [&quot;apple-macpro-8&quot;, &quot;apple-mini-211&quot;]
</ins><span class="cx">                     },
</span><span class="cx">                     { &quot;name&quot;: &quot;Apple Mavericks Release (Build)&quot;, &quot;type&quot;: &quot;Build&quot;, &quot;builddir&quot;: &quot;mavericks-release&quot;,
</span><span class="cx">                       &quot;platform&quot;: &quot;mac-mavericks&quot;, &quot;configuration&quot;: &quot;release&quot;, &quot;architectures&quot;: [&quot;x86_64&quot;],
</span></span></pre></div>
<a id="branchesjsCStackToolsBuildSlaveSupportbuildwebkitorgconfigmastercfg"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/BuildSlaveSupport/build.webkit.org-config/master.cfg (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/BuildSlaveSupport/build.webkit.org-config/master.cfg        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/BuildSlaveSupport/build.webkit.org-config/master.cfg        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -506,7 +506,7 @@
</span><span class="cx">     name = &quot;webkitpy-test&quot;
</span><span class="cx">     description = [&quot;python-tests running&quot;]
</span><span class="cx">     descriptionDone = [&quot;python-tests&quot;]
</span><del>-    command = [&quot;python&quot;, &quot;./Tools/Scripts/test-webkitpy&quot;]
</del><ins>+    command = [&quot;python&quot;, &quot;./Tools/Scripts/test-webkitpy&quot;, &quot;--verbose&quot;]
</ins><span class="cx">     failedTestsFormatString = &quot;%d python tests failed&quot;
</span><span class="cx"> 
</span><span class="cx">     def start(self):
</span></span></pre></div>
<a id="branchesjsCStackToolsChangeLog"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/ChangeLog (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/ChangeLog        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/ChangeLog        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,3 +1,234 @@
</span><ins>+2014-01-23  Mark Hahnenberg  &lt;mhahnenberg@apple.com&gt;
+
+        Merge branch up to ToT r160556.
+
+        * BuildSlaveSupport/build.webkit.org-config/config.json:
+        * BuildSlaveSupport/build.webkit.org-config/master.cfg:
+        (RunPythonTests):
+        * DumpRenderTree/AccessibilityUIElement.cpp:
+        (characterAtOffsetCallback):
+        (wordAtOffsetCallback):
+        (lineAtOffsetCallback):
+        (sentenceAtOffsetCallback):
+        (AccessibilityUIElement::getJSClass):
+        * DumpRenderTree/AccessibilityUIElement.h:
+        * DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTree.vcxproj:
+        * DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeLauncher.vcxproj:
+        * DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiff.vcxproj:
+        * DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffLauncher.vcxproj:
+        * DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePlugin.vcxproj:
+        * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
+        * DumpRenderTree/atk/AccessibilityUIElementAtk.cpp:
+        (AccessibilityUIElement::role):
+        (AccessibilityUIElement::stringForRange):
+        (stringAtOffset):
+        (AccessibilityUIElement::characterAtOffset):
+        (AccessibilityUIElement::wordAtOffset):
+        (AccessibilityUIElement::lineAtOffset):
+        (AccessibilityUIElement::sentenceAtOffset):
+        * DumpRenderTree/blackberry/PixelDumpSupportBlackBerry.cpp:
+        (computeMD5HashStringForBitmapContext):
+        * DumpRenderTree/cairo/PixelDumpSupportCairo.cpp:
+        (computeMD5HashStringForBitmapContext):
+        * DumpRenderTree/gtk/DumpRenderTree.cpp:
+        (resetDefaultsToConsistentValues):
+        * DumpRenderTree/gtk/TestRunnerGtk.cpp:
+        (TestRunner::overridePreference):
+        * DumpRenderTree/mac/DumpRenderTree.mm:
+        (resetWebPreferencesToConsistentValues):
+        (initializeGlobalsFromCommandLineOptions):
+        * DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupport.c:
+        * DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupportPregenerated.pm:
+        * DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupport_wrapPregenerated.c:
+        * DumpRenderTree/mac/PerlSupport/Makefile:
+        * DumpRenderTree/mac/TestRunnerMac.mm:
+        (TestRunner::setCacheModel):
+        * MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj:
+        * MiniBrowser/gtk/CMakeLists.txt:
+        * MiniBrowser/mac/AppDelegate.h:
+        * MiniBrowser/mac/AppDelegate.m:
+        (-[BrowserAppDelegate init]):
+        (-[BrowserAppDelegate newWindow:]):
+        (-[BrowserAppDelegate applicationWillTerminate:]):
+        (-[BrowserAppDelegate openDocument:]):
+        * MiniBrowser/mac/WK2BrowserWindowController.h:
+        * MiniBrowser/mac/WK2BrowserWindowController.m:
+        (-[WK2BrowserWindowController initWithProcessGroup:browsingContextGroup:]):
+        (-[WK2BrowserWindowController dealloc]):
+        (-[WK2BrowserWindowController fetch:]):
+        (-[WK2BrowserWindowController reload:]):
+        (-[WK2BrowserWindowController goBack:]):
+        (-[WK2BrowserWindowController goForward:]):
+        (-[WK2BrowserWindowController validateUserInterfaceItem:]):
+        (-[WK2BrowserWindowController currentZoomFactor]):
+        (-[WK2BrowserWindowController setCurrentZoomFactor:]):
+        (-[WK2BrowserWindowController zoomIn:]):
+        (-[WK2BrowserWindowController zoomOut:]):
+        (-[WK2BrowserWindowController canResetZoom]):
+        (-[WK2BrowserWindowController resetZoom:]):
+        (-[WK2BrowserWindowController toggleZoomMode:]):
+        (-[WK2BrowserWindowController observeValueForKeyPath:ofObject:change:context:]):
+        (createNewPage):
+        (-[WK2BrowserWindowController awakeFromNib]):
+        (-[WK2BrowserWindowController updateTextFieldFromURL:]):
+        (-[WK2BrowserWindowController browsingContextControllerDidStartProvisionalLoad:]):
+        (-[WK2BrowserWindowController browsingContextControllerDidReceiveServerRedirectForProvisionalLoad:]):
+        (-[WK2BrowserWindowController browsingContextController:didFailProvisionalLoadWithError:]):
+        (-[WK2BrowserWindowController browsingContextControllerDidCommitLoad:]):
+        (-[WK2BrowserWindowController browsingContextController:didFailLoadWithError:]):
+        (-[WK2BrowserWindowController browsingContextController:didNavigateWithNavigationData:]):
+        (-[WK2BrowserWindowController browsingContextController:didPerformClientRedirectFromURL:toURL:]):
+        (-[WK2BrowserWindowController browsingContextController:didPerformServerRedirectFromURL:toURL:]):
+        (-[WK2BrowserWindowController browsingContextController:didUpdateHistoryTitle:forURL:]):
+        * Scripts/build-jsc:
+        * Scripts/compare-webkit-configurations: Added.
+        (main):
+        (flag_for_comparison):
+        (run_webkit_tests):
+        * Scripts/old-run-webkit-tests:
+        (dumpToolDidCrash):
+        * Scripts/run-gtk-tests:
+        (TestRunner._run_test_glib):
+        (TestRunner):
+        (TestRunner._get_tests_from_google_test_suite):
+        (TestRunner._run_google_test):
+        (TestRunner._run_google_test_suite):
+        (TestRunner._run_test):
+        * Scripts/run-javascriptcore-tests:
+        * Scripts/webkitdirs.pm:
+        (visualStudioInstallDir):
+        (visualStudioVersion):
+        (setupAppleWinEnv):
+        (setupCygwinEnv):
+        * Scripts/webkitperl/FeatureList.pm:
+        * Scripts/webkitpy/common/config/contributors.json:
+        * Scripts/webkitpy/common/config/watchlist:
+        * Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
+        (CommitQueueFlag):
+        (Bugzilla._commit_queue_flag):
+        (Bugzilla._fill_attachment_form):
+        (Bugzilla.add_patch_to_bug):
+        (Bugzilla.create_bug):
+        * Scripts/webkitpy/common/net/bugzilla/bugzilla_unittest.py:
+        (test_commit_queue_flag.assert_commit_queue_flag):
+        (test_commit_queue_flag):
+        * Scripts/webkitpy/common/prettypatch.py:
+        (PrettyPatch.__init__):
+        (PrettyPatch.pretty_diff):
+        (PrettyPatch):
+        (PrettyPatch.pretty_patch_available):
+        (PrettyPatch.check_pretty_patch):
+        (PrettyPatch.pretty_patch_text):
+        * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
+        (SingleTestRunner._run_compare_test):
+        * Scripts/webkitpy/layout_tests/controllers/test_result_writer.py:
+        (TestResultWriter.create_text_diff_and_write_result):
+        * Scripts/webkitpy/layout_tests/models/test_run_results.py:
+        (summarize_results):
+        * Scripts/webkitpy/layout_tests/reftests/__init__.py:
+        * Scripts/webkitpy/layout_tests/reftests/extract_reference_link.py:
+        * Scripts/webkitpy/layout_tests/reftests/extract_reference_link_unittest.py:
+        * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
+        (parse_args):
+        * Scripts/webkitpy/port/base.py:
+        (Port.__init__):
+        (Port.wdiff_available):
+        (Port.check_image_diff):
+        (Port.reference_files):
+        (Port.wdiff_text):
+        (Port._build_driver):
+        (Port.logging_patterns_to_strip):
+        * Scripts/webkitpy/port/base_unittest.py:
+        (PortTest.test_pretty_patch_os_error):
+        (PortTest.test_pretty_patch_script_error):
+        * Scripts/webkitpy/port/driver.py:
+        (DriverOutput):
+        (DriverOutput.strip_metrics):
+        (DriverOutput.strip_patterns):
+        (Driver.cmd_line):
+        * Scripts/webkitpy/port/gtk.py:
+        (GtkPort.setup_environ_for_server):
+        * Scripts/webkitpy/port/mac.py:
+        (MacPort.xcrun_find):
+        (MacPort):
+        (MacPort.logging_patterns_to_strip):
+        * Scripts/webkitpy/port/westondriver_unittest.py: Added.
+        (WestonDriverTest):
+        (WestonDriverTest.make_driver):
+        (WestonDriverTest.test_start):
+        (WestonDriverTest.test_stop):
+        (WestonDriverTest.test_stop.FakeWestonProcess):
+        (WestonDriverTest.test_stop.FakeWestonProcess.terminate):
+        * Scripts/webkitpy/style/checkers/cpp.py:
+        (check_for_missing_new_line_at_eof):
+        (check_for_extra_new_line_at_eof):
+        (check_spacing):
+        (check_member_initialization_list):
+        (_process_lines):
+        * Scripts/webkitpy/style/checkers/cpp_unittest.py:
+        (CppStyleTest.test_spacing_for_binary_ops):
+        (CppStyleTest.test_extra_newlines_at_eof):
+        (CppStyleTest.test_extra_newlines_at_eof.do_test):
+        (WebKitStyleTest.test_member_initialization_list):
+        * TestWebKitAPI/CMakeLists.txt:
+        * TestWebKitAPI/GNUmakefile.am:
+        * TestWebKitAPI/PlatformGTK.cmake:
+        * TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPI.vcxproj:
+        * TestWebKitAPI/Tests/WTF/HashMap.cpp:
+        (TestWebKitAPI::TEST):
+        * TestWebKitAPI/Tests/WTF/MD5.cpp:
+        (TestWebKitAPI::expectMD5):
+        * WebKitTestRunner/CMakeLists.txt:
+        * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:
+        (WTR::AccessibilityUIElement::characterAtOffset):
+        (WTR::AccessibilityUIElement::wordAtOffset):
+        (WTR::AccessibilityUIElement::lineAtOffset):
+        (WTR::AccessibilityUIElement::sentenceAtOffset):
+        * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
+        * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
+        * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
+        (WTR::AccessibilityUIElement::role):
+        (WTR::AccessibilityUIElement::stringForRange):
+        (WTR::stringAtOffset):
+        (WTR::AccessibilityUIElement::characterAtOffset):
+        (WTR::AccessibilityUIElement::wordAtOffset):
+        (WTR::AccessibilityUIElement::lineAtOffset):
+        (WTR::AccessibilityUIElement::sentenceAtOffset):
+        * WebKitTestRunner/TestController.cpp:
+        (WTR::TestController::TestController):
+        (WTR::TestController::initialize):
+        (WTR::TestController::resetPreferencesToConsistentValues):
+        * WebKitTestRunner/TestController.h:
+        (WTR::TestController::shouldUseRemoteLayerTree):
+        * WebKitTestRunner/TestInvocation.cpp:
+        (WTR::updateThreadedScrollingForCurrentTest):
+        * WebKitTestRunner/cairo/TestInvocationCairo.cpp:
+        (WTR::computeMD5HashStringForCairoSurface):
+        * WebKitTestRunner/cg/TestInvocationCG.cpp:
+        (WTR::computeMD5HashStringForContext):
+        * WebKitTestRunner/mac/PlatformWebViewMac.mm:
+        (WTR::PlatformWebView::PlatformWebView):
+        * WinLauncher/WinLauncher.vcxproj/WinLauncher.vcxproj:
+        * WinLauncher/WinLauncher.vcxproj/WinLauncherLib.vcxproj:
+        * gdb/webkit.py:
+        (WTFCStringPrinter.to_string):
+        (JSCJSStringPrinter.to_string):
+        * gtk/common.py:
+        (get_build_path):
+        * gtk/generate-gtkdoc:
+        (get_webkit2_options):
+        * gtk/install-dependencies:
+        * gtk/jhbuild.modules:
+        * gtk/ycm_extra_conf.py: Added.
+        (transform_relative_paths_to_absolute_paths):
+        (create_make_trace_file):
+        (make_trace_file_up_to_date):
+        (ensure_make_trace_file):
+        (get_compilation_flags_from_build_commandline):
+        (get_compilation_flags_for_file):
+        (FlagsForFile):
+        * win/record-memory/record-memory.vcxproj:
+
</ins><span class="cx"> 2014-01-21  Filip Pizlo  &lt;fpizlo@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Use --enableExperimentalFTLCoverage=true for all FTL tests.
</span></span></pre></div>
<a id="branchesjsCStackToolsDumpRenderTreeAccessibilityUIElementcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/DumpRenderTree/AccessibilityUIElement.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/DumpRenderTree/AccessibilityUIElement.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/DumpRenderTree/AccessibilityUIElement.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1103,8 +1103,49 @@
</span><span class="cx">     return JSValueMakeUndefined(context);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-#if PLATFORM(IOS)
</del><ins>+#if PLATFORM(GTK) || PLATFORM(EFL)
+static JSValueRef characterAtOffsetCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+    int offset = -1;
+    if (argumentCount == 1)
+        offset = JSValueToNumber(context, arguments[0], exception);
</ins><span class="cx"> 
</span><ins>+    JSRetainPtr&lt;JSStringRef&gt; characterAtOffset(Adopt, toAXElement(thisObject)-&gt;characterAtOffset(offset));
+    return JSValueMakeString(context, characterAtOffset.get());
+}
+
+static JSValueRef wordAtOffsetCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+    int offset = -1;
+    if (argumentCount == 1)
+        offset = JSValueToNumber(context, arguments[0], exception);
+
+    JSRetainPtr&lt;JSStringRef&gt; wordAtOffset(Adopt, toAXElement(thisObject)-&gt;wordAtOffset(offset));
+    return JSValueMakeString(context, wordAtOffset.get());
+}
+
+static JSValueRef lineAtOffsetCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+    int offset = -1;
+    if (argumentCount == 1)
+        offset = JSValueToNumber(context, arguments[0], exception);
+
+    JSRetainPtr&lt;JSStringRef&gt; lineAtOffset(Adopt, toAXElement(thisObject)-&gt;lineAtOffset(offset));
+    return JSValueMakeString(context, lineAtOffset.get());
+}
+
+static JSValueRef sentenceAtOffsetCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+    int offset = -1;
+    if (argumentCount == 1)
+        offset = JSValueToNumber(context, arguments[0], exception);
+
+    JSRetainPtr&lt;JSStringRef&gt; sentenceAtOffset(Adopt, toAXElement(thisObject)-&gt;sentenceAtOffset(offset));
+    return JSValueMakeString(context, sentenceAtOffset.get());
+}
+
+#elif PLATFORM(IOS)
+
</ins><span class="cx"> static JSValueRef stringForSelectionCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
</span><span class="cx"> {
</span><span class="cx">     JSRetainPtr&lt;JSStringRef&gt; labelString(Adopt, toAXElement(thisObject)-&gt;stringForSelection());
</span><span class="lines">@@ -1475,7 +1516,12 @@
</span><span class="cx">         { &quot;setSelectedChild&quot;, setSelectedChildCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
</span><span class="cx">         { &quot;selectedChildAtIndex&quot;, selectedChildAtIndexCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
</span><span class="cx">         { &quot;scrollToMakeVisible&quot;, scrollToMakeVisibleCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
</span><del>-#if PLATFORM(IOS)
</del><ins>+#if PLATFORM(GTK) || PLATFORM(EFL)
+        { &quot;characterAtOffset&quot;, characterAtOffsetCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+        { &quot;wordAtOffset&quot;, wordAtOffsetCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+        { &quot;lineAtOffset&quot;, lineAtOffsetCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+        { &quot;sentenceAtOffset&quot;, sentenceAtOffsetCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+#elif PLATFORM(IOS)
</ins><span class="cx">         { &quot;linkedElement&quot;, linkedElementCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
</span><span class="cx">         { &quot;headerElementAtIndex&quot;, headerElementAtIndexCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
</span><span class="cx">         { &quot;elementsForRange&quot;, elementsForRangeCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
</span></span></pre></div>
<a id="branchesjsCStackToolsDumpRenderTreeAccessibilityUIElementh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/DumpRenderTree/AccessibilityUIElement.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/DumpRenderTree/AccessibilityUIElement.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/DumpRenderTree/AccessibilityUIElement.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -213,6 +213,14 @@
</span><span class="cx">     AccessibilityUIElement linkedElement();
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if PLATFORM(GTK) || PLATFORM(EFL)
+    // Text-specific
+    JSStringRef characterAtOffset(int offset);
+    JSStringRef wordAtOffset(int offset);
+    JSStringRef lineAtOffset(int offset);
+    JSStringRef sentenceAtOffset(int offset);
+#endif
+
</ins><span class="cx">     // Table-specific
</span><span class="cx">     AccessibilityUIElement cellForColumnAndRow(unsigned column, unsigned row);
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackToolsDumpRenderTreeDumpRenderTreevcxprojDumpRenderTreeDumpRenderTreevcxproj"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTree.vcxproj (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTree.vcxproj        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTree.vcxproj        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -59,6 +59,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -67,6 +68,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -75,6 +77,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Production|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -83,6 +86,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -91,6 +95,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -99,6 +104,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span></span></pre></div>
<a id="branchesjsCStackToolsDumpRenderTreeDumpRenderTreevcxprojDumpRenderTreeDumpRenderTreeLaunchervcxproj"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeLauncher.vcxproj (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeLauncher.vcxproj        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeLauncher.vcxproj        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -59,6 +59,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -67,6 +68,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -75,6 +77,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Production|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -83,6 +86,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -91,6 +95,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -99,6 +104,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span></span></pre></div>
<a id="branchesjsCStackToolsDumpRenderTreeDumpRenderTreevcxprojImageDiffImageDiffvcxproj"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiff.vcxproj (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiff.vcxproj        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiff.vcxproj        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -58,6 +58,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -66,6 +67,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -74,6 +76,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Production|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -82,6 +85,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -90,6 +94,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -98,6 +103,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span></span></pre></div>
<a id="branchesjsCStackToolsDumpRenderTreeDumpRenderTreevcxprojImageDiffImageDiffLaunchervcxproj"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffLauncher.vcxproj (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffLauncher.vcxproj        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffLauncher.vcxproj        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -59,6 +59,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -67,6 +68,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -75,6 +77,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Production|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -83,6 +86,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -91,6 +95,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -99,6 +104,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span></span></pre></div>
<a id="branchesjsCStackToolsDumpRenderTreeDumpRenderTreevcxprojTestNetscapePluginTestNetscapePluginvcxproj"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePlugin.vcxproj (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePlugin.vcxproj        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePlugin.vcxproj        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -111,6 +111,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -119,6 +120,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -127,6 +129,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Production|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -135,6 +138,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -143,6 +147,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -151,6 +156,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span></span></pre></div>
<a id="branchesjsCStackToolsDumpRenderTreeDumpRenderTreexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -17,7 +17,6 @@
</span><span class="cx">                                 A84F609108B1370E00E9745F /* PBXTargetDependency */,
</span><span class="cx">                                 A84F608F08B1370E00E9745F /* PBXTargetDependency */,
</span><span class="cx">                                 141BF238096A451E00E0753C /* PBXTargetDependency */,
</span><del>-                                5DC82A701023C93D00FD1D3B /* PBXTargetDependency */,
</del><span class="cx">                         );
</span><span class="cx">                         name = All;
</span><span class="cx">                         productName = All;
</span><span class="lines">@@ -191,20 +190,6 @@
</span><span class="cx">                         remoteGlobalIDString = 2D403EB2150871F9005358D2;
</span><span class="cx">                         remoteInfo = LayoutTestHelper;
</span><span class="cx">                 };
</span><del>-                378C802315AB589B00746821 /* PBXContainerItemProxy */ = {
-                        isa = PBXContainerItemProxy;
-                        containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
-                        proxyType = 1;
-                        remoteGlobalIDString = 9340994A08540CAE007F3BC8;
-                        remoteInfo = DumpRenderTree;
-                };
-                5DC82A6F1023C93D00FD1D3B /* PBXContainerItemProxy */ = {
-                        isa = PBXContainerItemProxy;
-                        containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
-                        proxyType = 1;
-                        remoteGlobalIDString = 5DC82A661023C8DE00FD1D3B;
-                        remoteInfo = &quot;DumpRenderTree Perl Support&quot;;
-                };
</del><span class="cx">                 A84F608E08B1370E00E9745F /* PBXContainerItemProxy */ = {
</span><span class="cx">                         isa = PBXContainerItemProxy;
</span><span class="cx">                         containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
</span><span class="lines">@@ -788,24 +773,6 @@
</span><span class="cx">                 };
</span><span class="cx"> /* End PBXHeadersBuildPhase section */
</span><span class="cx"> 
</span><del>-/* Begin PBXLegacyTarget section */
-                5DC82A661023C8DE00FD1D3B /* DumpRenderTree Perl Support */ = {
-                        isa = PBXLegacyTarget;
-                        buildArgumentsString = &quot;$(ACTION)&quot;;
-                        buildConfigurationList = 5DC82A6E1023C92A00FD1D3B /* Build configuration list for PBXLegacyTarget &quot;DumpRenderTree Perl Support&quot; */;
-                        buildPhases = (
-                        );
-                        buildToolPath = make;
-                        buildWorkingDirectory = &quot;$(SRCROOT)/mac/PerlSupport&quot;;
-                        dependencies = (
-                                378C802415AB589B00746821 /* PBXTargetDependency */,
-                        );
-                        name = &quot;DumpRenderTree Perl Support&quot;;
-                        passBuildSettingsInEnvironment = 1;
-                        productName = &quot;DumpRenderTree Perl Support&quot;;
-                };
-/* End PBXLegacyTarget section */
-
</del><span class="cx"> /* Begin PBXNativeTarget section */
</span><span class="cx">                 141BF21E096A441D00E0753C /* TestNetscapePlugIn */ = {
</span><span class="cx">                         isa = PBXNativeTarget;
</span><span class="lines">@@ -905,7 +872,6 @@
</span><span class="cx">                                 9340994A08540CAE007F3BC8 /* DumpRenderTree */,
</span><span class="cx">                                 B5A7525A08AF4A4A00138E45 /* ImageDiff */,
</span><span class="cx">                                 141BF21E096A441D00E0753C /* TestNetscapePlugIn */,
</span><del>-                                5DC82A661023C8DE00FD1D3B /* DumpRenderTree Perl Support */,
</del><span class="cx">                                 2D403EB2150871F9005358D2 /* LayoutTestHelper */,
</span><span class="cx">                         );
</span><span class="cx">                 };
</span><span class="lines">@@ -1043,16 +1009,6 @@
</span><span class="cx">                         target = 2D403EB2150871F9005358D2 /* LayoutTestHelper */;
</span><span class="cx">                         targetProxy = 2D403F201508736C005358D2 /* PBXContainerItemProxy */;
</span><span class="cx">                 };
</span><del>-                378C802415AB589B00746821 /* PBXTargetDependency */ = {
-                        isa = PBXTargetDependency;
-                        target = 9340994A08540CAE007F3BC8 /* DumpRenderTree */;
-                        targetProxy = 378C802315AB589B00746821 /* PBXContainerItemProxy */;
-                };
-                5DC82A701023C93D00FD1D3B /* PBXTargetDependency */ = {
-                        isa = PBXTargetDependency;
-                        target = 5DC82A661023C8DE00FD1D3B /* DumpRenderTree Perl Support */;
-                        targetProxy = 5DC82A6F1023C93D00FD1D3B /* PBXContainerItemProxy */;
-                };
</del><span class="cx">                 A84F608F08B1370E00E9745F /* PBXTargetDependency */ = {
</span><span class="cx">                         isa = PBXTargetDependency;
</span><span class="cx">                         target = B5A7525A08AF4A4A00138E45 /* ImageDiff */;
</span><span class="lines">@@ -1138,27 +1094,6 @@
</span><span class="cx">                         };
</span><span class="cx">                         name = Production;
</span><span class="cx">                 };
</span><del>-                5DC82A671023C8DE00FD1D3B /* Debug */ = {
-                        isa = XCBuildConfiguration;
-                        buildSettings = {
-                                PRODUCT_NAME = &quot;DumpRenderTree Perl Support&quot;;
-                        };
-                        name = Debug;
-                };
-                5DC82A681023C8DE00FD1D3B /* Release */ = {
-                        isa = XCBuildConfiguration;
-                        buildSettings = {
-                                PRODUCT_NAME = &quot;DumpRenderTree Perl Support&quot;;
-                        };
-                        name = Release;
-                };
-                5DC82A691023C8DE00FD1D3B /* Production */ = {
-                        isa = XCBuildConfiguration;
-                        buildSettings = {
-                                PRODUCT_NAME = &quot;DumpRenderTree Perl Support&quot;;
-                        };
-                        name = Production;
-                };
</del><span class="cx">                 90CBC3500F748B1300A712B7 /* Production */ = {
</span><span class="cx">                         isa = XCBuildConfiguration;
</span><span class="cx">                         baseConfigurationReference = BCB281EE0CFA713D007E533E /* Base.xcconfig */;
</span><span class="lines">@@ -1296,16 +1231,6 @@
</span><span class="cx">                         defaultConfigurationIsVisible = 0;
</span><span class="cx">                         defaultConfigurationName = Production;
</span><span class="cx">                 };
</span><del>-                5DC82A6E1023C92A00FD1D3B /* Build configuration list for PBXLegacyTarget &quot;DumpRenderTree Perl Support&quot; */ = {
-                        isa = XCConfigurationList;
-                        buildConfigurations = (
-                                5DC82A671023C8DE00FD1D3B /* Debug */,
-                                5DC82A681023C8DE00FD1D3B /* Release */,
-                                5DC82A691023C8DE00FD1D3B /* Production */,
-                        );
-                        defaultConfigurationIsVisible = 0;
-                        defaultConfigurationName = Production;
-                };
</del><span class="cx">                 A84F609208B1371400E9745F /* Build configuration list for PBXAggregateTarget &quot;All&quot; */ = {
</span><span class="cx">                         isa = XCConfigurationList;
</span><span class="cx">                         buildConfigurations = (
</span></span></pre></div>
<a id="branchesjsCStackToolsDumpRenderTreeatkAccessibilityUIElementAtkcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/DumpRenderTree/atk/AccessibilityUIElementAtk.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/DumpRenderTree/atk/AccessibilityUIElementAtk.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/DumpRenderTree/atk/AccessibilityUIElementAtk.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -81,6 +81,15 @@
</span><span class="cx">     { &quot;AXUnknownSortDirection&quot;, &quot;unknown&quot; }
</span><span class="cx"> };
</span><span class="cx"> 
</span><ins>+#if ATK_CHECK_VERSION(2, 11, 3)
+const char* landmarkStringBanner = &quot;AXLandmarkBanner&quot;;
+const char* landmarkStringComplementary = &quot;AXLandmarkComplementary&quot;;
+const char* landmarkStringContentinfo = &quot;AXLandmarkContentInfo&quot;;
+const char* landmarkStringMain = &quot;AXLandmarkMain&quot;;
+const char* landmarkStringNavigation = &quot;AXLandmarkNavigation&quot;;
+const char* landmarkStringSearch = &quot;AXLandmarkSearch&quot;;
+#endif
+
</ins><span class="cx"> String jsStringToWTFString(JSStringRef attribute)
</span><span class="cx"> {
</span><span class="cx">     size_t bufferSize = JSStringGetMaximumUTF8CStringSize(attribute);
</span><span class="lines">@@ -178,8 +187,28 @@
</span><span class="cx">     return builder.toString();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-inline const char* roleToString(AtkRole role)
</del><ins>+const char* roleToString(AtkObject* object)
</ins><span class="cx"> {
</span><ins>+    AtkRole role = atk_object_get_role(object);
+
+#if ATK_CHECK_VERSION(2, 11, 3)
+    if (role == ATK_ROLE_LANDMARK) {
+        String xmlRolesValue = getAttributeSetValueForId(object, ObjectAttributeType, &quot;xml-roles&quot;);
+        if (equalIgnoringCase(xmlRolesValue, &quot;banner&quot;))
+            return landmarkStringBanner;
+        if (equalIgnoringCase(xmlRolesValue, &quot;complementary&quot;))
+            return landmarkStringComplementary;
+        if (equalIgnoringCase(xmlRolesValue, &quot;contentinfo&quot;))
+            return landmarkStringContentinfo;
+        if (equalIgnoringCase(xmlRolesValue, &quot;main&quot;))
+            return landmarkStringMain;
+        if (equalIgnoringCase(xmlRolesValue, &quot;navigation&quot;))
+            return landmarkStringNavigation;
+        if (equalIgnoringCase(xmlRolesValue, &quot;search&quot;))
+            return landmarkStringSearch;
+    }
+#endif
+
</ins><span class="cx">     switch (role) {
</span><span class="cx">     case ATK_ROLE_ALERT:
</span><span class="cx">         return &quot;AXAlert&quot;;
</span><span class="lines">@@ -258,9 +287,9 @@
</span><span class="cx">     case ATK_ROLE_SCROLL_PANE:
</span><span class="cx">         return &quot;AXScrollArea&quot;;
</span><span class="cx">     case ATK_ROLE_SECTION:
</span><del>-        return &quot;AXDiv&quot;;
</del><ins>+        return &quot;AXSection&quot;;
</ins><span class="cx">     case ATK_ROLE_SEPARATOR:
</span><del>-        return &quot;AXHorizontalRule&quot;;
</del><ins>+        return &quot;AXSeparator&quot;;
</ins><span class="cx">     case ATK_ROLE_SLIDER:
</span><span class="cx">         return &quot;AXSlider&quot;;
</span><span class="cx">     case ATK_ROLE_SPIN_BUTTON:
</span><span class="lines">@@ -335,7 +364,7 @@
</span><span class="cx">     builder.append(&quot;AXParent: &quot;);
</span><span class="cx">     AccessibilityUIElement parent = element-&gt;parentElement();
</span><span class="cx">     if (AtkObject* atkParent = parent.platformUIElement()) {
</span><del>-        builder.append(roleToString(atk_object_get_role(atkParent)));
</del><ins>+        builder.append(roleToString(atkParent));
</ins><span class="cx">         const char* parentName = atk_object_get_name(atkParent);
</span><span class="cx">         if (parentName &amp;&amp; g_utf8_strlen(parentName, -1))
</span><span class="cx">             builder.append(String::format(&quot;: %s&quot;, parentName));
</span><span class="lines">@@ -679,11 +708,10 @@
</span><span class="cx">     if (!ATK_IS_OBJECT(m_element))
</span><span class="cx">         return JSStringCreateWithCharacters(0, 0);
</span><span class="cx"> 
</span><del>-    AtkRole role = atk_object_get_role(ATK_OBJECT(m_element));
-    if (!role)
</del><ins>+    if (!atk_object_get_role(ATK_OBJECT(m_element)))
</ins><span class="cx">         return JSStringCreateWithCharacters(0, 0);
</span><span class="cx"> 
</span><del>-    GOwnPtr&lt;char&gt; roleStringWithPrefix(g_strdup_printf(&quot;AXRole: %s&quot;, roleToString(role)));
</del><ins>+    GOwnPtr&lt;char&gt; roleStringWithPrefix(g_strdup_printf(&quot;AXRole: %s&quot;, roleToString(ATK_OBJECT(m_element))));
</ins><span class="cx">     return JSStringCreateWithUTF8CString(roleStringWithPrefix.get());
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1080,10 +1108,13 @@
</span><span class="cx">     return JSStringCreateWithCharacters(0, 0);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSStringRef AccessibilityUIElement::stringForRange(unsigned, unsigned) 
</del><ins>+JSStringRef AccessibilityUIElement::stringForRange(unsigned location, unsigned length)
</ins><span class="cx"> {
</span><del>-    // FIXME: implement
-    return JSStringCreateWithCharacters(0, 0);
</del><ins>+    if (!ATK_IS_TEXT(m_element))
+        return JSStringCreateWithCharacters(0, 0);
+
+    String string = atk_text_get_text(ATK_TEXT(m_element), location, location + length);
+    return JSStringCreateWithUTF8CString(string.utf8().data());
</ins><span class="cx"> } 
</span><span class="cx"> 
</span><span class="cx"> JSStringRef AccessibilityUIElement::attributedStringForRange(unsigned, unsigned)
</span><span class="lines">@@ -1435,4 +1466,59 @@
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+JSStringRef stringAtOffset(PlatformUIElement element, AtkTextBoundary boundary, int offset)
+{
+    if (!ATK_IS_TEXT(element))
+        return JSStringCreateWithCharacters(0, 0);
+
+    gint startOffset, endOffset;
+    StringBuilder builder;
+
+#if ATK_CHECK_VERSION(2, 10, 0)
+    AtkTextGranularity granularity;
+    switch (boundary) {
+    case ATK_TEXT_BOUNDARY_CHAR:
+        granularity = ATK_TEXT_GRANULARITY_CHAR;
+        break;
+    case ATK_TEXT_BOUNDARY_WORD_START:
+        granularity = ATK_TEXT_GRANULARITY_WORD;
+        break;
+    case ATK_TEXT_BOUNDARY_LINE_START:
+        granularity = ATK_TEXT_GRANULARITY_LINE;
+        break;
+    case ATK_TEXT_BOUNDARY_SENTENCE_START:
+        granularity = ATK_TEXT_GRANULARITY_SENTENCE;
+        break;
+    default:
+        return JSStringCreateWithCharacters(0, 0);
+    }
+
+    builder.append(atk_text_get_string_at_offset(ATK_TEXT(element), offset, granularity, &amp;startOffset, &amp;endOffset));
+#else
+    builder.append(atk_text_get_text_at_offset(ATK_TEXT(element), offset, boundary, &amp;startOffset, &amp;endOffset));
</ins><span class="cx"> #endif
</span><ins>+    builder.append(String::format(&quot;, %i, %i&quot;, startOffset, endOffset));
+    return JSStringCreateWithUTF8CString(builder.toString().utf8().data());
+}
+
+JSStringRef AccessibilityUIElement::characterAtOffset(int offset)
+{
+    return stringAtOffset(m_element, ATK_TEXT_BOUNDARY_CHAR, offset);
+}
+
+JSStringRef AccessibilityUIElement::wordAtOffset(int offset)
+{
+    return stringAtOffset(m_element, ATK_TEXT_BOUNDARY_WORD_START, offset);
+}
+
+JSStringRef AccessibilityUIElement::lineAtOffset(int offset)
+{
+    return stringAtOffset(m_element, ATK_TEXT_BOUNDARY_LINE_START, offset);
+}
+
+JSStringRef AccessibilityUIElement::sentenceAtOffset(int offset)
+{
+    return stringAtOffset(m_element, ATK_TEXT_BOUNDARY_SENTENCE_START, offset);
+}
+
+#endif
</ins></span></pre></div>
<a id="branchesjsCStackToolsDumpRenderTreeblackberryPixelDumpSupportBlackBerrycpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/DumpRenderTree/blackberry/PixelDumpSupportBlackBerry.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/DumpRenderTree/blackberry/PixelDumpSupportBlackBerry.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/DumpRenderTree/blackberry/PixelDumpSupportBlackBerry.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -84,11 +84,11 @@
</span><span class="cx">         pixelData += bytesPerRow;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    Vector&lt;uint8_t, 16&gt; hash;
</del><ins>+    MD5::Digest hash;
</ins><span class="cx">     md5.checksum(hash);
</span><span class="cx"> 
</span><span class="cx">     hashString[0] = '\0';
</span><del>-    for (int i = 0; i &lt; 16; ++i)
</del><ins>+    for (size_t i = 0; i &lt; MD5::hashSize; ++i)
</ins><span class="cx">         snprintf(hashString, 33, &quot;%s%02x&quot;, hashString, hash[i]);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackToolsDumpRenderTreecairoPixelDumpSupportCairocpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/DumpRenderTree/cairo/PixelDumpSupportCairo.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/DumpRenderTree/cairo/PixelDumpSupportCairo.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/DumpRenderTree/cairo/PixelDumpSupportCairo.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -78,7 +78,7 @@
</span><span class="cx">         md5Context.addBytes(bitmapData, 4 * pixelsWide);
</span><span class="cx">         bitmapData += bytesPerRow;
</span><span class="cx">     }
</span><del>-    Vector&lt;uint8_t, 16&gt; hash;
</del><ins>+    MD5::Digest hash;
</ins><span class="cx">     md5Context.checksum(hash);
</span><span class="cx"> 
</span><span class="cx">     snprintf(hashString, 33, &quot;%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x&quot;,
</span></span></pre></div>
<a id="branchesjsCStackToolsDumpRenderTreegtkDumpRenderTreecpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/DumpRenderTree/gtk/DumpRenderTree.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/DumpRenderTree/gtk/DumpRenderTree.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/DumpRenderTree/gtk/DumpRenderTree.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -496,6 +496,7 @@
</span><span class="cx">         &quot;enable-hyperlink-auditing&quot;, FALSE,
</span><span class="cx">         &quot;editing-behavior&quot;, WEBKIT_EDITING_BEHAVIOR_UNIX,
</span><span class="cx">         &quot;enable-fullscreen&quot;, TRUE,
</span><ins>+        &quot;enable-mediasource&quot;, TRUE,
</ins><span class="cx">         NULL);
</span><span class="cx">     webkit_web_view_set_settings(webView, settings);
</span><span class="cx">     webkit_set_cache_model(WEBKIT_CACHE_MODEL_DOCUMENT_BROWSER);
</span></span></pre></div>
<a id="branchesjsCStackToolsDumpRenderTreegtkTestRunnerGtkcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/DumpRenderTree/gtk/TestRunnerGtk.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/DumpRenderTree/gtk/TestRunnerGtk.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/DumpRenderTree/gtk/TestRunnerGtk.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -695,6 +695,8 @@
</span><span class="cx">         propertyName = &quot;auto-load-images&quot;;
</span><span class="cx">     else if (g_str_equal(originalName.get(), &quot;WebKitShouldRespectImageOrientation&quot;))
</span><span class="cx">         propertyName = &quot;respect-image-orientation&quot;;
</span><ins>+    else if (g_str_equal(originalName.get(), &quot;WebKitMediaSourceEnabled&quot;))
+        propertyName = &quot;enable-mediasource&quot;;
</ins><span class="cx">     else if (g_str_equal(originalName.get(), &quot;WebKitTabToLinksPreferenceKey&quot;)) {
</span><span class="cx">         DumpRenderTreeSupportGtk::setLinksIncludedInFocusChain(booleanFromValue(valueAsString.get()));
</span><span class="cx">         return;
</span></span></pre></div>
<a id="branchesjsCStackToolsDumpRenderTreemacDumpRenderTreemm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/DumpRenderTree/mac/DumpRenderTree.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/DumpRenderTree/mac/DumpRenderTree.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/DumpRenderTree/mac/DumpRenderTree.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -157,6 +157,7 @@
</span><span class="cx"> static int dumpTree = YES;
</span><span class="cx"> static int useTimeoutWatchdog = YES;
</span><span class="cx"> static int forceComplexText;
</span><ins>+static int useAcceleratedDrawing;
</ins><span class="cx"> static int gcBetweenTests;
</span><span class="cx"> static BOOL printSeparators;
</span><span class="cx"> static RetainPtr&lt;CFStringRef&gt; persistentUserStyleSheetLocation;
</span><span class="lines">@@ -654,7 +655,7 @@
</span><span class="cx">     [preferences setAcceleratedCompositingEnabled:YES];
</span><span class="cx"> #if USE(CA)
</span><span class="cx">     [preferences setCanvasUsesAcceleratedDrawing:YES];
</span><del>-    [preferences setAcceleratedDrawingEnabled:NO];
</del><ins>+    [preferences setAcceleratedDrawingEnabled:useAcceleratedDrawing];
</ins><span class="cx"> #endif
</span><span class="cx">     [preferences setWebGLEnabled:NO];
</span><span class="cx">     [preferences setCSSRegionsEnabled:YES];
</span><span class="lines">@@ -670,6 +671,10 @@
</span><span class="cx"> 
</span><span class="cx">     [preferences setScreenFontSubstitutionEnabled:YES];
</span><span class="cx"> 
</span><ins>+#if ENABLE(MEDIA_SOURCE)
+    [preferences setMediaSourceEnabled:YES];
+#endif
+
</ins><span class="cx">     [WebPreferences _setCurrentNetworkLoaderSessionCookieAcceptPolicy:NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain];
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -783,6 +788,7 @@
</span><span class="cx">         {&quot;tree&quot;, no_argument, &amp;dumpTree, YES},
</span><span class="cx">         {&quot;threaded&quot;, no_argument, &amp;threaded, YES},
</span><span class="cx">         {&quot;complex-text&quot;, no_argument, &amp;forceComplexText, YES},
</span><ins>+        {&quot;accelerated-drawing&quot;, no_argument, &amp;useAcceleratedDrawing, YES},
</ins><span class="cx">         {&quot;gc-between-tests&quot;, no_argument, &amp;gcBetweenTests, YES},
</span><span class="cx">         {&quot;no-timeout&quot;, no_argument, &amp;useTimeoutWatchdog, NO},
</span><span class="cx">         {NULL, 0, NULL, 0}
</span></span></pre></div>
<a id="branchesjsCStackToolsDumpRenderTreemacPerlSupportDumpRenderTreeSupportc"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupport.c (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupport.c        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupport.c        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,43 +0,0 @@
</span><del>-/*
- * Copyright (C) 2009 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- */
-
-#include &lt;stdio.h&gt;
-#include &lt;sys/sysctl.h&gt;
-
-int processIsCrashing(int pid)
-{
-    int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, pid };
-    struct kinfo_proc info;
-    size_t bufferSize = sizeof(info);
-    if (sysctl(mib, sizeof(mib) / sizeof(mib[0]), &amp;info, &amp;bufferSize, 0, 0)) {
-        perror(&quot;sysctl&quot;);
-        return 0;
-    }
-
-    struct extern_proc proc = info.kp_proc;
-
-    // The process is crashing if it is waiting to exit, is not a zombie, and has a non-zero exit code.
-    return proc.p_stat != SZOMB &amp;&amp; (proc.p_flag &amp; P_WEXIT) &amp;&amp; proc.p_xstat;
-}
</del></span></pre></div>
<a id="branchesjsCStackToolsDumpRenderTreemacPerlSupportDumpRenderTreeSupportPregeneratedpm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupportPregenerated.pm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupportPregenerated.pm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupportPregenerated.pm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,54 +0,0 @@
</span><del>-# This file was automatically generated by SWIG
-package DumpRenderTreeSupport;
-require Exporter;
-require DynaLoader;
-@ISA = qw(Exporter DynaLoader);
-package DumpRenderTreeSupportc;
-bootstrap DumpRenderTreeSupport;
-package DumpRenderTreeSupport;
-@EXPORT = qw( );
-
-# ---------- BASE METHODS -------------
-
-package DumpRenderTreeSupport;
-
-sub TIEHASH {
-    my ($classname,$obj) = @_;
-    return bless $obj, $classname;
-}
-
-sub CLEAR { }
-
-sub FIRSTKEY { }
-
-sub NEXTKEY { }
-
-sub FETCH {
-    my ($self,$field) = @_;
-    my $member_func = &quot;swig_${field}_get&quot;;
-    $self-&gt;$member_func();
-}
-
-sub STORE {
-    my ($self,$field,$newval) = @_;
-    my $member_func = &quot;swig_${field}_set&quot;;
-    $self-&gt;$member_func($newval);
-}
-
-sub this {
-    my $ptr = shift;
-    return tied(%$ptr);
-}
-
-
-# ------- FUNCTION WRAPPERS --------
-
-package DumpRenderTreeSupport;
-
-*processIsCrashing = *DumpRenderTreeSupportc::processIsCrashing;
-
-# ------- VARIABLE STUBS --------
-
-package DumpRenderTreeSupport;
-
-1;
</del></span></pre></div>
<a id="branchesjsCStackToolsDumpRenderTreemacPerlSupportDumpRenderTreeSupport_wrapPregeneratedc"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupport_wrapPregenerated.c (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupport_wrapPregenerated.c        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupport_wrapPregenerated.c        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,1167 +0,0 @@
</span><del>-/* ----------------------------------------------------------------------------
- * This file was automatically generated by SWIG (http://www.swig.org).
- * Version 1.3.24
- * 
- * This file is not intended to be easily readable and contains a number of 
- * coding conventions designed to improve portability and efficiency. Do not make
- * changes to this file unless you know what you are doing--modify the SWIG 
- * interface file instead. 
- * ----------------------------------------------------------------------------- */
-
-
-#ifndef SWIG_TEMPLATE_DISAMBIGUATOR
-#  if defined(__SUNPRO_CC) 
-#    define SWIG_TEMPLATE_DISAMBIGUATOR template
-#  else
-#    define SWIG_TEMPLATE_DISAMBIGUATOR 
-#  endif
-#endif
-
-/***********************************************************************
- * swigrun.swg
- *
- *     This file contains generic CAPI SWIG runtime support for pointer
- *     type checking.
- *
- ************************************************************************/
-
-/* This should only be incremented when either the layout of swig_type_info changes,
-   or for whatever reason, the runtime changes incompatibly */
-#define SWIG_RUNTIME_VERSION &quot;1&quot;
-
-/* define SWIG_TYPE_TABLE_NAME as &quot;SWIG_TYPE_TABLE&quot; */
-#ifdef SWIG_TYPE_TABLE
-#define SWIG_QUOTE_STRING(x) #x
-#define SWIG_EXPAND_AND_QUOTE_STRING(x) SWIG_QUOTE_STRING(x)
-#define SWIG_TYPE_TABLE_NAME SWIG_EXPAND_AND_QUOTE_STRING(SWIG_TYPE_TABLE)
-#else
-#define SWIG_TYPE_TABLE_NAME
-#endif
-
-#include &lt;string.h&gt;
-
-#ifndef SWIGINLINE
-#if defined(__cplusplus) || (defined(__GNUC__) &amp;&amp; !defined(__STRICT_ANSI__))
-#  define SWIGINLINE inline
-#else
-#  define SWIGINLINE
-#endif
-#endif
-
-/*
-  You can use the SWIGRUNTIME and SWIGRUNTIMEINLINE macros for
-  creating a static or dynamic library from the swig runtime code.
-  In 99.9% of the cases, swig just needs to declare them as 'static'.
-  
-  But only do this if is strictly necessary, ie, if you have problems
-  with your compiler or so.
-*/
-#ifndef SWIGRUNTIME
-#define SWIGRUNTIME static
-#endif
-#ifndef SWIGRUNTIMEINLINE
-#define SWIGRUNTIMEINLINE SWIGRUNTIME SWIGINLINE
-#endif
-
-#ifdef __cplusplus
-extern &quot;C&quot; {
-#endif
-
-typedef void *(*swig_converter_func)(void *);
-typedef struct swig_type_info *(*swig_dycast_func)(void **);
-
-typedef struct swig_type_info {
-  const char             *name;
-  swig_converter_func     converter;
-  const char             *str;
-  void                   *clientdata;
-  swig_dycast_func        dcast;
-  struct swig_type_info  *next;
-  struct swig_type_info  *prev;
-} swig_type_info;
-
-/* 
-  Compare two type names skipping the space characters, therefore
-  &quot;char*&quot; == &quot;char *&quot; and &quot;Class&lt;int&gt;&quot; == &quot;Class&lt;int &gt;&quot;, etc.
-
-  Return 0 when the two name types are equivalent, as in
-  strncmp, but skipping ' '.
-*/
-SWIGRUNTIME int
-SWIG_TypeNameComp(const char *f1, const char *l1,
-                  const char *f2, const char *l2) {
-  for (;(f1 != l1) &amp;&amp; (f2 != l2); ++f1, ++f2) {
-    while ((*f1 == ' ') &amp;&amp; (f1 != l1)) ++f1;
-    while ((*f2 == ' ') &amp;&amp; (f2 != l2)) ++f2;
-    if (*f1 != *f2) return *f1 - *f2;
-  }
-  return (l1 - f1) - (l2 - f2);
-}
-
-/*
-  Check type equivalence in a name list like &lt;name1&gt;|&lt;name2&gt;|...
-*/
-SWIGRUNTIME int
-SWIG_TypeEquiv(const char *nb, const char *tb) {
-  int equiv = 0;
-  const char* te = tb + strlen(tb);
-  const char* ne = nb;
-  while (!equiv &amp;&amp; *ne) {
-    for (nb = ne; *ne; ++ne) {
-      if (*ne == '|') break;
-    }
-    equiv = SWIG_TypeNameComp(nb, ne, tb, te) == 0;
-    if (*ne) ++ne;
-  }
-  return equiv;
-}
-
-/*
-  Register a type mapping with the type-checking
-*/
-SWIGRUNTIME swig_type_info *
-SWIG_TypeRegisterTL(swig_type_info **tl, swig_type_info *ti) {
-  swig_type_info *tc, *head, *ret, *next;
-  /* Check to see if this type has already been registered */
-  tc = *tl;
-  while (tc) {
-    /* check simple type equivalence */
-    int typeequiv = (strcmp(tc-&gt;name, ti-&gt;name) == 0);   
-    /* check full type equivalence, resolving typedefs */
-    if (!typeequiv) {
-      /* only if tc is not a typedef (no '|' on it) */
-      if (tc-&gt;str &amp;&amp; ti-&gt;str &amp;&amp; !strstr(tc-&gt;str,&quot;|&quot;)) {
-        typeequiv = SWIG_TypeEquiv(ti-&gt;str,tc-&gt;str);
-      }
-    }
-    if (typeequiv) {
-      /* Already exists in the table.  Just add additional types to the list */
-      if (ti-&gt;clientdata) tc-&gt;clientdata = ti-&gt;clientdata;
-      head = tc;
-      next = tc-&gt;next;
-      goto l1;
-    }
-    tc = tc-&gt;prev;
-  }
-  head = ti;
-  next = 0;
-
-  /* Place in list */
-  ti-&gt;prev = *tl;
-  *tl = ti;
-
-  /* Build linked lists */
-  l1:
-  ret = head;
-  tc = ti + 1;
-  /* Patch up the rest of the links */
-  while (tc-&gt;name) {
-    head-&gt;next = tc;
-    tc-&gt;prev = head;
-    head = tc;
-    tc++;
-  }
-  if (next) next-&gt;prev = head;
-  head-&gt;next = next;
-
-  return ret;
-}
-
-/*
-  Check the typename
-*/
-SWIGRUNTIME swig_type_info *
-SWIG_TypeCheck(const char *c, swig_type_info *ty) {
-  swig_type_info *s;
-  if (!ty) return 0;        /* Void pointer */
-  s = ty-&gt;next;             /* First element always just a name */
-  do {
-    if (strcmp(s-&gt;name,c) == 0) {
-      if (s == ty-&gt;next) return s;
-      /* Move s to the top of the linked list */
-      s-&gt;prev-&gt;next = s-&gt;next;
-      if (s-&gt;next) {
-        s-&gt;next-&gt;prev = s-&gt;prev;
-      }
-      /* Insert s as second element in the list */
-      s-&gt;next = ty-&gt;next;
-      if (ty-&gt;next) ty-&gt;next-&gt;prev = s;
-      ty-&gt;next = s;
-      s-&gt;prev = ty;
-      return s;
-    }
-    s = s-&gt;next;
-  } while (s &amp;&amp; (s != ty-&gt;next));
-  return 0;
-}
-
-/*
-  Cast a pointer up an inheritance hierarchy
-*/
-SWIGRUNTIMEINLINE void *
-SWIG_TypeCast(swig_type_info *ty, void *ptr) {
-  return ((!ty) || (!ty-&gt;converter)) ? ptr : (*ty-&gt;converter)(ptr);
-}
-
-/* 
-   Dynamic pointer casting. Down an inheritance hierarchy
-*/
-SWIGRUNTIME swig_type_info *
-SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr) {
-  swig_type_info *lastty = ty;
-  if (!ty || !ty-&gt;dcast) return ty;
-  while (ty &amp;&amp; (ty-&gt;dcast)) {
-    ty = (*ty-&gt;dcast)(ptr);
-    if (ty) lastty = ty;
-  }
-  return lastty;
-}
-
-/*
-  Return the name associated with this type
-*/
-SWIGRUNTIMEINLINE const char *
-SWIG_TypeName(const swig_type_info *ty) {
-  return ty-&gt;name;
-}
-
-/*
-  Return the pretty name associated with this type,
-  that is an unmangled type name in a form presentable to the user.
-*/
-SWIGRUNTIME const char *
-SWIG_TypePrettyName(const swig_type_info *type) {
-  /* The &quot;str&quot; field contains the equivalent pretty names of the
-     type, separated by vertical-bar characters.  We choose
-     to print the last name, as it is often (?) the most
-     specific. */
-  if (type-&gt;str != NULL) {
-    const char *last_name = type-&gt;str;
-    const char *s;
-    for (s = type-&gt;str; *s; s++)
-      if (*s == '|') last_name = s+1;
-    return last_name;
-  }
-  else
-    return type-&gt;name;
-}
-
-/*
-  Search for a swig_type_info structure
-*/
-SWIGRUNTIME swig_type_info *
-SWIG_TypeQueryTL(swig_type_info *tl, const char *name) {
-  swig_type_info *ty = tl;
-  while (ty) {
-    if (ty-&gt;str &amp;&amp; (SWIG_TypeEquiv(ty-&gt;str,name))) return ty;
-    if (ty-&gt;name &amp;&amp; (strcmp(name,ty-&gt;name) == 0)) return ty;
-    ty = ty-&gt;prev;
-  }
-  return 0;
-}
-
-/* 
-   Set the clientdata field for a type
-*/
-SWIGRUNTIME void
-SWIG_TypeClientDataTL(swig_type_info *tl, swig_type_info *ti, void *clientdata) {
-  swig_type_info *tc, *equiv;
-  if (ti-&gt;clientdata) return;
-  /* if (ti-&gt;clientdata == clientdata) return; */
-  ti-&gt;clientdata = clientdata;
-  equiv = ti-&gt;next;
-  while (equiv) {
-    if (!equiv-&gt;converter) {
-      tc = tl;
-      while (tc) {
-        if ((strcmp(tc-&gt;name, equiv-&gt;name) == 0))
-          SWIG_TypeClientDataTL(tl,tc,clientdata);
-        tc = tc-&gt;prev;
-      }
-    }
-    equiv = equiv-&gt;next;
-  }
-}
-
-/* 
-   Pack binary data into a string
-*/
-SWIGRUNTIME char *
-SWIG_PackData(char *c, void *ptr, size_t sz) {
-  static char hex[17] = &quot;0123456789abcdef&quot;;
-  unsigned char *u = (unsigned char *) ptr;
-  const unsigned char *eu =  u + sz;
-  register unsigned char uu;
-  for (; u != eu; ++u) {
-    uu = *u;
-    *(c++) = hex[(uu &amp; 0xf0) &gt;&gt; 4];
-    *(c++) = hex[uu &amp; 0xf];
-  }
-  return c;
-}
-
-/* 
-   Unpack binary data from a string
-*/
-SWIGRUNTIME const char *
-SWIG_UnpackData(const char *c, void *ptr, size_t sz) {
-  register unsigned char *u = (unsigned char *) ptr;
-  register const unsigned char *eu =  u + sz;
-  for (; u != eu; ++u) {
-    register int d = *(c++);
-    register unsigned char uu = 0;
-    if ((d &gt;= '0') &amp;&amp; (d &lt;= '9'))
-      uu = ((d - '0') &lt;&lt; 4);
-    else if ((d &gt;= 'a') &amp;&amp; (d &lt;= 'f'))
-      uu = ((d - ('a'-10)) &lt;&lt; 4);
-    else 
-      return (char *) 0;
-    d = *(c++);
-    if ((d &gt;= '0') &amp;&amp; (d &lt;= '9'))
-      uu |= (d - '0');
-    else if ((d &gt;= 'a') &amp;&amp; (d &lt;= 'f'))
-      uu |= (d - ('a'-10));
-    else 
-      return (char *) 0;
-    *u = uu;
-  }
-  return c;
-}
-
-/*
-  This function will propagate the clientdata field of type to any new
-  swig_type_info structures that have been added into the list of
-  equivalent types.  It is like calling SWIG_TypeClientData(type,
-  clientdata) a second time.
-*/
-SWIGRUNTIME void
-SWIG_PropagateClientDataTL(swig_type_info *tl, swig_type_info *type) {
-  swig_type_info *equiv = type-&gt;next;
-  swig_type_info *tc;
-  if (!type-&gt;clientdata) return;
-  while (equiv) {
-    if (!equiv-&gt;converter) {
-      tc = tl;
-      while (tc) {
-        if ((strcmp(tc-&gt;name, equiv-&gt;name) == 0) &amp;&amp; !tc-&gt;clientdata)
-          SWIG_TypeClientDataTL(tl,tc, type-&gt;clientdata);
-        tc = tc-&gt;prev;
-      }
-    }
-    equiv = equiv-&gt;next;
-  }
-}
-
-/* 
-   Pack 'void *' into a string buffer.
-*/
-SWIGRUNTIME char *
-SWIG_PackVoidPtr(char *buff, void *ptr, const char *name, size_t bsz) {
-  char *r = buff;
-  if ((2*sizeof(void *) + 2) &gt; bsz) return 0;
-  *(r++) = '_';
-  r = SWIG_PackData(r,&amp;ptr,sizeof(void *));
-  if (strlen(name) + 1 &gt; (bsz - (r - buff))) return 0;
-  strcpy(r,name);
-  return buff;
-}
-
-SWIGRUNTIME const char *
-SWIG_UnpackVoidPtr(const char *c, void **ptr, const char *name) {
-  if (*c != '_') {
-    if (strcmp(c,&quot;NULL&quot;) == 0) {
-      *ptr = (void *) 0;
-      return name;
-    } else {
-      return 0;
-    }
-  }
-  return SWIG_UnpackData(++c,ptr,sizeof(void *));
-}
-
-SWIGRUNTIME char *
-SWIG_PackDataName(char *buff, void *ptr, size_t sz, const char *name, size_t bsz) {
-  char *r = buff;
-  size_t lname = (name ? strlen(name) : 0);
-  if ((2*sz + 2 + lname) &gt; bsz) return 0;
-  *(r++) = '_';
-  r = SWIG_PackData(r,ptr,sz);
-  if (lname) {
-    strncpy(r,name,lname+1);
-  } else {
-    *r = 0;
-  }
-  return buff;
-}
-
-SWIGRUNTIME const char *
-SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) {
-  if (*c != '_') {
-    if (strcmp(c,&quot;NULL&quot;) == 0) {
-      memset(ptr,0,sz);
-      return name;
-    } else {
-      return 0;
-    }
-  }
-  return SWIG_UnpackData(++c,ptr,sz);
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-/***********************************************************************
- * common.swg
- *
- *     This file contains generic SWIG runtime support for pointer
- *     type checking as well as a few commonly used macros to control
- *     external linkage.
- *
- * Author : David Beazley (beazley@cs.uchicago.edu)
- *
- * Copyright (c) 1999-2000, The University of Chicago
- * 
- * This file may be freely redistributed without license or fee provided
- * this copyright message remains intact.
- ************************************************************************/
-
-
-#if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
-#  if !defined(STATIC_LINKED)
-#    define SWIGEXPORT(a) __declspec(dllexport) a
-#  else
-#    define SWIGEXPORT(a) a
-#  endif
-#else
-#  define SWIGEXPORT(a) a
-#endif
-
-#ifdef __cplusplus
-extern &quot;C&quot; {
-#endif
-
-
-/*************************************************************************/
-
-
-/* The static type info list */
-
-static swig_type_info *swig_type_list = 0;
-static swig_type_info **swig_type_list_handle = &amp;swig_type_list;
-  
-
-/* Register a type mapping with the type-checking */
-static swig_type_info *
-SWIG_TypeRegister(swig_type_info *ti) {
-  return SWIG_TypeRegisterTL(swig_type_list_handle, ti);
-}
-
-/* Search for a swig_type_info structure */
-static swig_type_info *
-SWIG_TypeQuery(const char *name) {
-  return SWIG_TypeQueryTL(*swig_type_list_handle, name);
-}
-
-/* Set the clientdata field for a type */
-static void
-SWIG_TypeClientData(swig_type_info *ti, void *clientdata) {
-  SWIG_TypeClientDataTL(*swig_type_list_handle, ti, clientdata);
-}
-
-/* This function will propagate the clientdata field of type to
-* any new swig_type_info structures that have been added into the list
-* of equivalent types.  It is like calling
-* SWIG_TypeClientData(type, clientdata) a second time.
-*/
-static void
-SWIG_PropagateClientData(swig_type_info *type) {
-  SWIG_PropagateClientDataTL(*swig_type_list_handle, type);
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-/* ---------------------------------------------------------------------- -*- c -*-
- * perl5.swg
- *
- * Perl5 runtime library
- * $Header: /cvsroot/swig/SWIG/Lib/perl5/perlrun.swg,v 1.20 2004/11/29 23:13:57 wuzzeb Exp $
- * ----------------------------------------------------------------------------- */
-
-#define SWIGPERL
-#define SWIGPERL5
-#ifdef __cplusplus
-/* Needed on some windows machines---since MS plays funny games with the header files under C++ */
-#include &lt;math.h&gt;
-#include &lt;stdlib.h&gt;
-extern &quot;C&quot; {
-#endif
-#include &quot;EXTERN.h&quot;
-#include &quot;perl.h&quot;
-#include &quot;XSUB.h&quot;
-
-/* Get rid of free and malloc defined by perl */
-#undef free
-#undef malloc
-
-#ifndef pTHX_
-#define pTHX_
-#endif
-
-#include &lt;string.h&gt;
-#ifdef __cplusplus
-}
-#endif
-
-/* Macro to call an XS function */
-
-#ifdef PERL_OBJECT 
-#  define SWIG_CALLXS(_name) _name(cv,pPerl) 
-#else 
-#  ifndef MULTIPLICITY 
-#    define SWIG_CALLXS(_name) _name(cv) 
-#  else 
-#    define SWIG_CALLXS(_name) _name(PERL_GET_THX, cv) 
-#  endif 
-#endif 
-
-/* Contract support */
-
-#define SWIG_contract_assert(expr,msg) if (!(expr)) { SWIG_croak(msg); } else
-
-/* Note: SwigMagicFuncHack is a typedef used to get the C++ compiler to just shut up already */
-
-#ifdef PERL_OBJECT
-#define MAGIC_PPERL  CPerlObj *pPerl = (CPerlObj *) this;
-typedef int (CPerlObj::*SwigMagicFunc)(SV *, MAGIC *);
-
-#ifdef __cplusplus
-extern &quot;C&quot; {
-#endif
-typedef int (CPerlObj::*SwigMagicFuncHack)(SV *, MAGIC *);
-#ifdef __cplusplus
-}
-#endif
-
-#define SWIG_MAGIC(a,b) (SV *a, MAGIC *b)
-#define SWIGCLASS_STATIC
-#else
-#define MAGIC_PPERL
-#define SWIGCLASS_STATIC static
-#ifndef MULTIPLICITY
-#define SWIG_MAGIC(a,b) (SV *a, MAGIC *b)
-typedef int (*SwigMagicFunc)(SV *, MAGIC *);
-
-#ifdef __cplusplus
-extern &quot;C&quot; {
-#endif
-typedef int (*SwigMagicFuncHack)(SV *, MAGIC *);
-#ifdef __cplusplus
-}
-#endif
-
-
-#else
-#define SWIG_MAGIC(a,b) (struct interpreter *interp, SV *a, MAGIC *b)
-typedef int (*SwigMagicFunc)(struct interpreter *, SV *, MAGIC *);
-#ifdef __cplusplus
-extern &quot;C&quot; {
-#endif
-typedef int (*SwigMagicFuncHack)(struct interpreter *, SV *, MAGIC *);
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-#endif
-
-#if defined(WIN32) &amp;&amp; defined(PERL_OBJECT) &amp;&amp; !defined(PerlIO_exportFILE)
-#define PerlIO_exportFILE(fh,fl) (FILE*)(fh)
-#endif
-
-/* Modifications for newer Perl 5.005 releases */
-
-#if !defined(PERL_REVISION) || ((PERL_REVISION &gt;= 5) &amp;&amp; ((PERL_VERSION &lt; 5) || ((PERL_VERSION == 5) &amp;&amp; (PERL_SUBVERSION &lt; 50))))
-#  ifndef PL_sv_yes
-#    define PL_sv_yes sv_yes
-#  endif
-#  ifndef PL_sv_undef
-#    define PL_sv_undef sv_undef
-#  endif
-#  ifndef PL_na
-#    define PL_na na
-#  endif
-#endif
-
-#include &lt;stdlib.h&gt;
-
-#ifdef __cplusplus
-extern &quot;C&quot; {
-#endif
-
-#define SWIG_OWNER 1
-#define SWIG_SHADOW 2
-
-/* Common SWIG API */
-
-#ifdef PERL_OBJECT
-#  define SWIG_ConvertPtr(obj, pp, type, flags) \
-     SWIG_Perl_ConvertPtr(pPerl, obj, pp, type, flags)
-#  define SWIG_NewPointerObj(p, type, flags) \
-     SWIG_Perl_NewPointerObj(pPerl, p, type, flags)
-#  define SWIG_MakePackedObj(sv, p, s, type) \
-     SWIG_Perl_MakePackedObj(pPerl, sv, p, s, type)
-#  define SWIG_ConvertPacked(obj, p, s, type, flags) \
-     SWIG_Perl_ConvertPacked(pPerl, obj, p, s, type, flags)
-
-#else
-#  define SWIG_ConvertPtr(obj, pp, type, flags) \
-     SWIG_Perl_ConvertPtr(obj, pp, type, flags)
-#  define SWIG_NewPointerObj(p, type, flags) \
-     SWIG_Perl_NewPointerObj(p, type, flags)
-#  define SWIG_MakePackedObj(sv, p, s, type) \
-     SWIG_Perl_MakePackedObj(sv, p, s, type )
-#  define SWIG_ConvertPacked(obj, p, s, type, flags) \
-     SWIG_Perl_ConvertPacked(obj, p, s, type, flags)
-#endif
-
-/* Perl-specific API */
-#ifdef PERL_OBJECT
-#  define SWIG_MakePtr(sv, ptr, type, flags) \
-     SWIG_Perl_MakePtr(pPerl, sv, ptr, type, flags)
-#  define SWIG_SetError(str) \
-     SWIG_Perl_SetError(pPerl, str)
-#else
-#  define SWIG_MakePtr(sv, ptr, type, flags) \
-     SWIG_Perl_MakePtr(sv, ptr, type, flags)
-#  define SWIG_SetError(str) \
-     SWIG_Perl_SetError(str)
-#  define SWIG_SetErrorSV(str) \
-     SWIG_Perl_SetErrorSV(str)
-#endif
-
-#define SWIG_SetErrorf SWIG_Perl_SetErrorf
-
-
-#ifdef PERL_OBJECT
-#  define SWIG_MAYBE_PERL_OBJECT CPerlObj *pPerl,
-#else
-#  define SWIG_MAYBE_PERL_OBJECT
-#endif
-
-static swig_type_info **
-SWIG_Perl_GetTypeListHandle() {
-  static void *type_pointer = (void *)0;
-  SV *pointer;
-
-  /* first check if pointer already created */
-  if (!type_pointer) {
-    pointer = get_sv(&quot;swig_runtime_data::type_pointer&quot; SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, FALSE);
-    if (pointer &amp;&amp; SvOK(pointer)) {
-      type_pointer = INT2PTR(swig_type_info **, SvIV(pointer));
-    }
-  }
-
-  return (swig_type_info **) type_pointer;
-}
-
-/*
-  Search for a swig_type_info structure
- */
-SWIGRUNTIMEINLINE swig_type_info *
-SWIG_Perl_GetTypeList() {
-  swig_type_info **tlh = SWIG_Perl_GetTypeListHandle();
-  return tlh ? *tlh : (swig_type_info*)0;
-}
-
-#define SWIG_Runtime_GetTypeList SWIG_Perl_GetTypeList 
-
-static swig_type_info *
-SWIG_Perl_TypeCheckRV(SWIG_MAYBE_PERL_OBJECT SV *rv, swig_type_info *ty) {
-  swig_type_info *s;
-  if (!ty) return 0;        /* Void pointer */
-  s = ty-&gt;next;             /* First element always just a name */
-  do {
-    if (sv_derived_from(rv, (char *) s-&gt;name)) {
-      if (s == ty-&gt;next) return s;
-      /* Move s to the top of the linked list */
-      s-&gt;prev-&gt;next = s-&gt;next;
-      if (s-&gt;next) {
-        s-&gt;next-&gt;prev = s-&gt;prev;
-      }
-      /* Insert s as second element in the list */
-      s-&gt;next = ty-&gt;next;
-      if (ty-&gt;next) ty-&gt;next-&gt;prev = s;
-      ty-&gt;next = s;
-      s-&gt;prev = ty;
-      return s;
-    }
-    s = s-&gt;next;
-  } while (s &amp;&amp; (s != ty-&gt;next));
-  return 0;
-}
-
-/* Function for getting a pointer value */
-
-static int
-SWIG_Perl_ConvertPtr(SWIG_MAYBE_PERL_OBJECT SV *sv, void **ptr, swig_type_info *_t, int flags) {
-  swig_type_info *tc;
-  void *voidptr = (void *)0;
-
-  /* If magical, apply more magic */
-  if (SvGMAGICAL(sv))
-    mg_get(sv);
-
-  /* Check to see if this is an object */
-  if (sv_isobject(sv)) {
-    SV *tsv = (SV*) SvRV(sv);
-    IV tmp = 0;
-    if ((SvTYPE(tsv) == SVt_PVHV)) {
-      MAGIC *mg;
-      if (SvMAGICAL(tsv)) {
-        mg = mg_find(tsv,'P');
-        if (mg) {
-          sv = mg-&gt;mg_obj;
-          if (sv_isobject(sv)) {
-            tmp = SvIV((SV*)SvRV(sv));
-          }
-        }
-      } else {
-        return -1;
-      }
-    } else {
-      tmp = SvIV((SV*)SvRV(sv));
-    }
-    voidptr = (void *)tmp;
-    if (!_t) {
-      *(ptr) = voidptr;
-      return 0;
-    }
-  } else if (! SvOK(sv)) {            /* Check for undef */
-    *(ptr) = (void *) 0;
-    return 0;
-  } else if (SvTYPE(sv) == SVt_RV) {  /* Check for NULL pointer */
-    *(ptr) = (void *) 0;
-    if (!SvROK(sv))
-      return 0;
-    else
-      return -1;
-  } else {                            /* Don't know what it is */
-    *(ptr) = (void *) 0;
-    return -1;
-  }
-  if (_t) {
-    /* Now see if the types match */
-    char *_c = HvNAME(SvSTASH(SvRV(sv)));
-    tc = SWIG_TypeCheck(_c,_t);
-    if (!tc) {
-      *ptr = voidptr;
-      return -1;
-    }
-    *ptr = SWIG_TypeCast(tc,voidptr);
-    return 0;
-  }
-  *ptr = voidptr;
-  return 0;
-}
-
-static void
-SWIG_Perl_MakePtr(SWIG_MAYBE_PERL_OBJECT SV *sv, void *ptr, swig_type_info *t, int flags) {
-  if (ptr &amp;&amp; (flags &amp; SWIG_SHADOW)) {
-    SV *self;
-    SV *obj=newSV(0);
-    HV *hash=newHV();
-    HV *stash;
-    sv_setref_pv(obj, (char *) t-&gt;name, ptr);
-    stash=SvSTASH(SvRV(obj));
-    if (flags &amp; SWIG_OWNER) {
-      HV *hv;
-      GV *gv=*(GV**)hv_fetch(stash, &quot;OWNER&quot;, 5, TRUE);
-      if (!isGV(gv))
-        gv_init(gv, stash, &quot;OWNER&quot;, 5, FALSE);
-      hv=GvHVn(gv);
-      hv_store_ent(hv, obj, newSViv(1), 0);
-    }
-    sv_magic((SV *)hash, (SV *)obj, 'P', Nullch, 0);
-    SvREFCNT_dec(obj);
-    self=newRV_noinc((SV *)hash);
-    sv_setsv(sv, self);
-    SvREFCNT_dec((SV *)self);
-    sv_bless(sv, stash);
-  }
-  else {
-    sv_setref_pv(sv, (char *) t-&gt;name, ptr);
-  }
-}
-
-static SWIGINLINE SV *
-SWIG_Perl_NewPointerObj(SWIG_MAYBE_PERL_OBJECT void *ptr, swig_type_info *t, int flags) {
-  SV *result = sv_newmortal();
-  SWIG_MakePtr(result, ptr, t, flags);
-  return result;
-}
-
-static void
-  SWIG_Perl_MakePackedObj(SWIG_MAYBE_PERL_OBJECT SV *sv, void *ptr, int sz, swig_type_info *type) {
-  char result[1024];
-  char *r = result;
-  if ((2*sz + 1 + strlen(type-&gt;name)) &gt; 1000) return;
-  *(r++) = '_';
-  r = SWIG_PackData(r,ptr,sz);
-  strcpy(r,type-&gt;name);
-  sv_setpv(sv, result);
-}
-
-/* Convert a packed value value */
-static int
-SWIG_Perl_ConvertPacked(SWIG_MAYBE_PERL_OBJECT SV *obj, void *ptr, int sz, swig_type_info *ty, int flags) {
-  swig_type_info *tc;
-  const char  *c = 0;
-
-  if ((!obj) || (!SvOK(obj))) return -1;
-  c = SvPV(obj, PL_na);
-  /* Pointer values must start with leading underscore */
-  if (*c != '_') return -1;
-  c++;
-  c = SWIG_UnpackData(c,ptr,sz);
-  if (ty) {
-    tc = SWIG_TypeCheck(c,ty);
-    if (!tc) return -1;
-  }
-  return 0;
-}
-
-static SWIGINLINE void
-SWIG_Perl_SetError(SWIG_MAYBE_PERL_OBJECT const char *error) {
-  if (error) sv_setpv(perl_get_sv(&quot;@&quot;, TRUE), error);
-}
-
-static SWIGINLINE void
-SWIG_Perl_SetErrorSV(SWIG_MAYBE_PERL_OBJECT SV *error) {
-  if (error) sv_setsv(perl_get_sv(&quot;@&quot;, TRUE), error);
-}
-
-static void
-SWIG_Perl_SetErrorf(const char *fmt, ...) {
-  va_list args;
-  va_start(args, fmt);
-  sv_vsetpvfn(perl_get_sv(&quot;@&quot;, TRUE), fmt, strlen(fmt), &amp;args, Null(SV**), 0, Null(bool*));
-  va_end(args);
-}
-
-/* Macros for low-level exception handling */
-#define SWIG_fail       goto fail
-#define SWIG_croak(x)   { SWIG_SetError(x); goto fail; }
-#define SWIG_croakSV(x) { SWIG_SetErrorSV(x); goto fail; }
-/* most preprocessors do not support vararg macros :-( */
-/* #define SWIG_croakf(x...) { SWIG_SetErrorf(x); goto fail; } */
-
-
-typedef XS(SwigPerlWrapper);
-typedef SwigPerlWrapper *SwigPerlWrapperPtr;
-
-/* Structure for command table */
-typedef struct {
-  const char         *name;
-  SwigPerlWrapperPtr  wrapper;
-} swig_command_info;
-
-/* Information for constant table */
-
-#define SWIG_INT     1
-#define SWIG_FLOAT   2
-#define SWIG_STRING  3
-#define SWIG_POINTER 4
-#define SWIG_BINARY  5
-
-/* Constant information structure */
-typedef struct swig_constant_info {
-    int              type;
-    const char      *name;
-    long             lvalue;
-    double           dvalue;
-    void            *pvalue;
-    swig_type_info **ptype;
-} swig_constant_info;
-
-#ifdef __cplusplus
-}
-#endif
-
-/* Structure for variable table */
-typedef struct {
-  const char   *name;
-  SwigMagicFunc   set;
-  SwigMagicFunc   get;
-  swig_type_info  **type;
-} swig_variable_info;
-
-/* Magic variable code */
-#ifndef PERL_OBJECT
-#define swig_create_magic(s,a,b,c) _swig_create_magic(s,a,b,c)
-  #ifndef MULTIPLICITY
-     static void _swig_create_magic(SV *sv, char *name, int (*set)(SV *, MAGIC *), int (*get)(SV *,MAGIC *)) {
-  #else
-     static void _swig_create_magic(SV *sv, char *name, int (*set)(struct interpreter*, SV *, MAGIC *), int (*get)(struct interpreter*, SV *,MAGIC *)) {
-  #endif
-#else
-#  define swig_create_magic(s,a,b,c) _swig_create_magic(pPerl,s,a,b,c)
-static void _swig_create_magic(CPerlObj *pPerl, SV *sv, const char *name, int (CPerlObj::*set)(SV *, MAGIC *), int (CPerlObj::*get)(SV *, MAGIC *)) {
-#endif
-  MAGIC *mg;
-  sv_magic(sv,sv,'U',(char *) name,strlen(name));
-  mg = mg_find(sv,'U');
-  mg-&gt;mg_virtual = (MGVTBL *) malloc(sizeof(MGVTBL));
-  mg-&gt;mg_virtual-&gt;svt_get = (SwigMagicFuncHack) get;
-  mg-&gt;mg_virtual-&gt;svt_set = (SwigMagicFuncHack) set;
-  mg-&gt;mg_virtual-&gt;svt_len = 0;
-  mg-&gt;mg_virtual-&gt;svt_clear = 0;
-  mg-&gt;mg_virtual-&gt;svt_free = 0;
-}
-
-
-
-
-
-
-#ifdef do_open
-  #undef do_open
-#endif
-#ifdef do_close
-  #undef do_close
-#endif
-#ifdef scalar
-  #undef scalar
-#endif
-#ifdef list
-  #undef list
-#endif
-#ifdef apply
-  #undef apply
-#endif
-#ifdef convert
-  #undef convert
-#endif
-#ifdef Error
-  #undef Error
-#endif
-#ifdef form
-  #undef form
-#endif
-#ifdef vform
-  #undef vform
-#endif
-#ifdef LABEL
-  #undef LABEL
-#endif
-#ifdef METHOD
-  #undef METHOD
-#endif
-#ifdef Move
-  #undef Move
-#endif
-#ifdef yylex
-  #undef yylex
-#endif
-#ifdef yyparse
-  #undef yyparse
-#endif
-#ifdef yyerror
-  #undef yyerror
-#endif
-#ifdef invert
-  #undef invert
-#endif
-#ifdef ref
-  #undef ref
-#endif
-#ifdef ENTER
-  #undef ENTER
-#endif
-
-
-/* -------- TYPES TABLE (BEGIN) -------- */
-
-static swig_type_info *swig_types[1];
-
-/* -------- TYPES TABLE (END) -------- */
-
-#define SWIG_init    boot_DumpRenderTreeSupport
-
-#define SWIG_name   &quot;DumpRenderTreeSupportc::boot_DumpRenderTreeSupport&quot;
-#define SWIG_prefix &quot;DumpRenderTreeSupportc::&quot;
-
-#ifdef __cplusplus
-extern &quot;C&quot;
-#endif
-#ifndef PERL_OBJECT
-#ifndef MULTIPLICITY
-SWIGEXPORT(void) SWIG_init (CV* cv);
-#else
-SWIGEXPORT(void) SWIG_init (pTHXo_ CV* cv);
-#endif
-#else
-SWIGEXPORT(void) SWIG_init (CV *cv, CPerlObj *);
-#endif
-
-int processIsCrashing(int);
-#ifdef PERL_OBJECT
-#define MAGIC_CLASS _wrap_DumpRenderTreeSupport_var::
-class _wrap_DumpRenderTreeSupport_var : public CPerlObj {
-public:
-#else
-#define MAGIC_CLASS
-#endif
-SWIGCLASS_STATIC int swig_magic_readonly(pTHX_ SV *sv, MAGIC *mg) {
-    MAGIC_PPERL
-    sv = sv; mg = mg;
-    croak(&quot;Value is read-only.&quot;);
-    return 0;
-}
-
-
-#ifdef PERL_OBJECT
-};
-#endif
-
-#ifdef __cplusplus
-extern &quot;C&quot; {
-#endif
-XS(_wrap_processIsCrashing) {
-    {
-        int arg1 ;
-        int result;
-        int argvi = 0;
-        dXSARGS;
-        
-        if ((items &lt; 1) || (items &gt; 1)) {
-            SWIG_croak(&quot;Usage: processIsCrashing(pid);&quot;);
-        }
-        arg1 = (int) SvIV(ST(0));
-        result = (int)processIsCrashing(arg1);
-        
-        ST(argvi) = sv_newmortal();
-        sv_setiv(ST(argvi++), (IV) result);
-        XSRETURN(argvi);
-        fail:
-        ;
-    }
-    croak(Nullch);
-}
-
-
-
-/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */
-
-
-static swig_type_info *swig_types_initial[] = {
-0
-};
-
-
-/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */
-
-static swig_constant_info swig_constants[] = {
-{0,0,0,0,0,0}
-};
-#ifdef __cplusplus
-}
-#endif
-static swig_variable_info swig_variables[] = {
-{0,0,0,0}
-};
-static swig_command_info swig_commands[] = {
-{&quot;DumpRenderTreeSupportc::processIsCrashing&quot;, _wrap_processIsCrashing},
-{0,0}
-};
-
-
-static void SWIG_Perl_SetTypeListHandle(swig_type_info **handle) {
-    SV *pointer;
-    
-    /* create a new pointer */
-    pointer = get_sv(&quot;swig_runtime_data::type_pointer&quot; SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, TRUE);
-    sv_setiv(pointer, PTR2IV(swig_type_list_handle));
-}
-
-static swig_type_info **
-SWIG_Perl_LookupTypePointer(swig_type_info **type_list_handle) {
-    swig_type_info **type_pointer;
-    
-    /* first check if module already created */
-    type_pointer = SWIG_Perl_GetTypeListHandle();
-    if (type_pointer) {
-        return type_pointer;
-    } else {
-        /* create a new module and variable */
-        SWIG_Perl_SetTypeListHandle(type_list_handle);
-        return type_list_handle;
-    }
-}
-
-
-#ifdef __cplusplus
-extern &quot;C&quot;
-#endif
-
-XS(SWIG_init) {
-    dXSARGS;
-    int i;
-    static int _init = 0;
-    if (!_init) {
-        swig_type_list_handle = SWIG_Perl_LookupTypePointer(swig_type_list_handle);
-        for (i = 0; swig_types_initial[i]; i++) {
-            swig_types[i] = SWIG_TypeRegister(swig_types_initial[i]);
-        }
-        _init = 1;
-    }
-    
-    /* Install commands */
-    for (i = 0; swig_commands[i].name; i++) {
-        newXS((char*) swig_commands[i].name,swig_commands[i].wrapper, (char*)__FILE__);
-    }
-    
-    /* Install variables */
-    for (i = 0; swig_variables[i].name; i++) {
-        SV *sv;
-        sv = perl_get_sv((char*) swig_variables[i].name, TRUE | 0x2);
-        if (swig_variables[i].type) {
-            SWIG_MakePtr(sv,(void *)1, *swig_variables[i].type,0);
-        } else {
-            sv_setiv(sv,(IV) 0);
-        }
-        swig_create_magic(sv, (char *) swig_variables[i].name, swig_variables[i].set, swig_variables[i].get); 
-    }
-    
-    /* Install constant */
-    for (i = 0; swig_constants[i].type; i++) {
-        SV *sv;
-        sv = perl_get_sv((char*)swig_constants[i].name, TRUE | 0x2);
-        switch(swig_constants[i].type) {
-            case SWIG_INT:
-            sv_setiv(sv, (IV) swig_constants[i].lvalue);
-            break;
-            case SWIG_FLOAT:
-            sv_setnv(sv, (double) swig_constants[i].dvalue);
-            break;
-            case SWIG_STRING:
-            sv_setpv(sv, (char *) swig_constants[i].pvalue);
-            break;
-            case SWIG_POINTER:
-            SWIG_MakePtr(sv, swig_constants[i].pvalue, *(swig_constants[i].ptype),0);
-            break;
-            case SWIG_BINARY:
-            SWIG_MakePackedObj(sv, swig_constants[i].pvalue, swig_constants[i].lvalue, *(swig_constants[i].ptype));
-            break;
-            default:
-            break;
-        }
-        SvREADONLY_on(sv);
-    }
-    
-    ST(0) = &amp;PL_sv_yes;
-    XSRETURN(1);
-}
-
</del></span></pre></div>
<a id="branchesjsCStackToolsDumpRenderTreemacPerlSupportMakefile"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/DumpRenderTree/mac/PerlSupport/Makefile (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/DumpRenderTree/mac/PerlSupport/Makefile        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/DumpRenderTree/mac/PerlSupport/Makefile        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,82 +0,0 @@
</span><del>-# Copyright (C) 2009 Apple Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-#    notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-#    notice, this list of conditions and the following disclaimer in the
-#    documentation and/or other materials provided with the distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
-# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
-
-CONFIGURATION_BUILD_DIR ?= .
-OUTPUT_DIR=$(CONFIGURATION_BUILD_DIR)
-
-WRAPPER_DIR=$(OUTPUT_DIR)/DerivedSources/DumpRenderTree
-WRAPPER=$(WRAPPER_DIR)/DumpRenderTreeSupport_wrap.c
-PERL_MODULE=$(OUTPUT_DIR)/DumpRenderTreeSupport.pm
-DYLIB=$(OUTPUT_DIR)/DumpRenderTreeSupport.dylib
-DUMPRENDERTREE=$(OUTPUT_DIR)/DumpRenderTree
-PERL=/usr/bin/perl
-
-OSX_VERSION = $(shell sw_vers -productVersion | cut -d. -f 2)
-ifeq &quot;$(OSX_VERSION)&quot; &quot;5&quot;
-GENERATE_WRAPPER = YES
-endif
-ifeq &quot;$(OSX_VERSION)&quot; &quot;6&quot;
-GENERATE_WRAPPER = NO
-endif
-
-ifeq &quot;$(GENERATE_WRAPPER)&quot; &quot;YES&quot;
-
-SWIG=/usr/bin/swig
-
-all: $(DYLIB) $(PERL_MODULE)
-
-$(WRAPPER) $(PERL_MODULE): DumpRenderTreeSupport.c $(DUMPRENDERTREE)
-        mkdir -p $(WRAPPER_DIR)
-        $(SWIG) -o $(WRAPPER) -outdir $(OUTPUT_DIR) -perl -module DumpRenderTreeSupport $&lt;
-
-
-else
-
-
-all: $(DYLIB) $(PERL_MODULE)
-
-$(WRAPPER): DumpRenderTreeSupport_wrapPregenerated.c $(DUMPRENDERTREE)
-        mkdir -p $(WRAPPER_DIR)
-        cp DumpRenderTreeSupport_wrapPregenerated.c $(WRAPPER)
-
-$(PERL_MODULE): DumpRenderTreeSupportPregenerated.pm $(DUMPRENDERTREE)
-        cp DumpRenderTreeSupportPregenerated.pm $(PERL_MODULE)
-
-
-endif
-
-$(DYLIB): DumpRenderTreeSupport.c $(WRAPPER)
-        gcc -g -dynamiclib -o $(DYLIB) `$(PERL) -MExtUtils::Embed -eperl_inc` `$(PERL) -MExtUtils::Embed -e'my $$opts = ldopts(0); $$opts =~ s/-arch [^ ]*( |$$)//g; print $$opts, &quot; -arch &quot;, join(&quot; -arch &quot;, split(&quot; &quot;,$$ENV{ARCHS}))'` $^
-
-clean:
-        rm -f $(WRAPPER) $(PERL_MODULE) $(DYLIB)
-
-installhdrs installsrc:
-
-INSTALL_LOCATION=$(DSTROOT)/$(SYSTEM_LIBRARY_DIR)/Frameworks/$(WEBKIT_FRAMEWORK_RESOURCES_PATH)
-
-install: all
-        mkdir -p $(INSTALL_LOCATION)
-        cp $(DYLIB) $(INSTALL_LOCATION)/DumpRenderTreeSupport.dylib
-        cp $(PERL_MODULE) $(INSTALL_LOCATION)/DumpRenderTreeSupport.pm
-
</del></span></pre></div>
<a id="branchesjsCStackToolsDumpRenderTreemacTestRunnerMacmm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/DumpRenderTree/mac/TestRunnerMac.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/DumpRenderTree/mac/TestRunnerMac.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/DumpRenderTree/mac/TestRunnerMac.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -706,7 +706,7 @@
</span><span class="cx"> 
</span><span class="cx"> void TestRunner::setCacheModel(int cacheModel)
</span><span class="cx"> {
</span><del>-    [[WebPreferences standardPreferences] setCacheModel:cacheModel];
</del><ins>+    [[WebPreferences standardPreferences] setCacheModel:(WebCacheModel)cacheModel];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool TestRunner::isCommandEnabled(JSStringRef name)
</span></span></pre></div>
<a id="branchesjsCStackToolsMiniBrowserMiniBrowserxcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -256,6 +256,7 @@
</span><span class="cx">                         isa = XCBuildConfiguration;
</span><span class="cx">                         baseConfigurationReference = BCA8CBDE11E578A000812FB7 /* DebugRelease.xcconfig */;
</span><span class="cx">                         buildSettings = {
</span><ins>+                                GCC_OPTIMIZATION_LEVEL = 0;
</ins><span class="cx">                         };
</span><span class="cx">                         name = Debug;
</span><span class="cx">                 };
</span></span></pre></div>
<a id="branchesjsCStackToolsMiniBrowsergtkCMakeListstxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/MiniBrowser/gtk/CMakeLists.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/MiniBrowser/gtk/CMakeLists.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/MiniBrowser/gtk/CMakeLists.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -5,14 +5,16 @@
</span><span class="cx"> 
</span><span class="cx"> set(MiniBrowser_SOURCES
</span><span class="cx">     ${DERIVED_SOURCES_MINIBROWSER_DIR}/BrowserMarshal.c
</span><ins>+    ${MINIBROWSER_DIR}/BrowserCellRendererVariant.c
</ins><span class="cx">     ${MINIBROWSER_DIR}/BrowserCellRendererVariant.h
</span><del>-    ${MINIBROWSER_DIR}/BrowserCellRendererVariant.c
</del><ins>+    ${MINIBROWSER_DIR}/BrowserDownloadsBar.c
</ins><span class="cx">     ${MINIBROWSER_DIR}/BrowserDownloadsBar.h
</span><del>-    ${MINIBROWSER_DIR}/BrowserDownloadsBar.c
</del><ins>+    ${MINIBROWSER_DIR}/BrowserSearchBar.c
+    ${MINIBROWSER_DIR}/BrowserSearchBar.h
+    ${MINIBROWSER_DIR}/BrowserSettingsDialog.c
</ins><span class="cx">     ${MINIBROWSER_DIR}/BrowserSettingsDialog.h
</span><del>-    ${MINIBROWSER_DIR}/BrowserSettingsDialog.c
</del><ins>+    ${MINIBROWSER_DIR}/BrowserWindow.c
</ins><span class="cx">     ${MINIBROWSER_DIR}/BrowserWindow.h
</span><del>-    ${MINIBROWSER_DIR}/BrowserWindow.c
</del><span class="cx">     ${MINIBROWSER_DIR}/main.c
</span><span class="cx"> )
</span><span class="cx"> 
</span><span class="lines">@@ -36,7 +38,7 @@
</span><span class="cx"> 
</span><span class="cx"> add_custom_command(
</span><span class="cx">     OUTPUT ${DERIVED_SOURCES_MINIBROWSER_DIR}/BrowserMarshal.c
</span><del>-           ${DERIVED_SOURCES_MINIBROWSER_DIR}/Browsermarshal.h
</del><ins>+           ${DERIVED_SOURCES_MINIBROWSER_DIR}/BrowserMarshal.h
</ins><span class="cx">     MAIN_DEPENDENCY ${MINIBROWSER_DIR}/browser-marshal.list
</span><span class="cx">     COMMAND glib-genmarshal --prefix=browser_marshal ${MINIBROWSER_DIR}/browser-marshal.list --body &gt; ${DERIVED_SOURCES_MINIBROWSER_DIR}/BrowserMarshal.c
</span><span class="cx">     COMMAND glib-genmarshal --prefix=browser_marshal ${MINIBROWSER_DIR}/browser-marshal.list --header &gt; ${DERIVED_SOURCES_MINIBROWSER_DIR}/BrowserMarshal.h
</span></span></pre></div>
<a id="branchesjsCStackToolsMiniBrowsermacAppDelegateh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/MiniBrowser/mac/AppDelegate.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/MiniBrowser/mac/AppDelegate.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/MiniBrowser/mac/AppDelegate.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -23,9 +23,13 @@
</span><span class="cx">  * THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><ins>+#import &lt;WebKit2/WebKit2.h&gt;
+
</ins><span class="cx"> @interface BrowserAppDelegate : NSObject &lt;NSApplicationDelegate&gt; {
</span><del>-    WKContextRef _processContext;
-    WKPageGroupRef _pageGroup;
</del><ins>+#if WK_API_ENABLED
+    WKProcessGroup *_processGroup;
+    WKBrowsingContextGroup *_browsingContextGroup;
+#endif
</ins><span class="cx">     NSMutableSet *_browserWindows;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackToolsMiniBrowsermacAppDelegatem"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/MiniBrowser/mac/AppDelegate.m (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/MiniBrowser/mac/AppDelegate.m        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/MiniBrowser/mac/AppDelegate.m        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -28,7 +28,7 @@
</span><span class="cx"> #import &quot;WK1BrowserWindowController.h&quot;
</span><span class="cx"> #import &quot;WK2BrowserWindowController.h&quot;
</span><span class="cx"> 
</span><del>-#import &lt;WebKit2/WKContextPrivate.h&gt;
</del><ins>+#import &lt;WebKit2/WebKit2.h&gt;
</ins><span class="cx"> #import &lt;WebKit2/WKStringCF.h&gt;
</span><span class="cx"> #import &lt;WebKit2/WKURLCF.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -41,77 +41,14 @@
</span><span class="cx"> 
</span><span class="cx"> @implementation BrowserAppDelegate
</span><span class="cx"> 
</span><del>-// MARK: History Client Callbacks
-
-static void didNavigateWithNavigationData(WKContextRef context, WKPageRef page, WKNavigationDataRef navigationData, WKFrameRef frame, const void *clientInfo)
-{
-    WKStringRef wkTitle = WKNavigationDataCopyTitle(navigationData);
-    CFStringRef title = WKStringCopyCFString(0, wkTitle);
-    WKRelease(wkTitle);
-
-    WKURLRef wkURL = WKNavigationDataCopyURL(navigationData);
-    CFURLRef url = WKURLCopyCFURL(0, wkURL);
-    WKRelease(wkURL);
-
-    LOG(@&quot;HistoryClient - didNavigateWithNavigationData - title: %@ - url: %@&quot;, title, url);
-    CFRelease(title);
-    CFRelease(url);
-}
-
-static void didPerformClientRedirect(WKContextRef context, WKPageRef page, WKURLRef sourceURL, WKURLRef destinationURL, WKFrameRef frame, const void *clientInfo)
-{
-    CFURLRef cfSourceURL = WKURLCopyCFURL(0, sourceURL);
-    CFURLRef cfDestinationURL = WKURLCopyCFURL(0, destinationURL);
-    LOG(@&quot;HistoryClient - didPerformClientRedirect - sourceURL: %@ - destinationURL: %@&quot;, cfSourceURL, cfDestinationURL);
-    CFRelease(cfSourceURL);
-    CFRelease(cfDestinationURL);
-}
-
-static void didPerformServerRedirect(WKContextRef context, WKPageRef page, WKURLRef sourceURL, WKURLRef destinationURL, WKFrameRef frame, const void *clientInfo)
-{
-    CFURLRef cfSourceURL = WKURLCopyCFURL(0, sourceURL);
-    CFURLRef cfDestinationURL = WKURLCopyCFURL(0, destinationURL);
-    LOG(@&quot;HistoryClient - didPerformServerRedirect - sourceURL: %@ - destinationURL: %@&quot;, cfSourceURL, cfDestinationURL);
-    CFRelease(cfSourceURL);
-    CFRelease(cfDestinationURL);
-}
-
-static void didUpdateHistoryTitle(WKContextRef context, WKPageRef page, WKStringRef title, WKURLRef URL, WKFrameRef frame, const void *clientInfo)
-{
-    CFStringRef cfTitle = WKStringCopyCFString(0, title);
-    CFURLRef cfURL = WKURLCopyCFURL(0, URL);
-    LOG(@&quot;HistoryClient - didUpdateHistoryTitle - title: %@ - URL: %@&quot;, cfTitle, cfURL);
-    CFRelease(cfTitle);
-    CFRelease(cfURL);
-}
-
-static void populateVisitedLinks(WKContextRef context, const void *clientInfo)
-{
-    LOG(@&quot;HistoryClient - populateVisitedLinks&quot;);
-}
-
</del><span class="cx"> - (id)init
</span><span class="cx"> {
</span><span class="cx">     self = [super init];
</span><span class="cx">     if (self) {
</span><del>-        WKContextHistoryClientV0 historyClient = {
-            { 0, self },
-            didNavigateWithNavigationData,
-            didPerformClientRedirect,
-            didPerformServerRedirect,
-            didUpdateHistoryTitle,
-            populateVisitedLinks
-        };
-
-        _processContext = WKContextCreate();
-
-        WKContextSetHistoryClient(_processContext, &amp;historyClient.base);
-        WKContextSetCacheModel(_processContext, kWKCacheModelPrimaryWebBrowser);
-
-        WKStringRef pageGroupIdentifier = WKStringCreateWithCFString(CFSTR(&quot;MiniBrowser&quot;));
-        _pageGroup = WKPageGroupCreateWithIdentifier(pageGroupIdentifier);
-        WKRelease(pageGroupIdentifier);
-
</del><ins>+#if WK_API_ENABLED
+        _processGroup = [[WKProcessGroup alloc] init];
+        _browsingContextGroup = [[WKBrowsingContextGroup alloc] initWithIdentifier:@&quot;MiniBrowser&quot;];
+#endif
</ins><span class="cx">         _browserWindows = [[NSMutableSet alloc] init];
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -126,7 +63,7 @@
</span><span class="cx">         controller = [[WK1BrowserWindowController alloc] initWithWindowNibName:@&quot;BrowserWindow&quot;];
</span><span class="cx"> #if WK_API_ENABLED
</span><span class="cx">     else if ([sender tag] == WebKit2NewWindowTag)
</span><del>-        controller = [[WK2BrowserWindowController alloc] initWithContext:_processContext pageGroup:_pageGroup];
</del><ins>+        controller = [[WK2BrowserWindowController alloc] initWithProcessGroup:_processGroup browsingContextGroup:_browsingContextGroup];
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     if (!controller)
</span><span class="lines">@@ -157,8 +94,13 @@
</span><span class="cx">         [controller applicationTerminating];
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    WKRelease(_processContext);
-    _processContext = 0;
</del><ins>+#if WK_API_ENABLED
+    [_processGroup release];
+    _processGroup = nil;
+
+    [_browsingContextGroup release];
+    _browsingContextGroup = nil;
+#endif
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (BrowserWindowController *)frontmostBrowserWindowController
</span><span class="lines">@@ -200,7 +142,7 @@
</span><span class="cx">             return;
</span><span class="cx"> 
</span><span class="cx">         // FIXME: add a way to open in WK1 also.
</span><del>-        BrowserWindowController *newBrowserWindowController = [[WK2BrowserWindowController alloc] initWithContext:_processContext pageGroup:_pageGroup];
</del><ins>+        BrowserWindowController *newBrowserWindowController = [[WK2BrowserWindowController alloc] initWithProcessGroup:_processGroup browsingContextGroup:_browsingContextGroup];
</ins><span class="cx">         [newBrowserWindowController.window makeKeyAndOrderFront:self];
</span><span class="cx"> 
</span><span class="cx">         NSURL *url = [openPanel.URLs objectAtIndex:0];
</span></span></pre></div>
<a id="branchesjsCStackToolsMiniBrowsermacWK2BrowserWindowControllerh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/MiniBrowser/mac/WK2BrowserWindowController.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/MiniBrowser/mac/WK2BrowserWindowController.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/MiniBrowser/mac/WK2BrowserWindowController.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -29,7 +29,7 @@
</span><span class="cx"> 
</span><span class="cx"> @interface WK2BrowserWindowController : BrowserWindowController &lt;BrowserController&gt;
</span><span class="cx"> 
</span><del>-- (id)initWithContext:(WKContextRef)context pageGroup:(WKPageGroupRef)pageGroup;
</del><ins>+- (id)initWithProcessGroup:(WKProcessGroup *)processGroup browsingContextGroup:(WKBrowsingContextGroup *)browsingContextGroup;
</ins><span class="cx"> 
</span><span class="cx"> @end
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackToolsMiniBrowsermacWK2BrowserWindowControllerm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/MiniBrowser/mac/WK2BrowserWindowController.m (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/MiniBrowser/mac/WK2BrowserWindowController.m        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/MiniBrowser/mac/WK2BrowserWindowController.m        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -29,27 +29,31 @@
</span><span class="cx"> 
</span><span class="cx"> #import &quot;AppDelegate.h&quot;
</span><span class="cx"> #import &lt;WebKit2/WKBrowsingContextControllerPrivate.h&gt;
</span><ins>+#import &lt;WebKit2/WKBrowsingContextHistoryDelegate.h&gt;
</ins><span class="cx"> #import &lt;WebKit2/WKBrowsingContextLoadDelegatePrivate.h&gt;
</span><span class="cx"> #import &lt;WebKit2/WKBrowsingContextPolicyDelegate.h&gt;
</span><del>-#import &lt;WebKit2/WKPagePrivate.h&gt;
</del><ins>+#import &lt;WebKit2/WKNavigationData.h&gt;
</ins><span class="cx"> #import &lt;WebKit2/WKStringCF.h&gt;
</span><span class="cx"> #import &lt;WebKit2/WKURLCF.h&gt;
</span><span class="cx"> #import &lt;WebKit2/WKViewPrivate.h&gt;
</span><span class="cx"> 
</span><del>-@interface WK2BrowserWindowController () &lt;WKBrowsingContextLoadDelegatePrivate, WKBrowsingContextPolicyDelegate&gt;
</del><ins>+static void* keyValueObservingContext = &amp;keyValueObservingContext;
+
+@interface WK2BrowserWindowController () &lt;WKBrowsingContextLoadDelegatePrivate, WKBrowsingContextPolicyDelegate, WKBrowsingContextHistoryDelegate&gt;
</ins><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> @implementation WK2BrowserWindowController {
</span><del>-    WKContextRef _context;
-    WKPageGroupRef _pageGroup;
</del><ins>+    WKProcessGroup *_processGroup;
+    WKBrowsingContextGroup *_browsingContextGroup;
+
</ins><span class="cx">     WKView *_webView;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (id)initWithContext:(WKContextRef)context pageGroup:(WKPageGroupRef)pageGroup
</del><ins>+- (id)initWithProcessGroup:(WKProcessGroup *)processGroup browsingContextGroup:(WKBrowsingContextGroup *)browsingContextGroup
</ins><span class="cx"> {
</span><span class="cx">     if ((self = [super initWithWindowNibName:@&quot;BrowserWindow&quot;])) {
</span><del>-        _context = WKRetain(context);
-        _pageGroup = WKRetain(pageGroup);
</del><ins>+        _processGroup = [processGroup retain];
+        _browsingContextGroup = [browsingContextGroup retain];
</ins><span class="cx">         _zoomTextOnly = NO;
</span><span class="cx">     }
</span><span class="cx">     
</span><span class="lines">@@ -61,13 +65,15 @@
</span><span class="cx">     [progressIndicator unbind:NSHiddenBinding];
</span><span class="cx">     [progressIndicator unbind:NSValueBinding];
</span><span class="cx"> 
</span><del>-    WKRelease(_context);
-    WKRelease(_pageGroup);
-    [_webView.browsingContextController removeObserver:self forKeyPath:@&quot;title&quot; context:[WK2BrowserWindowController self]];
</del><ins>+    [_webView.browsingContextController removeObserver:self forKeyPath:@&quot;title&quot; context:keyValueObservingContext];
+    [_webView.browsingContextController removeObserver:self forKeyPath:@&quot;activeURL&quot; context:keyValueObservingContext];
</ins><span class="cx">     _webView.browsingContextController.loadDelegate = nil;
</span><span class="cx">     _webView.browsingContextController.policyDelegate = nil;
</span><span class="cx">     [_webView release];
</span><span class="cx"> 
</span><ins>+    [_browsingContextGroup release];
+    [_processGroup release];
+
</ins><span class="cx">     [super dealloc];
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -75,15 +81,7 @@
</span><span class="cx"> {
</span><span class="cx">     [urlText setStringValue:[self addProtocolIfNecessary:[urlText stringValue]]];
</span><span class="cx"> 
</span><del>-    CFURLRef cfURL = CFURLCreateWithString(0, (CFStringRef)[urlText stringValue], 0);
-    if (!cfURL)
-        return;
-
-    WKURLRef url = WKURLCreateWithCFURL(cfURL);
-    CFRelease(cfURL);
-
-    WKPageLoadURL(_webView.pageRef, url);
-    WKRelease(url);
</del><ins>+    [_webView.browsingContextController loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[urlText stringValue]]]];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (IBAction)showHideWebView:(id)sender
</span><span class="lines">@@ -131,7 +129,7 @@
</span><span class="cx"> 
</span><span class="cx"> - (IBAction)reload:(id)sender
</span><span class="cx"> {
</span><del>-    WKPageReload(_webView.pageRef);
</del><ins>+    [_webView.browsingContextController reload];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (IBAction)forceRepaint:(id)sender
</span><span class="lines">@@ -141,12 +139,12 @@
</span><span class="cx"> 
</span><span class="cx"> - (IBAction)goBack:(id)sender
</span><span class="cx"> {
</span><del>-    WKPageGoBack(_webView.pageRef);
</del><ins>+    [_webView.browsingContextController goBack];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (IBAction)goForward:(id)sender
</span><span class="cx"> {
</span><del>-    WKPageGoForward(_webView.pageRef);
</del><ins>+    [_webView.browsingContextController goForward];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (BOOL)validateUserInterfaceItem:(id &lt;NSValidatedUserInterfaceItem&gt;)item
</span><span class="lines">@@ -154,10 +152,10 @@
</span><span class="cx">     SEL action = [item action];
</span><span class="cx"> 
</span><span class="cx">     if (action == @selector(goBack:))
</span><del>-        return _webView &amp;&amp; WKPageCanGoBack(_webView.pageRef);
</del><ins>+        return _webView &amp;&amp; [_webView.browsingContextController canGoBack];
</ins><span class="cx">     
</span><span class="cx">     if (action == @selector(goForward:))
</span><del>-        return _webView &amp;&amp; WKPageCanGoForward(_webView.pageRef);
</del><ins>+        return _webView &amp;&amp; [_webView.browsingContextController canGoForward];
</ins><span class="cx">     
</span><span class="cx">     return YES;
</span><span class="cx"> }
</span><span class="lines">@@ -190,14 +188,17 @@
</span><span class="cx"> #define DefaultMaximumZoomFactor (3.0)
</span><span class="cx"> #define DefaultZoomFactorRatio (1.2)
</span><span class="cx"> 
</span><del>-- (double)currentZoomFactor
</del><ins>+- (CGFloat)currentZoomFactor
</ins><span class="cx"> {
</span><del>-    return _zoomTextOnly ? WKPageGetTextZoomFactor(_webView.pageRef) : WKPageGetPageZoomFactor(_webView.pageRef);
</del><ins>+    return _zoomTextOnly ? _webView.browsingContextController.textZoom : _webView.browsingContextController.pageZoom;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (void)setCurrentZoomFactor:(double)factor
</del><ins>+- (void)setCurrentZoomFactor:(CGFloat)factor
</ins><span class="cx"> {
</span><del>-    _zoomTextOnly ? WKPageSetTextZoomFactor(_webView.pageRef, factor) : WKPageSetPageZoomFactor(_webView.pageRef, factor);
</del><ins>+    if (_zoomTextOnly)
+        _webView.browsingContextController.textZoom = factor;
+    else
+        _webView.browsingContextController.pageZoom = factor;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (BOOL)canZoomIn
</span><span class="lines">@@ -210,7 +211,7 @@
</span><span class="cx">     if (![self canZoomIn])
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    double factor = [self currentZoomFactor] * DefaultZoomFactorRatio;
</del><ins>+    CGFloat factor = [self currentZoomFactor] * DefaultZoomFactorRatio;
</ins><span class="cx">     [self setCurrentZoomFactor:factor];
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -224,13 +225,13 @@
</span><span class="cx">     if (![self canZoomIn])
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    double factor = [self currentZoomFactor] / DefaultZoomFactorRatio;
</del><ins>+    CGFloat factor = [self currentZoomFactor] / DefaultZoomFactorRatio;
</ins><span class="cx">     [self setCurrentZoomFactor:factor];
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (BOOL)canResetZoom
</span><span class="cx"> {
</span><del>-    return _zoomTextOnly ? (WKPageGetTextZoomFactor(_webView.pageRef) != 1) : (WKPageGetPageZoomFactor(_webView.pageRef) != 1);
</del><ins>+    return _zoomTextOnly ? (_webView.browsingContextController.textZoom != 1) : (_webView.browsingContextController.pageZoom != 1);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)resetZoom:(id)sender
</span><span class="lines">@@ -239,20 +240,20 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     if (_zoomTextOnly)
</span><del>-        WKPageSetTextZoomFactor(_webView.pageRef, 1);
</del><ins>+        _webView.browsingContextController.textZoom = 1;
</ins><span class="cx">     else
</span><del>-        WKPageSetPageZoomFactor(_webView.pageRef, 1);
</del><ins>+        _webView.browsingContextController.pageZoom = 1;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (IBAction)toggleZoomMode:(id)sender
</span><span class="cx"> {
</span><span class="cx">     if (_zoomTextOnly) {
</span><span class="cx">         _zoomTextOnly = NO;
</span><del>-        double currentTextZoom = WKPageGetTextZoomFactor(_webView.pageRef);
</del><ins>+        double currentTextZoom = _webView.browsingContextController.textZoom;
</ins><span class="cx">         WKPageSetPageAndTextZoomFactors(_webView.pageRef, currentTextZoom, 1);
</span><span class="cx">     } else {
</span><span class="cx">         _zoomTextOnly = YES;
</span><del>-        double currentPageZoom = WKPageGetPageZoomFactor(_webView.pageRef);
</del><ins>+        double currentPageZoom = _webView.browsingContextController.pageZoom;
</ins><span class="cx">         WKPageSetPageAndTextZoomFactors(_webView.pageRef, 1, currentPageZoom);
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="lines">@@ -301,11 +302,13 @@
</span><span class="cx"> 
</span><span class="cx"> - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
</span><span class="cx"> {
</span><del>-    if (context != [WK2BrowserWindowController self] || object != _webView.browsingContextController)
</del><ins>+    if (context != keyValueObservingContext || object != _webView.browsingContextController)
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     if ([keyPath isEqualToString:@&quot;title&quot;])
</span><span class="cx">         self.window.title = [_webView.browsingContextController.title stringByAppendingString:@&quot; [WK2]&quot;];
</span><ins>+    else if ([keyPath isEqualToString:@&quot;activeURL&quot;])
+        [self updateTextFieldFromURL:_webView.browsingContextController.activeURL];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // MARK: UI Client Callbacks
</span><span class="lines">@@ -313,7 +316,8 @@
</span><span class="cx"> static WKPageRef createNewPage(WKPageRef page, WKURLRequestRef request, WKDictionaryRef features, WKEventModifiers modifiers, WKEventMouseButton button, const void* clientInfo)
</span><span class="cx"> {
</span><span class="cx">     LOG(@&quot;createNewPage&quot;);
</span><del>-    WK2BrowserWindowController *controller = [[WK2BrowserWindowController alloc] initWithContext:WKPageGetContext(page) pageGroup:WKPageGetPageGroup(page)];
</del><ins>+    WK2BrowserWindowController *originator = (WK2BrowserWindowController *)clientInfo;
+    WK2BrowserWindowController *controller = [[WK2BrowserWindowController alloc] initWithProcessGroup:originator-&gt;_processGroup browsingContextGroup:originator-&gt;_browsingContextGroup];
</ins><span class="cx">     [controller loadWindow];
</span><span class="cx"> 
</span><span class="cx">     return WKRetain(controller-&gt;_webView.pageRef);
</span><span class="lines">@@ -497,19 +501,22 @@
</span><span class="cx"> 
</span><span class="cx"> - (void)awakeFromNib
</span><span class="cx"> {
</span><del>-    _webView = [[WKView alloc] initWithFrame:[containerView bounds] contextRef:_context pageGroupRef:_pageGroup];
</del><ins>+    _webView = [[WKView alloc] initWithFrame:[containerView bounds] processGroup:_processGroup browsingContextGroup:_browsingContextGroup];
</ins><span class="cx"> 
</span><ins>+    _webView.allowsMagnification = YES;
+
</ins><span class="cx">     [_webView setAutoresizingMask:(NSViewWidthSizable | NSViewHeightSizable)];
</span><span class="cx">     [containerView addSubview:_webView];
</span><span class="cx"> 
</span><span class="cx">     [progressIndicator bind:NSHiddenBinding toObject:_webView.browsingContextController withKeyPath:@&quot;loading&quot; options:@{ NSValueTransformerNameBindingOption : NSNegateBooleanTransformerName }];
</span><span class="cx">     [progressIndicator bind:NSValueBinding toObject:_webView.browsingContextController withKeyPath:@&quot;estimatedProgress&quot; options:nil];
</span><span class="cx"> 
</span><del>-    [_webView.browsingContextController addObserver:self forKeyPath:@&quot;title&quot; options:0 context:[WK2BrowserWindowController self]];
</del><ins>+    [_webView.browsingContextController addObserver:self forKeyPath:@&quot;title&quot; options:0 context:keyValueObservingContext];
+    [_webView.browsingContextController addObserver:self forKeyPath:@&quot;activeURL&quot; options:0 context:keyValueObservingContext];
</ins><span class="cx"> 
</span><span class="cx">     _webView.browsingContextController.loadDelegate = self;
</span><del>-
</del><span class="cx">     _webView.browsingContextController.policyDelegate = self;
</span><ins>+    _webView.browsingContextController.historyDelegate = self;
</ins><span class="cx"> 
</span><span class="cx">     WKPageUIClientV2 uiClient = {
</span><span class="cx">         { 2, self },
</span><span class="lines">@@ -571,25 +578,9 @@
</span><span class="cx">     if (!URL.absoluteString.length)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    urlText.stringValue = (NSString *)CFURLGetString((CFURLRef)URL);
</del><ins>+    urlText.stringValue = [URL absoluteString];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (void)updateProvisionalURL
-{
-    NSURL *url = _webView.browsingContextController.provisionalURL;
-    if (!url)
-        return;
-    [self updateTextFieldFromURL:url];
-}
-
-- (void)updateCommittedURL
-{
-    NSURL *url = _webView.browsingContextController.committedURL;
-    if (!url)
-        return;
-    [self updateTextFieldFromURL:url];
-}
-
</del><span class="cx"> - (void)loadURLString:(NSString *)urlString
</span><span class="cx"> {
</span><span class="cx">     // FIXME: We shouldn't have to set the url text here.
</span><span class="lines">@@ -613,22 +604,22 @@
</span><span class="cx"> 
</span><span class="cx"> - (void)browsingContextControllerDidStartProvisionalLoad:(WKBrowsingContextController *)sender
</span><span class="cx"> {
</span><del>-    [self updateProvisionalURL];
</del><ins>+    LOG(@&quot;didStartProvisionalLoad&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)browsingContextControllerDidReceiveServerRedirectForProvisionalLoad:(WKBrowsingContextController *)sender
</span><span class="cx"> {
</span><del>-    [self updateProvisionalURL];
</del><ins>+    LOG(@&quot;didReceiveServerRedirectForProvisionalLoad&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)browsingContextController:(WKBrowsingContextController *)sender didFailProvisionalLoadWithError:(NSError *)error
</span><span class="cx"> {
</span><del>-    [self updateProvisionalURL];
</del><ins>+    LOG(@&quot;didFailProvisionalLoadWithError: %@&quot;, error);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)browsingContextControllerDidCommitLoad:(WKBrowsingContextController *)sender
</span><span class="cx"> {
</span><del>-    [self updateCommittedURL];
</del><ins>+    LOG(@&quot;didCommitLoad&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)browsingContextControllerDidFinishLoad:(WKBrowsingContextController *)sender
</span><span class="lines">@@ -638,7 +629,7 @@
</span><span class="cx"> 
</span><span class="cx"> - (void)browsingContextController:(WKBrowsingContextController *)sender didFailLoadWithError:(NSError *)error
</span><span class="cx"> {
</span><del>-    [self updateProvisionalURL];
</del><ins>+    LOG(@&quot;didFailLoadWithError: %@&quot;, error);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)browsingContextControllerDidChangeBackForwardList:(WKBrowsingContextController *)sender addedItem:(WKBackForwardListItem *)addedItem removedItems:(NSArray *)removedItems
</span><span class="lines">@@ -679,6 +670,28 @@
</span><span class="cx">     decisionHandler(WKPolicyDecisionAllow);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#pragma mark WKBrowsingContextHistoryDelegate
+
+- (void)browsingContextController:(WKBrowsingContextController *)browsingContextController didNavigateWithNavigationData:(WKNavigationData *)navigationData
+{
+    LOG(@&quot;WKBrowsingContextHistoryDelegate - didNavigateWithNavigationData - title: %@ - url: %@&quot;, navigationData.title, navigationData.originalRequest.URL);
+}
+
+- (void)browsingContextController:(WKBrowsingContextController *)browsingContextController didPerformClientRedirectFromURL:(NSURL *)sourceURL toURL:(NSURL *)destinationURL
+{
+    LOG(@&quot;WKBrowsingContextHistoryDelegate - didPerformClientRedirect - fromURL: %@ - toURL: %@&quot;, sourceURL, destinationURL);
+}
+
+- (void)browsingContextController:(WKBrowsingContextController *)browsingContextController didPerformServerRedirectFromURL:(NSURL *)sourceURL toURL:(NSURL *)destinationURL
+{
+    LOG(@&quot;WKBrowsingContextHistoryDelegate - didPerformServerRedirect - fromURL: %@ - toURL: %@&quot;, sourceURL, destinationURL);
+}
+
+- (void)browsingContextController:(WKBrowsingContextController *)browsingContextController didUpdateHistoryTitle:(NSString *)title forURL:(NSURL *)URL
+{
+    LOG(@&quot;browsingContextController - didUpdateHistoryTitle - title: %@ - URL: %@&quot;, title, URL);
+}
+
</ins><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> #endif // WK_API_ENABLED
</span></span></pre></div>
<a id="branchesjsCStackToolsScriptsbuildjsc"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/Scripts/build-jsc (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/Scripts/build-jsc        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/Scripts/build-jsc        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -39,6 +39,7 @@
</span><span class="cx"> my $showHelp = 0;
</span><span class="cx"> my $ftlJIT = 0;
</span><span class="cx"> my $forceCLoop = 0;
</span><ins>+my $makeArgs = &quot;&quot;;
</ins><span class="cx"> 
</span><span class="cx"> my $programName = basename($0);
</span><span class="cx"> my $usage = &lt;&lt;EOF;
</span><span class="lines">@@ -47,13 +48,15 @@
</span><span class="cx">   --[no-]coverage               Toggle code coverage support (default: $coverageSupport)
</span><span class="cx">   --[no-]ftl-jit                Toggle FTL JIT support (default: $ftlJIT)
</span><span class="cx">   --cloop                       Use C Loop interpreter (default: $forceCLoop)
</span><ins>+  --makeargs=&lt;arguments&gt;        Optional Makefile flags
</ins><span class="cx"> EOF
</span><span class="cx"> 
</span><span class="cx"> GetOptions(
</span><span class="cx">     'coverage!' =&gt; \$coverageSupport,
</span><span class="cx">     'help' =&gt; \$showHelp,
</span><span class="cx">     'ftl-jit!' =&gt; \$ftlJIT,
</span><del>-    'cloop!' =&gt; \$forceCLoop
</del><ins>+    'cloop!' =&gt; \$forceCLoop,
+    'makeargs=s' =&gt; \$makeArgs
</ins><span class="cx"> );
</span><span class="cx"> 
</span><span class="cx"> if ($showHelp) {
</span><span class="lines">@@ -68,7 +71,13 @@
</span><span class="cx"> my @coverageSupportOptions = ($coverageSupport) ? XcodeCoverageSupportOptions() : ();
</span><span class="cx"> 
</span><span class="cx"> if (cmakeBasedPortName()) {
</span><del>-    buildCMakeProjectOrExit(0, cmakeBasedPortName(), undef, &quot;jsc&quot;, cmakeBasedPortArguments()); # This call only returns if nothing wrong happened
</del><ins>+    my $cmakeArgs = &quot;&quot;;
+    $cmakeArgs .= &quot; -DENABLE_LLINT_C_LOOP=ON&quot; if $forceCLoop;
+    # By default we build using all of the available CPUs
+    $makeArgs .= ($makeArgs ? &quot; &quot; : &quot;&quot;) . &quot;-j&quot; . numberOfCPUs() if $makeArgs !~ /-j\s*\d+/;
+
+    # This call only returns if nothing wrong happened
+    buildCMakeProjectOrExit(0, cmakeBasedPortName(), undef, &quot;jsc $makeArgs&quot;, (cmakeBasedPortArguments(), $cmakeArgs));
</ins><span class="cx">     exit exitStatus(0);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackToolsScriptscomparewebkitconfigurations"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Tools/Scripts/compare-webkit-configurations (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/Scripts/compare-webkit-configurations                                (rev 0)
+++ branches/jsCStack/Tools/Scripts/compare-webkit-configurations        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,78 @@
</span><ins>+#!/usr/bin/env python
+
+# Copyright (C) 2013 Apple Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+# THE POSSIBILITY OF SUCH DAMAGE.
+
+import argparse
+import subprocess
+import sys
+import tempfile
+
+def main():
+    parser = argparse.ArgumentParser(description=&quot;Compare layout test results between two configurations of WebKit.&quot;)
+
+    parser.add_argument(&quot;--comparison&quot;, action=&quot;store&quot;, choices=[&quot;remote-layer-tree&quot;, &quot;accelerated-drawing&quot;, &quot;webkit2&quot;], required=True, help=&quot;configuration to test&quot;)
+    parser.add_argument(&quot;-2&quot;, &quot;--webkit2&quot;, action=&quot;store_true&quot;, default=False, help=&quot;use WebKit2 always (some configurations may force this)&quot;)
+    parser.add_argument('tests', metavar='TESTS', type=str, help='list of LayoutTest subdirectories to run', default=None, nargs=&quot;*&quot;)
+
+    args = parser.parse_args()
+
+    force_webkit2 = args.webkit2
+    if args.comparison == &quot;remote-layer-tree&quot;:
+        print &quot;Forcing use of WebKit2, as the remote layer tree depends on WebKit2.&quot;
+        force_webkit2 = True
+
+    if args.comparison == &quot;webkit2&quot; and force_webkit2:
+        print &quot;It doesn't make sense to test WebKit1 vs. WebKit2 *and* force WebKit2 on.&quot;
+        sys.exit(1)
+
+    configuration_flag = flag_for_comparison(args.comparison)
+
+    results_directory = tempfile.mkdtemp(prefix=&quot;webkit-comparison-results-&quot;, suffix=&quot;-&quot; + args.comparison)
+
+    # Run first in the default configuration, generating new baselines, then run
+    # again against those results in the configuration being tested.
+    run_webkit_tests(tests=args.tests, results_directory=results_directory, use_webkit2=force_webkit2, additional_arguments=[&quot;--no-show-results&quot;, &quot;--new-baseline&quot;])
+    run_webkit_tests(tests=args.tests, results_directory=results_directory, additional_arguments=[configuration_flag], use_webkit2=force_webkit2)
+
+def flag_for_comparison(comparison_name):
+    if comparison_name == &quot;remote-layer-tree&quot;:
+        return &quot;--remote-layer-tree&quot;
+    if comparison_name == &quot;accelerated-drawing&quot;:
+        return &quot;--accelerated-drawing&quot;
+    if comparison_name == &quot;webkit2&quot;:
+        return &quot;-2&quot;
+
+    print &quot;Unknown comparison:&quot;, comparison_name
+    sys.exit(1)
+
+def run_webkit_tests(tests, results_directory, use_webkit2, additional_arguments=[]):
+    if use_webkit2:
+        use_webkit2_arguments = [&quot;-2&quot;]
+    else:
+        use_webkit2_arguments = []
+
+    subprocess.call([&quot;run-webkit-tests&quot;, &quot;-p&quot;, &quot;--force&quot;, &quot;--treat-ref-tests-as-pixel-tests&quot;, &quot;--additional-platform-directory=&quot; + results_directory, &quot;--run-singly&quot;, &quot;--no-retry-failures&quot;] + use_webkit2_arguments + additional_arguments + tests)
+
+if __name__ == '__main__':
+    main()
</ins></span></pre></div>
<a id="branchesjsCStackToolsScriptsoldrunwebkittests"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/Scripts/old-run-webkit-tests (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/Scripts/old-run-webkit-tests        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/Scripts/old-run-webkit-tests        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -421,11 +421,8 @@
</span><span class="cx"> chdirWebKit();
</span><span class="cx"> 
</span><span class="cx"> if (!defined($root) &amp;&amp; !$noBuildDumpTool) {
</span><del>-    # FIXME: We build both DumpRenderTree and WebKitTestRunner for
-    # WebKitTestRunner runs because DumpRenderTree still includes
-    # the DumpRenderTreeSupport module and the TestNetscapePlugin.
-    # These two projects should be factored out into their own
-    # projects.
</del><ins>+    # FIXME: We build both DumpRenderTree and WebKitTestRunner for WebKitTestRunner runs because
+    # DumpRenderTree includes TestNetscapePlugin. It should be factored out into its own project.
</ins><span class="cx">     buildDumpTool(&quot;DumpRenderTree&quot;);
</span><span class="cx">     buildDumpTool(&quot;WebKitTestRunner&quot;) if $useWebKitTestRunner;
</span><span class="cx"> }
</span><span class="lines">@@ -447,11 +444,6 @@
</span><span class="cx"> 
</span><span class="cx"> checkFrameworks() unless isCygwin();
</span><span class="cx"> 
</span><del>-if (isAppleMacWebKit()) {
-    push @INC, $productDir;
-    require DumpRenderTreeSupport;
-}
-
</del><span class="cx"> my $layoutTestsName = &quot;LayoutTests&quot;;
</span><span class="cx"> my $testDirectory = File::Spec-&gt;rel2abs($layoutTestsName);
</span><span class="cx"> my $expectedDirectory = $testDirectory;
</span><span class="lines">@@ -1543,10 +1535,7 @@
</span><span class="cx">     my $pid = waitpid(-1, WNOHANG);
</span><span class="cx">     return 1 if ($pid == $dumpToolPID);
</span><span class="cx"> 
</span><del>-    # On Mac OS X, crashing may be significantly delayed by crash reporter.
-    return 0 unless isAppleMacWebKit();
-
-    return DumpRenderTreeSupport::processIsCrashing($dumpToolPID);
</del><ins>+    return 0;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> sub configureAndOpenHTTPDIfNeeded()
</span></span></pre></div>
<a id="branchesjsCStackToolsScriptsrungtktests"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/Scripts/run-gtk-tests (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/Scripts/run-gtk-tests        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/Scripts/run-gtk-tests        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -324,20 +324,45 @@
</span><span class="cx"> 
</span><span class="cx">         return self._run_test_command(tester_command, self._options.timeout)
</span><span class="cx"> 
</span><del>-    def _run_test_google(self, test_program):
-        tester_command = [test_program]
-        skipped_tests_cases = self._test_cases_to_skip(test_program)
-        if skipped_tests_cases:
-            tester_command.append(&quot;--gtest_filter=-%s&quot; % &quot;:&quot;.join(skipped_tests_cases))
</del><ins>+    def _get_tests_from_google_test_suite(self, test_program):
+        try:
+            output = subprocess.check_output([test_program, '--gtest_list_tests'])
+        except subprocess.CalledProcessError:
+            sys.stderr.write(&quot;ERROR: could not list available tests for binary %s.\n&quot; % (test_program))
+            sys.stderr.flush()
+            return 1
</ins><span class="cx"> 
</span><del>-        return self._run_test_command(tester_command, self._options.timeout)
</del><ins>+        skipped_test_cases = self._test_cases_to_skip(test_program)
</ins><span class="cx"> 
</span><ins>+        tests = []
+        prefix = None
+        for line in output.split('\n'):
+            if not line.startswith('  '):
+                prefix = line
+                continue
+            else:
+                test_name = prefix + line.strip()
+                if not test_name in skipped_test_cases:
+                    tests.append(test_name)
+        return tests
+
+    def _run_google_test(self, test_program, subtest):
+        test_command = [test_program, '--gtest_filter=%s' % (subtest)]
+        return self._run_test_command(test_command, self._options.timeout)
+
+    def _run_google_test_suite(self, test_program):
+        for subtest in self._get_tests_from_google_test_suite(test_program):
+            retcode = self._run_google_test(test_program, subtest)
+            if retcode:
+                return retcode
+        return 0
+
</ins><span class="cx">     def _run_test(self, test_program):
</span><span class="cx">         if &quot;unittests&quot; in test_program or &quot;WebKit2APITests&quot; in test_program:
</span><span class="cx">             return self._run_test_glib(test_program)
</span><span class="cx"> 
</span><span class="cx">         if &quot;TestWebKitAPI&quot; in test_program:
</span><del>-            return self._run_test_google(test_program)
</del><ins>+            return self._run_google_test_suite(test_program)
</ins><span class="cx"> 
</span><span class="cx">         return 1
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackToolsScriptsrunjavascriptcoretests"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/Scripts/run-javascriptcore-tests (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/Scripts/run-javascriptcore-tests        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/Scripts/run-javascriptcore-tests        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -8,13 +8,13 @@
</span><span class="cx"> # are met:
</span><span class="cx"> #
</span><span class="cx"> # 1.  Redistributions of source code must retain the above copyright
</span><del>-#     notice, this list of conditions and the following disclaimer. 
</del><ins>+#     notice, this list of conditions and the following disclaimer.
</ins><span class="cx"> # 2.  Redistributions in binary form must reproduce the above copyright
</span><span class="cx"> #     notice, this list of conditions and the following disclaimer in the
</span><del>-#     documentation and/or other materials provided with the distribution. 
</del><ins>+#     documentation and/or other materials provided with the distribution.
</ins><span class="cx"> # 3.  Neither the name of Apple Computer, Inc. (&quot;Apple&quot;) nor the names of
</span><span class="cx"> #     its contributors may be used to endorse or promote products derived
</span><del>-#     from this software without specific prior written permission. 
</del><ins>+#     from this software without specific prior written permission.
</ins><span class="cx"> #
</span><span class="cx"> # THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; AND ANY
</span><span class="cx"> # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
</span></span></pre></div>
<a id="branchesjsCStackToolsScriptswebkitdirspm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/Scripts/webkitdirs.pm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/Scripts/webkitdirs.pm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/Scripts/webkitdirs.pm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -436,7 +436,7 @@
</span><span class="cx">         $vsInstallDir = $ENV{'VSINSTALLDIR'};
</span><span class="cx">         $vsInstallDir =~ s|[\\/]$||;
</span><span class="cx">     } else {
</span><del>-        $vsInstallDir = File::Spec-&gt;catdir(programFilesPath(), &quot;Microsoft Visual Studio 10.0&quot;);
</del><ins>+        $vsInstallDir = File::Spec-&gt;catdir(programFilesPath(), &quot;Microsoft Visual Studio 12.0&quot;);
</ins><span class="cx">     }
</span><span class="cx">     chomp($vsInstallDir = `cygpath &quot;$vsInstallDir&quot;`) if isCygwin();
</span><span class="cx"> 
</span><span class="lines">@@ -449,7 +449,7 @@
</span><span class="cx"> 
</span><span class="cx">     my $installDir = visualStudioInstallDir();
</span><span class="cx"> 
</span><del>-    $vsVersion = ($installDir =~ /Microsoft Visual Studio ([0-9]+\.[0-9]*)/) ? $1 : &quot;8&quot;;
</del><ins>+    $vsVersion = ($installDir =~ /Microsoft Visual Studio ([0-9]+\.[0-9]*)/) ? $1 : &quot;12&quot;;
</ins><span class="cx"> 
</span><span class="cx">     return $vsVersion;
</span><span class="cx"> }
</span><span class="lines">@@ -1560,18 +1560,14 @@
</span><span class="cx">         }
</span><span class="cx">     } else {
</span><span class="cx">         if (!$ENV{'WEBKIT_LIBRARIES'}) {
</span><del>-            # VS2010 (and newer) version. This will replace the VS2005 version as part of
-            # https://bugs.webkit.org/show_bug.cgi?id=109472. 
</del><span class="cx">             print &quot;Warning: You must set the 'WebKit_Libraries' environment variable\n&quot;;
</span><del>-            print &quot;         to be able build WebKit from within Visual Studio 2010 and newer.\n&quot;;
</del><ins>+            print &quot;         to be able build WebKit from within Visual Studio 2013 and newer.\n&quot;;
</ins><span class="cx">             print &quot;         Make sure that 'WebKit_Libraries' points to the\n&quot;;
</span><span class="cx">             print &quot;         'WebKitLibraries/win' directory, not the 'WebKitLibraries/' directory.\n\n&quot;;
</span><span class="cx">         }
</span><span class="cx">         if (!$ENV{'WEBKIT_OUTPUTDIR'}) {
</span><del>-            # VS2010 (and newer) version. This will replace the VS2005 version as part of
-            # https://bugs.webkit.org/show_bug.cgi?id=109472. 
</del><span class="cx">             print &quot;Warning: You must set the 'WebKit_OutputDir' environment variable\n&quot;;
</span><del>-            print &quot;         to be able build WebKit from within Visual Studio 2010 and newer.\n\n&quot;;
</del><ins>+            print &quot;         to be able build WebKit from within Visual Studio 2013 and newer.\n\n&quot;;
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx">     # FIXME (125180): Remove the following temporary 64-bit support once official support is available.
</span><span class="lines">@@ -1590,17 +1586,17 @@
</span><span class="cx">     $vcBuildPath = File::Spec-&gt;catfile(visualStudioInstallDir(), qw(Common7 IDE devenv.com));
</span><span class="cx">     if (-e $vcBuildPath) {
</span><span class="cx">         # Visual Studio is installed;
</span><del>-        if (visualStudioVersion() eq &quot;10&quot;) {
</del><ins>+        if (visualStudioVersion() eq &quot;12&quot;) {
</ins><span class="cx">             $vcBuildPath = File::Spec-&gt;catfile(visualStudioInstallDir(), qw(Common7 IDE devenv.exe));
</span><span class="cx">         }
</span><span class="cx">     } else {
</span><span class="cx">         # Visual Studio not found, try VC++ Express
</span><del>-        $vcBuildPath = File::Spec-&gt;catfile(visualStudioInstallDir(), qw(Common7 IDE VCExpress.exe));
</del><ins>+        $vcBuildPath = File::Spec-&gt;catfile(visualStudioInstallDir(), qw(Common7 IDE WDExpress.exe));
</ins><span class="cx">         if (! -e $vcBuildPath) {
</span><span class="cx">             print &quot;*************************************************************\n&quot;;
</span><span class="cx">             print &quot;Cannot find '$vcBuildPath'\n&quot;;
</span><span class="cx">             print &quot;Please execute the file 'vcvars32.bat' from\n&quot;;
</span><del>-            print &quot;'$programFilesPath\\Microsoft Visual Studio 8\\VC\\bin\\'\n&quot;;
</del><ins>+            print &quot;'$programFilesPath\\Microsoft Visual Studio 12.0\\VC\\bin\\'\n&quot;;
</ins><span class="cx">             print &quot;to setup the necessary environment variables.\n&quot;;
</span><span class="cx">             print &quot;*************************************************************\n&quot;;
</span><span class="cx">             die;
</span></span></pre></div>
<a id="branchesjsCStackToolsScriptswebkitperlFeatureListpm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/Scripts/webkitperl/FeatureList.pm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/Scripts/webkitperl/FeatureList.pm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/Scripts/webkitperl/FeatureList.pm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -111,6 +111,7 @@
</span><span class="cx">     $mouseCursorScaleSupport,
</span><span class="cx">     $netscapePluginAPISupport,
</span><span class="cx">     $networkInfoSupport,
</span><ins>+    $networkProcessSupport,
</ins><span class="cx">     $nosniffSupport,
</span><span class="cx">     $notificationsSupport,
</span><span class="cx">     $orientationEventsSupport,
</span><span class="lines">@@ -484,6 +485,9 @@
</span><span class="cx"> 
</span><span class="cx">     { option =&gt; &quot;cloop&quot;, desc =&gt; &quot;Force use of the llint c loop&quot;,
</span><span class="cx">       define =&gt; &quot;ENABLE_LLINT_C_LOOP&quot;, default =&gt; 0, value =&gt; \$forceCLoop },
</span><ins>+
+    { option =&gt; &quot;network-process&quot;, desc =&gt; &quot;Toggle Network Process support&quot;,
+      define =&gt; &quot;ENABLE_NETWORK_PROCESS&quot;, default =&gt; 0, value =&gt; \$networkProcessSupport },
</ins><span class="cx"> );
</span><span class="cx"> 
</span><span class="cx"> sub getFeatureOptionList()
</span></span></pre></div>
<a id="branchesjsCStackToolsScriptswebkitpycommonconfigcontributorsjson"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/Scripts/webkitpy/common/config/contributors.json (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/Scripts/webkitpy/common/config/contributors.json        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/Scripts/webkitpy/common/config/contributors.json        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -774,6 +774,15 @@
</span><span class="cx">             &quot;eustas&quot;
</span><span class="cx">          ]
</span><span class="cx">       },
</span><ins>+      &quot;Eunmi Lee&quot; : {
+         &quot;emails&quot; : [
+            &quot;eunmi15.lee@samsung.com&quot;
+         ],
+         &quot;expertise&quot; : &quot;The EFLWebKit Port, Touch and Gesture&quot;,
+         &quot;nicks&quot; : [
+            &quot;eunmi&quot;
+         ]
+      },
</ins><span class="cx">       &quot;Evan Martin&quot; : {
</span><span class="cx">          &quot;emails&quot; : [
</span><span class="cx">             &quot;evan@chromium.org&quot;
</span><span class="lines">@@ -2242,6 +2251,15 @@
</span><span class="cx">             &quot;tdanderson&quot;
</span><span class="cx">          ]
</span><span class="cx">       },
</span><ins>+      &quot;Thiago de Barros Lacerda&quot; : {
+         &quot;emails&quot; : [
+            &quot;thiago.lacerda@openbossa.org&quot;
+         ],
+         &quot;expertise&quot; : &quot;Nix port, WebRTC, MediaStream&quot;,
+         &quot;nicks&quot; : [
+            &quot;lacerda&quot;
+         ]
+      },
</ins><span class="cx">       &quot;Thiago Marcos P. Santos&quot; : {
</span><span class="cx">          &quot;emails&quot; : [
</span><span class="cx">             &quot;tmpsantos@gmail.com&quot;,
</span></span></pre></div>
<a id="branchesjsCStackToolsScriptswebkitpycommonconfigwatchlist"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/Scripts/webkitpy/common/config/watchlist (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/Scripts/webkitpy/common/config/watchlist        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/Scripts/webkitpy/common/config/watchlist        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -288,6 +288,9 @@
</span><span class="cx">         &quot;cURLNetwork&quot;: {
</span><span class="cx">             &quot;filename&quot;: r&quot;Source/WebCore/platform/network/curl/&quot;,
</span><span class="cx">         },
</span><ins>+        &quot;ANGLE&quot;: {
+            &quot;filename&quot;: r&quot;Source/ThirdParty/ANGLE&quot;,
+        },
</ins><span class="cx">     },
</span><span class="cx">     &quot;CC_RULES&quot;: {
</span><span class="cx">         # Note: All email addresses listed must be registered with bugzilla.
</span><span class="lines">@@ -360,5 +363,7 @@
</span><span class="cx">         &quot;GtkWebKit2PublicAPI&quot;: [ &quot;Thanks for the patch. If this patch contains new public API &quot;
</span><span class="cx">                                  &quot;please make sure it follows the guidelines for new WebKit2 GTK+ API. &quot;
</span><span class="cx">                                  &quot;See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API&quot;, ],
</span><ins>+        &quot;ANGLE&quot;: [ &quot;Note that there are important steps to take when updating ANGLE. &quot;
+                   &quot;See http://trac.webkit.org/wiki/UpdatingANGLE&quot;, ],
</ins><span class="cx">     },
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesjsCStackToolsScriptswebkitpycommonnetbugzillabugzillapy"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla.py (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla.py        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla.py        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -293,6 +293,12 @@
</span><span class="cx">         return map(lambda pair: pair[0], pairs)
</span><span class="cx"> 
</span><span class="cx"> 
</span><ins>+class CommitQueueFlag(object):
+    mark_for_nothing = 0
+    mark_for_commit_queue = 1
+    mark_for_landing = 2
+
+
</ins><span class="cx"> class Bugzilla(object):
</span><span class="cx">     def __init__(self, committers=committers.CommitterList()):
</span><span class="cx">         self.authenticated = False
</span><span class="lines">@@ -550,31 +556,25 @@
</span><span class="cx">                 self.authenticated = True
</span><span class="cx">                 self.username = username
</span><span class="cx"> 
</span><del>-    # FIXME: Use enum instead of two booleans
-    def _commit_queue_flag(self, mark_for_landing, mark_for_commit_queue):
-        if mark_for_landing:
</del><ins>+    def _commit_queue_flag(self, commit_flag):
+        if commit_flag == CommitQueueFlag.mark_for_landing:
</ins><span class="cx">             user = self.committers.contributor_by_email(self.username)
</span><del>-            mark_for_commit_queue = True
</del><span class="cx">             if not user:
</span><span class="cx">                 _log.warning(&quot;Your Bugzilla login is not listed in contributors.json. Uploading with cq? instead of cq+&quot;)
</span><del>-                mark_for_landing = False
</del><span class="cx">             elif not user.can_commit:
</span><span class="cx">                 _log.warning(&quot;You're not a committer yet or haven't updated contributors.json yet. Uploading with cq? instead of cq+&quot;)
</span><del>-                mark_for_landing = False
</del><ins>+            else:
+                return '+'
</ins><span class="cx"> 
</span><del>-        if mark_for_landing:
-            return '+'
-        if mark_for_commit_queue:
</del><ins>+        if commit_flag != CommitQueueFlag.mark_for_nothing:
</ins><span class="cx">             return '?'
</span><span class="cx">         return 'X'
</span><span class="cx"> 
</span><del>-    # FIXME: mark_for_commit_queue and mark_for_landing should be joined into a single commit_flag argument.
</del><span class="cx">     def _fill_attachment_form(self,
</span><span class="cx">                               description,
</span><span class="cx">                               file_object,
</span><span class="cx">                               mark_for_review=False,
</span><del>-                              mark_for_commit_queue=False,
-                              mark_for_landing=False,
</del><ins>+                              commit_flag=CommitQueueFlag.mark_for_nothing,
</ins><span class="cx">                               is_patch=False,
</span><span class="cx">                               filename=None,
</span><span class="cx">                               mimetype=None):
</span><span class="lines">@@ -583,7 +583,7 @@
</span><span class="cx">             self.browser['ispatch'] = (&quot;1&quot;,)
</span><span class="cx">         # FIXME: Should this use self._find_select_element_for_flag?
</span><span class="cx">         self.browser['flag_type-1'] = ('?',) if mark_for_review else ('X',)
</span><del>-        self.browser['flag_type-3'] = (self._commit_queue_flag(mark_for_landing, mark_for_commit_queue),)
</del><ins>+        self.browser['flag_type-3'] = (self._commit_queue_flag(commit_flag),)
</ins><span class="cx"> 
</span><span class="cx">         filename = filename or &quot;%s.patch&quot; % timestamp()
</span><span class="cx">         if not mimetype:
</span><span class="lines">@@ -637,11 +637,16 @@
</span><span class="cx">         self.browser.select_form(name=&quot;entryform&quot;)
</span><span class="cx">         file_object = self._file_object_for_upload(file_or_string)
</span><span class="cx">         filename = self._filename_for_upload(file_object, bug_id, extension=&quot;patch&quot;)
</span><ins>+        commit_flag = CommitQueueFlag.mark_for_nothing
+        if mark_for_landing:
+            commit_flag = CommitQueueFlag.mark_for_landing
+        elif mark_for_commit_queue:
+            commit_flag = CommitQueueFlag.mark_for_commit_queue
+
</ins><span class="cx">         self._fill_attachment_form(description,
</span><span class="cx">                                    file_object,
</span><span class="cx">                                    mark_for_review=mark_for_review,
</span><del>-                                   mark_for_commit_queue=mark_for_commit_queue,
-                                   mark_for_landing=mark_for_landing,
</del><ins>+                                   commit_flag=commit_flag,
</ins><span class="cx">                                    is_patch=True,
</span><span class="cx">                                    filename=filename)
</span><span class="cx">         if comment_text:
</span><span class="lines">@@ -708,11 +713,15 @@
</span><span class="cx">             # Patch files are already binary, so no encoding needed.
</span><span class="cx">             assert(isinstance(diff, str))
</span><span class="cx">             patch_file_object = StringIO.StringIO(diff)
</span><ins>+            commit_flag = CommitQueueFlag.mark_for_nothing
+            if mark_for_commit_queue:
+                commit_flag = CommitQueueFlag.mark_for_commit_queue
+
</ins><span class="cx">             self._fill_attachment_form(
</span><span class="cx">                     patch_description,
</span><span class="cx">                     patch_file_object,
</span><span class="cx">                     mark_for_review=mark_for_review,
</span><del>-                    mark_for_commit_queue=mark_for_commit_queue,
</del><ins>+                    commit_flag=commit_flag,
</ins><span class="cx">                     is_patch=True)
</span><span class="cx"> 
</span><span class="cx">         response = self.browser.submit()
</span></span></pre></div>
<a id="branchesjsCStackToolsScriptswebkitpycommonnetbugzillabugzilla_unittestpy"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla_unittest.py (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla_unittest.py        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla_unittest.py        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -30,7 +30,7 @@
</span><span class="cx"> import datetime
</span><span class="cx"> import StringIO
</span><span class="cx"> 
</span><del>-from .bugzilla import Bugzilla, BugzillaQueries, EditUsersParser
</del><ins>+from .bugzilla import Bugzilla, BugzillaQueries, CommitQueueFlag, EditUsersParser
</ins><span class="cx"> 
</span><span class="cx"> from webkitpy.common.config import urls
</span><span class="cx"> from webkitpy.common.config.committers import Reviewer, Committer, Contributor, CommitterList
</span><span class="lines">@@ -307,34 +307,30 @@
</span><span class="cx">             committers=[Committer(&quot;WebKit Committer&quot;, &quot;committer@webkit.org&quot;)],
</span><span class="cx">             contributors=[Contributor(&quot;WebKit Contributor&quot;, &quot;contributor@webkit.org&quot;)])
</span><span class="cx"> 
</span><del>-        def assert_commit_queue_flag(mark_for_landing, mark_for_commit_queue, expected, username=None):
</del><ins>+        def assert_commit_queue_flag(commit_flag, expected, username=None):
</ins><span class="cx">             bugzilla.username = username
</span><span class="cx">             capture = OutputCapture()
</span><span class="cx">             capture.capture_output()
</span><span class="cx">             try:
</span><del>-                self.assertEqual(bugzilla._commit_queue_flag(mark_for_landing=mark_for_landing, mark_for_commit_queue=mark_for_commit_queue), expected)
</del><ins>+                self.assertEqual(bugzilla._commit_queue_flag(commit_flag), expected)
</ins><span class="cx">             finally:
</span><span class="cx">                 capture.restore_output()
</span><span class="cx"> 
</span><del>-        assert_commit_queue_flag(mark_for_landing=False, mark_for_commit_queue=False, expected='X', username='unknown@webkit.org')
-        assert_commit_queue_flag(mark_for_landing=False, mark_for_commit_queue=True, expected='?', username='unknown@webkit.org')
-        assert_commit_queue_flag(mark_for_landing=False, mark_for_commit_queue=True, expected='?', username='unknown@webkit.org')
-        assert_commit_queue_flag(mark_for_landing=True, mark_for_commit_queue=True, expected='?', username='unknown@webkit.org')
</del><ins>+        assert_commit_queue_flag(commit_flag=CommitQueueFlag.mark_for_nothing, expected='X', username='unknown@webkit.org')
+        assert_commit_queue_flag(commit_flag=CommitQueueFlag.mark_for_commit_queue, expected='?', username='unknown@webkit.org')
+        assert_commit_queue_flag(commit_flag=CommitQueueFlag.mark_for_landing, expected='?', username='unknown@webkit.org')
</ins><span class="cx"> 
</span><del>-        assert_commit_queue_flag(mark_for_landing=False, mark_for_commit_queue=False, expected='X', username='contributor@webkit.org')
-        assert_commit_queue_flag(mark_for_landing=False, mark_for_commit_queue=True, expected='?', username='contributor@webkit.org')
-        assert_commit_queue_flag(mark_for_landing=True, mark_for_commit_queue=False, expected='?', username='contributor@webkit.org')
-        assert_commit_queue_flag(mark_for_landing=True, mark_for_commit_queue=True, expected='?', username='contributor@webkit.org')
</del><ins>+        assert_commit_queue_flag(commit_flag=CommitQueueFlag.mark_for_nothing, expected='X', username='contributor@webkit.org')
+        assert_commit_queue_flag(commit_flag=CommitQueueFlag.mark_for_commit_queue, expected='?', username='contributor@webkit.org')
+        assert_commit_queue_flag(commit_flag=CommitQueueFlag.mark_for_landing, expected='?', username='contributor@webkit.org')
</ins><span class="cx"> 
</span><del>-        assert_commit_queue_flag(mark_for_landing=False, mark_for_commit_queue=False, expected='X', username='committer@webkit.org')
-        assert_commit_queue_flag(mark_for_landing=False, mark_for_commit_queue=True, expected='?', username='committer@webkit.org')
-        assert_commit_queue_flag(mark_for_landing=True, mark_for_commit_queue=False, expected='+', username='committer@webkit.org')
-        assert_commit_queue_flag(mark_for_landing=True, mark_for_commit_queue=True, expected='+', username='committer@webkit.org')
</del><ins>+        assert_commit_queue_flag(commit_flag=CommitQueueFlag.mark_for_nothing, expected='X', username='committer@webkit.org')
+        assert_commit_queue_flag(commit_flag=CommitQueueFlag.mark_for_commit_queue, expected='?', username='committer@webkit.org')
+        assert_commit_queue_flag(commit_flag=CommitQueueFlag.mark_for_landing, expected='+', username='committer@webkit.org')
</ins><span class="cx"> 
</span><del>-        assert_commit_queue_flag(mark_for_landing=False, mark_for_commit_queue=False, expected='X', username='reviewer@webkit.org')
-        assert_commit_queue_flag(mark_for_landing=False, mark_for_commit_queue=True, expected='?', username='reviewer@webkit.org')
-        assert_commit_queue_flag(mark_for_landing=True, mark_for_commit_queue=False, expected='+', username='reviewer@webkit.org')
-        assert_commit_queue_flag(mark_for_landing=True, mark_for_commit_queue=True, expected='+', username='reviewer@webkit.org')
</del><ins>+        assert_commit_queue_flag(commit_flag=CommitQueueFlag.mark_for_nothing, expected='X', username='reviewer@webkit.org')
+        assert_commit_queue_flag(commit_flag=CommitQueueFlag.mark_for_commit_queue, expected='?', username='reviewer@webkit.org')
+        assert_commit_queue_flag(commit_flag=CommitQueueFlag.mark_for_landing, expected='+', username='reviewer@webkit.org')
</ins><span class="cx"> 
</span><span class="cx">     def test__check_create_bug_response(self):
</span><span class="cx">         bugzilla = Bugzilla()
</span></span></pre></div>
<a id="branchesjsCStackToolsScriptswebkitpycommonprettypatchpy"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/Scripts/webkitpy/common/prettypatch.py (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/Scripts/webkitpy/common/prettypatch.py        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/Scripts/webkitpy/common/prettypatch.py        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -26,15 +26,25 @@
</span><span class="cx"> # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
</span><span class="cx"> # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx"> 
</span><ins>+import errno
+import logging
</ins><span class="cx"> import os
</span><span class="cx"> import tempfile
</span><ins>+from webkitpy.common.system.executive import ScriptError
</ins><span class="cx"> 
</span><ins>+_log = logging.getLogger(__name__)
</ins><span class="cx"> 
</span><ins>+
</ins><span class="cx"> class PrettyPatch(object):
</span><span class="cx">     # FIXME: PrettyPatch should not require checkout_root.
</span><del>-    def __init__(self, executive, checkout_root):
</del><ins>+    def __init__(self, executive, checkout_root, filesystem=None):
</ins><span class="cx">         self._executive = executive
</span><ins>+        self._filesystem = filesystem
</ins><span class="cx">         self._checkout_root = checkout_root
</span><ins>+        self._pretty_patch_path = os.path.join(self._checkout_root, &quot;Websites&quot;, &quot;bugs.webkit.org&quot;, &quot;PrettyPatch&quot;)
+        self._prettify_path = os.path.join(self._pretty_patch_path, &quot;prettify.rb&quot;)
+        self.pretty_patch_error_html = &quot;Failed to run PrettyPatch, see error log.&quot;
+        self.ppatch_available = None
</ins><span class="cx"> 
</span><span class="cx">     def pretty_diff_file(self, diff):
</span><span class="cx">         # Diffs can contain multiple text files of different encodings
</span><span class="lines">@@ -52,16 +62,59 @@
</span><span class="cx">         if not diff:
</span><span class="cx">             return &quot;&quot;
</span><span class="cx"> 
</span><del>-        pretty_patch_path = os.path.join(self._checkout_root,
-                                         &quot;Websites&quot;, &quot;bugs.webkit.org&quot;,
-                                         &quot;PrettyPatch&quot;)
-        prettify_path = os.path.join(pretty_patch_path, &quot;prettify.rb&quot;)
</del><span class="cx">         args = [
</span><span class="cx">             &quot;ruby&quot;,
</span><span class="cx">             &quot;-I&quot;,
</span><del>-            pretty_patch_path,
-            prettify_path,
</del><ins>+            self._pretty_patch_path,
+            self._prettify_path,
</ins><span class="cx">         ]
</span><span class="cx">         # PrettyPatch does not modify the encoding of the diff output
</span><span class="cx">         # so we can't expect it to be utf-8.
</span><span class="cx">         return self._executive.run_command(args, input=diff, decode_output=False)
</span><ins>+
+    def pretty_patch_available(self):
+        if self.ppatch_available is None:
+            self.ppatch_available = self.check_pretty_patch(logging=False)
+        return self.ppatch_available
+
+    def check_pretty_patch(self, logging=True):
+        &quot;&quot;&quot;Checks whether we can use the PrettyPatch ruby script.&quot;&quot;&quot;
+        try:
+            _ = self._executive.run_command(['ruby', '--version'])
+        except OSError, e:
+            if e.errno in [errno.ENOENT, errno.EACCES, errno.ECHILD]:
+                if logging:
+                    _log.warning(&quot;Ruby is not installed; can't generate pretty patches.&quot;)
+                    _log.warning('')
+                return False
+
+        if not self._filesystem.exists(self._pretty_patch_path):
+            if logging:
+                _log.warning(&quot;Unable to find %s; can't generate pretty patches.&quot; % self._pretty_patch_path)
+                _log.warning('')
+            return False
+
+        return True
+
+    def pretty_patch_text(self, diff_path):
+        if self.ppatch_available is None:
+            self.ppatch_available = self.check_pretty_patch(logging=False)
+        if not self.ppatch_available:
+            return self.pretty_patch_error_html
+        command = (&quot;ruby&quot;, &quot;-I&quot;, self._filesystem.dirname(self._prettify_path),
+                   self._prettify_path, diff_path)
+        try:
+            # Diffs are treated as binary (we pass decode_output=False) as they
+            # may contain multiple files of conflicting encodings.
+            return self._executive.run_command(command, decode_output=False)
+        except OSError, e:
+            # If the system is missing ruby log the error and stop trying.
+            self.ppatch_available = False
+            _log.error(&quot;Failed to run PrettyPatch (%s): %s&quot; % (command, e))
+            return self.pretty_patch_error_html
+        except ScriptError, e:
+            # If ruby failed to run for some reason, log the command
+            # output and stop trying.
+            self.ppatch_available = False
+            _log.error(&quot;Failed to run PrettyPatch (%s):\n%s&quot; % (command, e.message_with_output()))
+            return self.pretty_patch_error_html
</ins></span></pre></div>
<a id="branchesjsCStackToolsScriptswebkitpylayout_testscontrollerssingle_test_runnerpy"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -112,6 +112,10 @@
</span><span class="cx">             expected_driver_output.strip_metrics()
</span><span class="cx">             driver_output.strip_metrics()
</span><span class="cx"> 
</span><ins>+        patterns = self._port.logging_patterns_to_strip()
+        expected_driver_output.strip_patterns(patterns)
+        driver_output.strip_patterns(patterns)
+
</ins><span class="cx">         test_result = self._compare_output(expected_driver_output, driver_output)
</span><span class="cx">         if self._options.new_test_results:
</span><span class="cx">             self._add_missing_baselines(test_result, driver_output)
</span></span></pre></div>
<a id="branchesjsCStackToolsScriptswebkitpylayout_testscontrollerstest_result_writerpy"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/Scripts/webkitpy/layout_tests/controllers/test_result_writer.py (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/Scripts/webkitpy/layout_tests/controllers/test_result_writer.py        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/Scripts/webkitpy/layout_tests/controllers/test_result_writer.py        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -160,8 +160,8 @@
</span><span class="cx">             self._write_binary_file(wdiff_filename, wdiff)
</span><span class="cx"> 
</span><span class="cx">         # Use WebKit's PrettyPatch.rb to get an HTML diff.
</span><del>-        if self._port.pretty_patch_available():
-            pretty_patch = self._port.pretty_patch_text(diff_filename)
</del><ins>+        if self._port.pretty_patch.pretty_patch_available():
+            pretty_patch = self._port.pretty_patch.pretty_patch_text(diff_filename)
</ins><span class="cx">             pretty_patch_filename = self.output_filename(self.FILENAME_SUFFIX_PRETTY_PATCH)
</span><span class="cx">             self._write_binary_file(pretty_patch_filename, pretty_patch)
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackToolsScriptswebkitpylayout_testsmodelstest_run_resultspy"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/Scripts/webkitpy/layout_tests/models/test_run_results.py (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/Scripts/webkitpy/layout_tests/models/test_run_results.py        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/Scripts/webkitpy/layout_tests/models/test_run_results.py        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -243,7 +243,7 @@
</span><span class="cx">     results['interrupted'] = initial_results.interrupted  # Does results.html have enough information to compute this itself? (by checking total number of results vs. total number of tests?)
</span><span class="cx">     results['layout_tests_dir'] = port_obj.layout_tests_dir()
</span><span class="cx">     results['has_wdiff'] = port_obj.wdiff_available()
</span><del>-    results['has_pretty_patch'] = port_obj.pretty_patch_available()
</del><ins>+    results['has_pretty_patch'] = port_obj.pretty_patch.pretty_patch_available()
</ins><span class="cx">     results['pixel_tests_enabled'] = port_obj.get_option('pixel_tests')
</span><span class="cx"> 
</span><span class="cx">     try:
</span></span></pre></div>
<a id="branchesjsCStackToolsScriptswebkitpylayout_testsreftests__init__py"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/Scripts/webkitpy/layout_tests/reftests/__init__.py (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/Scripts/webkitpy/layout_tests/reftests/__init__.py        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/Scripts/webkitpy/layout_tests/reftests/__init__.py        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1 +0,0 @@
</span><del>-# Required for Python to search this directory for module files
</del></span></pre></div>
<a id="branchesjsCStackToolsScriptswebkitpylayout_testsreftestsextract_reference_linkpy"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/Scripts/webkitpy/layout_tests/reftests/extract_reference_link.py (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/Scripts/webkitpy/layout_tests/reftests/extract_reference_link.py        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/Scripts/webkitpy/layout_tests/reftests/extract_reference_link.py        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,63 +0,0 @@
</span><del>-# Copyright (C) 2011 Google Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-&quot;&quot;&quot;Utility module for reftests.&quot;&quot;&quot;
-
-
-from HTMLParser import HTMLParser
-
-
-class ExtractReferenceLinkParser(HTMLParser):
-
-    def __init__(self):
-        HTMLParser.__init__(self)
-        self.matches = []
-        self.mismatches = []
-
-    def handle_starttag(self, tag, attrs):
-        if tag != &quot;link&quot;:
-            return
-        attrs = dict(attrs)
-        if not &quot;rel&quot; in attrs:
-            return
-        if not &quot;href&quot; in attrs:
-            return
-        if attrs[&quot;rel&quot;] == &quot;match&quot;:
-            self.matches.append(attrs[&quot;href&quot;])
-        if attrs[&quot;rel&quot;] == &quot;mismatch&quot;:
-            self.mismatches.append(attrs[&quot;href&quot;])
-
-
-def get_reference_link(html_string):
-    &quot;&quot;&quot;Returns reference links in the given html_string.
-
-    Returns:
-        a tuple of two URL lists, (matches, mismatches).
-    &quot;&quot;&quot;
-    parser = ExtractReferenceLinkParser()
-    parser.feed(html_string)
-    parser.close()
-
-    return parser.matches, parser.mismatches
</del></span></pre></div>
<a id="branchesjsCStackToolsScriptswebkitpylayout_testsreftestsextract_reference_link_unittestpy"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/Scripts/webkitpy/layout_tests/reftests/extract_reference_link_unittest.py (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/Scripts/webkitpy/layout_tests/reftests/extract_reference_link_unittest.py        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/Scripts/webkitpy/layout_tests/reftests/extract_reference_link_unittest.py        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1,80 +0,0 @@
</span><del>-# Copyright (C) 2011 Google Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import unittest2 as unittest
-
-from webkitpy.layout_tests.reftests import extract_reference_link
-
-
-class ExtractLinkMatchTest(unittest.TestCase):
-
-    def test_getExtractMatch(self):
-        html_1 = &quot;&quot;&quot;&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot;
-&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;
-&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
-&lt;head&gt;
-&lt;title&gt;CSS Test: DESCRIPTION OF TEST&lt;/title&gt;
-&lt;link rel=&quot;author&quot; title=&quot;NAME_OF_AUTHOR&quot;
-href=&quot;mailto:EMAIL OR http://CONTACT_PAGE&quot;/&gt;
-&lt;link rel=&quot;help&quot; href=&quot;RELEVANT_SPEC_SECTION&quot;/&gt;
-&lt;link rel=&quot;match&quot; href=&quot;green-box-ref.xht&quot; /&gt;
-&lt;link rel=&quot;match&quot; href=&quot;blue-box-ref.xht&quot; /&gt;
-&lt;link rel=&quot;mismatch&quot; href=&quot;red-box-notref.xht&quot; /&gt;
-&lt;link rel=&quot;mismatch&quot; href=&quot;red-box-notref.xht&quot; /&gt;
-&lt;meta name=&quot;flags&quot; content=&quot;TOKENS&quot; /&gt;
-&lt;meta name=&quot;assert&quot; content=&quot;TEST ASSERTION&quot;/&gt;
-&lt;style type=&quot;text/css&quot;&gt;&lt;![CDATA[
-CSS FOR TEST
-]]&gt;&lt;/style&gt;
-&lt;/head&gt;
-&lt;body&gt;
-CONTENT OF TEST
-&lt;/body&gt;
-&lt;/html&gt;
-&quot;&quot;&quot;
-        matches, mismatches = extract_reference_link.get_reference_link(html_1)
-        self.assertItemsEqual(matches,
-                              [&quot;green-box-ref.xht&quot;, &quot;blue-box-ref.xht&quot;])
-        self.assertItemsEqual(mismatches,
-                              [&quot;red-box-notref.xht&quot;, &quot;red-box-notref.xht&quot;])
-
-        html_2 = &quot;&quot;
-        empty_tuple_1 = extract_reference_link.get_reference_link(html_2)
-        self.assertEqual(empty_tuple_1, ([], []))
-
-        # Link does not have a &quot;ref&quot; attribute.
-        html_3 = &quot;&quot;&quot;&lt;link href=&quot;RELEVANT_SPEC_SECTION&quot;/&gt;&quot;&quot;&quot;
-        empty_tuple_2 = extract_reference_link.get_reference_link(html_3)
-        self.assertEqual(empty_tuple_2, ([], []))
-
-        # Link does not have a &quot;href&quot; attribute.
-        html_4 = &quot;&quot;&quot;&lt;link rel=&quot;match&quot;/&gt;&quot;&quot;&quot;
-        empty_tuple_3 = extract_reference_link.get_reference_link(html_4)
-        self.assertEqual(empty_tuple_3, ([], []))
-
-        # Link does not have a &quot;/&quot; at the end.
-        html_5 = &quot;&quot;&quot;&lt;link rel=&quot;help&quot; href=&quot;RELEVANT_SPEC_SECTION&quot;&gt;&quot;&quot;&quot;
-        empty_tuple_4 = extract_reference_link.get_reference_link(html_5)
-        self.assertEqual(empty_tuple_4, ([], []))
</del></span></pre></div>
<a id="branchesjsCStackToolsScriptswebkitpylayout_testsrun_webkit_testspy"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -104,15 +104,22 @@
</span><span class="cx">             default=False, help=&quot;Prefix used when spawning the Web process (Debug mode only)&quot;),
</span><span class="cx">     ]))
</span><span class="cx"> 
</span><ins>+    option_group_definitions.append((&quot;Feature Switches&quot;, [
+        optparse.make_option(&quot;--complex-text&quot;, action=&quot;store_true&quot;, default=False,
+            help=&quot;Use the complex text code path for all text (OS X and Windows only)&quot;),
+        optparse.make_option(&quot;--accelerated-drawing&quot;, action=&quot;store_true&quot;, default=False,
+            help=&quot;Use accelerated drawing (OS X only)&quot;),
+        optparse.make_option(&quot;--remote-layer-tree&quot;, action=&quot;store_true&quot;, default=False,
+            help=&quot;Use the remote layer tree drawing model (OS X WebKit2 only)&quot;),
+    ]))
+
</ins><span class="cx">     option_group_definitions.append((&quot;WebKit Options&quot;, [
</span><span class="cx">         optparse.make_option(&quot;--gc-between-tests&quot;, action=&quot;store_true&quot;, default=False,
</span><span class="cx">             help=&quot;Force garbage collection between each test&quot;),
</span><del>-        optparse.make_option(&quot;--complex-text&quot;, action=&quot;store_true&quot;, default=False,
-            help=&quot;Use the complex text code path for all text (Mac OS X and Windows only)&quot;),
</del><span class="cx">         optparse.make_option(&quot;-l&quot;, &quot;--leaks&quot;, action=&quot;store_true&quot;, default=False,
</span><del>-            help=&quot;Enable leaks checking (Mac OS X and Gtk+ only)&quot;),
</del><ins>+            help=&quot;Enable leaks checking (OS X and Gtk+ only)&quot;),
</ins><span class="cx">         optparse.make_option(&quot;-g&quot;, &quot;--guard-malloc&quot;, action=&quot;store_true&quot;, default=False,
</span><del>-            help=&quot;Enable Guard Malloc (Mac OS X only)&quot;),
</del><ins>+            help=&quot;Enable Guard Malloc (OS X only)&quot;),
</ins><span class="cx">         optparse.make_option(&quot;--threaded&quot;, action=&quot;store_true&quot;, default=False,
</span><span class="cx">             help=&quot;Run a concurrent JavaScript thread with each test&quot;),
</span><span class="cx">         optparse.make_option(&quot;--webkit-test-runner&quot;, &quot;-2&quot;, action=&quot;store_true&quot;,
</span><span class="lines">@@ -128,7 +135,7 @@
</span><span class="cx">         optparse.make_option(&quot;--no-pixel&quot;, &quot;--no-pixel-tests&quot;, action=&quot;store_false&quot;,
</span><span class="cx">             dest=&quot;pixel_tests&quot;, help=&quot;Disable pixel-to-pixel PNG comparisons&quot;),
</span><span class="cx">         optparse.make_option(&quot;--no-sample-on-timeout&quot;, action=&quot;store_false&quot;,
</span><del>-            dest=&quot;sample_on_timeout&quot;, help=&quot;Don't run sample on timeout (Mac OS X only)&quot;),
</del><ins>+            dest=&quot;sample_on_timeout&quot;, help=&quot;Don't run sample on timeout (OS X only)&quot;),
</ins><span class="cx">         optparse.make_option(&quot;--no-ref-tests&quot;, action=&quot;store_true&quot;,
</span><span class="cx">             dest=&quot;no_ref_tests&quot;, help=&quot;Skip all ref tests&quot;),
</span><span class="cx">         optparse.make_option(&quot;--tolerance&quot;,
</span><span class="lines">@@ -149,6 +156,8 @@
</span><span class="cx">         optparse.make_option(&quot;--no-new-test-results&quot;, action=&quot;store_false&quot;,
</span><span class="cx">             dest=&quot;new_test_results&quot;, default=True,
</span><span class="cx">             help=&quot;Don't create new baselines when no expected results exist&quot;),
</span><ins>+        optparse.make_option(&quot;--treat-ref-tests-as-pixel-tests&quot;, action=&quot;store_true&quot;, default=False,
+            help=&quot;Run ref tests, but treat them as if they were traditional pixel tests&quot;),
</ins><span class="cx"> 
</span><span class="cx">         #FIXME: we should support a comma separated list with --pixel-test-directory as well.
</span><span class="cx">         optparse.make_option(&quot;--pixel-test-directory&quot;, action=&quot;append&quot;, default=[], dest=&quot;pixel_test_directories&quot;,
</span></span></pre></div>
<a id="branchesjsCStackToolsScriptswebkitpyportbasepy"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/Scripts/webkitpy/port/base.py (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/Scripts/webkitpy/port/base.py        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/Scripts/webkitpy/port/base.py        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -51,6 +51,7 @@
</span><span class="cx"> from webkitpy.common import find_files
</span><span class="cx"> from webkitpy.common import read_checksum_from_png
</span><span class="cx"> from webkitpy.common.memoized import memoized
</span><ins>+from webkitpy.common.prettypatch import PrettyPatch
</ins><span class="cx"> from webkitpy.common.system import path
</span><span class="cx"> from webkitpy.common.system.executive import ScriptError
</span><span class="cx"> from webkitpy.common.system.systemhost import SystemHost
</span><span class="lines">@@ -116,6 +117,7 @@
</span><span class="cx">         self._filesystem = host.filesystem
</span><span class="cx">         self._webkit_finder = WebKitFinder(host.filesystem)
</span><span class="cx">         self._config = port_config.Config(self._executive, self._filesystem, self.port_name)
</span><ins>+        self.pretty_patch = PrettyPatch(self._executive, self.path_from_webkit_base(), self._filesystem)
</ins><span class="cx"> 
</span><span class="cx">         self._helper = None
</span><span class="cx">         self._http_server = None
</span><span class="lines">@@ -139,10 +141,6 @@
</span><span class="cx">         # http://bugs.python.org/issue3210
</span><span class="cx">         self._wdiff_available = None
</span><span class="cx"> 
</span><del>-        # FIXME: prettypatch.py knows this path, why is it copied here?
-        self._pretty_patch_path = self.path_from_webkit_base(&quot;Websites&quot;, &quot;bugs.webkit.org&quot;, &quot;PrettyPatch&quot;, &quot;prettify.rb&quot;)
-        self._pretty_patch_available = None
-
</del><span class="cx">         if not hasattr(options, 'configuration') or not options.configuration:
</span><span class="cx">             self.set_option_default('configuration', self.default_configuration())
</span><span class="cx">         self._test_configuration = None
</span><span class="lines">@@ -178,11 +176,6 @@
</span><span class="cx">             self._wdiff_available = self.check_wdiff(logging=False)
</span><span class="cx">         return self._wdiff_available
</span><span class="cx"> 
</span><del>-    def pretty_patch_available(self):
-        if self._pretty_patch_available is None:
-            self._pretty_patch_available = self.check_pretty_patch(logging=False)
-        return self._pretty_patch_available
-
</del><span class="cx">     def should_retry_crashes(self):
</span><span class="cx">         return False
</span><span class="cx"> 
</span><span class="lines">@@ -281,25 +274,6 @@
</span><span class="cx">             return False
</span><span class="cx">         return True
</span><span class="cx"> 
</span><del>-    def check_pretty_patch(self, logging=True):
-        &quot;&quot;&quot;Checks whether we can use the PrettyPatch ruby script.&quot;&quot;&quot;
-        try:
-            _ = self._executive.run_command(['ruby', '--version'])
-        except OSError, e:
-            if e.errno in [errno.ENOENT, errno.EACCES, errno.ECHILD]:
-                if logging:
-                    _log.warning(&quot;Ruby is not installed; can't generate pretty patches.&quot;)
-                    _log.warning('')
-                return False
-
-        if not self._filesystem.exists(self._pretty_patch_path):
-            if logging:
-                _log.warning(&quot;Unable to find %s; can't generate pretty patches.&quot; % self._pretty_patch_path)
-                _log.warning('')
-            return False
-
-        return True
-
</del><span class="cx">     def check_wdiff(self, logging=True):
</span><span class="cx">         if not self._path_to_wdiff():
</span><span class="cx">             # Don't need to log here since this is the port choosing not to use wdiff.
</span><span class="lines">@@ -568,6 +542,9 @@
</span><span class="cx">     def reference_files(self, test_name):
</span><span class="cx">         &quot;&quot;&quot;Return a list of expectation (== or !=) and filename pairs&quot;&quot;&quot;
</span><span class="cx"> 
</span><ins>+        if self.get_option('treat_ref_tests_as_pixel_tests'):
+            return []
+
</ins><span class="cx">         reftest_list = self._get_reftest_list(test_name)
</span><span class="cx">         if not reftest_list:
</span><span class="cx">             reftest_list = []
</span><span class="lines">@@ -1154,32 +1131,6 @@
</span><span class="cx">                 return &quot;&quot;
</span><span class="cx">             raise
</span><span class="cx"> 
</span><del>-    # This is a class variable so we can test error output easily.
-    _pretty_patch_error_html = &quot;Failed to run PrettyPatch, see error log.&quot;
-
-    def pretty_patch_text(self, diff_path):
-        if self._pretty_patch_available is None:
-            self._pretty_patch_available = self.check_pretty_patch(logging=False)
-        if not self._pretty_patch_available:
-            return self._pretty_patch_error_html
-        command = (&quot;ruby&quot;, &quot;-I&quot;, self._filesystem.dirname(self._pretty_patch_path),
-                   self._pretty_patch_path, diff_path)
-        try:
-            # Diffs are treated as binary (we pass decode_output=False) as they
-            # may contain multiple files of conflicting encodings.
-            return self._executive.run_command(command, decode_output=False)
-        except OSError, e:
-            # If the system is missing ruby log the error and stop trying.
-            self._pretty_patch_available = False
-            _log.error(&quot;Failed to run PrettyPatch (%s): %s&quot; % (command, e))
-            return self._pretty_patch_error_html
-        except ScriptError, e:
-            # If ruby failed to run for some reason, log the command
-            # output and stop trying.
-            self._pretty_patch_available = False
-            _log.error(&quot;Failed to run PrettyPatch (%s):\n%s&quot; % (command, e.message_with_output()))
-            return self._pretty_patch_error_html
-
</del><span class="cx">     def default_configuration(self):
</span><span class="cx">         return self._config.default_configuration()
</span><span class="cx"> 
</span><span class="lines">@@ -1444,11 +1395,8 @@
</span><span class="cx">         environment.disable_gcc_smartquotes()
</span><span class="cx">         env = environment.to_dictionary()
</span><span class="cx"> 
</span><del>-        # FIXME: We build both DumpRenderTree and WebKitTestRunner for
-        # WebKitTestRunner runs because DumpRenderTree still includes
-        # the DumpRenderTreeSupport module and the TestNetscapePlugin.
-        # These two projects should be factored out into their own
-        # projects.
</del><ins>+        # FIXME: We build both DumpRenderTree and WebKitTestRunner for WebKitTestRunner runs because
+        # DumpRenderTree includes TestNetscapePlugin. It should be factored out into its own project.
</ins><span class="cx">         try:
</span><span class="cx">             self._run_script(&quot;build-dumprendertree&quot;, args=self._build_driver_flags(), env=env)
</span><span class="cx">             if self.get_option('webkit_test_runner'):
</span><span class="lines">@@ -1541,6 +1489,8 @@
</span><span class="cx">         # By current convention, the WebKit2 name is always mac-wk2, win-wk2, not mac-leopard-wk2, etc,
</span><span class="cx">         return &quot;%s-wk2&quot; % self.port_name
</span><span class="cx"> 
</span><ins>+    def logging_patterns_to_strip(self):
+        return []
</ins><span class="cx"> 
</span><span class="cx"> class VirtualTestSuite(object):
</span><span class="cx">     def __init__(self, name, base, args, tests=None):
</span></span></pre></div>
<a id="branchesjsCStackToolsScriptswebkitpyportbase_unittestpy"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/Scripts/webkitpy/port/base_unittest.py (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/Scripts/webkitpy/port/base_unittest.py        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/Scripts/webkitpy/port/base_unittest.py        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -90,24 +90,24 @@
</span><span class="cx">         port = self.make_port(executive=executive_mock.MockExecutive2(exception=OSError))
</span><span class="cx">         oc = OutputCapture()
</span><span class="cx">         oc.capture_output()
</span><del>-        self.assertEqual(port.pretty_patch_text(&quot;patch.txt&quot;),
-                         port._pretty_patch_error_html)
</del><ins>+        self.assertEqual(port.pretty_patch.pretty_patch_text(&quot;patch.txt&quot;),
+                         port.pretty_patch.pretty_patch_error_html)
</ins><span class="cx"> 
</span><span class="cx">         # This tests repeated calls to make sure we cache the result.
</span><del>-        self.assertEqual(port.pretty_patch_text(&quot;patch.txt&quot;),
-                         port._pretty_patch_error_html)
</del><ins>+        self.assertEqual(port.pretty_patch.pretty_patch_text(&quot;patch.txt&quot;),
+                         port.pretty_patch.pretty_patch_error_html)
</ins><span class="cx">         oc.restore_output()
</span><span class="cx"> 
</span><span class="cx">     def test_pretty_patch_script_error(self):
</span><span class="cx">         # FIXME: This is some ugly white-box test hacking ...
</span><span class="cx">         port = self.make_port(executive=executive_mock.MockExecutive2(exception=ScriptError))
</span><del>-        port._pretty_patch_available = True
-        self.assertEqual(port.pretty_patch_text(&quot;patch.txt&quot;),
-                         port._pretty_patch_error_html)
</del><ins>+        port.pretty_patch.ppatch_available = True
+        self.assertEqual(port.pretty_patch.pretty_patch_text(&quot;patch.txt&quot;),
+                         port.pretty_patch.pretty_patch_error_html)
</ins><span class="cx"> 
</span><span class="cx">         # This tests repeated calls to make sure we cache the result.
</span><del>-        self.assertEqual(port.pretty_patch_text(&quot;patch.txt&quot;),
-                         port._pretty_patch_error_html)
</del><ins>+        self.assertEqual(port.pretty_patch.pretty_patch_text(&quot;patch.txt&quot;),
+                         port.pretty_patch.pretty_patch_error_html)
</ins><span class="cx"> 
</span><span class="cx">     def integration_test_run_wdiff(self):
</span><span class="cx">         executive = Executive()
</span></span></pre></div>
<a id="branchesjsCStackToolsScriptswebkitpyportdriverpy"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/Scripts/webkitpy/port/driver.py (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/Scripts/webkitpy/port/driver.py        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/Scripts/webkitpy/port/driver.py        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -55,26 +55,26 @@
</span><span class="cx">     &quot;&quot;&quot;Groups information about a output from driver for easy passing
</span><span class="cx">     and post-processing of data.&quot;&quot;&quot;
</span><span class="cx"> 
</span><del>-    strip_patterns = []
-    strip_patterns.append((re.compile('at \(-?[0-9]+,-?[0-9]+\) *'), ''))
-    strip_patterns.append((re.compile('size -?[0-9]+x-?[0-9]+ *'), ''))
-    strip_patterns.append((re.compile('text run width -?[0-9]+: '), ''))
-    strip_patterns.append((re.compile('text run width -?[0-9]+ [a-zA-Z ]+: '), ''))
-    strip_patterns.append((re.compile('RenderButton {BUTTON} .*'), 'RenderButton {BUTTON}'))
-    strip_patterns.append((re.compile('RenderImage {INPUT} .*'), 'RenderImage {INPUT}'))
-    strip_patterns.append((re.compile('RenderBlock {INPUT} .*'), 'RenderBlock {INPUT}'))
-    strip_patterns.append((re.compile('RenderTextControl {INPUT} .*'), 'RenderTextControl {INPUT}'))
-    strip_patterns.append((re.compile('\([0-9]+px'), 'px'))
-    strip_patterns.append((re.compile(' *&quot; *\n +&quot; *'), ' '))
-    strip_patterns.append((re.compile('&quot; +$'), '&quot;'))
-    strip_patterns.append((re.compile('- '), '-'))
-    strip_patterns.append((re.compile('\n( *)&quot;\s+'), '\n\g&lt;1&gt;&quot;'))
-    strip_patterns.append((re.compile('\s+&quot;\n'), '&quot;\n'))
-    strip_patterns.append((re.compile('scrollWidth [0-9]+'), 'scrollWidth'))
-    strip_patterns.append((re.compile('scrollHeight [0-9]+'), 'scrollHeight'))
-    strip_patterns.append((re.compile('scrollX [0-9]+'), 'scrollX'))
-    strip_patterns.append((re.compile('scrollY [0-9]+'), 'scrollY'))
-    strip_patterns.append((re.compile('scrolled to [0-9]+,[0-9]+'), 'scrolled'))
</del><ins>+    metrics_patterns = []
+    metrics_patterns.append((re.compile('at \(-?[0-9]+,-?[0-9]+\) *'), ''))
+    metrics_patterns.append((re.compile('size -?[0-9]+x-?[0-9]+ *'), ''))
+    metrics_patterns.append((re.compile('text run width -?[0-9]+: '), ''))
+    metrics_patterns.append((re.compile('text run width -?[0-9]+ [a-zA-Z ]+: '), ''))
+    metrics_patterns.append((re.compile('RenderButton {BUTTON} .*'), 'RenderButton {BUTTON}'))
+    metrics_patterns.append((re.compile('RenderImage {INPUT} .*'), 'RenderImage {INPUT}'))
+    metrics_patterns.append((re.compile('RenderBlock {INPUT} .*'), 'RenderBlock {INPUT}'))
+    metrics_patterns.append((re.compile('RenderTextControl {INPUT} .*'), 'RenderTextControl {INPUT}'))
+    metrics_patterns.append((re.compile('\([0-9]+px'), 'px'))
+    metrics_patterns.append((re.compile(' *&quot; *\n +&quot; *'), ' '))
+    metrics_patterns.append((re.compile('&quot; +$'), '&quot;'))
+    metrics_patterns.append((re.compile('- '), '-'))
+    metrics_patterns.append((re.compile('\n( *)&quot;\s+'), '\n\g&lt;1&gt;&quot;'))
+    metrics_patterns.append((re.compile('\s+&quot;\n'), '&quot;\n'))
+    metrics_patterns.append((re.compile('scrollWidth [0-9]+'), 'scrollWidth'))
+    metrics_patterns.append((re.compile('scrollHeight [0-9]+'), 'scrollHeight'))
+    metrics_patterns.append((re.compile('scrollX [0-9]+'), 'scrollX'))
+    metrics_patterns.append((re.compile('scrollY [0-9]+'), 'scrollY'))
+    metrics_patterns.append((re.compile('scrolled to [0-9]+,[0-9]+'), 'scrolled'))
</ins><span class="cx"> 
</span><span class="cx">     def __init__(self, text, image, image_hash, audio, crash=False,
</span><span class="cx">             test_time=0, measurements=None, timeout=False, error='', crashed_process_name='??',
</span><span class="lines">@@ -99,12 +99,14 @@
</span><span class="cx">         return bool(self.error)
</span><span class="cx"> 
</span><span class="cx">     def strip_metrics(self):
</span><ins>+        self.strip_patterns(self.metrics_patterns)
+
+    def strip_patterns(self, patterns):
</ins><span class="cx">         if not self.text:
</span><span class="cx">             return
</span><del>-        for pattern in self.strip_patterns:
</del><ins>+        for pattern in patterns:
</ins><span class="cx">             self.text = re.sub(pattern[0], pattern[1], self.text)
</span><span class="cx"> 
</span><del>-
</del><span class="cx"> class Driver(object):
</span><span class="cx">     &quot;&quot;&quot;object for running test(s) using DumpRenderTree/WebKitTestRunner.&quot;&quot;&quot;
</span><span class="cx"> 
</span><span class="lines">@@ -334,6 +336,10 @@
</span><span class="cx">             cmd.append('--gc-between-tests')
</span><span class="cx">         if self._port.get_option('complex_text'):
</span><span class="cx">             cmd.append('--complex-text')
</span><ins>+        if self._port.get_option('accelerated_drawing'):
+            cmd.append('--accelerated-drawing')
+        if self._port.get_option('remote_layer_tree'):
+            cmd.append('--remote-layer-tree')
</ins><span class="cx">         if self._port.get_option('threaded'):
</span><span class="cx">             cmd.append('--threaded')
</span><span class="cx">         if self._no_timeout:
</span></span></pre></div>
<a id="branchesjsCStackToolsScriptswebkitpyportgtkpy"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/Scripts/webkitpy/port/gtk.py (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/Scripts/webkitpy/port/gtk.py        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/Scripts/webkitpy/port/gtk.py        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -114,7 +114,7 @@
</span><span class="cx">                 &quot;--undef-value-errors=no &quot; \
</span><span class="cx">                 &quot;--gen-suppressions=all &quot; \
</span><span class="cx">                 &quot;--xml=yes &quot; \
</span><del>-                &quot;--xml-file=\&quot;%s\&quot; &quot; \
</del><ins>+                &quot;--xml-file=%s &quot; \
</ins><span class="cx">                 &quot;--suppressions=%s&quot; % (xmlfile, suppressionsfile)
</span><span class="cx">         return environment
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackToolsScriptswebkitpyportmacpy"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/Scripts/webkitpy/port/mac.py (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/Scripts/webkitpy/port/mac.py        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/Scripts/webkitpy/port/mac.py        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -30,6 +30,7 @@
</span><span class="cx"> import logging
</span><span class="cx"> import os
</span><span class="cx"> import time
</span><ins>+import re
</ins><span class="cx"> 
</span><span class="cx"> from webkitpy.common.system.crashlogs import CrashLogs
</span><span class="cx"> from webkitpy.common.system.executive import ScriptError
</span><span class="lines">@@ -318,3 +319,7 @@
</span><span class="cx">         except ScriptError:
</span><span class="cx">             _log.warn(&quot;xcrun failed; falling back to '%s'.&quot; % fallback)
</span><span class="cx">             return fallback
</span><ins>+
+    def logging_patterns_to_strip(self):
+        # FIXME: Remove this after &lt;rdar://problem/15605007&gt; is fixed
+        return [(re.compile('(AVF|GVA) info:.*\n'), '')]
</ins></span></pre></div>
<a id="branchesjsCStackToolsScriptswebkitpyportwestondriver_unittestpy"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Tools/Scripts/webkitpy/port/westondriver_unittest.py (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/Scripts/webkitpy/port/westondriver_unittest.py                                (rev 0)
+++ branches/jsCStack/Tools/Scripts/webkitpy/port/westondriver_unittest.py        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,84 @@
</span><ins>+# Copyright (C) 2013 Igalia S.L.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#    * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#    * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#    * Neither the name of Igalia S.L. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import logging
+import re
+import unittest2 as unittest
+
+from webkitpy.common.system.filesystem_mock import MockFileSystem
+from webkitpy.common.system.outputcapture import OutputCapture
+from webkitpy.common.system.systemhost_mock import MockSystemHost
+from webkitpy.port import Port
+from webkitpy.port.server_process_mock import MockServerProcess
+from webkitpy.port.westondriver import WestonDriver
+from webkitpy.tool.mocktool import MockOptions
+
+_log = logging.getLogger(__name__)
+
+
+class WestonDriverTest(unittest.TestCase):
+    def make_driver(self, filesystem=None):
+        port = Port(MockSystemHost(log_executive=True, filesystem=filesystem), 'westondrivertestport', options=MockOptions(configuration='Release'))
+        port._config.build_directory = lambda configuration: &quot;/mock_build&quot;
+        port._server_process_constructor = MockServerProcess
+
+        driver = WestonDriver(port, worker_number=0, pixel_tests=True)
+        driver._startup_delay_secs = 0
+        return driver
+
+    def test_start(self):
+        driver = self.make_driver()
+        output_capture = OutputCapture()
+
+        output_capture.capture_output()
+        driver.start(pixel_tests=True, per_test_args=[])
+        _, _, logs = output_capture.restore_output()
+
+        self.assertTrue(re.match(r&quot;MOCK popen: \['weston', '--socket=WKTesting-weston-[0-9a-f]{32}', '--width=800', '--height=600'\]\n&quot;, logs), None)
+        self.assertTrue(re.match(r&quot;WKTesting-weston-[0-9a-f]{32}&quot;, driver._server_process.env['WAYLAND_DISPLAY']))
+        self.assertEqual(driver._server_process.env['GDK_BACKEND'], 'wayland')
+        self.assertTrue(driver._server_process.started)
+
+        # This prevents improper cleanup of the subprocess.Popen mock object in implicitly-invoked WestonDriver.stop.
+        driver._weston_process = None
+
+    def test_stop(self):
+        class FakeWestonProcess(object):
+            def terminate(self):
+                _log.info(&quot;MOCK FakeWestonProcess.terminate&quot;)
+
+        filesystem = MockFileSystem(dirs=['/tmp/weston-driver-directory'])
+        driver = self.make_driver(filesystem)
+        driver._weston_process = FakeWestonProcess()
+        driver._driver_directory = '/tmp/weston-driver-directory'
+
+        expected_logs = &quot;MOCK FakeWestonProcess.terminate\n&quot;
+        OutputCapture().assert_outputs(self, driver.stop, [], expected_logs=expected_logs)
+
+        self.assertIsNone(driver._weston_process)
+        self.assertFalse(driver._port._filesystem.exists(driver._driver_directory))
</ins></span></pre></div>
<a id="branchesjsCStackToolsScriptswebkitpystylecheckerscpppy"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/Scripts/webkitpy/style/checkers/cpp.py (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/Scripts/webkitpy/style/checkers/cpp.py        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/Scripts/webkitpy/style/checkers/cpp.py        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -957,8 +957,8 @@
</span><span class="cx">                   'Line contains invalid UTF-8 (or Unicode replacement character).')
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-def check_for_new_line_at_eof(lines, error):
-    &quot;&quot;&quot;Logs an error if there is no newline char at the end of the file.
</del><ins>+def check_for_missing_new_line_at_eof(lines, error):
+    &quot;&quot;&quot;Logs an error if there is not a newline character at the end of the file.
</ins><span class="cx"> 
</span><span class="cx">     Args:
</span><span class="cx">       lines: An array of strings, each representing a line of the file.
</span><span class="lines">@@ -974,6 +974,20 @@
</span><span class="cx">               'Could not find a newline character at the end of the file.')
</span><span class="cx"> 
</span><span class="cx"> 
</span><ins>+def check_for_extra_new_line_at_eof(lines, error):
+    &quot;&quot;&quot;Logs an error if there is not a single newline at the end of the file.
+
+    Args:
+      lines: An array of strings, each representing a line of the file.
+      error: The function to call with any errors found.
+    &quot;&quot;&quot;
+    # The array lines() was created by adding two newlines to the
+    # original file (go figure), then splitting on \n.
+    if len(lines) &gt; 3 and not lines[-3]:
+        error(len(lines) - 2, 'whitespace/ending_newline', 5,
+              'There was more than one newline at the end of the file.')
+
+
</ins><span class="cx"> def check_for_multiline_comments_and_strings(clean_lines, line_number, error):
</span><span class="cx">     &quot;&quot;&quot;Logs an error if we see /* ... */ or &quot;...&quot; that extend past one line.
</span><span class="cx"> 
</span><span class="lines">@@ -1820,9 +1834,9 @@
</span><span class="cx"> 
</span><span class="cx">     # Don't try to do spacing checks for operator methods
</span><span class="cx">     line = sub(r'operator(==|!=|&lt;|&lt;&lt;|&lt;=|&gt;=|&gt;&gt;|&gt;|\+=|-=|\*=|/=|%=|&amp;=|\|=|^=|&lt;&lt;=|&gt;&gt;=|/)\(', 'operator\(', line)
</span><del>-    # Don't try to do spacing checks for #include or #import statements at
</del><ins>+    # Don't try to do spacing checks for #include, #import, or #if statements at
</ins><span class="cx">     # minimum because it messes up checks for spacing around /
</span><del>-    if match(r'\s*#\s*(?:include|import)', line):
</del><ins>+    if match(r'\s*#\s*(?:include|import|if)', line):
</ins><span class="cx">         return
</span><span class="cx">     if search(r'[\w.]=[\w.]', line):
</span><span class="cx">         error(line_number, 'whitespace/operators', 4,
</span><span class="lines">@@ -1987,7 +2001,7 @@
</span><span class="cx">     # with the colon or comma preceding the member on that line.
</span><span class="cx">     begin_line = line
</span><span class="cx">     # match the start of initialization list
</span><del>-    if search(r'^(?P&lt;indentation&gt;\s*)((explicit\s+)?[^\s]+\(.*\)\s?\:|^\s*\:).*[^;]*$', line):
</del><ins>+    if search(r'^(?P&lt;indentation&gt;\s*)((explicit\s+)?[^(\s|\?)]+\([^\?]*\)\s?\:|^(\s|\?)*\:).*[^;]*$', line):
</ins><span class="cx">         if search(r'[^:]\:[^\:\s]+', line):
</span><span class="cx">             error(line_number, 'whitespace/init', 4,
</span><span class="cx">                 'Missing spaces around :')
</span><span class="lines">@@ -2007,7 +2021,7 @@
</span><span class="cx">                 if not line.startswith(inner_indentation) and begin_line != line:
</span><span class="cx">                     error(line_number, 'whitespace/indent', 4,
</span><span class="cx">                         'Wrong number of spaces before statement. (expected: %d)' % len(inner_indentation))
</span><del>-                if search(r'\S\s*,', line):
</del><ins>+                if search(r'\S\s*,\s*$', line):
</ins><span class="cx">                     error(line_number, 'whitespace/init', 4,
</span><span class="cx">                         'Comma should be at the beginning of the line in a member initialization list.')
</span><span class="cx"> 
</span><span class="lines">@@ -3635,7 +3649,8 @@
</span><span class="cx">     # lines rather than &quot;cleaned&quot; lines.
</span><span class="cx">     check_for_unicode_replacement_characters(lines, error)
</span><span class="cx"> 
</span><del>-    check_for_new_line_at_eof(lines, error)
</del><ins>+    check_for_missing_new_line_at_eof(lines, error)
+    check_for_extra_new_line_at_eof(lines, error)
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> class CppChecker(object):
</span></span></pre></div>
<a id="branchesjsCStackToolsScriptswebkitpystylecheckerscpp_unittestpy"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -1766,6 +1766,7 @@
</span><span class="cx">         self.assert_lint('if (a = b == 1)', '')
</span><span class="cx">         self.assert_multi_line_lint('#include &lt;sys/io.h&gt;\n', '')
</span><span class="cx">         self.assert_multi_line_lint('#import &lt;foo/bar.h&gt;\n', '')
</span><ins>+        self.assert_multi_line_lint('#if __has_include(&lt;ApplicationServices/ApplicationServicesPriv.h&gt;)\n', '')
</ins><span class="cx"> 
</span><span class="cx">     def test_operator_methods(self):
</span><span class="cx">         self.assert_lint('String operator+(const String&amp;, const String&amp;);', '')
</span><span class="lines">@@ -1937,6 +1938,23 @@
</span><span class="cx">         do_test(self, '// Newline\n// at EOF\n', False)
</span><span class="cx">         do_test(self, '// No newline\n// at EOF', True)
</span><span class="cx"> 
</span><ins>+    def test_extra_newlines_at_eof(self):
+        def do_test(self, data, too_many_newlines):
+            error_collector = ErrorCollector(self.assertTrue)
+            self.process_file_data('foo.cpp', 'cpp', data.split('\n'),
+                                   error_collector)
+            # The warning appears only once.
+            self.assertEqual(
+                int(too_many_newlines),
+                error_collector.results().count(
+                    'There was more than one newline at the end of the file.'
+                    '  [whitespace/ending_newline] [5]'))
+
+        do_test(self, '// No Newline\n// at EOF', False)
+        do_test(self, '// One Newline\n// at EOF\n', False)
+        do_test(self, '// Two Newlines\n// at EOF\n\n', True)
+        do_test(self, '// Three Newlines\n// at EOF\n\n\n', True)
+
</ins><span class="cx">     def test_invalid_utf8(self):
</span><span class="cx">         def do_test(self, raw_bytes, has_invalid_utf8):
</span><span class="cx">             error_collector = ErrorCollector(self.assertTrue)
</span><span class="lines">@@ -4958,7 +4976,8 @@
</span><span class="cx">         'Missing spaces around :  [whitespace/init] [4]')
</span><span class="cx">         self.assert_multi_line_lint('''\
</span><span class="cx">         MyClass::MyClass(Document* doc)
</span><del>-            : MySuperClass() , m_doc(0)
</del><ins>+            : MySuperClass() ,
+            m_doc(0)
</ins><span class="cx">         { }''',
</span><span class="cx">         'Comma should be at the beginning of the line in a member initialization list.'
</span><span class="cx">         '  [whitespace/init] [4]')
</span><span class="lines">@@ -4972,7 +4991,13 @@
</span><span class="cx">         , public foo {
</span><span class="cx">         };''',
</span><span class="cx">         '')
</span><ins>+        self.assert_multi_line_lint('''\
+        MyClass::MyClass(Document* doc)
+            : MySuperClass(doc, doc)
+        { }''',
+        '')
</ins><span class="cx">         self.assert_lint('o = foo(b ? bar() : baz());', '')
</span><ins>+        self.assert_lint('MYMACRO(a ? b() : c);', '')
</ins><span class="cx"> 
</span><span class="cx">     def test_other(self):
</span><span class="cx">         # FIXME: Implement this.
</span></span></pre></div>
<a id="branchesjsCStackToolsTestWebKitAPICMakeListstxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/TestWebKitAPI/CMakeLists.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/TestWebKitAPI/CMakeLists.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/TestWebKitAPI/CMakeLists.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -15,6 +15,7 @@
</span><span class="cx">     ${WEBCORE_DIR}/platform/graphics
</span><span class="cx">     ${WEBCORE_DIR}/platform/text
</span><span class="cx">     ${WEBCORE_DIR}/platform/network
</span><ins>+    ${WEBKIT2_DIR}/Platform/CoreIPC
</ins><span class="cx">     ${WEBKIT2_DIR}/Shared
</span><span class="cx">     ${WEBKIT2_DIR}/Shared/API/c
</span><span class="cx">     ${WEBKIT2_DIR}/Shared/Plugins
</span></span></pre></div>
<a id="branchesjsCStackToolsTestWebKitAPIGNUmakefileam"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/TestWebKitAPI/GNUmakefile.am (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/TestWebKitAPI/GNUmakefile.am        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/TestWebKitAPI/GNUmakefile.am        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -121,13 +121,15 @@
</span><span class="cx"> 
</span><span class="cx"> webcore_layer_archives = $(foreach lib, $(webcore_layer_deps), $(shell echo $(lib) | sed &quot;s/\(.*\)\.la/.libs\/\1.a/&quot;))
</span><span class="cx"> 
</span><del>-WebCoreLayer.a: $(webcore_layer_deps)
</del><ins>+libWebCoreLayer.a: $(webcore_layer_deps)
</ins><span class="cx">         $(AM_V_GEN)
</span><span class="cx">         $(AM_V_at)$(shell rm -f $@)
</span><del>-        $(AM_V_at)$(foreach archive, $(webcore_layer_archives), $(shell ar t $(archive) | xargs -n50 ar cruT $@))
</del><ins>+        $(AM_V_at)$(shell find . -name &quot;*.o&quot; &gt; objects_list)
+        $(AM_V_at)$(foreach archive, $(webcore_layer_archives), $(shell $(AR) t $(archive) | xargs -n1 basename | xargs -I obj_file grep -F obj_file objects_list | xargs -n50 $(AR) $(AR_FLAGS) $@))
+        $(AM_V_at)$(shell rm -f objects_list)
</ins><span class="cx"> 
</span><span class="cx"> DISTCLEANFILES += \
</span><del>-        $(top_builddir)/WebCoreLayer.a
</del><ins>+        $(top_builddir)/libWebCoreLayer.a
</ins><span class="cx"> 
</span><span class="cx"> Programs_TestWebKitAPI_TestWebCore_CPPFLAGS = \
</span><span class="cx">         $(Libraries_libTestWebKitAPIMain_la_CPPFLAGS) \
</span><span class="lines">@@ -142,7 +144,7 @@
</span><span class="cx">         Libraries/libgtest.la \
</span><span class="cx">         libjavascriptcoregtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la \
</span><span class="cx">         libWTF.la \
</span><del>-        WebCoreLayer.a \
</del><ins>+        libWebCoreLayer.a \
</ins><span class="cx">         $(CAIRO_LIBS) \
</span><span class="cx">         $(FREETYPE_LIBS) \
</span><span class="cx">         $(GAMEPAD_LIBS) \
</span></span></pre></div>
<a id="branchesjsCStackToolsTestWebKitAPIPlatformGTKcmake"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/TestWebKitAPI/PlatformGTK.cmake (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/TestWebKitAPI/PlatformGTK.cmake        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/TestWebKitAPI/PlatformGTK.cmake        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -54,6 +54,11 @@
</span><span class="cx">     ${GTK3_LIBRARIES}
</span><span class="cx"> )
</span><span class="cx"> 
</span><ins>+list(APPEND TestWebKitAPI_LIBRARIES
+    ${GDK3_LIBRARIES}
+    ${GTK3_LIBRARIES}
+)
+
</ins><span class="cx"> # The list below works like a test expectation. Tests in the
</span><span class="cx"> # test_{webkit2_api|webcore}_BINARIES list are added to the test runner and
</span><span class="cx"> # tried on the bots on every build. Tests in test_{webkit2_api|webcore}_BINARIES
</span></span></pre></div>
<a id="branchesjsCStackToolsTestWebKitAPITestWebKitAPIvcxprojTestWebKitAPIvcxproj"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPI.vcxproj (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPI.vcxproj        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPI.vcxproj        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -60,6 +60,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;true&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -70,6 +71,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;true&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -80,6 +82,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;true&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -90,6 +93,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;false&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -100,6 +104,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;false&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -110,6 +115,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;false&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span></span></pre></div>
<a id="branchesjsCStackToolsTestWebKitAPITestsWTFHashMapcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -26,6 +26,7 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;MoveOnly.h&quot;
</span><ins>+#include &lt;string&gt;
</ins><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="cx"> #include &lt;wtf/text/StringHash.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -129,4 +130,24 @@
</span><span class="cx">     ASSERT_TRUE(moveOnlyKeys.isEmpty());
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if COMPILER_SUPPORTS(CXX_GENERALIZED_INITIALIZERS)
+TEST(WTF_HashMap, InitializerList)
+{
+    HashMap&lt;unsigned, std::string&gt; map = {
+        { 1, &quot;one&quot; },
+        { 2, &quot;two&quot; },
+        { 3, &quot;three&quot; },
+        { 4, &quot;four&quot; },
+    };
+
+    EXPECT_EQ(4, map.size());
+
+    EXPECT_EQ(&quot;one&quot;, map.get(1));
+    EXPECT_EQ(&quot;two&quot;, map.get(2));
+    EXPECT_EQ(&quot;three&quot;, map.get(3));
+    EXPECT_EQ(&quot;four&quot;, map.get(4));
+    EXPECT_EQ(std::string(), map.get(5));
+}
+#endif
+
</ins><span class="cx"> } // namespace TestWebKitAPI
</span></span></pre></div>
<a id="branchesjsCStackToolsTestWebKitAPITestsWTFMD5cpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/TestWebKitAPI/Tests/WTF/MD5.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/TestWebKitAPI/Tests/WTF/MD5.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/TestWebKitAPI/Tests/WTF/MD5.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -21,12 +21,12 @@
</span><span class="cx"> {
</span><span class="cx">     MD5 md5;
</span><span class="cx">     md5.addBytes(reinterpret_cast&lt;const uint8_t*&gt;(input.data()), input.length());
</span><del>-    Vector&lt;uint8_t, 16&gt; digest;
</del><ins>+    MD5::Digest digest;
</ins><span class="cx">     md5.checksum(digest);
</span><span class="cx">     char* buf = 0;
</span><span class="cx">     CString actual = CString::newUninitialized(32, buf);
</span><del>-    for (size_t i = 0; i &lt; 16; i++, buf += 2)
-        snprintf(buf, 3, &quot;%02x&quot;, digest.at(i));
</del><ins>+    for (size_t i = 0; i &lt; MD5::hashSize; i++, buf += 2)
+        snprintf(buf, 3, &quot;%02x&quot;, digest[i]);
</ins><span class="cx"> 
</span><span class="cx">     ASSERT_EQ(expected.length(), actual.length());
</span><span class="cx">     ASSERT_STREQ(expected.data(), actual.data());
</span></span></pre></div>
<a id="branchesjsCStackToolsWebKitTestRunnerCMakeListstxt"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/WebKitTestRunner/CMakeLists.txt (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/WebKitTestRunner/CMakeLists.txt        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/WebKitTestRunner/CMakeLists.txt        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -35,6 +35,7 @@
</span><span class="cx">     ${WEBCORE_DIR}/platform/network
</span><span class="cx">     ${WEBCORE_DIR}/platform/text
</span><span class="cx">     ${WEBCORE_DIR}/testing/js
</span><ins>+    ${WEBKIT2_DIR}/Platform/CoreIPC
</ins><span class="cx">     ${WEBKIT2_DIR}/Shared
</span><span class="cx">     ${WEBKIT2_DIR}/Shared/API/c
</span><span class="cx">     ${WEBKIT2_DIR}/Shared/Plugins
</span></span></pre></div>
<a id="branchesjsCStackToolsWebKitTestRunnerInjectedBundleAccessibilityUIElementcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -54,6 +54,13 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // Unsupported methods on various platforms. As they're implemented on other platforms this list should be modified.
</span><ins>+#if (!PLATFORM(GTK) &amp;&amp; !PLATFORM(EFL)) || !HAVE(ACCESSIBILITY)
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::characterAtOffset(int) { return 0; }
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::wordAtOffset(int) { return 0; }
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::lineAtOffset(int) { return 0; }
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::sentenceAtOffset(int) { return 0; }
+#endif
+
</ins><span class="cx"> #if (!PLATFORM(MAC) &amp;&amp; !PLATFORM(GTK) &amp;&amp; !PLATFORM(EFL)) || !HAVE(ACCESSIBILITY)
</span><span class="cx"> AccessibilityUIElement::AccessibilityUIElement(PlatformUIElement) { }
</span><span class="cx"> AccessibilityUIElement::AccessibilityUIElement(const AccessibilityUIElement&amp;) { }
</span></span></pre></div>
<a id="branchesjsCStackToolsWebKitTestRunnerInjectedBundleAccessibilityUIElementh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -201,6 +201,12 @@
</span><span class="cx">     bool attributedStringRangeIsMisspelled(unsigned location, unsigned length);
</span><span class="cx">     unsigned uiElementCountForSearchPredicate(JSContextRef, AccessibilityUIElement* startElement, bool isDirectionNext, JSValueRef searchKey, JSStringRef searchText, bool visibleOnly);
</span><span class="cx">     PassRefPtr&lt;AccessibilityUIElement&gt; uiElementForSearchPredicate(JSContextRef, AccessibilityUIElement* startElement, bool isDirectionNext, JSValueRef searchKey, JSStringRef searchText, bool visibleOnly);
</span><ins>+
+    // Text-specific
+    JSRetainPtr&lt;JSStringRef&gt; characterAtOffset(int offset);
+    JSRetainPtr&lt;JSStringRef&gt; wordAtOffset(int offset);
+    JSRetainPtr&lt;JSStringRef&gt; lineAtOffset(int offset);
+    JSRetainPtr&lt;JSStringRef&gt; sentenceAtOffset(int offset);
</ins><span class="cx">     
</span><span class="cx">     // Table-specific
</span><span class="cx">     PassRefPtr&lt;AccessibilityUIElement&gt; cellForColumnAndRow(unsigned column, unsigned row);
</span></span></pre></div>
<a id="branchesjsCStackToolsWebKitTestRunnerInjectedBundleBindingsAccessibilityUIElementidl"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -114,6 +114,12 @@
</span><span class="cx">     DOMString attributesOfChildren();
</span><span class="cx">     DOMString attributesOfLinkedUIElements();
</span><span class="cx">     DOMString attributesOfDocumentLinks();
</span><ins>+
+    // Text info.
+    DOMString characterAtOffset(int offset);
+    DOMString wordAtOffset(int offset);
+    DOMString lineAtOffset(int offset);
+    DOMString sentenceAtOffset(int offset);
</ins><span class="cx">     
</span><span class="cx">     // Table info.
</span><span class="cx">     DOMString attributesOfColumnHeaders();
</span></span></pre></div>
<a id="branchesjsCStackToolsWebKitTestRunnerInjectedBundleatkAccessibilityUIElementAtkcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -85,6 +85,15 @@
</span><span class="cx">     { &quot;AXUnknownSortDirection&quot;, &quot;unknown&quot; }
</span><span class="cx"> };
</span><span class="cx"> 
</span><ins>+#if ATK_CHECK_VERSION(2, 11, 3)
+const char* landmarkStringBanner = &quot;AXLandmarkBanner&quot;;
+const char* landmarkStringComplementary = &quot;AXLandmarkComplementary&quot;;
+const char* landmarkStringContentinfo = &quot;AXLandmarkContentInfo&quot;;
+const char* landmarkStringMain = &quot;AXLandmarkMain&quot;;
+const char* landmarkStringNavigation = &quot;AXLandmarkNavigation&quot;;
+const char* landmarkStringSearch = &quot;AXLandmarkSearch&quot;;
+#endif
+
</ins><span class="cx"> String jsStringToWTFString(JSStringRef attribute)
</span><span class="cx"> {
</span><span class="cx">     size_t bufferSize = JSStringGetMaximumUTF8CStringSize(attribute);
</span><span class="lines">@@ -267,8 +276,28 @@
</span><span class="cx">     return g_strdup(uString.utf8().data());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-const gchar* roleToString(AtkRole role)
</del><ins>+const gchar* roleToString(AtkObject* object)
</ins><span class="cx"> {
</span><ins>+    AtkRole role = atk_object_get_role(object);
+
+#if ATK_CHECK_VERSION(2, 11, 3)
+    if (role == ATK_ROLE_LANDMARK) {
+        String xmlRolesValue = getAttributeSetValueForId(object, ObjectAttributeType, &quot;xml-roles&quot;);
+        if (equalIgnoringCase(xmlRolesValue, &quot;banner&quot;))
+            return landmarkStringBanner;
+        if (equalIgnoringCase(xmlRolesValue, &quot;complementary&quot;))
+            return landmarkStringComplementary;
+        if (equalIgnoringCase(xmlRolesValue, &quot;contentinfo&quot;))
+            return landmarkStringContentinfo;
+        if (equalIgnoringCase(xmlRolesValue, &quot;main&quot;))
+            return landmarkStringMain;
+        if (equalIgnoringCase(xmlRolesValue, &quot;navigation&quot;))
+            return landmarkStringNavigation;
+        if (equalIgnoringCase(xmlRolesValue, &quot;search&quot;))
+            return landmarkStringSearch;
+    }
+#endif
+
</ins><span class="cx">     switch (role) {
</span><span class="cx">     case ATK_ROLE_ALERT:
</span><span class="cx">         return &quot;AXAlert&quot;;
</span><span class="lines">@@ -347,9 +376,9 @@
</span><span class="cx">     case ATK_ROLE_SCROLL_PANE:
</span><span class="cx">         return &quot;AXScrollArea&quot;;
</span><span class="cx">     case ATK_ROLE_SECTION:
</span><del>-        return &quot;AXDiv&quot;;
</del><ins>+        return &quot;AXSection&quot;;
</ins><span class="cx">     case ATK_ROLE_SEPARATOR:
</span><del>-        return &quot;AXHorizontalRule&quot;;
</del><ins>+        return &quot;AXSeparator&quot;;
</ins><span class="cx">     case ATK_ROLE_SLIDER:
</span><span class="cx">         return &quot;AXSlider&quot;;
</span><span class="cx">     case ATK_ROLE_SPIN_BUTTON:
</span><span class="lines">@@ -400,7 +429,7 @@
</span><span class="cx">     RefPtr&lt;AccessibilityUIElement&gt; parent = element-&gt;parentElement();
</span><span class="cx">     AtkObject* atkParent = parent ? parent-&gt;platformUIElement().get() : nullptr;
</span><span class="cx">     if (atkParent) {
</span><del>-        builder.append(roleToString(atk_object_get_role(atkParent)));
</del><ins>+        builder.append(roleToString(atkParent));
</ins><span class="cx">         const char* parentName = atk_object_get_name(atkParent);
</span><span class="cx">         if (parentName &amp;&amp; g_utf8_strlen(parentName, -1))
</span><span class="cx">             builder.append(String::format(&quot;: %s&quot;, parentName));
</span><span class="lines">@@ -800,11 +829,10 @@
</span><span class="cx">     if (!ATK_IS_OBJECT(m_element.get()))
</span><span class="cx">         return JSStringCreateWithCharacters(0, 0);
</span><span class="cx"> 
</span><del>-    AtkRole role = atk_object_get_role(ATK_OBJECT(m_element.get()));
-    if (!role)
</del><ins>+    if (!atk_object_get_role(ATK_OBJECT(m_element.get())))
</ins><span class="cx">         return JSStringCreateWithCharacters(0, 0);
</span><span class="cx"> 
</span><del>-    GOwnPtr&lt;char&gt; roleStringWithPrefix(g_strdup_printf(&quot;AXRole: %s&quot;, roleToString(role)));
</del><ins>+    GOwnPtr&lt;char&gt; roleStringWithPrefix(g_strdup_printf(&quot;AXRole: %s&quot;, roleToString(ATK_OBJECT(m_element.get()))));
</ins><span class="cx">     return JSStringCreateWithUTF8CString(roleStringWithPrefix.get());
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1147,8 +1175,11 @@
</span><span class="cx"> 
</span><span class="cx"> JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::stringForRange(unsigned location, unsigned length)
</span><span class="cx"> {
</span><del>-    // FIXME: implement
-    return JSStringCreateWithCharacters(0, 0);
</del><ins>+    if (!ATK_IS_TEXT(m_element.get()))
+        return JSStringCreateWithCharacters(0, 0);
+
+    String string = atk_text_get_text(ATK_TEXT(m_element.get()), location, location + length);
+    return JSStringCreateWithUTF8CString(string.utf8().data());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::attributedStringForRange(unsigned location, unsigned length)
</span><span class="lines">@@ -1606,6 +1637,61 @@
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+JSRetainPtr&lt;JSStringRef&gt; stringAtOffset(PlatformUIElement element, AtkTextBoundary boundary, int offset)
+{
+    if (!ATK_IS_TEXT(element.get()))
+        return JSStringCreateWithCharacters(0, 0);
+
+    gint startOffset, endOffset;
+    StringBuilder builder;
+
+#if ATK_CHECK_VERSION(2, 10, 0)
+    AtkTextGranularity granularity;
+    switch (boundary) {
+    case ATK_TEXT_BOUNDARY_CHAR:
+        granularity = ATK_TEXT_GRANULARITY_CHAR;
+        break;
+    case ATK_TEXT_BOUNDARY_WORD_START:
+        granularity = ATK_TEXT_GRANULARITY_WORD;
+        break;
+    case ATK_TEXT_BOUNDARY_LINE_START:
+        granularity = ATK_TEXT_GRANULARITY_LINE;
+        break;
+    case ATK_TEXT_BOUNDARY_SENTENCE_START:
+        granularity = ATK_TEXT_GRANULARITY_SENTENCE;
+        break;
+    default:
+        return JSStringCreateWithCharacters(0, 0);
+    }
+
+    builder.append(atk_text_get_string_at_offset(ATK_TEXT(element.get()), offset, granularity, &amp;startOffset, &amp;endOffset));
+#else
+    builder.append(atk_text_get_text_at_offset(ATK_TEXT(element.get()), offset, boundary, &amp;startOffset, &amp;endOffset));
+#endif
+    builder.append(String::format(&quot;, %i, %i&quot;, startOffset, endOffset));
+    return JSStringCreateWithUTF8CString(builder.toString().utf8().data());
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::characterAtOffset(int offset)
+{
+    return stringAtOffset(m_element, ATK_TEXT_BOUNDARY_CHAR, offset);
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::wordAtOffset(int offset)
+{
+    return stringAtOffset(m_element, ATK_TEXT_BOUNDARY_WORD_START, offset);
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::lineAtOffset(int offset)
+{
+    return stringAtOffset(m_element, ATK_TEXT_BOUNDARY_LINE_START, offset);
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::sentenceAtOffset(int offset)
+{
+    return stringAtOffset(m_element, ATK_TEXT_BOUNDARY_SENTENCE_START, offset);
+}
+
</ins><span class="cx"> } // namespace WTR
</span><span class="cx"> 
</span><span class="cx"> #endif // HAVE(ACCESSIBILITY)
</span></span></pre></div>
<a id="branchesjsCStackToolsWebKitTestRunnerTestControllercpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/WebKitTestRunner/TestController.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/WebKitTestRunner/TestController.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/WebKitTestRunner/TestController.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -111,6 +111,9 @@
</span><span class="cx">     , m_policyDelegatePermissive(false)
</span><span class="cx">     , m_handlesAuthenticationChallenges(false)
</span><span class="cx">     , m_shouldBlockAllPlugins(false)
</span><ins>+    , m_forceComplexText(false)
+    , m_shouldUseAcceleratedDrawing(false)
+    , m_shouldUseRemoteLayerTree(false)
</ins><span class="cx"> {
</span><span class="cx">     initialize(argc, argv);
</span><span class="cx">     controller = this;
</span><span class="lines">@@ -309,6 +312,18 @@
</span><span class="cx">             printSupportedFeatures = true;
</span><span class="cx">             break;
</span><span class="cx">         }
</span><ins>+        if (argument == &quot;--complex-text&quot;) {
+            m_forceComplexText = true;
+            continue;
+        }
+        if (argument == &quot;--accelerated-drawing&quot;) {
+            m_shouldUseAcceleratedDrawing = true;
+            continue;
+        }
+        if (argument == &quot;--remote-layer-tree&quot;) {
+            m_shouldUseRemoteLayerTree = true;
+            continue;
+        }
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx">         // Skip any other arguments that begin with '--'.
</span><span class="lines">@@ -380,10 +395,21 @@
</span><span class="cx">     if (testPluginDirectory())
</span><span class="cx">         WKContextSetAdditionalPluginsDirectory(m_context.get(), testPluginDirectory());
</span><span class="cx"> 
</span><ins>+    if (m_forceComplexText)
+        WKContextSetAlwaysUsesComplexTextCodePath(m_context.get(), true);
+
</ins><span class="cx">     // Some preferences (notably mock scroll bars setting) currently cannot be re-applied to an existing view, so we need to set them now.
</span><span class="cx">     resetPreferencesToConsistentValues();
</span><span class="cx"> 
</span><del>-    createWebViewWithOptions(0);
</del><ins>+    WKRetainPtr&lt;WKMutableDictionaryRef&gt; viewOptions;
+    if (m_shouldUseRemoteLayerTree) {
+        viewOptions = adoptWK(WKMutableDictionaryCreate());
+        WKRetainPtr&lt;WKStringRef&gt; useRemoteLayerTreeKey = adoptWK(WKStringCreateWithUTF8CString(&quot;RemoteLayerTree&quot;));
+        WKRetainPtr&lt;WKBooleanRef&gt; useRemoteLayerTreeValue = adoptWK(WKBooleanCreate(m_shouldUseRemoteLayerTree));
+        WKDictionaryAddItem(viewOptions.get(), useRemoteLayerTreeKey.get(), useRemoteLayerTreeValue.get());
+    }
+
+    createWebViewWithOptions(viewOptions.get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void TestController::createWebViewWithOptions(WKDictionaryRef options)
</span><span class="lines">@@ -554,6 +580,11 @@
</span><span class="cx">     WKPreferencesSetSerifFontFamily(preferences, serifFontFamily);
</span><span class="cx">     WKPreferencesSetScreenFontSubstitutionEnabled(preferences, true);
</span><span class="cx">     WKPreferencesSetAsynchronousSpellCheckingEnabled(preferences, false);
</span><ins>+#if ENABLE(WEB_AUDIO)
+    WKPreferencesSetMediaSourceEnabled(preferences, true);
+#endif
+
+    WKPreferencesSetAcceleratedDrawingEnabled(preferences, m_shouldUseAcceleratedDrawing);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool TestController::resetStateToConsistentValues()
</span></span></pre></div>
<a id="branchesjsCStackToolsWebKitTestRunnerTestControllerh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/WebKitTestRunner/TestController.h (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/WebKitTestRunner/TestController.h        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/WebKitTestRunner/TestController.h        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -66,6 +66,7 @@
</span><span class="cx">     EventSenderProxy* eventSenderProxy() { return m_eventSenderProxy.get(); }
</span><span class="cx"> 
</span><span class="cx">     void ensureViewSupportsOptions(WKDictionaryRef options);
</span><ins>+    bool shouldUseRemoteLayerTree() const { return m_shouldUseRemoteLayerTree; }
</ins><span class="cx">     
</span><span class="cx">     // Runs the run loop until `done` is true or the timeout elapses.
</span><span class="cx">     enum TimeoutDuration { ShortTimeout, LongTimeout, NoTimeout, CustomTimeout };
</span><span class="lines">@@ -218,6 +219,10 @@
</span><span class="cx"> 
</span><span class="cx">     bool m_shouldBlockAllPlugins;
</span><span class="cx"> 
</span><ins>+    bool m_forceComplexText;
+    bool m_shouldUseAcceleratedDrawing;
+    bool m_shouldUseRemoteLayerTree;
+
</ins><span class="cx">     OwnPtr&lt;EventSenderProxy&gt; m_eventSenderProxy;
</span><span class="cx"> 
</span><span class="cx">     WorkQueueManager m_workQueueManager;
</span></span></pre></div>
<a id="branchesjsCStackToolsWebKitTestRunnerTestInvocationcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/WebKitTestRunner/TestInvocation.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/WebKitTestRunner/TestInvocation.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/WebKitTestRunner/TestInvocation.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -151,6 +151,10 @@
</span><span class="cx">     WKRetainPtr&lt;WKBooleanRef&gt; useThreadedScrollingValue = adoptWK(WKBooleanCreate(shouldUseThreadedScrolling(pathOrURL)));
</span><span class="cx">     WKDictionaryAddItem(viewOptions.get(), useThreadedScrollingKey.get(), useThreadedScrollingValue.get());
</span><span class="cx"> 
</span><ins>+    WKRetainPtr&lt;WKStringRef&gt; useRemoteLayerTreeKey = adoptWK(WKStringCreateWithUTF8CString(&quot;RemoteLayerTree&quot;));
+    WKRetainPtr&lt;WKBooleanRef&gt; useRemoteLayerTreeValue = adoptWK(WKBooleanCreate(TestController::shared().shouldUseRemoteLayerTree()));
+    WKDictionaryAddItem(viewOptions.get(), useRemoteLayerTreeKey.get(), useRemoteLayerTreeValue.get());
+
</ins><span class="cx">     TestController::shared().ensureViewSupportsOptions(viewOptions.get());
</span><span class="cx"> #else
</span><span class="cx">     UNUSED_PARAM(pathOrURL);
</span></span></pre></div>
<a id="branchesjsCStackToolsWebKitTestRunnercairoTestInvocationCairocpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/WebKitTestRunner/cairo/TestInvocationCairo.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/WebKitTestRunner/cairo/TestInvocationCairo.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/WebKitTestRunner/cairo/TestInvocationCairo.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -55,7 +55,7 @@
</span><span class="cx">         md5Context.addBytes(bitmapData, 4 * pixelsWide);
</span><span class="cx">         bitmapData += bytesPerRow;
</span><span class="cx">     }
</span><del>-    Vector&lt;uint8_t, 16&gt; hash;
</del><ins>+    MD5::Digest hash;
</ins><span class="cx">     md5Context.checksum(hash);
</span><span class="cx"> 
</span><span class="cx">     snprintf(hashString, 33, &quot;%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x&quot;,
</span></span></pre></div>
<a id="branchesjsCStackToolsWebKitTestRunnercgTestInvocationCGcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/WebKitTestRunner/cg/TestInvocationCG.cpp (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/WebKitTestRunner/cg/TestInvocationCG.cpp        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/WebKitTestRunner/cg/TestInvocationCG.cpp        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -99,11 +99,11 @@
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    Vector&lt;uint8_t, 16&gt; hash;
</del><ins>+    MD5::Digest hash;
</ins><span class="cx">     md5.checksum(hash);
</span><del>-    
</del><ins>+
</ins><span class="cx">     hashString[0] = '\0';
</span><del>-    for (int i = 0; i &lt; 16; i++)
</del><ins>+    for (size_t i = 0; i &lt; MD5::hashSize; i++)
</ins><span class="cx">         snprintf(hashString, 33, &quot;%s%02x&quot;, hashString, hash[i]);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackToolsWebKitTestRunnermacPlatformWebViewMacmm"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/WebKitTestRunner/mac/PlatformWebViewMac.mm (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/WebKitTestRunner/mac/PlatformWebViewMac.mm        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/WebKitTestRunner/mac/PlatformWebViewMac.mm        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -119,6 +119,7 @@
</span><span class="cx">     , m_options(options)
</span><span class="cx"> {
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; useThreadedScrollingKey(AdoptWK, WKStringCreateWithUTF8CString(&quot;ThreadedScrolling&quot;));
</span><ins>+    WKRetainPtr&lt;WKStringRef&gt; useRemoteLayerTreeKey(AdoptWK, WKStringCreateWithUTF8CString(&quot;RemoteLayerTree&quot;));
</ins><span class="cx">     WKTypeRef useThreadedScrollingValue = options ? WKDictionaryGetItemForKey(options, useThreadedScrollingKey.get()) : NULL;
</span><span class="cx">     bool useThreadedScrolling = useThreadedScrollingValue &amp;&amp; WKBooleanGetValue(static_cast&lt;WKBooleanRef&gt;(useThreadedScrollingValue));
</span><span class="cx"> 
</span><span class="lines">@@ -126,6 +127,11 @@
</span><span class="cx">     WKPreferencesRef preferences = WKPageGroupGetPreferences(pageGroupRef);
</span><span class="cx">     WKPreferencesSetThreadedScrollingEnabled(preferences, useThreadedScrolling);
</span><span class="cx"> 
</span><ins>+    // FIXME: Not sure this is the best place for this; maybe we should have API to set this so we can do it from TestController?
+    WKTypeRef useRemoteLayerTreeValue = options ? WKDictionaryGetItemForKey(options, useRemoteLayerTreeKey.get()) : NULL;
+    if (useRemoteLayerTreeValue &amp;&amp; WKBooleanGetValue(static_cast&lt;WKBooleanRef&gt;(useRemoteLayerTreeValue)))
+        [[NSUserDefaults standardUserDefaults] setValue:@YES forKey:@&quot;WebKit2UseRemoteLayerTreeDrawingArea&quot;];
+
</ins><span class="cx">     NSRect rect = NSMakeRect(0, 0, TestController::viewWidth, TestController::viewHeight);
</span><span class="cx">     m_view = [[TestRunnerWKView alloc] initWithFrame:rect contextRef:contextRef pageGroupRef:pageGroupRef relatedToPage:relatedPage useThreadedScrolling:useThreadedScrolling];
</span><span class="cx">     [m_view setWindowOcclusionDetectionEnabled:NO];
</span></span></pre></div>
<a id="branchesjsCStackToolsWinLauncherWinLaunchervcxprojWinLaunchervcxproj"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncher.vcxproj (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncher.vcxproj        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncher.vcxproj        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -59,6 +59,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -67,6 +68,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -75,6 +77,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Production|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -83,6 +86,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -91,6 +95,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -99,6 +104,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span></span></pre></div>
<a id="branchesjsCStackToolsWinLauncherWinLaunchervcxprojWinLauncherLibvcxproj"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLib.vcxproj (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLib.vcxproj        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLib.vcxproj        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -59,6 +59,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -67,6 +68,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -75,6 +77,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Production|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -83,6 +86,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -91,6 +95,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -99,6 +104,7 @@
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
</span></span></pre></div>
<a id="branchesjsCStackToolsgdbwebkitpy"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/gdb/webkit.py (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/gdb/webkit.py        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/gdb/webkit.py        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -115,10 +115,9 @@
</span><span class="cx"> class WTFCStringPrinter(StringPrinter):
</span><span class="cx">     &quot;Print a WTF::CString&quot;
</span><span class="cx">     def to_string(self):
</span><del>-        # The CString holds a buffer, which is a refptr to a WTF::CStringBuffer.
-        data = self.val['m_buffer']['m_ptr']['m_data'].cast(gdb.lookup_type('char').pointer())
</del><ins>+        string = (self.val['m_buffer']['m_ptr'] + 1).cast(gdb.lookup_type('char').pointer())
</ins><span class="cx">         length = self.val['m_buffer']['m_ptr']['m_length']
</span><del>-        return ''.join([chr((data + i).dereference()) for i in range(length)])
</del><ins>+        return lstring_to_string(string, length)
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> class WTFStringImplPrinter(StringPrinter):
</span><span class="lines">@@ -164,7 +163,7 @@
</span><span class="cx">         if self.val['m_length'] == 0:
</span><span class="cx">             return ''
</span><span class="cx"> 
</span><del>-        return WTFStringImplPrinter(self.val['m_value']).to_string()
</del><ins>+        return WTFStringPrinter(self.val['m_value']).to_string()
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> class WebCoreQualifiedNamePrinter(StringPrinter):
</span></span></pre></div>
<a id="branchesjsCStackToolsgtkcommonpy"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/gtk/common.py (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/gtk/common.py        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/gtk/common.py        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -36,7 +36,7 @@
</span><span class="cx">     return os.path.join(*((os.path.join(os.path.dirname(__file__), '..', '..'),) + args))
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-def get_build_path(build_types=('Release', 'Debug')):
</del><ins>+def get_build_path(build_types=('Release', 'Debug'), fatal=True):
</ins><span class="cx">     global build_dir
</span><span class="cx">     if build_dir:
</span><span class="cx">         return build_dir
</span><span class="lines">@@ -76,7 +76,8 @@
</span><span class="cx">         return build_dir
</span><span class="cx"> 
</span><span class="cx">     print('Could not determine build directory.')
</span><del>-    sys.exit(1)
</del><ins>+    if fatal:
+        sys.exit(1)
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> def build_path_for_build_types(build_types, *args):
</span></span></pre></div>
<a id="branchesjsCStackToolsgtkgenerategtkdoc"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/gtk/generate-gtkdoc (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/gtk/generate-gtkdoc        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/gtk/generate-gtkdoc        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -104,9 +104,10 @@
</span><span class="cx">         'ignored_files': glob.glob(src_path('*Private.h')) + \
</span><span class="cx">                          glob.glob(injected_bundle_src_path('*Private.h')) + \
</span><span class="cx">                          glob.glob(src_path('*Client*')) + \
</span><ins>+                         glob.glob(src_path('WebKitAuthenticationDialog.*')) + \
+                         glob.glob(src_path('WebKitBatteryProvider.*')) + \
</ins><span class="cx">                          glob.glob(src_path('WebKitGeolocationProvider.*')) + \
</span><span class="cx">                          glob.glob(src_path('WebKitTextChecker.*')) + \
</span><del>-                         glob.glob(src_path('WebKitAuthenticationDialog.*')) + \
</del><span class="cx">                          glob.glob(src_path('WebKitWebViewBaseAccessible.*')) + \
</span><span class="cx">                          glob.glob(src_path('WebViewBaseInputMethodFilter.*')) + \
</span><span class="cx">                          glob.glob(derived_sources_path('webkit2gtk', 'webkit2', 'WebKitMarshal.*')) + \
</span></span></pre></div>
<a id="branchesjsCStackToolsgtkinstalldependencies"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/gtk/install-dependencies (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/gtk/install-dependencies        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/gtk/install-dependencies        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -55,6 +55,7 @@
</span><span class="cx">         libgl1-mesa-glx \
</span><span class="cx">         libgnutls-dev \
</span><span class="cx">         libgtk2.0-dev \
</span><ins>+        libgtk-3-dev \
</ins><span class="cx">         libgudev-1.0-dev \
</span><span class="cx">         libicu-dev \
</span><span class="cx">         libjpeg8-dev \
</span><span class="lines">@@ -65,6 +66,7 @@
</span><span class="cx">         libpulse-dev \
</span><span class="cx">         librsvg2-dev \
</span><span class="cx">         libsecret-1-dev \
</span><ins>+        libsoup2.4-dev \
</ins><span class="cx">         libsqlite3-dev \
</span><span class="cx">         libtheora-dev \
</span><span class="cx">         libtool \
</span><span class="lines">@@ -116,6 +118,10 @@
</span><span class="cx">         xfonts-utils \
</span><span class="cx">         xtrans-dev \
</span><span class="cx">         xutils-dev
</span><ins>+
+    # These are dependencies necessary for using webkit-patch
+    apt-get install \
+        subversion
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> function installDependenciesWithYum {
</span></span></pre></div>
<a id="branchesjsCStackToolsgtkjhbuildmodules"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/gtk/jhbuild.modules (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/gtk/jhbuild.modules        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/gtk/jhbuild.modules        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -232,9 +232,9 @@
</span><span class="cx">   &lt;autotools id=&quot;atk&quot;
</span><span class="cx">              autogen-sh=&quot;configure&quot;
</span><span class="cx">              autogenargs=&quot;--disable-introspection&quot;&gt;
</span><del>-    &lt;branch module=&quot;pub/GNOME/sources/atk/2.10/atk-2.10.0.tar.xz&quot; version=&quot;2.10.0&quot;
</del><ins>+    &lt;branch module=&quot;pub/GNOME/sources/atk/2.11/atk-2.11.3.tar.xz&quot; version=&quot;2.11.3&quot;
</ins><span class="cx">             repo=&quot;ftp.gnome.org&quot;
</span><del>-            hash=&quot;sha256:636917a5036bc851d8491194645d284798ec118919a828be5e713b6ecc5b50b0&quot;/&gt;
</del><ins>+            hash=&quot;sha256:b3c63668638dbb627a81f4333a00b744c503531d07b168405ef5f27f382a0ae4&quot;/&gt;
</ins><span class="cx">   &lt;/autotools&gt;
</span><span class="cx"> 
</span><span class="cx">   &lt;autotools id=&quot;at-spi2-core&quot; 
</span></span></pre></div>
<a id="branchesjsCStackToolsgtkycm_extra_confpy"></a>
<div class="addfile"><h4>Added: branches/jsCStack/Tools/gtk/ycm_extra_conf.py (0 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/gtk/ycm_extra_conf.py                                (rev 0)
+++ branches/jsCStack/Tools/gtk/ycm_extra_conf.py        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -0,0 +1,151 @@
</span><ins>+#!/usr/bin/env python
+# Copyright (C) 2013 Danilo Cesar Lemes de Paula &lt;danilo.eu@gmail.com&gt;
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+import os
+import re
+import subprocess
+import sys
+
+# It's very likely that this script is a symlink somewhere in the WebKit directory,
+# so we try to find the actual script location so that we can locate the tools
+# directory.
+if os.path.islink(__file__):
+    __tools_directory = os.path.dirname(os.readlink(__file__))
+else:
+    __tools_directory = os.path.dirname(__file__)
+sys.path.insert(0, os.path.abspath(__tools_directory))
+import common
+
+MAKE_TRACE_FILE_NAME = &quot;ycm-make-trace&quot;
+FLAGS_PRECEDING_PATHS = ['-isystem', '-I', '-iquote', '--sysroot=']
+
+
+def transform_relative_paths_to_absolute_paths(arguments, build_path):
+    result = []
+
+    make_next_absolute = False
+    for argument in arguments:
+        if make_next_absolute:
+            make_next_absolute = False
+            if not argument.startswith('/'):
+                argument = os.path.join(build_path, argument)
+        elif flag in FLAGS_PRECEDING_PATHS:
+            # Some flags precede the path in the list. For those we make the
+            # next argument absolute.
+            if argument == flag:
+                make_next_absolute = True
+        else:
+            # Some argument contain the flag and the path together. For these
+            # we parse the argument out of the path.
+            for flag in FLAGS_PRECEDING_PATHS:
+                if argument.startswith(flag):
+                    argument = flag + os.path.join(build_path, argument[len(flag):])
+                    break
+
+        result.append(argument)
+    return result
+
+
+def create_make_trace_file(build_path):
+    print &quot;Creating make trace file for YouCompleteMe, might take a few seconds&quot;
+    os.chdir(build_path)
+    subprocess.call(&quot;make -n -s &gt; %s&quot; % MAKE_TRACE_FILE_NAME, shell=True)
+
+
+def make_trace_file_up_to_date(build_path):
+    trace_file = os.path.join(build_path, MAKE_TRACE_FILE_NAME)
+    if not os.path.isfile(trace_file):
+        return False
+
+    makefile = os.path.join(build_path, 'GNUmakefile')
+    if os.path.getmtime(trace_file) &lt; os.path.getctime(makefile):
+        return False
+
+    return True
+
+
+def ensure_make_trace_file(build_path):
+    if make_trace_file_up_to_date(build_path):
+        return True
+    create_make_trace_file(build_path)
+    return make_trace_file_up_to_date(build_path)
+
+
+def get_compilation_flags_from_build_commandline(command_line, build_path):
+    flags = re.findall(&quot;-[I,D,p,O][\w,\.,/,-]*(?:=\&quot;?\w*\&quot;?)?&quot;, command_line)
+    return transform_relative_paths_to_absolute_paths(flags, build_path)
+
+
+def get_compilation_flags_for_file(build_path, filename):
+    trace_file_path = os.path.join(build_path, MAKE_TRACE_FILE_NAME)
+
+    try:
+        trace_file = open(trace_file_path)
+        lines = trace_file.readlines()
+        trace_file.close()
+    except:
+        print &quot;==== Error reading %s file&quot;, trace_file_path
+        return []
+
+    basename = os.path.basename(filename)
+    for line in lines:
+        if line.find(basename) != -1 and line.find(&quot;CC&quot;) != -1 or line.find(&quot;CXX&quot;) != -1:
+            return get_compilation_flags_from_build_commandline(line, build_path)
+
+    print &quot;Could not find flags for %s&quot; % filename
+    return []
+
+
+def FlagsForFile(filename, **kwargs):
+    &quot;&quot;&quot;This is the main entry point for YCM. Its interface is fixed.
+
+    Args:
+      filename: (String) Path to source file being edited.
+
+    Returns:
+      (Dictionary)
+        'flags': (List of Strings) Command line flags.
+        'do_cache': (Boolean) True if the result should be cached.
+    &quot;&quot;&quot;
+
+    result = {'flags': ['-std=c++11', '-x', 'c++'], 'do_cache': True}
+
+    # Headers can't be built, so we get the source file flags instead.
+    if filename.endswith('.h'):
+        filename = filename[:-2] + &quot;.cpp&quot;
+        if not os.path.exists(filename):
+            return result
+
+        # Force config.h file inclusion, for GLib macros.
+        result['flags'].append(&quot;-includeconfig.h&quot;)
+
+    build_path = common.get_build_path(fatal=False)
+    if not build_path:
+        print &quot;Could not find WebKit build path.&quot;
+        return result
+
+    if not ensure_make_trace_file(build_path):
+        print &quot;Could not create make trace file&quot;
+        return result
+
+    result['flags'].extend(get_compilation_flags_for_file(build_path, filename))
+    return result
+
+if __name__ == &quot;__main__&quot;:
+    import sys
+    if len(sys.argv) &gt;= 2:
+        print FlagsForFile(sys.argv[1])
</ins></span></pre></div>
<a id="branchesjsCStackToolswinrecordmemoryrecordmemoryvcxproj"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/win/record-memory/record-memory.vcxproj (162626 => 162627)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/win/record-memory/record-memory.vcxproj        2014-01-23 18:52:01 UTC (rev 162626)
+++ branches/jsCStack/Tools/win/record-memory/record-memory.vcxproj        2014-01-23 19:12:43 UTC (rev 162627)
</span><span class="lines">@@ -60,6 +60,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;true&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -70,6 +71,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;true&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -80,6 +82,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;true&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -90,6 +93,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;false&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -100,6 +104,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;false&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="lines">@@ -110,6 +115,7 @@
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span><span class="cx">     &lt;UseDebugLibraries&gt;false&lt;/UseDebugLibraries&gt;
</span><span class="cx">     &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
</span><ins>+    &lt;PlatformToolset&gt;v120_xp&lt;/PlatformToolset&gt;
</ins><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot; Label=&quot;Configuration&quot;&gt;
</span><span class="cx">     &lt;ConfigurationType&gt;Application&lt;/ConfigurationType&gt;
</span></span></pre>
</div>
</div>

</body>
</html>