summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--JavaScriptCore/API/JSCallbackConstructor.h2
-rw-r--r--JavaScriptCore/API/JSCallbackFunction.cpp1
-rw-r--r--JavaScriptCore/API/JSCallbackFunction.h2
-rw-r--r--JavaScriptCore/API/JSObjectRef.cpp1
-rw-r--r--JavaScriptCore/Android.mk1
-rw-r--r--JavaScriptCore/ChangeLog1226
-rw-r--r--JavaScriptCore/Configurations/FeatureDefines.xcconfig4
-rw-r--r--JavaScriptCore/GNUmakefile.am11
-rw-r--r--JavaScriptCore/JavaScriptCore.exp13
-rw-r--r--JavaScriptCore/JavaScriptCore.pri11
-rw-r--r--JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def21
-rw-r--r--JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj4
-rw-r--r--JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops2
-rw-r--r--JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj6
-rw-r--r--JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def21
-rw-r--r--JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFCommon.vsprops52
-rw-r--r--JavaScriptCore/JavaScriptCore.vcproj/jsc/jscCommon.vsprops2
-rw-r--r--JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiCommon.vsprops2
-rw-r--r--JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj18
-rw-r--r--JavaScriptCore/assembler/ARMAssembler.cpp21
-rw-r--r--JavaScriptCore/assembler/ARMAssembler.h24
-rw-r--r--JavaScriptCore/assembler/ARMv7Assembler.h1
-rw-r--r--JavaScriptCore/assembler/AbstractMacroAssembler.h10
-rw-r--r--JavaScriptCore/assembler/AssemblerBufferWithConstantPool.h25
-rw-r--r--JavaScriptCore/assembler/MacroAssemblerARM.h30
-rw-r--r--JavaScriptCore/assembler/X86Assembler.h1
-rw-r--r--JavaScriptCore/bytecode/CodeBlock.cpp98
-rw-r--r--JavaScriptCore/bytecode/CodeBlock.h93
-rw-r--r--JavaScriptCore/bytecode/EvalCodeCache.h36
-rw-r--r--JavaScriptCore/bytecode/SamplingTool.cpp2
-rw-r--r--JavaScriptCore/bytecompiler/BytecodeGenerator.cpp50
-rw-r--r--JavaScriptCore/bytecompiler/BytecodeGenerator.h20
-rw-r--r--JavaScriptCore/debugger/Debugger.cpp66
-rw-r--r--JavaScriptCore/debugger/Debugger.h28
-rw-r--r--JavaScriptCore/debugger/DebuggerCallFrame.cpp16
-rw-r--r--JavaScriptCore/interpreter/CachedCall.h2
-rw-r--r--JavaScriptCore/interpreter/CallFrameClosure.h2
-rw-r--r--JavaScriptCore/interpreter/Interpreter.cpp125
-rw-r--r--JavaScriptCore/interpreter/Interpreter.h16
-rw-r--r--JavaScriptCore/jit/JIT.cpp4
-rw-r--r--JavaScriptCore/jit/JIT.h67
-rw-r--r--JavaScriptCore/jit/JITCall.cpp6
-rw-r--r--JavaScriptCore/jit/JITInlineMethods.h33
-rw-r--r--JavaScriptCore/jit/JITOpcodes.cpp34
-rw-r--r--JavaScriptCore/jit/JITPropertyAccess.cpp21
-rw-r--r--JavaScriptCore/jit/JITStubs.cpp46
-rw-r--r--JavaScriptCore/jit/JITStubs.h6
-rw-r--r--JavaScriptCore/parser/Grammar.y486
-rw-r--r--JavaScriptCore/parser/Lexer.cpp101
-rw-r--r--JavaScriptCore/parser/Lexer.h8
-rw-r--r--JavaScriptCore/parser/NodeConstructors.h17
-rw-r--r--JavaScriptCore/parser/Nodes.cpp186
-rw-r--r--JavaScriptCore/parser/Nodes.h154
-rw-r--r--JavaScriptCore/parser/Parser.h63
-rw-r--r--JavaScriptCore/profiler/ProfileGenerator.cpp1
-rw-r--r--JavaScriptCore/profiler/Profiler.cpp23
-rw-r--r--JavaScriptCore/runtime/Arguments.h12
-rw-r--r--JavaScriptCore/runtime/ArrayConstructor.cpp14
-rw-r--r--JavaScriptCore/runtime/ArrayConstructor.h2
-rw-r--r--JavaScriptCore/runtime/ArrayPrototype.cpp12
-rw-r--r--JavaScriptCore/runtime/BooleanObject.h5
-rw-r--r--JavaScriptCore/runtime/BooleanPrototype.cpp4
-rw-r--r--JavaScriptCore/runtime/CallData.h4
-rw-r--r--JavaScriptCore/runtime/Collector.cpp52
-rw-r--r--JavaScriptCore/runtime/CommonIdentifiers.h1
-rw-r--r--JavaScriptCore/runtime/Completion.cpp21
-rw-r--r--JavaScriptCore/runtime/ConstructData.h4
-rw-r--r--JavaScriptCore/runtime/DateConstructor.cpp2
-rw-r--r--JavaScriptCore/runtime/DatePrototype.cpp64
-rw-r--r--JavaScriptCore/runtime/Error.cpp6
-rw-r--r--JavaScriptCore/runtime/Error.h1
-rw-r--r--JavaScriptCore/runtime/ExceptionHelpers.cpp10
-rw-r--r--JavaScriptCore/runtime/Executable.cpp216
-rw-r--r--JavaScriptCore/runtime/Executable.h268
-rw-r--r--JavaScriptCore/runtime/FunctionConstructor.cpp32
-rw-r--r--JavaScriptCore/runtime/FunctionConstructor.h4
-rw-r--r--JavaScriptCore/runtime/FunctionPrototype.cpp15
-rw-r--r--JavaScriptCore/runtime/FunctionPrototype.h2
-rw-r--r--JavaScriptCore/runtime/InternalFunction.h2
-rw-r--r--JavaScriptCore/runtime/JSAPIValueWrapper.h1
-rw-r--r--JavaScriptCore/runtime/JSActivation.cpp14
-rw-r--r--JavaScriptCore/runtime/JSActivation.h10
-rw-r--r--JavaScriptCore/runtime/JSArray.cpp20
-rw-r--r--JavaScriptCore/runtime/JSArray.h73
-rw-r--r--JavaScriptCore/runtime/JSByteArray.cpp2
-rw-r--r--JavaScriptCore/runtime/JSCell.h26
-rw-r--r--JavaScriptCore/runtime/JSFunction.cpp42
-rw-r--r--JavaScriptCore/runtime/JSFunction.h57
-rw-r--r--JavaScriptCore/runtime/JSGlobalData.cpp9
-rw-r--r--JavaScriptCore/runtime/JSGlobalData.h5
-rw-r--r--JavaScriptCore/runtime/JSGlobalObject.cpp10
-rw-r--r--JavaScriptCore/runtime/JSGlobalObject.h5
-rw-r--r--JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp14
-rw-r--r--JavaScriptCore/runtime/JSNumberCell.h2
-rw-r--r--JavaScriptCore/runtime/JSONObject.cpp9
-rw-r--r--JavaScriptCore/runtime/JSONObject.h2
-rw-r--r--JavaScriptCore/runtime/JSObject.cpp31
-rw-r--r--JavaScriptCore/runtime/JSObject.h37
-rw-r--r--JavaScriptCore/runtime/JSString.h2
-rw-r--r--JavaScriptCore/runtime/JSType.h1
-rw-r--r--JavaScriptCore/runtime/JSValue.h2
-rw-r--r--JavaScriptCore/runtime/MarkStack.h21
-rw-r--r--JavaScriptCore/runtime/MarkStackWin.cpp6
-rw-r--r--JavaScriptCore/runtime/MathObject.h2
-rw-r--r--JavaScriptCore/runtime/NumberConstructor.h2
-rw-r--r--JavaScriptCore/runtime/NumberObject.h5
-rw-r--r--JavaScriptCore/runtime/ObjectConstructor.cpp1
-rw-r--r--JavaScriptCore/runtime/PropertySlot.cpp3
-rw-r--r--JavaScriptCore/runtime/RegExpConstructor.cpp3
-rw-r--r--JavaScriptCore/runtime/RegExpConstructor.h2
-rw-r--r--JavaScriptCore/runtime/RegExpObject.h2
-rw-r--r--JavaScriptCore/runtime/RegExpPrototype.cpp13
-rw-r--r--JavaScriptCore/runtime/ScopeChain.cpp2
-rw-r--r--JavaScriptCore/runtime/StringObjectThatMasqueradesAsUndefined.h2
-rw-r--r--JavaScriptCore/runtime/StringPrototype.cpp19
-rw-r--r--JavaScriptCore/runtime/TypeInfo.h3
-rw-r--r--JavaScriptCore/runtime/UString.cpp92
-rw-r--r--JavaScriptCore/runtime/UString.h4
-rw-r--r--JavaScriptCore/wtf/FastMalloc.cpp30
-rw-r--r--JavaScriptCore/wtf/FastMalloc.h42
-rw-r--r--JavaScriptCore/wtf/Platform.h74
-rw-r--r--JavaScriptCore/wtf/PossiblyNull.h59
-rw-r--r--JavaScriptCore/wtf/SegmentedVector.h3
-rw-r--r--JavaScriptCore/wtf/haiku/MainThreadHaiku.cpp1
-rw-r--r--JavaScriptCore/yarr/RegexInterpreter.cpp226
-rw-r--r--WEBKIT_MERGE_REVISION2
-rw-r--r--WebCore/Android.derived.mk741
-rw-r--r--WebCore/Android.mk36
-rw-r--r--WebCore/ChangeLog4246
-rw-r--r--WebCore/Configurations/FeatureDefines.xcconfig5
-rw-r--r--WebCore/DerivedSources.cpp4
-rw-r--r--WebCore/DerivedSources.make11
-rw-r--r--WebCore/ForwardingHeaders/parser/Parser.h4
-rw-r--r--WebCore/ForwardingHeaders/runtime/CollectorHeapIterator.h4
-rw-r--r--WebCore/ForwardingHeaders/wtf/PossiblyNull.h4
-rw-r--r--WebCore/GNUmakefile.am90
-rw-r--r--WebCore/WebCore.gypi18
-rw-r--r--WebCore/WebCore.order1
-rw-r--r--WebCore/WebCore.pro115
-rw-r--r--WebCore/WebCore.vcproj/QTMovieWin.vcproj6
-rw-r--r--WebCore/WebCore.vcproj/WebCore.vcproj306
-rw-r--r--WebCore/WebCore.vcproj/WebCoreCURL.vsprops1
-rw-r--r--WebCore/WebCore.vcproj/WebCoreCommon.vsprops6
-rw-r--r--WebCore/WebCore.vcproj/WebCoreGenerated.vcproj4
-rw-r--r--WebCore/WebCore.vcproj/build-generated-files.sh2
-rw-r--r--WebCore/WebCore.xcodeproj/project.pbxproj154
-rw-r--r--WebCore/WebCorePrefix.h14
-rw-r--r--WebCore/WebCoreSources.bkl9
-rw-r--r--WebCore/accessibility/AXObjectCache.cpp62
-rw-r--r--WebCore/accessibility/AXObjectCache.h19
-rw-r--r--WebCore/accessibility/AccessibilityObject.cpp49
-rw-r--r--WebCore/accessibility/AccessibilityObject.h13
-rw-r--r--WebCore/accessibility/AccessibilityRenderObject.cpp29
-rw-r--r--WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp2
-rw-r--r--WebCore/accessibility/mac/AccessibilityObjectWrapper.mm20
-rw-r--r--WebCore/accessibility/win/AXObjectCacheWin.cpp39
-rw-r--r--WebCore/bindings/js/JSAudioConstructor.cpp1
-rw-r--r--WebCore/bindings/js/JSCSSRuleListCustom.cpp47
-rw-r--r--WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp19
-rw-r--r--WebCore/bindings/js/JSDOMBinding.cpp41
-rw-r--r--WebCore/bindings/js/JSDOMBinding.h3
-rw-r--r--WebCore/bindings/js/JSDOMWindowCustom.cpp11
-rw-r--r--WebCore/bindings/js/JSDesktopNotificationsCustom.cpp90
-rw-r--r--WebCore/bindings/js/JSDocumentCustom.cpp10
-rw-r--r--WebCore/bindings/js/JSElementCustom.cpp16
-rw-r--r--WebCore/bindings/js/JSEventSourceConstructor.cpp91
-rw-r--r--WebCore/bindings/js/JSEventSourceConstructor.h55
-rw-r--r--WebCore/bindings/js/JSEventSourceCustom.cpp89
-rw-r--r--WebCore/bindings/js/JSEventTarget.cpp32
-rw-r--r--WebCore/bindings/js/JSGeolocationCustom.cpp9
-rw-r--r--WebCore/bindings/js/JSHTMLCanvasElementCustom.cpp45
-rw-r--r--WebCore/bindings/js/JSHTMLInputElementCustom.cpp1
-rw-r--r--WebCore/bindings/js/JSHistoryCustom.cpp1
-rw-r--r--WebCore/bindings/js/JSImageConstructor.cpp1
-rw-r--r--WebCore/bindings/js/JSInspectorBackendCustom.cpp185
-rw-r--r--WebCore/bindings/js/JSLazyEventListener.cpp1
-rw-r--r--WebCore/bindings/js/JSLocationCustom.cpp1
-rw-r--r--WebCore/bindings/js/JSMessageChannelConstructor.cpp1
-rw-r--r--WebCore/bindings/js/JSNodeFilterCustom.cpp2
-rw-r--r--WebCore/bindings/js/JSOptionConstructor.cpp1
-rw-r--r--WebCore/bindings/js/JSStyleSheetCustom.cpp9
-rw-r--r--WebCore/bindings/js/JSStyleSheetListCustom.cpp14
-rw-r--r--WebCore/bindings/js/JSWebSocketConstructor.cpp1
-rw-r--r--WebCore/bindings/js/JSWebSocketCustom.cpp1
-rw-r--r--WebCore/bindings/js/JSWorkerConstructor.cpp1
-rw-r--r--WebCore/bindings/js/JSWorkerContextCustom.cpp11
-rw-r--r--WebCore/bindings/js/JSXMLHttpRequestConstructor.cpp1
-rw-r--r--WebCore/bindings/js/JSXMLHttpRequestCustom.cpp4
-rw-r--r--WebCore/bindings/js/JSXSLTProcessorCustom.cpp6
-rw-r--r--WebCore/bindings/js/ScriptControllerHaiku.cpp2
-rw-r--r--WebCore/bindings/js/ScriptObjectQuarantine.cpp6
-rw-r--r--WebCore/bindings/js/ScriptObjectQuarantine.h3
-rw-r--r--WebCore/bindings/js/ScriptValue.cpp7
-rw-r--r--WebCore/bindings/js/ScriptValue.h1
-rw-r--r--WebCore/bindings/scripts/CodeGeneratorJS.pm10
-rw-r--r--WebCore/bindings/scripts/CodeGeneratorV8.pm48
-rw-r--r--WebCore/bindings/v8/ScriptObjectQuarantine.cpp6
-rw-r--r--WebCore/bindings/v8/ScriptObjectQuarantine.h3
-rw-r--r--WebCore/bindings/v8/ScriptValue.h7
-rw-r--r--WebCore/bindings/v8/V8Binding.cpp10
-rw-r--r--WebCore/bindings/v8/custom/V8CustomBinding.h13
-rw-r--r--WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp25
-rw-r--r--WebCore/bindings/v8/custom/V8InspectorBackendCustom.cpp120
-rw-r--r--WebCore/bridge/jni/jni_jsobject.mm7
-rw-r--r--WebCore/bridge/npapi.h8
-rw-r--r--WebCore/bridge/objc/objc_runtime.mm2
-rw-r--r--WebCore/bridge/qt/qt_instance.cpp16
-rw-r--r--WebCore/bridge/qt/qt_instance.h2
-rw-r--r--WebCore/bridge/qt/qt_runtime.cpp11
-rw-r--r--WebCore/bridge/qt/qt_runtime.h2
-rw-r--r--WebCore/bridge/runtime_method.cpp4
-rw-r--r--WebCore/css/CSSCanvasValue.cpp8
-rw-r--r--WebCore/css/CSSImageGeneratorValue.cpp26
-rw-r--r--WebCore/css/CSSImageGeneratorValue.h5
-rw-r--r--WebCore/css/CSSImportRule.cpp19
-rw-r--r--WebCore/css/CSSParser.cpp27
-rw-r--r--WebCore/css/CSSPrimitiveValue.cpp4
-rw-r--r--WebCore/css/CSSPrimitiveValue.h2
-rw-r--r--WebCore/css/CSSPrimitiveValueMappings.h7
-rw-r--r--WebCore/css/CSSRuleList.idl3
-rw-r--r--WebCore/css/CSSSelector.cpp5
-rw-r--r--WebCore/css/CSSSelector.h1
-rw-r--r--WebCore/css/CSSStyleDeclaration.idl3
-rw-r--r--WebCore/css/CSSStyleSelector.cpp118
-rw-r--r--WebCore/css/CSSValueKeywords.in1
-rw-r--r--WebCore/css/StyleSheetList.idl3
-rw-r--r--WebCore/css/WCSSPropertyNames.in4
-rw-r--r--WebCore/css/WCSSValueKeywords.in1
-rw-r--r--WebCore/css/html.css4
-rw-r--r--WebCore/dom/Attr.cpp27
-rw-r--r--WebCore/dom/Attr.h41
-rw-r--r--WebCore/dom/Attribute.cpp6
-rw-r--r--WebCore/dom/CDATASection.cpp17
-rw-r--r--WebCore/dom/CDATASection.h12
-rw-r--r--WebCore/dom/CharacterData.cpp19
-rw-r--r--WebCore/dom/CharacterData.h35
-rw-r--r--WebCore/dom/Comment.cpp23
-rw-r--r--WebCore/dom/Comment.h14
-rw-r--r--WebCore/dom/ContainerNode.cpp19
-rw-r--r--WebCore/dom/ContainerNode.h9
-rw-r--r--WebCore/dom/DocPtr.h114
-rw-r--r--WebCore/dom/Document.cpp55
-rw-r--r--WebCore/dom/Document.h233
-rw-r--r--WebCore/dom/DocumentFragment.cpp18
-rw-r--r--WebCore/dom/DocumentFragment.h7
-rw-r--r--WebCore/dom/DocumentType.cpp14
-rw-r--r--WebCore/dom/DocumentType.h4
-rw-r--r--WebCore/dom/EditingText.cpp25
-rw-r--r--WebCore/dom/EditingText.h13
-rw-r--r--WebCore/dom/Element.cpp4
-rw-r--r--WebCore/dom/Element.h59
-rw-r--r--WebCore/dom/Element.idl1
-rw-r--r--WebCore/dom/EntityReference.cpp11
-rw-r--r--WebCore/dom/EntityReference.h4
-rw-r--r--WebCore/dom/EventNames.h1
-rw-r--r--WebCore/dom/EventTarget.cpp12
-rw-r--r--WebCore/dom/EventTarget.h7
-rw-r--r--WebCore/dom/Node.cpp93
-rw-r--r--WebCore/dom/Node.h49
-rw-r--r--WebCore/dom/Notation.cpp16
-rw-r--r--WebCore/dom/Notation.h17
-rw-r--r--WebCore/dom/ProcessingInstruction.cpp25
-rw-r--r--WebCore/dom/ProcessingInstruction.h39
-rw-r--r--WebCore/dom/Range.cpp2
-rw-r--r--WebCore/dom/StyledElement.cpp22
-rw-r--r--WebCore/dom/Text.cpp80
-rw-r--r--WebCore/dom/Text.h27
-rw-r--r--WebCore/dom/XMLTokenizer.cpp2
-rw-r--r--WebCore/dom/XMLTokenizerLibxml2.cpp4
-rw-r--r--WebCore/dom/XMLTokenizerQt.cpp4
-rwxr-xr-xWebCore/dom/make_names.pl377
-rw-r--r--WebCore/editing/CompositeEditCommand.cpp2
-rw-r--r--WebCore/editing/CreateLinkCommand.cpp2
-rw-r--r--WebCore/editing/DeleteButtonController.cpp6
-rw-r--r--WebCore/editing/EditorCommand.cpp7
-rw-r--r--WebCore/editing/SplitTextNodeCommand.cpp2
-rw-r--r--WebCore/editing/haiku/EditorHaiku.cpp5
-rw-r--r--WebCore/editing/markup.cpp2
-rw-r--r--WebCore/html/CollectionType.h1
-rw-r--r--WebCore/html/HTMLAreaElement.cpp5
-rw-r--r--WebCore/html/HTMLAreaElement.h3
-rw-r--r--WebCore/html/HTMLBodyElement.cpp32
-rw-r--r--WebCore/html/HTMLBodyElement.h2
-rw-r--r--WebCore/html/HTMLBodyElement.idl8
-rw-r--r--WebCore/html/HTMLCanvasElement.h34
-rw-r--r--WebCore/html/HTMLCanvasElement.idl3
-rw-r--r--WebCore/html/HTMLCollection.cpp9
-rw-r--r--WebCore/html/HTMLDataListElement.cpp60
-rw-r--r--WebCore/html/HTMLDataListElement.h55
-rw-r--r--WebCore/html/HTMLDataListElement.idl38
-rw-r--r--WebCore/html/HTMLDocument.cpp4
-rw-r--r--WebCore/html/HTMLDocument.h10
-rw-r--r--WebCore/html/HTMLElement.cpp60
-rw-r--r--WebCore/html/HTMLElement.h9
-rw-r--r--WebCore/html/HTMLEmbedElement.idl12
-rw-r--r--WebCore/html/HTMLFormControlElement.cpp5
-rw-r--r--WebCore/html/HTMLFormControlElement.h1
-rw-r--r--WebCore/html/HTMLFormElement.cpp11
-rw-r--r--WebCore/html/HTMLFormElement.h2
-rw-r--r--WebCore/html/HTMLFrameElement.cpp19
-rw-r--r--WebCore/html/HTMLFrameElement.h7
-rw-r--r--WebCore/html/HTMLFrameElement.idl14
-rw-r--r--WebCore/html/HTMLFrameElementBase.cpp17
-rw-r--r--WebCore/html/HTMLFrameElementBase.h8
-rw-r--r--WebCore/html/HTMLFrameSetElement.cpp32
-rw-r--r--WebCore/html/HTMLFrameSetElement.h2
-rw-r--r--WebCore/html/HTMLFrameSetElement.idl4
-rw-r--r--WebCore/html/HTMLIFrameElement.cpp4
-rw-r--r--WebCore/html/HTMLIFrameElement.idl22
-rw-r--r--WebCore/html/HTMLImageElement.cpp50
-rw-r--r--WebCore/html/HTMLImageElement.h15
-rw-r--r--WebCore/html/HTMLKeygenElement.cpp2
-rw-r--r--WebCore/html/HTMLObjectElement.idl28
-rw-r--r--WebCore/html/HTMLOptionElement.cpp2
-rw-r--r--WebCore/html/HTMLParser.cpp7
-rw-r--r--WebCore/html/HTMLTagNames.in1
-rw-r--r--WebCore/html/HTMLViewSourceDocument.cpp33
-rw-r--r--WebCore/html/HTMLViewSourceDocument.h23
-rw-r--r--WebCore/html/canvas/CanvasRenderingContext2D.cpp11
-rw-r--r--WebCore/html/canvas/CanvasRenderingContext2D.h2
-rw-r--r--WebCore/html/canvas/CanvasRenderingContext2D.idl3
-rw-r--r--WebCore/inspector/InspectorBackend.cpp100
-rw-r--r--WebCore/inspector/InspectorBackend.h24
-rw-r--r--WebCore/inspector/InspectorBackend.idl29
-rw-r--r--WebCore/inspector/InspectorController.cpp85
-rw-r--r--WebCore/inspector/InspectorController.h24
-rw-r--r--WebCore/inspector/InspectorDOMAgent.cpp112
-rw-r--r--WebCore/inspector/InspectorDOMAgent.h17
-rw-r--r--WebCore/inspector/InspectorDOMStorageResource.cpp2
-rw-r--r--WebCore/inspector/InspectorFrontend.cpp68
-rw-r--r--WebCore/inspector/InspectorFrontend.h19
-rw-r--r--WebCore/inspector/JavaScriptDebugServer.cpp61
-rw-r--r--WebCore/inspector/front-end/ConsoleView.js165
-rw-r--r--WebCore/inspector/front-end/CookieItemsView.js329
-rw-r--r--WebCore/inspector/front-end/DOMAgent.js214
-rw-r--r--WebCore/inspector/front-end/DOMStorageItemsView.js17
-rw-r--r--WebCore/inspector/front-end/DataGrid.js11
-rw-r--r--WebCore/inspector/front-end/DatabasesPanel.js89
-rw-r--r--WebCore/inspector/front-end/Drawer.js6
-rw-r--r--WebCore/inspector/front-end/ElementsPanel.js434
-rw-r--r--WebCore/inspector/front-end/ElementsTreeOutline.js49
-rw-r--r--WebCore/inspector/front-end/Images/cookie.pngbin776 -> 0 bytes
-rw-r--r--WebCore/inspector/front-end/InjectedScript.js464
-rw-r--r--WebCore/inspector/front-end/ObjectPropertiesSection.js13
-rw-r--r--WebCore/inspector/front-end/ObjectProxy.js9
-rw-r--r--WebCore/inspector/front-end/Panel.js12
-rw-r--r--WebCore/inspector/front-end/ProfileView.js28
-rw-r--r--WebCore/inspector/front-end/ProfilesPanel.js22
-rw-r--r--WebCore/inspector/front-end/PropertiesSidebarPane.js8
-rw-r--r--WebCore/inspector/front-end/ResourcesPanel.js28
-rw-r--r--WebCore/inspector/front-end/ScriptsPanel.js36
-rw-r--r--WebCore/inspector/front-end/SourceFrame.js6
-rw-r--r--WebCore/inspector/front-end/StatusBarButton.js118
-rw-r--r--WebCore/inspector/front-end/StylesSidebarPane.js152
-rw-r--r--WebCore/inspector/front-end/WebKit.qrc3
-rw-r--r--WebCore/inspector/front-end/inspector.css32
-rw-r--r--WebCore/inspector/front-end/inspector.html2
-rw-r--r--WebCore/inspector/front-end/inspector.js45
-rw-r--r--WebCore/inspector/front-end/treeoutline.js17
-rw-r--r--WebCore/inspector/front-end/utilities.js64
-rw-r--r--WebCore/loader/CachedFont.cpp10
-rw-r--r--WebCore/loader/DocumentLoader.cpp11
-rw-r--r--WebCore/loader/DocumentLoader.h5
-rw-r--r--WebCore/loader/DocumentThreadableLoader.cpp241
-rw-r--r--WebCore/loader/DocumentThreadableLoader.h28
-rw-r--r--WebCore/loader/EmptyClients.h4
-rw-r--r--WebCore/loader/FTPDirectoryDocument.cpp8
-rw-r--r--WebCore/loader/FTPDirectoryDocument.h4
-rw-r--r--WebCore/loader/FrameLoader.cpp36
-rw-r--r--WebCore/loader/FrameLoader.h2
-rw-r--r--WebCore/loader/ImageDocument.h4
-rw-r--r--WebCore/loader/MediaDocument.h13
-rw-r--r--WebCore/loader/PlaceholderDocument.h2
-rw-r--r--WebCore/loader/PluginDocument.h4
-rw-r--r--WebCore/loader/TextDocument.h4
-rw-r--r--WebCore/loader/ThreadableLoader.cpp12
-rw-r--r--WebCore/loader/ThreadableLoader.h32
-rw-r--r--WebCore/loader/WorkerThreadableLoader.cpp20
-rw-r--r--WebCore/loader/WorkerThreadableLoader.h12
-rw-r--r--WebCore/loader/loader.cpp4
-rw-r--r--WebCore/manual-tests/gtk/copy-htmltext.html24
-rw-r--r--WebCore/manual-tests/keyboard_select_elements_with_same_beginning.html29
-rw-r--r--WebCore/manual-tests/wml/select-onpick-event-crash.wml12
-rw-r--r--WebCore/notifications/Notification.cpp234
-rw-r--r--WebCore/notifications/Notification.h118
-rw-r--r--WebCore/notifications/Notification.idl54
-rw-r--r--WebCore/notifications/NotificationCenter.cpp60
-rw-r--r--WebCore/notifications/NotificationCenter.h80
-rw-r--r--WebCore/notifications/NotificationCenter.idl43
-rw-r--r--WebCore/notifications/NotificationContents.h60
-rw-r--r--WebCore/notifications/NotificationPresenter.h80
-rw-r--r--WebCore/page/Chrome.cpp7
-rw-r--r--WebCore/page/Chrome.h7
-rw-r--r--WebCore/page/ChromeClient.h8
-rw-r--r--WebCore/page/DOMWindow.cpp40
-rw-r--r--WebCore/page/DOMWindow.h10
-rw-r--r--WebCore/page/DOMWindow.idl10
-rw-r--r--WebCore/page/EventHandler.cpp8
-rw-r--r--WebCore/page/EventSource.cpp372
-rw-r--r--WebCore/page/EventSource.h146
-rw-r--r--WebCore/page/EventSource.idl65
-rw-r--r--WebCore/page/Geolocation.cpp1
-rw-r--r--WebCore/page/Navigator.cpp20
-rw-r--r--WebCore/page/Navigator.h5
-rw-r--r--WebCore/page/Navigator.idl4
-rw-r--r--WebCore/page/Page.h7
-rw-r--r--WebCore/page/PositionOptions.h2
-rw-r--r--WebCore/page/SecurityOrigin.cpp27
-rw-r--r--WebCore/page/SecurityOrigin.h6
-rw-r--r--WebCore/page/animation/AnimationBase.cpp169
-rw-r--r--WebCore/page/haiku/DragControllerHaiku.cpp5
-rw-r--r--WebCore/page/haiku/EventHandlerHaiku.cpp11
-rw-r--r--WebCore/platform/ContextMenuItem.h4
-rw-r--r--WebCore/platform/Cookie.h60
-rw-r--r--WebCore/platform/CookieJar.h8
-rw-r--r--WebCore/platform/CrossThreadCopier.h4
-rw-r--r--WebCore/platform/Cursor.h5
-rw-r--r--WebCore/platform/DragData.h3
-rw-r--r--WebCore/platform/DragImage.h4
-rw-r--r--WebCore/platform/Pasteboard.h5
-rw-r--r--WebCore/platform/PlatformKeyboardEvent.h8
-rw-r--r--WebCore/platform/PlatformMenuDescription.h4
-rw-r--r--WebCore/platform/PlatformMouseEvent.h8
-rw-r--r--WebCore/platform/PlatformWheelEvent.h8
-rw-r--r--WebCore/platform/PopupMenu.h6
-rw-r--r--WebCore/platform/TreeShared.h15
-rw-r--r--WebCore/platform/Widget.h5
-rw-r--r--WebCore/platform/chromium/PopupMenuChromium.cpp37
-rw-r--r--WebCore/platform/graphics/BitmapImage.h12
-rw-r--r--WebCore/platform/graphics/Color.h9
-rw-r--r--WebCore/platform/graphics/FloatPoint.h9
-rw-r--r--WebCore/platform/graphics/FloatRect.h9
-rw-r--r--WebCore/platform/graphics/FontDescription.h2
-rw-r--r--WebCore/platform/graphics/GraphicsContext.cpp49
-rw-r--r--WebCore/platform/graphics/GraphicsContext.h42
-rw-r--r--WebCore/platform/graphics/GraphicsLayer.cpp3
-rw-r--r--WebCore/platform/graphics/GraphicsLayer.h12
-rw-r--r--WebCore/platform/graphics/GraphicsLayerClient.h7
-rw-r--r--WebCore/platform/graphics/Icon.h2
-rw-r--r--WebCore/platform/graphics/ImageBuffer.h12
-rw-r--r--WebCore/platform/graphics/ImageSource.h6
-rw-r--r--WebCore/platform/graphics/IntPoint.h5
-rw-r--r--WebCore/platform/graphics/IntRect.h5
-rw-r--r--WebCore/platform/graphics/IntSize.h7
-rw-r--r--WebCore/platform/graphics/Path.h3
-rw-r--r--WebCore/platform/graphics/Pattern.h3
-rw-r--r--WebCore/platform/graphics/SimpleFontData.h4
-rw-r--r--WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp172
-rw-r--r--WebCore/platform/graphics/cairo/ImageBufferCairo.cpp69
-rw-r--r--WebCore/platform/graphics/cairo/ImageSourceCairo.cpp (renamed from WebCore/platform/graphics/ImageSource.cpp)61
-rw-r--r--WebCore/platform/graphics/cg/GraphicsContextCG.cpp346
-rw-r--r--WebCore/platform/graphics/cg/ImageBufferCG.cpp61
-rw-r--r--WebCore/platform/graphics/filters/FEColorMatrix.cpp4
-rw-r--r--WebCore/platform/graphics/haiku/ColorHaiku.cpp54
-rw-r--r--WebCore/platform/graphics/haiku/FloatPointHaiku.cpp48
-rw-r--r--WebCore/platform/graphics/haiku/FloatRectHaiku.cpp48
-rw-r--r--WebCore/platform/graphics/haiku/GradientHaiku.cpp53
-rw-r--r--WebCore/platform/graphics/haiku/GraphicsContextHaiku.cpp536
-rw-r--r--WebCore/platform/graphics/haiku/IntPointHaiku.cpp48
-rw-r--r--WebCore/platform/graphics/haiku/IntRectHaiku.cpp48
-rw-r--r--WebCore/platform/graphics/haiku/IntSizeHaiku.cpp48
-rw-r--r--WebCore/platform/graphics/haiku/PathHaiku.cpp161
-rw-r--r--WebCore/platform/graphics/mac/FontMacATSUI.mm8
-rw-r--r--WebCore/platform/graphics/mac/GraphicsLayerCA.h6
-rw-r--r--WebCore/platform/graphics/mac/GraphicsLayerCA.mm27
-rw-r--r--WebCore/platform/graphics/mac/SimpleFontDataMac.mm4
-rw-r--r--WebCore/platform/graphics/qt/GraphicsContextQt.cpp239
-rw-r--r--WebCore/platform/graphics/qt/ImageBufferQt.cpp65
-rw-r--r--WebCore/platform/graphics/skia/ImageBufferSkia.cpp55
-rw-r--r--WebCore/platform/graphics/skia/ImageSourceSkia.cpp238
-rw-r--r--WebCore/platform/graphics/skia/PlatformContextSkia.cpp2
-rw-r--r--WebCore/platform/graphics/wince/ColorWince.cpp38
-rw-r--r--WebCore/platform/graphics/wince/GradientWince.cpp52
-rw-r--r--WebCore/platform/graphics/wince/MediaPlayerPrivateWince.h129
-rw-r--r--WebCore/platform/graphics/wince/MediaPlayerProxy.cpp145
-rw-r--r--WebCore/platform/graphics/wince/MediaPlayerProxy.h70
-rw-r--r--WebCore/platform/graphics/wince/PathWince.cpp163
-rw-r--r--WebCore/platform/graphics/wince/PlatformPathWince.cpp810
-rw-r--r--WebCore/platform/graphics/wince/PlatformPathWince.h178
-rw-r--r--WebCore/platform/graphics/wince/WinceGraphicsExtras.h39
-rw-r--r--WebCore/platform/graphics/wx/ImageBufferWx.cpp15
-rw-r--r--WebCore/platform/graphics/wx/ImageSourceWx.cpp226
-rw-r--r--WebCore/platform/gtk/ClipboardGtk.cpp69
-rw-r--r--WebCore/platform/gtk/ClipboardGtk.h4
-rw-r--r--WebCore/platform/gtk/PasteboardGtk.cpp11
-rw-r--r--WebCore/platform/gtk/PasteboardHelper.h1
-rw-r--r--WebCore/platform/haiku/ClipboardHaiku.cpp36
-rw-r--r--WebCore/platform/haiku/ContextMenuHaiku.cpp40
-rw-r--r--WebCore/platform/haiku/CookieJarHaiku.cpp19
-rw-r--r--WebCore/platform/haiku/DragDataHaiku.cpp7
-rw-r--r--WebCore/platform/haiku/LocalizedStringsHaiku.cpp346
-rw-r--r--WebCore/platform/haiku/LoggingHaiku.cpp48
-rw-r--r--WebCore/platform/haiku/RenderThemeHaiku.cpp178
-rw-r--r--WebCore/platform/haiku/RenderThemeHaiku.h70
-rw-r--r--WebCore/platform/haiku/ScrollbarThemeHaiku.cpp164
-rw-r--r--WebCore/platform/haiku/ScrollbarThemeHaiku.h55
-rw-r--r--WebCore/platform/haiku/SharedBufferHaiku.cpp55
-rw-r--r--WebCore/platform/haiku/TemporaryLinkStubs.cpp58
-rw-r--r--WebCore/platform/image-decoders/ImageDecoder.cpp103
-rw-r--r--WebCore/platform/image-decoders/ImageDecoder.h30
-rw-r--r--WebCore/platform/image-decoders/ico/ICOImageDecoder.cpp17
-rw-r--r--WebCore/platform/image-decoders/jpeg/JPEGImageDecoder.cpp86
-rw-r--r--WebCore/platform/image-decoders/jpeg/JPEGImageDecoder.h11
-rw-r--r--WebCore/platform/image-decoders/png/PNGImageDecoder.cpp36
-rw-r--r--WebCore/platform/mac/CookieJar.mm49
-rw-r--r--WebCore/platform/network/cf/DNSCFNet.cpp27
-rw-r--r--WebCore/platform/network/chromium/CookieJarChromium.cpp13
-rw-r--r--WebCore/platform/network/curl/CookieJarCurl.cpp13
-rw-r--r--WebCore/platform/network/curl/ResourceHandleManager.cpp65
-rw-r--r--WebCore/platform/network/curl/ResourceHandleManager.h2
-rw-r--r--WebCore/platform/network/soup/CookieJarSoup.cpp13
-rw-r--r--WebCore/platform/network/soup/ResourceHandleSoup.cpp63
-rw-r--r--WebCore/platform/network/win/CookieJarCFNetWin.cpp13
-rw-r--r--WebCore/platform/network/win/CookieJarWin.cpp14
-rw-r--r--WebCore/platform/qt/CookieJarQt.cpp13
-rw-r--r--WebCore/platform/qt/FileSystemQt.cpp2
-rw-r--r--WebCore/platform/text/PlatformString.h9
-rw-r--r--WebCore/platform/text/UnicodeRange.h4
-rw-r--r--WebCore/platform/text/haiku/TextBreakIteratorInternalICUHaiku.cpp6
-rw-r--r--WebCore/platform/text/mac/TextCodecMac.cpp4
-rw-r--r--WebCore/platform/win/PopupMenuWin.cpp5
-rw-r--r--WebCore/platform/wince/CursorWince.cpp109
-rw-r--r--WebCore/platform/wince/DragDataWince.cpp90
-rw-r--r--WebCore/platform/wince/DragImageWince.cpp63
-rw-r--r--WebCore/platform/wince/EditorWince.cpp43
-rw-r--r--WebCore/platform/wince/FileChooserWince.cpp60
-rw-r--r--WebCore/platform/wince/FileSystemWince.cpp283
-rw-r--r--WebCore/platform/wince/KURLWince.cpp30
-rw-r--r--WebCore/platform/wince/KeygenWince.cpp101
-rw-r--r--WebCore/platform/wince/MIMETypeRegistryWince.cpp135
-rw-r--r--WebCore/platform/wince/PasteboardWince.cpp315
-rw-r--r--WebCore/platform/wince/SearchPopupMenuWince.cpp53
-rw-r--r--WebCore/platform/wince/SharedTimerWince.cpp130
-rw-r--r--WebCore/platform/wince/SystemTimeWince.cpp39
-rw-r--r--WebCore/plugins/win/PaintHooks.asm50
-rw-r--r--WebCore/plugins/win/PluginViewWin.cpp46
-rw-r--r--WebCore/rendering/HitTestResult.cpp2
-rw-r--r--WebCore/rendering/InlineFlowBox.cpp26
-rw-r--r--WebCore/rendering/MediaControlElements.cpp60
-rw-r--r--WebCore/rendering/RenderBlock.cpp81
-rw-r--r--WebCore/rendering/RenderBlock.h6
-rw-r--r--WebCore/rendering/RenderBox.cpp61
-rw-r--r--WebCore/rendering/RenderBox.h4
-rw-r--r--WebCore/rendering/RenderButton.cpp4
-rw-r--r--WebCore/rendering/RenderFieldset.cpp3
-rw-r--r--WebCore/rendering/RenderFlexibleBox.cpp23
-rw-r--r--WebCore/rendering/RenderHTMLCanvas.cpp7
-rw-r--r--WebCore/rendering/RenderImage.cpp2
-rw-r--r--WebCore/rendering/RenderInline.cpp12
-rw-r--r--WebCore/rendering/RenderLayer.cpp52
-rw-r--r--WebCore/rendering/RenderLayer.h4
-rw-r--r--WebCore/rendering/RenderLayerBacking.cpp134
-rw-r--r--WebCore/rendering/RenderLayerBacking.h26
-rw-r--r--WebCore/rendering/RenderLayerCompositor.cpp24
-rw-r--r--WebCore/rendering/RenderLayerCompositor.h3
-rw-r--r--WebCore/rendering/RenderListItem.h4
-rw-r--r--WebCore/rendering/RenderMarquee.cpp7
-rw-r--r--WebCore/rendering/RenderObject.cpp24
-rw-r--r--WebCore/rendering/RenderObject.h13
-rw-r--r--WebCore/rendering/RenderReplaced.cpp2
-rw-r--r--WebCore/rendering/RenderTable.cpp21
-rw-r--r--WebCore/rendering/RenderText.cpp2
-rw-r--r--WebCore/rendering/RenderTextFragment.cpp4
-rw-r--r--WebCore/rendering/RenderThemeChromiumMac.h1
-rw-r--r--WebCore/rendering/RenderThemeChromiumMac.mm30
-rw-r--r--WebCore/rendering/RenderThemeChromiumSkia.cpp4
-rw-r--r--WebCore/rendering/style/FillLayer.h6
-rw-r--r--WebCore/rendering/style/RenderStyleConstants.h7
-rw-r--r--WebCore/storage/Database.cpp20
-rw-r--r--WebCore/storage/Database.h5
-rw-r--r--WebCore/storage/DatabaseThread.cpp5
-rw-r--r--WebCore/storage/DatabaseThread.h6
-rw-r--r--WebCore/storage/SQLTransaction.cpp42
-rw-r--r--WebCore/storage/SQLTransaction.h3
-rw-r--r--WebCore/storage/SQLTransactionCoordinator.cpp102
-rw-r--r--WebCore/storage/SQLTransactionCoordinator.h56
-rw-r--r--WebCore/storage/Storage.h1
-rw-r--r--WebCore/storage/StorageNamespace.h1
-rw-r--r--WebCore/storage/StorageNamespaceImpl.cpp5
-rw-r--r--WebCore/storage/StorageNamespaceImpl.h1
-rw-r--r--WebCore/svg/SVGColor.cpp4
-rw-r--r--WebCore/svg/SVGColor.h4
-rw-r--r--WebCore/svg/SVGDocument.h10
-rw-r--r--WebCore/svg/SVGElementInstance.cpp5
-rw-r--r--WebCore/svg/SVGElementInstance.h22
-rw-r--r--WebCore/svg/SVGUseElement.cpp14
-rw-r--r--WebCore/svg/graphics/SVGResourceMasker.cpp6
-rw-r--r--WebCore/webcore-wx.bkl1
-rw-r--r--WebCore/wml/WMLAnchorElement.cpp4
-rw-r--r--WebCore/wml/WMLCardElement.cpp2
-rw-r--r--WebCore/wml/WMLDoElement.cpp13
-rw-r--r--WebCore/wml/WMLDocument.cpp4
-rw-r--r--WebCore/wml/WMLDocument.h4
-rw-r--r--WebCore/wml/WMLGoElement.cpp18
-rw-r--r--WebCore/wml/WMLGoElement.h2
-rw-r--r--WebCore/wml/WMLIntrinsicEventHandler.cpp2
-rw-r--r--WebCore/wml/WMLOptionElement.cpp4
-rw-r--r--WebCore/wml/WMLPageState.cpp1
-rw-r--r--WebCore/wml/WMLPageState.h4
-rw-r--r--WebCore/wml/WMLPrevElement.cpp9
-rw-r--r--WebCore/wml/WMLPrevElement.h2
-rw-r--r--WebCore/wml/WMLRefreshElement.cpp11
-rw-r--r--WebCore/wml/WMLRefreshElement.h2
-rw-r--r--WebCore/wml/WMLSelectElement.cpp6
-rw-r--r--WebCore/wml/WMLSelectElement.h3
-rw-r--r--WebCore/wml/WMLTaskElement.h2
-rw-r--r--WebCore/workers/DedicatedWorkerContext.cpp17
-rw-r--r--WebCore/workers/DedicatedWorkerContext.h6
-rw-r--r--WebCore/workers/DedicatedWorkerThread.cpp2
-rw-r--r--WebCore/workers/DefaultSharedWorkerRepository.cpp141
-rw-r--r--WebCore/workers/DefaultSharedWorkerRepository.h28
-rw-r--r--WebCore/workers/SharedWorkerContext.cpp12
-rw-r--r--WebCore/workers/SharedWorkerContext.h5
-rw-r--r--WebCore/workers/SharedWorkerRepository.h8
-rw-r--r--WebCore/workers/SharedWorkerThread.cpp8
-rw-r--r--WebCore/workers/SharedWorkerThread.h4
-rw-r--r--WebCore/workers/Worker.cpp2
-rw-r--r--WebCore/workers/WorkerContext.cpp30
-rw-r--r--WebCore/workers/WorkerContext.h10
-rw-r--r--WebCore/workers/WorkerContext.idl7
-rw-r--r--WebCore/workers/WorkerObjectProxy.h15
-rw-r--r--WebCore/workers/WorkerReportingProxy.h61
-rw-r--r--WebCore/workers/WorkerScriptLoader.cpp17
-rw-r--r--WebCore/workers/WorkerScriptLoader.h4
-rw-r--r--WebCore/workers/WorkerThread.cpp3
-rw-r--r--WebCore/workers/WorkerThread.h15
-rw-r--r--WebCore/xml/XMLHttpRequest.cpp323
-rw-r--r--WebCore/xml/XMLHttpRequest.h20
-rw-r--r--WebCore/xml/XPathNamespace.cpp10
-rw-r--r--WebCore/xml/XPathNamespace.h13
-rw-r--r--WebCore/xml/XSLTProcessor.cpp4
-rwxr-xr-xWebKitTools/Scripts/make-js-test-wrappers175
-rw-r--r--WebKitTools/Scripts/modules/commiters_unittest.py52
633 files changed, 7208 insertions, 22594 deletions
diff --git a/JavaScriptCore/API/JSCallbackConstructor.h b/JavaScriptCore/API/JSCallbackConstructor.h
index 1e28aaf..1f06249 100644
--- a/JavaScriptCore/API/JSCallbackConstructor.h
+++ b/JavaScriptCore/API/JSCallbackConstructor.h
@@ -41,7 +41,7 @@ public:
static PassRefPtr<Structure> createStructure(JSValue proto)
{
- return Structure::create(proto, TypeInfo(ObjectType, ImplementsHasInstance | HasStandardGetOwnPropertySlot | HasDefaultMark));
+ return Structure::create(proto, TypeInfo(ObjectType, ImplementsHasInstance | HasStandardGetOwnPropertySlot));
}
private:
diff --git a/JavaScriptCore/API/JSCallbackFunction.cpp b/JavaScriptCore/API/JSCallbackFunction.cpp
index b7dd768..1b3217b 100644
--- a/JavaScriptCore/API/JSCallbackFunction.cpp
+++ b/JavaScriptCore/API/JSCallbackFunction.cpp
@@ -28,7 +28,6 @@
#include "JSCallbackFunction.h"
#include "APICast.h"
-#include "CodeBlock.h"
#include "JSFunction.h"
#include "FunctionPrototype.h"
#include <runtime/JSGlobalObject.h>
diff --git a/JavaScriptCore/API/JSCallbackFunction.h b/JavaScriptCore/API/JSCallbackFunction.h
index 3a17fa2..7dd87b5 100644
--- a/JavaScriptCore/API/JSCallbackFunction.h
+++ b/JavaScriptCore/API/JSCallbackFunction.h
@@ -41,7 +41,7 @@ public:
// refactor the code so this override isn't necessary
static PassRefPtr<Structure> createStructure(JSValue proto)
{
- return Structure::create(proto, TypeInfo(ObjectType, HasStandardGetOwnPropertySlot | HasDefaultMark));
+ return Structure::create(proto, TypeInfo(ObjectType, HasStandardGetOwnPropertySlot));
}
private:
diff --git a/JavaScriptCore/API/JSObjectRef.cpp b/JavaScriptCore/API/JSObjectRef.cpp
index 06ef578..87d36ec 100644
--- a/JavaScriptCore/API/JSObjectRef.cpp
+++ b/JavaScriptCore/API/JSObjectRef.cpp
@@ -28,7 +28,6 @@
#include "JSObjectRef.h"
#include "APICast.h"
-#include "CodeBlock.h"
#include "DateConstructor.h"
#include "ErrorConstructor.h"
#include "FunctionConstructor.h"
diff --git a/JavaScriptCore/Android.mk b/JavaScriptCore/Android.mk
index c27c703..6973fa1 100644
--- a/JavaScriptCore/Android.mk
+++ b/JavaScriptCore/Android.mk
@@ -108,7 +108,6 @@ LOCAL_SRC_FILES := \
runtime/ErrorInstance.cpp \
runtime/ErrorPrototype.cpp \
runtime/ExceptionHelpers.cpp \
- runtime/Executable.cpp \
runtime/FunctionConstructor.cpp \
runtime/FunctionPrototype.cpp \
runtime/GetterSetter.cpp \
diff --git a/JavaScriptCore/ChangeLog b/JavaScriptCore/ChangeLog
index f67d27d..1afea5f 100644
--- a/JavaScriptCore/ChangeLog
+++ b/JavaScriptCore/ChangeLog
@@ -1,1229 +1,3 @@
-2009-08-17 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by Sam Weinig.
-
- No, silly runtime, AST nodes are not for you.
-
- We still use AST nodes (ScopeNodes, particularly FunctionBodyNodes) within
- the runtime, which means that these nodes must be persisted outside of the
- arena, contain both parser & runtime data, etc. This is all a bit of a mess.
-
- Move functionality into a new FunctionExecutable class.
-
- * API/JSCallbackFunction.cpp:
- * API/JSObjectRef.cpp:
- * JavaScriptCore.exp:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * bytecode/CodeBlock.cpp:
- (JSC::CodeBlock::CodeBlock):
- (JSC::CodeBlock::markAggregate):
- (JSC::CodeBlock::reparseForExceptionInfoIfNecessary):
- (JSC::CodeBlock::lineNumberForBytecodeOffset):
- (JSC::CodeBlock::shrinkToFit):
- * bytecode/CodeBlock.h:
- (JSC::CodeBlock::getBytecodeIndex):
- (JSC::CodeBlock::discardBytecode):
- (JSC::CodeBlock::instructionCount):
- (JSC::CodeBlock::getJITCode):
- (JSC::CodeBlock::executablePool):
- (JSC::CodeBlock::ownerExecutable):
- (JSC::CodeBlock::extractExceptionInfo):
- (JSC::CodeBlock::addFunctionDecl):
- (JSC::CodeBlock::functionDecl):
- (JSC::CodeBlock::numberOfFunctionDecls):
- (JSC::CodeBlock::addFunctionExpr):
- (JSC::CodeBlock::functionExpr):
- (JSC::GlobalCodeBlock::GlobalCodeBlock):
- (JSC::ProgramCodeBlock::ProgramCodeBlock):
- (JSC::EvalCodeBlock::EvalCodeBlock):
- (JSC::FunctionCodeBlock::FunctionCodeBlock):
- (JSC::NativeCodeBlock::NativeCodeBlock):
- * bytecode/EvalCodeCache.h:
- * bytecode/SamplingTool.cpp:
- (JSC::SamplingTool::doRun):
- * bytecompiler/BytecodeGenerator.cpp:
- (JSC::BytecodeGenerator::BytecodeGenerator):
- (JSC::BytecodeGenerator::emitNewFunction):
- (JSC::BytecodeGenerator::emitNewFunctionExpression):
- * bytecompiler/BytecodeGenerator.h:
- * debugger/Debugger.cpp:
- (JSC::Debugger::recompileAllJSFunctions):
- * interpreter/CachedCall.h:
- (JSC::CachedCall::CachedCall):
- * interpreter/CallFrameClosure.h:
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::unwindCallFrame):
- (JSC::Interpreter::throwException):
- (JSC::Interpreter::execute):
- (JSC::Interpreter::prepareForRepeatCall):
- (JSC::Interpreter::debug):
- (JSC::Interpreter::privateExecute):
- (JSC::Interpreter::retrieveLastCaller):
- * interpreter/Interpreter.h:
- * jit/JIT.cpp:
- (JSC::JIT::privateCompile):
- * jit/JIT.h:
- (JSC::JIT::compile):
- * jit/JITOpcodes.cpp:
- (JSC::JIT::privateCompileCTIMachineTrampolines):
- (JSC::JIT::emit_op_new_func):
- (JSC::JIT::emit_op_new_func_exp):
- * jit/JITStubs.cpp:
- (JSC::DEFINE_STUB_FUNCTION):
- * jit/JITStubs.h:
- (JSC::):
- * parser/Nodes.cpp:
- (JSC::FunctionBodyNode::reparseDataIfNecessary):
- * parser/Nodes.h:
- (JSC::EvalNode::partialDestroyData):
- * parser/Parser.h:
- * profiler/ProfileGenerator.cpp:
- * profiler/Profiler.cpp:
- (JSC::Profiler::createCallIdentifier):
- (JSC::createCallIdentifierFromFunctionImp):
- * runtime/Arguments.h:
- (JSC::Arguments::getArgumentsData):
- (JSC::Arguments::Arguments):
- (JSC::JSActivation::copyRegisters):
- * runtime/ArrayPrototype.cpp:
- (JSC::isNumericCompareFunction):
- * runtime/CallData.h:
- (JSC::):
- * runtime/Collector.cpp:
- (JSC::Heap::collect):
- * runtime/ConstructData.h:
- (JSC::):
- * runtime/ExceptionHelpers.cpp:
- (JSC::createUndefinedVariableError):
- (JSC::createInvalidParamError):
- (JSC::createNotAConstructorError):
- (JSC::createNotAFunctionError):
- (JSC::createNotAnObjectError):
- * runtime/Executable.cpp: Added.
- (JSC::EvalExecutable::generateBytecode):
- (JSC::ProgramExecutable::generateBytecode):
- (JSC::FunctionExecutable::generateBytecode):
- (JSC::EvalExecutable::generateJITCode):
- (JSC::ProgramExecutable::generateJITCode):
- (JSC::FunctionExecutable::generateJITCode):
- (JSC::FunctionExecutable::isHostFunction):
- (JSC::FunctionExecutable::markAggregate):
- (JSC::FunctionExecutable::reparseExceptionInfo):
- (JSC::EvalExecutable::reparseExceptionInfo):
- (JSC::FunctionExecutable::recompile):
- (JSC::FunctionExecutable::FunctionExecutable):
- * runtime/Executable.h:
- (JSC::ExecutableBase::~ExecutableBase):
- (JSC::ExecutableBase::ExecutableBase):
- (JSC::ExecutableBase::source):
- (JSC::ExecutableBase::sourceID):
- (JSC::ExecutableBase::lastLine):
- (JSC::ExecutableBase::usesEval):
- (JSC::ExecutableBase::usesArguments):
- (JSC::ExecutableBase::needsActivation):
- (JSC::ExecutableBase::astNode):
- (JSC::ExecutableBase::generatedJITCode):
- (JSC::ExecutableBase::getExecutablePool):
- (JSC::EvalExecutable::EvalExecutable):
- (JSC::EvalExecutable::bytecode):
- (JSC::EvalExecutable::varStack):
- (JSC::EvalExecutable::evalNode):
- (JSC::EvalExecutable::jitCode):
- (JSC::ProgramExecutable::ProgramExecutable):
- (JSC::ProgramExecutable::reparseExceptionInfo):
- (JSC::ProgramExecutable::bytecode):
- (JSC::ProgramExecutable::programNode):
- (JSC::ProgramExecutable::jitCode):
- (JSC::FunctionExecutable::FunctionExecutable):
- (JSC::FunctionExecutable::name):
- (JSC::FunctionExecutable::bytecode):
- (JSC::FunctionExecutable::generatedBytecode):
- (JSC::FunctionExecutable::usesEval):
- (JSC::FunctionExecutable::usesArguments):
- (JSC::FunctionExecutable::parameterCount):
- (JSC::FunctionExecutable::paramString):
- (JSC::FunctionExecutable::isGenerated):
- (JSC::FunctionExecutable::body):
- (JSC::FunctionExecutable::jitCode):
- (JSC::FunctionExecutable::createNativeThunk):
- * runtime/FunctionConstructor.cpp:
- (JSC::constructFunction):
- * runtime/FunctionPrototype.cpp:
- (JSC::functionProtoFuncToString):
- * runtime/JSActivation.cpp:
- (JSC::JSActivation::JSActivation):
- (JSC::JSActivation::markChildren):
- (JSC::JSActivation::isDynamicScope):
- (JSC::JSActivation::argumentsGetter):
- * runtime/JSActivation.h:
- (JSC::JSActivation::JSActivationData::JSActivationData):
- * runtime/JSFunction.cpp:
- (JSC::JSFunction::isHostFunction):
- (JSC::JSFunction::JSFunction):
- (JSC::JSFunction::~JSFunction):
- (JSC::JSFunction::markChildren):
- (JSC::JSFunction::getCallData):
- (JSC::JSFunction::call):
- (JSC::JSFunction::lengthGetter):
- (JSC::JSFunction::getConstructData):
- (JSC::JSFunction::construct):
- * runtime/JSFunction.h:
- (JSC::JSFunction::executable):
- (JSC::FunctionExecutable::make):
- * runtime/JSGlobalData.cpp:
- (JSC::JSGlobalData::JSGlobalData):
- (JSC::JSGlobalData::numericCompareFunction):
- * runtime/JSGlobalData.h:
-
-2009-08-17 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Darin Adler.
-
- Fix 300,000+ leaks seen during the regression tests.
-
- EvalCodeCache::get was heap-allocating an EvalExecutable instance without adopting the initial reference.
- While fixing this we noticed that EvalExecutable was a RefCounted type that was sometimes stack allocated.
- To make this cleaner and to prevent clients from attempting to ref a stack-allocated instance, we move the
- refcounting down to a new CacheableEvalExecutable class that derives from EvalExecutable. EvalCodeCache::get
- now uses CacheableEvalExecutable::create and avoids the leak.
-
- * bytecode/EvalCodeCache.h:
- (JSC::EvalCodeCache::get):
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::callEval):
- * runtime/Executable.h:
- (JSC::CacheableEvalExecutable::create):
- (JSC::CacheableEvalExecutable::CacheableEvalExecutable):
-
-2009-08-17 Oliver Hunt <oliver@apple.com>
-
- RS=Mark Rowe.
-
- REGRESSION (r47292): Prototype.js is broken by ES5 Arguments changes
- https://bugs.webkit.org/show_bug.cgi?id=28341
- <rdar://problem/7145615>
-
- Reverting r47292. Alas Prototype.js breaks with Arguments inheriting
- from Array as ES5 attempted. Prototype.js defines $A in terms of a
- function it places on (among other global objects) the Array prototype,
- thus breaking $A for arrays.
-
- * runtime/Arguments.h:
- (JSC::Arguments::Arguments):
- * runtime/JSGlobalObject.cpp:
- (JSC::JSGlobalObject::reset):
- (JSC::JSGlobalObject::markChildren):
- * runtime/JSGlobalObject.h:
- (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
- * runtime/ObjectPrototype.cpp:
- (JSC::ObjectPrototype::ObjectPrototype):
- * runtime/ObjectPrototype.h:
- * tests/mozilla/ecma_3/Function/arguments-001.js:
-
-2009-08-17 Peter Kasting <pkasting@google.com>
-
- Reviewed by Steve Falkenburg.
-
- https://bugs.webkit.org/show_bug.cgi?id=27323
- Only add Cygwin to the path when it isn't already there. This avoids
- causing problems for people who purposefully have non-Cygwin versions of
- executables like svn in front of the Cygwin ones in their paths.
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
- * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops:
- * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
- * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops:
-
-2009-08-17 Xan Lopez <xlopez@igalia.com>
-
- Reviewed by Mark Rowe.
-
- Fix build with FAST_MALLOC_MATCH_VALIDATION enabled.
-
- * wtf/FastMalloc.cpp:
- (WTF::fastMalloc):
- (WTF::fastCalloc):
- (WTF::fastRealloc):
-
-2009-08-16 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Reviewed by Mark Rowe.
-
- Fix crash on ./ecma_2/RegExp/exec-002.js.
- https://bugs.webkit.org/show_bug.cgi?id=28353
-
- Change the order of freeParenthesesDisjunctionContext and
- popParenthesesDisjunctionContext on all call sites as the pop
- method is accessing backTrack->lastContext which is the context
- that is about to be freed.
-
- * yarr/RegexInterpreter.cpp:
- (JSC::Yarr::Interpreter::parenthesesDoBacktrack):
- (JSC::Yarr::Interpreter::backtrackParentheses):
-
-2009-08-16 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Reviewed by Mark Rowe.
-
- https://bugs.webkit.org/show_bug.cgi?id=28352
-
- Fix coding style violations. Use m_ for C++ class members. Remove
- trailing whitespace on empty lines.
-
- * yarr/RegexInterpreter.cpp:
- (JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::ParenthesesDisjunctionContext):
- (JSC::Yarr::Interpreter::tryConsumeCharacter):
- (JSC::Yarr::Interpreter::tryConsumeBackReference):
- (JSC::Yarr::Interpreter::parenthesesDoBacktrack):
- (JSC::Yarr::Interpreter::backtrackParentheses):
- (JSC::Yarr::ByteCompiler::ByteCompiler):
- (JSC::Yarr::ByteCompiler::compile):
- (JSC::Yarr::ByteCompiler::checkInput):
- (JSC::Yarr::ByteCompiler::assertionBOL):
- (JSC::Yarr::ByteCompiler::assertionEOL):
- (JSC::Yarr::ByteCompiler::assertionWordBoundary):
- (JSC::Yarr::ByteCompiler::atomPatternCharacter):
- (JSC::Yarr::ByteCompiler::atomCharacterClass):
- (JSC::Yarr::ByteCompiler::atomBackReference):
- (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternBegin):
- (JSC::Yarr::ByteCompiler::atomParentheticalAssertionBegin):
- (JSC::Yarr::ByteCompiler::popParenthesesStack):
- (JSC::Yarr::ByteCompiler::closeAlternative):
- (JSC::Yarr::ByteCompiler::closeBodyAlternative):
- (JSC::Yarr::ByteCompiler::atomParenthesesEnd):
- (JSC::Yarr::ByteCompiler::regexBegin):
- (JSC::Yarr::ByteCompiler::alterantiveBodyDisjunction):
- (JSC::Yarr::ByteCompiler::alterantiveDisjunction):
- (JSC::Yarr::ByteCompiler::emitDisjunction):
-
-2009-08-15 Mark Rowe <mrowe@apple.com>
-
- Fix the build with JIT disabled.
-
- * runtime/Arguments.h: Only compile the jitCode method when the JIT is enabled.
- * runtime/Executable.h: Include PrototypeFunction.h so the compiler knows what
- NativeFunctionWrapper is when the JIT is disabled.
-
-2009-08-15 Adam Bergkvist <adam.bergkvist@ericsson.com>
-
- Reviewed by Sam Weinig.
-
- Added ENABLE_EVENTSOURCE flag.
- https://bugs.webkit.org/show_bug.cgi?id=14997
-
- * Configurations/FeatureDefines.xcconfig:
-
-2009-08-14 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by NOBODY (build fix).
-
- * parser/Parser.h:
- (JSC::EvalExecutable::parse):
- (JSC::ProgramExecutable::parse):
- * runtime/Executable.h:
-
-2009-08-14 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Remove AST nodes from use within the Runtime (outside of parsing), stage 1
- https://bugs.webkit.org/show_bug.cgi?id=28330
-
- Remove the EvalNode and ProgramNode from use in the runtime. They still exist
- after this patch, but are hidden behind EvalExecutable and FunctionExecutable,
- and are also still reachable behind CodeBlock::m_ownerNode.
-
- The next step will be to beat back FunctionBodyNode in the same fashion.
- Then remove the usage via CodeBlock, then only construct these nodes only on
- demand during bytecode generation.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * bytecode/CodeBlock.h:
- (JSC::GlobalCodeBlock::GlobalCodeBlock):
- (JSC::GlobalCodeBlock::~GlobalCodeBlock):
- (JSC::ProgramCodeBlock::ProgramCodeBlock):
- (JSC::EvalCodeBlock::EvalCodeBlock):
- (JSC::FunctionCodeBlock::FunctionCodeBlock):
- (JSC::NativeCodeBlock::NativeCodeBlock):
- * bytecode/EvalCodeCache.h:
- (JSC::EvalCodeCache::get):
- * debugger/Debugger.cpp:
- (JSC::evaluateInGlobalCallFrame):
- * debugger/DebuggerCallFrame.cpp:
- (JSC::DebuggerCallFrame::evaluate):
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::callEval):
- (JSC::Interpreter::execute):
- * interpreter/Interpreter.h:
- * parser/Nodes.cpp:
- (JSC::FunctionBodyNode::createNativeThunk):
- (JSC::FunctionBodyNode::generateBytecode):
- (JSC::FunctionBodyNode::bytecodeForExceptionInfoReparse):
- * parser/Parser.h:
- (JSC::Parser::parse):
- (JSC::Parser::reparse):
- (JSC::Parser::parseFunctionFromGlobalCode):
- (JSC::::parse):
- * runtime/Completion.cpp:
- (JSC::checkSyntax):
- (JSC::evaluate):
- * runtime/Error.cpp:
- (JSC::throwError):
- * runtime/Error.h:
- * runtime/Executable.h: Added.
- (JSC::TemplateExecutable::TemplateExecutable):
- (JSC::TemplateExecutable::markAggregate):
- (JSC::TemplateExecutable::sourceURL):
- (JSC::TemplateExecutable::lineNo):
- (JSC::TemplateExecutable::bytecode):
- (JSC::TemplateExecutable::jitCode):
- (JSC::EvalExecutable::EvalExecutable):
- (JSC::ProgramExecutable::ProgramExecutable):
- * runtime/FunctionConstructor.cpp:
- (JSC::constructFunction):
- * runtime/FunctionConstructor.h:
- * runtime/JSGlobalData.cpp:
- (JSC::JSGlobalData::numericCompareFunction):
- * runtime/JSGlobalObject.cpp:
- (JSC::JSGlobalObject::~JSGlobalObject):
- (JSC::JSGlobalObject::markChildren):
- * runtime/JSGlobalObject.h:
- (JSC::JSGlobalObject::codeBlocks):
- * runtime/JSGlobalObjectFunctions.cpp:
- (JSC::globalFuncEval):
-
-2009-08-14 Darin Adler <darin@apple.com>
-
- Reviewed by Sam Weinig.
-
- Rename the confusing isObject(<class>) to inherits(<class>).
- It still works on non-objects, returning false.
-
- * runtime/ArrayConstructor.cpp:
- (JSC::arrayConstructorIsArray): Removed unneeded isObject call
- and updated remaining isObject call to new name, inherits.
-
- * runtime/JSCell.h: Renamed isObject(<class>) to inherits(<class>)
- but more importantly, made it non-virtual (it was already inline)
- so it is now as fast as JSObject::inherits was.
-
- * runtime/JSObject.h: Removed inherits function since the one
- in the base class is fine as-is. Also made various JSCell functions
- that should not be called on JSObject uncallable by making them
- both private and not implemented.
- (JSC::JSCell::inherits): Updated name.
- (JSC::JSValue::inherits): Ditto.
-
- * debugger/Debugger.cpp:
- (JSC::Debugger::recompileAllJSFunctions):
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::unwindCallFrame):
- * runtime/ArrayPrototype.cpp:
- (JSC::arrayProtoFuncToString):
- (JSC::arrayProtoFuncToLocaleString):
- (JSC::arrayProtoFuncConcat):
- * runtime/BooleanPrototype.cpp:
- (JSC::booleanProtoFuncToString):
- (JSC::booleanProtoFuncValueOf):
- * runtime/DateConstructor.cpp:
- (JSC::constructDate):
- * runtime/DatePrototype.cpp:
- (JSC::dateProtoFuncToString):
- (JSC::dateProtoFuncToUTCString):
- (JSC::dateProtoFuncToISOString):
- (JSC::dateProtoFuncToDateString):
- (JSC::dateProtoFuncToTimeString):
- (JSC::dateProtoFuncToLocaleString):
- (JSC::dateProtoFuncToLocaleDateString):
- (JSC::dateProtoFuncToLocaleTimeString):
- (JSC::dateProtoFuncGetTime):
- (JSC::dateProtoFuncGetFullYear):
- (JSC::dateProtoFuncGetUTCFullYear):
- (JSC::dateProtoFuncToGMTString):
- (JSC::dateProtoFuncGetMonth):
- (JSC::dateProtoFuncGetUTCMonth):
- (JSC::dateProtoFuncGetDate):
- (JSC::dateProtoFuncGetUTCDate):
- (JSC::dateProtoFuncGetDay):
- (JSC::dateProtoFuncGetUTCDay):
- (JSC::dateProtoFuncGetHours):
- (JSC::dateProtoFuncGetUTCHours):
- (JSC::dateProtoFuncGetMinutes):
- (JSC::dateProtoFuncGetUTCMinutes):
- (JSC::dateProtoFuncGetSeconds):
- (JSC::dateProtoFuncGetUTCSeconds):
- (JSC::dateProtoFuncGetMilliSeconds):
- (JSC::dateProtoFuncGetUTCMilliseconds):
- (JSC::dateProtoFuncGetTimezoneOffset):
- (JSC::dateProtoFuncSetTime):
- (JSC::setNewValueFromTimeArgs):
- (JSC::setNewValueFromDateArgs):
- (JSC::dateProtoFuncSetYear):
- (JSC::dateProtoFuncGetYear):
- * runtime/FunctionPrototype.cpp:
- (JSC::functionProtoFuncToString):
- * runtime/JSActivation.cpp:
- (JSC::JSActivation::argumentsGetter):
- * runtime/JSValue.h:
- * runtime/RegExpConstructor.cpp:
- (JSC::constructRegExp):
- * runtime/RegExpPrototype.cpp:
- (JSC::regExpProtoFuncTest):
- (JSC::regExpProtoFuncExec):
- (JSC::regExpProtoFuncCompile):
- (JSC::regExpProtoFuncToString):
- * runtime/ScopeChain.cpp:
- (JSC::ScopeChain::localDepth):
- * runtime/StringPrototype.cpp:
- (JSC::stringProtoFuncReplace):
- (JSC::stringProtoFuncToString):
- (JSC::stringProtoFuncMatch):
- (JSC::stringProtoFuncSearch):
- (JSC::stringProtoFuncSplit):
- Updated to new name, inherits, from old name, isObject.
-
-2009-07-31 Harald Fernengel <harald.fernengel@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- Adding QNX as a platform. Currently only tested with Qt.
-
- https://bugs.webkit.org/show_bug.cgi?id=27885
-
- * JavaScriptCore/runtime/Collector.cpp: Added retrieving of stack base
- since QNX doesn't have the pthread _nt functions
- * JavaScriptCore/wtf/Platform.h: Added WTF_PLATFORM_QNX and corresponding
- defines
- * WebCore/bridge/npapi.h: Build fix for missing typedefs on QNX
-
-2009-08-14 Gabor Loki <loki@inf.u-szeged.hu>
-
- Reviewed by Simon Hausmann.
-
- Currently generic ARM and ARMv7 platforms work only with JSVALUE32
- https://bugs.webkit.org/show_bug.cgi?id=28300
-
- * wtf/Platform.h:
-
-2009-08-14 Gabor Loki <loki@inf.u-szeged.hu>
-
- Reviewed by Simon Hausmann.
-
- Enable JIT on ARM for QT by default
- https://bugs.webkit.org/show_bug.cgi?id=28259
-
- * wtf/Platform.h:
-
-2009-08-14 Gabor Loki <loki@inf.u-szeged.hu>
-
- Reviewed by Simon Hausmann.
-
- Enable YARR_JIT on ARM for QT by default
- https://bugs.webkit.org/show_bug.cgi?id=28259
-
- * wtf/Platform.h:
-
-2009-08-14 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Gavin Barraclough.
-
- [ES5] Arguments object should inherit from Array
- https://bugs.webkit.org/show_bug.cgi?id=28298
-
- Make the Arguments object conform to the behaviour specified in ES5.
- The simple portion of this is to make Arguments use Array.prototype
- as its prototype rather than Object.prototype.
-
- The spec then requires us to set instance.constructor to the pristine
- Object constructor, and instance.toString and instance.toLocaleString
- to the pristine versions from Object.prototype. To do this we now
- make the ObjectPrototype constructor return its toString and
- toLocaleString functions (similar to the call and apply functions
- from FunctionPrototype).
-
- Oddly enough this reports itself as a slight win, but given the code
- isn't hit in the tests that claim to have improved I put this down to
- code motion.
-
- * runtime/Arguments.h:
- (JSC::Arguments::Arguments):
- (JSC::Arguments::initializeStandardProperties):
- * runtime/JSGlobalObject.cpp:
- (JSC::JSGlobalObject::reset):
- (JSC::JSGlobalObject::markChildren):
- * runtime/JSGlobalObject.h:
- (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
- (JSC::JSGlobalObject::objectConstructor):
- (JSC::JSGlobalObject::objectToStringFunction):
- (JSC::JSGlobalObject::objectToLocaleStringFunction):
- * runtime/ObjectPrototype.cpp:
- (JSC::ObjectPrototype::ObjectPrototype):
- * runtime/ObjectPrototype.h:
- * tests/mozilla/ecma_3/Function/arguments-001.js:
- Update test to new es5 behaviour
-
-2009-08-14 Oliver Hunt <oliver@apple.com>
-
- Reviewed by NOBODY (Build fix).
-
- Remove MarkStack::drain from the JSC exports file
-
- MarkStack::drain is now marked inline, the including it in the exports file
- produces an ld warning
-
- * JavaScriptCore.exp:
-
-2009-08-13 Sam Weinig <sam@webkit.org>
-
- Reviewed by Oliver Hunt.
-
- Remove accidentally left in debugging statement.
-
- * runtime/JSArray.h:
- (JSC::MarkStack::drain):
-
-2009-08-13 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- [ES5] Implement Array.isArray
- https://bugs.webkit.org/show_bug.cgi?id=28296
-
- Add support for Array.isArray to the Array constructor
-
- * runtime/ArrayConstructor.cpp:
- (JSC::ArrayConstructor::ArrayConstructor):
- (JSC::arrayConstructorIsArray):
- * runtime/ArrayConstructor.h:
- * runtime/CommonIdentifiers.h:
- * runtime/JSArray.h:
- (JSC::MarkStack::drain):
- * runtime/JSGlobalObject.cpp:
- (JSC::JSGlobalObject::reset):
-
-2009-08-13 Oliver Hunt <oliver@apple.com>
-
- Reviewed by NOBODY (Buildfix).
-
- Attempt to fix windows build
-
- * runtime/Collector.cpp:
-
-2009-08-13 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Devirtualise marking
- https://bugs.webkit.org/show_bug.cgi?id=28294
-
- Add a bit to TypeInfo to indicate that an object uses the standard
- JSObject::markChildren method. This allows us to devirtualise marking
- of most objects (though a branch is still needed). We also add a branch
- to identify arrays thus devirtualising marking in that case as well.
-
- In order to make the best use of this devirtualisation I've also reworked
- the MarkStack::drain() logic to make the iteration more efficient.
-
- * API/JSCallbackConstructor.h:
- (JSC::JSCallbackConstructor::createStructure):
- * API/JSCallbackFunction.h:
- (JSC::JSCallbackFunction::createStructure):
- * JavaScriptCore.exp:
- * runtime/BooleanObject.h:
- (JSC::BooleanObject::createStructure):
- * runtime/FunctionPrototype.h:
- (JSC::FunctionPrototype::createStructure):
- * runtime/InternalFunction.h:
- (JSC::InternalFunction::createStructure):
- * runtime/JSAPIValueWrapper.h:
- (JSC::JSAPIValueWrapper::JSAPIValueWrapper):
- * runtime/JSArray.cpp:
- (JSC::JSArray::markChildren):
- * runtime/JSArray.h:
- (JSC::JSArray::markChildrenDirect):
- (JSC::MarkStack::drain):
- * runtime/JSByteArray.cpp:
- (JSC::JSByteArray::createStructure):
- * runtime/JSCell.h:
- (JSC::MarkStack::append):
- * runtime/JSGlobalData.cpp:
- (JSC::JSGlobalData::JSGlobalData):
- * runtime/JSNumberCell.h:
- (JSC::JSNumberCell::createStructure):
- * runtime/JSONObject.h:
- (JSC::JSONObject::createStructure):
- * runtime/JSObject.cpp:
- (JSC::JSObject::markChildren):
- * runtime/JSObject.h:
- (JSC::JSObject::markChildrenDirect):
- (JSC::JSObject::createStructure):
- * runtime/JSString.h:
- (JSC::JSString::createStructure):
- * runtime/JSType.h:
- (JSC::):
- * runtime/MarkStack.h:
- (JSC::MarkStack::MarkStack):
- (JSC::MarkStack::MarkSet::MarkSet):
- (JSC::MarkStack::MarkStackArray::last):
- * runtime/MathObject.h:
- (JSC::MathObject::createStructure):
- * runtime/NumberConstructor.h:
- (JSC::NumberConstructor::createStructure):
- * runtime/NumberObject.h:
- (JSC::NumberObject::createStructure):
- * runtime/RegExpConstructor.h:
- (JSC::RegExpConstructor::createStructure):
- * runtime/RegExpObject.h:
- (JSC::RegExpObject::createStructure):
- * runtime/StringObjectThatMasqueradesAsUndefined.h:
- (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
- * runtime/TypeInfo.h:
- (JSC::TypeInfo::hasDefaultMark):
-
-2009-08-13 Darin Adler <darin@apple.com>
-
- Reviewed by Mark Rowe.
-
- Some small bits of housekeeping.
-
- * JavaScriptCore.xcodeproj/project.pbxproj: Make Parser.h
- project instead of private. Remove JSONObject.lut.h.
-
- * assembler/ARMAssembler.h: Remove unneeded WTF prefix.
- * assembler/AssemblerBufferWithConstantPool.h: Ditto.
- * bytecompiler/BytecodeGenerator.h: Ditto.
-
- * wtf/SegmentedVector.h: Add a "using" statement as we do
- with the other WTF headers.
-
-2009-08-13 Darin Adler <darin@apple.com>
-
- Fix Tiger build.
-
- * parser/Grammar.y: Use a template function so we can compile
- setStatementLocation even if it comes before YYLTYPE is defined.
-
-2009-08-13 Darin Adler <darin@apple.com>
-
- Reviewed by George Staikos.
-
- Too much use of void* in Grammar.y
- https://bugs.webkit.org/show_bug.cgi?id=28287
-
- * parser/Grammar.y: Changed all the helper functions to
- take a JSGlobalData* instead of a void*. A couple formatting
- tweaks that I missed when breaking this into pieces.
-
-2009-08-13 Darin Adler <darin@apple.com>
-
- Reviewed by George Staikos.
-
- Another part of https://bugs.webkit.org/show_bug.cgi?id=28287
-
- * parser/Grammar.y: Reduced and sorted includes. Tweaked comment
- format. Marked a few more functions inline.
-
-2009-08-13 Darin Adler <darin@apple.com>
-
- Reviewed by George Staikos.
-
- Another part of https://bugs.webkit.org/show_bug.cgi?id=28287
-
- * parser/Grammar.y: Pass the number to the PropertyNode instead of
- first turning it into an Identifier.
-
- * parser/NodeConstructors.h:
- (JSC::PropertyNode::PropertyNode): Add an overload that takes a double
- so the code to convert to a string can be here instead of Grammar.y.
- * parser/Nodes.h: Ditto.
-
-2009-08-13 Darin Adler <darin@apple.com>
-
- Reviewed by George Staikos.
-
- Another part of https://bugs.webkit.org/show_bug.cgi?id=28287
-
- * parser/Grammar.y: Eliminate the DBG macro.
-
-2009-08-13 Darin Adler <darin@apple.com>
-
- Reviewed by George Staikos.
-
- Another part of https://bugs.webkit.org/show_bug.cgi?id=28287
-
- * parser/Grammar.y: Eliminate the SET_EXCEPTION_LOCATION macro.
-
-2009-08-13 Darin Adler <darin@apple.com>
-
- Reviewed by George Staikos.
-
- George asked me to break the patch from
- https://bugs.webkit.org/show_bug.cgi?id=28287
- into smaller pieces and land it in stages.
-
- * parser/Grammar.y: Eliminate the LEXER macro.
-
-2009-08-13 Mark Rowe <mrowe@apple.com>
-
- Try some more to fix the Windows build.
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export a new symbol.
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Ditto.
-
-2009-08-13 Mark Rowe <mrowe@apple.com>
-
- Try and fix the Windows build.
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export a new symbol.
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Ditto.
-
-2009-08-13 Darin Adler <darin@apple.com>
-
- Reviewed by David Levin.
-
- JavaScriptCore tweaks to get ready for the parser arena
- https://bugs.webkit.org/show_bug.cgi?id=28243
-
- Eliminate dependencies on Nodes.h outside JavaScriptCore,
- and cut down on them inside JavaScriptCore.
-
- Change regular expression parsing to use identifiers as
- with other strings we parse.
-
- Fix a couple things that are needed to use const Identifier
- more, which will be part of the parser arena work.
-
- * JavaScriptCore.exp: Resorted and updated.
-
- * JavaScriptCore.xcodeproj/project.pbxproj: Changed
- CollectorHeapIterator.h to be project-internal.
-
- * bytecompiler/BytecodeGenerator.cpp:
- (JSC::BytecodeGenerator::emitPushNewScope): Added const.
- * bytecompiler/BytecodeGenerator.h: Ditto.
-
- * debugger/Debugger.cpp:
- (JSC::Debugger::recompileAllJSFunctions): Moved this function
- here from WebCore. Here is better since it uses so many internals.
- Removed unimportant optimization for the no listener case.
- * debugger/Debugger.h: Ditto. Also removed unneeded include
- and tweaked formatting and comments.
-
- * debugger/DebuggerCallFrame.cpp:
- (JSC::DebuggerCallFrame::functionName): Call asFunction instead
- of doing the unchecked static_cast.
- (JSC::DebuggerCallFrame::calculatedFunctionName): Ditto.
-
- * jit/JITStubs.cpp:
- (JSC::op_call_JSFunction): Call isHostFunction on the body rather
- than on the JSFunction.
- (JSC::vm_lazyLinkCall): Ditto.
- (JSC::op_construct_JSConstruct): Ditto.
-
- * parser/Grammar.y: Changed callers to use new scanRegExp with
- out arguments instead of relying on state in the Lexer. And
- callers that just want to skip a regular expression to use
- skipRegExp.
-
- * parser/Lexer.cpp:
- (JSC::Lexer::scanRegExp): Changed to use out arguments, and to
- add a prefix argument so we can add in the "=" character as needed.
- Also rewrote to streamline the logic a bit inspired by suggestions
- by David Levin.
- (JSC::Lexer::skipRegExp): Added. Version of the function above that
- does not actually put the regular expression into a string.
- (JSC::Lexer::clear): Removed code to clear m_pattern and m_flags.
- * parser/Lexer.h: Changed scanRegExp to have out arguments. Added
- skipRegExp. Eliminated pattern, flags, m_pattern, and m_flags.
-
- * parser/NodeConstructors.h:
- (JSC::RegExpNode::RegExpNode): Changed to take const Identifier&.
- * parser/Nodes.cpp:
- (JSC::RegExpNode::emitBytecode): Changed since m_pattern and
- m_flags are now Identifier instead of UString.
- (JSC::FunctionBodyNode::make): Moved this function here instead
- of putting it in the JSFunction.h header.
- * parser/Nodes.h: Changed RegExpNode to use Identifier.
-
- * profiler/Profiler.cpp:
- (JSC::Profiler::createCallIdentifier): Changed to use isHostFunction
- on the body instead of on the JSFunction object.
- * runtime/FunctionPrototype.cpp:
- (JSC::functionProtoFuncToString): Ditto.
-
- * runtime/JSFunction.cpp:
- (JSC::JSFunction::isHostFunction): Moved here from header.
- (JSC::JSFunction::isHostFunctionNonInline): Added.
- (JSC::JSFunction::JSFunction): Removed unneeded initialization of
- m_body to 0.
- (JSC::JSFunction::setBody): Moved here from header.
-
- * runtime/JSFunction.h: Removed unneeded includes. Moved private
- constructor down to the private section. Made virtual functions
- private. Removed unneeded overload of setBody and moved the body
- of the function into the .cpp file. Changed assertions to use
- the non-inline version of isHostFunction.
-
- * runtime/PropertySlot.cpp:
- (JSC::PropertySlot::functionGetter): Use asFunction instead
- of doing the unchecked static_cast.
-
- * wtf/SegmentedVector.h:
- (WTF::SegmentedVector::isEmpty): Added.
-
-2009-08-13 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Darin Adler.
-
- Use the version of operator new that takes a JSGlobalData when allocating FuncDeclNode and FuncExprNode
- from within the grammar to prevent these nodes from being leaked.
-
- * parser/Grammar.y:
-
-2009-08-13 Simon Hausmann <simon.hausmann@nokia.com>
-
- Reviewed by Ariya Hidayat.
-
- Remove the special-case for Qt wrt JSVALUE_32 introduced in
- r46709. It must've been a dependency issue on the bot, as
- after a manual build all the tests pass on amd64 and ia32.
-
- * wtf/Platform.h:
-
-2009-08-12 Gabor Loki <loki@inf.u-szeged.hu>
-
- Reviewed by Gavin Barraclough.
-
- Add optimize call and property access support for ARM JIT.
- https://bugs.webkit.org/show_bug.cgi?id=24986
-
- For tightly coupled sequences the BEGIN_UNINTERRUPTED_SEQUENCE and
- END_UNINTERRUPTED_SEQUENCE macros have been introduced which ensure
- space for instructions and constants of the named sequence. This
- method is vital for those architecture which are using constant pool.
-
- The 'latePatch' method - which was linked to JmpSrc - is replaced with
- a port specific solution (each calls are marked to place their address
- on the constant pool).
-
- * assembler/ARMAssembler.cpp:
- (JSC::ARMAssembler::linkBranch):
- (JSC::ARMAssembler::executableCopy): Add extra align for constant pool.
- * assembler/ARMAssembler.h:
- (JSC::ARMAssembler::JmpSrc::JmpSrc):
- (JSC::ARMAssembler::sizeOfConstantPool):
- (JSC::ARMAssembler::jmp):
- (JSC::ARMAssembler::linkCall):
- * assembler/ARMv7Assembler.h:
- * assembler/AbstractMacroAssembler.h:
- * assembler/AssemblerBufferWithConstantPool.h:
- (JSC::AssemblerBufferWithConstantPool::flushIfNoSpaceFor): Fix the
- computation of the remaining space.
- * assembler/MacroAssemblerARM.h:
- (JSC::MacroAssemblerARM::branch32):
- (JSC::MacroAssemblerARM::nearCall):
- (JSC::MacroAssemblerARM::call):
- (JSC::MacroAssemblerARM::branchPtrWithPatch):
- (JSC::MacroAssemblerARM::ensureSpace):
- (JSC::MacroAssemblerARM::sizeOfConstantPool):
- (JSC::MacroAssemblerARM::prepareCall):
- * assembler/X86Assembler.h:
- * jit/JIT.h:
- * jit/JITCall.cpp:
- (JSC::JIT::compileOpCall):
- * jit/JITInlineMethods.h:
- (JSC::JIT::beginUninterruptedSequence):
- (JSC::JIT::endUninterruptedSequence):
- * jit/JITPropertyAccess.cpp:
- (JSC::JIT::emit_op_method_check):
- (JSC::JIT::compileGetByIdHotPath):
- (JSC::JIT::compileGetByIdSlowCase):
- (JSC::JIT::emit_op_put_by_id):
-
-2009-08-12 Gavin Barraclough <barraclough@apple.com>
-
- Rubber Stamped by Dave Kilzer.
-
- Disable WTF_USE_JSVALUE32_64 on iPhone for now (support not yet added for ARMv7).
-
- * wtf/Platform.h:
-
-2009-08-12 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by Maciej Stachoviak.
-
- Ooops - moved code that had been accidentally added to op_new_func instead of
- op_new_func_exp, to where it shoulds be.
-
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::privateExecute):
- * wtf/Platform.h:
-
-2009-08-12 Ada Chan <adachan@apple.com>
-
- Added workaround for the limitation that VirtualFree with MEM_RELEASE
- can only accept the base address returned by VirtualAlloc when the region
- was reserved and it can only free the entire region, and not a part of it.
-
- Reviewed by Oliver Hunt.
-
- * runtime/MarkStack.h:
- (JSC::MarkStack::MarkStackArray::shrinkAllocation):
- * runtime/MarkStackWin.cpp:
- (JSC::MarkStack::releaseStack):
-
-2009-08-12 Balazs Kelemen <kelemen.balazs.3@stud.u-szeged.hu>
-
- Reviewed by Ariya Hidayat.
-
- Build fix: use std::numeric_limits<long long>::min() instead of LLONG_MIN
- since LLONG_MIN is not defined in standard c++.
-
- * runtime/UString.cpp:
- (JSC::UString::from):
-
-2009-08-12 Benjamin Otte <otte@gnome.org>
-
- Reviewed by Jan Alonzo.
-
- Buildfix for Gtk platforms debug builds.
-
- * GNUmakefile.am: Choose MarkStackPosix.cpp or MarkStackWin.cpp
- depending on platform.
-
-2009-08-12 Simon Hausmann <simon.hausmann@nokia.com>
-
- Prospective build fix for Mac and 32-bit Windows.
-
- * runtime/UString.cpp: Include wtf/StringExtras.h for snprintf.
- (JSC::UString::from): Use %lld instead of %I64d for snprintf
- on non-windows platforms.
-
-2009-08-12 Prasanth Ullattil <prasanth.ullattil@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- Fix compile error on 64Bit Windows, when UString::from
- is called with an intptr_t.
-
- Added new UString::From overload with long long parameter.
-
- Thanks to Holger for the long long idea.
-
- * runtime/UString.cpp:
- (JSC::UString::from):
- * runtime/UString.h:
-
-2009-08-11 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Mark Rowe.
-
- Minor style fixes.
-
- * runtime/UString.h:
- (JSC::UString::Rep::createEmptyBuffer):
- * wtf/FastMalloc.h:
- (WTF::TryMallocReturnValue::getValue):
-
-2009-08-11 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Gavin Barraclough.
-
- Make it harder to misuse try* allocation routines
- https://bugs.webkit.org/show_bug.cgi?id=27469
-
- Jump through a few hoops to make it much harder to accidentally
- miss null-checking of values returned by the try-* allocation
- routines.
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * runtime/JSArray.cpp:
- (JSC::JSArray::putSlowCase):
- (JSC::JSArray::increaseVectorLength):
- * runtime/StringPrototype.cpp:
- (JSC::stringProtoFuncFontsize):
- (JSC::stringProtoFuncLink):
- * runtime/UString.cpp:
- (JSC::allocChars):
- (JSC::reallocChars):
- (JSC::expandCapacity):
- (JSC::UString::Rep::reserveCapacity):
- (JSC::UString::expandPreCapacity):
- (JSC::createRep):
- (JSC::concatenate):
- (JSC::UString::spliceSubstringsWithSeparators):
- (JSC::UString::replaceRange):
- (JSC::UString::append):
- (JSC::UString::operator=):
- * runtime/UString.h:
- (JSC::UString::Rep::createEmptyBuffer):
- * wtf/FastMalloc.cpp:
- (WTF::tryFastZeroedMalloc):
- (WTF::tryFastMalloc):
- (WTF::tryFastCalloc):
- (WTF::tryFastRealloc):
- (WTF::TCMallocStats::tryFastMalloc):
- (WTF::TCMallocStats::tryFastCalloc):
- (WTF::TCMallocStats::tryFastRealloc):
- * wtf/FastMalloc.h:
- (WTF::TryMallocReturnValue::TryMallocReturnValue):
- (WTF::TryMallocReturnValue::~TryMallocReturnValue):
- (WTF::TryMallocReturnValue::operator PossiblyNull<T>):
- (WTF::TryMallocReturnValue::getValue):
- * wtf/Platform.h:
- * wtf/PossiblyNull.h: Added.
- (WTF::PossiblyNull::PossiblyNull):
- (WTF::PossiblyNull::~PossiblyNull):
- (WTF::::getValue):
-
-2009-08-11 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by NOBODY (build fix part deux).
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
-
-2009-08-11 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by NOBODY (build fix).
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
-
-2009-08-11 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Restrict use of FuncDeclNode & FuncExprNode to the parser.
- https://bugs.webkit.org/show_bug.cgi?id=28209
-
- These objects were also being referenced from the CodeBlock. By changing this
- to just retain pointers to FunctionBodyNodes these classes can be restricted to
- use during parsing.
-
- No performance impact (or sub-percent progression).
-
- * JavaScriptCore.exp:
- Update symbols.
-
- * bytecode/CodeBlock.cpp:
- (JSC::CodeBlock::mark):
- (JSC::CodeBlock::reparseForExceptionInfoIfNecessary):
- (JSC::CodeBlock::shrinkToFit):
- * bytecode/CodeBlock.h:
- (JSC::CodeBlock::addFunction):
- (JSC::CodeBlock::function):
- Unify m_functions & m_functionExpressions into a single Vector<RefPtr<FuncExprNode> >.
-
- * bytecompiler/BytecodeGenerator.cpp:
- (JSC::BytecodeGenerator::BytecodeGenerator):
- (JSC::BytecodeGenerator::addConstant):
- (JSC::BytecodeGenerator::emitNewFunction):
- (JSC::BytecodeGenerator::emitNewFunctionExpression):
- * bytecompiler/BytecodeGenerator.h:
- FunctionStacks now contain FunctionBodyNodes not FuncDeclNodes.
-
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::execute):
- (JSC::Interpreter::privateExecute):
- Update to reflect chnages in CodeBlock.
-
- * jit/JITOpcodes.cpp:
- (JSC::JIT::emit_op_new_func_exp):
- * jit/JITStubs.cpp:
- (JSC::DEFINE_STUB_FUNCTION):
- * jit/JITStubs.h:
- (JSC::):
- Update to reflect chnages in CodeBlock.
-
- * parser/Grammar.y:
- FunctionStacks now contain FunctionBodyNodes not FuncDeclNodes.
-
- * parser/NodeConstructors.h:
- (JSC::FuncExprNode::FuncExprNode):
- (JSC::FuncDeclNode::FuncDeclNode):
- * parser/Nodes.cpp:
- (JSC::ScopeNodeData::mark):
- (JSC::FunctionBodyNode::finishParsing):
- * parser/Nodes.h:
- (JSC::FunctionBodyNode::ident):
- Move m_ident & make methods from FuncDeclNode & FuncExprNode to FunctionBodyNode.
-
- * runtime/JSFunction.h:
- (JSC::FunctionBodyNode::make):
- Make this method inline (was FuncDeclNode::makeFunction).
-
-2009-08-11 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Gavin Barraclough.
-
- Native JSON.stringify does not omit functions
- https://bugs.webkit.org/show_bug.cgi?id=28117
-
- Objects that are callable should be treated as undefined when
- serialising to JSON.
-
- * runtime/JSONObject.cpp:
- (JSC::Stringifier::appendStringifiedValue):
-
-2009-08-11 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Geoff Garen.
-
- REGRESSION: Hang/crash in BytecodeGenerator::constRegisterFor loading simple page
- https://bugs.webkit.org/show_bug.cgi?id=28169
-
- Handle the case where someone has attempted to shadow a property
- on the global object with a constant.
-
- * bytecompiler/BytecodeGenerator.cpp:
- (JSC::BytecodeGenerator::constRegisterFor):
- * parser/Nodes.cpp:
- (JSC::ConstDeclNode::emitCodeSingle):
-
-2009-08-11 John Gregg <johnnyg@google.com>
-
- Reviewed by Maciej Stachowiak.
-
- Desktop Notifications API
- https://bugs.webkit.org/show_bug.cgi?id=25463
-
- Adds ENABLE_NOTIFICATION flag.
-
- * Configurations/FeatureDefines.xcconfig:
- * wtf/Platform.h:
-
-2009-08-11 Maxime Simon <simon.maxime@gmail.com>
-
- Reviewed by Eric Seidel.
-
- Modifications on JavaScriptCore to allow Haiku port.
- https://bugs.webkit.org/show_bug.cgi?id=28121
-
- * runtime/Collector.cpp: Haiku doesn't have sys/mman.h, using OS.h instead.
- (JSC::currentThreadStackBase): Haiku uses its own threading system.
- * wtf/Platform.h: Defining all Haiku platform values.
- * wtf/haiku/MainThreadHaiku.cpp: Adding a missing header (NotImplemented.h).
-
-2009-08-11 Jessie Berlin <jberlin@apple.com>
-
- Reviewed by Adam Roben.
-
- Fix windows build.
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
-
-2009-08-11 Csaba Osztrogonac <oszi@inf.u-szeged.hu>
-
- Reviewed by Tor Arne Vestbø.
-
- Buildfix for Qt-win platforms.
-
- * JavaScriptCore.pri: Choose MarkStackPosix.cpp or MarkStackWin.cpp depend on platform.
-
2009-08-10 Oliver Hunt <oliver@apple.com>
Reviewed by NOBODY (And another build fix).
diff --git a/JavaScriptCore/Configurations/FeatureDefines.xcconfig b/JavaScriptCore/Configurations/FeatureDefines.xcconfig
index d4ec563..10328e8 100644
--- a/JavaScriptCore/Configurations/FeatureDefines.xcconfig
+++ b/JavaScriptCore/Configurations/FeatureDefines.xcconfig
@@ -36,12 +36,10 @@ ENABLE_CHANNEL_MESSAGING = ENABLE_CHANNEL_MESSAGING;
ENABLE_DATABASE = ENABLE_DATABASE;
ENABLE_DATAGRID = ENABLE_DATAGRID;
ENABLE_DOM_STORAGE = ENABLE_DOM_STORAGE;
-ENABLE_EVENTSOURCE = ENABLE_EVENTSOURCE;
ENABLE_FILTERS = ;
ENABLE_GEOLOCATION = ;
ENABLE_ICONDATABASE = ENABLE_ICONDATABASE;
ENABLE_JAVASCRIPT_DEBUGGER = ENABLE_JAVASCRIPT_DEBUGGER;
-ENABLE_NOTIFICATIONS = ;
ENABLE_OFFLINE_WEB_APPLICATIONS = ENABLE_OFFLINE_WEB_APPLICATIONS;
ENABLE_RUBY = ENABLE_RUBY;
ENABLE_SHARED_WORKERS = ;
@@ -59,4 +57,4 @@ ENABLE_WORKERS = ENABLE_WORKERS;
ENABLE_XPATH = ENABLE_XPATH;
ENABLE_XSLT = ENABLE_XSLT;
-FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_DATABASE) $(ENABLE_DATAGRID) $(ENABLE_DOM_STORAGE) $(ENABLE_EVENTSOURCE) $(ENABLE_FILTERS) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_JAVASCRIPT_DEBUGGER) $(ENABLE_NOTIFICATIONS) $(ENABLE_OFFLINE_WEB_APPLICATIONS) $(ENABLE_RUBY) $(ENABLE_SHARED_WORKERS) $(ENABLE_SVG) $(ENABLE_SVG_ANIMATION) $(ENABLE_SVG_AS_IMAGE) $(ENABLE_SVG_DOM_OBJC_BINDINGS) $(ENABLE_SVG_FONTS) $(ENABLE_SVG_FOREIGN_OBJECT) $(ENABLE_SVG_USE) $(ENABLE_VIDEO) $(ENABLE_WEB_SOCKETS) $(ENABLE_WML) $(ENABLE_WORKERS) $(ENABLE_XPATH) $(ENABLE_XSLT);
+FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_DATABASE) $(ENABLE_DATAGRID) $(ENABLE_DOM_STORAGE) $(ENABLE_FILTERS) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_JAVASCRIPT_DEBUGGER) $(ENABLE_OFFLINE_WEB_APPLICATIONS) $(ENABLE_RUBY) $(ENABLE_SHARED_WORKERS) $(ENABLE_SVG) $(ENABLE_SVG_ANIMATION) $(ENABLE_SVG_AS_IMAGE) $(ENABLE_SVG_DOM_OBJC_BINDINGS) $(ENABLE_SVG_FONTS) $(ENABLE_SVG_FOREIGN_OBJECT) $(ENABLE_SVG_USE) $(ENABLE_VIDEO) $(ENABLE_WEB_SOCKETS) $(ENABLE_WML) $(ENABLE_WORKERS) $(ENABLE_XPATH) $(ENABLE_XSLT);
diff --git a/JavaScriptCore/GNUmakefile.am b/JavaScriptCore/GNUmakefile.am
index b20c0cd..6b4dc6d 100644
--- a/JavaScriptCore/GNUmakefile.am
+++ b/JavaScriptCore/GNUmakefile.am
@@ -193,6 +193,7 @@ javascriptcore_sources += \
JavaScriptCore/runtime/LiteralParser.h \
JavaScriptCore/runtime/MarkStack.cpp \
JavaScriptCore/runtime/MarkStack.h \
+ JavaScriptCore/runtime/MarkStackPosix.cpp \
JavaScriptCore/runtime/SmallStrings.cpp \
JavaScriptCore/runtime/SmallStrings.h \
JavaScriptCore/runtime/Structure.cpp \
@@ -287,12 +288,10 @@ javascriptcore_sources += \
if TARGET_WIN32
javascriptcore_sources += \
JavaScriptCore/wtf/ThreadSpecificWin.cpp \
- JavaScriptCore/jit/ExecutableAllocatorWin.cpp \
- JavaScriptCore/runtime/MarkStackWin.cpp
+ JavaScriptCore/jit/ExecutableAllocatorWin.cpp
else
javascriptcore_sources += \
- JavaScriptCore/jit/ExecutableAllocatorPosix.cpp \
- JavaScriptCore/runtime/MarkStackPosix.cpp
+ JavaScriptCore/jit/ExecutableAllocatorPosix.cpp
endif
# ----
@@ -394,7 +393,6 @@ javascriptcore_sources += \
JavaScriptCore/runtime/ErrorInstance.h \
JavaScriptCore/runtime/ErrorPrototype.cpp \
JavaScriptCore/runtime/ErrorPrototype.h \
- JavaScriptCore/runtime/Executable.cpp \
JavaScriptCore/runtime/FunctionConstructor.cpp \
JavaScriptCore/runtime/FunctionConstructor.h \
JavaScriptCore/runtime/FunctionPrototype.cpp \
@@ -441,6 +439,9 @@ javascriptcore_sources += \
JavaScriptCore/runtime/JSWrapperObject.h \
JavaScriptCore/runtime/Lookup.cpp \
JavaScriptCore/runtime/Lookup.h \
+ JavaScriptCore/runtime/MarkStack.cpp \
+ JavaScriptCore/runtime/MarkStack.h \
+ JavaScriptCore/runtime/MarkStackWin.cpp \
JavaScriptCore/runtime/MathObject.cpp \
JavaScriptCore/runtime/MathObject.h \
JavaScriptCore/runtime/NativeErrorConstructor.cpp \
diff --git a/JavaScriptCore/JavaScriptCore.exp b/JavaScriptCore/JavaScriptCore.exp
index 8351f83..3a2acd7 100644
--- a/JavaScriptCore/JavaScriptCore.exp
+++ b/JavaScriptCore/JavaScriptCore.exp
@@ -95,6 +95,7 @@ __ZN3JSC10Identifier24checkSameIdentifierTableEPNS_12JSGlobalDataEPNS_7UString3R
__ZN3JSC10Identifier24checkSameIdentifierTableEPNS_9ExecStateEPNS_7UString3RepE
__ZN3JSC10Identifier3addEPNS_9ExecStateEPKc
__ZN3JSC10Identifier5equalEPKNS_7UString3RepEPKc
+__ZN3JSC10JSFunction4infoE
__ZN3JSC10JSFunctionC1EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEiRKNS_10IdentifierEPFNS_7JSValueES2_PNS_8JSObjectESA_RKNS_7ArgListEE
__ZN3JSC10throwErrorEPNS_9ExecStateENS_9ErrorTypeE
__ZN3JSC10throwErrorEPNS_9ExecStateENS_9ErrorTypeEPKc
@@ -142,9 +143,9 @@ __ZN3JSC14TimeoutChecker5resetEv
__ZN3JSC14constructArrayEPNS_9ExecStateERKNS_7ArgListE
__ZN3JSC15JSWrapperObject12markChildrenERNS_9MarkStackE
__ZN3JSC15toInt32SlowCaseEdRb
-__ZN3JSC16FunctionBodyNode13finishParsingEPNS_10IdentifierEmRKS1_
+__ZN3JSC16FunctionBodyNode13finishParsingEPNS_10IdentifierEm
__ZN3JSC16FunctionBodyNode14copyParametersEv
-__ZN3JSC16FunctionBodyNode6createEPNS_12JSGlobalDataEPNS_14SourceElementsEPN3WTF6VectorISt4pairINS_10IdentifierEjELm0EEEPNS6_IPS0_Lm0EEERKNS_10SourceCodeEji
+__ZN3JSC16FunctionBodyNode6createEPNS_12JSGlobalDataEPNS_14SourceElementsEPN3WTF6VectorISt4pairINS_10IdentifierEjELm0EEEPNS6_IPNS_12FuncDeclNodeELm0EEERKNS_10SourceCodeEji
__ZN3JSC16InternalFunction4infoE
__ZN3JSC16InternalFunction4nameEPNS_12JSGlobalDataE
__ZN3JSC16InternalFunctionC2EPNS_12JSGlobalDataEN3WTF10PassRefPtrINS_9StructureEEERKNS_10IdentifierE
@@ -195,8 +196,8 @@ __ZN3JSC6JSCell3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutProper
__ZN3JSC6JSCell3putEPNS_9ExecStateEjNS_7JSValueE
__ZN3JSC6JSCell9getObjectEv
__ZN3JSC6JSCellnwEmPNS_9ExecStateE
-__ZN3JSC6JSLock12DropAllLocksC1ENS_14JSLockBehaviorE
__ZN3JSC6JSLock12DropAllLocksC1EPNS_9ExecStateE
+__ZN3JSC6JSLock12DropAllLocksC1ENS_14JSLockBehaviorE
__ZN3JSC6JSLock12DropAllLocksD1Ev
__ZN3JSC6JSLock4lockENS_14JSLockBehaviorE
__ZN3JSC6JSLock6unlockENS_14JSLockBehaviorE
@@ -226,9 +227,9 @@ __ZN3JSC7UString6appendERKS0_
__ZN3JSC7UStringC1EPKc
__ZN3JSC7UStringC1EPKti
__ZN3JSC7UStringaSEPKc
-__ZN3JSC8Debugger23recompileAllJSFunctionsEPNS_12JSGlobalDataE
__ZN3JSC8Debugger6attachEPNS_14JSGlobalObjectE
__ZN3JSC8Debugger6detachEPNS_14JSGlobalObjectE
+__ZN3JSC8DebuggerC2Ev
__ZN3JSC8DebuggerD2Ev
__ZN3JSC8JSObject11hasInstanceEPNS_9ExecStateENS_7JSValueES3_
__ZN3JSC8JSObject12defineGetterEPNS_9ExecStateERKNS_10IdentifierEPS0_
@@ -323,13 +324,14 @@ __ZN3WTF8CollatorC1EPKc
__ZN3WTF8CollatorD1Ev
__ZN3WTF8fastFreeEPv
__ZN3WTF9ByteArray6createEm
-__ZNK3JSC10JSFunction23isHostFunctionNonInlineEv
__ZNK3JSC11Interpreter14retrieveCallerEPNS_9ExecStateEPNS_16InternalFunctionE
__ZNK3JSC11Interpreter18retrieveLastCallerEPNS_9ExecStateERiRlRNS_7UStringERNS_7JSValueE
__ZNK3JSC12DateInstance7getTimeERdRi
__ZNK3JSC12StringObject12toThisStringEPNS_9ExecStateE
__ZNK3JSC12StringObject8toStringEPNS_9ExecStateE
__ZNK3JSC14JSGlobalObject14isDynamicScopeEv
+
+__ZNK3JSC16FunctionBodyNode14isHostFunctionEv
__ZNK3JSC16InternalFunction9classInfoEv
__ZNK3JSC16JSVariableObject16isVariableObjectEv
__ZNK3JSC16JSVariableObject21getPropertyAttributesEPNS_9ExecStateERKNS_10IdentifierERj
@@ -377,7 +379,6 @@ __ZTVN3JSC15JSWrapperObjectE
__ZTVN3JSC16InternalFunctionE
__ZTVN3JSC16JSVariableObjectE
__ZTVN3JSC17JSAPIValueWrapperE
-__ZTVN3JSC8DebuggerE
__ZTVN3JSC8JSObjectE
__ZTVN3JSC8JSStringE
_jscore_fastmalloc_introspection
diff --git a/JavaScriptCore/JavaScriptCore.pri b/JavaScriptCore/JavaScriptCore.pri
index 490f020..dd48c9a 100644
--- a/JavaScriptCore/JavaScriptCore.pri
+++ b/JavaScriptCore/JavaScriptCore.pri
@@ -99,6 +99,7 @@ SOURCES += \
runtime/JSONObject.cpp \
runtime/LiteralParser.cpp \
runtime/MarkStack.cpp \
+ runtime/MarkStackPosix.cpp \
runtime/TimeoutChecker.cpp \
bytecode/CodeBlock.cpp \
bytecode/StructureStubInfo.cpp \
@@ -122,13 +123,8 @@ SOURCES += \
yarr/RegexJIT.cpp \
interpreter/RegisterFile.cpp
-win32-* {
- SOURCES += jit/ExecutableAllocatorWin.cpp \
- runtime/MarkStackWin.cpp
-} else {
- SOURCES += jit/ExecutableAllocatorPosix.cpp \
- runtime/MarkStackPosix.cpp
-}
+win32-*: SOURCES += jit/ExecutableAllocatorWin.cpp
+else: SOURCES += jit/ExecutableAllocatorPosix.cpp
# AllInOneFile.cpp helps gcc analize and optimize code
# Other compilers may be able to do this at link time
@@ -158,7 +154,6 @@ SOURCES += \
runtime/ErrorInstance.cpp \
runtime/ErrorPrototype.cpp \
interpreter/CallFrame.cpp \
- runtime/Executable.cpp \
runtime/FunctionConstructor.cpp \
runtime/FunctionPrototype.cpp \
runtime/GetterSetter.cpp \
diff --git a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def
index 9f73d6d..0de51bf 100644
--- a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def
+++ b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def
@@ -1,7 +1,13 @@
LIBRARY "JavaScriptCore"
EXPORTS
+ ?from@UString@JSC@@SA?AV12@N@Z
+ ?nonInlineNaN@JSC@@YANXZ
+ ?synthesizePrototype@JSValue@JSC@@ABEPAVJSObject@2@PAVExecState@2@@Z
+ ?toObjectSlowCase@JSValue@JSC@@ABEPAVJSObject@2@PAVExecState@2@@Z
+ ?toThisObjectSlowCase@JSValue@JSC@@ABEPAVJSObject@2@PAVExecState@2@@Z
??0Collator@WTF@@QAE@PBD@Z
+ ??0Debugger@JSC@@QAE@XZ
??0DropAllLocks@JSLock@JSC@@QAE@W4JSLockBehavior@2@@Z
??0InternalFunction@JSC@@IAE@PAVJSGlobalData@1@V?$PassRefPtr@VStructure@JSC@@@WTF@@ABVIdentifier@1@@Z
??0JSByteArray@JSC@@QAE@PAVExecState@1@V?$PassRefPtr@VStructure@JSC@@@WTF@@PAVByteArray@4@PBUClassInfo@1@@Z
@@ -41,6 +47,7 @@ EXPORTS
?allocate@Heap@JSC@@QAEPAXI@Z
?allocatePropertyStorage@JSObject@JSC@@QAEXII@Z
?allocateStack@MarkStack@JSC@@CAPAXI@Z
+ ?allocateStack@MarkStack@JSC@@CAPAXI@Z
?append@UString@JSC@@QAEAAV12@ABV12@@Z
?append@UString@JSC@@QAEAAV12@PBD@Z
?ascii@UString@JSC@@QBEPADXZ
@@ -68,7 +75,7 @@ EXPORTS
?convertUTF16ToUTF8@Unicode@WTF@@YA?AW4ConversionResult@12@PAPB_WPB_WPAPADPAD_N@Z
?copyParameters@FunctionBodyNode@JSC@@QAEPAVIdentifier@2@XZ
?create@ByteArray@WTF@@SA?AV?$PassRefPtr@VByteArray@WTF@@@2@I@Z
- ?create@FunctionBodyNode@JSC@@SA?AV?$PassRefPtr@VFunctionBodyNode@JSC@@@WTF@@PAVJSGlobalData@2@PAVSourceElements@2@PAV?$Vector@U?$pair@VIdentifier@JSC@@I@std@@$0A@@4@PAV?$Vector@PAVFunctionBodyNode@JSC@@$0A@@4@ABVSourceCode@2@IH@Z
+ ?create@FunctionBodyNode@JSC@@SA?AV?$PassRefPtr@VFunctionBodyNode@JSC@@@WTF@@PAVJSGlobalData@2@PAVSourceElements@2@PAV?$Vector@U?$pair@VIdentifier@JSC@@I@std@@$0A@@4@PAV?$Vector@PAVFuncDeclNode@JSC@@$0A@@4@ABVSourceCode@2@IH@Z
?create@JSGlobalData@JSC@@SA?AV?$PassRefPtr@VJSGlobalData@JSC@@@WTF@@_N@Z
?create@OpaqueJSString@@SA?AV?$PassRefPtr@UOpaqueJSString@@@WTF@@ABVUString@JSC@@@Z
?create@Rep@UString@JSC@@SA?AV?$PassRefPtr@URep@UString@JSC@@@WTF@@PA_WHV?$PassRefPtr@V?$CrossThreadRefCounted@V?$OwnFastMallocPtr@_W@WTF@@@WTF@@@5@@Z
@@ -113,11 +120,10 @@ EXPORTS
?fastRealloc@WTF@@YAPAXPAXI@Z
?fastZeroedMalloc@WTF@@YAPAXI@Z
?fillGetterPropertySlot@JSObject@JSC@@QAEXAAVPropertySlot@2@PAVJSValue@2@@Z
- ?finishParsing@FunctionBodyNode@JSC@@QAEXPAVIdentifier@2@IABV32@@Z
+ ?finishParsing@FunctionBodyNode@JSC@@QAEXPAVIdentifier@2@I@Z
?focus@Profile@JSC@@QAEXPBVProfileNode@2@@Z
?from@UString@JSC@@SA?AV12@H@Z
?from@UString@JSC@@SA?AV12@I@Z
- ?from@UString@JSC@@SA?AV12@N@Z
?functionName@DebuggerCallFrame@JSC@@QBEPBVUString@2@XZ
?get@Structure@JSC@@QAEIPBURep@UString@2@AAIAAPAVJSCell@2@@Z
?getCallData@JSCell@JSC@@UAE?AW4CallType@2@AATCallData@2@@Z
@@ -158,7 +164,7 @@ EXPORTS
?isBusy@Heap@JSC@@QAE_NXZ
?isDynamicScope@JSGlobalObject@JSC@@UBE_NXZ
?isGetterSetter@JSCell@JSC@@UBE_NXZ
- ?isHostFunctionNonInline@JSFunction@JSC@@ABE_NXZ
+ ?isHostFunction@FunctionBodyNode@JSC@@QBE_NXZ
?isMainThread@WTF@@YA_NXZ
?isVariableObject@JSVariableObject@JSC@@UBE_NXZ
?jsNumberCell@JSC@@YA?AVJSValue@1@PAVExecState@1@N@Z
@@ -177,7 +183,6 @@ EXPORTS
?markChildren@JSWrapperObject@JSC@@UAEXAAVMarkStack@2@@Z
?materializePropertyMap@Structure@JSC@@AAEXXZ
?name@InternalFunction@JSC@@QAEABVUString@2@PAVJSGlobalData@2@@Z
- ?nonInlineNaN@JSC@@YANXZ
?objectCount@Heap@JSC@@QAEIXZ
?objectProtoFuncToString@JSC@@YI?AVJSValue@1@PAVExecState@1@PAVJSObject@1@V21@ABVArgList@1@@Z
?parse@Parser@JSC@@AAEXPAVJSGlobalData@2@PAHPAVUString@2@@Z
@@ -201,7 +206,6 @@ EXPORTS
?putWithAttributes@JSObject@JSC@@UAEXPAVExecState@2@ABVIdentifier@2@VJSValue@2@I_NAAVPutPropertySlot@2@@Z
?putWithAttributes@JSObject@JSC@@UAEXPAVExecState@2@IVJSValue@2@I@Z
?randomNumber@WTF@@YANXZ
- ?recompileAllJSFunctions@Debugger@JSC@@QAEXPAVJSGlobalData@2@@Z
?recordExtraCost@Heap@JSC@@AAEXI@Z
?releaseStack@MarkStack@JSC@@CAXPAXI@Z
?reset@ParserArena@JSC@@QAEXXZ
@@ -224,7 +228,6 @@ EXPORTS
?stopProfiling@Profiler@JSC@@QAE?AV?$PassRefPtr@VProfile@JSC@@@WTF@@PAVExecState@2@ABVUString@2@@Z
?strtod@WTF@@YANPBDPAPAD@Z
?substr@UString@JSC@@QBE?AV12@HH@Z
- ?synthesizePrototype@JSValue@JSC@@ABEPAVJSObject@2@PAVExecState@2@@Z
?thisObject@DebuggerCallFrame@JSC@@QBEPAVJSObject@2@XZ
?throwError@JSC@@YAPAVJSObject@1@PAVExecState@1@W4ErrorType@1@@Z
?throwError@JSC@@YAPAVJSObject@1@PAVExecState@1@W4ErrorType@1@ABVUString@1@@Z
@@ -242,7 +245,6 @@ EXPORTS
?toObject@JSAPIValueWrapper@JSC@@UBEPAVJSObject@2@PAVExecState@2@@Z
?toObject@JSObject@JSC@@UBEPAV12@PAVExecState@2@@Z
?toObject@JSString@JSC@@EBEPAVJSObject@2@PAVExecState@2@@Z
- ?toObjectSlowCase@JSValue@JSC@@ABEPAVJSObject@2@PAVExecState@2@@Z
?toPrimitive@JSAPIValueWrapper@JSC@@UBE?AVJSValue@2@PAVExecState@2@W4PreferredPrimitiveType@2@@Z
?toPrimitive@JSString@JSC@@EBE?AVJSValue@2@PAVExecState@2@W4PreferredPrimitiveType@2@@Z
?toStrictUInt32@UString@JSC@@QBEIPA_N@Z
@@ -256,14 +258,13 @@ EXPORTS
?toThisObject@JSCell@JSC@@UBEPAVJSObject@2@PAVExecState@2@@Z
?toThisObject@JSObject@JSC@@UBEPAV12@PAVExecState@2@@Z
?toThisObject@JSString@JSC@@EBEPAVJSObject@2@PAVExecState@2@@Z
- ?toThisObjectSlowCase@JSValue@JSC@@ABEPAVJSObject@2@PAVExecState@2@@Z
?toThisString@JSCell@JSC@@UBE?AVUString@2@PAVExecState@2@@Z
?toThisString@JSString@JSC@@EBE?AVUString@2@PAVExecState@2@@Z
?toThisString@StringObject@JSC@@EBE?AVUString@2@PAVExecState@2@@Z
?toUInt32@UString@JSC@@QBEIPA_N@Z
?toUInt32@UString@JSC@@QBEIPA_N_N@Z
?toUInt32SlowCase@JSC@@YAINAA_N@Z
- ?tryFastCalloc@WTF@@YA?AUTryMallocReturnValue@1@II@Z
+ ?tryFastCalloc@WTF@@YAPAXII@Z
?tryLock@Mutex@WTF@@QAE_NXZ
?type@DebuggerCallFrame@JSC@@QBE?AW4Type@12@XZ
?unlock@JSLock@JSC@@SAXW4JSLockBehavior@2@@Z
diff --git a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj
index 4aae5b2..1c5e963 100644
--- a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj
+++ b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj
@@ -644,10 +644,6 @@
>
</File>
<File
- RelativePath="..\..\runtime\Executable.cpp"
- >
- </File>
- <File
RelativePath="..\..\runtime\FunctionConstructor.cpp"
>
</File>
diff --git a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops
index ba6bbfd..5f90011 100644
--- a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops
+++ b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops
@@ -21,7 +21,7 @@
/>
<Tool
Name="VCPreBuildEventTool"
- CommandLine="%SystemDrive%\cygwin\bin\which.exe bash&#x0D;&#x0A;if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH%&#x0D;&#x0A;cmd /c&#x0D;&#x0A;if exist &quot;$(WebKitOutputDir)\buildfailed&quot; grep XX$(ProjectName)XX &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;if errorlevel 1 exit 1&#x0D;&#x0A;echo XX$(ProjectName)XX &gt; &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;&#x0D;&#x0A;bash &quot;$(WebKitLibrariesDir)\tools\scripts\auto-version.sh&quot; &quot;$(IntDir)&quot;&#x0D;&#x0A;"
+ CommandLine="set PATH=%SystemDrive%\cygwin\bin;%PATH%&#x0D;&#x0A;if exist &quot;$(WebKitOutputDir)\buildfailed&quot; grep XX$(ProjectName)XX &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;if errorlevel 1 exit 1&#x0D;&#x0A;echo XX$(ProjectName)XX &gt; &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;&#x0D;&#x0A;bash &quot;$(WebKitLibrariesDir)\tools\scripts\auto-version.sh&quot; &quot;$(IntDir)&quot;&#x0D;&#x0A;"
/>
<Tool
Name="VCPreLinkEventTool"
diff --git a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj
index eb8e44c..954045e 100644
--- a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj
+++ b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj
@@ -23,9 +23,9 @@
>
<Tool
Name="VCNMakeTool"
- BuildCommandLine="%SystemDrive%\cygwin\bin\which.exe bash&#x0D;&#x0A;if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH%&#x0D;&#x0A;cmd /c&#x0D;&#x0A;&#x0D;&#x0A;nmake /nologo -f JavaScriptCoreGenerated.make"
- ReBuildCommandLine="%SystemDrive%\cygwin\bin\which.exe bash&#x0D;&#x0A;if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH%&#x0D;&#x0A;cmd /c&#x0D;&#x0A;&#x0D;&#x0A;nmake /nologo -f JavaScriptCoreGenerated.make clean&#x0D;&#x0A;nmake -f JavaScriptCoreGenerated.make"
- CleanCommandLine="%SystemDrive%\cygwin\bin\which.exe bash&#x0D;&#x0A;if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH%&#x0D;&#x0A;cmd /c&#x0D;&#x0A;&#x0D;&#x0A;nmake /nologo -f JavaScriptCoreGenerated.make clean"
+ BuildCommandLine="set PATH=%SystemDrive%\cygwin\bin;%PATH%&#x0D;&#x0A;&#x0D;&#x0A;nmake /nologo -f JavaScriptCoreGenerated.make"
+ ReBuildCommandLine="set PATH=%SystemDrive%\cygwin\bin;%PATH%&#x0D;&#x0A;&#x0D;&#x0A;nmake /nologo -f JavaScriptCoreGenerated.make clean&#x0D;&#x0A;nmake -f JavaScriptCoreGenerated.make"
+ CleanCommandLine="set PATH=%SystemDrive%\cygwin\bin;%PATH%&#x0D;&#x0A;&#x0D;&#x0A;nmake /nologo -f JavaScriptCoreGenerated.make clean"
Output=""
PreprocessorDefinitions="WIN32;NDEBUG"
IncludeSearchPath=""
diff --git a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def
index 8ec1aec..65998ca 100644
--- a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def
+++ b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def
@@ -1,7 +1,13 @@
LIBRARY "JavaScriptCore_debug"
EXPORTS
+ ?from@UString@JSC@@SA?AV12@N@Z
+ ?nonInlineNaN@JSC@@YANXZ
+ ?synthesizePrototype@JSValue@JSC@@ABEPAVJSObject@2@PAVExecState@2@@Z
+ ?toObjectSlowCase@JSValue@JSC@@ABEPAVJSObject@2@PAVExecState@2@@Z
+ ?toThisObjectSlowCase@JSValue@JSC@@ABEPAVJSObject@2@PAVExecState@2@@Z
??0Collator@WTF@@QAE@PBD@Z
+ ??0Debugger@JSC@@QAE@XZ
??0DropAllLocks@JSLock@JSC@@QAE@W4JSLockBehavior@2@@Z
??0InternalFunction@JSC@@IAE@PAVJSGlobalData@1@V?$PassRefPtr@VStructure@JSC@@@WTF@@ABVIdentifier@1@@Z
??0JSByteArray@JSC@@QAE@PAVExecState@1@V?$PassRefPtr@VStructure@JSC@@@WTF@@PAVByteArray@4@PBUClassInfo@1@@Z
@@ -40,7 +46,6 @@ EXPORTS
?addSlowCase@Identifier@JSC@@CA?AV?$PassRefPtr@URep@UString@JSC@@@WTF@@PAVJSGlobalData@2@PAURep@UString@2@@Z
?allocate@Heap@JSC@@QAEPAXI@Z
?allocatePropertyStorage@JSObject@JSC@@QAEXII@Z
- ?allocateStack@MarkStack@JSC@@CAPAXI@Z
?append@UString@JSC@@QAEAAV12@ABV12@@Z
?append@UString@JSC@@QAEAAV12@PBD@Z
?ascii@UString@JSC@@QBEPADXZ
@@ -68,7 +73,7 @@ EXPORTS
?convertUTF16ToUTF8@Unicode@WTF@@YA?AW4ConversionResult@12@PAPB_WPB_WPAPADPAD_N@Z
?copyParameters@FunctionBodyNode@JSC@@QAEPAVIdentifier@2@XZ
?create@ByteArray@WTF@@SA?AV?$PassRefPtr@VByteArray@WTF@@@2@I@Z
- ?create@FunctionBodyNode@JSC@@SA?AV?$PassRefPtr@VFunctionBodyNode@JSC@@@WTF@@PAVJSGlobalData@2@PAVSourceElements@2@PAV?$Vector@U?$pair@VIdentifier@JSC@@I@std@@$0A@@4@PAV?$Vector@PAVFunctionBodyNode@JSC@@$0A@@4@ABVSourceCode@2@IH@Z
+ ?create@FunctionBodyNode@JSC@@SA?AV?$PassRefPtr@VFunctionBodyNode@JSC@@@WTF@@PAVJSGlobalData@2@PAVSourceElements@2@PAV?$Vector@U?$pair@VIdentifier@JSC@@I@std@@$0A@@4@PAV?$Vector@PAVFuncDeclNode@JSC@@$0A@@4@ABVSourceCode@2@IH@Z
?create@JSGlobalData@JSC@@SA?AV?$PassRefPtr@VJSGlobalData@JSC@@@WTF@@_N@Z
?create@OpaqueJSString@@SA?AV?$PassRefPtr@UOpaqueJSString@@@WTF@@ABVUString@JSC@@@Z
?create@Rep@UString@JSC@@SA?AV?$PassRefPtr@URep@UString@JSC@@@WTF@@PA_WHV?$PassRefPtr@V?$CrossThreadRefCounted@V?$OwnFastMallocPtr@_W@WTF@@@WTF@@@5@@Z
@@ -113,11 +118,10 @@ EXPORTS
?fastRealloc@WTF@@YAPAXPAXI@Z
?fastZeroedMalloc@WTF@@YAPAXI@Z
?fillGetterPropertySlot@JSObject@JSC@@QAEXAAVPropertySlot@2@PAVJSValue@2@@Z
- ?finishParsing@FunctionBodyNode@JSC@@QAEXPAVIdentifier@2@IABV32@@Z
+ ?finishParsing@FunctionBodyNode@JSC@@QAEXPAVIdentifier@2@I@Z
?focus@Profile@JSC@@QAEXPBVProfileNode@2@@Z
?from@UString@JSC@@SA?AV12@H@Z
?from@UString@JSC@@SA?AV12@I@Z
- ?from@UString@JSC@@SA?AV12@N@Z
?functionName@DebuggerCallFrame@JSC@@QBEPBVUString@2@XZ
?get@Structure@JSC@@QAEIPBURep@UString@2@AAIAAPAVJSCell@2@@Z
?getCallData@JSCell@JSC@@UAE?AW4CallType@2@AATCallData@2@@Z
@@ -158,7 +162,7 @@ EXPORTS
?isBusy@Heap@JSC@@QAE_NXZ
?isDynamicScope@JSGlobalObject@JSC@@UBE_NXZ
?isGetterSetter@JSCell@JSC@@UBE_NXZ
- ?isHostFunctionNonInline@JSFunction@JSC@@ABE_NXZ
+ ?isHostFunction@FunctionBodyNode@JSC@@QBE_NXZ
?isMainThread@WTF@@YA_NXZ
?isVariableObject@JSVariableObject@JSC@@UBE_NXZ
?jsNumberCell@JSC@@YA?AVJSValue@1@PAVExecState@1@N@Z
@@ -177,7 +181,6 @@ EXPORTS
?markChildren@JSWrapperObject@JSC@@UAEXAAVMarkStack@2@@Z
?materializePropertyMap@Structure@JSC@@AAEXXZ
?name@InternalFunction@JSC@@QAEABVUString@2@PAVJSGlobalData@2@@Z
- ?nonInlineNaN@JSC@@YANXZ
?objectCount@Heap@JSC@@QAEIXZ
?objectProtoFuncToString@JSC@@YI?AVJSValue@1@PAVExecState@1@PAVJSObject@1@V21@ABVArgList@1@@Z
?parse@Parser@JSC@@AAEXPAVJSGlobalData@2@PAHPAVUString@2@@Z
@@ -201,7 +204,6 @@ EXPORTS
?putWithAttributes@JSObject@JSC@@UAEXPAVExecState@2@ABVIdentifier@2@VJSValue@2@I_NAAVPutPropertySlot@2@@Z
?putWithAttributes@JSObject@JSC@@UAEXPAVExecState@2@IVJSValue@2@I@Z
?randomNumber@WTF@@YANXZ
- ?recompileAllJSFunctions@Debugger@JSC@@QAEXPAVJSGlobalData@2@@Z
?recordExtraCost@Heap@JSC@@AAEXI@Z
?releaseStack@MarkStack@JSC@@CAXPAXI@Z
?reset@ParserArena@JSC@@QAEXXZ
@@ -224,7 +226,6 @@ EXPORTS
?stopProfiling@Profiler@JSC@@QAE?AV?$PassRefPtr@VProfile@JSC@@@WTF@@PAVExecState@2@ABVUString@2@@Z
?strtod@WTF@@YANPBDPAPAD@Z
?substr@UString@JSC@@QBE?AV12@HH@Z
- ?synthesizePrototype@JSValue@JSC@@ABEPAVJSObject@2@PAVExecState@2@@Z
?thisObject@DebuggerCallFrame@JSC@@QBEPAVJSObject@2@XZ
?throwError@JSC@@YAPAVJSObject@1@PAVExecState@1@W4ErrorType@1@@Z
?throwError@JSC@@YAPAVJSObject@1@PAVExecState@1@W4ErrorType@1@ABVUString@1@@Z
@@ -242,7 +243,6 @@ EXPORTS
?toObject@JSAPIValueWrapper@JSC@@UBEPAVJSObject@2@PAVExecState@2@@Z
?toObject@JSObject@JSC@@UBEPAV12@PAVExecState@2@@Z
?toObject@JSString@JSC@@EBEPAVJSObject@2@PAVExecState@2@@Z
- ?toObjectSlowCase@JSValue@JSC@@ABEPAVJSObject@2@PAVExecState@2@@Z
?toPrimitive@JSAPIValueWrapper@JSC@@UBE?AVJSValue@2@PAVExecState@2@W4PreferredPrimitiveType@2@@Z
?toPrimitive@JSString@JSC@@EBE?AVJSValue@2@PAVExecState@2@W4PreferredPrimitiveType@2@@Z
?toStrictUInt32@UString@JSC@@QBEIPA_N@Z
@@ -256,14 +256,13 @@ EXPORTS
?toThisObject@JSCell@JSC@@UBEPAVJSObject@2@PAVExecState@2@@Z
?toThisObject@JSObject@JSC@@UBEPAV12@PAVExecState@2@@Z
?toThisObject@JSString@JSC@@EBEPAVJSObject@2@PAVExecState@2@@Z
- ?toThisObjectSlowCase@JSValue@JSC@@ABEPAVJSObject@2@PAVExecState@2@@Z
?toThisString@JSCell@JSC@@UBE?AVUString@2@PAVExecState@2@@Z
?toThisString@JSString@JSC@@EBE?AVUString@2@PAVExecState@2@@Z
?toThisString@StringObject@JSC@@EBE?AVUString@2@PAVExecState@2@@Z
?toUInt32@UString@JSC@@QBEIPA_N@Z
?toUInt32@UString@JSC@@QBEIPA_N_N@Z
?toUInt32SlowCase@JSC@@YAINAA_N@Z
- ?tryFastCalloc@WTF@@YA?AUTryMallocReturnValue@1@II@Z
+ ?tryFastCalloc@WTF@@YAPAXII@Z
?tryLock@Mutex@WTF@@QAE_NXZ
?type@DebuggerCallFrame@JSC@@QBE?AW4Type@12@XZ
?unlock@JSLock@JSC@@SAXW4JSLockBehavior@2@@Z
diff --git a/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFCommon.vsprops b/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFCommon.vsprops
index d78ff43..20b32f3 100644
--- a/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFCommon.vsprops
+++ b/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFCommon.vsprops
@@ -1,26 +1,26 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="WTFCommon"
- OutputDirectory="$(WebKitOutputDir)\lib"
- >
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="&quot;$(WebKitOutputDir)\obj\JavaScriptCore\$(ConfigurationName)\DerivedSources\&quot;;../../;&quot;../../os-win32/&quot;;../../pcre/;../../parser/;../../wtf/;../../wtf/unicode/;&quot;$(WebKitLibrariesDir)\include&quot;;&quot;$(WebKitLibrariesDir)\include\icu&quot;;../../../icu/include;../../bindings;../../bindings/c;../../bindings/jni;&quot;$(WebKitOutputDir)\include\JavaScriptCore&quot;;&quot;$(WebKitLibrariesDir)\include\pthreads&quot;"
- PreprocessorDefinitions="__STD_C"
- />
- <Tool
- Name="VCLibrarianTool"
- AdditionalDependencies="user32.lib"
- OutputFile="$(OutDir)\$(ProjectName)$(WebKitConfigSuffix).lib"
- />
- <Tool
- Name="VCPostBuildEventTool"
- CommandLine="if exist &quot;$(WebKitOutputDir)\buildfailed&quot; del &quot;$(WebKitOutputDir)\buildfailed&quot;"
- />
- <Tool
- Name="VCPreBuildEventTool"
- CommandLine="%SystemDrive%\cygwin\bin\which.exe bash&#x0D;&#x0A;if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH%&#x0D;&#x0A;cmd /c"
- />
-</VisualStudioPropertySheet>
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioPropertySheet
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="WTFCommon"
+ OutputDirectory="$(WebKitOutputDir)\lib"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="&quot;$(WebKitOutputDir)\obj\JavaScriptCore\$(ConfigurationName)\DerivedSources\&quot;;../../;&quot;../../os-win32/&quot;;../../pcre/;../../parser/;../../wtf/;../../wtf/unicode/;&quot;$(WebKitLibrariesDir)\include&quot;;&quot;$(WebKitLibrariesDir)\include\icu&quot;;../../../icu/include;../../bindings;../../bindings/c;../../bindings/jni;&quot;$(WebKitOutputDir)\include\JavaScriptCore&quot;;&quot;$(WebKitLibrariesDir)\include\pthreads&quot;"
+ PreprocessorDefinitions="__STD_C"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ AdditionalDependencies="user32.lib"
+ OutputFile="$(OutDir)\$(ProjectName)$(WebKitConfigSuffix).lib"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="if exist &quot;$(WebKitOutputDir)\buildfailed&quot; del &quot;$(WebKitOutputDir)\buildfailed&quot;"
+ />
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="set PATH=%SystemDrive%\cygwin\bin;%PATH%"
+ />
+</VisualStudioPropertySheet>
diff --git a/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscCommon.vsprops b/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscCommon.vsprops
index 7e8a193..3a1e42e 100644
--- a/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscCommon.vsprops
+++ b/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscCommon.vsprops
@@ -20,6 +20,6 @@
/>
<Tool
Name="VCPreBuildEventTool"
- CommandLine="%SystemDrive%\cygwin\bin\which.exe bash&#x0D;&#x0A;if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH%&#x0D;&#x0A;cmd /c&#x0D;&#x0A;if exist &quot;$(WebKitOutputDir)\buildfailed&quot; grep XX$(ProjectName)XX &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;if errorlevel 1 exit 1&#x0D;&#x0A;echo XX$(ProjectName)XX &gt; &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;"
+ CommandLine="set PATH=%SystemDrive%\cygwin\bin;%PATH%&#x0D;&#x0A;if exist &quot;$(WebKitOutputDir)\buildfailed&quot; grep XX$(ProjectName)XX &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;if errorlevel 1 exit 1&#x0D;&#x0A;echo XX$(ProjectName)XX &gt; &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;"
/>
</VisualStudioPropertySheet>
diff --git a/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiCommon.vsprops b/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiCommon.vsprops
index 738d4d5..2a36c18 100644
--- a/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiCommon.vsprops
+++ b/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiCommon.vsprops
@@ -21,6 +21,6 @@
/>
<Tool
Name="VCPreBuildEventTool"
- CommandLine="%SystemDrive%\cygwin\bin\which.exe bash&#x0D;&#x0A;if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH%&#x0D;&#x0A;cmd /c&#x0D;&#x0A;if exist &quot;$(WebKitOutputDir)\buildfailed&quot; grep XX$(ProjectName)XX &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;if errorlevel 1 exit 1&#x0D;&#x0A;echo XX$(ProjectName)XX &gt; &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;"
+ CommandLine="set PATH=%SystemDrive%\cygwin\bin;%PATH%&#x0D;&#x0A;if exist &quot;$(WebKitOutputDir)\buildfailed&quot; grep XX$(ProjectName)XX &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;if errorlevel 1 exit 1&#x0D;&#x0A;echo XX$(ProjectName)XX &gt; &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;"
/>
</VisualStudioPropertySheet>
diff --git a/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj b/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
index 973e3a3..6c3d49f 100644
--- a/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
+++ b/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
@@ -95,7 +95,7 @@
14BD5A300A3E91F600BAF59C /* JSContextRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14BD5A290A3E91F600BAF59C /* JSContextRef.cpp */; };
14BD5A320A3E91F600BAF59C /* JSValueRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14BD5A2B0A3E91F600BAF59C /* JSValueRef.cpp */; };
14C5242B0F5355E900BA3D04 /* JITStubs.h in Headers */ = {isa = PBXBuildFile; fileRef = 14A6581A0F4E36F4000150FD /* JITStubs.h */; settings = {ATTRIBUTES = (Private, ); }; };
- 14F3488F0E95EF8A003648BC /* CollectorHeapIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = 14F3488E0E95EF8A003648BC /* CollectorHeapIterator.h */; settings = {ATTRIBUTES = (); }; };
+ 14F3488F0E95EF8A003648BC /* CollectorHeapIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = 14F3488E0E95EF8A003648BC /* CollectorHeapIterator.h */; settings = {ATTRIBUTES = (Private, ); }; };
180B9B080F16D94F009BDBC5 /* CurrentTime.h in Headers */ = {isa = PBXBuildFile; fileRef = 180B9AF00F16C569009BDBC5 /* CurrentTime.h */; settings = {ATTRIBUTES = (Private, ); }; };
180B9BFE0F16E94D009BDBC5 /* CurrentTime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 180B9AEF0F16C569009BDBC5 /* CurrentTime.cpp */; };
1C61516C0EBAC7A00031376F /* ProfilerServer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1C61516A0EBAC7A00031376F /* ProfilerServer.mm */; settings = {COMPILER_FLAGS = "-fno-strict-aliasing"; }; };
@@ -132,8 +132,6 @@
86ADD1450FDDEA980006EEC2 /* ARMv7Assembler.h in Headers */ = {isa = PBXBuildFile; fileRef = 86ADD1430FDDEA980006EEC2 /* ARMv7Assembler.h */; };
86ADD1460FDDEA980006EEC2 /* MacroAssemblerARMv7.h in Headers */ = {isa = PBXBuildFile; fileRef = 86ADD1440FDDEA980006EEC2 /* MacroAssemblerARMv7.h */; };
86C36EEA0EE1289D00B3DF59 /* MacroAssembler.h in Headers */ = {isa = PBXBuildFile; fileRef = 86C36EE90EE1289D00B3DF59 /* MacroAssembler.h */; };
- 86CA032E1038E8440028A609 /* Executable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86CA032D1038E8440028A609 /* Executable.cpp */; };
- 86CAFEE31035DDE60028A609 /* Executable.h in Headers */ = {isa = PBXBuildFile; fileRef = 86CAFEE21035DDE60028A609 /* Executable.h */; settings = {ATTRIBUTES = (Private, ); }; };
86CC85A10EE79A4700288682 /* JITInlineMethods.h in Headers */ = {isa = PBXBuildFile; fileRef = 86CC85A00EE79A4700288682 /* JITInlineMethods.h */; };
86CC85A30EE79B7400288682 /* JITCall.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86CC85A20EE79B7400288682 /* JITCall.cpp */; };
86CC85C40EE7A89400288682 /* JITPropertyAccess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86CC85C30EE7A89400288682 /* JITPropertyAccess.cpp */; };
@@ -209,11 +207,11 @@
A7A1F7AD0F252B3C00E184E2 /* ByteArray.h in Headers */ = {isa = PBXBuildFile; fileRef = A7A1F7AB0F252B3C00E184E2 /* ByteArray.h */; settings = {ATTRIBUTES = (Private, ); }; };
A7B48F490EE8936F00DCBDB6 /* ExecutableAllocator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7B48DB60EE74CFC00DCBDB6 /* ExecutableAllocator.cpp */; };
A7C530E4102A3813005BC741 /* MarkStackPosix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7C530E3102A3813005BC741 /* MarkStackPosix.cpp */; };
- A7D649AA1015224E009B2E1B /* PossiblyNull.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D649A91015224E009B2E1B /* PossiblyNull.h */; settings = {ATTRIBUTES = (Private, ); }; };
A7E2EA6B0FB460CF00601F06 /* LiteralParser.h in Headers */ = {isa = PBXBuildFile; fileRef = A7E2EA690FB460CF00601F06 /* LiteralParser.h */; };
A7E2EA6C0FB460CF00601F06 /* LiteralParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7E2EA6A0FB460CF00601F06 /* LiteralParser.cpp */; };
A7F9935F0FD7325100A0B2D0 /* JSONObject.h in Headers */ = {isa = PBXBuildFile; fileRef = A7F9935D0FD7325100A0B2D0 /* JSONObject.h */; };
A7F993600FD7325100A0B2D0 /* JSONObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7F9935E0FD7325100A0B2D0 /* JSONObject.cpp */; };
+ A7F9949B0FD746A300A0B2D0 /* JSONObject.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = A7F9949A0FD746A300A0B2D0 /* JSONObject.lut.h */; };
BC02E90D0E1839DB000F9297 /* ErrorConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = BC02E9050E1839DB000F9297 /* ErrorConstructor.h */; };
BC02E90F0E1839DB000F9297 /* ErrorPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = BC02E9070E1839DB000F9297 /* ErrorPrototype.h */; };
BC02E9110E1839DB000F9297 /* NativeErrorConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = BC02E9090E1839DB000F9297 /* NativeErrorConstructor.h */; };
@@ -306,7 +304,7 @@
BC18C4480E16F5CD00B34460 /* Operations.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A8780255597D01FF60F7 /* Operations.h */; settings = {ATTRIBUTES = (Private, ); }; };
BC18C4490E16F5CD00B34460 /* OwnArrayPtr.h in Headers */ = {isa = PBXBuildFile; fileRef = 9303F5A409911A5800AD71B8 /* OwnArrayPtr.h */; settings = {ATTRIBUTES = (Private, ); }; };
BC18C44A0E16F5CD00B34460 /* OwnPtr.h in Headers */ = {isa = PBXBuildFile; fileRef = 9303F567099118FA00AD71B8 /* OwnPtr.h */; settings = {ATTRIBUTES = (Private, ); }; };
- BC18C44B0E16F5CD00B34460 /* Parser.h in Headers */ = {isa = PBXBuildFile; fileRef = 93F0B3AA09BB4DC00068FCE3 /* Parser.h */; settings = {ATTRIBUTES = (); }; };
+ BC18C44B0E16F5CD00B34460 /* Parser.h in Headers */ = {isa = PBXBuildFile; fileRef = 93F0B3AA09BB4DC00068FCE3 /* Parser.h */; settings = {ATTRIBUTES = (Private, ); }; };
BC18C44C0E16F5CD00B34460 /* PassRefPtr.h in Headers */ = {isa = PBXBuildFile; fileRef = 6580F795094070560082C219 /* PassRefPtr.h */; settings = {ATTRIBUTES = (Private, ); }; };
BC18C44D0E16F5CD00B34460 /* pcre.h in Headers */ = {isa = PBXBuildFile; fileRef = 6541720F039E08B90058BFEB /* pcre.h */; settings = {ATTRIBUTES = (Private, ); }; };
BC18C44E0E16F5CD00B34460 /* pcre_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 93E26BE508B1517100F85226 /* pcre_internal.h */; };
@@ -648,8 +646,6 @@
86ADD1430FDDEA980006EEC2 /* ARMv7Assembler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARMv7Assembler.h; sourceTree = "<group>"; };
86ADD1440FDDEA980006EEC2 /* MacroAssemblerARMv7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MacroAssemblerARMv7.h; sourceTree = "<group>"; };
86C36EE90EE1289D00B3DF59 /* MacroAssembler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MacroAssembler.h; sourceTree = "<group>"; };
- 86CA032D1038E8440028A609 /* Executable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Executable.cpp; sourceTree = "<group>"; };
- 86CAFEE21035DDE60028A609 /* Executable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Executable.h; sourceTree = "<group>"; };
86CC85A00EE79A4700288682 /* JITInlineMethods.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JITInlineMethods.h; sourceTree = "<group>"; };
86CC85A20EE79B7400288682 /* JITCall.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JITCall.cpp; sourceTree = "<group>"; };
86CC85C30EE7A89400288682 /* JITPropertyAccess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JITPropertyAccess.cpp; sourceTree = "<group>"; };
@@ -756,7 +752,6 @@
A7B48DB50EE74CFC00DCBDB6 /* ExecutableAllocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExecutableAllocator.h; sourceTree = "<group>"; };
A7B48DB60EE74CFC00DCBDB6 /* ExecutableAllocator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ExecutableAllocator.cpp; sourceTree = "<group>"; };
A7C530E3102A3813005BC741 /* MarkStackPosix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MarkStackPosix.cpp; sourceTree = "<group>"; };
- A7D649A91015224E009B2E1B /* PossiblyNull.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PossiblyNull.h; sourceTree = "<group>"; };
A7E2EA690FB460CF00601F06 /* LiteralParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LiteralParser.h; sourceTree = "<group>"; };
A7E2EA6A0FB460CF00601F06 /* LiteralParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LiteralParser.cpp; sourceTree = "<group>"; };
A7E42C180E3938830065A544 /* JSStaticScopeObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSStaticScopeObject.h; sourceTree = "<group>"; };
@@ -1247,7 +1242,6 @@
44DD48520FAEA85000D6B4EB /* PassOwnPtr.h */,
6580F795094070560082C219 /* PassRefPtr.h */,
65D6D87E09B5A32E0002E4D7 /* Platform.h */,
- A7D649A91015224E009B2E1B /* PossiblyNull.h */,
0B1F921B0F17502D0036468E /* PtrAndFlags.h */,
088FA5B90EF76D4300578E6F /* RandomNumber.cpp */,
088FA5BA0EF76D4300578E6F /* RandomNumber.h */,
@@ -1381,8 +1375,6 @@
BC02E9070E1839DB000F9297 /* ErrorPrototype.h */,
1429D8770ED21ACD00B89619 /* ExceptionHelpers.cpp */,
A72701B30DADE94900E548D7 /* ExceptionHelpers.h */,
- 86CA032D1038E8440028A609 /* Executable.cpp */,
- 86CAFEE21035DDE60028A609 /* Executable.h */,
BC2680C00E16D4E900A06E92 /* FunctionConstructor.cpp */,
BC2680C10E16D4E900A06E92 /* FunctionConstructor.h */,
F692A85C0255597D01FF60F7 /* FunctionPrototype.cpp */,
@@ -1768,6 +1760,7 @@
BC18C4240E16F5CD00B34460 /* JSObject.h in Headers */,
BC18C4250E16F5CD00B34460 /* JSObjectRef.h in Headers */,
A7F9935F0FD7325100A0B2D0 /* JSONObject.h in Headers */,
+ A7F9949B0FD746A300A0B2D0 /* JSONObject.lut.h in Headers */,
9534AAFB0E5B7A9600B8A45B /* JSProfilerPrivate.h in Headers */,
BC18C4260E16F5CD00B34460 /* JSRetainPtr.h in Headers */,
BC18C4270E16F5CD00B34460 /* JSString.h in Headers */,
@@ -1909,8 +1902,6 @@
1429DABF0ED263E700B89619 /* WRECParser.h in Headers */,
9688CB160ED12B4E001D649F /* X86Assembler.h in Headers */,
A7795590101A74D500114E55 /* MarkStack.h in Headers */,
- A7D649AA1015224E009B2E1B /* PossiblyNull.h in Headers */,
- 86CAFEE31035DDE60028A609 /* Executable.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -2279,7 +2270,6 @@
1429DAC00ED263E700B89619 /* WRECParser.cpp in Sources */,
A7C530E4102A3813005BC741 /* MarkStackPosix.cpp in Sources */,
A74B3499102A5F8E0032AB98 /* MarkStack.cpp in Sources */,
- 86CA032E1038E8440028A609 /* Executable.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
diff --git a/JavaScriptCore/assembler/ARMAssembler.cpp b/JavaScriptCore/assembler/ARMAssembler.cpp
index c8b07fc..69daa16 100644
--- a/JavaScriptCore/assembler/ARMAssembler.cpp
+++ b/JavaScriptCore/assembler/ARMAssembler.cpp
@@ -49,11 +49,11 @@ ARMWord* ARMAssembler::getLdrImmAddress(ARMWord* insn, uint32_t* constPool)
return reinterpret_cast<ARMWord*>(addr - (*insn & SDT_OFFSET_MASK));
}
-void ARMAssembler::linkBranch(void* code, JmpSrc from, void* to, int useConstantPool)
+void ARMAssembler::linkBranch(void* code, JmpSrc from, void* to)
{
ARMWord* insn = reinterpret_cast<ARMWord*>(code) + (from.m_offset / sizeof(ARMWord));
- if (!useConstantPool) {
+ if (!from.m_latePatch) {
int diff = reinterpret_cast<ARMWord*>(to) - reinterpret_cast<ARMWord*>(insn + 2);
if ((diff <= BOFFSET_MAX && diff >= BOFFSET_MIN)) {
@@ -367,22 +367,13 @@ void ARMAssembler::doubleTransfer(bool isLoad, FPRegisterID srcDst, RegisterID b
void* ARMAssembler::executableCopy(ExecutablePool* allocator)
{
- // 64-bit alignment is required for next constant pool and JIT code as well
- m_buffer.flushWithoutBarrier(true);
- if (m_buffer.uncheckedSize() & 0x7)
- bkpt(0);
-
char* data = reinterpret_cast<char*>(m_buffer.executableCopy(allocator));
for (Jumps::Iterator iter = m_jumps.begin(); iter != m_jumps.end(); ++iter) {
- // The last bit is set if the constant must be placed on constant pool.
- int pos = (*iter) & (~0x1);
- ARMWord* ldrAddr = reinterpret_cast<ARMWord*>(data + pos);
- ARMWord offset = *getLdrImmAddress(ldrAddr);
- if (offset != 0xffffffff) {
- JmpSrc jmpSrc(pos);
- linkBranch(data, jmpSrc, data + offset, ((*iter) & 1));
- }
+ ARMWord* ldrAddr = reinterpret_cast<ARMWord*>(data + *iter);
+ ARMWord* offset = getLdrImmAddress(ldrAddr);
+ if (*offset != 0xffffffff)
+ linkBranch(data, JmpSrc(*iter), data + *offset);
}
return data;
diff --git a/JavaScriptCore/assembler/ARMAssembler.h b/JavaScriptCore/assembler/ARMAssembler.h
index 0206770..d3fe782 100644
--- a/JavaScriptCore/assembler/ARMAssembler.h
+++ b/JavaScriptCore/assembler/ARMAssembler.h
@@ -77,7 +77,7 @@ namespace ARM {
typedef ARM::RegisterID RegisterID;
typedef ARM::FPRegisterID FPRegisterID;
typedef AssemblerBufferWithConstantPool<2048, 4, 4, ARMAssembler> ARMBuffer;
- typedef SegmentedVector<int, 64> Jumps;
+ typedef WTF::SegmentedVector<int, 64> Jumps;
ARMAssembler() { }
@@ -180,16 +180,20 @@ namespace ARM {
public:
JmpSrc()
: m_offset(-1)
+ , m_latePatch(false)
{
}
+ void enableLatePatch() { m_latePatch = true; }
private:
JmpSrc(int offset)
: m_offset(offset)
+ , m_latePatch(false)
{
}
- int m_offset;
+ int m_offset : 31;
+ int m_latePatch : 1;
};
class JmpDst {
@@ -563,11 +567,6 @@ namespace ARM {
m_buffer.ensureSpace(insnSpace, constSpace);
}
- int sizeOfConstantPool()
- {
- return m_buffer.sizeOfConstantPool();
- }
-
JmpDst label()
{
return JmpDst(m_buffer.size());
@@ -581,12 +580,11 @@ namespace ARM {
return label();
}
- JmpSrc jmp(Condition cc = AL, int useConstantPool = 0)
+ JmpSrc jmp(Condition cc = AL)
{
- ensureSpace(sizeof(ARMWord), sizeof(ARMWord));
- int s = m_buffer.uncheckedSize();
+ int s = size();
ldr_un_imm(ARM::pc, 0xffffffff, cc);
- m_jumps.append(s | (useConstantPool & 0x1));
+ m_jumps.append(s);
return JmpSrc(s);
}
@@ -595,7 +593,7 @@ namespace ARM {
// Patching helpers
static ARMWord* getLdrImmAddress(ARMWord* insn, uint32_t* constPool = 0);
- static void linkBranch(void* code, JmpSrc from, void* to, int useConstantPool = 0);
+ static void linkBranch(void* code, JmpSrc from, void* to);
static void patchPointerInternal(intptr_t from, void* to)
{
@@ -662,7 +660,7 @@ namespace ARM {
static void linkCall(void* code, JmpSrc from, void* to)
{
- linkBranch(code, from, to, true);
+ linkBranch(code, from, to);
}
static void relinkCall(void* from, void* to)
diff --git a/JavaScriptCore/assembler/ARMv7Assembler.h b/JavaScriptCore/assembler/ARMv7Assembler.h
index 7cf8873..f7e2fb4 100644
--- a/JavaScriptCore/assembler/ARMv7Assembler.h
+++ b/JavaScriptCore/assembler/ARMv7Assembler.h
@@ -442,6 +442,7 @@ public:
{
}
+ void enableLatePatch() { }
private:
JmpSrc(int offset)
: m_offset(offset)
diff --git a/JavaScriptCore/assembler/AbstractMacroAssembler.h b/JavaScriptCore/assembler/AbstractMacroAssembler.h
index 525fe98..f927ed2 100644
--- a/JavaScriptCore/assembler/AbstractMacroAssembler.h
+++ b/JavaScriptCore/assembler/AbstractMacroAssembler.h
@@ -320,6 +320,11 @@ public:
return Call(jump.m_jmp, Linkable);
}
+ void enableLatePatch()
+ {
+ m_jmp.enableLatePatch();
+ }
+
JmpSrc m_jmp;
private:
Flags m_flags;
@@ -356,6 +361,11 @@ public:
masm->m_assembler.linkJump(m_jmp, label.m_label);
}
+ void enableLatePatch()
+ {
+ m_jmp.enableLatePatch();
+ }
+
private:
JmpSrc m_jmp;
};
diff --git a/JavaScriptCore/assembler/AssemblerBufferWithConstantPool.h b/JavaScriptCore/assembler/AssemblerBufferWithConstantPool.h
index af3c3be..f15b7f3 100644
--- a/JavaScriptCore/assembler/AssemblerBufferWithConstantPool.h
+++ b/JavaScriptCore/assembler/AssemblerBufferWithConstantPool.h
@@ -34,8 +34,6 @@
#include "AssemblerBuffer.h"
#include <wtf/SegmentedVector.h>
-#define ASSEMBLER_HAS_CONSTANT_POOL 1
-
namespace JSC {
/*
@@ -86,7 +84,7 @@ namespace JSC {
template <int maxPoolSize, int barrierSize, int maxInstructionSize, class AssemblerType>
class AssemblerBufferWithConstantPool: public AssemblerBuffer {
- typedef SegmentedVector<uint32_t, 512> LoadOffsets;
+ typedef WTF::SegmentedVector<uint32_t, 512> LoadOffsets;
public:
enum {
UniqueConst,
@@ -179,11 +177,6 @@ public:
return AssemblerBuffer::size();
}
- int uncheckedSize()
- {
- return AssemblerBuffer::size();
- }
-
void* executableCopy(ExecutablePool* allocator)
{
flushConstantPool(false);
@@ -214,10 +207,10 @@ public:
}
// This flushing mechanism can be called after any unconditional jumps.
- void flushWithoutBarrier(bool isForced = false)
+ void flushWithoutBarrier()
{
// Flush if constant pool is more than 60% full to avoid overuse of this function.
- if (isForced || 5 * m_numConsts > 3 * maxPoolSize / sizeof(uint32_t))
+ if (5 * m_numConsts > 3 * maxPoolSize / sizeof(uint32_t))
flushConstantPool(false);
}
@@ -226,11 +219,6 @@ public:
return m_pool;
}
- int sizeOfConstantPool()
- {
- return m_numConsts;
- }
-
private:
void correctDeltas(int insnSize)
{
@@ -288,8 +276,7 @@ private:
{
if (m_numConsts == 0)
return;
- int lastConstDelta = m_lastConstDelta > nextInsnSize ? m_lastConstDelta - nextInsnSize : 0;
- if ((m_maxDistance < nextInsnSize + lastConstDelta + barrierSize + (int)sizeof(uint32_t)))
+ if ((m_maxDistance < nextInsnSize + m_lastConstDelta + barrierSize + (int)sizeof(uint32_t)))
flushConstantPool();
}
@@ -297,8 +284,8 @@ private:
{
if (m_numConsts == 0)
return;
- if ((m_maxDistance < nextInsnSize + m_lastConstDelta + nextConstSize + barrierSize + (int)sizeof(uint32_t)) ||
- (m_numConsts * sizeof(uint32_t) + nextConstSize >= maxPoolSize))
+ if ((m_maxDistance < nextInsnSize + m_lastConstDelta + barrierSize + (int)sizeof(uint32_t)) ||
+ (m_numConsts + nextConstSize / sizeof(uint32_t) >= maxPoolSize))
flushConstantPool();
}
diff --git a/JavaScriptCore/assembler/MacroAssemblerARM.h b/JavaScriptCore/assembler/MacroAssemblerARM.h
index 19cbfcb..b04ed13 100644
--- a/JavaScriptCore/assembler/MacroAssemblerARM.h
+++ b/JavaScriptCore/assembler/MacroAssemblerARM.h
@@ -324,20 +324,20 @@ public:
move(src, dest);
}
- Jump branch32(Condition cond, RegisterID left, RegisterID right, int useConstantPool = 0)
+ Jump branch32(Condition cond, RegisterID left, RegisterID right)
{
m_assembler.cmp_r(left, right);
- return Jump(m_assembler.jmp(ARMCondition(cond), useConstantPool));
+ return Jump(m_assembler.jmp(ARMCondition(cond)));
}
- Jump branch32(Condition cond, RegisterID left, Imm32 right, int useConstantPool = 0)
+ Jump branch32(Condition cond, RegisterID left, Imm32 right)
{
if (right.m_isPointer) {
m_assembler.ldr_un_imm(ARM::S0, right.m_value);
m_assembler.cmp_r(left, ARM::S0);
} else
m_assembler.cmp_r(left, m_assembler.getImm(right.m_value, ARM::S0));
- return Jump(m_assembler.jmp(ARMCondition(cond), useConstantPool));
+ return Jump(m_assembler.jmp(ARMCondition(cond)));
}
Jump branch32(Condition cond, RegisterID left, Address right)
@@ -497,7 +497,7 @@ public:
Call nearCall()
{
prepareCall();
- return Call(m_assembler.jmp(ARMAssembler::AL, true), Call::LinkableNear);
+ return Call(m_assembler.jmp(), Call::LinkableNear);
}
Call call(RegisterID target)
@@ -587,7 +587,7 @@ public:
Call call()
{
prepareCall();
- return Call(m_assembler.jmp(ARMAssembler::AL, true), Call::Linkable);
+ return Call(m_assembler.jmp(), Call::Linkable);
}
Call tailRecursiveCall()
@@ -610,7 +610,8 @@ public:
Jump branchPtrWithPatch(Condition cond, RegisterID left, DataLabelPtr& dataLabel, ImmPtr initialRightValue = ImmPtr(0))
{
dataLabel = moveWithPatch(initialRightValue, ARM::S1);
- Jump jump = branch32(cond, left, ARM::S1, true);
+ Jump jump = branch32(cond, left, ARM::S1);
+ jump.enableLatePatch();
return jump;
}
@@ -618,7 +619,8 @@ public:
{
load32(left, ARM::S1);
dataLabel = moveWithPatch(initialRightValue, ARM::S0);
- Jump jump = branch32(cond, ARM::S0, ARM::S1, true);
+ Jump jump = branch32(cond, ARM::S0, ARM::S1);
+ jump.enableLatePatch();
return jump;
}
@@ -720,19 +722,9 @@ protected:
return static_cast<ARMAssembler::Condition>(cond);
}
- void ensureSpace(int insnSpace, int constSpace)
- {
- m_assembler.ensureSpace(insnSpace, constSpace);
- }
-
- int sizeOfConstantPool()
- {
- return m_assembler.sizeOfConstantPool();
- }
-
void prepareCall()
{
- ensureSpace(3 * sizeof(ARMWord), sizeof(ARMWord));
+ m_assembler.ensureSpace(3 * sizeof(ARMWord), sizeof(ARMWord));
// S0 might be used for parameter passing
m_assembler.add_r(ARM::S1, ARM::pc, ARMAssembler::OP2_IMM | 0x4);
diff --git a/JavaScriptCore/assembler/X86Assembler.h b/JavaScriptCore/assembler/X86Assembler.h
index b5b8808..fb58361 100644
--- a/JavaScriptCore/assembler/X86Assembler.h
+++ b/JavaScriptCore/assembler/X86Assembler.h
@@ -231,6 +231,7 @@ public:
{
}
+ void enableLatePatch() { }
private:
JmpSrc(int offset)
: m_offset(offset)
diff --git a/JavaScriptCore/bytecode/CodeBlock.cpp b/JavaScriptCore/bytecode/CodeBlock.cpp
index b63e826..e22f25a 100644
--- a/JavaScriptCore/bytecode/CodeBlock.cpp
+++ b/JavaScriptCore/bytecode/CodeBlock.cpp
@@ -33,8 +33,6 @@
#include "JIT.h"
#include "JSValue.h"
#include "Interpreter.h"
-#include "JSFunction.h"
-#include "JSStaticScopeObject.h"
#include "Debugger.h"
#include "BytecodeGenerator.h"
#include <stdio.h>
@@ -1248,11 +1246,11 @@ void CodeBlock::dumpStatistics()
#endif
}
-CodeBlock::CodeBlock(ExecutableBase* ownerExecutable)
+CodeBlock::CodeBlock(ScopeNode* ownerNode)
: m_numCalleeRegisters(0)
, m_numVars(0)
, m_numParameters(0)
- , m_ownerExecutable(ownerExecutable)
+ , m_ownerNode(ownerNode)
, m_globalData(0)
#ifndef NDEBUG
, m_instructionCount(0)
@@ -1270,17 +1268,17 @@ CodeBlock::CodeBlock(ExecutableBase* ownerExecutable)
#endif
}
-CodeBlock::CodeBlock(ExecutableBase* ownerExecutable, CodeType codeType, PassRefPtr<SourceProvider> sourceProvider, unsigned sourceOffset)
+CodeBlock::CodeBlock(ScopeNode* ownerNode, CodeType codeType, PassRefPtr<SourceProvider> sourceProvider, unsigned sourceOffset)
: m_numCalleeRegisters(0)
, m_numVars(0)
, m_numParameters(0)
- , m_ownerExecutable(ownerExecutable)
+ , m_ownerNode(ownerNode)
, m_globalData(0)
#ifndef NDEBUG
, m_instructionCount(0)
#endif
- , m_needsFullScopeChain(ownerExecutable->needsActivation())
- , m_usesEval(ownerExecutable->usesEval())
+ , m_needsFullScopeChain(ownerNode->needsActivation())
+ , m_usesEval(ownerNode->usesEval())
, m_isNumericCompareFunction(false)
, m_codeType(codeType)
, m_source(sourceProvider)
@@ -1437,10 +1435,15 @@ void CodeBlock::markAggregate(MarkStack& markStack)
markStack.append(m_constantRegisters[i].jsValue());
}
- for (size_t i = 0; i < m_functionExprs.size(); ++i)
- m_functionExprs[i]->markAggregate(markStack);
- for (size_t i = 0; i < m_functionDecls.size(); ++i)
- m_functionDecls[i]->markAggregate(markStack);
+ for (size_t i = 0; i < m_functionExpressions.size(); ++i)
+ m_functionExpressions[i]->body()->markAggregate(markStack);
+
+ if (m_rareData) {
+ for (size_t i = 0; i < m_rareData->m_functions.size(); ++i)
+ m_rareData->m_functions[i]->body()->markAggregate(markStack);
+
+ m_rareData->m_evalCodeCache.markAggregate(markStack);
+ }
}
void CodeBlock::reparseForExceptionInfoIfNecessary(CallFrame* callFrame)
@@ -1462,7 +1465,56 @@ void CodeBlock::reparseForExceptionInfoIfNecessary(CallFrame* callFrame)
scopeChain = scopeChain->next;
}
- m_exceptionInfo.set(m_ownerExecutable->reparseExceptionInfo(m_globalData, scopeChain, this));
+ switch (m_codeType) {
+ case FunctionCode: {
+ FunctionBodyNode* ownerFunctionBodyNode = static_cast<FunctionBodyNode*>(m_ownerNode);
+ RefPtr<FunctionBodyNode> newFunctionBody = m_globalData->parser->reparse<FunctionBodyNode>(m_globalData, ownerFunctionBodyNode);
+ ASSERT(newFunctionBody);
+ newFunctionBody->finishParsing(ownerFunctionBodyNode->copyParameters(), ownerFunctionBodyNode->parameterCount());
+
+ m_globalData->scopeNodeBeingReparsed = newFunctionBody.get();
+
+ CodeBlock& newCodeBlock = newFunctionBody->bytecodeForExceptionInfoReparse(scopeChain, this);
+ ASSERT(newCodeBlock.m_exceptionInfo);
+ ASSERT(newCodeBlock.m_instructionCount == m_instructionCount);
+
+#if ENABLE(JIT)
+ JIT::compile(m_globalData, &newCodeBlock);
+ ASSERT(newFunctionBody->generatedJITCode().size() == ownerNode()->generatedJITCode().size());
+#endif
+
+ m_exceptionInfo.set(newCodeBlock.m_exceptionInfo.release());
+
+ m_globalData->scopeNodeBeingReparsed = 0;
+
+ break;
+ }
+ case EvalCode: {
+ EvalNode* ownerEvalNode = static_cast<EvalNode*>(m_ownerNode);
+ RefPtr<EvalNode> newEvalBody = m_globalData->parser->reparse<EvalNode>(m_globalData, ownerEvalNode);
+
+ m_globalData->scopeNodeBeingReparsed = newEvalBody.get();
+
+ EvalCodeBlock& newCodeBlock = newEvalBody->bytecodeForExceptionInfoReparse(scopeChain, this);
+ ASSERT(newCodeBlock.m_exceptionInfo);
+ ASSERT(newCodeBlock.m_instructionCount == m_instructionCount);
+
+#if ENABLE(JIT)
+ JIT::compile(m_globalData, &newCodeBlock);
+ ASSERT(newEvalBody->generatedJITCode().size() == ownerNode()->generatedJITCode().size());
+#endif
+
+ m_exceptionInfo.set(newCodeBlock.m_exceptionInfo.release());
+
+ m_globalData->scopeNodeBeingReparsed = 0;
+
+ break;
+ }
+ default:
+ // CodeBlocks for Global code blocks are transient and therefore to not gain from
+ // from throwing out there exception information.
+ ASSERT_NOT_REACHED();
+ }
}
HandlerInfo* CodeBlock::handlerForBytecodeOffset(unsigned bytecodeOffset)
@@ -1493,7 +1545,7 @@ int CodeBlock::lineNumberForBytecodeOffset(CallFrame* callFrame, unsigned byteco
ASSERT(m_exceptionInfo);
if (!m_exceptionInfo->m_lineInfo.size())
- return m_ownerExecutable->source().firstLine(); // Empty function
+ return m_ownerNode->source().firstLine(); // Empty function
int low = 0;
int high = m_exceptionInfo->m_lineInfo.size();
@@ -1506,7 +1558,7 @@ int CodeBlock::lineNumberForBytecodeOffset(CallFrame* callFrame, unsigned byteco
}
if (!low)
- return m_ownerExecutable->source().firstLine();
+ return m_ownerNode->source().firstLine();
return m_exceptionInfo->m_lineInfo[low - 1].lineNumber;
}
@@ -1649,6 +1701,18 @@ bool CodeBlock::hasGlobalResolveInfoAtBytecodeOffset(unsigned bytecodeOffset)
}
#endif
+#if ENABLE(JIT)
+void CodeBlock::setJITCode(JITCode jitCode)
+{
+ ASSERT(m_codeType != NativeCode);
+ ownerNode()->setJITCode(jitCode);
+#if !ENABLE(OPCODE_SAMPLING)
+ if (!BytecodeGenerator::dumpsGeneratedCode())
+ m_instructions.clear();
+#endif
+}
+#endif
+
void CodeBlock::shrinkToFit()
{
m_instructions.shrinkToFit();
@@ -1664,8 +1728,7 @@ void CodeBlock::shrinkToFit()
#endif
m_identifiers.shrinkToFit();
- m_functionDecls.shrinkToFit();
- m_functionExprs.shrinkToFit();
+ m_functionExpressions.shrinkToFit();
m_constantRegisters.shrinkToFit();
if (m_exceptionInfo) {
@@ -1676,6 +1739,7 @@ void CodeBlock::shrinkToFit()
if (m_rareData) {
m_rareData->m_exceptionHandlers.shrinkToFit();
+ m_rareData->m_functions.shrinkToFit();
m_rareData->m_regexps.shrinkToFit();
m_rareData->m_immediateSwitchJumpTables.shrinkToFit();
m_rareData->m_characterSwitchJumpTables.shrinkToFit();
diff --git a/JavaScriptCore/bytecode/CodeBlock.h b/JavaScriptCore/bytecode/CodeBlock.h
index fdeb4db..39b1db3 100644
--- a/JavaScriptCore/bytecode/CodeBlock.h
+++ b/JavaScriptCore/bytecode/CodeBlock.h
@@ -248,22 +248,11 @@ namespace JSC {
}
#endif
- struct ExceptionInfo : FastAllocBase {
- Vector<ExpressionRangeInfo> m_expressionInfo;
- Vector<LineInfo> m_lineInfo;
- Vector<GetByIdExceptionInfo> m_getByIdExceptionInfo;
-
-#if ENABLE(JIT)
- Vector<CallReturnOffsetToBytecodeIndex> m_callReturnIndexVector;
-#endif
- };
-
class CodeBlock : public FastAllocBase {
friend class JIT;
- protected:
- CodeBlock(ExecutableBase* ownerExecutable);
- CodeBlock(ExecutableBase* ownerExecutable, CodeType, PassRefPtr<SourceProvider>, unsigned sourceOffset);
public:
+ CodeBlock(ScopeNode* ownerNode);
+ CodeBlock(ScopeNode* ownerNode, CodeType, PassRefPtr<SourceProvider>, unsigned sourceOffset);
~CodeBlock();
void markAggregate(MarkStack&);
@@ -340,7 +329,7 @@ namespace JSC {
unsigned getBytecodeIndex(CallFrame* callFrame, ReturnAddressPtr returnAddress)
{
reparseForExceptionInfoIfNecessary(callFrame);
- return binaryChop<CallReturnOffsetToBytecodeIndex, unsigned, getCallReturnOffset>(callReturnIndexVector().begin(), callReturnIndexVector().size(), ownerExecutable()->generatedJITCode().offsetOf(returnAddress.value()))->bytecodeIndex;
+ return binaryChop<CallReturnOffsetToBytecodeIndex, unsigned, getCallReturnOffset>(callReturnIndexVector().begin(), callReturnIndexVector().size(), ownerNode()->generatedJITCode().offsetOf(returnAddress.value()))->bytecodeIndex;
}
bool functionRegisterForBytecodeOffset(unsigned bytecodeOffset, int& functionRegisterIndex);
@@ -350,19 +339,17 @@ namespace JSC {
bool isNumericCompareFunction() { return m_isNumericCompareFunction; }
Vector<Instruction>& instructions() { return m_instructions; }
- void discardBytecode() { m_instructions.clear(); }
-
#ifndef NDEBUG
- unsigned instructionCount() { return m_instructionCount; }
void setInstructionCount(unsigned instructionCount) { m_instructionCount = instructionCount; }
#endif
#if ENABLE(JIT)
- JITCode& getJITCode() { return ownerExecutable()->generatedJITCode(); }
- ExecutablePool* executablePool() { return ownerExecutable()->getExecutablePool(); }
+ JITCode& getJITCode() { return ownerNode()->generatedJITCode(); }
+ void setJITCode(JITCode);
+ ExecutablePool* executablePool() { return ownerNode()->getExecutablePool(); }
#endif
- ExecutableBase* ownerExecutable() const { return m_ownerExecutable; }
+ ScopeNode* ownerNode() const { return m_ownerNode; }
void setGlobalData(JSGlobalData* globalData) { m_globalData = globalData; }
@@ -417,7 +404,6 @@ namespace JSC {
bool hasExceptionInfo() const { return m_exceptionInfo; }
void clearExceptionInfo() { m_exceptionInfo.clear(); }
- ExceptionInfo* extractExceptionInfo() { ASSERT(m_exceptionInfo); return m_exceptionInfo.release(); }
void addExpressionInfo(const ExpressionRangeInfo& expressionInfo) { ASSERT(m_exceptionInfo); m_exceptionInfo->m_expressionInfo.append(expressionInfo); }
void addGetByIdExceptionInfo(const GetByIdExceptionInfo& info) { ASSERT(m_exceptionInfo); m_exceptionInfo->m_getByIdExceptionInfo.append(info); }
@@ -442,11 +428,13 @@ namespace JSC {
ALWAYS_INLINE bool isConstantRegisterIndex(int index) { return index >= FirstConstantRegisterIndex; }
ALWAYS_INLINE JSValue getConstant(int index) const { return m_constantRegisters[index - FirstConstantRegisterIndex].jsValue(); }
- unsigned addFunctionDecl(PassRefPtr<FunctionExecutable> n) { unsigned size = m_functionDecls.size(); m_functionDecls.append(n); return size; }
- FunctionExecutable* functionDecl(int index) { return m_functionDecls[index].get(); }
- int numberOfFunctionDecls() { return m_functionDecls.size(); }
- unsigned addFunctionExpr(PassRefPtr<FunctionExecutable> n) { unsigned size = m_functionExprs.size(); m_functionExprs.append(n); return size; }
- FunctionExecutable* functionExpr(int index) { return m_functionExprs[index].get(); }
+ unsigned addFunctionExpression(FuncExprNode* n) { unsigned size = m_functionExpressions.size(); m_functionExpressions.append(n); return size; }
+ FuncExprNode* functionExpression(int index) const { return m_functionExpressions[index].get(); }
+
+ unsigned addFunction(FuncDeclNode* n) { createRareDataIfNecessary(); unsigned size = m_rareData->m_functions.size(); m_rareData->m_functions.append(n); return size; }
+ FuncDeclNode* function(int index) const { ASSERT(m_rareData); return m_rareData->m_functions[index].get(); }
+
+ bool hasFunctions() const { return m_functionExpressions.size() || (m_rareData && m_rareData->m_functions.size()); }
unsigned addRegExp(RegExp* r) { createRareDataIfNecessary(); unsigned size = m_rareData->m_regexps.size(); m_rareData->m_regexps.append(r); return size; }
RegExp* regexp(int index) const { ASSERT(m_rareData); return m_rareData->m_regexps[index].get(); }
@@ -493,7 +481,7 @@ namespace JSC {
m_rareData.set(new RareData);
}
- ExecutableBase* m_ownerExecutable;
+ ScopeNode* m_ownerNode;
JSGlobalData* m_globalData;
Vector<Instruction> m_instructions;
@@ -529,17 +517,26 @@ namespace JSC {
// Constant Pool
Vector<Identifier> m_identifiers;
Vector<Register> m_constantRegisters;
- Vector<RefPtr<FunctionExecutable> > m_functionDecls;
- Vector<RefPtr<FunctionExecutable> > m_functionExprs;
+ Vector<RefPtr<FuncExprNode> > m_functionExpressions;
SymbolTable m_symbolTable;
+ struct ExceptionInfo : FastAllocBase {
+ Vector<ExpressionRangeInfo> m_expressionInfo;
+ Vector<LineInfo> m_lineInfo;
+ Vector<GetByIdExceptionInfo> m_getByIdExceptionInfo;
+
+#if ENABLE(JIT)
+ Vector<CallReturnOffsetToBytecodeIndex> m_callReturnIndexVector;
+#endif
+ };
OwnPtr<ExceptionInfo> m_exceptionInfo;
struct RareData : FastAllocBase {
Vector<HandlerInfo> m_exceptionHandlers;
// Rare Constants
+ Vector<RefPtr<FuncDeclNode> > m_functions;
Vector<RefPtr<RegExp> > m_regexps;
// Jump Tables
@@ -559,16 +556,16 @@ namespace JSC {
// Program code is not marked by any function, so we make the global object
// responsible for marking it.
- class GlobalCodeBlock : public CodeBlock {
+ class ProgramCodeBlock : public CodeBlock {
public:
- GlobalCodeBlock(ExecutableBase* ownerExecutable, CodeType codeType, PassRefPtr<SourceProvider> sourceProvider, unsigned sourceOffset, JSGlobalObject* globalObject)
- : CodeBlock(ownerExecutable, codeType, sourceProvider, sourceOffset)
+ ProgramCodeBlock(ScopeNode* ownerNode, CodeType codeType, JSGlobalObject* globalObject, PassRefPtr<SourceProvider> sourceProvider)
+ : CodeBlock(ownerNode, codeType, sourceProvider, 0)
, m_globalObject(globalObject)
{
m_globalObject->codeBlocks().add(this);
}
- ~GlobalCodeBlock()
+ ~ProgramCodeBlock()
{
if (m_globalObject)
m_globalObject->codeBlocks().remove(this);
@@ -580,18 +577,10 @@ namespace JSC {
JSGlobalObject* m_globalObject; // For program and eval nodes, the global object that marks the constant pool.
};
- class ProgramCodeBlock : public GlobalCodeBlock {
+ class EvalCodeBlock : public ProgramCodeBlock {
public:
- ProgramCodeBlock(ProgramExecutable* ownerExecutable, CodeType codeType, JSGlobalObject* globalObject, PassRefPtr<SourceProvider> sourceProvider)
- : GlobalCodeBlock(ownerExecutable, codeType, sourceProvider, 0, globalObject)
- {
- }
- };
-
- class EvalCodeBlock : public GlobalCodeBlock {
- public:
- EvalCodeBlock(EvalExecutable* ownerExecutable, JSGlobalObject* globalObject, PassRefPtr<SourceProvider> sourceProvider, int baseScopeDepth)
- : GlobalCodeBlock(ownerExecutable, EvalCode, sourceProvider, 0, globalObject)
+ EvalCodeBlock(ScopeNode* ownerNode, JSGlobalObject* globalObject, PassRefPtr<SourceProvider> sourceProvider, int baseScopeDepth)
+ : ProgramCodeBlock(ownerNode, EvalCode, globalObject, sourceProvider)
, m_baseScopeDepth(baseScopeDepth)
{
}
@@ -602,22 +591,6 @@ namespace JSC {
int m_baseScopeDepth;
};
- class FunctionCodeBlock : public CodeBlock {
- public:
- FunctionCodeBlock(FunctionExecutable* ownerExecutable, CodeType codeType, PassRefPtr<SourceProvider> sourceProvider, unsigned sourceOffset)
- : CodeBlock(ownerExecutable, codeType, sourceProvider, sourceOffset)
- {
- }
- };
-
- class NativeCodeBlock : public CodeBlock {
- public:
- NativeCodeBlock(FunctionExecutable* ownerExecutable)
- : CodeBlock(ownerExecutable)
- {
- }
- };
-
inline Register& ExecState::r(int index)
{
CodeBlock* codeBlock = this->codeBlock();
diff --git a/JavaScriptCore/bytecode/EvalCodeCache.h b/JavaScriptCore/bytecode/EvalCodeCache.h
index c486e42..986525c 100644
--- a/JavaScriptCore/bytecode/EvalCodeCache.h
+++ b/JavaScriptCore/bytecode/EvalCodeCache.h
@@ -29,7 +29,6 @@
#ifndef EvalCodeCache_h
#define EvalCodeCache_h
-#include "Executable.h"
#include "JSGlobalObject.h"
#include "Nodes.h"
#include "Parser.h"
@@ -42,33 +41,44 @@ namespace JSC {
class EvalCodeCache {
public:
- PassRefPtr<CacheableEvalExecutable> get(ExecState* exec, const UString& evalSource, ScopeChainNode* scopeChain, JSValue& exceptionValue)
+ PassRefPtr<EvalNode> get(ExecState* exec, const UString& evalSource, ScopeChainNode* scopeChain, JSValue& exceptionValue)
{
- RefPtr<CacheableEvalExecutable> evalExecutable;
+ RefPtr<EvalNode> evalNode;
if (evalSource.size() < maxCacheableSourceLength && (*scopeChain->begin())->isVariableObject())
- evalExecutable = m_cacheMap.get(evalSource.rep());
+ evalNode = m_cacheMap.get(evalSource.rep());
- if (!evalExecutable) {
- evalExecutable = CacheableEvalExecutable::create(makeSource(evalSource));
- exceptionValue = evalExecutable->parse(exec);
- if (exceptionValue)
+ if (!evalNode) {
+ int errorLine;
+ UString errorMessage;
+
+ SourceCode source = makeSource(evalSource);
+ evalNode = exec->globalData().parser->parse<EvalNode>(exec, exec->dynamicGlobalObject()->debugger(), source, &errorLine, &errorMessage);
+ if (evalNode) {
+ if (evalSource.size() < maxCacheableSourceLength && (*scopeChain->begin())->isVariableObject() && m_cacheMap.size() < maxCacheEntries)
+ m_cacheMap.set(evalSource.rep(), evalNode);
+ } else {
+ exceptionValue = Error::create(exec, SyntaxError, errorMessage, errorLine, source.provider()->asID(), 0);
return 0;
-
- if (evalSource.size() < maxCacheableSourceLength && (*scopeChain->begin())->isVariableObject() && m_cacheMap.size() < maxCacheEntries)
- m_cacheMap.set(evalSource.rep(), evalExecutable);
+ }
}
- return evalExecutable.release();
+ return evalNode.release();
}
bool isEmpty() const { return m_cacheMap.isEmpty(); }
+ void markAggregate(MarkStack& markStack)
+ {
+ EvalCacheMap::iterator end = m_cacheMap.end();
+ for (EvalCacheMap::iterator ptr = m_cacheMap.begin(); ptr != end; ++ptr)
+ ptr->second->markAggregate(markStack);
+ }
private:
static const int maxCacheableSourceLength = 256;
static const int maxCacheEntries = 64;
- typedef HashMap<RefPtr<UString::Rep>, RefPtr<CacheableEvalExecutable> > EvalCacheMap;
+ typedef HashMap<RefPtr<UString::Rep>, RefPtr<EvalNode> > EvalCacheMap;
EvalCacheMap m_cacheMap;
};
diff --git a/JavaScriptCore/bytecode/SamplingTool.cpp b/JavaScriptCore/bytecode/SamplingTool.cpp
index 8d0faa1..8651723 100644
--- a/JavaScriptCore/bytecode/SamplingTool.cpp
+++ b/JavaScriptCore/bytecode/SamplingTool.cpp
@@ -197,7 +197,7 @@ void SamplingTool::doRun()
#if ENABLE(CODEBLOCK_SAMPLING)
if (CodeBlock* codeBlock = sample.codeBlock()) {
MutexLocker locker(m_scopeSampleMapMutex);
- ScopeSampleRecord* record = m_scopeSampleMap->get(codeBlock->ownerExecutable());
+ ScopeSampleRecord* record = m_scopeSampleMap->get(codeBlock->ownerNode());
ASSERT(record);
record->sample(codeBlock, sample.vPC());
}
diff --git a/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp b/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp
index a4fd0d3..59537b6 100644
--- a/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp
+++ b/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp
@@ -256,9 +256,9 @@ BytecodeGenerator::BytecodeGenerator(ProgramNode* programNode, const Debugger* d
m_nextGlobalIndex -= symbolTable->size();
for (size_t i = 0; i < functionStack.size(); ++i) {
- FunctionBodyNode* function = functionStack[i];
- globalObject->removeDirect(function->ident()); // Make sure our new function is not shadowed by an old property.
- emitNewFunction(addGlobalVar(function->ident(), false), function);
+ FuncDeclNode* funcDecl = functionStack[i];
+ globalObject->removeDirect(funcDecl->m_ident); // Make sure our new function is not shadowed by an old property.
+ emitNewFunction(addGlobalVar(funcDecl->m_ident, false), funcDecl);
}
Vector<RegisterID*, 32> newVars;
@@ -272,8 +272,8 @@ BytecodeGenerator::BytecodeGenerator(ProgramNode* programNode, const Debugger* d
emitLoad(newVars[i], jsUndefined());
} else {
for (size_t i = 0; i < functionStack.size(); ++i) {
- FunctionBodyNode* function = functionStack[i];
- globalObject->putWithAttributes(exec, function->ident(), new (exec) JSFunction(exec, adoptRef(new FunctionExecutable(function->ident(), function)), scopeChain.node()), DontDelete);
+ FuncDeclNode* funcDecl = functionStack[i];
+ globalObject->putWithAttributes(exec, funcDecl->m_ident, funcDecl->makeFunction(exec, scopeChain.node()), DontDelete);
}
for (size_t i = 0; i < varStack.size(); ++i) {
if (globalObject->hasProperty(exec, varStack[i].first))
@@ -339,10 +339,10 @@ BytecodeGenerator::BytecodeGenerator(FunctionBodyNode* functionBody, const Debug
const DeclarationStacks::FunctionStack& functionStack = functionBody->functionStack();
for (size_t i = 0; i < functionStack.size(); ++i) {
- FunctionBodyNode* function = functionStack[i];
- const Identifier& ident = function->ident();
+ FuncDeclNode* funcDecl = functionStack[i];
+ const Identifier& ident = funcDecl->m_ident;
m_functions.add(ident.ustring().rep());
- emitNewFunction(addVar(ident, false), function);
+ emitNewFunction(addVar(ident, false), funcDecl);
}
const DeclarationStacks::VarStack& varStack = functionBody->varStack();
@@ -397,12 +397,6 @@ BytecodeGenerator::BytecodeGenerator(EvalNode* evalNode, const Debugger* debugge
codeBlock->setGlobalData(m_globalData);
m_codeBlock->m_numParameters = 1; // Allocate space for "this"
- const DeclarationStacks::FunctionStack& functionStack = evalNode->functionStack();
- for (size_t i = 0; i < functionStack.size(); ++i) {
- FunctionBodyNode* function = functionStack[i];
- m_codeBlock->addFunctionDecl(adoptRef(new FunctionExecutable(function->ident(), function)));
- }
-
preserveLastVar();
}
@@ -476,8 +470,7 @@ RegisterID* BytecodeGenerator::constRegisterFor(const Identifier& ident)
return 0;
SymbolTableEntry entry = symbolTable().get(ident.ustring().rep());
- if (entry.isNull())
- return 0;
+ ASSERT(!entry.isNull());
return &registerFor(entry.getIndex());
}
@@ -772,6 +765,18 @@ PassRefPtr<Label> BytecodeGenerator::emitJumpIfNotFunctionApply(RegisterID* cond
return target;
}
+unsigned BytecodeGenerator::addConstant(FuncDeclNode* n)
+{
+ // No need to explicitly unique function body nodes -- they're unique already.
+ return m_codeBlock->addFunction(n);
+}
+
+unsigned BytecodeGenerator::addConstant(FuncExprNode* n)
+{
+ // No need to explicitly unique function expression nodes -- they're unique already.
+ return m_codeBlock->addFunctionExpression(n);
+}
+
unsigned BytecodeGenerator::addConstant(const Identifier& ident)
{
UString::Rep* rep = ident.ustring().rep();
@@ -1308,13 +1313,11 @@ RegisterID* BytecodeGenerator::emitNewArray(RegisterID* dst, ElementNode* elemen
return dst;
}
-RegisterID* BytecodeGenerator::emitNewFunction(RegisterID* dst, FunctionBodyNode* function)
+RegisterID* BytecodeGenerator::emitNewFunction(RegisterID* dst, FuncDeclNode* n)
{
- unsigned index = m_codeBlock->addFunctionDecl(adoptRef(new FunctionExecutable(function->ident(), function)));
-
emitOpcode(op_new_func);
instructions().append(dst->index());
- instructions().append(index);
+ instructions().append(addConstant(n));
return dst;
}
@@ -1329,12 +1332,9 @@ RegisterID* BytecodeGenerator::emitNewRegExp(RegisterID* dst, RegExp* regExp)
RegisterID* BytecodeGenerator::emitNewFunctionExpression(RegisterID* r0, FuncExprNode* n)
{
- FunctionBodyNode* function = n->body();
- unsigned index = m_codeBlock->addFunctionExpr(adoptRef(new FunctionExecutable(function->ident(), function)));
-
emitOpcode(op_new_func_exp);
instructions().append(r0->index());
- instructions().append(index);
+ instructions().append(addConstant(n));
return r0;
}
@@ -1805,7 +1805,7 @@ void BytecodeGenerator::emitSubroutineReturn(RegisterID* retAddrSrc)
instructions().append(retAddrSrc->index());
}
-void BytecodeGenerator::emitPushNewScope(RegisterID* dst, const Identifier& property, RegisterID* value)
+void BytecodeGenerator::emitPushNewScope(RegisterID* dst, Identifier& property, RegisterID* value)
{
ControlFlowContext context;
context.isFinallyBlock = false;
diff --git a/JavaScriptCore/bytecompiler/BytecodeGenerator.h b/JavaScriptCore/bytecompiler/BytecodeGenerator.h
index 79f0093..c273597 100644
--- a/JavaScriptCore/bytecompiler/BytecodeGenerator.h
+++ b/JavaScriptCore/bytecompiler/BytecodeGenerator.h
@@ -61,7 +61,7 @@ namespace JSC {
FinallyContext finallyContext;
};
- class BytecodeGenerator : public FastAllocBase {
+ class BytecodeGenerator : public WTF::FastAllocBase {
public:
typedef DeclarationStacks::VarStack VarStack;
typedef DeclarationStacks::FunctionStack FunctionStack;
@@ -254,7 +254,7 @@ namespace JSC {
RegisterID* emitNewObject(RegisterID* dst);
RegisterID* emitNewArray(RegisterID* dst, ElementNode*); // stops at first elision
- RegisterID* emitNewFunction(RegisterID* dst, FunctionBodyNode* body);
+ RegisterID* emitNewFunction(RegisterID* dst, FuncDeclNode* func);
RegisterID* emitNewFunctionExpression(RegisterID* dst, FuncExprNode* func);
RegisterID* emitNewRegExp(RegisterID* dst, RegExp* regExp);
@@ -318,7 +318,7 @@ namespace JSC {
RegisterID* emitCatch(RegisterID*, Label* start, Label* end);
void emitThrow(RegisterID* exc) { emitUnaryNoDstOp(op_throw, exc); }
RegisterID* emitNewError(RegisterID* dst, ErrorType type, JSValue message);
- void emitPushNewScope(RegisterID* dst, const Identifier& property, RegisterID* value);
+ void emitPushNewScope(RegisterID* dst, Identifier& property, RegisterID* value);
RegisterID* emitPushScope(RegisterID* scope);
void emitPopScope();
@@ -413,6 +413,8 @@ namespace JSC {
return m_globals[-index - 1];
}
+ unsigned addConstant(FuncDeclNode*);
+ unsigned addConstant(FuncExprNode*);
unsigned addConstant(const Identifier&);
RegisterID* addConstantValue(JSValue);
unsigned addRegExp(RegExp*);
@@ -443,12 +445,12 @@ namespace JSC {
RegisterID m_thisRegister;
RegisterID m_argumentsRegister;
int m_activationRegisterIndex;
- SegmentedVector<RegisterID, 32> m_constantPoolRegisters;
- SegmentedVector<RegisterID, 32> m_calleeRegisters;
- SegmentedVector<RegisterID, 32> m_parameters;
- SegmentedVector<RegisterID, 32> m_globals;
- SegmentedVector<Label, 32> m_labels;
- SegmentedVector<LabelScope, 8> m_labelScopes;
+ WTF::SegmentedVector<RegisterID, 32> m_constantPoolRegisters;
+ WTF::SegmentedVector<RegisterID, 32> m_calleeRegisters;
+ WTF::SegmentedVector<RegisterID, 32> m_parameters;
+ WTF::SegmentedVector<RegisterID, 32> m_globals;
+ WTF::SegmentedVector<Label, 32> m_labels;
+ WTF::SegmentedVector<LabelScope, 8> m_labelScopes;
RefPtr<RegisterID> m_lastVar;
int m_finallyDepth;
int m_dynamicScopeDepth;
diff --git a/JavaScriptCore/debugger/Debugger.cpp b/JavaScriptCore/debugger/Debugger.cpp
index dcc6ef7..7d791e7 100644
--- a/JavaScriptCore/debugger/Debugger.cpp
+++ b/JavaScriptCore/debugger/Debugger.cpp
@@ -22,16 +22,16 @@
#include "config.h"
#include "Debugger.h"
-#include "CollectorHeapIterator.h"
-#include "Error.h"
-#include "Interpreter.h"
-#include "JSFunction.h"
#include "JSGlobalObject.h"
+#include "Interpreter.h"
#include "Parser.h"
-#include "Protect.h"
namespace JSC {
+Debugger::Debugger()
+{
+}
+
Debugger::~Debugger()
{
HashSet<JSGlobalObject*>::iterator end = m_globalObjects.end();
@@ -53,60 +53,18 @@ void Debugger::detach(JSGlobalObject* globalObject)
globalObject->setDebugger(0);
}
-void Debugger::recompileAllJSFunctions(JSGlobalData* globalData)
-{
- // If JavaScript is running, it's not safe to recompile, since we'll end
- // up throwing away code that is live on the stack.
- ASSERT(!globalData->dynamicGlobalObject);
- if (globalData->dynamicGlobalObject)
- return;
-
- typedef HashSet<FunctionExecutable*> FunctionExecutableSet;
- typedef HashMap<SourceProvider*, ExecState*> SourceProviderMap;
-
- FunctionExecutableSet functionExecutables;
- SourceProviderMap sourceProviders;
-
- Heap::iterator heapEnd = globalData->heap.primaryHeapEnd();
- for (Heap::iterator it = globalData->heap.primaryHeapBegin(); it != heapEnd; ++it) {
- if (!(*it)->inherits(&JSFunction::info))
- continue;
-
- JSFunction* function = asFunction(*it);
- if (function->executable()->isHostFunction())
- continue;
-
- FunctionExecutable* executable = function->executable();
-
- // Check if the function is already in the set - if so,
- // we've already retranslated it, nothing to do here.
- if (!functionExecutables.add(executable).second)
- continue;
-
- ExecState* exec = function->scope().globalObject()->JSGlobalObject::globalExec();
- executable->recompile(exec);
- if (function->scope().globalObject()->debugger() == this)
- sourceProviders.add(executable->source().provider(), exec);
- }
-
-
- // Call sourceParsed() after reparsing all functions because it will execute
- // JavaScript in the inspector.
- SourceProviderMap::const_iterator end = sourceProviders.end();
- for (SourceProviderMap::const_iterator iter = sourceProviders.begin(); iter != end; ++iter)
- sourceParsed(iter->second, SourceCode(iter->first), -1, 0);
-}
-
JSValue evaluateInGlobalCallFrame(const UString& script, JSValue& exception, JSGlobalObject* globalObject)
{
CallFrame* globalCallFrame = globalObject->globalExec();
- EvalExecutable eval(makeSource(script));
- JSObject* error = eval.parse(globalCallFrame);
- if (error)
- return error;
+ int errLine;
+ UString errMsg;
+ SourceCode source = makeSource(script);
+ RefPtr<EvalNode> evalNode = globalObject->globalData()->parser->parse<EvalNode>(globalCallFrame, globalObject->debugger(), source, &errLine, &errMsg);
+ if (!evalNode)
+ return Error::create(globalCallFrame, SyntaxError, errMsg, errLine, source.provider()->asID(), source.provider()->url());
- return globalObject->globalData()->interpreter->execute(&eval, globalCallFrame, globalObject, globalCallFrame->scopeChain(), &exception);
+ return globalObject->globalData()->interpreter->execute(evalNode.get(), globalCallFrame, globalObject, globalCallFrame->scopeChain(), &exception);
}
} // namespace JSC
diff --git a/JavaScriptCore/debugger/Debugger.h b/JavaScriptCore/debugger/Debugger.h
index 3ee9767..98d0935 100644
--- a/JavaScriptCore/debugger/Debugger.h
+++ b/JavaScriptCore/debugger/Debugger.h
@@ -1,7 +1,7 @@
/*
* Copyright (C) 1999-2001 Harri Porten (porten@kde.org)
* Copyright (C) 2001 Peter Kelly (pmk@post.com)
- * Copyright (C) 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2008 Apple Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -22,42 +22,40 @@
#ifndef Debugger_h
#define Debugger_h
-#include <wtf/HashSet.h>
+#include "Protect.h"
namespace JSC {
class DebuggerCallFrame;
class ExecState;
- class JSGlobalData;
class JSGlobalObject;
- class JSValue;
class SourceCode;
class UString;
class Debugger {
public:
+ Debugger();
virtual ~Debugger();
void attach(JSGlobalObject*);
virtual void detach(JSGlobalObject*);
- virtual void sourceParsed(ExecState*, const SourceCode&, int errorLineNumber, const UString& errorMessage) = 0;
- virtual void exception(const DebuggerCallFrame&, intptr_t sourceID, int lineNumber) = 0;
- virtual void atStatement(const DebuggerCallFrame&, intptr_t sourceID, int lineNumber) = 0;
- virtual void callEvent(const DebuggerCallFrame&, intptr_t sourceID, int lineNumber) = 0;
- virtual void returnEvent(const DebuggerCallFrame&, intptr_t sourceID, int lineNumber) = 0;
+ virtual void sourceParsed(ExecState*, const SourceCode&, int errorLine, const UString& errorMsg) = 0;
+ virtual void exception(const DebuggerCallFrame&, intptr_t sourceID, int lineno) = 0;
+ virtual void atStatement(const DebuggerCallFrame&, intptr_t sourceID, int lineno) = 0;
+ virtual void callEvent(const DebuggerCallFrame&, intptr_t sourceID, int lineno) = 0;
+ virtual void returnEvent(const DebuggerCallFrame&, intptr_t sourceID, int lineno) = 0;
- virtual void willExecuteProgram(const DebuggerCallFrame&, intptr_t sourceID, int lineNumber) = 0;
- virtual void didExecuteProgram(const DebuggerCallFrame&, intptr_t sourceID, int lineNumber) = 0;
- virtual void didReachBreakpoint(const DebuggerCallFrame&, intptr_t sourceID, int lineNumber) = 0;
-
- void recompileAllJSFunctions(JSGlobalData*);
+ virtual void willExecuteProgram(const DebuggerCallFrame&, intptr_t sourceID, int lineno) = 0;
+ virtual void didExecuteProgram(const DebuggerCallFrame&, intptr_t sourceID, int lineno) = 0;
+ virtual void didReachBreakpoint(const DebuggerCallFrame&, intptr_t sourceID, int lineno) = 0;
private:
HashSet<JSGlobalObject*> m_globalObjects;
};
- // This function exists only for backwards compatibility with existing WebScriptDebugger clients.
+ // This method exists only for backwards compatibility with existing
+ // WebScriptDebugger clients
JSValue evaluateInGlobalCallFrame(const UString&, JSValue& exception, JSGlobalObject*);
} // namespace JSC
diff --git a/JavaScriptCore/debugger/DebuggerCallFrame.cpp b/JavaScriptCore/debugger/DebuggerCallFrame.cpp
index f2afba6..cd8702b 100644
--- a/JavaScriptCore/debugger/DebuggerCallFrame.cpp
+++ b/JavaScriptCore/debugger/DebuggerCallFrame.cpp
@@ -41,7 +41,7 @@ const UString* DebuggerCallFrame::functionName() const
if (!m_callFrame->codeBlock())
return 0;
- JSFunction* function = asFunction(m_callFrame->callee());
+ JSFunction* function = static_cast<JSFunction*>(m_callFrame->callee());
if (!function)
return 0;
return &function->name(&m_callFrame->globalData());
@@ -52,7 +52,7 @@ UString DebuggerCallFrame::calculatedFunctionName() const
if (!m_callFrame->codeBlock())
return 0;
- JSFunction* function = asFunction(m_callFrame->callee());
+ JSFunction* function = static_cast<JSFunction*>(m_callFrame->callee());
if (!function)
return 0;
return function->calculatedDisplayName(&m_callFrame->globalData());
@@ -79,12 +79,14 @@ JSValue DebuggerCallFrame::evaluate(const UString& script, JSValue& exception) c
if (!m_callFrame->codeBlock())
return JSValue();
- EvalExecutable eval(makeSource(script));
- JSObject* error = eval.parse(m_callFrame);
- if (error)
- return error;
+ int errLine;
+ UString errMsg;
+ SourceCode source = makeSource(script);
+ RefPtr<EvalNode> evalNode = m_callFrame->scopeChain()->globalData->parser->parse<EvalNode>(m_callFrame, m_callFrame->dynamicGlobalObject()->debugger(), source, &errLine, &errMsg);
+ if (!evalNode)
+ return Error::create(m_callFrame, SyntaxError, errMsg, errLine, source.provider()->asID(), source.provider()->url());
- return m_callFrame->scopeChain()->globalData->interpreter->execute(&eval, m_callFrame, thisObject(), m_callFrame->scopeChain(), &exception);
+ return m_callFrame->scopeChain()->globalData->interpreter->execute(evalNode.get(), m_callFrame, thisObject(), m_callFrame->scopeChain(), &exception);
}
} // namespace JSC
diff --git a/JavaScriptCore/interpreter/CachedCall.h b/JavaScriptCore/interpreter/CachedCall.h
index b22753e..767c262 100644
--- a/JavaScriptCore/interpreter/CachedCall.h
+++ b/JavaScriptCore/interpreter/CachedCall.h
@@ -40,7 +40,7 @@ namespace JSC {
, m_exception(exception)
, m_globalObjectScope(callFrame, callFrame->globalData().dynamicGlobalObject ? callFrame->globalData().dynamicGlobalObject : function->scope().node()->globalObject())
{
- m_closure = m_interpreter->prepareForRepeatCall(function->executable(), callFrame, function, argCount, function->scope().node(), exception);
+ m_closure = m_interpreter->prepareForRepeatCall(function->body(), callFrame, function, argCount, function->scope().node(), exception);
m_valid = !*exception;
}
diff --git a/JavaScriptCore/interpreter/CallFrameClosure.h b/JavaScriptCore/interpreter/CallFrameClosure.h
index a301060..9085327 100644
--- a/JavaScriptCore/interpreter/CallFrameClosure.h
+++ b/JavaScriptCore/interpreter/CallFrameClosure.h
@@ -32,7 +32,7 @@ struct CallFrameClosure {
CallFrame* oldCallFrame;
CallFrame* newCallFrame;
JSFunction* function;
- FunctionExecutable* functionExecutable;
+ FunctionBodyNode* functionBody;
JSGlobalData* globalData;
Register* oldEnd;
ScopeChainNode* scopeChain;
diff --git a/JavaScriptCore/interpreter/Interpreter.cpp b/JavaScriptCore/interpreter/Interpreter.cpp
index 5175e16..f102739 100644
--- a/JavaScriptCore/interpreter/Interpreter.cpp
+++ b/JavaScriptCore/interpreter/Interpreter.cpp
@@ -350,14 +350,15 @@ NEVER_INLINE JSValue Interpreter::callEval(CallFrame* callFrame, RegisterFile* r
LiteralParser preparser(callFrame, programSource, LiteralParser::NonStrictJSON);
if (JSValue parsedObject = preparser.tryLiteralParse())
return parsedObject;
-
+
+
ScopeChainNode* scopeChain = callFrame->scopeChain();
CodeBlock* codeBlock = callFrame->codeBlock();
- RefPtr<CacheableEvalExecutable> eval = codeBlock->evalCodeCache().get(callFrame, programSource, scopeChain, exceptionValue);
+ RefPtr<EvalNode> evalNode = codeBlock->evalCodeCache().get(callFrame, programSource, scopeChain, exceptionValue);
JSValue result = jsUndefined();
- if (eval)
- result = callFrame->globalData().interpreter->execute(eval.get(), callFrame, callFrame->thisValue().toThisObject(callFrame), callFrame->registers() - registerFile->start() + registerOffset, scopeChain, &exceptionValue);
+ if (evalNode)
+ result = callFrame->globalData().interpreter->execute(evalNode.get(), callFrame, callFrame->thisValue().toThisObject(callFrame), callFrame->registers() - registerFile->start() + registerOffset, scopeChain, &exceptionValue);
return result;
}
@@ -489,21 +490,21 @@ NEVER_INLINE bool Interpreter::unwindCallFrame(CallFrame*& callFrame, JSValue ex
if (Debugger* debugger = callFrame->dynamicGlobalObject()->debugger()) {
DebuggerCallFrame debuggerCallFrame(callFrame, exceptionValue);
if (callFrame->callee())
- debugger->returnEvent(debuggerCallFrame, codeBlock->ownerExecutable()->sourceID(), codeBlock->ownerExecutable()->lastLine());
+ debugger->returnEvent(debuggerCallFrame, codeBlock->ownerNode()->sourceID(), codeBlock->ownerNode()->lastLine());
else
- debugger->didExecuteProgram(debuggerCallFrame, codeBlock->ownerExecutable()->sourceID(), codeBlock->ownerExecutable()->lastLine());
+ debugger->didExecuteProgram(debuggerCallFrame, codeBlock->ownerNode()->sourceID(), codeBlock->ownerNode()->lastLine());
}
if (Profiler* profiler = *Profiler::enabledProfilerReference()) {
if (callFrame->callee())
profiler->didExecute(callFrame, callFrame->callee());
else
- profiler->didExecute(callFrame, codeBlock->ownerExecutable()->sourceURL(), codeBlock->ownerExecutable()->lineNo());
+ profiler->didExecute(callFrame, codeBlock->ownerNode()->sourceURL(), codeBlock->ownerNode()->lineNo());
}
// If this call frame created an activation or an 'arguments' object, tear it off.
if (oldCodeBlock->codeType() == FunctionCode && oldCodeBlock->needsFullScopeChain()) {
- while (!scopeChain->object->inherits(&JSActivation::info))
+ while (!scopeChain->object->isObject(&JSActivation::info))
scopeChain = scopeChain->pop();
static_cast<JSActivation*>(scopeChain->object)->copyRegisters(callFrame->optionalCalleeArguments());
} else if (Arguments* arguments = callFrame->optionalCalleeArguments()) {
@@ -554,8 +555,8 @@ NEVER_INLINE HandlerInfo* Interpreter::throwException(CallFrame*& callFrame, JSV
exception->putWithAttributes(callFrame, Identifier(callFrame, expressionEndOffsetPropertyName), jsNumber(callFrame, divotPoint + endOffset), ReadOnly | DontDelete);
} else
exception->putWithAttributes(callFrame, Identifier(callFrame, "line"), jsNumber(callFrame, codeBlock->lineNumberForBytecodeOffset(callFrame, bytecodeOffset)), ReadOnly | DontDelete);
- exception->putWithAttributes(callFrame, Identifier(callFrame, "sourceId"), jsNumber(callFrame, codeBlock->ownerExecutable()->sourceID()), ReadOnly | DontDelete);
- exception->putWithAttributes(callFrame, Identifier(callFrame, "sourceURL"), jsOwnedString(callFrame, codeBlock->ownerExecutable()->sourceURL()), ReadOnly | DontDelete);
+ exception->putWithAttributes(callFrame, Identifier(callFrame, "sourceId"), jsNumber(callFrame, codeBlock->ownerNode()->sourceID()), ReadOnly | DontDelete);
+ exception->putWithAttributes(callFrame, Identifier(callFrame, "sourceURL"), jsOwnedString(callFrame, codeBlock->ownerNode()->sourceURL()), ReadOnly | DontDelete);
}
if (exception->isWatchdogException()) {
@@ -569,7 +570,7 @@ NEVER_INLINE HandlerInfo* Interpreter::throwException(CallFrame*& callFrame, JSV
if (Debugger* debugger = callFrame->dynamicGlobalObject()->debugger()) {
DebuggerCallFrame debuggerCallFrame(callFrame, exceptionValue);
- debugger->exception(debuggerCallFrame, codeBlock->ownerExecutable()->sourceID(), codeBlock->lineNumberForBytecodeOffset(callFrame, bytecodeOffset));
+ debugger->exception(debuggerCallFrame, codeBlock->ownerNode()->sourceID(), codeBlock->lineNumberForBytecodeOffset(callFrame, bytecodeOffset));
}
// If we throw in the middle of a call instruction, we need to notify
@@ -609,7 +610,7 @@ NEVER_INLINE HandlerInfo* Interpreter::throwException(CallFrame*& callFrame, JSV
return handler;
}
-JSValue Interpreter::execute(ProgramExecutable* program, CallFrame* callFrame, ScopeChainNode* scopeChain, JSObject* thisObj, JSValue* exception)
+JSValue Interpreter::execute(ProgramNode* programNode, CallFrame* callFrame, ScopeChainNode* scopeChain, JSObject* thisObj, JSValue* exception)
{
ASSERT(!scopeChain->globalData->exception);
@@ -620,7 +621,7 @@ JSValue Interpreter::execute(ProgramExecutable* program, CallFrame* callFrame, S
}
}
- CodeBlock* codeBlock = &program->bytecode(scopeChain);
+ CodeBlock* codeBlock = &programNode->bytecode(scopeChain);
Register* oldEnd = m_registerFile.end();
Register* newEnd = oldEnd + codeBlock->m_numParameters + RegisterFile::CallFrameHeaderSize + codeBlock->m_numCalleeRegisters;
@@ -644,7 +645,7 @@ JSValue Interpreter::execute(ProgramExecutable* program, CallFrame* callFrame, S
Profiler** profiler = Profiler::enabledProfilerReference();
if (*profiler)
- (*profiler)->willExecute(newCallFrame, program->sourceURL(), program->lineNo());
+ (*profiler)->willExecute(newCallFrame, programNode->sourceURL(), programNode->lineNo());
JSValue result;
{
@@ -652,7 +653,7 @@ JSValue Interpreter::execute(ProgramExecutable* program, CallFrame* callFrame, S
m_reentryDepth++;
#if ENABLE(JIT)
- result = program->jitCode(scopeChain).execute(&m_registerFile, newCallFrame, scopeChain->globalData, exception);
+ result = programNode->jitCode(scopeChain).execute(&m_registerFile, newCallFrame, scopeChain->globalData, exception);
#else
result = privateExecute(Normal, &m_registerFile, newCallFrame, exception);
#endif
@@ -660,7 +661,7 @@ JSValue Interpreter::execute(ProgramExecutable* program, CallFrame* callFrame, S
}
if (*profiler)
- (*profiler)->didExecute(callFrame, program->sourceURL(), program->lineNo());
+ (*profiler)->didExecute(callFrame, programNode->sourceURL(), programNode->lineNo());
if (m_reentryDepth && lastGlobalObject && globalObject != lastGlobalObject)
lastGlobalObject->copyGlobalsTo(m_registerFile);
@@ -670,7 +671,7 @@ JSValue Interpreter::execute(ProgramExecutable* program, CallFrame* callFrame, S
return result;
}
-JSValue Interpreter::execute(FunctionExecutable* functionExecutable, CallFrame* callFrame, JSFunction* function, JSObject* thisObj, const ArgList& args, ScopeChainNode* scopeChain, JSValue* exception)
+JSValue Interpreter::execute(FunctionBodyNode* functionBodyNode, CallFrame* callFrame, JSFunction* function, JSObject* thisObj, const ArgList& args, ScopeChainNode* scopeChain, JSValue* exception)
{
ASSERT(!scopeChain->globalData->exception);
@@ -698,7 +699,7 @@ JSValue Interpreter::execute(FunctionExecutable* functionExecutable, CallFrame*
for (ArgList::const_iterator it = args.begin(); it != end; ++it)
newCallFrame->r(++dst) = *it;
- CodeBlock* codeBlock = &functionExecutable->bytecode(scopeChain);
+ CodeBlock* codeBlock = &functionBodyNode->bytecode(scopeChain);
newCallFrame = slideRegisterWindowForCall(codeBlock, &m_registerFile, newCallFrame, argc + RegisterFile::CallFrameHeaderSize, argc);
if (UNLIKELY(!newCallFrame)) {
*exception = createStackOverflowError(callFrame);
@@ -718,7 +719,7 @@ JSValue Interpreter::execute(FunctionExecutable* functionExecutable, CallFrame*
m_reentryDepth++;
#if ENABLE(JIT)
- result = functionExecutable->jitCode(scopeChain).execute(&m_registerFile, newCallFrame, scopeChain->globalData, exception);
+ result = functionBodyNode->jitCode(scopeChain).execute(&m_registerFile, newCallFrame, scopeChain->globalData, exception);
#else
result = privateExecute(Normal, &m_registerFile, newCallFrame, exception);
#endif
@@ -732,7 +733,7 @@ JSValue Interpreter::execute(FunctionExecutable* functionExecutable, CallFrame*
return result;
}
-CallFrameClosure Interpreter::prepareForRepeatCall(FunctionExecutable* FunctionExecutable, CallFrame* callFrame, JSFunction* function, int argCount, ScopeChainNode* scopeChain, JSValue* exception)
+CallFrameClosure Interpreter::prepareForRepeatCall(FunctionBodyNode* functionBodyNode, CallFrame* callFrame, JSFunction* function, int argCount, ScopeChainNode* scopeChain, JSValue* exception)
{
ASSERT(!scopeChain->globalData->exception);
@@ -756,7 +757,7 @@ CallFrameClosure Interpreter::prepareForRepeatCall(FunctionExecutable* FunctionE
for (int i = 0; i < argc; ++i)
newCallFrame->r(++dst) = jsUndefined();
- CodeBlock* codeBlock = &FunctionExecutable->bytecode(scopeChain);
+ CodeBlock* codeBlock = &functionBodyNode->bytecode(scopeChain);
newCallFrame = slideRegisterWindowForCall(codeBlock, &m_registerFile, newCallFrame, argc + RegisterFile::CallFrameHeaderSize, argc);
if (UNLIKELY(!newCallFrame)) {
*exception = createStackOverflowError(callFrame);
@@ -766,10 +767,10 @@ CallFrameClosure Interpreter::prepareForRepeatCall(FunctionExecutable* FunctionE
// a 0 codeBlock indicates a built-in caller
newCallFrame->init(codeBlock, 0, scopeChain, callFrame->addHostCallFrameFlag(), 0, argc, function);
#if ENABLE(JIT)
- FunctionExecutable->jitCode(scopeChain);
+ functionBodyNode->jitCode(scopeChain);
#endif
- CallFrameClosure result = { callFrame, newCallFrame, function, FunctionExecutable, scopeChain->globalData, oldEnd, scopeChain, codeBlock->m_numParameters, argc };
+ CallFrameClosure result = { callFrame, newCallFrame, function, functionBodyNode, scopeChain->globalData, oldEnd, scopeChain, codeBlock->m_numParameters, argc };
return result;
}
@@ -786,7 +787,7 @@ JSValue Interpreter::execute(CallFrameClosure& closure, JSValue* exception)
m_reentryDepth++;
#if ENABLE(JIT)
- result = closure.functionExecutable->generatedJITCode().execute(&m_registerFile, closure.newCallFrame, closure.globalData, exception);
+ result = closure.functionBody->generatedJITCode().execute(&m_registerFile, closure.newCallFrame, closure.globalData, exception);
#else
result = privateExecute(Normal, &m_registerFile, closure.newCallFrame, exception);
#endif
@@ -803,12 +804,12 @@ void Interpreter::endRepeatCall(CallFrameClosure& closure)
m_registerFile.shrink(closure.oldEnd);
}
-JSValue Interpreter::execute(EvalExecutable* eval, CallFrame* callFrame, JSObject* thisObj, ScopeChainNode* scopeChain, JSValue* exception)
+JSValue Interpreter::execute(EvalNode* evalNode, CallFrame* callFrame, JSObject* thisObj, ScopeChainNode* scopeChain, JSValue* exception)
{
- return execute(eval, callFrame, thisObj, m_registerFile.size() + eval->bytecode(scopeChain).m_numParameters + RegisterFile::CallFrameHeaderSize, scopeChain, exception);
+ return execute(evalNode, callFrame, thisObj, m_registerFile.size() + evalNode->bytecode(scopeChain).m_numParameters + RegisterFile::CallFrameHeaderSize, scopeChain, exception);
}
-JSValue Interpreter::execute(EvalExecutable* eval, CallFrame* callFrame, JSObject* thisObj, int globalRegisterOffset, ScopeChainNode* scopeChain, JSValue* exception)
+JSValue Interpreter::execute(EvalNode* evalNode, CallFrame* callFrame, JSObject* thisObj, int globalRegisterOffset, ScopeChainNode* scopeChain, JSValue* exception)
{
ASSERT(!scopeChain->globalData->exception);
@@ -821,7 +822,7 @@ JSValue Interpreter::execute(EvalExecutable* eval, CallFrame* callFrame, JSObjec
DynamicGlobalObjectScope globalObjectScope(callFrame, callFrame->globalData().dynamicGlobalObject ? callFrame->globalData().dynamicGlobalObject : scopeChain->globalObject());
- EvalCodeBlock* codeBlock = &eval->bytecode(scopeChain);
+ EvalCodeBlock* codeBlock = &evalNode->bytecode(scopeChain);
JSVariableObject* variableObject;
for (ScopeChainNode* node = scopeChain; ; node = node->next) {
@@ -836,7 +837,7 @@ JSValue Interpreter::execute(EvalExecutable* eval, CallFrame* callFrame, JSObjec
BatchedTransitionOptimizer optimizer(variableObject);
- const DeclarationStacks::VarStack& varStack = static_cast<EvalExecutable*>(codeBlock->ownerExecutable())->varStack();
+ const DeclarationStacks::VarStack& varStack = codeBlock->ownerNode()->varStack();
DeclarationStacks::VarStack::const_iterator varStackEnd = varStack.end();
for (DeclarationStacks::VarStack::const_iterator it = varStack.begin(); it != varStackEnd; ++it) {
const Identifier& ident = (*it).first;
@@ -846,11 +847,11 @@ JSValue Interpreter::execute(EvalExecutable* eval, CallFrame* callFrame, JSObjec
}
}
- int numFunctions = codeBlock->numberOfFunctionDecls();
- for (int i = 0; i < numFunctions; ++i) {
- FunctionExecutable* function = codeBlock->functionDecl(i);
+ const DeclarationStacks::FunctionStack& functionStack = codeBlock->ownerNode()->functionStack();
+ DeclarationStacks::FunctionStack::const_iterator functionStackEnd = functionStack.end();
+ for (DeclarationStacks::FunctionStack::const_iterator it = functionStack.begin(); it != functionStackEnd; ++it) {
PutPropertySlot slot;
- variableObject->put(callFrame, function->name(), function->make(callFrame, scopeChain), slot);
+ variableObject->put(callFrame, (*it)->m_ident, (*it)->makeFunction(callFrame, scopeChain), slot);
}
}
@@ -873,7 +874,7 @@ JSValue Interpreter::execute(EvalExecutable* eval, CallFrame* callFrame, JSObjec
Profiler** profiler = Profiler::enabledProfilerReference();
if (*profiler)
- (*profiler)->willExecute(newCallFrame, eval->sourceURL(), eval->lineNo());
+ (*profiler)->willExecute(newCallFrame, evalNode->sourceURL(), evalNode->lineNo());
JSValue result;
{
@@ -881,7 +882,7 @@ JSValue Interpreter::execute(EvalExecutable* eval, CallFrame* callFrame, JSObjec
m_reentryDepth++;
#if ENABLE(JIT)
- result = eval->jitCode(scopeChain).execute(&m_registerFile, newCallFrame, scopeChain->globalData, exception);
+ result = evalNode->jitCode(scopeChain).execute(&m_registerFile, newCallFrame, scopeChain->globalData, exception);
#else
result = privateExecute(Normal, &m_registerFile, newCallFrame, exception);
#endif
@@ -889,7 +890,7 @@ JSValue Interpreter::execute(EvalExecutable* eval, CallFrame* callFrame, JSObjec
}
if (*profiler)
- (*profiler)->didExecute(callFrame, eval->sourceURL(), eval->lineNo());
+ (*profiler)->didExecute(callFrame, evalNode->sourceURL(), evalNode->lineNo());
m_registerFile.shrink(oldEnd);
return result;
@@ -903,22 +904,22 @@ NEVER_INLINE void Interpreter::debug(CallFrame* callFrame, DebugHookID debugHook
switch (debugHookID) {
case DidEnterCallFrame:
- debugger->callEvent(callFrame, callFrame->codeBlock()->ownerExecutable()->sourceID(), firstLine);
+ debugger->callEvent(callFrame, callFrame->codeBlock()->ownerNode()->sourceID(), firstLine);
return;
case WillLeaveCallFrame:
- debugger->returnEvent(callFrame, callFrame->codeBlock()->ownerExecutable()->sourceID(), lastLine);
+ debugger->returnEvent(callFrame, callFrame->codeBlock()->ownerNode()->sourceID(), lastLine);
return;
case WillExecuteStatement:
- debugger->atStatement(callFrame, callFrame->codeBlock()->ownerExecutable()->sourceID(), firstLine);
+ debugger->atStatement(callFrame, callFrame->codeBlock()->ownerNode()->sourceID(), firstLine);
return;
case WillExecuteProgram:
- debugger->willExecuteProgram(callFrame, callFrame->codeBlock()->ownerExecutable()->sourceID(), firstLine);
+ debugger->willExecuteProgram(callFrame, callFrame->codeBlock()->ownerNode()->sourceID(), firstLine);
return;
case DidExecuteProgram:
- debugger->didExecuteProgram(callFrame, callFrame->codeBlock()->ownerExecutable()->sourceID(), lastLine);
+ debugger->didExecuteProgram(callFrame, callFrame->codeBlock()->ownerNode()->sourceID(), lastLine);
return;
case DidReachBreakpoint:
- debugger->didReachBreakpoint(callFrame, callFrame->codeBlock()->ownerExecutable()->sourceID(), lastLine);
+ debugger->didReachBreakpoint(callFrame, callFrame->codeBlock()->ownerNode()->sourceID(), lastLine);
return;
}
}
@@ -2920,7 +2921,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi
int dst = (++vPC)->u.operand;
int func = (++vPC)->u.operand;
- callFrame->r(dst) = JSValue(callFrame->codeBlock()->functionDecl(func)->make(callFrame, callFrame->scopeChain()));
+ callFrame->r(dst) = JSValue(callFrame->codeBlock()->function(func)->makeFunction(callFrame, callFrame->scopeChain()));
++vPC;
NEXT_INSTRUCTION();
@@ -2934,24 +2935,9 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi
puts the result in register dst.
*/
int dst = (++vPC)->u.operand;
- int funcIndex = (++vPC)->u.operand;
-
- FunctionExecutable* function = callFrame->codeBlock()->functionExpr(funcIndex);
- JSFunction* func = function->make(callFrame, callFrame->scopeChain());
-
- /*
- The Identifier in a FunctionExpression can be referenced from inside
- the FunctionExpression's FunctionBody to allow the function to call
- itself recursively. However, unlike in a FunctionDeclaration, the
- Identifier in a FunctionExpression cannot be referenced from and
- does not affect the scope enclosing the FunctionExpression.
- */
- if (!function->name().isNull()) {
- JSStaticScopeObject* functionScopeObject = new (callFrame) JSStaticScopeObject(callFrame, function->name(), func, ReadOnly | DontDelete);
- func->scope().push(functionScopeObject);
- }
+ int func = (++vPC)->u.operand;
- callFrame->r(dst) = JSValue(func);
+ callFrame->r(dst) = JSValue(callFrame->codeBlock()->functionExpression(func)->makeFunction(callFrame, callFrame->scopeChain()));
++vPC;
NEXT_INSTRUCTION();
@@ -3017,7 +3003,8 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi
if (callType == CallTypeJS) {
ScopeChainNode* callDataScopeChain = callData.js.scopeChain;
- CodeBlock* newCodeBlock = &callData.js.functionExecutable->bytecode(callDataScopeChain);
+ FunctionBodyNode* functionBodyNode = callData.js.functionBody;
+ CodeBlock* newCodeBlock = &functionBodyNode->bytecode(callDataScopeChain);
CallFrame* previousCallFrame = callFrame;
@@ -3083,7 +3070,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi
exceptionValue = createStackOverflowError(callFrame);
goto vm_throw;
}
- int32_t expectedParams = callFrame->callee()->executable()->parameterCount();
+ int32_t expectedParams = callFrame->callee()->body()->parameterCount();
int32_t inplaceArgs = min(argCount, expectedParams);
int32_t i = 0;
Register* argStore = callFrame->registers() + argsOffset;
@@ -3170,7 +3157,8 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi
if (callType == CallTypeJS) {
ScopeChainNode* callDataScopeChain = callData.js.scopeChain;
- CodeBlock* newCodeBlock = &callData.js.functionExecutable->bytecode(callDataScopeChain);
+ FunctionBodyNode* functionBodyNode = callData.js.functionBody;
+ CodeBlock* newCodeBlock = &functionBodyNode->bytecode(callDataScopeChain);
CallFrame* previousCallFrame = callFrame;
@@ -3332,7 +3320,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi
callFrame->r(i) = jsUndefined();
int dst = (++vPC)->u.operand;
- JSActivation* activation = new (globalData) JSActivation(callFrame, static_cast<FunctionExecutable*>(codeBlock->ownerExecutable()));
+ JSActivation* activation = new (globalData) JSActivation(callFrame, static_cast<FunctionBodyNode*>(codeBlock->ownerNode()));
callFrame->r(dst) = JSValue(activation);
callFrame->setScopeChain(callFrame->scopeChain()->copy()->push(activation));
@@ -3418,7 +3406,8 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi
if (constructType == ConstructTypeJS) {
ScopeChainNode* callDataScopeChain = constructData.js.scopeChain;
- CodeBlock* newCodeBlock = &constructData.js.functionExecutable->bytecode(callDataScopeChain);
+ FunctionBodyNode* functionBodyNode = constructData.js.functionBody;
+ CodeBlock* newCodeBlock = &functionBodyNode->bytecode(callDataScopeChain);
Structure* structure;
JSValue prototype = callFrame->r(proto).jsValue();
@@ -3668,7 +3657,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi
int message = (++vPC)->u.operand;
CodeBlock* codeBlock = callFrame->codeBlock();
- callFrame->r(dst) = JSValue(Error::create(callFrame, (ErrorType)type, callFrame->r(message).jsValue().toString(callFrame), codeBlock->lineNumberForBytecodeOffset(callFrame, vPC - codeBlock->instructions().begin()), codeBlock->ownerExecutable()->sourceID(), codeBlock->ownerExecutable()->sourceURL()));
+ callFrame->r(dst) = JSValue(Error::create(callFrame, (ErrorType)type, callFrame->r(message).jsValue().toString(callFrame), codeBlock->lineNumberForBytecodeOffset(callFrame, vPC - codeBlock->instructions().begin()), codeBlock->ownerNode()->sourceID(), codeBlock->ownerNode()->sourceURL()));
++vPC;
NEXT_INSTRUCTION();
@@ -3896,8 +3885,8 @@ void Interpreter::retrieveLastCaller(CallFrame* callFrame, int& lineNumber, intp
unsigned bytecodeOffset = bytecodeOffsetForPC(callerFrame, callerCodeBlock, callFrame->returnPC());
lineNumber = callerCodeBlock->lineNumberForBytecodeOffset(callerFrame, bytecodeOffset - 1);
- sourceID = callerCodeBlock->ownerExecutable()->sourceID();
- sourceURL = callerCodeBlock->ownerExecutable()->sourceURL();
+ sourceID = callerCodeBlock->ownerNode()->sourceID();
+ sourceURL = callerCodeBlock->ownerNode()->sourceURL();
function = callerFrame->callee();
}
diff --git a/JavaScriptCore/interpreter/Interpreter.h b/JavaScriptCore/interpreter/Interpreter.h
index 8cb75d2..519c508 100644
--- a/JavaScriptCore/interpreter/Interpreter.h
+++ b/JavaScriptCore/interpreter/Interpreter.h
@@ -42,12 +42,12 @@
namespace JSC {
class CodeBlock;
- class EvalExecutable;
- class FunctionExecutable;
+ class EvalNode;
+ class FunctionBodyNode;
class InternalFunction;
class JSFunction;
class JSGlobalObject;
- class ProgramExecutable;
+ class ProgramNode;
class Register;
class ScopeChainNode;
class SamplingTool;
@@ -95,9 +95,9 @@ namespace JSC {
bool isOpcode(Opcode);
- JSValue execute(ProgramExecutable*, CallFrame*, ScopeChainNode*, JSObject* thisObj, JSValue* exception);
- JSValue execute(FunctionExecutable*, CallFrame*, JSFunction*, JSObject* thisObj, const ArgList& args, ScopeChainNode*, JSValue* exception);
- JSValue execute(EvalExecutable* evalNode, CallFrame* exec, JSObject* thisObj, ScopeChainNode* scopeChain, JSValue* exception);
+ JSValue execute(ProgramNode*, CallFrame*, ScopeChainNode*, JSObject* thisObj, JSValue* exception);
+ JSValue execute(FunctionBodyNode*, CallFrame*, JSFunction*, JSObject* thisObj, const ArgList& args, ScopeChainNode*, JSValue* exception);
+ JSValue execute(EvalNode* evalNode, CallFrame* exec, JSObject* thisObj, ScopeChainNode* scopeChain, JSValue* exception);
JSValue retrieveArguments(CallFrame*, JSFunction*) const;
JSValue retrieveCaller(CallFrame*, InternalFunction*) const;
@@ -115,11 +115,11 @@ namespace JSC {
private:
enum ExecutionFlag { Normal, InitializeAndReturn };
- CallFrameClosure prepareForRepeatCall(FunctionExecutable*, CallFrame*, JSFunction*, int argCount, ScopeChainNode*, JSValue* exception);
+ CallFrameClosure prepareForRepeatCall(FunctionBodyNode*, CallFrame*, JSFunction*, int argCount, ScopeChainNode*, JSValue* exception);
void endRepeatCall(CallFrameClosure&);
JSValue execute(CallFrameClosure&, JSValue* exception);
- JSValue execute(EvalExecutable*, CallFrame*, JSObject* thisObject, int globalRegisterOffset, ScopeChainNode*, JSValue* exception);
+ JSValue execute(EvalNode*, CallFrame*, JSObject* thisObject, int globalRegisterOffset, ScopeChainNode*, JSValue* exception);
#if USE(INTERPRETER)
NEVER_INLINE bool resolve(CallFrame*, Instruction*, JSValue& exceptionValue);
diff --git a/JavaScriptCore/jit/JIT.cpp b/JavaScriptCore/jit/JIT.cpp
index c50b6de..0d6d1b8 100644
--- a/JavaScriptCore/jit/JIT.cpp
+++ b/JavaScriptCore/jit/JIT.cpp
@@ -438,7 +438,7 @@ void JIT::privateCompileSlowCases()
#endif
}
-JITCode JIT::privateCompile()
+void JIT::privateCompile()
{
sampleCodeBlock(m_codeBlock);
#if ENABLE(OPCODE_SAMPLING)
@@ -552,7 +552,7 @@ JITCode JIT::privateCompile()
info.callReturnLocation = m_codeBlock->structureStubInfo(m_methodCallCompilationInfo[i].propertyAccessIndex).callReturnLocation;
}
- return patchBuffer.finalizeCode();
+ m_codeBlock->setJITCode(patchBuffer.finalizeCode());
}
#if !USE(JSVALUE32_64)
diff --git a/JavaScriptCore/jit/JIT.h b/JavaScriptCore/jit/JIT.h
index 5c6607c..93f47d9 100644
--- a/JavaScriptCore/jit/JIT.h
+++ b/JavaScriptCore/jit/JIT.h
@@ -277,9 +277,10 @@ namespace JSC {
static const int patchGetByIdDefaultOffset = 256;
public:
- static JITCode compile(JSGlobalData* globalData, CodeBlock* codeBlock)
+ static void compile(JSGlobalData* globalData, CodeBlock* codeBlock)
{
- return JIT(globalData, codeBlock).privateCompile();
+ JIT jit(globalData, codeBlock);
+ jit.privateCompile();
}
static void compileGetByIdProto(JSGlobalData* globalData, CallFrame* callFrame, CodeBlock* codeBlock, StructureStubInfo* stubInfo, Structure* structure, Structure* prototypeStructure, size_t cachedOffset, ReturnAddressPtr returnAddress)
@@ -352,7 +353,7 @@ namespace JSC {
void privateCompileMainPass();
void privateCompileLinkPass();
void privateCompileSlowCases();
- JITCode privateCompile();
+ void privateCompile();
void privateCompileGetByIdProto(StructureStubInfo*, Structure*, Structure* prototypeStructure, size_t cachedOffset, ReturnAddressPtr returnAddress, CallFrame* callFrame);
void privateCompileGetByIdSelfList(StructureStubInfo*, PolymorphicAccessStructureList*, int, Structure*, size_t cachedOffset);
void privateCompileGetByIdProtoList(StructureStubInfo*, PolymorphicAccessStructureList*, int, Structure*, Structure* prototypeStructure, size_t cachedOffset, CallFrame* callFrame);
@@ -594,62 +595,9 @@ namespace JSC {
static const int patchOffsetMethodCheckProtoObj = 18;
static const int patchOffsetMethodCheckProtoStruct = 28;
static const int patchOffsetMethodCheckPutFunction = 46;
-#elif PLATFORM(ARM)
- // These architecture specific value are used to enable patching - see comment on op_put_by_id.
- static const int patchOffsetPutByIdStructure = 4;
- static const int patchOffsetPutByIdExternalLoad = 16;
- static const int patchLengthPutByIdExternalLoad = 4;
- static const int patchOffsetPutByIdPropertyMapOffset = 20;
- // These architecture specific value are used to enable patching - see comment on op_get_by_id.
- static const int patchOffsetGetByIdStructure = 4;
- static const int patchOffsetGetByIdBranchToSlowCase = 16;
- static const int patchOffsetGetByIdExternalLoad = 16;
- static const int patchLengthGetByIdExternalLoad = 4;
- static const int patchOffsetGetByIdPropertyMapOffset = 20;
- static const int patchOffsetGetByIdPutResult = 28;
-#if ENABLE(OPCODE_SAMPLING)
- #error "OPCODE_SAMPLING is not yet supported"
-#else
- static const int patchOffsetGetByIdSlowCaseCall = 36;
-#endif
- static const int patchOffsetOpCallCompareToJump = 12;
-
- static const int patchOffsetMethodCheckProtoObj = 12;
- static const int patchOffsetMethodCheckProtoStruct = 20;
- static const int patchOffsetMethodCheckPutFunction = 32;
#endif
#endif // USE(JSVALUE32_64)
-#if PLATFORM(ARM) && !PLATFORM_ARM_ARCH(7)
- // sequenceOpCall
- static const int sequenceOpCallInstructionSpace = 12;
- static const int sequenceOpCallConstantSpace = 2;
- // sequenceMethodCheck
- static const int sequenceMethodCheckInstructionSpace = 40;
- static const int sequenceMethodCheckConstantSpace = 6;
- // sequenceGetByIdHotPath
- static const int sequenceGetByIdHotPathInstructionSpace = 28;
- static const int sequenceGetByIdHotPathConstantSpace = 3;
- // sequenceGetByIdSlowCase
- static const int sequenceGetByIdSlowCaseInstructionSpace = 40;
- static const int sequenceGetByIdSlowCaseConstantSpace = 2;
- // sequencePutById
- static const int sequencePutByIdInstructionSpace = 28;
- static const int sequencePutByIdConstantSpace = 3;
-#endif
-
-#if defined(ASSEMBLER_HAS_CONSTANT_POOL) && ASSEMBLER_HAS_CONSTANT_POOL
-#define BEGIN_UNINTERRUPTED_SEQUENCE(name) beginUninterruptedSequence(name ## InstructionSpace, name ## ConstantSpace)
-#define END_UNINTERRUPTED_SEQUENCE(name) endUninterruptedSequence(name ## InstructionSpace, name ## ConstantSpace)
-
- void beginUninterruptedSequence(int, int);
- void endUninterruptedSequence(int, int);
-
-#else
-#define BEGIN_UNINTERRUPTED_SEQUENCE(name)
-#define END_UNINTERRUPTED_SEQUENCE(name)
-#endif
-
void emit_op_add(Instruction*);
void emit_op_bitand(Instruction*);
void emit_op_bitnot(Instruction*);
@@ -887,13 +835,6 @@ namespace JSC {
int m_lastResultBytecodeRegister;
unsigned m_jumpTargetsPosition;
#endif
-
-#ifndef NDEBUG
-#if defined(ASSEMBLER_HAS_CONSTANT_POOL) && ASSEMBLER_HAS_CONSTANT_POOL
- Label m_uninterruptedInstructionSequenceBegin;
- int m_uninterruptedConstantSequenceBegin;
-#endif
-#endif
} JIT_CLASS_ALIGNMENT;
} // namespace JSC
diff --git a/JavaScriptCore/jit/JITCall.cpp b/JavaScriptCore/jit/JITCall.cpp
index a19fae8..7fdb845 100644
--- a/JavaScriptCore/jit/JITCall.cpp
+++ b/JavaScriptCore/jit/JITCall.cpp
@@ -617,13 +617,7 @@ void JIT::compileOpCall(OpcodeID opcodeID, Instruction* instruction, unsigned ca
// This deliberately leaves the callee in ecx, used when setting up the stack frame below
emitGetVirtualRegister(callee, regT2);
DataLabelPtr addressOfLinkedFunctionCheck;
-
- BEGIN_UNINTERRUPTED_SEQUENCE(sequenceOpCall);
-
Jump jumpToSlow = branchPtrWithPatch(NotEqual, regT2, addressOfLinkedFunctionCheck, ImmPtr(JSValue::encode(JSValue())));
-
- END_UNINTERRUPTED_SEQUENCE(sequenceOpCall);
-
addSlowCase(jumpToSlow);
ASSERT(differenceBetween(addressOfLinkedFunctionCheck, jumpToSlow) == patchOffsetOpCallCompareToJump);
m_callStructureStubCompilationInfo[callLinkInfoIndex].hotPathBegin = addressOfLinkedFunctionCheck;
diff --git a/JavaScriptCore/jit/JITInlineMethods.h b/JavaScriptCore/jit/JITInlineMethods.h
index ca34502..b5aaafc 100644
--- a/JavaScriptCore/jit/JITInlineMethods.h
+++ b/JavaScriptCore/jit/JITInlineMethods.h
@@ -102,39 +102,6 @@ ALWAYS_INLINE JIT::Call JIT::emitNakedCall(CodePtr function)
return nakedCall;
}
-#if defined(ASSEMBLER_HAS_CONSTANT_POOL) && ASSEMBLER_HAS_CONSTANT_POOL
-
-ALWAYS_INLINE void JIT::beginUninterruptedSequence(int insnSpace, int constSpace)
-{
-#if PLATFORM(ARM) && !PLATFORM_ARM_ARCH(7)
-#ifndef NDEBUG
- // Ensure the label after the sequence can also fit
- insnSpace += sizeof(ARMWord);
- constSpace += sizeof(uint64_t);
-#endif
-
- ensureSpace(insnSpace, constSpace);
-
-#endif
-
-#if defined(ASSEMBLER_HAS_CONSTANT_POOL) && ASSEMBLER_HAS_CONSTANT_POOL
-#ifndef NDEBUG
- m_uninterruptedInstructionSequenceBegin = label();
- m_uninterruptedConstantSequenceBegin = sizeOfConstantPool();
-#endif
-#endif
-}
-
-ALWAYS_INLINE void JIT::endUninterruptedSequence(int insnSpace, int constSpace)
-{
-#if defined(ASSEMBLER_HAS_CONSTANT_POOL) && ASSEMBLER_HAS_CONSTANT_POOL
- ASSERT(differenceBetween(m_uninterruptedInstructionSequenceBegin, label()) == insnSpace);
- ASSERT(sizeOfConstantPool() - m_uninterruptedConstantSequenceBegin == constSpace);
-#endif
-}
-
-#endif
-
#if PLATFORM(X86) || PLATFORM(X86_64) || (PLATFORM(ARM) && !PLATFORM_ARM_ARCH(7))
ALWAYS_INLINE void JIT::preserveReturnAddressAfterCall(RegisterID reg)
diff --git a/JavaScriptCore/jit/JITOpcodes.cpp b/JavaScriptCore/jit/JITOpcodes.cpp
index 5a9be28..13fc981 100644
--- a/JavaScriptCore/jit/JITOpcodes.cpp
+++ b/JavaScriptCore/jit/JITOpcodes.cpp
@@ -68,8 +68,8 @@ void JIT::privateCompileCTIMachineTrampolines(RefPtr<ExecutablePool>* executable
Label virtualCallLinkBegin = align();
// regT0 holds callee, regT1 holds argCount.
- loadPtr(Address(regT0, OBJECT_OFFSETOF(JSFunction, m_executable)), regT2);
- loadPtr(Address(regT2, OBJECT_OFFSETOF(FunctionExecutable, m_codeBlock)), regT2);
+ loadPtr(Address(regT0, OBJECT_OFFSETOF(JSFunction, m_body)), regT2);
+ loadPtr(Address(regT2, OBJECT_OFFSETOF(FunctionBodyNode, m_code)), regT2);
Jump hasCodeBlock2 = branchTestPtr(NonZero, regT2);
// Lazily generate a CodeBlock.
@@ -114,8 +114,8 @@ void JIT::privateCompileCTIMachineTrampolines(RefPtr<ExecutablePool>* executable
Label virtualCallBegin = align();
// regT0 holds callee, regT1 holds argCount.
- loadPtr(Address(regT0, OBJECT_OFFSETOF(JSFunction, m_executable)), regT2);
- loadPtr(Address(regT2, OBJECT_OFFSETOF(FunctionExecutable, m_codeBlock)), regT2);
+ loadPtr(Address(regT0, OBJECT_OFFSETOF(JSFunction, m_body)), regT2);
+ loadPtr(Address(regT2, OBJECT_OFFSETOF(FunctionBodyNode, m_code)), regT2);
Jump hasCodeBlock3 = branchTestPtr(NonZero, regT2);
// Lazily generate a CodeBlock.
@@ -146,8 +146,8 @@ void JIT::privateCompileCTIMachineTrampolines(RefPtr<ExecutablePool>* executable
arityCheckOkay3.link(this);
isNativeFunc3.link(this);
compileOpCallInitializeCallFrame();
- loadPtr(Address(regT0, OBJECT_OFFSETOF(JSFunction, m_executable)), regT0);
- loadPtr(Address(regT0, OBJECT_OFFSETOF(FunctionExecutable, m_jitCode)), regT0);
+ loadPtr(Address(regT0, OBJECT_OFFSETOF(JSFunction, m_body)), regT0);
+ loadPtr(Address(regT0, OBJECT_OFFSETOF(FunctionBodyNode, m_jitCode)), regT0);
jump(regT0);
#if PLATFORM(X86)
@@ -544,7 +544,7 @@ void JIT::emitSlow_op_instanceof(Instruction* currentInstruction, Vector<SlowCas
void JIT::emit_op_new_func(Instruction* currentInstruction)
{
JITStubCall stubCall(this, cti_op_new_func);
- stubCall.addArgument(ImmPtr(m_codeBlock->functionDecl(currentInstruction[2].u.operand)));
+ stubCall.addArgument(ImmPtr(m_codeBlock->function(currentInstruction[2].u.operand)));
stubCall.call(currentInstruction[1].u.operand);
}
@@ -1180,7 +1180,7 @@ void JIT::emit_op_resolve_with_base(Instruction* currentInstruction)
void JIT::emit_op_new_func_exp(Instruction* currentInstruction)
{
JITStubCall stubCall(this, cti_op_new_func_exp);
- stubCall.addArgument(ImmPtr(m_codeBlock->functionExpr(currentInstruction[2].u.operand)));
+ stubCall.addArgument(ImmPtr(m_codeBlock->functionExpression(currentInstruction[2].u.operand)));
stubCall.call(currentInstruction[1].u.operand);
}
@@ -1487,8 +1487,8 @@ void JIT::privateCompileCTIMachineTrampolines(RefPtr<ExecutablePool>* executable
Label virtualCallLinkBegin = align();
// Load the callee CodeBlock* into eax
- loadPtr(Address(regT2, OBJECT_OFFSETOF(JSFunction, m_executable)), regT3);
- loadPtr(Address(regT3, OBJECT_OFFSETOF(FunctionExecutable, m_codeBlock)), regT0);
+ loadPtr(Address(regT2, OBJECT_OFFSETOF(JSFunction, m_body)), regT3);
+ loadPtr(Address(regT3, OBJECT_OFFSETOF(FunctionBodyNode, m_code)), regT0);
Jump hasCodeBlock2 = branchTestPtr(NonZero, regT0);
preserveReturnAddressAfterCall(regT3);
restoreArgumentReference();
@@ -1527,8 +1527,8 @@ void JIT::privateCompileCTIMachineTrampolines(RefPtr<ExecutablePool>* executable
Label virtualCallBegin = align();
// Load the callee CodeBlock* into eax
- loadPtr(Address(regT2, OBJECT_OFFSETOF(JSFunction, m_executable)), regT3);
- loadPtr(Address(regT3, OBJECT_OFFSETOF(FunctionExecutable, m_codeBlock)), regT0);
+ loadPtr(Address(regT2, OBJECT_OFFSETOF(JSFunction, m_body)), regT3);
+ loadPtr(Address(regT3, OBJECT_OFFSETOF(FunctionBodyNode, m_code)), regT0);
Jump hasCodeBlock3 = branchTestPtr(NonZero, regT0);
preserveReturnAddressAfterCall(regT3);
restoreArgumentReference();
@@ -1536,7 +1536,7 @@ void JIT::privateCompileCTIMachineTrampolines(RefPtr<ExecutablePool>* executable
emitGetJITStubArg(1, regT2);
emitGetJITStubArg(3, regT1);
restoreReturnAddressBeforeReturn(regT3);
- loadPtr(Address(regT2, OBJECT_OFFSETOF(JSFunction, m_executable)), regT3); // reload the function body nody, so we can reload the code pointer.
+ loadPtr(Address(regT2, OBJECT_OFFSETOF(JSFunction, m_body)), regT3); // reload the function body nody, so we can reload the code pointer.
hasCodeBlock3.link(this);
Jump isNativeFunc3 = branch32(Equal, Address(regT0, OBJECT_OFFSETOF(CodeBlock, m_codeType)), Imm32(NativeCode));
@@ -1552,12 +1552,12 @@ void JIT::privateCompileCTIMachineTrampolines(RefPtr<ExecutablePool>* executable
emitGetJITStubArg(1, regT2);
emitGetJITStubArg(3, regT1);
restoreReturnAddressBeforeReturn(regT3);
- loadPtr(Address(regT2, OBJECT_OFFSETOF(JSFunction, m_executable)), regT3); // reload the function body nody, so we can reload the code pointer.
+ loadPtr(Address(regT2, OBJECT_OFFSETOF(JSFunction, m_body)), regT3); // reload the function body nody, so we can reload the code pointer.
arityCheckOkay3.link(this);
isNativeFunc3.link(this);
// load ctiCode from the new codeBlock.
- loadPtr(Address(regT3, OBJECT_OFFSETOF(FunctionExecutable, m_jitCode)), regT0);
+ loadPtr(Address(regT3, OBJECT_OFFSETOF(FunctionBodyNode, m_jitCode)), regT0);
compileOpCallInitializeCallFrame();
jump(regT0);
@@ -1971,7 +1971,7 @@ void JIT::emit_op_instanceof(Instruction* currentInstruction)
void JIT::emit_op_new_func(Instruction* currentInstruction)
{
JITStubCall stubCall(this, cti_op_new_func);
- stubCall.addArgument(ImmPtr(m_codeBlock->functionDecl(currentInstruction[2].u.operand)));
+ stubCall.addArgument(ImmPtr(m_codeBlock->function(currentInstruction[2].u.operand)));
stubCall.call(currentInstruction[1].u.operand);
}
@@ -2325,7 +2325,7 @@ void JIT::emit_op_resolve_with_base(Instruction* currentInstruction)
void JIT::emit_op_new_func_exp(Instruction* currentInstruction)
{
JITStubCall stubCall(this, cti_op_new_func_exp);
- stubCall.addArgument(ImmPtr(m_codeBlock->functionExpr(currentInstruction[2].u.operand)));
+ stubCall.addArgument(ImmPtr(m_codeBlock->functionExpression(currentInstruction[2].u.operand)));
stubCall.call(currentInstruction[1].u.operand);
}
diff --git a/JavaScriptCore/jit/JITPropertyAccess.cpp b/JavaScriptCore/jit/JITPropertyAccess.cpp
index 85a731d..9dba2e2 100644
--- a/JavaScriptCore/jit/JITPropertyAccess.cpp
+++ b/JavaScriptCore/jit/JITPropertyAccess.cpp
@@ -1122,20 +1122,13 @@ void JIT::emit_op_method_check(Instruction* currentInstruction)
// Do the method check - check the object & its prototype's structure inline (this is the common case).
m_methodCallCompilationInfo.append(MethodCallCompilationInfo(m_propertyAccessInstructionIndex));
MethodCallCompilationInfo& info = m_methodCallCompilationInfo.last();
-
Jump notCell = emitJumpIfNotJSCell(regT0);
-
- BEGIN_UNINTERRUPTED_SEQUENCE(sequenceMethodCheck);
-
Jump structureCheck = branchPtrWithPatch(NotEqual, Address(regT0, OBJECT_OFFSETOF(JSCell, m_structure)), info.structureToCompare, ImmPtr(reinterpret_cast<void*>(patchGetByIdDefaultStructure)));
DataLabelPtr protoStructureToCompare, protoObj = moveWithPatch(ImmPtr(0), regT1);
Jump protoStructureCheck = branchPtrWithPatch(NotEqual, Address(regT1, OBJECT_OFFSETOF(JSCell, m_structure)), protoStructureToCompare, ImmPtr(reinterpret_cast<void*>(patchGetByIdDefaultStructure)));
// This will be relinked to load the function without doing a load.
DataLabelPtr putFunction = moveWithPatch(ImmPtr(0), regT0);
-
- END_UNINTERRUPTED_SEQUENCE(sequenceMethodCheck);
-
Jump match = jump();
ASSERT(differenceBetween(info.structureToCompare, protoObj) == patchOffsetMethodCheckProtoObj);
@@ -1199,8 +1192,6 @@ void JIT::compileGetByIdHotPath(int, int baseVReg, Identifier*, unsigned propert
emitJumpSlowCaseIfNotJSCell(regT0, baseVReg);
- BEGIN_UNINTERRUPTED_SEQUENCE(sequenceGetByIdHotPath);
-
Label hotPathBegin(this);
m_propertyAccessCompilationInfo[propertyAccessInstructionIndex].hotPathBegin = hotPathBegin;
@@ -1219,9 +1210,6 @@ void JIT::compileGetByIdHotPath(int, int baseVReg, Identifier*, unsigned propert
ASSERT(differenceBetween(hotPathBegin, displacementLabel) == patchOffsetGetByIdPropertyMapOffset);
Label putResult(this);
-
- END_UNINTERRUPTED_SEQUENCE(sequenceGetByIdHotPath);
-
ASSERT(differenceBetween(hotPathBegin, putResult) == patchOffsetGetByIdPutResult);
}
@@ -1245,8 +1233,6 @@ void JIT::compileGetByIdSlowCase(int resultVReg, int baseVReg, Identifier* ident
linkSlowCaseIfNotJSCell(iter, baseVReg);
linkSlowCase(iter);
- BEGIN_UNINTERRUPTED_SEQUENCE(sequenceGetByIdSlowCase);
-
#ifndef NDEBUG
Label coldPathBegin(this);
#endif
@@ -1255,8 +1241,6 @@ void JIT::compileGetByIdSlowCase(int resultVReg, int baseVReg, Identifier* ident
stubCall.addArgument(ImmPtr(ident));
Call call = stubCall.call(resultVReg);
- END_UNINTERRUPTED_SEQUENCE(sequenceGetByIdSlowCase);
-
ASSERT(differenceBetween(coldPathBegin, call) == patchOffsetGetByIdSlowCaseCall);
// Track the location of the call; this will be used to recover patch information.
@@ -1280,8 +1264,6 @@ void JIT::emit_op_put_by_id(Instruction* currentInstruction)
// Jump to a slow case if either the base object is an immediate, or if the Structure does not match.
emitJumpSlowCaseIfNotJSCell(regT0, baseVReg);
- BEGIN_UNINTERRUPTED_SEQUENCE(sequencePutById);
-
Label hotPathBegin(this);
m_propertyAccessCompilationInfo[propertyAccessInstructionIndex].hotPathBegin = hotPathBegin;
@@ -1297,9 +1279,6 @@ void JIT::emit_op_put_by_id(Instruction* currentInstruction)
ASSERT(differenceBetween(externalLoad, externalLoadComplete) == patchLengthPutByIdExternalLoad);
DataLabel32 displacementLabel = storePtrWithAddressOffsetPatch(regT1, Address(regT0, patchGetByIdDefaultOffset));
-
- END_UNINTERRUPTED_SEQUENCE(sequencePutById);
-
ASSERT(differenceBetween(hotPathBegin, displacementLabel) == patchOffsetPutByIdPropertyMapOffset);
}
diff --git a/JavaScriptCore/jit/JITStubs.cpp b/JavaScriptCore/jit/JITStubs.cpp
index 55dab0b..d563f58 100644
--- a/JavaScriptCore/jit/JITStubs.cpp
+++ b/JavaScriptCore/jit/JITStubs.cpp
@@ -1467,7 +1467,7 @@ DEFINE_STUB_FUNCTION(JSObject*, op_new_func)
{
STUB_INIT_STACK_FRAME(stackFrame);
- return stackFrame.args[0].function()->make(stackFrame.callFrame, stackFrame.callFrame->scopeChain());
+ return stackFrame.args[0].funcDeclNode()->makeFunction(stackFrame.callFrame, stackFrame.callFrame->scopeChain());
}
DEFINE_STUB_FUNCTION(void*, op_call_JSFunction)
@@ -1480,12 +1480,12 @@ DEFINE_STUB_FUNCTION(void*, op_call_JSFunction)
#endif
JSFunction* function = asFunction(stackFrame.args[0].jsValue());
- FunctionExecutable* executable = function->executable();
- ASSERT(!executable->isHostFunction());
+ ASSERT(!function->isHostFunction());
+ FunctionBodyNode* body = function->body();
ScopeChainNode* callDataScopeChain = function->scope().node();
- executable->jitCode(callDataScopeChain);
+ body->jitCode(callDataScopeChain);
- return &executable->generatedBytecode();
+ return &(body->generatedBytecode());
}
DEFINE_STUB_FUNCTION(VoidPtrPair, op_call_arityCheck)
@@ -1539,14 +1539,13 @@ DEFINE_STUB_FUNCTION(void*, vm_lazyLinkCall)
{
STUB_INIT_STACK_FRAME(stackFrame);
JSFunction* callee = asFunction(stackFrame.args[0].jsValue());
- FunctionExecutable* executable = callee->executable();
- JITCode& jitCode = executable->generatedJITCode();
+ JITCode& jitCode = callee->body()->generatedJITCode();
CodeBlock* codeBlock = 0;
- if (!executable->isHostFunction())
- codeBlock = &executable->bytecode(callee->scope().node());
+ if (!callee->isHostFunction())
+ codeBlock = &callee->body()->bytecode(callee->scope().node());
else
- codeBlock = &executable->generatedBytecode();
+ codeBlock = &callee->body()->generatedBytecode();
CallLinkInfo* callLinkInfo = &stackFrame.callFrame->callerFrame()->codeBlock()->getCallLinkInfo(stackFrame.args[1].returnAddress());
if (!callLinkInfo->seenOnce())
@@ -1562,7 +1561,7 @@ DEFINE_STUB_FUNCTION(JSObject*, op_push_activation)
{
STUB_INIT_STACK_FRAME(stackFrame);
- JSActivation* activation = new (stackFrame.globalData) JSActivation(stackFrame.callFrame, static_cast<FunctionExecutable*>(stackFrame.callFrame->codeBlock()->ownerExecutable()));
+ JSActivation* activation = new (stackFrame.globalData) JSActivation(stackFrame.callFrame, static_cast<FunctionBodyNode*>(stackFrame.callFrame->codeBlock()->ownerNode()));
stackFrame.callFrame->setScopeChain(stackFrame.callFrame->scopeChain()->copy()->push(activation));
return activation;
}
@@ -1716,8 +1715,7 @@ DEFINE_STUB_FUNCTION(JSObject*, op_construct_JSConstruct)
STUB_INIT_STACK_FRAME(stackFrame);
JSFunction* constructor = asFunction(stackFrame.args[0].jsValue());
- FunctionExecutable* executable = constructor->executable();
- if (executable && executable->isHostFunction()) {
+ if (constructor->isHostFunction()) {
CallFrame* callFrame = stackFrame.callFrame;
CodeBlock* codeBlock = callFrame->codeBlock();
unsigned vPCIndex = codeBlock->getBytecodeIndex(callFrame, STUB_RETURN_ADDRESS);
@@ -2044,7 +2042,7 @@ DEFINE_STUB_FUNCTION(int, op_load_varargs)
stackFrame.globalData->exception = createStackOverflowError(callFrame);
VM_THROW_EXCEPTION();
}
- int32_t expectedParams = callFrame->callee()->executable()->parameterCount();
+ int32_t expectedParams = callFrame->callee()->body()->parameterCount();
int32_t inplaceArgs = min(providedParams, expectedParams);
Register* inplaceArgsDst = callFrame->registers() + argsOffset;
@@ -2519,24 +2517,8 @@ DEFINE_STUB_FUNCTION(EncodedJSValue, op_resolve_with_base)
DEFINE_STUB_FUNCTION(JSObject*, op_new_func_exp)
{
STUB_INIT_STACK_FRAME(stackFrame);
- CallFrame* callFrame = stackFrame.callFrame;
-
- FunctionExecutable* function = stackFrame.args[0].function();
- JSFunction* func = function->make(callFrame, callFrame->scopeChain());
-
- /*
- The Identifier in a FunctionExpression can be referenced from inside
- the FunctionExpression's FunctionBody to allow the function to call
- itself recursively. However, unlike in a FunctionDeclaration, the
- Identifier in a FunctionExpression cannot be referenced from and
- does not affect the scope enclosing the FunctionExpression.
- */
- if (!function->name().isNull()) {
- JSStaticScopeObject* functionScopeObject = new (callFrame) JSStaticScopeObject(callFrame, function->name(), func, ReadOnly | DontDelete);
- func->scope().push(functionScopeObject);
- }
- return func;
+ return stackFrame.args[0].funcExprNode()->makeFunction(stackFrame.callFrame, stackFrame.callFrame->scopeChain());
}
DEFINE_STUB_FUNCTION(EncodedJSValue, op_mod)
@@ -2996,7 +2978,7 @@ DEFINE_STUB_FUNCTION(JSObject*, op_new_error)
unsigned bytecodeOffset = stackFrame.args[2].int32();
unsigned lineNumber = codeBlock->lineNumberForBytecodeOffset(callFrame, bytecodeOffset);
- return Error::create(callFrame, static_cast<ErrorType>(type), message.toString(callFrame), lineNumber, codeBlock->ownerExecutable()->sourceID(), codeBlock->ownerExecutable()->sourceURL());
+ return Error::create(callFrame, static_cast<ErrorType>(type), message.toString(callFrame), lineNumber, codeBlock->ownerNode()->sourceID(), codeBlock->ownerNode()->sourceURL());
}
DEFINE_STUB_FUNCTION(void, op_debug)
diff --git a/JavaScriptCore/jit/JITStubs.h b/JavaScriptCore/jit/JITStubs.h
index 1dbdeaa..8f02435 100644
--- a/JavaScriptCore/jit/JITStubs.h
+++ b/JavaScriptCore/jit/JITStubs.h
@@ -42,7 +42,6 @@ namespace JSC {
class CodeBlock;
class ExecutablePool;
- class FunctionExecutable;
class Identifier;
class JSGlobalData;
class JSGlobalData;
@@ -54,6 +53,8 @@ namespace JSC {
class PropertySlot;
class PutPropertySlot;
class RegisterFile;
+ class FuncDeclNode;
+ class FuncExprNode;
class JSGlobalObject;
class RegExp;
@@ -66,7 +67,8 @@ namespace JSC {
Identifier& identifier() { return *static_cast<Identifier*>(asPointer); }
int32_t int32() { return asInt32; }
CodeBlock* codeBlock() { return static_cast<CodeBlock*>(asPointer); }
- FunctionExecutable* function() { return static_cast<FunctionExecutable*>(asPointer); }
+ FuncDeclNode* funcDeclNode() { return static_cast<FuncDeclNode*>(asPointer); }
+ FuncExprNode* funcExprNode() { return static_cast<FuncExprNode*>(asPointer); }
RegExp* regExp() { return static_cast<RegExp*>(asPointer); }
JSPropertyNameIterator* propertyNameIterator() { return static_cast<JSPropertyNameIterator*>(asPointer); }
JSGlobalObject* globalObject() { return static_cast<JSGlobalObject*>(asPointer); }
diff --git a/JavaScriptCore/parser/Grammar.y b/JavaScriptCore/parser/Grammar.y
index 227fdb5..354c786 100644
--- a/JavaScriptCore/parser/Grammar.y
+++ b/JavaScriptCore/parser/Grammar.y
@@ -25,12 +25,18 @@
#include "config.h"
+#include <string.h>
+#include <stdlib.h>
+#include "JSValue.h"
#include "JSObject.h"
-#include "JSString.h"
#include "NodeConstructors.h"
+#include "Lexer.h"
+#include "JSString.h"
+#include "JSGlobalData.h"
+#include "CommonIdentifiers.h"
#include "NodeInfo.h"
-#include <stdlib.h>
-#include <string.h>
+#include "Parser.h"
+#include <wtf/FastMalloc.h>
#include <wtf/MathExtras.h>
#define YYMALLOC fastMalloc
@@ -39,44 +45,46 @@
#define YYMAXDEPTH 10000
#define YYENABLE_NLS 0
-// Default values for bison.
+/* default values for bison */
#define YYDEBUG 0 // Set to 1 to debug a parse error.
#define jscyydebug 0 // Set to 1 to debug a parse error.
#if !PLATFORM(DARWIN)
-// Avoid triggering warnings in older bison by not setting this on the Darwin platform.
-// FIXME: Is this still needed?
+ // avoid triggering warnings in older bison
#define YYERROR_VERBOSE
#endif
int jscyylex(void* lvalp, void* llocp, void* globalPtr);
int jscyyerror(const char*);
-
static inline bool allowAutomaticSemicolon(JSC::Lexer&, int);
#define GLOBAL_DATA static_cast<JSGlobalData*>(globalPtr)
-#define AUTO_SEMICOLON do { if (!allowAutomaticSemicolon(*GLOBAL_DATA->lexer, yychar)) YYABORT; } while (0)
+#define LEXER (GLOBAL_DATA->lexer)
+
+#define AUTO_SEMICOLON do { if (!allowAutomaticSemicolon(*LEXER, yychar)) YYABORT; } while (0)
+#define SET_EXCEPTION_LOCATION(node, start, divot, end) node->setExceptionSourceCode((divot), (divot) - (start), (end) - (divot))
+#define DBG(l, s, e) (l)->setLoc((s).first_line, (e).last_line)
using namespace JSC;
using namespace std;
-static ExpressionNode* makeAssignNode(JSGlobalData*, ExpressionNode* left, Operator, ExpressionNode* right, bool leftHasAssignments, bool rightHasAssignments, int start, int divot, int end);
-static ExpressionNode* makePrefixNode(JSGlobalData*, ExpressionNode*, Operator, int start, int divot, int end);
-static ExpressionNode* makePostfixNode(JSGlobalData*, ExpressionNode*, Operator, int start, int divot, int end);
-static PropertyNode* makeGetterOrSetterPropertyNode(JSGlobalData*, const Identifier& getOrSet, const Identifier& name, ParameterNode*, FunctionBodyNode*, const SourceCode&);
-static ExpressionNodeInfo makeFunctionCallNode(JSGlobalData*, ExpressionNodeInfo function, ArgumentsNodeInfo, int start, int divot, int end);
-static ExpressionNode* makeTypeOfNode(JSGlobalData*, ExpressionNode*);
-static ExpressionNode* makeDeleteNode(JSGlobalData*, ExpressionNode*, int start, int divot, int end);
-static ExpressionNode* makeNegateNode(JSGlobalData*, ExpressionNode*);
-static NumberNode* makeNumberNode(JSGlobalData*, double);
-static ExpressionNode* makeBitwiseNotNode(JSGlobalData*, ExpressionNode*);
-static ExpressionNode* makeMultNode(JSGlobalData*, ExpressionNode* left, ExpressionNode* right, bool rightHasAssignments);
-static ExpressionNode* makeDivNode(JSGlobalData*, ExpressionNode* left, ExpressionNode* right, bool rightHasAssignments);
-static ExpressionNode* makeAddNode(JSGlobalData*, ExpressionNode* left, ExpressionNode* right, bool rightHasAssignments);
-static ExpressionNode* makeSubNode(JSGlobalData*, ExpressionNode* left, ExpressionNode* right, bool rightHasAssignments);
-static ExpressionNode* makeLeftShiftNode(JSGlobalData*, ExpressionNode* left, ExpressionNode* right, bool rightHasAssignments);
-static ExpressionNode* makeRightShiftNode(JSGlobalData*, ExpressionNode* left, ExpressionNode* right, bool rightHasAssignments);
-static StatementNode* makeVarStatementNode(JSGlobalData*, ExpressionNode*);
-static ExpressionNode* combineCommaNodes(JSGlobalData*, ExpressionNode* list, ExpressionNode* init);
+static ExpressionNode* makeAssignNode(void*, ExpressionNode* loc, Operator, ExpressionNode* expr, bool locHasAssignments, bool exprHasAssignments, int start, int divot, int end);
+static ExpressionNode* makePrefixNode(void*, ExpressionNode* expr, Operator, int start, int divot, int end);
+static ExpressionNode* makePostfixNode(void*, ExpressionNode* expr, Operator, int start, int divot, int end);
+static PropertyNode* makeGetterOrSetterPropertyNode(void*, const Identifier &getOrSet, const Identifier& name, ParameterNode*, FunctionBodyNode*, const SourceCode&);
+static ExpressionNodeInfo makeFunctionCallNode(void*, ExpressionNodeInfo func, ArgumentsNodeInfo, int start, int divot, int end);
+static ExpressionNode* makeTypeOfNode(void*, ExpressionNode*);
+static ExpressionNode* makeDeleteNode(void*, ExpressionNode*, int start, int divot, int end);
+static ExpressionNode* makeNegateNode(void*, ExpressionNode*);
+static NumberNode* makeNumberNode(void*, double);
+static ExpressionNode* makeBitwiseNotNode(void*, ExpressionNode*);
+static ExpressionNode* makeMultNode(void*, ExpressionNode*, ExpressionNode*, bool rightHasAssignments);
+static ExpressionNode* makeDivNode(void*, ExpressionNode*, ExpressionNode*, bool rightHasAssignments);
+static ExpressionNode* makeAddNode(void*, ExpressionNode*, ExpressionNode*, bool rightHasAssignments);
+static ExpressionNode* makeSubNode(void*, ExpressionNode*, ExpressionNode*, bool rightHasAssignments);
+static ExpressionNode* makeLeftShiftNode(void*, ExpressionNode*, ExpressionNode*, bool rightHasAssignments);
+static ExpressionNode* makeRightShiftNode(void*, ExpressionNode*, ExpressionNode*, bool rightHasAssignments);
+static StatementNode* makeVarStatementNode(void*, ExpressionNode*);
+static ExpressionNode* combineCommaNodes(void*, ExpressionNode* list, ExpressionNode* init);
#if COMPILER(MSVC)
@@ -89,17 +97,17 @@ static ExpressionNode* combineCommaNodes(JSGlobalData*, ExpressionNode* list, Ex
#define YYPARSE_PARAM globalPtr
#define YYLEX_PARAM globalPtr
-template <typename T> inline NodeDeclarationInfo<T> createNodeDeclarationInfo(T node,
- ParserArenaData<DeclarationStacks::VarStack>* varDecls,
- ParserArenaData<DeclarationStacks::FunctionStack>* funcDecls,
- CodeFeatures info, int numConstants)
+template <typename T> NodeDeclarationInfo<T> createNodeDeclarationInfo(T node, ParserArenaData<DeclarationStacks::VarStack>* varDecls,
+ ParserArenaData<DeclarationStacks::FunctionStack>* funcDecls,
+ CodeFeatures info,
+ int numConstants)
{
ASSERT((info & ~AllFeatures) == 0);
NodeDeclarationInfo<T> result = { node, varDecls, funcDecls, info, numConstants };
return result;
}
-template <typename T> inline NodeInfo<T> createNodeInfo(T node, CodeFeatures info, int numConstants)
+template <typename T> NodeInfo<T> createNodeInfo(T node, CodeFeatures info, int numConstants)
{
ASSERT((info & ~AllFeatures) == 0);
NodeInfo<T> result = { node, info, numConstants };
@@ -125,21 +133,21 @@ template <typename T> inline T mergeDeclarationLists(T decls1, T decls2)
return decls1;
}
-static void appendToVarDeclarationList(JSGlobalData* globalData, ParserArenaData<DeclarationStacks::VarStack>*& varDecls, const Identifier& ident, unsigned attrs)
+static void appendToVarDeclarationList(void* globalPtr, ParserArenaData<DeclarationStacks::VarStack>*& varDecls, const Identifier& ident, unsigned attrs)
{
if (!varDecls)
- varDecls = new (globalData) ParserArenaData<DeclarationStacks::VarStack>;
+ varDecls = new (GLOBAL_DATA) ParserArenaData<DeclarationStacks::VarStack>;
varDecls->data.append(make_pair(ident, attrs));
}
-static inline void appendToVarDeclarationList(JSGlobalData* globalData, ParserArenaData<DeclarationStacks::VarStack>*& varDecls, ConstDeclNode* decl)
+static inline void appendToVarDeclarationList(void* globalPtr, ParserArenaData<DeclarationStacks::VarStack>*& varDecls, ConstDeclNode* decl)
{
unsigned attrs = DeclarationStacks::IsConstant;
if (decl->hasInitializer())
attrs |= DeclarationStacks::HasInitializer;
- appendToVarDeclarationList(globalData, varDecls, decl->ident(), attrs);
+ appendToVarDeclarationList(globalPtr, varDecls, decl->ident(), attrs);
}
%}
@@ -176,20 +184,6 @@ static inline void appendToVarDeclarationList(JSGlobalData* globalData, ParserAr
Operator op;
}
-%{
-
-template <typename T> inline void setStatementLocation(StatementNode* statement, const T& start, const T& end)
-{
- statement->setLoc(start.first_line, end.last_line);
-}
-
-static inline void setExceptionLocation(ThrowableExpressionData* node, unsigned start, unsigned divot, unsigned end)
-{
- node->setExceptionSourceCode(divot, divot - start, end - divot);
-}
-
-%}
-
%start Program
/* literals */
@@ -297,25 +291,21 @@ Literal:
| NUMBER { $$ = createNodeInfo<ExpressionNode*>(makeNumberNode(GLOBAL_DATA, $1), 0, 1); }
| STRING { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) StringNode(GLOBAL_DATA, *$1), 0, 1); }
| '/' /* regexp */ {
- Lexer& l = *GLOBAL_DATA->lexer;
- const Identifier* pattern;
- const Identifier* flags;
- if (!l.scanRegExp(pattern, flags))
+ Lexer& l = *LEXER;
+ if (!l.scanRegExp())
YYABORT;
- RegExpNode* node = new (GLOBAL_DATA) RegExpNode(GLOBAL_DATA, *pattern, *flags);
- int size = pattern->size() + 2; // + 2 for the two /'s
- setExceptionLocation(node, @1.first_column, @1.first_column + size, @1.first_column + size);
+ RegExpNode* node = new (GLOBAL_DATA) RegExpNode(GLOBAL_DATA, l.pattern(), l.flags());
+ int size = l.pattern().size() + 2; // + 2 for the two /'s
+ SET_EXCEPTION_LOCATION(node, @1.first_column, @1.first_column + size, @1.first_column + size);
$$ = createNodeInfo<ExpressionNode*>(node, 0, 0);
}
| DIVEQUAL /* regexp with /= */ {
- Lexer& l = *GLOBAL_DATA->lexer;
- const Identifier* pattern;
- const Identifier* flags;
- if (!l.scanRegExp(pattern, flags, '='))
+ Lexer& l = *LEXER;
+ if (!l.scanRegExp())
YYABORT;
- RegExpNode* node = new (GLOBAL_DATA) RegExpNode(GLOBAL_DATA, *pattern, *flags);
- int size = pattern->size() + 2; // + 2 for the two /'s
- setExceptionLocation(node, @1.first_column, @1.first_column + size, @1.first_column + size);
+ RegExpNode* node = new (GLOBAL_DATA) RegExpNode(GLOBAL_DATA, "=" + l.pattern(), l.flags());
+ int size = l.pattern().size() + 2; // + 2 for the two /'s
+ SET_EXCEPTION_LOCATION(node, @1.first_column, @1.first_column + size, @1.first_column + size);
$$ = createNodeInfo<ExpressionNode*>(node, 0, 0);
}
;
@@ -323,14 +313,14 @@ Literal:
Property:
IDENT ':' AssignmentExpr { $$ = createNodeInfo<PropertyNode*>(new (GLOBAL_DATA) PropertyNode(GLOBAL_DATA, *$1, $3.m_node, PropertyNode::Constant), $3.m_features, $3.m_numConstants); }
| STRING ':' AssignmentExpr { $$ = createNodeInfo<PropertyNode*>(new (GLOBAL_DATA) PropertyNode(GLOBAL_DATA, *$1, $3.m_node, PropertyNode::Constant), $3.m_features, $3.m_numConstants); }
- | NUMBER ':' AssignmentExpr { $$ = createNodeInfo<PropertyNode*>(new (GLOBAL_DATA) PropertyNode(GLOBAL_DATA, $1, $3.m_node, PropertyNode::Constant), $3.m_features, $3.m_numConstants); }
- | IDENT IDENT '(' ')' OPENBRACE FunctionBody CLOSEBRACE { $$ = createNodeInfo<PropertyNode*>(makeGetterOrSetterPropertyNode(GLOBAL_DATA, *$1, *$2, 0, $6, GLOBAL_DATA->lexer->sourceCode($5, $7, @5.first_line)), ClosureFeature, 0); setStatementLocation($6, @5, @7); if (!$$.m_node) YYABORT; }
+ | NUMBER ':' AssignmentExpr { $$ = createNodeInfo<PropertyNode*>(new (GLOBAL_DATA) PropertyNode(GLOBAL_DATA, Identifier(GLOBAL_DATA, UString::from($1)), $3.m_node, PropertyNode::Constant), $3.m_features, $3.m_numConstants); }
+ | IDENT IDENT '(' ')' OPENBRACE FunctionBody CLOSEBRACE { $$ = createNodeInfo<PropertyNode*>(makeGetterOrSetterPropertyNode(globalPtr, *$1, *$2, 0, $6, LEXER->sourceCode($5, $7, @5.first_line)), ClosureFeature, 0); DBG($6, @5, @7); if (!$$.m_node) YYABORT; }
| IDENT IDENT '(' FormalParameterList ')' OPENBRACE FunctionBody CLOSEBRACE
{
- $$ = createNodeInfo<PropertyNode*>(makeGetterOrSetterPropertyNode(GLOBAL_DATA, *$1, *$2, $4.m_node.head, $7, GLOBAL_DATA->lexer->sourceCode($6, $8, @6.first_line)), $4.m_features | ClosureFeature, 0);
+ $$ = createNodeInfo<PropertyNode*>(makeGetterOrSetterPropertyNode(globalPtr, *$1, *$2, $4.m_node.head, $7, LEXER->sourceCode($6, $8, @6.first_line)), $4.m_features | ClosureFeature, 0);
if ($4.m_features & ArgumentsFeature)
$7->setUsesArguments();
- setStatementLocation($7, @6, @8);
+ DBG($7, @6, @8);
if (!$$.m_node)
YYABORT;
}
@@ -395,15 +385,15 @@ MemberExpr:
PrimaryExpr
| FunctionExpr { $$ = createNodeInfo<ExpressionNode*>($1.m_node, $1.m_features, $1.m_numConstants); }
| MemberExpr '[' Expr ']' { BracketAccessorNode* node = new (GLOBAL_DATA) BracketAccessorNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature);
- setExceptionLocation(node, @1.first_column, @1.last_column, @4.last_column);
+ SET_EXCEPTION_LOCATION(node, @1.first_column, @1.last_column, @4.last_column);
$$ = createNodeInfo<ExpressionNode*>(node, $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants);
}
| MemberExpr '.' IDENT { DotAccessorNode* node = new (GLOBAL_DATA) DotAccessorNode(GLOBAL_DATA, $1.m_node, *$3);
- setExceptionLocation(node, @1.first_column, @1.last_column, @3.last_column);
+ SET_EXCEPTION_LOCATION(node, @1.first_column, @1.last_column, @3.last_column);
$$ = createNodeInfo<ExpressionNode*>(node, $1.m_features, $1.m_numConstants);
}
| NEW MemberExpr Arguments { NewExprNode* node = new (GLOBAL_DATA) NewExprNode(GLOBAL_DATA, $2.m_node, $3.m_node);
- setExceptionLocation(node, @1.first_column, @2.last_column, @3.last_column);
+ SET_EXCEPTION_LOCATION(node, @1.first_column, @2.last_column, @3.last_column);
$$ = createNodeInfo<ExpressionNode*>(node, $2.m_features | $3.m_features, $2.m_numConstants + $3.m_numConstants);
}
;
@@ -411,15 +401,15 @@ MemberExpr:
MemberExprNoBF:
PrimaryExprNoBrace
| MemberExprNoBF '[' Expr ']' { BracketAccessorNode* node = new (GLOBAL_DATA) BracketAccessorNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature);
- setExceptionLocation(node, @1.first_column, @1.last_column, @4.last_column);
+ SET_EXCEPTION_LOCATION(node, @1.first_column, @1.last_column, @4.last_column);
$$ = createNodeInfo<ExpressionNode*>(node, $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants);
}
| MemberExprNoBF '.' IDENT { DotAccessorNode* node = new (GLOBAL_DATA) DotAccessorNode(GLOBAL_DATA, $1.m_node, *$3);
- setExceptionLocation(node, @1.first_column, @1.last_column, @3.last_column);
+ SET_EXCEPTION_LOCATION(node, @1.first_column, @1.last_column, @3.last_column);
$$ = createNodeInfo<ExpressionNode*>(node, $1.m_features, $1.m_numConstants);
}
| NEW MemberExpr Arguments { NewExprNode* node = new (GLOBAL_DATA) NewExprNode(GLOBAL_DATA, $2.m_node, $3.m_node);
- setExceptionLocation(node, @1.first_column, @2.last_column, @3.last_column);
+ SET_EXCEPTION_LOCATION(node, @1.first_column, @2.last_column, @3.last_column);
$$ = createNodeInfo<ExpressionNode*>(node, $2.m_features | $3.m_features, $2.m_numConstants + $3.m_numConstants);
}
;
@@ -427,7 +417,7 @@ MemberExprNoBF:
NewExpr:
MemberExpr
| NEW NewExpr { NewExprNode* node = new (GLOBAL_DATA) NewExprNode(GLOBAL_DATA, $2.m_node);
- setExceptionLocation(node, @1.first_column, @2.last_column, @2.last_column);
+ SET_EXCEPTION_LOCATION(node, @1.first_column, @2.last_column, @2.last_column);
$$ = createNodeInfo<ExpressionNode*>(node, $2.m_features, $2.m_numConstants);
}
;
@@ -435,32 +425,32 @@ NewExpr:
NewExprNoBF:
MemberExprNoBF
| NEW NewExpr { NewExprNode* node = new (GLOBAL_DATA) NewExprNode(GLOBAL_DATA, $2.m_node);
- setExceptionLocation(node, @1.first_column, @2.last_column, @2.last_column);
+ SET_EXCEPTION_LOCATION(node, @1.first_column, @2.last_column, @2.last_column);
$$ = createNodeInfo<ExpressionNode*>(node, $2.m_features, $2.m_numConstants);
}
;
CallExpr:
- MemberExpr Arguments { $$ = makeFunctionCallNode(GLOBAL_DATA, $1, $2, @1.first_column, @1.last_column, @2.last_column); }
- | CallExpr Arguments { $$ = makeFunctionCallNode(GLOBAL_DATA, $1, $2, @1.first_column, @1.last_column, @2.last_column); }
+ MemberExpr Arguments { $$ = makeFunctionCallNode(globalPtr, $1, $2, @1.first_column, @1.last_column, @2.last_column); }
+ | CallExpr Arguments { $$ = makeFunctionCallNode(globalPtr, $1, $2, @1.first_column, @1.last_column, @2.last_column); }
| CallExpr '[' Expr ']' { BracketAccessorNode* node = new (GLOBAL_DATA) BracketAccessorNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature);
- setExceptionLocation(node, @1.first_column, @1.last_column, @4.last_column);
+ SET_EXCEPTION_LOCATION(node, @1.first_column, @1.last_column, @4.last_column);
$$ = createNodeInfo<ExpressionNode*>(node, $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants);
}
| CallExpr '.' IDENT { DotAccessorNode* node = new (GLOBAL_DATA) DotAccessorNode(GLOBAL_DATA, $1.m_node, *$3);
- setExceptionLocation(node, @1.first_column, @1.last_column, @3.last_column);
+ SET_EXCEPTION_LOCATION(node, @1.first_column, @1.last_column, @3.last_column);
$$ = createNodeInfo<ExpressionNode*>(node, $1.m_features, $1.m_numConstants); }
;
CallExprNoBF:
- MemberExprNoBF Arguments { $$ = makeFunctionCallNode(GLOBAL_DATA, $1, $2, @1.first_column, @1.last_column, @2.last_column); }
- | CallExprNoBF Arguments { $$ = makeFunctionCallNode(GLOBAL_DATA, $1, $2, @1.first_column, @1.last_column, @2.last_column); }
+ MemberExprNoBF Arguments { $$ = makeFunctionCallNode(globalPtr, $1, $2, @1.first_column, @1.last_column, @2.last_column); }
+ | CallExprNoBF Arguments { $$ = makeFunctionCallNode(globalPtr, $1, $2, @1.first_column, @1.last_column, @2.last_column); }
| CallExprNoBF '[' Expr ']' { BracketAccessorNode* node = new (GLOBAL_DATA) BracketAccessorNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature);
- setExceptionLocation(node, @1.first_column, @1.last_column, @4.last_column);
+ SET_EXCEPTION_LOCATION(node, @1.first_column, @1.last_column, @4.last_column);
$$ = createNodeInfo<ExpressionNode*>(node, $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants);
}
| CallExprNoBF '.' IDENT { DotAccessorNode* node = new (GLOBAL_DATA) DotAccessorNode(GLOBAL_DATA, $1.m_node, *$3);
- setExceptionLocation(node, @1.first_column, @1.last_column, @3.last_column);
+ SET_EXCEPTION_LOCATION(node, @1.first_column, @1.last_column, @3.last_column);
$$ = createNodeInfo<ExpressionNode*>(node, $1.m_features, $1.m_numConstants);
}
;
@@ -578,10 +568,10 @@ RelationalExpr:
| RelationalExpr LE ShiftExpr { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LessEqNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
| RelationalExpr GE ShiftExpr { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) GreaterEqNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
| RelationalExpr INSTANCEOF ShiftExpr { InstanceOfNode* node = new (GLOBAL_DATA) InstanceOfNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature);
- setExceptionLocation(node, @1.first_column, @3.first_column, @3.last_column);
+ SET_EXCEPTION_LOCATION(node, @1.first_column, @3.first_column, @3.last_column);
$$ = createNodeInfo<ExpressionNode*>(node, $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
| RelationalExpr INTOKEN ShiftExpr { InNode* node = new (GLOBAL_DATA) InNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature);
- setExceptionLocation(node, @1.first_column, @3.first_column, @3.last_column);
+ SET_EXCEPTION_LOCATION(node, @1.first_column, @3.first_column, @3.last_column);
$$ = createNodeInfo<ExpressionNode*>(node, $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
;
@@ -593,7 +583,7 @@ RelationalExprNoIn:
| RelationalExprNoIn GE ShiftExpr { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) GreaterEqNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
| RelationalExprNoIn INSTANCEOF ShiftExpr
{ InstanceOfNode* node = new (GLOBAL_DATA) InstanceOfNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature);
- setExceptionLocation(node, @1.first_column, @3.first_column, @3.last_column);
+ SET_EXCEPTION_LOCATION(node, @1.first_column, @3.first_column, @3.last_column);
$$ = createNodeInfo<ExpressionNode*>(node, $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
;
@@ -605,11 +595,11 @@ RelationalExprNoBF:
| RelationalExprNoBF GE ShiftExpr { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) GreaterEqNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
| RelationalExprNoBF INSTANCEOF ShiftExpr
{ InstanceOfNode* node = new (GLOBAL_DATA) InstanceOfNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature);
- setExceptionLocation(node, @1.first_column, @3.first_column, @3.last_column);
+ SET_EXCEPTION_LOCATION(node, @1.first_column, @3.first_column, @3.last_column);
$$ = createNodeInfo<ExpressionNode*>(node, $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
| RelationalExprNoBF INTOKEN ShiftExpr
{ InNode* node = new (GLOBAL_DATA) InNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature);
- setExceptionLocation(node, @1.first_column, @3.first_column, @3.last_column);
+ SET_EXCEPTION_LOCATION(node, @1.first_column, @3.first_column, @3.last_column);
$$ = createNodeInfo<ExpressionNode*>(node, $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
;
@@ -820,17 +810,17 @@ Statement:
;
Block:
- OPENBRACE CLOSEBRACE { $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) BlockNode(GLOBAL_DATA, 0), 0, 0, 0, 0);
- setStatementLocation($$.m_node, @1, @2); }
- | OPENBRACE SourceElements CLOSEBRACE { $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) BlockNode(GLOBAL_DATA, $2.m_node), $2.m_varDeclarations, $2.m_funcDeclarations, $2.m_features, $2.m_numConstants);
- setStatementLocation($$.m_node, @1, @3); }
+ OPENBRACE CLOSEBRACE { $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) BlockNode(GLOBAL_DATA, 0), 0, 0, 0, 0);
+ DBG($$.m_node, @1, @2); }
+ | OPENBRACE SourceElements CLOSEBRACE { $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) BlockNode(GLOBAL_DATA, $2.m_node), $2.m_varDeclarations, $2.m_funcDeclarations, $2.m_features, $2.m_numConstants);
+ DBG($$.m_node, @1, @3); }
;
VariableStatement:
VAR VariableDeclarationList ';' { $$ = createNodeDeclarationInfo<StatementNode*>(makeVarStatementNode(GLOBAL_DATA, $2.m_node), $2.m_varDeclarations, $2.m_funcDeclarations, $2.m_features, $2.m_numConstants);
- setStatementLocation($$.m_node, @1, @3); }
+ DBG($$.m_node, @1, @3); }
| VAR VariableDeclarationList error { $$ = createNodeDeclarationInfo<StatementNode*>(makeVarStatementNode(GLOBAL_DATA, $2.m_node), $2.m_varDeclarations, $2.m_funcDeclarations, $2.m_features, $2.m_numConstants);
- setStatementLocation($$.m_node, @1, @2);
+ DBG($$.m_node, @1, @2);
AUTO_SEMICOLON; }
;
@@ -843,7 +833,7 @@ VariableDeclarationList:
$$.m_numConstants = 0;
}
| IDENT Initializer { AssignResolveNode* node = new (GLOBAL_DATA) AssignResolveNode(GLOBAL_DATA, *$1, $2.m_node, $2.m_features & AssignFeature);
- setExceptionLocation(node, @1.first_column, @2.first_column + 1, @2.last_column);
+ SET_EXCEPTION_LOCATION(node, @1.first_column, @2.first_column + 1, @2.last_column);
$$.m_node = node;
$$.m_varDeclarations = new (GLOBAL_DATA) ParserArenaData<DeclarationStacks::VarStack>;
appendToVarDeclarationList(GLOBAL_DATA, $$.m_varDeclarations, *$1, DeclarationStacks::HasInitializer);
@@ -861,7 +851,7 @@ VariableDeclarationList:
}
| VariableDeclarationList ',' IDENT Initializer
{ AssignResolveNode* node = new (GLOBAL_DATA) AssignResolveNode(GLOBAL_DATA, *$3, $4.m_node, $4.m_features & AssignFeature);
- setExceptionLocation(node, @3.first_column, @4.first_column + 1, @4.last_column);
+ SET_EXCEPTION_LOCATION(node, @3.first_column, @4.first_column + 1, @4.last_column);
$$.m_node = combineCommaNodes(GLOBAL_DATA, $1.m_node, node);
$$.m_varDeclarations = $1.m_varDeclarations;
appendToVarDeclarationList(GLOBAL_DATA, $$.m_varDeclarations, *$3, DeclarationStacks::HasInitializer);
@@ -880,7 +870,7 @@ VariableDeclarationListNoIn:
$$.m_numConstants = 0;
}
| IDENT InitializerNoIn { AssignResolveNode* node = new (GLOBAL_DATA) AssignResolveNode(GLOBAL_DATA, *$1, $2.m_node, $2.m_features & AssignFeature);
- setExceptionLocation(node, @1.first_column, @2.first_column + 1, @2.last_column);
+ SET_EXCEPTION_LOCATION(node, @1.first_column, @2.first_column + 1, @2.last_column);
$$.m_node = node;
$$.m_varDeclarations = new (GLOBAL_DATA) ParserArenaData<DeclarationStacks::VarStack>;
appendToVarDeclarationList(GLOBAL_DATA, $$.m_varDeclarations, *$1, DeclarationStacks::HasInitializer);
@@ -898,7 +888,7 @@ VariableDeclarationListNoIn:
}
| VariableDeclarationListNoIn ',' IDENT InitializerNoIn
{ AssignResolveNode* node = new (GLOBAL_DATA) AssignResolveNode(GLOBAL_DATA, *$3, $4.m_node, $4.m_features & AssignFeature);
- setExceptionLocation(node, @3.first_column, @4.first_column + 1, @4.last_column);
+ SET_EXCEPTION_LOCATION(node, @3.first_column, @4.first_column + 1, @4.last_column);
$$.m_node = combineCommaNodes(GLOBAL_DATA, $1.m_node, node);
$$.m_varDeclarations = $1.m_varDeclarations;
appendToVarDeclarationList(GLOBAL_DATA, $$.m_varDeclarations, *$3, DeclarationStacks::HasInitializer);
@@ -910,10 +900,10 @@ VariableDeclarationListNoIn:
ConstStatement:
CONSTTOKEN ConstDeclarationList ';' { $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) ConstStatementNode(GLOBAL_DATA, $2.m_node.head), $2.m_varDeclarations, $2.m_funcDeclarations, $2.m_features, $2.m_numConstants);
- setStatementLocation($$.m_node, @1, @3); }
+ DBG($$.m_node, @1, @3); }
| CONSTTOKEN ConstDeclarationList error
{ $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) ConstStatementNode(GLOBAL_DATA, $2.m_node.head), $2.m_varDeclarations, $2.m_funcDeclarations, $2.m_features, $2.m_numConstants);
- setStatementLocation($$.m_node, @1, @2); AUTO_SEMICOLON; }
+ DBG($$.m_node, @1, @2); AUTO_SEMICOLON; }
;
ConstDeclarationList:
@@ -955,36 +945,36 @@ EmptyStatement:
ExprStatement:
ExprNoBF ';' { $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) ExprStatementNode(GLOBAL_DATA, $1.m_node), 0, 0, $1.m_features, $1.m_numConstants);
- setStatementLocation($$.m_node, @1, @2); }
+ DBG($$.m_node, @1, @2); }
| ExprNoBF error { $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) ExprStatementNode(GLOBAL_DATA, $1.m_node), 0, 0, $1.m_features, $1.m_numConstants);
- setStatementLocation($$.m_node, @1, @1); AUTO_SEMICOLON; }
+ DBG($$.m_node, @1, @1); AUTO_SEMICOLON; }
;
IfStatement:
IF '(' Expr ')' Statement %prec IF_WITHOUT_ELSE
{ $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) IfNode(GLOBAL_DATA, $3.m_node, $5.m_node), $5.m_varDeclarations, $5.m_funcDeclarations, $3.m_features | $5.m_features, $3.m_numConstants + $5.m_numConstants);
- setStatementLocation($$.m_node, @1, @4); }
+ DBG($$.m_node, @1, @4); }
| IF '(' Expr ')' Statement ELSE Statement
{ $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) IfElseNode(GLOBAL_DATA, $3.m_node, $5.m_node, $7.m_node),
mergeDeclarationLists($5.m_varDeclarations, $7.m_varDeclarations),
mergeDeclarationLists($5.m_funcDeclarations, $7.m_funcDeclarations),
$3.m_features | $5.m_features | $7.m_features,
$3.m_numConstants + $5.m_numConstants + $7.m_numConstants);
- setStatementLocation($$.m_node, @1, @4); }
+ DBG($$.m_node, @1, @4); }
;
IterationStatement:
DO Statement WHILE '(' Expr ')' ';' { $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) DoWhileNode(GLOBAL_DATA, $2.m_node, $5.m_node), $2.m_varDeclarations, $2.m_funcDeclarations, $2.m_features | $5.m_features, $2.m_numConstants + $5.m_numConstants);
- setStatementLocation($$.m_node, @1, @3); }
+ DBG($$.m_node, @1, @3); }
| DO Statement WHILE '(' Expr ')' error { $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) DoWhileNode(GLOBAL_DATA, $2.m_node, $5.m_node), $2.m_varDeclarations, $2.m_funcDeclarations, $2.m_features | $5.m_features, $2.m_numConstants + $5.m_numConstants);
- setStatementLocation($$.m_node, @1, @3); } // Always performs automatic semicolon insertion.
+ DBG($$.m_node, @1, @3); } // Always performs automatic semicolon insertion.
| WHILE '(' Expr ')' Statement { $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) WhileNode(GLOBAL_DATA, $3.m_node, $5.m_node), $5.m_varDeclarations, $5.m_funcDeclarations, $3.m_features | $5.m_features, $3.m_numConstants + $5.m_numConstants);
- setStatementLocation($$.m_node, @1, @4); }
+ DBG($$.m_node, @1, @4); }
| FOR '(' ExprNoInOpt ';' ExprOpt ';' ExprOpt ')' Statement
{ $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) ForNode(GLOBAL_DATA, $3.m_node, $5.m_node, $7.m_node, $9.m_node, false), $9.m_varDeclarations, $9.m_funcDeclarations,
$3.m_features | $5.m_features | $7.m_features | $9.m_features,
$3.m_numConstants + $5.m_numConstants + $7.m_numConstants + $9.m_numConstants);
- setStatementLocation($$.m_node, @1, @8);
+ DBG($$.m_node, @1, @8);
}
| FOR '(' VAR VariableDeclarationListNoIn ';' ExprOpt ';' ExprOpt ')' Statement
{ $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) ForNode(GLOBAL_DATA, $4.m_node, $6.m_node, $8.m_node, $10.m_node, true),
@@ -992,30 +982,30 @@ IterationStatement:
mergeDeclarationLists($4.m_funcDeclarations, $10.m_funcDeclarations),
$4.m_features | $6.m_features | $8.m_features | $10.m_features,
$4.m_numConstants + $6.m_numConstants + $8.m_numConstants + $10.m_numConstants);
- setStatementLocation($$.m_node, @1, @9); }
+ DBG($$.m_node, @1, @9); }
| FOR '(' LeftHandSideExpr INTOKEN Expr ')' Statement
{
ForInNode* node = new (GLOBAL_DATA) ForInNode(GLOBAL_DATA, $3.m_node, $5.m_node, $7.m_node);
- setExceptionLocation(node, @3.first_column, @3.last_column, @5.last_column);
+ SET_EXCEPTION_LOCATION(node, @3.first_column, @3.last_column, @5.last_column);
$$ = createNodeDeclarationInfo<StatementNode*>(node, $7.m_varDeclarations, $7.m_funcDeclarations,
$3.m_features | $5.m_features | $7.m_features,
$3.m_numConstants + $5.m_numConstants + $7.m_numConstants);
- setStatementLocation($$.m_node, @1, @6);
+ DBG($$.m_node, @1, @6);
}
| FOR '(' VAR IDENT INTOKEN Expr ')' Statement
{ ForInNode *forIn = new (GLOBAL_DATA) ForInNode(GLOBAL_DATA, *$4, 0, $6.m_node, $8.m_node, @5.first_column, @5.first_column - @4.first_column, @6.last_column - @5.first_column);
- setExceptionLocation(forIn, @4.first_column, @5.first_column + 1, @6.last_column);
+ SET_EXCEPTION_LOCATION(forIn, @4.first_column, @5.first_column + 1, @6.last_column);
appendToVarDeclarationList(GLOBAL_DATA, $8.m_varDeclarations, *$4, DeclarationStacks::HasInitializer);
$$ = createNodeDeclarationInfo<StatementNode*>(forIn, $8.m_varDeclarations, $8.m_funcDeclarations, ((*$4 == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | $6.m_features | $8.m_features, $6.m_numConstants + $8.m_numConstants);
- setStatementLocation($$.m_node, @1, @7); }
+ DBG($$.m_node, @1, @7); }
| FOR '(' VAR IDENT InitializerNoIn INTOKEN Expr ')' Statement
{ ForInNode *forIn = new (GLOBAL_DATA) ForInNode(GLOBAL_DATA, *$4, $5.m_node, $7.m_node, $9.m_node, @5.first_column, @5.first_column - @4.first_column, @5.last_column - @5.first_column);
- setExceptionLocation(forIn, @4.first_column, @6.first_column + 1, @7.last_column);
+ SET_EXCEPTION_LOCATION(forIn, @4.first_column, @6.first_column + 1, @7.last_column);
appendToVarDeclarationList(GLOBAL_DATA, $9.m_varDeclarations, *$4, DeclarationStacks::HasInitializer);
$$ = createNodeDeclarationInfo<StatementNode*>(forIn, $9.m_varDeclarations, $9.m_funcDeclarations,
((*$4 == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | $5.m_features | $7.m_features | $9.m_features,
$5.m_numConstants + $7.m_numConstants + $9.m_numConstants);
- setStatementLocation($$.m_node, @1, @8); }
+ DBG($$.m_node, @1, @8); }
;
ExprOpt:
@@ -1030,63 +1020,63 @@ ExprNoInOpt:
ContinueStatement:
CONTINUE ';' { ContinueNode* node = new (GLOBAL_DATA) ContinueNode(GLOBAL_DATA);
- setExceptionLocation(node, @1.first_column, @1.last_column, @1.last_column);
+ SET_EXCEPTION_LOCATION(node, @1.first_column, @1.last_column, @1.last_column);
$$ = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0);
- setStatementLocation($$.m_node, @1, @2); }
+ DBG($$.m_node, @1, @2); }
| CONTINUE error { ContinueNode* node = new (GLOBAL_DATA) ContinueNode(GLOBAL_DATA);
- setExceptionLocation(node, @1.first_column, @1.last_column, @1.last_column);
+ SET_EXCEPTION_LOCATION(node, @1.first_column, @1.last_column, @1.last_column);
$$ = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0);
- setStatementLocation($$.m_node, @1, @1); AUTO_SEMICOLON; }
+ DBG($$.m_node, @1, @1); AUTO_SEMICOLON; }
| CONTINUE IDENT ';' { ContinueNode* node = new (GLOBAL_DATA) ContinueNode(GLOBAL_DATA, *$2);
- setExceptionLocation(node, @1.first_column, @2.last_column, @2.last_column);
+ SET_EXCEPTION_LOCATION(node, @1.first_column, @2.last_column, @2.last_column);
$$ = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0);
- setStatementLocation($$.m_node, @1, @3); }
+ DBG($$.m_node, @1, @3); }
| CONTINUE IDENT error { ContinueNode* node = new (GLOBAL_DATA) ContinueNode(GLOBAL_DATA, *$2);
- setExceptionLocation(node, @1.first_column, @2.last_column, @2.last_column);
+ SET_EXCEPTION_LOCATION(node, @1.first_column, @2.last_column, @2.last_column);
$$ = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0);
- setStatementLocation($$.m_node, @1, @2); AUTO_SEMICOLON; }
+ DBG($$.m_node, @1, @2); AUTO_SEMICOLON; }
;
BreakStatement:
BREAK ';' { BreakNode* node = new (GLOBAL_DATA) BreakNode(GLOBAL_DATA);
- setExceptionLocation(node, @1.first_column, @1.last_column, @1.last_column);
- $$ = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0); setStatementLocation($$.m_node, @1, @2); }
+ SET_EXCEPTION_LOCATION(node, @1.first_column, @1.last_column, @1.last_column);
+ $$ = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0); DBG($$.m_node, @1, @2); }
| BREAK error { BreakNode* node = new (GLOBAL_DATA) BreakNode(GLOBAL_DATA);
- setExceptionLocation(node, @1.first_column, @1.last_column, @1.last_column);
- $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) BreakNode(GLOBAL_DATA), 0, 0, 0, 0); setStatementLocation($$.m_node, @1, @1); AUTO_SEMICOLON; }
+ SET_EXCEPTION_LOCATION(node, @1.first_column, @1.last_column, @1.last_column);
+ $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) BreakNode(GLOBAL_DATA), 0, 0, 0, 0); DBG($$.m_node, @1, @1); AUTO_SEMICOLON; }
| BREAK IDENT ';' { BreakNode* node = new (GLOBAL_DATA) BreakNode(GLOBAL_DATA, *$2);
- setExceptionLocation(node, @1.first_column, @2.last_column, @2.last_column);
- $$ = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0); setStatementLocation($$.m_node, @1, @3); }
+ SET_EXCEPTION_LOCATION(node, @1.first_column, @2.last_column, @2.last_column);
+ $$ = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0); DBG($$.m_node, @1, @3); }
| BREAK IDENT error { BreakNode* node = new (GLOBAL_DATA) BreakNode(GLOBAL_DATA, *$2);
- setExceptionLocation(node, @1.first_column, @2.last_column, @2.last_column);
- $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) BreakNode(GLOBAL_DATA, *$2), 0, 0, 0, 0); setStatementLocation($$.m_node, @1, @2); AUTO_SEMICOLON; }
+ SET_EXCEPTION_LOCATION(node, @1.first_column, @2.last_column, @2.last_column);
+ $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) BreakNode(GLOBAL_DATA, *$2), 0, 0, 0, 0); DBG($$.m_node, @1, @2); AUTO_SEMICOLON; }
;
ReturnStatement:
RETURN ';' { ReturnNode* node = new (GLOBAL_DATA) ReturnNode(GLOBAL_DATA, 0);
- setExceptionLocation(node, @1.first_column, @1.last_column, @1.last_column);
- $$ = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0); setStatementLocation($$.m_node, @1, @2); }
+ SET_EXCEPTION_LOCATION(node, @1.first_column, @1.last_column, @1.last_column);
+ $$ = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0); DBG($$.m_node, @1, @2); }
| RETURN error { ReturnNode* node = new (GLOBAL_DATA) ReturnNode(GLOBAL_DATA, 0);
- setExceptionLocation(node, @1.first_column, @1.last_column, @1.last_column);
- $$ = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0); setStatementLocation($$.m_node, @1, @1); AUTO_SEMICOLON; }
+ SET_EXCEPTION_LOCATION(node, @1.first_column, @1.last_column, @1.last_column);
+ $$ = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0); DBG($$.m_node, @1, @1); AUTO_SEMICOLON; }
| RETURN Expr ';' { ReturnNode* node = new (GLOBAL_DATA) ReturnNode(GLOBAL_DATA, $2.m_node);
- setExceptionLocation(node, @1.first_column, @2.last_column, @2.last_column);
- $$ = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, $2.m_features, $2.m_numConstants); setStatementLocation($$.m_node, @1, @3); }
+ SET_EXCEPTION_LOCATION(node, @1.first_column, @2.last_column, @2.last_column);
+ $$ = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, $2.m_features, $2.m_numConstants); DBG($$.m_node, @1, @3); }
| RETURN Expr error { ReturnNode* node = new (GLOBAL_DATA) ReturnNode(GLOBAL_DATA, $2.m_node);
- setExceptionLocation(node, @1.first_column, @2.last_column, @2.last_column);
- $$ = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, $2.m_features, $2.m_numConstants); setStatementLocation($$.m_node, @1, @2); AUTO_SEMICOLON; }
+ SET_EXCEPTION_LOCATION(node, @1.first_column, @2.last_column, @2.last_column);
+ $$ = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, $2.m_features, $2.m_numConstants); DBG($$.m_node, @1, @2); AUTO_SEMICOLON; }
;
WithStatement:
WITH '(' Expr ')' Statement { $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) WithNode(GLOBAL_DATA, $3.m_node, $5.m_node, @3.last_column, @3.last_column - @3.first_column),
$5.m_varDeclarations, $5.m_funcDeclarations, $3.m_features | $5.m_features | WithFeature, $3.m_numConstants + $5.m_numConstants);
- setStatementLocation($$.m_node, @1, @4); }
+ DBG($$.m_node, @1, @4); }
;
SwitchStatement:
SWITCH '(' Expr ')' CaseBlock { $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) SwitchNode(GLOBAL_DATA, $3.m_node, $5.m_node), $5.m_varDeclarations, $5.m_funcDeclarations,
$3.m_features | $5.m_features, $3.m_numConstants + $5.m_numConstants);
- setStatementLocation($$.m_node, @1, @4); }
+ DBG($$.m_node, @1, @4); }
;
CaseBlock:
@@ -1100,7 +1090,7 @@ CaseBlock:
;
CaseClausesOpt:
- /* nothing */ { $$.m_node.head = 0; $$.m_node.tail = 0; $$.m_varDeclarations = 0; $$.m_funcDeclarations = 0; $$.m_features = 0; $$.m_numConstants = 0; }
+/* nothing */ { $$.m_node.head = 0; $$.m_node.tail = 0; $$.m_varDeclarations = 0; $$.m_funcDeclarations = 0; $$.m_features = 0; $$.m_numConstants = 0; }
| CaseClauses
;
@@ -1132,18 +1122,18 @@ DefaultClause:
LabelledStatement:
IDENT ':' Statement { LabelNode* node = new (GLOBAL_DATA) LabelNode(GLOBAL_DATA, *$1, $3.m_node);
- setExceptionLocation(node, @1.first_column, @2.last_column, @2.last_column);
+ SET_EXCEPTION_LOCATION(node, @1.first_column, @2.last_column, @2.last_column);
$$ = createNodeDeclarationInfo<StatementNode*>(node, $3.m_varDeclarations, $3.m_funcDeclarations, $3.m_features, $3.m_numConstants); }
;
ThrowStatement:
THROW Expr ';' { ThrowNode* node = new (GLOBAL_DATA) ThrowNode(GLOBAL_DATA, $2.m_node);
- setExceptionLocation(node, @1.first_column, @2.last_column, @2.last_column);
- $$ = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, $2.m_features, $2.m_numConstants); setStatementLocation($$.m_node, @1, @2);
+ SET_EXCEPTION_LOCATION(node, @1.first_column, @2.last_column, @2.last_column);
+ $$ = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, $2.m_features, $2.m_numConstants); DBG($$.m_node, @1, @2);
}
| THROW Expr error { ThrowNode* node = new (GLOBAL_DATA) ThrowNode(GLOBAL_DATA, $2.m_node);
- setExceptionLocation(node, @1.first_column, @2.last_column, @2.last_column);
- $$ = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, $2.m_features, $2.m_numConstants); setStatementLocation($$.m_node, @1, @2); AUTO_SEMICOLON;
+ SET_EXCEPTION_LOCATION(node, @1.first_column, @2.last_column, @2.last_column);
+ $$ = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, $2.m_features, $2.m_numConstants); DBG($$.m_node, @1, @2); AUTO_SEMICOLON;
}
;
@@ -1153,57 +1143,57 @@ TryStatement:
mergeDeclarationLists($2.m_funcDeclarations, $4.m_funcDeclarations),
$2.m_features | $4.m_features,
$2.m_numConstants + $4.m_numConstants);
- setStatementLocation($$.m_node, @1, @2); }
+ DBG($$.m_node, @1, @2); }
| TRY Block CATCH '(' IDENT ')' Block { $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) TryNode(GLOBAL_DATA, $2.m_node, *$5, ($7.m_features & EvalFeature) != 0, $7.m_node, 0),
mergeDeclarationLists($2.m_varDeclarations, $7.m_varDeclarations),
mergeDeclarationLists($2.m_funcDeclarations, $7.m_funcDeclarations),
$2.m_features | $7.m_features | CatchFeature,
$2.m_numConstants + $7.m_numConstants);
- setStatementLocation($$.m_node, @1, @2); }
+ DBG($$.m_node, @1, @2); }
| TRY Block CATCH '(' IDENT ')' Block FINALLY Block
{ $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) TryNode(GLOBAL_DATA, $2.m_node, *$5, ($7.m_features & EvalFeature) != 0, $7.m_node, $9.m_node),
mergeDeclarationLists(mergeDeclarationLists($2.m_varDeclarations, $7.m_varDeclarations), $9.m_varDeclarations),
mergeDeclarationLists(mergeDeclarationLists($2.m_funcDeclarations, $7.m_funcDeclarations), $9.m_funcDeclarations),
$2.m_features | $7.m_features | $9.m_features | CatchFeature,
$2.m_numConstants + $7.m_numConstants + $9.m_numConstants);
- setStatementLocation($$.m_node, @1, @2); }
+ DBG($$.m_node, @1, @2); }
;
DebuggerStatement:
DEBUGGER ';' { $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) DebuggerStatementNode(GLOBAL_DATA), 0, 0, 0, 0);
- setStatementLocation($$.m_node, @1, @2); }
+ DBG($$.m_node, @1, @2); }
| DEBUGGER error { $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) DebuggerStatementNode(GLOBAL_DATA), 0, 0, 0, 0);
- setStatementLocation($$.m_node, @1, @1); AUTO_SEMICOLON; }
+ DBG($$.m_node, @1, @1); AUTO_SEMICOLON; }
;
FunctionDeclaration:
- FUNCTION IDENT '(' ')' OPENBRACE FunctionBody CLOSEBRACE { $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) FuncDeclNode(GLOBAL_DATA, *$2, $6, GLOBAL_DATA->lexer->sourceCode($5, $7, @5.first_line)), 0, new (GLOBAL_DATA) ParserArenaData<DeclarationStacks::FunctionStack>, ((*$2 == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | ClosureFeature, 0); setStatementLocation($6, @5, @7); $$.m_funcDeclarations->data.append(static_cast<FuncDeclNode*>($$.m_node)->body()); }
+ FUNCTION IDENT '(' ')' OPENBRACE FunctionBody CLOSEBRACE { $$ = createNodeDeclarationInfo<StatementNode*>(new FuncDeclNode(GLOBAL_DATA, *$2, $6, LEXER->sourceCode($5, $7, @5.first_line)), 0, new (GLOBAL_DATA) ParserArenaData<DeclarationStacks::FunctionStack>, ((*$2 == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | ClosureFeature, 0); DBG($6, @5, @7); $$.m_funcDeclarations->data.append(static_cast<FuncDeclNode*>($$.m_node)); }
| FUNCTION IDENT '(' FormalParameterList ')' OPENBRACE FunctionBody CLOSEBRACE
- {
- $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) FuncDeclNode(GLOBAL_DATA, *$2, $7, GLOBAL_DATA->lexer->sourceCode($6, $8, @6.first_line), $4.m_node.head), 0, new (GLOBAL_DATA) ParserArenaData<DeclarationStacks::FunctionStack>, ((*$2 == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | $4.m_features | ClosureFeature, 0);
+ {
+ $$ = createNodeDeclarationInfo<StatementNode*>(new FuncDeclNode(GLOBAL_DATA, *$2, $7, LEXER->sourceCode($6, $8, @6.first_line), $4.m_node.head), 0, new (GLOBAL_DATA) ParserArenaData<DeclarationStacks::FunctionStack>, ((*$2 == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | $4.m_features | ClosureFeature, 0);
if ($4.m_features & ArgumentsFeature)
- $7->setUsesArguments();
- setStatementLocation($7, @6, @8);
- $$.m_funcDeclarations->data.append(static_cast<FuncDeclNode*>($$.m_node)->body());
+ $7->setUsesArguments();
+ DBG($7, @6, @8);
+ $$.m_funcDeclarations->data.append(static_cast<FuncDeclNode*>($$.m_node));
}
;
FunctionExpr:
- FUNCTION '(' ')' OPENBRACE FunctionBody CLOSEBRACE { $$ = createNodeInfo(new (GLOBAL_DATA) FuncExprNode(GLOBAL_DATA, GLOBAL_DATA->propertyNames->nullIdentifier, $5, GLOBAL_DATA->lexer->sourceCode($4, $6, @4.first_line)), ClosureFeature, 0); setStatementLocation($5, @4, @6); }
- | FUNCTION '(' FormalParameterList ')' OPENBRACE FunctionBody CLOSEBRACE
- {
- $$ = createNodeInfo(new (GLOBAL_DATA) FuncExprNode(GLOBAL_DATA, GLOBAL_DATA->propertyNames->nullIdentifier, $6, GLOBAL_DATA->lexer->sourceCode($5, $7, @5.first_line), $3.m_node.head), $3.m_features | ClosureFeature, 0);
- if ($3.m_features & ArgumentsFeature)
+ FUNCTION '(' ')' OPENBRACE FunctionBody CLOSEBRACE { $$ = createNodeInfo(new FuncExprNode(GLOBAL_DATA, GLOBAL_DATA->propertyNames->nullIdentifier, $5, LEXER->sourceCode($4, $6, @4.first_line)), ClosureFeature, 0); DBG($5, @4, @6); }
+ | FUNCTION '(' FormalParameterList ')' OPENBRACE FunctionBody CLOSEBRACE
+ {
+ $$ = createNodeInfo(new FuncExprNode(GLOBAL_DATA, GLOBAL_DATA->propertyNames->nullIdentifier, $6, LEXER->sourceCode($5, $7, @5.first_line), $3.m_node.head), $3.m_features | ClosureFeature, 0);
+ if ($3.m_features & ArgumentsFeature)
$6->setUsesArguments();
- setStatementLocation($6, @5, @7);
+ DBG($6, @5, @7);
}
- | FUNCTION IDENT '(' ')' OPENBRACE FunctionBody CLOSEBRACE { $$ = createNodeInfo(new (GLOBAL_DATA) FuncExprNode(GLOBAL_DATA, *$2, $6, GLOBAL_DATA->lexer->sourceCode($5, $7, @5.first_line)), ClosureFeature, 0); setStatementLocation($6, @5, @7); }
- | FUNCTION IDENT '(' FormalParameterList ')' OPENBRACE FunctionBody CLOSEBRACE
- {
- $$ = createNodeInfo(new (GLOBAL_DATA) FuncExprNode(GLOBAL_DATA, *$2, $7, GLOBAL_DATA->lexer->sourceCode($6, $8, @6.first_line), $4.m_node.head), $4.m_features | ClosureFeature, 0);
+ | FUNCTION IDENT '(' ')' OPENBRACE FunctionBody CLOSEBRACE { $$ = createNodeInfo(new FuncExprNode(GLOBAL_DATA, *$2, $6, LEXER->sourceCode($5, $7, @5.first_line)), ClosureFeature, 0); DBG($6, @5, @7); }
+ | FUNCTION IDENT '(' FormalParameterList ')' OPENBRACE FunctionBody CLOSEBRACE
+ {
+ $$ = createNodeInfo(new FuncExprNode(GLOBAL_DATA, *$2, $7, LEXER->sourceCode($6, $8, @6.first_line), $4.m_node.head), $4.m_features | ClosureFeature, 0);
if ($4.m_features & ArgumentsFeature)
$7->setUsesArguments();
- setStatementLocation($7, @6, @8);
+ DBG($7, @6, @8);
}
;
@@ -1251,8 +1241,8 @@ Literal_NoNode:
| FALSETOKEN
| NUMBER { }
| STRING { }
- | '/' /* regexp */ { if (!GLOBAL_DATA->lexer->skipRegExp()) YYABORT; }
- | DIVEQUAL /* regexp with /= */ { if (!GLOBAL_DATA->lexer->skipRegExp()) YYABORT; }
+ | '/' /* regexp */ { Lexer& l = *LEXER; if (!l.scanRegExp()) YYABORT; }
+ | DIVEQUAL /* regexp with /= */ { Lexer& l = *LEXER; if (!l.scanRegExp()) YYABORT; }
;
Property_NoNode:
@@ -1834,28 +1824,26 @@ SourceElements_NoNode:
%%
-#undef GLOBAL_DATA
-
-static ExpressionNode* makeAssignNode(JSGlobalData* globalData, ExpressionNode* loc, Operator op, ExpressionNode* expr, bool locHasAssignments, bool exprHasAssignments, int start, int divot, int end)
+static ExpressionNode* makeAssignNode(void* globalPtr, ExpressionNode* loc, Operator op, ExpressionNode* expr, bool locHasAssignments, bool exprHasAssignments, int start, int divot, int end)
{
if (!loc->isLocation())
- return new (globalData) AssignErrorNode(globalData, loc, op, expr, divot, divot - start, end - divot);
+ return new (GLOBAL_DATA) AssignErrorNode(GLOBAL_DATA, loc, op, expr, divot, divot - start, end - divot);
if (loc->isResolveNode()) {
ResolveNode* resolve = static_cast<ResolveNode*>(loc);
if (op == OpEqual) {
- AssignResolveNode* node = new (globalData) AssignResolveNode(globalData, resolve->identifier(), expr, exprHasAssignments);
- setExceptionLocation(node, start, divot, end);
+ AssignResolveNode* node = new (GLOBAL_DATA) AssignResolveNode(GLOBAL_DATA, resolve->identifier(), expr, exprHasAssignments);
+ SET_EXCEPTION_LOCATION(node, start, divot, end);
return node;
} else
- return new (globalData) ReadModifyResolveNode(globalData, resolve->identifier(), op, expr, exprHasAssignments, divot, divot - start, end - divot);
+ return new (GLOBAL_DATA) ReadModifyResolveNode(GLOBAL_DATA, resolve->identifier(), op, expr, exprHasAssignments, divot, divot - start, end - divot);
}
if (loc->isBracketAccessorNode()) {
BracketAccessorNode* bracket = static_cast<BracketAccessorNode*>(loc);
if (op == OpEqual)
- return new (globalData) AssignBracketNode(globalData, bracket->base(), bracket->subscript(), expr, locHasAssignments, exprHasAssignments, bracket->divot(), bracket->divot() - start, end - bracket->divot());
+ return new (GLOBAL_DATA) AssignBracketNode(GLOBAL_DATA, bracket->base(), bracket->subscript(), expr, locHasAssignments, exprHasAssignments, bracket->divot(), bracket->divot() - start, end - bracket->divot());
else {
- ReadModifyBracketNode* node = new (globalData) ReadModifyBracketNode(globalData, bracket->base(), bracket->subscript(), op, expr, locHasAssignments, exprHasAssignments, divot, divot - start, end - divot);
+ ReadModifyBracketNode* node = new (GLOBAL_DATA) ReadModifyBracketNode(GLOBAL_DATA, bracket->base(), bracket->subscript(), op, expr, locHasAssignments, exprHasAssignments, divot, divot - start, end - divot);
node->setSubexpressionInfo(bracket->divot(), bracket->endOffset());
return node;
}
@@ -1863,117 +1851,117 @@ static ExpressionNode* makeAssignNode(JSGlobalData* globalData, ExpressionNode*
ASSERT(loc->isDotAccessorNode());
DotAccessorNode* dot = static_cast<DotAccessorNode*>(loc);
if (op == OpEqual)
- return new (globalData) AssignDotNode(globalData, dot->base(), dot->identifier(), expr, exprHasAssignments, dot->divot(), dot->divot() - start, end - dot->divot());
+ return new (GLOBAL_DATA) AssignDotNode(GLOBAL_DATA, dot->base(), dot->identifier(), expr, exprHasAssignments, dot->divot(), dot->divot() - start, end - dot->divot());
- ReadModifyDotNode* node = new (globalData) ReadModifyDotNode(globalData, dot->base(), dot->identifier(), op, expr, exprHasAssignments, divot, divot - start, end - divot);
+ ReadModifyDotNode* node = new (GLOBAL_DATA) ReadModifyDotNode(GLOBAL_DATA, dot->base(), dot->identifier(), op, expr, exprHasAssignments, divot, divot - start, end - divot);
node->setSubexpressionInfo(dot->divot(), dot->endOffset());
return node;
}
-static ExpressionNode* makePrefixNode(JSGlobalData* globalData, ExpressionNode* expr, Operator op, int start, int divot, int end)
+static ExpressionNode* makePrefixNode(void* globalPtr, ExpressionNode* expr, Operator op, int start, int divot, int end)
{
if (!expr->isLocation())
- return new (globalData) PrefixErrorNode(globalData, expr, op, divot, divot - start, end - divot);
+ return new (GLOBAL_DATA) PrefixErrorNode(GLOBAL_DATA, expr, op, divot, divot - start, end - divot);
if (expr->isResolveNode()) {
ResolveNode* resolve = static_cast<ResolveNode*>(expr);
- return new (globalData) PrefixResolveNode(globalData, resolve->identifier(), op, divot, divot - start, end - divot);
+ return new (GLOBAL_DATA) PrefixResolveNode(GLOBAL_DATA, resolve->identifier(), op, divot, divot - start, end - divot);
}
if (expr->isBracketAccessorNode()) {
BracketAccessorNode* bracket = static_cast<BracketAccessorNode*>(expr);
- PrefixBracketNode* node = new (globalData) PrefixBracketNode(globalData, bracket->base(), bracket->subscript(), op, divot, divot - start, end - divot);
+ PrefixBracketNode* node = new (GLOBAL_DATA) PrefixBracketNode(GLOBAL_DATA, bracket->base(), bracket->subscript(), op, divot, divot - start, end - divot);
node->setSubexpressionInfo(bracket->divot(), bracket->startOffset());
return node;
}
ASSERT(expr->isDotAccessorNode());
DotAccessorNode* dot = static_cast<DotAccessorNode*>(expr);
- PrefixDotNode* node = new (globalData) PrefixDotNode(globalData, dot->base(), dot->identifier(), op, divot, divot - start, end - divot);
+ PrefixDotNode* node = new (GLOBAL_DATA) PrefixDotNode(GLOBAL_DATA, dot->base(), dot->identifier(), op, divot, divot - start, end - divot);
node->setSubexpressionInfo(dot->divot(), dot->startOffset());
return node;
}
-static ExpressionNode* makePostfixNode(JSGlobalData* globalData, ExpressionNode* expr, Operator op, int start, int divot, int end)
+static ExpressionNode* makePostfixNode(void* globalPtr, ExpressionNode* expr, Operator op, int start, int divot, int end)
{
if (!expr->isLocation())
- return new (globalData) PostfixErrorNode(globalData, expr, op, divot, divot - start, end - divot);
+ return new (GLOBAL_DATA) PostfixErrorNode(GLOBAL_DATA, expr, op, divot, divot - start, end - divot);
if (expr->isResolveNode()) {
ResolveNode* resolve = static_cast<ResolveNode*>(expr);
- return new (globalData) PostfixResolveNode(globalData, resolve->identifier(), op, divot, divot - start, end - divot);
+ return new (GLOBAL_DATA) PostfixResolveNode(GLOBAL_DATA, resolve->identifier(), op, divot, divot - start, end - divot);
}
if (expr->isBracketAccessorNode()) {
BracketAccessorNode* bracket = static_cast<BracketAccessorNode*>(expr);
- PostfixBracketNode* node = new (globalData) PostfixBracketNode(globalData, bracket->base(), bracket->subscript(), op, divot, divot - start, end - divot);
+ PostfixBracketNode* node = new (GLOBAL_DATA) PostfixBracketNode(GLOBAL_DATA, bracket->base(), bracket->subscript(), op, divot, divot - start, end - divot);
node->setSubexpressionInfo(bracket->divot(), bracket->endOffset());
return node;
}
ASSERT(expr->isDotAccessorNode());
DotAccessorNode* dot = static_cast<DotAccessorNode*>(expr);
- PostfixDotNode* node = new (globalData) PostfixDotNode(globalData, dot->base(), dot->identifier(), op, divot, divot - start, end - divot);
+ PostfixDotNode* node = new (GLOBAL_DATA) PostfixDotNode(GLOBAL_DATA, dot->base(), dot->identifier(), op, divot, divot - start, end - divot);
node->setSubexpressionInfo(dot->divot(), dot->endOffset());
return node;
}
-static ExpressionNodeInfo makeFunctionCallNode(JSGlobalData* globalData, ExpressionNodeInfo func, ArgumentsNodeInfo args, int start, int divot, int end)
+static ExpressionNodeInfo makeFunctionCallNode(void* globalPtr, ExpressionNodeInfo func, ArgumentsNodeInfo args, int start, int divot, int end)
{
CodeFeatures features = func.m_features | args.m_features;
int numConstants = func.m_numConstants + args.m_numConstants;
if (!func.m_node->isLocation())
- return createNodeInfo<ExpressionNode*>(new (globalData) FunctionCallValueNode(globalData, func.m_node, args.m_node, divot, divot - start, end - divot), features, numConstants);
+ return createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) FunctionCallValueNode(GLOBAL_DATA, func.m_node, args.m_node, divot, divot - start, end - divot), features, numConstants);
if (func.m_node->isResolveNode()) {
ResolveNode* resolve = static_cast<ResolveNode*>(func.m_node);
const Identifier& identifier = resolve->identifier();
- if (identifier == globalData->propertyNames->eval)
- return createNodeInfo<ExpressionNode*>(new (globalData) EvalFunctionCallNode(globalData, args.m_node, divot, divot - start, end - divot), EvalFeature | features, numConstants);
- return createNodeInfo<ExpressionNode*>(new (globalData) FunctionCallResolveNode(globalData, identifier, args.m_node, divot, divot - start, end - divot), features, numConstants);
+ if (identifier == GLOBAL_DATA->propertyNames->eval)
+ return createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) EvalFunctionCallNode(GLOBAL_DATA, args.m_node, divot, divot - start, end - divot), EvalFeature | features, numConstants);
+ return createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) FunctionCallResolveNode(GLOBAL_DATA, identifier, args.m_node, divot, divot - start, end - divot), features, numConstants);
}
if (func.m_node->isBracketAccessorNode()) {
BracketAccessorNode* bracket = static_cast<BracketAccessorNode*>(func.m_node);
- FunctionCallBracketNode* node = new (globalData) FunctionCallBracketNode(globalData, bracket->base(), bracket->subscript(), args.m_node, divot, divot - start, end - divot);
+ FunctionCallBracketNode* node = new (GLOBAL_DATA) FunctionCallBracketNode(GLOBAL_DATA, bracket->base(), bracket->subscript(), args.m_node, divot, divot - start, end - divot);
node->setSubexpressionInfo(bracket->divot(), bracket->endOffset());
return createNodeInfo<ExpressionNode*>(node, features, numConstants);
}
ASSERT(func.m_node->isDotAccessorNode());
DotAccessorNode* dot = static_cast<DotAccessorNode*>(func.m_node);
FunctionCallDotNode* node;
- if (dot->identifier() == globalData->propertyNames->call)
- node = new (globalData) CallFunctionCallDotNode(globalData, dot->base(), dot->identifier(), args.m_node, divot, divot - start, end - divot);
- else if (dot->identifier() == globalData->propertyNames->apply)
- node = new (globalData) ApplyFunctionCallDotNode(globalData, dot->base(), dot->identifier(), args.m_node, divot, divot - start, end - divot);
+ if (dot->identifier() == GLOBAL_DATA->propertyNames->call)
+ node = new (GLOBAL_DATA) CallFunctionCallDotNode(GLOBAL_DATA, dot->base(), dot->identifier(), args.m_node, divot, divot - start, end - divot);
+ else if (dot->identifier() == GLOBAL_DATA->propertyNames->apply)
+ node = new (GLOBAL_DATA) ApplyFunctionCallDotNode(GLOBAL_DATA, dot->base(), dot->identifier(), args.m_node, divot, divot - start, end - divot);
else
- node = new (globalData) FunctionCallDotNode(globalData, dot->base(), dot->identifier(), args.m_node, divot, divot - start, end - divot);
+ node = new (GLOBAL_DATA) FunctionCallDotNode(GLOBAL_DATA, dot->base(), dot->identifier(), args.m_node, divot, divot - start, end - divot);
node->setSubexpressionInfo(dot->divot(), dot->endOffset());
return createNodeInfo<ExpressionNode*>(node, features, numConstants);
}
-static ExpressionNode* makeTypeOfNode(JSGlobalData* globalData, ExpressionNode* expr)
+static ExpressionNode* makeTypeOfNode(void* globalPtr, ExpressionNode* expr)
{
if (expr->isResolveNode()) {
ResolveNode* resolve = static_cast<ResolveNode*>(expr);
- return new (globalData) TypeOfResolveNode(globalData, resolve->identifier());
+ return new (GLOBAL_DATA) TypeOfResolveNode(GLOBAL_DATA, resolve->identifier());
}
- return new (globalData) TypeOfValueNode(globalData, expr);
+ return new (GLOBAL_DATA) TypeOfValueNode(GLOBAL_DATA, expr);
}
-static ExpressionNode* makeDeleteNode(JSGlobalData* globalData, ExpressionNode* expr, int start, int divot, int end)
+static ExpressionNode* makeDeleteNode(void* globalPtr, ExpressionNode* expr, int start, int divot, int end)
{
if (!expr->isLocation())
- return new (globalData) DeleteValueNode(globalData, expr);
+ return new (GLOBAL_DATA) DeleteValueNode(GLOBAL_DATA, expr);
if (expr->isResolveNode()) {
ResolveNode* resolve = static_cast<ResolveNode*>(expr);
- return new (globalData) DeleteResolveNode(globalData, resolve->identifier(), divot, divot - start, end - divot);
+ return new (GLOBAL_DATA) DeleteResolveNode(GLOBAL_DATA, resolve->identifier(), divot, divot - start, end - divot);
}
if (expr->isBracketAccessorNode()) {
BracketAccessorNode* bracket = static_cast<BracketAccessorNode*>(expr);
- return new (globalData) DeleteBracketNode(globalData, bracket->base(), bracket->subscript(), divot, divot - start, end - divot);
+ return new (GLOBAL_DATA) DeleteBracketNode(GLOBAL_DATA, bracket->base(), bracket->subscript(), divot, divot - start, end - divot);
}
ASSERT(expr->isDotAccessorNode());
DotAccessorNode* dot = static_cast<DotAccessorNode*>(expr);
- return new (globalData) DeleteDotNode(globalData, dot->base(), dot->identifier(), divot, divot - start, end - divot);
+ return new (GLOBAL_DATA) DeleteDotNode(GLOBAL_DATA, dot->base(), dot->identifier(), divot, divot - start, end - divot);
}
-static PropertyNode* makeGetterOrSetterPropertyNode(JSGlobalData* globalData, const Identifier& getOrSet, const Identifier& name, ParameterNode* params, FunctionBodyNode* body, const SourceCode& source)
+static PropertyNode* makeGetterOrSetterPropertyNode(void* globalPtr, const Identifier& getOrSet, const Identifier& name, ParameterNode* params, FunctionBodyNode* body, const SourceCode& source)
{
PropertyNode::Type type;
if (getOrSet == "get")
@@ -1982,10 +1970,10 @@ static PropertyNode* makeGetterOrSetterPropertyNode(JSGlobalData* globalData, co
type = PropertyNode::Setter;
else
return 0;
- return new (globalData) PropertyNode(globalData, name, new (globalData) FuncExprNode(globalData, globalData->propertyNames->nullIdentifier, body, source, params), type);
+ return new (GLOBAL_DATA) PropertyNode(GLOBAL_DATA, name, new FuncExprNode(GLOBAL_DATA, GLOBAL_DATA->propertyNames->nullIdentifier, body, source, params), type);
}
-static ExpressionNode* makeNegateNode(JSGlobalData* globalData, ExpressionNode* n)
+static ExpressionNode* makeNegateNode(void* globalPtr, ExpressionNode* n)
{
if (n->isNumber()) {
NumberNode* number = static_cast<NumberNode*>(n);
@@ -1996,92 +1984,92 @@ static ExpressionNode* makeNegateNode(JSGlobalData* globalData, ExpressionNode*
}
}
- return new (globalData) NegateNode(globalData, n);
+ return new (GLOBAL_DATA) NegateNode(GLOBAL_DATA, n);
}
-static NumberNode* makeNumberNode(JSGlobalData* globalData, double d)
+static NumberNode* makeNumberNode(void* globalPtr, double d)
{
- return new (globalData) NumberNode(globalData, d);
+ return new (GLOBAL_DATA) NumberNode(GLOBAL_DATA, d);
}
-static ExpressionNode* makeBitwiseNotNode(JSGlobalData* globalData, ExpressionNode* expr)
+static ExpressionNode* makeBitwiseNotNode(void* globalPtr, ExpressionNode* expr)
{
if (expr->isNumber())
- return makeNumberNode(globalData, ~toInt32(static_cast<NumberNode*>(expr)->value()));
- return new (globalData) BitwiseNotNode(globalData, expr);
+ return makeNumberNode(globalPtr, ~toInt32(static_cast<NumberNode*>(expr)->value()));
+ return new (GLOBAL_DATA) BitwiseNotNode(GLOBAL_DATA, expr);
}
-static ExpressionNode* makeMultNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
+static ExpressionNode* makeMultNode(void* globalPtr, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
{
expr1 = expr1->stripUnaryPlus();
expr2 = expr2->stripUnaryPlus();
if (expr1->isNumber() && expr2->isNumber())
- return makeNumberNode(globalData, static_cast<NumberNode*>(expr1)->value() * static_cast<NumberNode*>(expr2)->value());
+ return makeNumberNode(globalPtr, static_cast<NumberNode*>(expr1)->value() * static_cast<NumberNode*>(expr2)->value());
if (expr1->isNumber() && static_cast<NumberNode*>(expr1)->value() == 1)
- return new (globalData) UnaryPlusNode(globalData, expr2);
+ return new (GLOBAL_DATA) UnaryPlusNode(GLOBAL_DATA, expr2);
if (expr2->isNumber() && static_cast<NumberNode*>(expr2)->value() == 1)
- return new (globalData) UnaryPlusNode(globalData, expr1);
+ return new (GLOBAL_DATA) UnaryPlusNode(GLOBAL_DATA, expr1);
- return new (globalData) MultNode(globalData, expr1, expr2, rightHasAssignments);
+ return new (GLOBAL_DATA) MultNode(GLOBAL_DATA, expr1, expr2, rightHasAssignments);
}
-static ExpressionNode* makeDivNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
+static ExpressionNode* makeDivNode(void* globalPtr, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
{
expr1 = expr1->stripUnaryPlus();
expr2 = expr2->stripUnaryPlus();
if (expr1->isNumber() && expr2->isNumber())
- return makeNumberNode(globalData, static_cast<NumberNode*>(expr1)->value() / static_cast<NumberNode*>(expr2)->value());
- return new (globalData) DivNode(globalData, expr1, expr2, rightHasAssignments);
+ return makeNumberNode(globalPtr, static_cast<NumberNode*>(expr1)->value() / static_cast<NumberNode*>(expr2)->value());
+ return new (GLOBAL_DATA) DivNode(GLOBAL_DATA, expr1, expr2, rightHasAssignments);
}
-static ExpressionNode* makeAddNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
+static ExpressionNode* makeAddNode(void* globalPtr, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
{
if (expr1->isNumber() && expr2->isNumber())
- return makeNumberNode(globalData, static_cast<NumberNode*>(expr1)->value() + static_cast<NumberNode*>(expr2)->value());
- return new (globalData) AddNode(globalData, expr1, expr2, rightHasAssignments);
+ return makeNumberNode(globalPtr, static_cast<NumberNode*>(expr1)->value() + static_cast<NumberNode*>(expr2)->value());
+ return new (GLOBAL_DATA) AddNode(GLOBAL_DATA, expr1, expr2, rightHasAssignments);
}
-static ExpressionNode* makeSubNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
+static ExpressionNode* makeSubNode(void* globalPtr, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
{
expr1 = expr1->stripUnaryPlus();
expr2 = expr2->stripUnaryPlus();
if (expr1->isNumber() && expr2->isNumber())
- return makeNumberNode(globalData, static_cast<NumberNode*>(expr1)->value() - static_cast<NumberNode*>(expr2)->value());
- return new (globalData) SubNode(globalData, expr1, expr2, rightHasAssignments);
+ return makeNumberNode(globalPtr, static_cast<NumberNode*>(expr1)->value() - static_cast<NumberNode*>(expr2)->value());
+ return new (GLOBAL_DATA) SubNode(GLOBAL_DATA, expr1, expr2, rightHasAssignments);
}
-static ExpressionNode* makeLeftShiftNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
+static ExpressionNode* makeLeftShiftNode(void* globalPtr, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
{
if (expr1->isNumber() && expr2->isNumber())
- return makeNumberNode(globalData, toInt32(static_cast<NumberNode*>(expr1)->value()) << (toUInt32(static_cast<NumberNode*>(expr2)->value()) & 0x1f));
- return new (globalData) LeftShiftNode(globalData, expr1, expr2, rightHasAssignments);
+ return makeNumberNode(globalPtr, toInt32(static_cast<NumberNode*>(expr1)->value()) << (toUInt32(static_cast<NumberNode*>(expr2)->value()) & 0x1f));
+ return new (GLOBAL_DATA) LeftShiftNode(GLOBAL_DATA, expr1, expr2, rightHasAssignments);
}
-static ExpressionNode* makeRightShiftNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
+static ExpressionNode* makeRightShiftNode(void* globalPtr, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
{
if (expr1->isNumber() && expr2->isNumber())
- return makeNumberNode(globalData, toInt32(static_cast<NumberNode*>(expr1)->value()) >> (toUInt32(static_cast<NumberNode*>(expr2)->value()) & 0x1f));
- return new (globalData) RightShiftNode(globalData, expr1, expr2, rightHasAssignments);
+ return makeNumberNode(globalPtr, toInt32(static_cast<NumberNode*>(expr1)->value()) >> (toUInt32(static_cast<NumberNode*>(expr2)->value()) & 0x1f));
+ return new (GLOBAL_DATA) RightShiftNode(GLOBAL_DATA, expr1, expr2, rightHasAssignments);
}
-// Called by yyparse on error.
-int yyerror(const char*)
+/* called by yyparse on error */
+int yyerror(const char *)
{
return 1;
}
-// May we automatically insert a semicolon?
+/* may we automatically insert a semicolon ? */
static bool allowAutomaticSemicolon(Lexer& lexer, int yychar)
{
return yychar == CLOSEBRACE || yychar == 0 || lexer.prevTerminator();
}
-static ExpressionNode* combineCommaNodes(JSGlobalData* globalData, ExpressionNode* list, ExpressionNode* init)
+static ExpressionNode* combineCommaNodes(void* globalPtr, ExpressionNode* list, ExpressionNode* init)
{
if (!list)
return init;
@@ -2089,15 +2077,17 @@ static ExpressionNode* combineCommaNodes(JSGlobalData* globalData, ExpressionNod
static_cast<CommaNode*>(list)->append(init);
return list;
}
- return new (globalData) CommaNode(globalData, list, init);
+ return new (GLOBAL_DATA) CommaNode(GLOBAL_DATA, list, init);
}
// We turn variable declarations into either assignments or empty
// statements (which later get stripped out), because the actual
// declaration work is hoisted up to the start of the function body
-static StatementNode* makeVarStatementNode(JSGlobalData* globalData, ExpressionNode* expr)
+static StatementNode* makeVarStatementNode(void* globalPtr, ExpressionNode* expr)
{
if (!expr)
- return new (globalData) EmptyStatementNode(globalData);
- return new (globalData) VarStatementNode(globalData, expr);
+ return new (GLOBAL_DATA) EmptyStatementNode(GLOBAL_DATA);
+ return new (GLOBAL_DATA) VarStatementNode(GLOBAL_DATA, expr);
}
+
+#undef GLOBAL_DATA
diff --git a/JavaScriptCore/parser/Lexer.cpp b/JavaScriptCore/parser/Lexer.cpp
index febd9a4..8e89c18 100644
--- a/JavaScriptCore/parser/Lexer.cpp
+++ b/JavaScriptCore/parser/Lexer.cpp
@@ -908,107 +908,45 @@ returnError:
return -1;
}
-bool Lexer::scanRegExp(const Identifier*& pattern, const Identifier*& flags, UChar patternPrefix)
+bool Lexer::scanRegExp()
{
ASSERT(m_buffer16.isEmpty());
bool lastWasEscape = false;
bool inBrackets = false;
- if (patternPrefix) {
- ASSERT(!isLineTerminator(patternPrefix));
- ASSERT(patternPrefix != '/');
- ASSERT(patternPrefix != '[');
- record16(patternPrefix);
- }
-
while (true) {
- int current = m_current;
-
- if (isLineTerminator(current) || current == -1) {
- m_buffer16.resize(0);
+ if (isLineTerminator(m_current) || m_current == -1)
return false;
- }
-
- shift1();
-
- if (current == '/' && !lastWasEscape && !inBrackets)
- break;
-
- record16(current);
-
- if (lastWasEscape) {
- lastWasEscape = false;
- continue;
- }
-
- switch (current) {
- case '[':
- inBrackets = true;
- break;
- case ']':
- inBrackets = false;
- break;
- case '\\':
- lastWasEscape = true;
+ if (m_current != '/' || lastWasEscape || inBrackets) {
+ // keep track of '[' and ']'
+ if (!lastWasEscape) {
+ if (m_current == '[' && !inBrackets)
+ inBrackets = true;
+ if (m_current == ']' && inBrackets)
+ inBrackets = false;
+ }
+ record16(m_current);
+ lastWasEscape = !lastWasEscape && m_current == '\\';
+ } else { // end of regexp
+ m_pattern = UString(m_buffer16);
+ m_buffer16.resize(0);
+ shift1();
break;
}
+ shift1();
}
- pattern = makeIdentifier(m_buffer16.data(), m_buffer16.size());
- m_buffer16.resize(0);
-
while (isIdentPart(m_current)) {
record16(m_current);
shift1();
}
-
- flags = makeIdentifier(m_buffer16.data(), m_buffer16.size());
+ m_flags = UString(m_buffer16);
m_buffer16.resize(0);
return true;
}
-bool Lexer::skipRegExp()
-{
- bool lastWasEscape = false;
- bool inBrackets = false;
-
- while (true) {
- int current = m_current;
-
- if (isLineTerminator(current) || current == -1)
- return false;
-
- shift1();
-
- if (current == '/' && !lastWasEscape && !inBrackets)
- break;
-
- if (lastWasEscape) {
- lastWasEscape = false;
- continue;
- }
-
- switch (current) {
- case '[':
- inBrackets = true;
- break;
- case ']':
- inBrackets = false;
- break;
- case '\\':
- lastWasEscape = true;
- break;
- }
- }
-
- while (isIdentPart(m_current))
- shift1();
-
- return true;
-}
-
void Lexer::clear()
{
m_identifiers.clear();
@@ -1023,6 +961,9 @@ void Lexer::clear()
m_buffer16.swap(newBuffer16);
m_isReparsing = false;
+
+ m_pattern = UString();
+ m_flags = UString();
}
SourceCode Lexer::sourceCode(int openBrace, int closeBrace, int firstLine)
diff --git a/JavaScriptCore/parser/Lexer.h b/JavaScriptCore/parser/Lexer.h
index 23c2890..2583162 100644
--- a/JavaScriptCore/parser/Lexer.h
+++ b/JavaScriptCore/parser/Lexer.h
@@ -50,8 +50,9 @@ namespace JSC {
int lineNumber() const { return m_lineNumber; }
bool prevTerminator() const { return m_terminator; }
SourceCode sourceCode(int openBrace, int closeBrace, int firstLine);
- bool scanRegExp(const Identifier*& pattern, const Identifier*& flags, UChar patternPrefix = 0);
- bool skipRegExp();
+ bool scanRegExp();
+ const UString& pattern() const { return m_pattern; }
+ const UString& flags() const { return m_flags; }
// Functions for use after parsing.
bool sawError() const { return m_error; }
@@ -111,6 +112,9 @@ namespace JSC {
JSGlobalData* m_globalData;
+ UString m_pattern;
+ UString m_flags;
+
const HashTable m_keywordTable;
Vector<UChar> m_codeWithoutBOMs;
diff --git a/JavaScriptCore/parser/NodeConstructors.h b/JavaScriptCore/parser/NodeConstructors.h
index 0052746..780a624 100644
--- a/JavaScriptCore/parser/NodeConstructors.h
+++ b/JavaScriptCore/parser/NodeConstructors.h
@@ -89,7 +89,7 @@ namespace JSC {
{
}
- inline RegExpNode::RegExpNode(JSGlobalData* globalData, const Identifier& pattern, const Identifier& flags)
+ inline RegExpNode::RegExpNode(JSGlobalData* globalData, const UString& pattern, const UString& flags)
: ExpressionNode(globalData)
, m_pattern(pattern)
, m_flags(flags)
@@ -154,13 +154,6 @@ namespace JSC {
{
}
- inline PropertyNode::PropertyNode(JSGlobalData* globalData, double name, ExpressionNode* assign, Type type)
- : m_name(Identifier(globalData, UString::from(name)))
- , m_assign(assign)
- , m_type(type)
- {
- }
-
inline PropertyListNode::PropertyListNode(JSGlobalData* globalData, PropertyNode* node)
: Node(globalData)
, m_node(node)
@@ -821,16 +814,20 @@ namespace JSC {
inline FuncExprNode::FuncExprNode(JSGlobalData* globalData, const Identifier& ident, FunctionBodyNode* body, const SourceCode& source, ParameterNode* parameter)
: ExpressionNode(globalData)
+ , ParserArenaRefCounted(globalData)
+ , m_ident(ident)
, m_body(body)
{
- m_body->finishParsing(source, parameter, ident);
+ m_body->finishParsing(source, parameter);
}
inline FuncDeclNode::FuncDeclNode(JSGlobalData* globalData, const Identifier& ident, FunctionBodyNode* body, const SourceCode& source, ParameterNode* parameter)
: StatementNode(globalData)
+ , ParserArenaRefCounted(globalData)
+ , m_ident(ident)
, m_body(body)
{
- m_body->finishParsing(source, parameter, ident);
+ m_body->finishParsing(source, parameter);
}
inline CaseClauseNode::CaseClauseNode(JSGlobalData*, ExpressionNode* expr)
diff --git a/JavaScriptCore/parser/Nodes.cpp b/JavaScriptCore/parser/Nodes.cpp
index 11a24b5..4324a06 100644
--- a/JavaScriptCore/parser/Nodes.cpp
+++ b/JavaScriptCore/parser/Nodes.cpp
@@ -138,7 +138,7 @@ RegisterID* StringNode::emitBytecode(BytecodeGenerator& generator, RegisterID* d
RegisterID* RegExpNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
- RefPtr<RegExp> regExp = RegExp::create(generator.globalData(), m_pattern.ustring(), m_flags.ustring());
+ RefPtr<RegExp> regExp = RegExp::create(generator.globalData(), m_pattern, m_flags);
if (!regExp->isValid())
return emitThrowError(generator, SyntaxError, ("Invalid regular expression: " + UString(regExp->errorMessage())).UTF8String().c_str());
if (dst == generator.ignoredResult())
@@ -1205,13 +1205,7 @@ RegisterID* ConstDeclNode::emitCodeSingle(BytecodeGenerator& generator)
return generator.emitNode(local, m_init);
}
-
- if (generator.codeType() != EvalCode) {
- if (m_init)
- return generator.emitNode(m_init);
- else
- return generator.emitResolve(generator.newTemporary(), m_ident);
- }
+
// FIXME: While this code should only be hit in eval code, it will potentially
// assign to the wrong base if m_ident exists in an intervening dynamic scope.
RefPtr<RegisterID> base = generator.emitResolveBase(generator.newTemporary(), m_ident);
@@ -1824,6 +1818,17 @@ ScopeNodeData::ScopeNodeData(ParserArena& arena, SourceElements* children, VarSt
children->releaseContentsIntoVector(m_children);
}
+void ScopeNodeData::markAggregate(MarkStack& markStack)
+{
+ FunctionStack::iterator end = m_functionStack.end();
+ for (FunctionStack::iterator ptr = m_functionStack.begin(); ptr != end; ++ptr) {
+ FunctionBodyNode* body = (*ptr)->body();
+ if (!body->isGenerated())
+ continue;
+ body->generatedBytecode().markAggregate(markStack);
+ }
+}
+
// ------------------------------ ScopeNode -----------------------------
ScopeNode::ScopeNode(JSGlobalData* globalData)
@@ -1881,6 +1886,30 @@ RegisterID* ProgramNode::emitBytecode(BytecodeGenerator& generator, RegisterID*)
return 0;
}
+void ProgramNode::generateBytecode(ScopeChainNode* scopeChainNode)
+{
+ ScopeChain scopeChain(scopeChainNode);
+ JSGlobalObject* globalObject = scopeChain.globalObject();
+
+ m_code.set(new ProgramCodeBlock(this, GlobalCode, globalObject, source().provider()));
+
+ OwnPtr<BytecodeGenerator> generator(new BytecodeGenerator(this, globalObject->debugger(), scopeChain, &globalObject->symbolTable(), m_code.get()));
+ generator->generate();
+
+ destroyData();
+}
+
+#if ENABLE(JIT)
+void ProgramNode::generateJITCode(ScopeChainNode* scopeChainNode)
+{
+ bytecode(scopeChainNode);
+ ASSERT(m_code);
+ ASSERT(!m_jitCode);
+ JIT::compile(scopeChainNode->globalData, m_code.get());
+ ASSERT(m_jitCode);
+}
+#endif
+
// ------------------------------ EvalNode -----------------------------
inline EvalNode::EvalNode(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, const SourceCode& source, CodeFeatures features, int numConstants)
@@ -1912,6 +1941,54 @@ RegisterID* EvalNode::emitBytecode(BytecodeGenerator& generator, RegisterID*)
return 0;
}
+void EvalNode::generateBytecode(ScopeChainNode* scopeChainNode)
+{
+ ScopeChain scopeChain(scopeChainNode);
+ JSGlobalObject* globalObject = scopeChain.globalObject();
+
+ m_code.set(new EvalCodeBlock(this, globalObject, source().provider(), scopeChain.localDepth()));
+
+ OwnPtr<BytecodeGenerator> generator(new BytecodeGenerator(this, globalObject->debugger(), scopeChain, &m_code->symbolTable(), m_code.get()));
+ generator->generate();
+
+ // Eval code needs to hang on to its declaration stacks to keep declaration info alive until Interpreter::execute time,
+ // so the entire ScopeNodeData cannot be destoyed.
+ children().clear();
+}
+
+EvalCodeBlock& EvalNode::bytecodeForExceptionInfoReparse(ScopeChainNode* scopeChainNode, CodeBlock* codeBlockBeingRegeneratedFrom)
+{
+ ASSERT(!m_code);
+
+ ScopeChain scopeChain(scopeChainNode);
+ JSGlobalObject* globalObject = scopeChain.globalObject();
+
+ m_code.set(new EvalCodeBlock(this, globalObject, source().provider(), scopeChain.localDepth()));
+
+ OwnPtr<BytecodeGenerator> generator(new BytecodeGenerator(this, globalObject->debugger(), scopeChain, &m_code->symbolTable(), m_code.get()));
+ generator->setRegeneratingForExceptionInfo(codeBlockBeingRegeneratedFrom);
+ generator->generate();
+
+ return *m_code;
+}
+
+void EvalNode::markAggregate(MarkStack& markStack)
+{
+ // We don't need to mark our own CodeBlock as the JSGlobalObject takes care of that
+ data()->markAggregate(markStack);
+}
+
+#if ENABLE(JIT)
+void EvalNode::generateJITCode(ScopeChainNode* scopeChainNode)
+{
+ bytecode(scopeChainNode);
+ ASSERT(m_code);
+ ASSERT(!m_jitCode);
+ JIT::compile(scopeChainNode->globalData, m_code.get());
+ ASSERT(m_jitCode);
+}
+#endif
+
// ------------------------------ FunctionBodyNode -----------------------------
inline FunctionBodyNode::FunctionBodyNode(JSGlobalData* globalData)
@@ -1935,7 +2012,7 @@ FunctionBodyNode::~FunctionBodyNode()
fastFree(m_parameters);
}
-void FunctionBodyNode::finishParsing(const SourceCode& source, ParameterNode* firstParameter, const Identifier& ident)
+void FunctionBodyNode::finishParsing(const SourceCode& source, ParameterNode* firstParameter)
{
Vector<Identifier> parameters;
for (ParameterNode* parameter = firstParameter; parameter; parameter = parameter->nextParam())
@@ -1943,15 +2020,36 @@ void FunctionBodyNode::finishParsing(const SourceCode& source, ParameterNode* fi
size_t count = parameters.size();
setSource(source);
- finishParsing(parameters.releaseBuffer(), count, ident);
+ finishParsing(parameters.releaseBuffer(), count);
}
-void FunctionBodyNode::finishParsing(Identifier* parameters, size_t parameterCount, const Identifier& ident)
+void FunctionBodyNode::finishParsing(Identifier* parameters, size_t parameterCount)
{
ASSERT(!source().isNull());
m_parameters = parameters;
m_parameterCount = parameterCount;
- m_ident = ident;
+}
+
+void FunctionBodyNode::markAggregate(MarkStack& markStack)
+{
+ if (m_code)
+ m_code->markAggregate(markStack);
+}
+
+#if ENABLE(JIT)
+PassRefPtr<FunctionBodyNode> FunctionBodyNode::createNativeThunk(JSGlobalData* globalData)
+{
+ RefPtr<FunctionBodyNode> body = new FunctionBodyNode(globalData);
+ globalData->parser->arena().reset();
+ body->m_code.set(new CodeBlock(body.get()));
+ body->m_jitCode = JITCode(JITCode::HostFunction(globalData->jitStubs.ctiNativeCallThunk()));
+ return body.release();
+}
+#endif
+
+bool FunctionBodyNode::isHostFunction() const
+{
+ return m_code && m_code->codeType() == NativeCode;
}
FunctionBodyNode* FunctionBodyNode::create(JSGlobalData* globalData)
@@ -1970,13 +2068,50 @@ PassRefPtr<FunctionBodyNode> FunctionBodyNode::create(JSGlobalData* globalData,
return node.release();
}
-void FunctionBodyNode::reparseDataIfNecessary(ScopeChainNode* scopeChainNode)
+void FunctionBodyNode::generateBytecode(ScopeChainNode* scopeChainNode)
{
// This branch is only necessary since you can still create a non-stub FunctionBodyNode by
// calling Parser::parse<FunctionBodyNode>().
if (!data())
scopeChainNode->globalData->parser->reparseInPlace(scopeChainNode->globalData, this);
ASSERT(data());
+
+ ScopeChain scopeChain(scopeChainNode);
+ JSGlobalObject* globalObject = scopeChain.globalObject();
+
+ m_code.set(new CodeBlock(this, FunctionCode, source().provider(), source().startOffset()));
+
+ OwnPtr<BytecodeGenerator> generator(new BytecodeGenerator(this, globalObject->debugger(), scopeChain, &m_code->symbolTable(), m_code.get()));
+ generator->generate();
+
+ destroyData();
+}
+
+#if ENABLE(JIT)
+void FunctionBodyNode::generateJITCode(ScopeChainNode* scopeChainNode)
+{
+ bytecode(scopeChainNode);
+ ASSERT(m_code);
+ ASSERT(!m_jitCode);
+ JIT::compile(scopeChainNode->globalData, m_code.get());
+ ASSERT(m_jitCode);
+}
+#endif
+
+CodeBlock& FunctionBodyNode::bytecodeForExceptionInfoReparse(ScopeChainNode* scopeChainNode, CodeBlock* codeBlockBeingRegeneratedFrom)
+{
+ ASSERT(!m_code);
+
+ ScopeChain scopeChain(scopeChainNode);
+ JSGlobalObject* globalObject = scopeChain.globalObject();
+
+ m_code.set(new CodeBlock(this, FunctionCode, source().provider(), source().startOffset()));
+
+ OwnPtr<BytecodeGenerator> generator(new BytecodeGenerator(this, globalObject->debugger(), scopeChain, &m_code->symbolTable(), m_code.get()));
+ generator->setRegeneratingForExceptionInfo(codeBlockBeingRegeneratedFrom);
+ generator->generate();
+
+ return *m_code;
}
RegisterID* FunctionBodyNode::emitBytecode(BytecodeGenerator& generator, RegisterID*)
@@ -2016,6 +2151,11 @@ Identifier* FunctionBodyNode::copyParameters()
// ------------------------------ FuncDeclNode ---------------------------------
+JSFunction* FuncDeclNode::makeFunction(ExecState* exec, ScopeChainNode* scopeChain)
+{
+ return new (exec) JSFunction(exec, m_ident, m_body.get(), scopeChain);
+}
+
RegisterID* FuncDeclNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
if (dst == generator.ignoredResult())
@@ -2030,4 +2170,24 @@ RegisterID* FuncExprNode::emitBytecode(BytecodeGenerator& generator, RegisterID*
return generator.emitNewFunctionExpression(generator.finalDestination(dst), this);
}
+JSFunction* FuncExprNode::makeFunction(ExecState* exec, ScopeChainNode* scopeChain)
+{
+ JSFunction* func = new (exec) JSFunction(exec, m_ident, m_body.get(), scopeChain);
+
+ /*
+ The Identifier in a FunctionExpression can be referenced from inside
+ the FunctionExpression's FunctionBody to allow the function to call
+ itself recursively. However, unlike in a FunctionDeclaration, the
+ Identifier in a FunctionExpression cannot be referenced from and
+ does not affect the scope enclosing the FunctionExpression.
+ */
+
+ if (!m_ident.isNull()) {
+ JSStaticScopeObject* functionScopeObject = new (exec) JSStaticScopeObject(exec, m_ident, func, ReadOnly | DontDelete);
+ func->scope().push(functionScopeObject);
+ }
+
+ return func;
+}
+
} // namespace JSC
diff --git a/JavaScriptCore/parser/Nodes.h b/JavaScriptCore/parser/Nodes.h
index 58caa19..703b384 100644
--- a/JavaScriptCore/parser/Nodes.h
+++ b/JavaScriptCore/parser/Nodes.h
@@ -39,16 +39,12 @@
namespace JSC {
class ArgumentListNode;
- class BytecodeGenerator;
class CodeBlock;
- class EvalCodeBlock;
- class EvalExecutable;
+ class BytecodeGenerator;
class FuncDeclNode;
- class FunctionBodyNode;
- class FunctionCodeBlock;
+ class EvalCodeBlock;
class JSFunction;
class ProgramCodeBlock;
- class ProgramExecutable;
class PropertyListNode;
class ReadModifyResolveNode;
class RegisterID;
@@ -91,7 +87,7 @@ namespace JSC {
namespace DeclarationStacks {
enum VarAttrs { IsConstant = 1, HasInitializer = 2 };
typedef Vector<std::pair<Identifier, unsigned> > VarStack;
- typedef Vector<FunctionBodyNode*> FunctionStack;
+ typedef Vector<FuncDeclNode*> FunctionStack;
}
struct SwitchInfo {
@@ -361,13 +357,13 @@ namespace JSC {
class RegExpNode : public ExpressionNode, public ThrowableExpressionData {
public:
- RegExpNode(JSGlobalData*, const Identifier& pattern, const Identifier& flags);
+ RegExpNode(JSGlobalData*, const UString& pattern, const UString& flags);
private:
virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
- Identifier m_pattern;
- Identifier m_flags;
+ UString m_pattern;
+ UString m_flags;
};
class ThisNode : public ExpressionNode {
@@ -433,7 +429,6 @@ namespace JSC {
enum Type { Constant, Getter, Setter };
PropertyNode(JSGlobalData*, const Identifier& name, ExpressionNode* value, Type);
- PropertyNode(JSGlobalData*, double name, ExpressionNode* value, Type);
const Identifier& name() const { return m_name; }
@@ -1394,6 +1389,8 @@ namespace JSC {
FunctionStack m_functionStack;
int m_numConstants;
StatementVector m_children;
+
+ void markAggregate(MarkStack&);
};
class ScopeNode : public StatementNode, public ParserArenaRefCounted {
@@ -1439,9 +1436,33 @@ namespace JSC {
return m_data->m_numConstants + 2;
}
+ virtual void markAggregate(MarkStack&) { }
+
+#if ENABLE(JIT)
+ JITCode& generatedJITCode()
+ {
+ ASSERT(m_jitCode);
+ return m_jitCode;
+ }
+
+ ExecutablePool* getExecutablePool()
+ {
+ return m_jitCode.getExecutablePool();
+ }
+
+ void setJITCode(const JITCode jitCode)
+ {
+ m_jitCode = jitCode;
+ }
+#endif
+
protected:
void setSource(const SourceCode& source) { m_source = source; }
+#if ENABLE(JIT)
+ JITCode m_jitCode;
+#endif
+
private:
OwnPtr<ScopeNodeData> m_data;
CodeFeatures m_features;
@@ -1452,32 +1473,78 @@ namespace JSC {
public:
static PassRefPtr<ProgramNode> create(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, const SourceCode&, CodeFeatures, int numConstants);
+ ProgramCodeBlock& bytecode(ScopeChainNode* scopeChain)
+ {
+ if (!m_code)
+ generateBytecode(scopeChain);
+ return *m_code;
+ }
+
+#if ENABLE(JIT)
+ JITCode& jitCode(ScopeChainNode* scopeChain)
+ {
+ if (!m_jitCode)
+ generateJITCode(scopeChain);
+ return m_jitCode;
+ }
+#endif
+
private:
ProgramNode(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, const SourceCode&, CodeFeatures, int numConstants);
+ void generateBytecode(ScopeChainNode*);
virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+#if ENABLE(JIT)
+ void generateJITCode(ScopeChainNode*);
+#endif
+
+ OwnPtr<ProgramCodeBlock> m_code;
};
class EvalNode : public ScopeNode {
public:
static PassRefPtr<EvalNode> create(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, const SourceCode&, CodeFeatures, int numConstants);
- void partialDestroyData()
+ EvalCodeBlock& bytecode(ScopeChainNode* scopeChain)
+ {
+ if (!m_code)
+ generateBytecode(scopeChain);
+ return *m_code;
+ }
+
+ EvalCodeBlock& bytecodeForExceptionInfoReparse(ScopeChainNode*, CodeBlock*);
+
+ virtual void markAggregate(MarkStack&);
+
+#if ENABLE(JIT)
+ JITCode& jitCode(ScopeChainNode* scopeChain)
{
- // Eval code needs to hang on to its declaration stacks to keep declaration info alive until Interpreter::execute time,
- // so the entire ScopeNodeData cannot be destoyed.
- children().clear();
+ if (!m_jitCode)
+ generateJITCode(scopeChain);
+ return m_jitCode;
}
+#endif
private:
EvalNode(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, const SourceCode&, CodeFeatures, int numConstants);
+ void generateBytecode(ScopeChainNode*);
virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+#if ENABLE(JIT)
+ void generateJITCode(ScopeChainNode*);
+#endif
+
+ OwnPtr<EvalCodeBlock> m_code;
};
class FunctionBodyNode : public ScopeNode {
friend class JIT;
public:
+#if ENABLE(JIT)
+ static PassRefPtr<FunctionBodyNode> createNativeThunk(JSGlobalData*);
+#endif
static FunctionBodyNode* create(JSGlobalData*);
static PassRefPtr<FunctionBodyNode> create(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, const SourceCode&, CodeFeatures, int numConstants);
virtual ~FunctionBodyNode();
@@ -1489,25 +1556,63 @@ namespace JSC {
virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
- void finishParsing(const SourceCode&, ParameterNode*, const Identifier& ident);
- void finishParsing(Identifier* parameters, size_t parameterCount, const Identifier& ident);
+ bool isGenerated() const
+ {
+ return m_code;
+ }
+
+ bool isHostFunction() const;
+
+ virtual void markAggregate(MarkStack&);
+
+ void finishParsing(const SourceCode&, ParameterNode*);
+ void finishParsing(Identifier* parameters, size_t parameterCount);
- const Identifier& ident() { return m_ident; }
+ UString toSourceString() const { return source().toString(); }
- void reparseDataIfNecessary(ScopeChainNode* scopeChainNode);
+ CodeBlock& bytecodeForExceptionInfoReparse(ScopeChainNode*, CodeBlock*);
+#if ENABLE(JIT)
+ JITCode& jitCode(ScopeChainNode* scopeChain)
+ {
+ if (!m_jitCode)
+ generateJITCode(scopeChain);
+ return m_jitCode;
+ }
+#endif
+ CodeBlock& bytecode(ScopeChainNode* scopeChain)
+ {
+ ASSERT(scopeChain);
+ if (!m_code)
+ generateBytecode(scopeChain);
+ return *m_code;
+ }
+
+ CodeBlock& generatedBytecode()
+ {
+ ASSERT(m_code);
+ return *m_code;
+ }
+
private:
FunctionBodyNode(JSGlobalData*);
FunctionBodyNode(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, const SourceCode&, CodeFeatures, int numConstants);
- Identifier m_ident;
+
+ void generateBytecode(ScopeChainNode*);
+#if ENABLE(JIT)
+ void generateJITCode(ScopeChainNode*);
+#endif
Identifier* m_parameters;
size_t m_parameterCount;
+ OwnPtr<CodeBlock> m_code;
};
- class FuncExprNode : public ExpressionNode {
+ class FuncExprNode : public ExpressionNode, public ParserArenaRefCounted {
public:
FuncExprNode(JSGlobalData*, const Identifier&, FunctionBodyNode* body, const SourceCode& source, ParameterNode* parameter = 0);
+ JSFunction* makeFunction(ExecState*, ScopeChainNode*);
+
FunctionBodyNode* body() { return m_body.get(); }
private:
@@ -1515,13 +1620,18 @@ namespace JSC {
virtual bool isFuncExprNode() const { return true; }
+ Identifier m_ident;
RefPtr<FunctionBodyNode> m_body;
};
- class FuncDeclNode : public StatementNode {
+ class FuncDeclNode : public StatementNode, public ParserArenaRefCounted {
public:
FuncDeclNode(JSGlobalData*, const Identifier&, FunctionBodyNode*, const SourceCode&, ParameterNode* = 0);
+ JSFunction* makeFunction(ExecState*, ScopeChainNode*);
+
+ Identifier m_ident;
+
FunctionBodyNode* body() { return m_body.get(); }
private:
diff --git a/JavaScriptCore/parser/Parser.h b/JavaScriptCore/parser/Parser.h
index 6166bb2..373dc00 100644
--- a/JavaScriptCore/parser/Parser.h
+++ b/JavaScriptCore/parser/Parser.h
@@ -24,8 +24,6 @@
#define Parser_h
#include "Debugger.h"
-#include "Executable.h"
-#include "JSGlobalObject.h"
#include "Nodes.h"
#include "SourceProvider.h"
#include <wtf/Forward.h>
@@ -43,12 +41,9 @@ namespace JSC {
class Parser : public Noncopyable {
public:
- template <class ParsedNode>
- PassRefPtr<ParsedNode> parse(ExecState*, Debugger*, const SourceCode&, int* errLine = 0, UString* errMsg = 0);
- template <class ParsedNode>
- PassRefPtr<ParsedNode> reparse(JSGlobalData*, ParsedNode*);
+ template <class ParsedNode> PassRefPtr<ParsedNode> parse(ExecState*, Debugger*, const SourceCode&, int* errLine = 0, UString* errMsg = 0);
+ template <class ParsedNode> PassRefPtr<ParsedNode> reparse(JSGlobalData*, ParsedNode*);
void reparseInPlace(JSGlobalData*, FunctionBodyNode*);
- PassRefPtr<FunctionBodyNode> parseFunctionFromGlobalCode(ExecState*, Debugger*, const SourceCode&, int* errLine = 0, UString* errMsg = 0);
void didFinishParsing(SourceElements*, ParserArenaData<DeclarationStacks::VarStack>*,
ParserArenaData<DeclarationStacks::FunctionStack>*, CodeFeatures features, int lastLine, int numConstants);
@@ -68,8 +63,7 @@ namespace JSC {
int m_numConstants;
};
- template <class ParsedNode>
- PassRefPtr<ParsedNode> Parser::parse(ExecState* exec, Debugger* debugger, const SourceCode& source, int* errLine, UString* errMsg)
+ template <class ParsedNode> PassRefPtr<ParsedNode> Parser::parse(ExecState* exec, Debugger* debugger, const SourceCode& source, int* errLine, UString* errMsg)
{
m_source = &source;
parse(&exec->globalData(), errLine, errMsg);
@@ -96,8 +90,7 @@ namespace JSC {
return result.release();
}
- template <class ParsedNode>
- PassRefPtr<ParsedNode> Parser::reparse(JSGlobalData* globalData, ParsedNode* oldParsedNode)
+ template <class ParsedNode> PassRefPtr<ParsedNode> Parser::reparse(JSGlobalData* globalData, ParsedNode* oldParsedNode)
{
m_source = &oldParsedNode->source();
parse(globalData, 0, 0);
@@ -122,54 +115,6 @@ namespace JSC {
return result.release();
}
- inline PassRefPtr<FunctionBodyNode> Parser::parseFunctionFromGlobalCode(ExecState* exec, Debugger* debugger, const SourceCode& source, int* errLine, UString* errMsg)
- {
- RefPtr<ProgramNode> program = parse<ProgramNode>(exec, debugger, source, errLine, errMsg);
-
- if (!program)
- return 0;
-
- StatementVector& children = program->children();
- if (children.size() != 1)
- return 0;
-
- StatementNode* exprStatement = children[0];
- ASSERT(exprStatement);
- ASSERT(exprStatement->isExprStatement());
- if (!exprStatement || !exprStatement->isExprStatement())
- return 0;
-
- ExpressionNode* funcExpr = static_cast<ExprStatementNode*>(exprStatement)->expr();
- ASSERT(funcExpr);
- ASSERT(funcExpr->isFuncExprNode());
- if (!funcExpr || !funcExpr->isFuncExprNode())
- return 0;
-
- RefPtr<FunctionBodyNode> body = static_cast<FuncExprNode*>(funcExpr)->body();
- ASSERT(body);
- return body.release();
- }
-
- inline JSObject* EvalExecutable::parse(ExecState* exec, bool allowDebug)
- {
- int errLine;
- UString errMsg;
- m_node = exec->globalData().parser->parse<EvalNode>(exec, allowDebug ? exec->dynamicGlobalObject()->debugger() : 0, m_source, &errLine, &errMsg);
- if (!m_node)
- return Error::create(exec, SyntaxError, errMsg, errLine, m_source.provider()->asID(), m_source.provider()->url());
- return 0;
- }
-
- inline JSObject* ProgramExecutable::parse(ExecState* exec, bool allowDebug)
- {
- int errLine;
- UString errMsg;
- m_node = exec->globalData().parser->parse<ProgramNode>(exec, allowDebug ? exec->dynamicGlobalObject()->debugger() : 0, m_source, &errLine, &errMsg);
- if (!m_node)
- return Error::create(exec, SyntaxError, errMsg, errLine, m_source.provider()->asID(), m_source.provider()->url());
- return 0;
- }
-
} // namespace JSC
#endif // Parser_h
diff --git a/JavaScriptCore/profiler/ProfileGenerator.cpp b/JavaScriptCore/profiler/ProfileGenerator.cpp
index dc68ecb..1a061cb 100644
--- a/JavaScriptCore/profiler/ProfileGenerator.cpp
+++ b/JavaScriptCore/profiler/ProfileGenerator.cpp
@@ -27,7 +27,6 @@
#include "ProfileGenerator.h"
#include "CallFrame.h"
-#include "CodeBlock.h"
#include "JSGlobalObject.h"
#include "JSStringRef.h"
#include "JSFunction.h"
diff --git a/JavaScriptCore/profiler/Profiler.cpp b/JavaScriptCore/profiler/Profiler.cpp
index 4565fe6..e103fd1 100644
--- a/JavaScriptCore/profiler/Profiler.cpp
+++ b/JavaScriptCore/profiler/Profiler.cpp
@@ -31,7 +31,6 @@
#include "CommonIdentifiers.h"
#include "CallFrame.h"
-#include "CodeBlock.h"
#include "JSFunction.h"
#include "JSGlobalObject.h"
#include "Nodes.h"
@@ -135,26 +134,26 @@ void Profiler::didExecute(ExecState* exec, const UString& sourceURL, int startin
dispatchFunctionToProfiles(m_currentProfiles, &ProfileGenerator::didExecute, createCallIdentifier(&exec->globalData(), JSValue(), sourceURL, startingLineNumber), exec->lexicalGlobalObject()->profileGroup());
}
-CallIdentifier Profiler::createCallIdentifier(JSGlobalData* globalData, JSValue functionValue, const UString& defaultSourceURL, int defaultLineNumber)
+CallIdentifier Profiler::createCallIdentifier(JSGlobalData* globalData, JSValue function, const UString& defaultSourceURL, int defaultLineNumber)
{
- if (!functionValue)
+ if (!function)
return CallIdentifier(GlobalCodeExecution, defaultSourceURL, defaultLineNumber);
- if (!functionValue.isObject())
+ if (!function.isObject())
return CallIdentifier("(unknown)", defaultSourceURL, defaultLineNumber);
- if (asObject(functionValue)->inherits(&JSFunction::info)) {
- JSFunction* function = asFunction(functionValue);
- if (!function->executable()->isHostFunction())
- return createCallIdentifierFromFunctionImp(globalData, function);
+ if (asObject(function)->inherits(&JSFunction::info)) {
+ JSFunction* func = asFunction(function);
+ if (!func->isHostFunction())
+ return createCallIdentifierFromFunctionImp(globalData, func);
}
- if (asObject(functionValue)->inherits(&InternalFunction::info))
- return CallIdentifier(static_cast<InternalFunction*>(asObject(functionValue))->name(globalData), defaultSourceURL, defaultLineNumber);
- return CallIdentifier("(" + asObject(functionValue)->className() + " object)", defaultSourceURL, defaultLineNumber);
+ if (asObject(function)->inherits(&InternalFunction::info))
+ return CallIdentifier(static_cast<InternalFunction*>(asObject(function))->name(globalData), defaultSourceURL, defaultLineNumber);
+ return CallIdentifier("(" + asObject(function)->className() + " object)", defaultSourceURL, defaultLineNumber);
}
CallIdentifier createCallIdentifierFromFunctionImp(JSGlobalData* globalData, JSFunction* function)
{
const UString& name = function->calculatedDisplayName(globalData);
- return CallIdentifier(name.isEmpty() ? AnonymousFunction : name, function->executable()->sourceURL(), function->executable()->lineNo());
+ return CallIdentifier(name.isEmpty() ? AnonymousFunction : name, function->body()->sourceURL(), function->body()->lineNo());
}
} // namespace JSC
diff --git a/JavaScriptCore/runtime/Arguments.h b/JavaScriptCore/runtime/Arguments.h
index 390f7e2..79fe720 100644
--- a/JavaScriptCore/runtime/Arguments.h
+++ b/JavaScriptCore/runtime/Arguments.h
@@ -28,8 +28,6 @@
#include "JSFunction.h"
#include "JSGlobalObject.h"
#include "Interpreter.h"
-#include "ObjectConstructor.h"
-#include "PrototypeFunction.h"
namespace JSC {
@@ -116,7 +114,7 @@ namespace JSC {
{
function = callFrame->callee();
- CodeBlock* codeBlock = &function->executable()->generatedBytecode();
+ CodeBlock* codeBlock = &function->body()->generatedBytecode();
int numParameters = codeBlock->m_numParameters;
argc = callFrame->argumentCount();
@@ -139,7 +137,7 @@ namespace JSC {
int numArguments;
getArgumentsData(callFrame, callee, firstParameterIndex, argv, numArguments);
- d->numParameters = callee->executable()->parameterCount();
+ d->numParameters = callee->body()->parameterCount();
d->firstParameterIndex = firstParameterIndex;
d->numArguments = numArguments;
@@ -170,7 +168,7 @@ namespace JSC {
: JSObject(callFrame->lexicalGlobalObject()->argumentsStructure())
, d(new ArgumentsData)
{
- ASSERT(!callFrame->callee()->executable()->parameterCount());
+ ASSERT(!callFrame->callee()->body()->parameterCount());
unsigned numArguments = callFrame->argumentCount() - 1;
@@ -216,8 +214,8 @@ namespace JSC {
{
ASSERT(!d()->registerArray);
- size_t numParametersMinusThis = d()->functionExecutable->generatedBytecode().m_numParameters - 1;
- size_t numVars = d()->functionExecutable->generatedBytecode().m_numVars;
+ size_t numParametersMinusThis = d()->functionBody->generatedBytecode().m_numParameters - 1;
+ size_t numVars = d()->functionBody->generatedBytecode().m_numVars;
size_t numLocals = numVars + numParametersMinusThis;
if (!numLocals)
diff --git a/JavaScriptCore/runtime/ArrayConstructor.cpp b/JavaScriptCore/runtime/ArrayConstructor.cpp
index c60cb0e..e96bdfc 100644
--- a/JavaScriptCore/runtime/ArrayConstructor.cpp
+++ b/JavaScriptCore/runtime/ArrayConstructor.cpp
@@ -25,19 +25,15 @@
#include "ArrayConstructor.h"
#include "ArrayPrototype.h"
-#include "Error.h"
#include "JSArray.h"
#include "JSFunction.h"
#include "Lookup.h"
-#include "PrototypeFunction.h"
namespace JSC {
ASSERT_CLASS_FITS_IN_CELL(ArrayConstructor);
-
-static JSValue JSC_HOST_CALL arrayConstructorIsArray(ExecState*, JSObject*, JSValue, const ArgList&);
-ArrayConstructor::ArrayConstructor(ExecState* exec, PassRefPtr<Structure> structure, ArrayPrototype* arrayPrototype, Structure* prototypeFunctionStructure)
+ArrayConstructor::ArrayConstructor(ExecState* exec, PassRefPtr<Structure> structure, ArrayPrototype* arrayPrototype)
: InternalFunction(&exec->globalData(), structure, Identifier(exec, arrayPrototype->classInfo()->className))
{
// ECMA 15.4.3.1 Array.prototype
@@ -45,9 +41,6 @@ ArrayConstructor::ArrayConstructor(ExecState* exec, PassRefPtr<Structure> struct
// no. of arguments for constructor
putDirectWithoutTransition(exec->propertyNames().length, jsNumber(exec, 1), ReadOnly | DontEnum | DontDelete);
-
- // ES5
- putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, prototypeFunctionStructure, 1, exec->propertyNames().isArray, arrayConstructorIsArray), DontEnum);
}
static JSObject* constructArrayWithSizeQuirk(ExecState* exec, const ArgList& args)
@@ -89,9 +82,4 @@ CallType ArrayConstructor::getCallData(CallData& callData)
return CallTypeHost;
}
-JSValue JSC_HOST_CALL arrayConstructorIsArray(ExecState*, JSObject*, JSValue, const ArgList& args)
-{
- return jsBoolean(args.at(0).inherits(&JSArray::info));
-}
-
} // namespace JSC
diff --git a/JavaScriptCore/runtime/ArrayConstructor.h b/JavaScriptCore/runtime/ArrayConstructor.h
index 2b79510..8300d8c 100644
--- a/JavaScriptCore/runtime/ArrayConstructor.h
+++ b/JavaScriptCore/runtime/ArrayConstructor.h
@@ -29,7 +29,7 @@ namespace JSC {
class ArrayConstructor : public InternalFunction {
public:
- ArrayConstructor(ExecState*, PassRefPtr<Structure>, ArrayPrototype*, Structure*);
+ ArrayConstructor(ExecState*, PassRefPtr<Structure>, ArrayPrototype*);
virtual ConstructType getConstructData(ConstructData&);
virtual CallType getCallData(CallData&);
diff --git a/JavaScriptCore/runtime/ArrayPrototype.cpp b/JavaScriptCore/runtime/ArrayPrototype.cpp
index 95d3ffc..807e59a 100644
--- a/JavaScriptCore/runtime/ArrayPrototype.cpp
+++ b/JavaScriptCore/runtime/ArrayPrototype.cpp
@@ -75,10 +75,10 @@ static inline bool isNumericCompareFunction(CallType callType, const CallData& c
#if ENABLE(JIT)
// If the JIT is enabled then we need to preserve the invariant that every
// function with a CodeBlock also has JIT code.
- callData.js.functionExecutable->jitCode(callData.js.scopeChain);
- CodeBlock& codeBlock = callData.js.functionExecutable->generatedBytecode();
+ callData.js.functionBody->jitCode(callData.js.scopeChain);
+ CodeBlock& codeBlock = callData.js.functionBody->generatedBytecode();
#else
- CodeBlock& codeBlock = callData.js.functionExecutable->bytecode(callData.js.scopeChain);
+ CodeBlock& codeBlock = callData.js.functionBody->bytecode(callData.js.scopeChain);
#endif
return codeBlock.isNumericCompareFunction();
@@ -144,7 +144,7 @@ static void putProperty(ExecState* exec, JSObject* obj, const Identifier& proper
JSValue JSC_HOST_CALL arrayProtoFuncToString(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue.inherits(&JSArray::info))
+ if (!thisValue.isObject(&JSArray::info))
return throwError(exec, TypeError);
JSObject* thisObj = asArray(thisValue);
@@ -190,7 +190,7 @@ JSValue JSC_HOST_CALL arrayProtoFuncToString(ExecState* exec, JSObject*, JSValue
JSValue JSC_HOST_CALL arrayProtoFuncToLocaleString(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue.inherits(&JSArray::info))
+ if (!thisValue.isObject(&JSArray::info))
return throwError(exec, TypeError);
JSObject* thisObj = asArray(thisValue);
@@ -298,7 +298,7 @@ JSValue JSC_HOST_CALL arrayProtoFuncConcat(ExecState* exec, JSObject*, JSValue t
ArgList::const_iterator it = args.begin();
ArgList::const_iterator end = args.end();
while (1) {
- if (curArg.inherits(&JSArray::info)) {
+ if (curArg.isObject(&JSArray::info)) {
unsigned length = curArg.get(exec, exec->propertyNames().length).toUInt32(exec);
JSObject* curObject = curArg.toObject(exec);
for (unsigned k = 0; k < length; ++k) {
diff --git a/JavaScriptCore/runtime/BooleanObject.h b/JavaScriptCore/runtime/BooleanObject.h
index 1361e46..cfd55fe 100644
--- a/JavaScriptCore/runtime/BooleanObject.h
+++ b/JavaScriptCore/runtime/BooleanObject.h
@@ -31,11 +31,6 @@ namespace JSC {
virtual const ClassInfo* classInfo() const { return &info; }
static const ClassInfo info;
-
- static PassRefPtr<Structure> createStructure(JSValue prototype)
- {
- return Structure::create(prototype, TypeInfo(ObjectType, HasStandardGetOwnPropertySlot | HasDefaultMark));
- }
};
BooleanObject* asBooleanObject(JSValue);
diff --git a/JavaScriptCore/runtime/BooleanPrototype.cpp b/JavaScriptCore/runtime/BooleanPrototype.cpp
index cf4fbd7..703a568 100644
--- a/JavaScriptCore/runtime/BooleanPrototype.cpp
+++ b/JavaScriptCore/runtime/BooleanPrototype.cpp
@@ -59,7 +59,7 @@ JSValue JSC_HOST_CALL booleanProtoFuncToString(ExecState* exec, JSObject*, JSVal
if (thisValue == jsBoolean(true))
return jsNontrivialString(exec, "true");
- if (!thisValue.inherits(&BooleanObject::info))
+ if (!thisValue.isObject(&BooleanObject::info))
return throwError(exec, TypeError);
if (asBooleanObject(thisValue)->internalValue() == jsBoolean(false))
@@ -74,7 +74,7 @@ JSValue JSC_HOST_CALL booleanProtoFuncValueOf(ExecState* exec, JSObject*, JSValu
if (thisValue.isBoolean())
return thisValue;
- if (!thisValue.inherits(&BooleanObject::info))
+ if (!thisValue.isObject(&BooleanObject::info))
return throwError(exec, TypeError);
return asBooleanObject(thisValue)->internalValue();
diff --git a/JavaScriptCore/runtime/CallData.h b/JavaScriptCore/runtime/CallData.h
index 24c19f9..d5b0172 100644
--- a/JavaScriptCore/runtime/CallData.h
+++ b/JavaScriptCore/runtime/CallData.h
@@ -35,7 +35,7 @@ namespace JSC {
class ArgList;
class ExecState;
- class FunctionExecutable;
+ class FunctionBodyNode;
class JSObject;
class JSValue;
class ScopeChainNode;
@@ -53,7 +53,7 @@ namespace JSC {
NativeFunction function;
} native;
struct {
- FunctionExecutable* functionExecutable;
+ FunctionBodyNode* functionBody;
ScopeChainNode* scopeChain;
} js;
};
diff --git a/JavaScriptCore/runtime/Collector.cpp b/JavaScriptCore/runtime/Collector.cpp
index f48e243..c188016 100644
--- a/JavaScriptCore/runtime/Collector.cpp
+++ b/JavaScriptCore/runtime/Collector.cpp
@@ -23,10 +23,8 @@
#include "ArgList.h"
#include "CallFrame.h"
-#include "CodeBlock.h"
#include "CollectorHeapIterator.h"
#include "Interpreter.h"
-#include "JSArray.h"
#include "JSGlobalObject.h"
#include "JSLock.h"
#include "JSONObject.h"
@@ -61,16 +59,10 @@
#include <windows.h>
-#elif PLATFORM(HAIKU)
-
-#include <OS.h>
-
#elif PLATFORM(UNIX)
#include <stdlib.h>
-#if !PLATFORM(HAIKU)
#include <sys/mman.h>
-#endif
#include <unistd.h>
#if PLATFORM(SOLARIS)
@@ -83,13 +75,6 @@
#include <pthread_np.h>
#endif
-#if PLATFORM(QNX)
-#include <fcntl.h>
-#include <sys/procfs.h>
-#include <stdio.h>
-#include <errno.h>
-#endif
-
#endif
#define DEBUG_COLLECTOR 0
@@ -501,33 +486,6 @@ static void* getStackBase(void* previousFrame)
}
#endif
-#if PLATFORM(QNX)
-static inline void *currentThreadStackBaseQNX()
-{
- static void* stackBase = 0;
- static size_t stackSize = 0;
- static pthread_t stackThread;
- pthread_t thread = pthread_self();
- if (stackBase == 0 || thread != stackThread) {
- struct _debug_thread_info threadInfo;
- memset(&threadInfo, 0, sizeof(threadInfo));
- threadInfo.tid = pthread_self();
- int fd = open("/proc/self", O_RDONLY);
- if (fd == -1) {
- LOG_ERROR("Unable to open /proc/self (errno: %d)", errno);
- return 0;
- }
- devctl(fd, DCMD_PROC_TIDSTATUS, &threadInfo, sizeof(threadInfo), 0);
- close(fd);
- stackBase = reinterpret_cast<void*>(threadInfo.stkbase);
- stackSize = threadInfo.stksize;
- ASSERT(stackBase);
- stackThread = thread;
- }
- return static_cast<char*>(stackBase) + stackSize;
-}
-#endif
-
static inline void* currentThreadStackBase()
{
#if PLATFORM(DARWIN)
@@ -553,8 +511,6 @@ static inline void* currentThreadStackBase()
: "=r" (pTib)
);
return static_cast<void*>(pTib->StackBase);
-#elif PLATFORM(QNX)
- return currentThreadStackBaseQNX();
#elif PLATFORM(SOLARIS)
stack_t s;
thr_stksegment(&s);
@@ -573,10 +529,6 @@ static inline void* currentThreadStackBase()
stackBase = (void*)info.iBase;
}
return (void*)stackBase;
-#elif PLATFORM(HAIKU)
- thread_info threadInfo;
- get_thread_info(find_thread(NULL), &threadInfo);
- return threadInfo.stack_end;
#elif PLATFORM(UNIX)
static void* stackBase = 0;
static size_t stackSize = 0;
@@ -1139,8 +1091,8 @@ bool Heap::collect()
markStack.append(m_globalData->exception);
m_globalData->interpreter->registerFile().markCallFrames(markStack, this);
m_globalData->smallStrings.mark();
- if (m_globalData->functionCodeBlockBeingReparsed)
- m_globalData->functionCodeBlockBeingReparsed->markAggregate(markStack);
+ if (m_globalData->scopeNodeBeingReparsed)
+ m_globalData->scopeNodeBeingReparsed->markAggregate(markStack);
if (m_globalData->firstStringifierToMark)
JSONObject::markStringifiers(markStack, m_globalData->firstStringifierToMark);
diff --git a/JavaScriptCore/runtime/CommonIdentifiers.h b/JavaScriptCore/runtime/CommonIdentifiers.h
index 678e109..148d3dd 100644
--- a/JavaScriptCore/runtime/CommonIdentifiers.h
+++ b/JavaScriptCore/runtime/CommonIdentifiers.h
@@ -47,7 +47,6 @@
macro(ignoreCase) \
macro(index) \
macro(input) \
- macro(isArray) \
macro(isPrototypeOf) \
macro(length) \
macro(message) \
diff --git a/JavaScriptCore/runtime/Completion.cpp b/JavaScriptCore/runtime/Completion.cpp
index 6ae5aa2..b8b1581 100644
--- a/JavaScriptCore/runtime/Completion.cpp
+++ b/JavaScriptCore/runtime/Completion.cpp
@@ -41,27 +41,30 @@ Completion checkSyntax(ExecState* exec, const SourceCode& source)
{
JSLock lock(exec);
- ProgramExecutable program(source);
- JSObject* error = program.parse(exec);
- if (error)
- return Completion(Throw, error);
+ int errLine;
+ UString errMsg;
+ RefPtr<ProgramNode> progNode = exec->globalData().parser->parse<ProgramNode>(exec, exec->dynamicGlobalObject()->debugger(), source, &errLine, &errMsg);
+ if (!progNode)
+ return Completion(Throw, Error::create(exec, SyntaxError, errMsg, errLine, source.provider()->asID(), source.provider()->url()));
return Completion(Normal);
}
Completion evaluate(ExecState* exec, ScopeChain& scopeChain, const SourceCode& source, JSValue thisValue)
{
JSLock lock(exec);
+
+ int errLine;
+ UString errMsg;
+ RefPtr<ProgramNode> programNode = exec->globalData().parser->parse<ProgramNode>(exec, exec->dynamicGlobalObject()->debugger(), source, &errLine, &errMsg);
- ProgramExecutable program(source);
- JSObject* error = program.parse(exec);
- if (error)
- return Completion(Throw, error);
+ if (!programNode)
+ return Completion(Throw, Error::create(exec, SyntaxError, errMsg, errLine, source.provider()->asID(), source.provider()->url()));
JSObject* thisObj = (!thisValue || thisValue.isUndefinedOrNull()) ? exec->dynamicGlobalObject() : thisValue.toObject(exec);
JSValue exception;
- JSValue result = exec->interpreter()->execute(&program, exec, scopeChain.node(), thisObj, &exception);
+ JSValue result = exec->interpreter()->execute(programNode.get(), exec, scopeChain.node(), thisObj, &exception);
if (exception) {
if (exception.isObject() && asObject(exception)->isWatchdogException())
diff --git a/JavaScriptCore/runtime/ConstructData.h b/JavaScriptCore/runtime/ConstructData.h
index 6b954a6..9d580d5 100644
--- a/JavaScriptCore/runtime/ConstructData.h
+++ b/JavaScriptCore/runtime/ConstructData.h
@@ -33,7 +33,7 @@ namespace JSC {
class ArgList;
class ExecState;
- class FunctionExecutable;
+ class FunctionBodyNode;
class JSObject;
class JSValue;
class ScopeChainNode;
@@ -51,7 +51,7 @@ namespace JSC {
NativeConstructor function;
} native;
struct {
- FunctionExecutable* functionExecutable;
+ FunctionBodyNode* functionBody;
ScopeChainNode* scopeChain;
} js;
};
diff --git a/JavaScriptCore/runtime/DateConstructor.cpp b/JavaScriptCore/runtime/DateConstructor.cpp
index 1879c3f..2f52cff 100644
--- a/JavaScriptCore/runtime/DateConstructor.cpp
+++ b/JavaScriptCore/runtime/DateConstructor.cpp
@@ -79,7 +79,7 @@ JSObject* constructDate(ExecState* exec, const ArgList& args)
if (numArgs == 0) // new Date() ECMA 15.9.3.3
value = getCurrentUTCTime();
else if (numArgs == 1) {
- if (args.at(0).inherits(&DateInstance::info))
+ if (args.at(0).isObject(&DateInstance::info))
value = asDateInstance(args.at(0))->internalNumber();
else {
JSValue primitive = args.at(0).toPrimitive(exec);
diff --git a/JavaScriptCore/runtime/DatePrototype.cpp b/JavaScriptCore/runtime/DatePrototype.cpp
index 54d3cf3..e2482f4 100644
--- a/JavaScriptCore/runtime/DatePrototype.cpp
+++ b/JavaScriptCore/runtime/DatePrototype.cpp
@@ -411,7 +411,7 @@ bool DatePrototype::getOwnPropertySlot(ExecState* exec, const Identifier& proper
JSValue JSC_HOST_CALL dateProtoFuncToString(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue.inherits(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = false;
@@ -428,7 +428,7 @@ JSValue JSC_HOST_CALL dateProtoFuncToString(ExecState* exec, JSObject*, JSValue
JSValue JSC_HOST_CALL dateProtoFuncToUTCString(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue.inherits(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = true;
@@ -445,7 +445,7 @@ JSValue JSC_HOST_CALL dateProtoFuncToUTCString(ExecState* exec, JSObject*, JSVal
JSValue JSC_HOST_CALL dateProtoFuncToISOString(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue.inherits(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = true;
@@ -467,7 +467,7 @@ JSValue JSC_HOST_CALL dateProtoFuncToISOString(ExecState* exec, JSObject*, JSVal
JSValue JSC_HOST_CALL dateProtoFuncToDateString(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue.inherits(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = false;
@@ -484,7 +484,7 @@ JSValue JSC_HOST_CALL dateProtoFuncToDateString(ExecState* exec, JSObject*, JSVa
JSValue JSC_HOST_CALL dateProtoFuncToTimeString(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue.inherits(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = false;
@@ -501,7 +501,7 @@ JSValue JSC_HOST_CALL dateProtoFuncToTimeString(ExecState* exec, JSObject*, JSVa
JSValue JSC_HOST_CALL dateProtoFuncToLocaleString(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- if (!thisValue.inherits(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
DateInstance* thisDateObj = asDateInstance(thisValue);
@@ -514,7 +514,7 @@ JSValue JSC_HOST_CALL dateProtoFuncToLocaleString(ExecState* exec, JSObject*, JS
JSValue JSC_HOST_CALL dateProtoFuncToLocaleDateString(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- if (!thisValue.inherits(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
DateInstance* thisDateObj = asDateInstance(thisValue);
@@ -527,7 +527,7 @@ JSValue JSC_HOST_CALL dateProtoFuncToLocaleDateString(ExecState* exec, JSObject*
JSValue JSC_HOST_CALL dateProtoFuncToLocaleTimeString(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- if (!thisValue.inherits(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
DateInstance* thisDateObj = asDateInstance(thisValue);
@@ -540,7 +540,7 @@ JSValue JSC_HOST_CALL dateProtoFuncToLocaleTimeString(ExecState* exec, JSObject*
JSValue JSC_HOST_CALL dateProtoFuncGetTime(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue.inherits(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
DateInstance* thisDateObj = asDateInstance(thisValue);
@@ -553,7 +553,7 @@ JSValue JSC_HOST_CALL dateProtoFuncGetTime(ExecState* exec, JSObject*, JSValue t
JSValue JSC_HOST_CALL dateProtoFuncGetFullYear(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue.inherits(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = false;
@@ -570,7 +570,7 @@ JSValue JSC_HOST_CALL dateProtoFuncGetFullYear(ExecState* exec, JSObject*, JSVal
JSValue JSC_HOST_CALL dateProtoFuncGetUTCFullYear(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue.inherits(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = true;
@@ -587,7 +587,7 @@ JSValue JSC_HOST_CALL dateProtoFuncGetUTCFullYear(ExecState* exec, JSObject*, JS
JSValue JSC_HOST_CALL dateProtoFuncToGMTString(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue.inherits(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = true;
@@ -604,7 +604,7 @@ JSValue JSC_HOST_CALL dateProtoFuncToGMTString(ExecState* exec, JSObject*, JSVal
JSValue JSC_HOST_CALL dateProtoFuncGetMonth(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue.inherits(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = false;
@@ -621,7 +621,7 @@ JSValue JSC_HOST_CALL dateProtoFuncGetMonth(ExecState* exec, JSObject*, JSValue
JSValue JSC_HOST_CALL dateProtoFuncGetUTCMonth(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue.inherits(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = true;
@@ -638,7 +638,7 @@ JSValue JSC_HOST_CALL dateProtoFuncGetUTCMonth(ExecState* exec, JSObject*, JSVal
JSValue JSC_HOST_CALL dateProtoFuncGetDate(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue.inherits(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = false;
@@ -655,7 +655,7 @@ JSValue JSC_HOST_CALL dateProtoFuncGetDate(ExecState* exec, JSObject*, JSValue t
JSValue JSC_HOST_CALL dateProtoFuncGetUTCDate(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue.inherits(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = true;
@@ -672,7 +672,7 @@ JSValue JSC_HOST_CALL dateProtoFuncGetUTCDate(ExecState* exec, JSObject*, JSValu
JSValue JSC_HOST_CALL dateProtoFuncGetDay(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue.inherits(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = false;
@@ -689,7 +689,7 @@ JSValue JSC_HOST_CALL dateProtoFuncGetDay(ExecState* exec, JSObject*, JSValue th
JSValue JSC_HOST_CALL dateProtoFuncGetUTCDay(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue.inherits(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = true;
@@ -706,7 +706,7 @@ JSValue JSC_HOST_CALL dateProtoFuncGetUTCDay(ExecState* exec, JSObject*, JSValue
JSValue JSC_HOST_CALL dateProtoFuncGetHours(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue.inherits(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = false;
@@ -723,7 +723,7 @@ JSValue JSC_HOST_CALL dateProtoFuncGetHours(ExecState* exec, JSObject*, JSValue
JSValue JSC_HOST_CALL dateProtoFuncGetUTCHours(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue.inherits(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = true;
@@ -740,7 +740,7 @@ JSValue JSC_HOST_CALL dateProtoFuncGetUTCHours(ExecState* exec, JSObject*, JSVal
JSValue JSC_HOST_CALL dateProtoFuncGetMinutes(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue.inherits(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = false;
@@ -757,7 +757,7 @@ JSValue JSC_HOST_CALL dateProtoFuncGetMinutes(ExecState* exec, JSObject*, JSValu
JSValue JSC_HOST_CALL dateProtoFuncGetUTCMinutes(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue.inherits(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = true;
@@ -774,7 +774,7 @@ JSValue JSC_HOST_CALL dateProtoFuncGetUTCMinutes(ExecState* exec, JSObject*, JSV
JSValue JSC_HOST_CALL dateProtoFuncGetSeconds(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue.inherits(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = false;
@@ -791,7 +791,7 @@ JSValue JSC_HOST_CALL dateProtoFuncGetSeconds(ExecState* exec, JSObject*, JSValu
JSValue JSC_HOST_CALL dateProtoFuncGetUTCSeconds(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue.inherits(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = true;
@@ -808,7 +808,7 @@ JSValue JSC_HOST_CALL dateProtoFuncGetUTCSeconds(ExecState* exec, JSObject*, JSV
JSValue JSC_HOST_CALL dateProtoFuncGetMilliSeconds(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue.inherits(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
DateInstance* thisDateObj = asDateInstance(thisValue);
@@ -823,7 +823,7 @@ JSValue JSC_HOST_CALL dateProtoFuncGetMilliSeconds(ExecState* exec, JSObject*, J
JSValue JSC_HOST_CALL dateProtoFuncGetUTCMilliseconds(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue.inherits(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
DateInstance* thisDateObj = asDateInstance(thisValue);
@@ -838,7 +838,7 @@ JSValue JSC_HOST_CALL dateProtoFuncGetUTCMilliseconds(ExecState* exec, JSObject*
JSValue JSC_HOST_CALL dateProtoFuncGetTimezoneOffset(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue.inherits(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = false;
@@ -855,7 +855,7 @@ JSValue JSC_HOST_CALL dateProtoFuncGetTimezoneOffset(ExecState* exec, JSObject*,
JSValue JSC_HOST_CALL dateProtoFuncSetTime(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- if (!thisValue.inherits(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
DateInstance* thisDateObj = asDateInstance(thisValue);
@@ -868,7 +868,7 @@ JSValue JSC_HOST_CALL dateProtoFuncSetTime(ExecState* exec, JSObject*, JSValue t
static JSValue setNewValueFromTimeArgs(ExecState* exec, JSValue thisValue, const ArgList& args, int numArgsToUse, bool inputIsUTC)
{
- if (!thisValue.inherits(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
DateInstance* thisDateObj = asDateInstance(thisValue);
@@ -899,7 +899,7 @@ static JSValue setNewValueFromTimeArgs(ExecState* exec, JSValue thisValue, const
static JSValue setNewValueFromDateArgs(ExecState* exec, JSValue thisValue, const ArgList& args, int numArgsToUse, bool inputIsUTC)
{
- if (!thisValue.inherits(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
DateInstance* thisDateObj = asDateInstance(thisValue);
@@ -1020,7 +1020,7 @@ JSValue JSC_HOST_CALL dateProtoFuncSetUTCFullYear(ExecState* exec, JSObject*, JS
JSValue JSC_HOST_CALL dateProtoFuncSetYear(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- if (!thisValue.inherits(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = false;
@@ -1062,7 +1062,7 @@ JSValue JSC_HOST_CALL dateProtoFuncSetYear(ExecState* exec, JSObject*, JSValue t
JSValue JSC_HOST_CALL dateProtoFuncGetYear(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue.inherits(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = false;
diff --git a/JavaScriptCore/runtime/Error.cpp b/JavaScriptCore/runtime/Error.cpp
index ddd4bc4..db1d8cc 100644
--- a/JavaScriptCore/runtime/Error.cpp
+++ b/JavaScriptCore/runtime/Error.cpp
@@ -97,12 +97,6 @@ JSObject* Error::create(ExecState* exec, ErrorType type, const char* message)
return create(exec, type, message, -1, -1, NULL);
}
-JSObject* throwError(ExecState* exec, JSObject* error)
-{
- exec->setException(error);
- return error;
-}
-
JSObject* throwError(ExecState* exec, ErrorType type)
{
JSObject* error = Error::create(exec, type, UString(), -1, -1, NULL);
diff --git a/JavaScriptCore/runtime/Error.h b/JavaScriptCore/runtime/Error.h
index e959cff..adf7fdf 100644
--- a/JavaScriptCore/runtime/Error.h
+++ b/JavaScriptCore/runtime/Error.h
@@ -59,7 +59,6 @@ namespace JSC {
JSObject* throwError(ExecState*, ErrorType, const UString& message);
JSObject* throwError(ExecState*, ErrorType, const char* message);
JSObject* throwError(ExecState*, ErrorType);
- JSObject* throwError(ExecState*, JSObject*);
} // namespace JSC
diff --git a/JavaScriptCore/runtime/ExceptionHelpers.cpp b/JavaScriptCore/runtime/ExceptionHelpers.cpp
index cc18b95..e63594c 100644
--- a/JavaScriptCore/runtime/ExceptionHelpers.cpp
+++ b/JavaScriptCore/runtime/ExceptionHelpers.cpp
@@ -74,7 +74,7 @@ JSValue createUndefinedVariableError(ExecState* exec, const Identifier& ident, u
int line = codeBlock->expressionRangeForBytecodeOffset(exec, bytecodeOffset, divotPoint, startOffset, endOffset);
UString message = "Can't find variable: ";
message.append(ident.ustring());
- JSObject* exception = Error::create(exec, ReferenceError, message, line, codeBlock->ownerExecutable()->sourceID(), codeBlock->ownerExecutable()->sourceURL());
+ JSObject* exception = Error::create(exec, ReferenceError, message, line, codeBlock->ownerNode()->sourceID(), codeBlock->ownerNode()->sourceURL());
exception->putWithAttributes(exec, Identifier(exec, expressionBeginOffsetPropertyName), jsNumber(exec, divotPoint - startOffset), ReadOnly | DontDelete);
exception->putWithAttributes(exec, Identifier(exec, expressionCaretOffsetPropertyName), jsNumber(exec, divotPoint), ReadOnly | DontDelete);
exception->putWithAttributes(exec, Identifier(exec, expressionEndOffsetPropertyName), jsNumber(exec, divotPoint + endOffset), ReadOnly | DontDelete);
@@ -136,7 +136,7 @@ JSObject* createInvalidParamError(ExecState* exec, const char* op, JSValue value
int divotPoint = 0;
int line = codeBlock->expressionRangeForBytecodeOffset(exec, bytecodeOffset, divotPoint, startOffset, endOffset);
UString errorMessage = createErrorMessage(exec, codeBlock, line, divotPoint, divotPoint + endOffset, value, message);
- JSObject* exception = Error::create(exec, TypeError, errorMessage, line, codeBlock->ownerExecutable()->sourceID(), codeBlock->ownerExecutable()->sourceURL());
+ JSObject* exception = Error::create(exec, TypeError, errorMessage, line, codeBlock->ownerNode()->sourceID(), codeBlock->ownerNode()->sourceURL());
exception->putWithAttributes(exec, Identifier(exec, expressionBeginOffsetPropertyName), jsNumber(exec, divotPoint - startOffset), ReadOnly | DontDelete);
exception->putWithAttributes(exec, Identifier(exec, expressionCaretOffsetPropertyName), jsNumber(exec, divotPoint), ReadOnly | DontDelete);
exception->putWithAttributes(exec, Identifier(exec, expressionEndOffsetPropertyName), jsNumber(exec, divotPoint + endOffset), ReadOnly | DontDelete);
@@ -157,7 +157,7 @@ JSObject* createNotAConstructorError(ExecState* exec, JSValue value, unsigned by
startPoint++;
UString errorMessage = createErrorMessage(exec, codeBlock, line, startPoint, divotPoint, value, "not a constructor");
- JSObject* exception = Error::create(exec, TypeError, errorMessage, line, codeBlock->ownerExecutable()->sourceID(), codeBlock->ownerExecutable()->sourceURL());
+ JSObject* exception = Error::create(exec, TypeError, errorMessage, line, codeBlock->ownerNode()->sourceID(), codeBlock->ownerNode()->sourceURL());
exception->putWithAttributes(exec, Identifier(exec, expressionBeginOffsetPropertyName), jsNumber(exec, divotPoint - startOffset), ReadOnly | DontDelete);
exception->putWithAttributes(exec, Identifier(exec, expressionCaretOffsetPropertyName), jsNumber(exec, divotPoint), ReadOnly | DontDelete);
exception->putWithAttributes(exec, Identifier(exec, expressionEndOffsetPropertyName), jsNumber(exec, divotPoint + endOffset), ReadOnly | DontDelete);
@@ -171,7 +171,7 @@ JSValue createNotAFunctionError(ExecState* exec, JSValue value, unsigned bytecod
int divotPoint = 0;
int line = codeBlock->expressionRangeForBytecodeOffset(exec, bytecodeOffset, divotPoint, startOffset, endOffset);
UString errorMessage = createErrorMessage(exec, codeBlock, line, divotPoint - startOffset, divotPoint, value, "not a function");
- JSObject* exception = Error::create(exec, TypeError, errorMessage, line, codeBlock->ownerExecutable()->sourceID(), codeBlock->ownerExecutable()->sourceURL());
+ JSObject* exception = Error::create(exec, TypeError, errorMessage, line, codeBlock->ownerNode()->sourceID(), codeBlock->ownerNode()->sourceURL());
exception->putWithAttributes(exec, Identifier(exec, expressionBeginOffsetPropertyName), jsNumber(exec, divotPoint - startOffset), ReadOnly | DontDelete);
exception->putWithAttributes(exec, Identifier(exec, expressionCaretOffsetPropertyName), jsNumber(exec, divotPoint), ReadOnly | DontDelete);
exception->putWithAttributes(exec, Identifier(exec, expressionEndOffsetPropertyName), jsNumber(exec, divotPoint + endOffset), ReadOnly | DontDelete);
@@ -201,7 +201,7 @@ JSObject* createNotAnObjectError(ExecState* exec, JSNotAnObjectErrorStub* error,
int divotPoint = 0;
int line = codeBlock->expressionRangeForBytecodeOffset(exec, bytecodeOffset, divotPoint, startOffset, endOffset);
UString errorMessage = createErrorMessage(exec, codeBlock, line, divotPoint - startOffset, divotPoint, error->isNull() ? jsNull() : jsUndefined(), "not an object");
- JSObject* exception = Error::create(exec, TypeError, errorMessage, line, codeBlock->ownerExecutable()->sourceID(), codeBlock->ownerExecutable()->sourceURL());
+ JSObject* exception = Error::create(exec, TypeError, errorMessage, line, codeBlock->ownerNode()->sourceID(), codeBlock->ownerNode()->sourceURL());
exception->putWithAttributes(exec, Identifier(exec, expressionBeginOffsetPropertyName), jsNumber(exec, divotPoint - startOffset), ReadOnly | DontDelete);
exception->putWithAttributes(exec, Identifier(exec, expressionCaretOffsetPropertyName), jsNumber(exec, divotPoint), ReadOnly | DontDelete);
exception->putWithAttributes(exec, Identifier(exec, expressionEndOffsetPropertyName), jsNumber(exec, divotPoint + endOffset), ReadOnly | DontDelete);
diff --git a/JavaScriptCore/runtime/Executable.cpp b/JavaScriptCore/runtime/Executable.cpp
deleted file mode 100644
index 053dbfb..0000000
--- a/JavaScriptCore/runtime/Executable.cpp
+++ /dev/null
@@ -1,216 +0,0 @@
-/*
- * 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 "config.h"
-#include "Executable.h"
-
-#include "BytecodeGenerator.h"
-#include "CodeBlock.h"
-#include "JIT.h"
-#include "Parser.h"
-
-namespace JSC {
-
-EvalExecutable::~EvalExecutable()
-{
- delete m_evalCodeBlock;
-}
-
-ProgramExecutable::~ProgramExecutable()
-{
- delete m_programCodeBlock;
-}
-
-FunctionExecutable::~FunctionExecutable()
-{
- delete m_codeBlock;
-}
-
-void EvalExecutable::generateBytecode(ScopeChainNode* scopeChainNode)
-{
- ScopeChain scopeChain(scopeChainNode);
- JSGlobalObject* globalObject = scopeChain.globalObject();
-
- ASSERT(!m_evalCodeBlock);
- m_evalCodeBlock = new EvalCodeBlock(this, globalObject, source().provider(), scopeChain.localDepth());
- OwnPtr<BytecodeGenerator> generator(new BytecodeGenerator(evalNode(), globalObject->debugger(), scopeChain, &m_evalCodeBlock->symbolTable(), m_evalCodeBlock));
- generator->generate();
-
- evalNode()->partialDestroyData();
-}
-
-void ProgramExecutable::generateBytecode(ScopeChainNode* scopeChainNode)
-{
- ScopeChain scopeChain(scopeChainNode);
- JSGlobalObject* globalObject = scopeChain.globalObject();
-
- ASSERT(!m_programCodeBlock);
- m_programCodeBlock = new ProgramCodeBlock(this, GlobalCode, globalObject, source().provider());
- OwnPtr<BytecodeGenerator> generator(new BytecodeGenerator(programNode(), globalObject->debugger(), scopeChain, &globalObject->symbolTable(), m_programCodeBlock));
- generator->generate();
-
- programNode()->destroyData();
-}
-
-void FunctionExecutable::generateBytecode(ScopeChainNode* scopeChainNode)
-{
- body()->reparseDataIfNecessary(scopeChainNode);
-
- ScopeChain scopeChain(scopeChainNode);
- JSGlobalObject* globalObject = scopeChain.globalObject();
-
- ASSERT(!m_codeBlock);
- m_codeBlock = new FunctionCodeBlock(this, FunctionCode, source().provider(), source().startOffset());
- OwnPtr<BytecodeGenerator> generator(new BytecodeGenerator(body(), globalObject->debugger(), scopeChain, &m_codeBlock->symbolTable(), m_codeBlock));
- generator->generate();
-
- body()->destroyData();
-}
-
-#if ENABLE(JIT)
-
-void EvalExecutable::generateJITCode(ScopeChainNode* scopeChainNode)
-{
- CodeBlock* codeBlock = &bytecode(scopeChainNode);
- m_jitCode = JIT::compile(scopeChainNode->globalData, codeBlock);
-
-#if !ENABLE(OPCODE_SAMPLING)
- if (!BytecodeGenerator::dumpsGeneratedCode())
- codeBlock->discardBytecode();
-#endif
-}
-
-void ProgramExecutable::generateJITCode(ScopeChainNode* scopeChainNode)
-{
- CodeBlock* codeBlock = &bytecode(scopeChainNode);
- m_jitCode = JIT::compile(scopeChainNode->globalData, codeBlock);
-
-#if !ENABLE(OPCODE_SAMPLING)
- if (!BytecodeGenerator::dumpsGeneratedCode())
- codeBlock->discardBytecode();
-#endif
-}
-
-void FunctionExecutable::generateJITCode(ScopeChainNode* scopeChainNode)
-{
- CodeBlock* codeBlock = &bytecode(scopeChainNode);
- m_jitCode = JIT::compile(scopeChainNode->globalData, codeBlock);
-
-#if !ENABLE(OPCODE_SAMPLING)
- if (!BytecodeGenerator::dumpsGeneratedCode())
- codeBlock->discardBytecode();
-#endif
-}
-
-#endif
-
-bool FunctionExecutable::isHostFunction() const
-{
- return m_codeBlock && m_codeBlock->codeType() == NativeCode;
-}
-
-void FunctionExecutable::markAggregate(MarkStack& markStack)
-{
- if (m_codeBlock)
- m_codeBlock->markAggregate(markStack);
-}
-
-ExceptionInfo* FunctionExecutable::reparseExceptionInfo(JSGlobalData* globalData, ScopeChainNode* scopeChainNode, CodeBlock* codeBlock)
-{
- RefPtr<FunctionBodyNode> newFunctionBody = globalData->parser->reparse<FunctionBodyNode>(globalData, body());
- ASSERT(newFunctionBody);
- newFunctionBody->finishParsing(body()->copyParameters(), body()->parameterCount(), body()->ident());
-
- ScopeChain scopeChain(scopeChainNode);
- JSGlobalObject* globalObject = scopeChain.globalObject();
-
- OwnPtr<CodeBlock> newCodeBlock(new FunctionCodeBlock(this, FunctionCode, source().provider(), source().startOffset()));
- globalData->functionCodeBlockBeingReparsed = newCodeBlock.get();
-
- OwnPtr<BytecodeGenerator> generator(new BytecodeGenerator(newFunctionBody.get(), globalObject->debugger(), scopeChain, &newCodeBlock->symbolTable(), newCodeBlock.get()));
- generator->setRegeneratingForExceptionInfo(static_cast<FunctionCodeBlock*>(codeBlock));
- generator->generate();
-
- ASSERT(newCodeBlock->instructionCount() == codeBlock->instructionCount());
-
-#if ENABLE(JIT)
- JITCode newJITCode = JIT::compile(globalData, newCodeBlock.get());
- ASSERT(newJITCode.size() == generatedJITCode().size());
-#endif
-
- globalData->functionCodeBlockBeingReparsed = 0;
-
- return newCodeBlock->extractExceptionInfo();
-}
-
-ExceptionInfo* EvalExecutable::reparseExceptionInfo(JSGlobalData* globalData, ScopeChainNode* scopeChainNode, CodeBlock* codeBlock)
-{
- RefPtr<EvalNode> newEvalBody = globalData->parser->reparse<EvalNode>(globalData, evalNode());
-
- ScopeChain scopeChain(scopeChainNode);
- JSGlobalObject* globalObject = scopeChain.globalObject();
-
- OwnPtr<EvalCodeBlock> newCodeBlock(new EvalCodeBlock(this, globalObject, source().provider(), scopeChain.localDepth()));
-
- OwnPtr<BytecodeGenerator> generator(new BytecodeGenerator(newEvalBody.get(), globalObject->debugger(), scopeChain, &newCodeBlock->symbolTable(), newCodeBlock.get()));
- generator->setRegeneratingForExceptionInfo(static_cast<EvalCodeBlock*>(codeBlock));
- generator->generate();
-
- ASSERT(newCodeBlock->instructionCount() == codeBlock->instructionCount());
-
-#if ENABLE(JIT)
- JITCode newJITCode = JIT::compile(globalData, newCodeBlock.get());
- ASSERT(newJITCode.size() == generatedJITCode().size());
-#endif
-
- return newCodeBlock->extractExceptionInfo();
-}
-
-void FunctionExecutable::recompile(ExecState* exec)
-{
- FunctionBodyNode* oldBody = body();
- RefPtr<FunctionBodyNode> newBody = exec->globalData().parser->parse<FunctionBodyNode>(exec, 0, m_source);
- ASSERT(newBody);
- newBody->finishParsing(oldBody->copyParameters(), oldBody->parameterCount(), oldBody->ident());
- m_node = newBody;
- delete m_codeBlock;
- m_codeBlock = 0;
-#if ENABLE(JIT)
- m_jitCode = JITCode();
-#endif
-}
-
-#if ENABLE(JIT)
-FunctionExecutable::FunctionExecutable(ExecState* exec)
- : m_codeBlock(new NativeCodeBlock(this))
- , m_name(Identifier(exec, "<native thunk>"))
-{
- m_jitCode = JITCode(JITCode::HostFunction(exec->globalData().jitStubs.ctiNativeCallThunk()));
-}
-#endif
-
-};
-
-
diff --git a/JavaScriptCore/runtime/Executable.h b/JavaScriptCore/runtime/Executable.h
deleted file mode 100644
index 29288df..0000000
--- a/JavaScriptCore/runtime/Executable.h
+++ /dev/null
@@ -1,268 +0,0 @@
-/*
- * 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.
- */
-
-#ifndef Executable_h
-#define Executable_h
-
-#include "Nodes.h"
-
-namespace JSC {
-
- class CodeBlock;
- class EvalCodeBlock;
- class ProgramCodeBlock;
- class ScopeChainNode;
-
- struct ExceptionInfo;
-
- class ExecutableBase {
- friend class JIT;
- public:
- virtual ~ExecutableBase() {}
-
- ExecutableBase(const SourceCode& source)
- : m_source(source)
- {
- }
-
- const SourceCode& source() { return m_source; }
- intptr_t sourceID() const { return m_node->sourceID(); }
- const UString& sourceURL() const { return m_node->sourceURL(); }
- int lineNo() const { return m_node->lineNo(); }
- int lastLine() const { return m_node->lastLine(); }
-
- bool usesEval() const { return m_node->usesEval(); }
- bool usesArguments() const { return m_node->usesArguments(); }
- bool needsActivation() const { return m_node->needsActivation(); }
-
- virtual ExceptionInfo* reparseExceptionInfo(JSGlobalData*, ScopeChainNode*, CodeBlock*) = 0;
-
- ScopeNode* astNode() { return m_node.get(); }
-
- protected:
- RefPtr<ScopeNode> m_node;
- SourceCode m_source;
-
- private:
- // For use making native thunk.
- friend class FunctionExecutable;
- ExecutableBase()
- {
- }
-
-#if ENABLE(JIT)
- public:
- JITCode& generatedJITCode()
- {
- ASSERT(m_jitCode);
- return m_jitCode;
- }
-
- ExecutablePool* getExecutablePool()
- {
- return m_jitCode.getExecutablePool();
- }
-
- protected:
- JITCode m_jitCode;
-#endif
- };
-
- class EvalExecutable : public ExecutableBase {
- public:
- EvalExecutable(const SourceCode& source)
- : ExecutableBase(source)
- , m_evalCodeBlock(0)
- {
- }
-
- ~EvalExecutable();
-
- JSObject* parse(ExecState* exec, bool allowDebug = true);
-
- EvalCodeBlock& bytecode(ScopeChainNode* scopeChainNode)
- {
- if (!m_evalCodeBlock)
- generateBytecode(scopeChainNode);
- return *m_evalCodeBlock;
- }
-
- DeclarationStacks::VarStack& varStack() { return m_node->varStack(); }
-
- ExceptionInfo* reparseExceptionInfo(JSGlobalData*, ScopeChainNode*, CodeBlock*);
-
- private:
- EvalNode* evalNode() { return static_cast<EvalNode*>(m_node.get()); }
-
- void generateBytecode(ScopeChainNode*);
-
- EvalCodeBlock* m_evalCodeBlock;
-
-#if ENABLE(JIT)
- public:
- JITCode& jitCode(ScopeChainNode* scopeChainNode)
- {
- if (!m_jitCode)
- generateJITCode(scopeChainNode);
- return m_jitCode;
- }
-
- private:
- void generateJITCode(ScopeChainNode*);
-#endif
- };
-
- class CacheableEvalExecutable : public EvalExecutable, public RefCounted<CacheableEvalExecutable> {
- public:
- static PassRefPtr<CacheableEvalExecutable> create(const SourceCode& source) { return adoptRef(new CacheableEvalExecutable(source)); }
-
- private:
- CacheableEvalExecutable(const SourceCode& source)
- : EvalExecutable(source)
- {
- }
- };
-
- class ProgramExecutable : public ExecutableBase {
- public:
- ProgramExecutable(const SourceCode& source)
- : ExecutableBase(source)
- , m_programCodeBlock(0)
- {
- }
-
- ~ProgramExecutable();
-
- JSObject* parse(ExecState* exec, bool allowDebug = true);
-
- // CodeBlocks for program code are transient and therefore to not gain from from throwing out there exception information.
- ExceptionInfo* reparseExceptionInfo(JSGlobalData*, ScopeChainNode*, CodeBlock*) { ASSERT_NOT_REACHED(); return 0; }
-
- ProgramCodeBlock& bytecode(ScopeChainNode* scopeChainNode)
- {
- if (!m_programCodeBlock)
- generateBytecode(scopeChainNode);
- return *m_programCodeBlock;
- }
-
- private:
- ProgramNode* programNode() { return static_cast<ProgramNode*>(m_node.get()); }
-
- void generateBytecode(ScopeChainNode*);
-
- ProgramCodeBlock* m_programCodeBlock;
-
-#if ENABLE(JIT)
- public:
- JITCode& jitCode(ScopeChainNode* scopeChainNode)
- {
- if (!m_jitCode)
- generateJITCode(scopeChainNode);
- return m_jitCode;
- }
-
- private:
- void generateJITCode(ScopeChainNode*);
-#endif
- };
-
- class FunctionExecutable : public ExecutableBase, public RefCounted<FunctionExecutable> {
- friend class JIT;
- public:
- FunctionExecutable(const Identifier& name, FunctionBodyNode* body)
- : ExecutableBase(body->source())
- , m_codeBlock(0)
- , m_name(name)
- {
- m_node = body;
- }
-
- ~FunctionExecutable();
-
- const Identifier& name() { return m_name; }
-
- JSFunction* make(ExecState* exec, ScopeChainNode* scopeChain);
-
- CodeBlock& bytecode(ScopeChainNode* scopeChainNode)
- {
- ASSERT(scopeChainNode);
- if (!m_codeBlock)
- generateBytecode(scopeChainNode);
- return *m_codeBlock;
- }
- CodeBlock& generatedBytecode()
- {
- ASSERT(m_codeBlock);
- return *m_codeBlock;
- }
-
- bool usesEval() const { return body()->usesEval(); }
- bool usesArguments() const { return body()->usesArguments(); }
- size_t parameterCount() const { return body()->parameterCount(); }
- UString paramString() const { return body()->paramString(); }
-
- bool isHostFunction() const;
- bool isGenerated() const
- {
- return m_codeBlock;
- }
-
- void recompile(ExecState* exec);
-
- ExceptionInfo* reparseExceptionInfo(JSGlobalData*, ScopeChainNode*, CodeBlock*);
-
- void markAggregate(MarkStack& markStack);
-
- private:
- FunctionBodyNode* body() const { return static_cast<FunctionBodyNode*>(m_node.get()); }
-
- void generateBytecode(ScopeChainNode*);
-
- CodeBlock* m_codeBlock;
- const Identifier& m_name;
-
-#if ENABLE(JIT)
- public:
- JITCode& jitCode(ScopeChainNode* scopeChainNode)
- {
- if (!m_jitCode)
- generateJITCode(scopeChainNode);
- return m_jitCode;
- }
-
- static PassRefPtr<FunctionExecutable> createNativeThunk(ExecState* exec)
- {
- return adoptRef(new FunctionExecutable(exec));
- }
-
- private:
- FunctionExecutable(ExecState* exec);
- void generateJITCode(ScopeChainNode*);
-#endif
- };
-
-};
-
-#endif
diff --git a/JavaScriptCore/runtime/FunctionConstructor.cpp b/JavaScriptCore/runtime/FunctionConstructor.cpp
index 2783b35..f4f5cc8 100644
--- a/JavaScriptCore/runtime/FunctionConstructor.cpp
+++ b/JavaScriptCore/runtime/FunctionConstructor.cpp
@@ -66,6 +66,32 @@ CallType FunctionConstructor::getCallData(CallData& callData)
return CallTypeHost;
}
+FunctionBodyNode* extractFunctionBody(ProgramNode* program)
+{
+ if (!program)
+ return 0;
+
+ StatementVector& children = program->children();
+ if (children.size() != 1)
+ return 0;
+
+ StatementNode* exprStatement = children[0];
+ ASSERT(exprStatement);
+ ASSERT(exprStatement->isExprStatement());
+ if (!exprStatement || !exprStatement->isExprStatement())
+ return 0;
+
+ ExpressionNode* funcExpr = static_cast<ExprStatementNode*>(exprStatement)->expr();
+ ASSERT(funcExpr);
+ ASSERT(funcExpr->isFuncExprNode());
+ if (!funcExpr || !funcExpr->isFuncExprNode())
+ return 0;
+
+ FunctionBodyNode* body = static_cast<FuncExprNode*>(funcExpr)->body();
+ ASSERT(body);
+ return body;
+}
+
// ECMA 15.3.2 The Function Constructor
JSObject* constructFunction(ExecState* exec, const ArgList& args, const Identifier& functionName, const UString& sourceURL, int lineNumber)
{
@@ -87,13 +113,15 @@ JSObject* constructFunction(ExecState* exec, const ArgList& args, const Identifi
int errLine;
UString errMsg;
SourceCode source = makeSource(program, sourceURL, lineNumber);
- RefPtr<FunctionBodyNode> body = exec->globalData().parser->parseFunctionFromGlobalCode(exec, exec->dynamicGlobalObject()->debugger(), source, &errLine, &errMsg);
+ RefPtr<ProgramNode> programNode = exec->globalData().parser->parse<ProgramNode>(exec, exec->dynamicGlobalObject()->debugger(), source, &errLine, &errMsg);
+
+ FunctionBodyNode* body = extractFunctionBody(programNode.get());
if (!body)
return throwError(exec, SyntaxError, errMsg, errLine, source.provider()->asID(), source.provider()->url());
JSGlobalObject* globalObject = exec->lexicalGlobalObject();
ScopeChain scopeChain(globalObject, globalObject->globalData(), exec->globalThisValue());
- return new (exec) JSFunction(exec, adoptRef(new FunctionExecutable(functionName, body.get())), scopeChain.node());
+ return new (exec) JSFunction(exec, functionName, body, scopeChain.node());
}
// ECMA 15.3.2 The Function Constructor
diff --git a/JavaScriptCore/runtime/FunctionConstructor.h b/JavaScriptCore/runtime/FunctionConstructor.h
index e8486dc..124b354 100644
--- a/JavaScriptCore/runtime/FunctionConstructor.h
+++ b/JavaScriptCore/runtime/FunctionConstructor.h
@@ -26,6 +26,8 @@
namespace JSC {
class FunctionPrototype;
+ class ProgramNode;
+ class FunctionBodyNode;
class FunctionConstructor : public InternalFunction {
public:
@@ -39,6 +41,8 @@ namespace JSC {
JSObject* constructFunction(ExecState*, const ArgList&, const Identifier& functionName, const UString& sourceURL, int lineNumber);
JSObject* constructFunction(ExecState*, const ArgList&);
+ FunctionBodyNode* extractFunctionBody(ProgramNode*);
+
} // namespace JSC
#endif // FunctionConstructor_h
diff --git a/JavaScriptCore/runtime/FunctionPrototype.cpp b/JavaScriptCore/runtime/FunctionPrototype.cpp
index d911f2f..9ba2144 100644
--- a/JavaScriptCore/runtime/FunctionPrototype.cpp
+++ b/JavaScriptCore/runtime/FunctionPrototype.cpp
@@ -1,6 +1,6 @@
/*
* Copyright (C) 1999-2001 Harri Porten (porten@kde.org)
- * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -84,17 +84,16 @@ static inline void insertSemicolonIfNeeded(UString& functionBody)
JSValue JSC_HOST_CALL functionProtoFuncToString(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (thisValue.inherits(&JSFunction::info)) {
+ if (thisValue.isObject(&JSFunction::info)) {
JSFunction* function = asFunction(thisValue);
- FunctionExecutable* executable = function->executable();
- if (!executable->isHostFunction()) {
- UString sourceString = executable->source().toString();
- insertSemicolonIfNeeded(sourceString);
- return jsString(exec, "function " + function->name(&exec->globalData()) + "(" + executable->paramString() + ") " + sourceString);
+ if (!function->isHostFunction()) {
+ UString functionBody = function->body()->toSourceString();
+ insertSemicolonIfNeeded(functionBody);
+ return jsString(exec, "function " + function->name(&exec->globalData()) + "(" + function->body()->paramString() + ") " + functionBody);
}
}
- if (thisValue.inherits(&InternalFunction::info)) {
+ if (thisValue.isObject(&InternalFunction::info)) {
InternalFunction* function = asInternalFunction(thisValue);
return jsString(exec, "function " + function->name(&exec->globalData()) + "() {\n [native code]\n}");
}
diff --git a/JavaScriptCore/runtime/FunctionPrototype.h b/JavaScriptCore/runtime/FunctionPrototype.h
index 4f674f5..607ddab 100644
--- a/JavaScriptCore/runtime/FunctionPrototype.h
+++ b/JavaScriptCore/runtime/FunctionPrototype.h
@@ -34,7 +34,7 @@ namespace JSC {
static PassRefPtr<Structure> createStructure(JSValue proto)
{
- return Structure::create(proto, TypeInfo(ObjectType, HasStandardGetOwnPropertySlot | HasDefaultMark));
+ return Structure::create(proto, TypeInfo(ObjectType, HasStandardGetOwnPropertySlot));
}
private:
diff --git a/JavaScriptCore/runtime/InternalFunction.h b/JavaScriptCore/runtime/InternalFunction.h
index 37077f6..310644c 100644
--- a/JavaScriptCore/runtime/InternalFunction.h
+++ b/JavaScriptCore/runtime/InternalFunction.h
@@ -42,7 +42,7 @@ namespace JSC {
static PassRefPtr<Structure> createStructure(JSValue proto)
{
- return Structure::create(proto, TypeInfo(ObjectType, ImplementsHasInstance | HasStandardGetOwnPropertySlot | HasDefaultMark));
+ return Structure::create(proto, TypeInfo(ObjectType, ImplementsHasInstance | HasStandardGetOwnPropertySlot));
}
protected:
diff --git a/JavaScriptCore/runtime/JSAPIValueWrapper.h b/JavaScriptCore/runtime/JSAPIValueWrapper.h
index 5cd4bdd..21a9710 100644
--- a/JavaScriptCore/runtime/JSAPIValueWrapper.h
+++ b/JavaScriptCore/runtime/JSAPIValueWrapper.h
@@ -54,7 +54,6 @@ namespace JSC {
: JSCell(exec->globalData().apiWrapperStructure.get())
, m_value(value)
{
- ASSERT(!value.isCell());
}
JSValue m_value;
diff --git a/JavaScriptCore/runtime/JSActivation.cpp b/JavaScriptCore/runtime/JSActivation.cpp
index d025abb..87adbcd 100644
--- a/JavaScriptCore/runtime/JSActivation.cpp
+++ b/JavaScriptCore/runtime/JSActivation.cpp
@@ -39,8 +39,8 @@ ASSERT_CLASS_FITS_IN_CELL(JSActivation);
const ClassInfo JSActivation::info = { "JSActivation", 0, 0, 0 };
-JSActivation::JSActivation(CallFrame* callFrame, PassRefPtr<FunctionExecutable> functionExecutable)
- : Base(callFrame->globalData().activationStructure, new JSActivationData(functionExecutable, callFrame->registers()))
+JSActivation::JSActivation(CallFrame* callFrame, PassRefPtr<FunctionBodyNode> functionBody)
+ : Base(callFrame->globalData().activationStructure, new JSActivationData(functionBody, callFrame->registers()))
{
}
@@ -57,12 +57,12 @@ void JSActivation::markChildren(MarkStack& markStack)
if (!registerArray)
return;
- size_t numParametersMinusThis = d()->functionExecutable->generatedBytecode().m_numParameters - 1;
+ size_t numParametersMinusThis = d()->functionBody->generatedBytecode().m_numParameters - 1;
size_t count = numParametersMinusThis;
markStack.appendValues(registerArray, count);
- size_t numVars = d()->functionExecutable->generatedBytecode().m_numVars;
+ size_t numVars = d()->functionBody->generatedBytecode().m_numVars;
// Skip the call frame, which sits between the parameters and vars.
markStack.appendValues(registerArray + count + RegisterFile::CallFrameHeaderSize, numVars, MayContainNullValues);
@@ -136,14 +136,14 @@ JSObject* JSActivation::toThisObject(ExecState* exec) const
bool JSActivation::isDynamicScope() const
{
- return d()->functionExecutable->usesEval();
+ return d()->functionBody->usesEval();
}
JSValue JSActivation::argumentsGetter(ExecState* exec, const Identifier&, const PropertySlot& slot)
{
JSActivation* activation = asActivation(slot.slotBase());
- if (activation->d()->functionExecutable->usesArguments()) {
+ if (activation->d()->functionBody->usesArguments()) {
PropertySlot slot;
activation->symbolTableGet(exec->propertyNames().arguments, slot);
return slot.getValue(exec, exec->propertyNames().arguments);
@@ -156,7 +156,7 @@ JSValue JSActivation::argumentsGetter(ExecState* exec, const Identifier&, const
arguments->copyRegisters();
callFrame->setCalleeArguments(arguments);
}
- ASSERT(arguments->inherits(&Arguments::info));
+ ASSERT(arguments->isObject(&Arguments::info));
return arguments;
}
diff --git a/JavaScriptCore/runtime/JSActivation.h b/JavaScriptCore/runtime/JSActivation.h
index 285ae67..6a08439 100644
--- a/JavaScriptCore/runtime/JSActivation.h
+++ b/JavaScriptCore/runtime/JSActivation.h
@@ -43,7 +43,7 @@ namespace JSC {
class JSActivation : public JSVariableObject {
typedef JSVariableObject Base;
public:
- JSActivation(CallFrame*, PassRefPtr<FunctionExecutable>);
+ JSActivation(CallFrame*, PassRefPtr<FunctionBodyNode>);
virtual ~JSActivation();
virtual void markChildren(MarkStack&);
@@ -70,13 +70,13 @@ namespace JSC {
private:
struct JSActivationData : public JSVariableObjectData {
- JSActivationData(PassRefPtr<FunctionExecutable> functionExecutable, Register* registers)
- : JSVariableObjectData(&functionExecutable->generatedBytecode().symbolTable(), registers)
- , functionExecutable(functionExecutable)
+ JSActivationData(PassRefPtr<FunctionBodyNode> functionBody, Register* registers)
+ : JSVariableObjectData(&functionBody->generatedBytecode().symbolTable(), registers)
+ , functionBody(functionBody)
{
}
- RefPtr<FunctionExecutable> functionExecutable;
+ RefPtr<FunctionBodyNode> functionBody;
};
static JSValue argumentsGetter(ExecState*, const Identifier&, const PropertySlot&);
diff --git a/JavaScriptCore/runtime/JSArray.cpp b/JavaScriptCore/runtime/JSArray.cpp
index 90e0434..7d7d4c4 100644
--- a/JavaScriptCore/runtime/JSArray.cpp
+++ b/JavaScriptCore/runtime/JSArray.cpp
@@ -25,7 +25,6 @@
#include "ArrayPrototype.h"
#include "CachedCall.h"
-#include "Error.h"
#include "PropertyNameArray.h"
#include <wtf/AVLTree.h>
#include <wtf/Assertions.h>
@@ -349,7 +348,8 @@ NEVER_INLINE void JSArray::putSlowCase(ExecState* exec, unsigned i, JSValue valu
}
}
- if (!tryFastRealloc(storage, storageSize(newVectorLength)).getValue(storage)) {
+ storage = static_cast<ArrayStorage*>(tryFastRealloc(storage, storageSize(newVectorLength)));
+ if (!storage) {
throwOutOfMemoryError(exec);
return;
}
@@ -467,7 +467,8 @@ bool JSArray::increaseVectorLength(unsigned newLength)
ASSERT(newLength <= MAX_STORAGE_VECTOR_INDEX);
unsigned newVectorLength = increasedVectorLength(newLength);
- if (!tryFastRealloc(storage, storageSize(newVectorLength)).getValue(storage))
+ storage = static_cast<ArrayStorage*>(tryFastRealloc(storage, storageSize(newVectorLength)));
+ if (!storage)
return false;
Heap::heap(this)->reportExtraMemoryCost(storageSize(newVectorLength) - storageSize(vectorLength));
@@ -602,7 +603,18 @@ void JSArray::push(ExecState* exec, JSValue value)
void JSArray::markChildren(MarkStack& markStack)
{
- markChildrenDirect(markStack);
+ JSObject::markChildren(markStack);
+
+ ArrayStorage* storage = m_storage;
+
+ unsigned usedVectorLength = min(storage->m_length, storage->m_vectorLength);
+ markStack.appendValues(storage->m_vector, usedVectorLength, MayContainNullValues);
+
+ if (SparseArrayValueMap* map = storage->m_sparseValueMap) {
+ SparseArrayValueMap::iterator end = map->end();
+ for (SparseArrayValueMap::iterator it = map->begin(); it != end; ++it)
+ markStack.append(it->second);
+ }
}
static int compareNumbersForQSort(const void* a, const void* b)
diff --git a/JavaScriptCore/runtime/JSArray.h b/JavaScriptCore/runtime/JSArray.h
index 88d8ee4..49df6c4 100644
--- a/JavaScriptCore/runtime/JSArray.h
+++ b/JavaScriptCore/runtime/JSArray.h
@@ -82,8 +82,6 @@ namespace JSC {
{
return Structure::create(prototype, TypeInfo(ObjectType));
}
-
- inline void markChildrenDirect(MarkStack& markStack);
protected:
virtual void put(ExecState*, const Identifier& propertyName, JSValue, PutPropertySlot&);
@@ -127,77 +125,6 @@ namespace JSC {
inline bool isJSArray(JSGlobalData* globalData, JSValue v) { return v.isCell() && v.asCell()->vptr() == globalData->jsArrayVPtr; }
- void JSArray::markChildrenDirect(MarkStack& markStack) {
- JSObject::markChildrenDirect(markStack);
-
- ArrayStorage* storage = m_storage;
-
- unsigned usedVectorLength = std::min(storage->m_length, storage->m_vectorLength);
- markStack.appendValues(storage->m_vector, usedVectorLength, MayContainNullValues);
-
- if (SparseArrayValueMap* map = storage->m_sparseValueMap) {
- SparseArrayValueMap::iterator end = map->end();
- for (SparseArrayValueMap::iterator it = map->begin(); it != end; ++it)
- markStack.append(it->second);
- }
- }
-
- inline void MarkStack::drain()
- {
- while (!m_markSets.isEmpty() || !m_values.isEmpty()) {
- while (!m_markSets.isEmpty() && m_values.size() < 50) {
- ASSERT(!m_markSets.isEmpty());
- MarkSet& current = m_markSets.last();
- ASSERT(current.m_values);
- JSValue* end = current.m_end;
- ASSERT(current.m_values);
- ASSERT(current.m_values != end);
- findNextUnmarkedNullValue:
- ASSERT(current.m_values != end);
- JSValue v = *current.m_values;
- current.m_values++;
-
- if (!v || v.marked()) {
- if (current.m_values == end) {
- m_markSets.removeLast();
- continue;
- }
- goto findNextUnmarkedNullValue;
- }
-
- JSCell* currentCell = v.asCell();
- currentCell->markCellDirect();
- if (currentCell->structure()->typeInfo().type() < CompoundType) {
- if (current.m_values == end) {
- m_markSets.removeLast();
- continue;
- }
- goto findNextUnmarkedNullValue;
- }
-
- if (current.m_values == end)
- m_markSets.removeLast();
-
- if (currentCell->structure()->typeInfo().hasDefaultMark())
- static_cast<JSObject*>(currentCell)->markChildrenDirect(*this);
- else if (currentCell->vptr() == m_jsArrayVPtr)
- static_cast<JSArray*>(currentCell)->markChildrenDirect(*this);
- else
- currentCell->markChildren(*this);
- }
- while (!m_values.isEmpty()) {
- JSCell* current = m_values.removeLast();
- ASSERT(current->marked());
- if (current->structure()->typeInfo().hasDefaultMark())
- static_cast<JSObject*>(current)->markChildrenDirect(*this);
- else if (current->vptr() == m_jsArrayVPtr)
- static_cast<JSArray*>(current)->markChildrenDirect(*this);
- else
- current->markChildren(*this);
- }
- }
- }
-
} // namespace JSC
#endif // JSArray_h
diff --git a/JavaScriptCore/runtime/JSByteArray.cpp b/JavaScriptCore/runtime/JSByteArray.cpp
index f832578..2a5e72f 100644
--- a/JavaScriptCore/runtime/JSByteArray.cpp
+++ b/JavaScriptCore/runtime/JSByteArray.cpp
@@ -45,7 +45,7 @@ JSByteArray::JSByteArray(ExecState* exec, PassRefPtr<Structure> structure, ByteA
PassRefPtr<Structure> JSByteArray::createStructure(JSValue prototype)
{
- PassRefPtr<Structure> result = Structure::create(prototype, TypeInfo(ObjectType, HasDefaultMark));
+ PassRefPtr<Structure> result = Structure::create(prototype, TypeInfo(ObjectType));
return result;
}
diff --git a/JavaScriptCore/runtime/JSCell.h b/JavaScriptCore/runtime/JSCell.h
index 485ad2e..75ccf7f 100644
--- a/JavaScriptCore/runtime/JSCell.h
+++ b/JavaScriptCore/runtime/JSCell.h
@@ -55,7 +55,7 @@ namespace JSC {
bool isString() const;
bool isObject() const;
virtual bool isGetterSetter() const;
- bool inherits(const ClassInfo*) const;
+ virtual bool isObject(const ClassInfo*) const;
virtual bool isAPIValueWrapper() const { return false; }
Structure* structure() const;
@@ -379,6 +379,30 @@ namespace JSC {
if (cell->structure()->typeInfo().type() >= CompoundType)
m_values.append(cell);
}
+
+ inline void MarkStack::drain() {
+ while (!m_markSets.isEmpty() || !m_values.isEmpty()) {
+ while ((!m_markSets.isEmpty()) && m_values.size() < 50) {
+ const MarkSet& current = m_markSets.removeLast();
+ JSValue* ptr = current.m_values;
+ JSValue* end = current.m_end;
+ if (current.m_properties == NoNullValues) {
+ while (ptr != end)
+ append(*ptr++);
+ } else {
+ while (ptr != end) {
+ if (JSValue value = *ptr++)
+ append(value);
+ }
+ }
+ }
+ while (!m_values.isEmpty()) {
+ JSCell* current = m_values.removeLast();
+ ASSERT(current->marked());
+ current->markChildren(*this);
+ }
+ }
+ }
} // namespace JSC
#endif // JSCell_h
diff --git a/JavaScriptCore/runtime/JSFunction.cpp b/JavaScriptCore/runtime/JSFunction.cpp
index f8e3d82..84c6263 100644
--- a/JavaScriptCore/runtime/JSFunction.cpp
+++ b/JavaScriptCore/runtime/JSFunction.cpp
@@ -45,26 +45,12 @@ ASSERT_CLASS_FITS_IN_CELL(JSFunction);
const ClassInfo JSFunction::info = { "Function", &InternalFunction::info, 0, 0 };
-inline bool JSFunction::isHostFunction() const
-{
- return m_executable && m_executable->isHostFunction();
-}
-
-bool JSFunction::isHostFunctionNonInline() const
-{
- return isHostFunction();
-}
-
-JSFunction::JSFunction(PassRefPtr<Structure> structure)
- : Base(structure)
-{
- clearScopeChain();
-}
-
JSFunction::JSFunction(ExecState* exec, PassRefPtr<Structure> structure, int length, const Identifier& name, NativeFunction func)
: Base(&exec->globalData(), structure, name)
#if ENABLE(JIT)
- , m_executable(FunctionExecutable::createNativeThunk(exec))
+ , m_body(FunctionBodyNode::createNativeThunk(&exec->globalData()))
+#else
+ , m_body(0)
#endif
{
#if ENABLE(JIT)
@@ -77,9 +63,9 @@ JSFunction::JSFunction(ExecState* exec, PassRefPtr<Structure> structure, int len
#endif
}
-JSFunction::JSFunction(ExecState* exec, PassRefPtr<FunctionExecutable> executable, ScopeChainNode* scopeChainNode)
- : Base(&exec->globalData(), exec->lexicalGlobalObject()->functionStructure(), executable->name())
- , m_executable(executable)
+JSFunction::JSFunction(ExecState* exec, const Identifier& name, FunctionBodyNode* body, ScopeChainNode* scopeChainNode)
+ : Base(&exec->globalData(), exec->lexicalGlobalObject()->functionStructure(), name)
+ , m_body(body)
{
setScopeChain(scopeChainNode);
}
@@ -90,8 +76,8 @@ JSFunction::~JSFunction()
// are based on a check for the this pointer value for this JSFunction - which will no longer be valid once
// this memory is freed and may be reused (potentially for another, different JSFunction).
#if ENABLE(JIT_OPTIMIZE_CALL)
- if (m_executable && m_executable->isGenerated())
- m_executable->generatedBytecode().unlinkCallers();
+ if (m_body && m_body->isGenerated())
+ m_body->generatedBytecode().unlinkCallers();
#endif
if (!isHostFunction())
scopeChain().~ScopeChain(); // FIXME: Don't we need to do this in the interpreter too?
@@ -100,7 +86,7 @@ JSFunction::~JSFunction()
void JSFunction::markChildren(MarkStack& markStack)
{
Base::markChildren(markStack);
- m_executable->markAggregate(markStack);
+ m_body->markAggregate(markStack);
if (!isHostFunction())
scopeChain().markAggregate(markStack);
}
@@ -111,7 +97,7 @@ CallType JSFunction::getCallData(CallData& callData)
callData.native.function = nativeFunction();
return CallTypeHost;
}
- callData.js.functionExecutable = m_executable.get();
+ callData.js.functionBody = m_body.get();
callData.js.scopeChain = scopeChain().node();
return CallTypeJS;
}
@@ -119,7 +105,7 @@ CallType JSFunction::getCallData(CallData& callData)
JSValue JSFunction::call(ExecState* exec, JSValue thisValue, const ArgList& args)
{
ASSERT(!isHostFunction());
- return exec->interpreter()->execute(m_executable.get(), exec, this, thisValue.toThisObject(exec), args, scopeChain().node(), exec->exceptionSlot());
+ return exec->interpreter()->execute(m_body.get(), exec, this, thisValue.toThisObject(exec), args, scopeChain().node(), exec->exceptionSlot());
}
JSValue JSFunction::argumentsGetter(ExecState* exec, const Identifier&, const PropertySlot& slot)
@@ -140,7 +126,7 @@ JSValue JSFunction::lengthGetter(ExecState* exec, const Identifier&, const Prope
{
JSFunction* thisObj = asFunction(slot.slotBase());
ASSERT(!thisObj->isHostFunction());
- return jsNumber(exec, thisObj->m_executable->parameterCount());
+ return jsNumber(exec, thisObj->m_body->parameterCount());
}
bool JSFunction::getOwnPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot)
@@ -204,7 +190,7 @@ ConstructType JSFunction::getConstructData(ConstructData& constructData)
{
if (isHostFunction())
return ConstructTypeNone;
- constructData.js.functionExecutable = m_executable.get();
+ constructData.js.functionBody = m_body.get();
constructData.js.scopeChain = scopeChain().node();
return ConstructTypeJS;
}
@@ -220,7 +206,7 @@ JSObject* JSFunction::construct(ExecState* exec, const ArgList& args)
structure = exec->lexicalGlobalObject()->emptyObjectStructure();
JSObject* thisObj = new (exec) JSObject(structure);
- JSValue result = exec->interpreter()->execute(m_executable.get(), exec, this, thisObj, args, scopeChain().node(), exec->exceptionSlot());
+ JSValue result = exec->interpreter()->execute(m_body.get(), exec, this, thisObj, args, scopeChain().node(), exec->exceptionSlot());
if (exec->hadException() || !result.isObject())
return thisObj;
return asObject(result);
diff --git a/JavaScriptCore/runtime/JSFunction.h b/JavaScriptCore/runtime/JSFunction.h
index 71998dc..cab1e5b 100644
--- a/JavaScriptCore/runtime/JSFunction.h
+++ b/JavaScriptCore/runtime/JSFunction.h
@@ -24,11 +24,15 @@
#ifndef JSFunction_h
#define JSFunction_h
-#include "Executable.h"
#include "InternalFunction.h"
+#include "JSVariableObject.h"
+#include "SymbolTable.h"
+#include "Nodes.h"
+#include "JSObject.h"
namespace JSC {
+ class FunctionBodyNode;
class FunctionPrototype;
class JSActivation;
class JSGlobalObject;
@@ -39,10 +43,20 @@ namespace JSC {
typedef InternalFunction Base;
+ JSFunction(PassRefPtr<Structure> structure)
+ : InternalFunction(structure)
+ {
+ clearScopeChain();
+ }
+
public:
JSFunction(ExecState*, PassRefPtr<Structure>, int length, const Identifier&, NativeFunction);
- JSFunction(ExecState*, PassRefPtr<FunctionExecutable>, ScopeChainNode*);
- virtual ~JSFunction();
+ JSFunction(ExecState*, const Identifier&, FunctionBodyNode*, ScopeChainNode*);
+ ~JSFunction();
+
+ virtual bool getOwnPropertySlot(ExecState*, const Identifier&, PropertySlot&);
+ virtual void put(ExecState*, const Identifier& propertyName, JSValue, PutPropertySlot&);
+ virtual bool deleteProperty(ExecState*, const Identifier& propertyName);
JSObject* construct(ExecState*, const ArgList&);
JSValue call(ExecState*, JSValue thisValue, const ArgList&);
@@ -50,7 +64,11 @@ namespace JSC {
void setScope(const ScopeChain& scopeChain) { setScopeChain(scopeChain); }
ScopeChain& scope() { return scopeChain(); }
- FunctionExecutable* executable() const { return m_executable.get(); }
+ void setBody(FunctionBodyNode* body) { m_body = body; }
+ void setBody(PassRefPtr<FunctionBodyNode> body) { m_body = body; }
+ FunctionBodyNode* body() const { return m_body.get(); }
+
+ virtual void markChildren(MarkStack&);
static JS_EXPORTDATA const ClassInfo info;
@@ -59,6 +77,11 @@ namespace JSC {
return Structure::create(prototype, TypeInfo(ObjectType, ImplementsHasInstance));
}
+#if ENABLE(JIT)
+ bool isHostFunction() const { return m_body && m_body->isHostFunction(); }
+#else
+ bool isHostFunction() const { return false; }
+#endif
NativeFunction nativeFunction()
{
return *reinterpret_cast<NativeFunction*>(m_data);
@@ -68,42 +91,31 @@ namespace JSC {
virtual CallType getCallData(CallData&);
private:
- JSFunction(PassRefPtr<Structure>);
-
- bool isHostFunction() const;
- bool isHostFunctionNonInline() const;
-
- virtual bool getOwnPropertySlot(ExecState*, const Identifier&, PropertySlot&);
- virtual void put(ExecState*, const Identifier& propertyName, JSValue, PutPropertySlot&);
- virtual bool deleteProperty(ExecState*, const Identifier& propertyName);
-
- virtual void markChildren(MarkStack&);
-
virtual const ClassInfo* classInfo() const { return &info; }
static JSValue argumentsGetter(ExecState*, const Identifier&, const PropertySlot&);
static JSValue callerGetter(ExecState*, const Identifier&, const PropertySlot&);
static JSValue lengthGetter(ExecState*, const Identifier&, const PropertySlot&);
- RefPtr<FunctionExecutable> m_executable;
+ RefPtr<FunctionBodyNode> m_body;
ScopeChain& scopeChain()
{
- ASSERT(!isHostFunctionNonInline());
+ ASSERT(!isHostFunction());
return *reinterpret_cast<ScopeChain*>(m_data);
}
void clearScopeChain()
{
- ASSERT(!isHostFunctionNonInline());
+ ASSERT(!isHostFunction());
new (m_data) ScopeChain(NoScopeChain());
}
void setScopeChain(ScopeChainNode* sc)
{
- ASSERT(!isHostFunctionNonInline());
+ ASSERT(!isHostFunction());
new (m_data) ScopeChain(sc);
}
void setScopeChain(const ScopeChain& sc)
{
- ASSERT(!isHostFunctionNonInline());
+ ASSERT(!isHostFunction());
*reinterpret_cast<ScopeChain*>(m_data) = sc;
}
void setNativeFunction(NativeFunction func)
@@ -121,11 +133,6 @@ namespace JSC {
return static_cast<JSFunction*>(asObject(value));
}
- inline JSFunction* FunctionExecutable::make(ExecState* exec, ScopeChainNode* scopeChain)
- {
- return new (exec) JSFunction(exec, this, scopeChain);
- }
-
} // namespace JSC
#endif // JSFunction_h
diff --git a/JavaScriptCore/runtime/JSGlobalData.cpp b/JavaScriptCore/runtime/JSGlobalData.cpp
index 38ee1d0..03df41d 100644
--- a/JavaScriptCore/runtime/JSGlobalData.cpp
+++ b/JavaScriptCore/runtime/JSGlobalData.cpp
@@ -144,9 +144,8 @@ JSGlobalData::JSGlobalData(bool isShared, const VPtrSet& vptrSet)
, initializingLazyNumericCompareFunction(false)
, head(0)
, dynamicGlobalObject(0)
- , functionCodeBlockBeingReparsed(0)
+ , scopeNodeBeingReparsed(0)
, firstStringifierToMark(0)
- , markStack(vptrSet.jsArrayVPtr)
{
#if PLATFORM(MAC)
startProfilerServerIfNeeded();
@@ -236,9 +235,9 @@ const Vector<Instruction>& JSGlobalData::numericCompareFunction(ExecState* exec)
{
if (!lazyNumericCompareFunction.size() && !initializingLazyNumericCompareFunction) {
initializingLazyNumericCompareFunction = true;
- RefPtr<FunctionBodyNode> functionBody = parser->parseFunctionFromGlobalCode(exec, 0, makeSource(UString("(function (v1, v2) { return v1 - v2; })")), 0, 0);
- FunctionExecutable function(functionBody->ident(), functionBody.get());
- lazyNumericCompareFunction = function.bytecode(exec->scopeChain()).instructions();
+ RefPtr<ProgramNode> programNode = parser->parse<ProgramNode>(exec, 0, makeSource(UString("(function (v1, v2) { return v1 - v2; })")), 0, 0);
+ RefPtr<FunctionBodyNode> functionBody = extractFunctionBody(programNode.get());
+ lazyNumericCompareFunction = functionBody->bytecode(exec->scopeChain()).instructions();
initializingLazyNumericCompareFunction = false;
}
diff --git a/JavaScriptCore/runtime/JSGlobalData.h b/JavaScriptCore/runtime/JSGlobalData.h
index 77556b7..88cb516 100644
--- a/JavaScriptCore/runtime/JSGlobalData.h
+++ b/JavaScriptCore/runtime/JSGlobalData.h
@@ -45,14 +45,15 @@ struct OpaqueJSClassContextData;
namespace JSC {
- class CodeBlock;
class CommonIdentifiers;
+ class FunctionBodyNode;
class IdentifierTable;
class Interpreter;
class JSGlobalObject;
class JSObject;
class Lexer;
class Parser;
+ class ScopeNode;
class Stringifier;
class Structure;
class UString;
@@ -144,7 +145,7 @@ namespace JSC {
HashSet<JSObject*> arrayVisitedElements;
- CodeBlock* functionCodeBlockBeingReparsed;
+ ScopeNode* scopeNodeBeingReparsed;
Stringifier* firstStringifierToMark;
MarkStack markStack;
diff --git a/JavaScriptCore/runtime/JSGlobalObject.cpp b/JavaScriptCore/runtime/JSGlobalObject.cpp
index 3a1909d..a90f18f 100644
--- a/JavaScriptCore/runtime/JSGlobalObject.cpp
+++ b/JavaScriptCore/runtime/JSGlobalObject.cpp
@@ -112,8 +112,8 @@ JSGlobalObject::~JSGlobalObject()
if (headObject == this)
headObject = 0;
- HashSet<GlobalCodeBlock*>::const_iterator end = codeBlocks().end();
- for (HashSet<GlobalCodeBlock*>::const_iterator it = codeBlocks().begin(); it != end; ++it)
+ HashSet<ProgramCodeBlock*>::const_iterator end = codeBlocks().end();
+ for (HashSet<ProgramCodeBlock*>::const_iterator it = codeBlocks().begin(); it != end; ++it)
(*it)->clearGlobalObject();
RegisterFile& registerFile = globalData()->interpreter->registerFile();
@@ -258,7 +258,7 @@ void JSGlobalObject::reset(JSValue prototype)
JSCell* objectConstructor = new (exec) ObjectConstructor(exec, ObjectConstructor::createStructure(d()->functionPrototype), d()->objectPrototype, d()->prototypeFunctionStructure.get());
JSCell* functionConstructor = new (exec) FunctionConstructor(exec, FunctionConstructor::createStructure(d()->functionPrototype), d()->functionPrototype);
- JSCell* arrayConstructor = new (exec) ArrayConstructor(exec, ArrayConstructor::createStructure(d()->functionPrototype), d()->arrayPrototype, d()->prototypeFunctionStructure.get());
+ JSCell* arrayConstructor = new (exec) ArrayConstructor(exec, ArrayConstructor::createStructure(d()->functionPrototype), d()->arrayPrototype);
JSCell* stringConstructor = new (exec) StringConstructor(exec, StringConstructor::createStructure(d()->functionPrototype), d()->prototypeFunctionStructure.get(), d()->stringPrototype);
JSCell* booleanConstructor = new (exec) BooleanConstructor(exec, BooleanConstructor::createStructure(d()->functionPrototype), d()->booleanPrototype);
JSCell* numberConstructor = new (exec) NumberConstructor(exec, NumberConstructor::createStructure(d()->functionPrototype), d()->numberPrototype);
@@ -361,8 +361,8 @@ void JSGlobalObject::markChildren(MarkStack& markStack)
{
JSVariableObject::markChildren(markStack);
- HashSet<GlobalCodeBlock*>::const_iterator end = codeBlocks().end();
- for (HashSet<GlobalCodeBlock*>::const_iterator it = codeBlocks().begin(); it != end; ++it)
+ HashSet<ProgramCodeBlock*>::const_iterator end = codeBlocks().end();
+ for (HashSet<ProgramCodeBlock*>::const_iterator it = codeBlocks().begin(); it != end; ++it)
(*it)->markAggregate(markStack);
RegisterFile& registerFile = globalData()->interpreter->registerFile();
diff --git a/JavaScriptCore/runtime/JSGlobalObject.h b/JavaScriptCore/runtime/JSGlobalObject.h
index cc36ada..cda49bd 100644
--- a/JavaScriptCore/runtime/JSGlobalObject.h
+++ b/JavaScriptCore/runtime/JSGlobalObject.h
@@ -38,7 +38,6 @@ namespace JSC {
class Debugger;
class ErrorConstructor;
class FunctionPrototype;
- class GlobalCodeBlock;
class GlobalEvalFunction;
class NativeErrorConstructor;
class ProgramCodeBlock;
@@ -145,7 +144,7 @@ namespace JSC {
RefPtr<JSGlobalData> globalData;
- HashSet<GlobalCodeBlock*> codeBlocks;
+ HashSet<ProgramCodeBlock*> codeBlocks;
};
public:
@@ -247,7 +246,7 @@ namespace JSC {
virtual bool isDynamicScope() const;
- HashSet<GlobalCodeBlock*>& codeBlocks() { return d()->codeBlocks; }
+ HashSet<ProgramCodeBlock*>& codeBlocks() { return d()->codeBlocks; }
void copyGlobalsFrom(RegisterFile&);
void copyGlobalsTo(RegisterFile&);
diff --git a/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp b/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp
index 50ea27f..affb99c 100644
--- a/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp
+++ b/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp
@@ -286,12 +286,16 @@ JSValue JSC_HOST_CALL globalFuncEval(ExecState* exec, JSObject* function, JSValu
if (JSValue parsedObject = preparser.tryLiteralParse())
return parsedObject;
- EvalExecutable eval(makeSource(s));
- JSObject* error = eval.parse(exec);
- if (error)
- return throwError(exec, error);
+ int errLine;
+ UString errMsg;
- return exec->interpreter()->execute(&eval, exec, thisObject, static_cast<JSGlobalObject*>(unwrappedObject)->globalScopeChain().node(), exec->exceptionSlot());
+ SourceCode source = makeSource(s);
+ RefPtr<EvalNode> evalNode = exec->globalData().parser->parse<EvalNode>(exec, exec->dynamicGlobalObject()->debugger(), source, &errLine, &errMsg);
+
+ if (!evalNode)
+ return throwError(exec, SyntaxError, errMsg, errLine, source.provider()->asID(), NULL);
+
+ return exec->interpreter()->execute(evalNode.get(), exec, thisObject, static_cast<JSGlobalObject*>(unwrappedObject)->globalScopeChain().node(), exec->exceptionSlot());
}
JSValue JSC_HOST_CALL globalFuncParseInt(ExecState* exec, JSObject*, JSValue, const ArgList& args)
diff --git a/JavaScriptCore/runtime/JSNumberCell.h b/JavaScriptCore/runtime/JSNumberCell.h
index 6a48081..04cccef 100644
--- a/JavaScriptCore/runtime/JSNumberCell.h
+++ b/JavaScriptCore/runtime/JSNumberCell.h
@@ -84,7 +84,7 @@ namespace JSC {
#endif
}
- static PassRefPtr<Structure> createStructure(JSValue proto) { return Structure::create(proto, TypeInfo(NumberType, NeedsThisConversion | HasDefaultMark)); }
+ static PassRefPtr<Structure> createStructure(JSValue proto) { return Structure::create(proto, TypeInfo(NumberType, NeedsThisConversion)); }
private:
JSNumberCell(JSGlobalData* globalData, double value)
diff --git a/JavaScriptCore/runtime/JSONObject.cpp b/JavaScriptCore/runtime/JSONObject.cpp
index fed9fc3..d643808 100644
--- a/JavaScriptCore/runtime/JSONObject.cpp
+++ b/JavaScriptCore/runtime/JSONObject.cpp
@@ -381,15 +381,6 @@ Stringifier::StringifyResult Stringifier::appendStringifiedValue(StringBuilder&
JSObject* object = asObject(value);
- CallData callData;
- if (object->getCallData(callData) != CallTypeNone) {
- if (holder->inherits(&JSArray::info)) {
- builder.append("null");
- return StringifySucceeded;
- }
- return StringifyFailedDueToUndefinedValue;
- }
-
// Handle cycle detection, and put the holder on the stack.
if (!m_holderCycleDetector.add(object).second) {
throwError(m_exec, TypeError, "JSON.stringify cannot serialize cyclic structures.");
diff --git a/JavaScriptCore/runtime/JSONObject.h b/JavaScriptCore/runtime/JSONObject.h
index c61b0dd..faca7c7 100644
--- a/JavaScriptCore/runtime/JSONObject.h
+++ b/JavaScriptCore/runtime/JSONObject.h
@@ -41,7 +41,7 @@ namespace JSC {
static PassRefPtr<Structure> createStructure(JSValue prototype)
{
- return Structure::create(prototype, TypeInfo(ObjectType, HasDefaultMark));
+ return Structure::create(prototype, TypeInfo(ObjectType));
}
static void markStringifiers(MarkStack&, Stringifier*);
diff --git a/JavaScriptCore/runtime/JSObject.cpp b/JavaScriptCore/runtime/JSObject.cpp
index 57624fb..419dfe9 100644
--- a/JavaScriptCore/runtime/JSObject.cpp
+++ b/JavaScriptCore/runtime/JSObject.cpp
@@ -37,6 +37,26 @@
#include <math.h>
#include <wtf/Assertions.h>
+#define JSOBJECT_MARK_TRACING 0
+
+#if JSOBJECT_MARK_TRACING
+
+#define JSOBJECT_MARK_BEGIN() \
+ static int markStackDepth = 0; \
+ for (int i = 0; i < markStackDepth; i++) \
+ putchar('-'); \
+ printf("%s (%p)\n", className().UTF8String().c_str(), this); \
+ markStackDepth++; \
+
+#define JSOBJECT_MARK_END() \
+ markStackDepth--;
+
+#else // JSOBJECT_MARK_TRACING
+
+#define JSOBJECT_MARK_BEGIN()
+#define JSOBJECT_MARK_END()
+
+#endif // JSOBJECT_MARK_TRACING
namespace JSC {
@@ -44,7 +64,16 @@ ASSERT_CLASS_FITS_IN_CELL(JSObject);
void JSObject::markChildren(MarkStack& markStack)
{
- markChildrenDirect(markStack);
+ JSOBJECT_MARK_BEGIN();
+
+ JSCell::markChildren(markStack);
+ m_structure->markAggregate(markStack);
+
+ PropertyStorage storage = propertyStorage();
+ size_t storageSize = m_structure->propertyStorageSize();
+ markStack.appendValues(reinterpret_cast<JSValue*>(storage), storageSize);
+
+ JSOBJECT_MARK_END();
}
UString JSObject::className() const
diff --git a/JavaScriptCore/runtime/JSObject.h b/JavaScriptCore/runtime/JSObject.h
index 856c5a1..decd5e9 100644
--- a/JavaScriptCore/runtime/JSObject.h
+++ b/JavaScriptCore/runtime/JSObject.h
@@ -27,9 +27,7 @@
#include "ClassInfo.h"
#include "CommonIdentifiers.h"
#include "CallFrame.h"
-#include "JSCell.h"
#include "JSNumberCell.h"
-#include "MarkStack.h"
#include "PropertySlot.h"
#include "PutPropertySlot.h"
#include "ScopeChain.h"
@@ -76,12 +74,13 @@ namespace JSC {
explicit JSObject(PassRefPtr<Structure>);
virtual void markChildren(MarkStack&);
- ALWAYS_INLINE void markChildrenDirect(MarkStack& markStack);
// The inline virtual destructor cannot be the first virtual function declared
// in the class as it results in the vtable being generated as a weak symbol
virtual ~JSObject();
+ bool inherits(const ClassInfo* classInfo) const { return JSCell::isObject(classInfo); }
+
JSValue prototype() const;
void setPrototype(JSValue prototype);
@@ -202,22 +201,10 @@ namespace JSC {
static PassRefPtr<Structure> createStructure(JSValue prototype)
{
- return Structure::create(prototype, TypeInfo(ObjectType, HasStandardGetOwnPropertySlot | HasDefaultMark));
+ return Structure::create(prototype, TypeInfo(ObjectType, HasStandardGetOwnPropertySlot));
}
private:
- // Nobody should ever ask any of these questions on something already known to be a JSObject.
- using JSCell::isAPIValueWrapper;
- using JSCell::isGetterSetter;
- using JSCell::toObject;
- void getObject();
- void getString();
- void isObject();
- void isString();
-#if USE(JSVALUE32)
- void isNumber();
-#endif
-
ConstPropertyStorage propertyStorage() const { return (isUsingInlineStorage() ? m_inlineStorage : m_externalStorage); }
PropertyStorage propertyStorage() { return (isUsingInlineStorage() ? m_inlineStorage : m_externalStorage); }
@@ -306,7 +293,7 @@ inline bool Structure::isUsingInlineStorage() const
return (propertyStorageCapacity() == JSObject::inlineStorageCapacity);
}
-inline bool JSCell::inherits(const ClassInfo* info) const
+inline bool JSCell::isObject(const ClassInfo* info) const
{
for (const ClassInfo* ci = classInfo(); ci; ci = ci->parentClass) {
if (ci == info)
@@ -315,10 +302,10 @@ inline bool JSCell::inherits(const ClassInfo* info) const
return false;
}
-// this method is here to be after the inline declaration of JSCell::inherits
-inline bool JSValue::inherits(const ClassInfo* classInfo) const
+// this method is here to be after the inline declaration of JSCell::isObject
+inline bool JSValue::isObject(const ClassInfo* classInfo) const
{
- return isCell() && asCell()->inherits(classInfo);
+ return isCell() && asCell()->isObject(classInfo);
}
ALWAYS_INLINE bool JSObject::inlineGetOwnPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot)
@@ -640,16 +627,6 @@ ALWAYS_INLINE void JSObject::allocatePropertyStorageInline(size_t oldSize, size_
m_externalStorage = newPropertyStorage;
}
-ALWAYS_INLINE void JSObject::markChildrenDirect(MarkStack& markStack)
-{
- JSCell::markChildren(markStack);
- m_structure->markAggregate(markStack);
-
- PropertyStorage storage = propertyStorage();
- size_t storageSize = m_structure->propertyStorageSize();
- markStack.appendValues(reinterpret_cast<JSValue*>(storage), storageSize);
-}
-
} // namespace JSC
#endif // JSObject_h
diff --git a/JavaScriptCore/runtime/JSString.h b/JavaScriptCore/runtime/JSString.h
index f9b0a8f..3daf58a 100644
--- a/JavaScriptCore/runtime/JSString.h
+++ b/JavaScriptCore/runtime/JSString.h
@@ -90,7 +90,7 @@ namespace JSC {
bool canGetIndex(unsigned i) { return i < static_cast<unsigned>(m_value.size()); }
JSString* getIndex(JSGlobalData*, unsigned);
- static PassRefPtr<Structure> createStructure(JSValue proto) { return Structure::create(proto, TypeInfo(StringType, NeedsThisConversion | HasDefaultMark)); }
+ static PassRefPtr<Structure> createStructure(JSValue proto) { return Structure::create(proto, TypeInfo(StringType, NeedsThisConversion)); }
private:
enum VPtrStealingHackType { VPtrStealingHack };
diff --git a/JavaScriptCore/runtime/JSType.h b/JavaScriptCore/runtime/JSType.h
index 882b218..a118b87 100644
--- a/JavaScriptCore/runtime/JSType.h
+++ b/JavaScriptCore/runtime/JSType.h
@@ -33,6 +33,7 @@ namespace JSC {
NumberType = 3,
NullType = 4,
StringType = 5,
+
// The CompoundType value must come before any JSType that may have children
CompoundType = 6,
ObjectType = 7,
diff --git a/JavaScriptCore/runtime/JSValue.h b/JavaScriptCore/runtime/JSValue.h
index b72cc6e..408c187 100644
--- a/JavaScriptCore/runtime/JSValue.h
+++ b/JavaScriptCore/runtime/JSValue.h
@@ -130,7 +130,7 @@ namespace JSC {
bool isString() const;
bool isGetterSetter() const;
bool isObject() const;
- bool inherits(const ClassInfo*) const;
+ bool isObject(const ClassInfo*) const;
// Extracting the value.
bool getBoolean(bool&) const;
diff --git a/JavaScriptCore/runtime/MarkStack.h b/JavaScriptCore/runtime/MarkStack.h
index a97aa7e..7a7b3af 100644
--- a/JavaScriptCore/runtime/MarkStack.h
+++ b/JavaScriptCore/runtime/MarkStack.h
@@ -31,15 +31,15 @@
#include <wtf/Noncopyable.h>
namespace JSC {
- class JSGlobalData;
class Register;
enum MarkSetProperties { MayContainNullValues, NoNullValues };
class MarkStack : Noncopyable {
public:
- MarkStack(void* jsArrayVPtr)
- : m_jsArrayVPtr(jsArrayVPtr)
+ MarkStack()
+ : m_markSets()
+ , m_values()
{
}
@@ -82,7 +82,6 @@ namespace JSC {
, m_end(end)
, m_properties(properties)
{
- ASSERT(values);
}
JSValue* m_values;
JSValue* m_end;
@@ -137,12 +136,6 @@ namespace JSC {
ASSERT(m_top);
return m_data[--m_top];
}
-
- inline T& last()
- {
- ASSERT(m_top);
- return m_data[m_top - 1];
- }
inline bool isEmpty()
{
@@ -157,14 +150,7 @@ namespace JSC {
ASSERT(0 == (size % MarkStack::pageSize()));
if (size == m_allocated)
return;
-#if PLATFORM(WIN)
- // We cannot release a part of a region with VirtualFree. To get around this,
- // we'll release the entire region and reallocate the size that we want.
- releaseStack(m_data, m_allocated);
- m_data = reinterpret_cast<T*>(allocateStack(size));
-#else
releaseStack(reinterpret_cast<char*>(m_data) + size, m_allocated - size);
-#endif
m_allocated = size;
m_capacity = m_allocated / sizeof(T);
}
@@ -176,7 +162,6 @@ namespace JSC {
T* m_data;
};
- void* m_jsArrayVPtr;
MarkStackArray<MarkSet> m_markSets;
MarkStackArray<JSCell*> m_values;
static size_t s_pageSize;
diff --git a/JavaScriptCore/runtime/MarkStackWin.cpp b/JavaScriptCore/runtime/MarkStackWin.cpp
index 1fdd06a..dbc3306 100644
--- a/JavaScriptCore/runtime/MarkStackWin.cpp
+++ b/JavaScriptCore/runtime/MarkStackWin.cpp
@@ -43,11 +43,9 @@ void* MarkStack::allocateStack(size_t size)
{
return VirtualAlloc(0, size, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
}
-void MarkStack::releaseStack(void* addr, size_t)
+void MarkStack::releaseStack(void* addr, size_t size)
{
- // According to http://msdn.microsoft.com/en-us/library/aa366892(VS.85).aspx,
- // dwSize must be 0 if dwFreeType is MEM_RELEASE.
- VirtualFree(addr, 0, MEM_RELEASE);
+ VirtualFree(addr, size, MEM_RELEASE);
}
}
diff --git a/JavaScriptCore/runtime/MathObject.h b/JavaScriptCore/runtime/MathObject.h
index 06aa54b..3557d1e 100644
--- a/JavaScriptCore/runtime/MathObject.h
+++ b/JavaScriptCore/runtime/MathObject.h
@@ -36,7 +36,7 @@ namespace JSC {
static PassRefPtr<Structure> createStructure(JSValue prototype)
{
- return Structure::create(prototype, TypeInfo(ObjectType, HasDefaultMark));
+ return Structure::create(prototype, TypeInfo(ObjectType));
}
};
diff --git a/JavaScriptCore/runtime/NumberConstructor.h b/JavaScriptCore/runtime/NumberConstructor.h
index 6e67840..b1224ec 100644
--- a/JavaScriptCore/runtime/NumberConstructor.h
+++ b/JavaScriptCore/runtime/NumberConstructor.h
@@ -38,7 +38,7 @@ namespace JSC {
static PassRefPtr<Structure> createStructure(JSValue proto)
{
- return Structure::create(proto, TypeInfo(ObjectType, ImplementsHasInstance | HasDefaultMark));
+ return Structure::create(proto, TypeInfo(ObjectType, ImplementsHasInstance));
}
enum { NaNValue, NegInfinity, PosInfinity, MaxValue, MinValue };
diff --git a/JavaScriptCore/runtime/NumberObject.h b/JavaScriptCore/runtime/NumberObject.h
index 07a013f..d354b9b 100644
--- a/JavaScriptCore/runtime/NumberObject.h
+++ b/JavaScriptCore/runtime/NumberObject.h
@@ -30,11 +30,6 @@ namespace JSC {
explicit NumberObject(PassRefPtr<Structure>);
static const ClassInfo info;
-
- static PassRefPtr<Structure> createStructure(JSValue prototype)
- {
- return Structure::create(prototype, TypeInfo(ObjectType, HasStandardGetOwnPropertySlot | HasDefaultMark));
- }
private:
virtual const ClassInfo* classInfo() const { return &info; }
diff --git a/JavaScriptCore/runtime/ObjectConstructor.cpp b/JavaScriptCore/runtime/ObjectConstructor.cpp
index b05b910..70c7cd1 100644
--- a/JavaScriptCore/runtime/ObjectConstructor.cpp
+++ b/JavaScriptCore/runtime/ObjectConstructor.cpp
@@ -21,7 +21,6 @@
#include "config.h"
#include "ObjectConstructor.h"
-#include "Error.h"
#include "JSFunction.h"
#include "JSGlobalObject.h"
#include "ObjectPrototype.h"
diff --git a/JavaScriptCore/runtime/PropertySlot.cpp b/JavaScriptCore/runtime/PropertySlot.cpp
index a0a2f48..36fa5d8 100644
--- a/JavaScriptCore/runtime/PropertySlot.cpp
+++ b/JavaScriptCore/runtime/PropertySlot.cpp
@@ -23,6 +23,7 @@
#include "JSFunction.h"
#include "JSGlobalObject.h"
+#include "JSObject.h"
namespace JSC {
@@ -38,7 +39,7 @@ JSValue PropertySlot::functionGetter(ExecState* exec, const Identifier&, const P
return callData.native.function(exec, slot.m_data.getterFunc, slot.slotBase(), exec->emptyList());
ASSERT(callType == CallTypeJS);
// FIXME: Can this be done more efficiently using the callData?
- return asFunction(slot.m_data.getterFunc)->call(exec, slot.slotBase(), exec->emptyList());
+ return static_cast<JSFunction*>(slot.m_data.getterFunc)->call(exec, slot.slotBase(), exec->emptyList());
}
} // namespace JSC
diff --git a/JavaScriptCore/runtime/RegExpConstructor.cpp b/JavaScriptCore/runtime/RegExpConstructor.cpp
index 62d56e9..6a8089d 100644
--- a/JavaScriptCore/runtime/RegExpConstructor.cpp
+++ b/JavaScriptCore/runtime/RegExpConstructor.cpp
@@ -23,7 +23,6 @@
#include "RegExpConstructor.h"
#include "ArrayPrototype.h"
-#include "Error.h"
#include "JSArray.h"
#include "JSFunction.h"
#include "JSString.h"
@@ -330,7 +329,7 @@ JSObject* constructRegExp(ExecState* exec, const ArgList& args)
JSValue arg0 = args.at(0);
JSValue arg1 = args.at(1);
- if (arg0.inherits(&RegExpObject::info)) {
+ if (arg0.isObject(&RegExpObject::info)) {
if (!arg1.isUndefined())
return throwError(exec, TypeError, "Cannot supply flags when constructing one RegExp from another.");
return asObject(arg0);
diff --git a/JavaScriptCore/runtime/RegExpConstructor.h b/JavaScriptCore/runtime/RegExpConstructor.h
index 30b9750..6823f3f 100644
--- a/JavaScriptCore/runtime/RegExpConstructor.h
+++ b/JavaScriptCore/runtime/RegExpConstructor.h
@@ -36,7 +36,7 @@ namespace JSC {
static PassRefPtr<Structure> createStructure(JSValue prototype)
{
- return Structure::create(prototype, TypeInfo(ObjectType, ImplementsHasInstance | HasDefaultMark));
+ return Structure::create(prototype, TypeInfo(ObjectType, ImplementsHasInstance));
}
virtual void put(ExecState*, const Identifier& propertyName, JSValue, PutPropertySlot&);
diff --git a/JavaScriptCore/runtime/RegExpObject.h b/JavaScriptCore/runtime/RegExpObject.h
index 5ca3b3f..e83e0ac 100644
--- a/JavaScriptCore/runtime/RegExpObject.h
+++ b/JavaScriptCore/runtime/RegExpObject.h
@@ -48,7 +48,7 @@ namespace JSC {
static PassRefPtr<Structure> createStructure(JSValue prototype)
{
- return Structure::create(prototype, TypeInfo(ObjectType, HasDefaultMark));
+ return Structure::create(prototype, TypeInfo(ObjectType));
}
private:
diff --git a/JavaScriptCore/runtime/RegExpPrototype.cpp b/JavaScriptCore/runtime/RegExpPrototype.cpp
index 30420e9..b1ab889 100644
--- a/JavaScriptCore/runtime/RegExpPrototype.cpp
+++ b/JavaScriptCore/runtime/RegExpPrototype.cpp
@@ -22,7 +22,6 @@
#include "RegExpPrototype.h"
#include "ArrayPrototype.h"
-#include "Error.h"
#include "JSArray.h"
#include "JSFunction.h"
#include "JSObject.h"
@@ -59,28 +58,28 @@ RegExpPrototype::RegExpPrototype(ExecState* exec, PassRefPtr<Structure> structur
JSValue JSC_HOST_CALL regExpProtoFuncTest(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- if (!thisValue.inherits(&RegExpObject::info))
+ if (!thisValue.isObject(&RegExpObject::info))
return throwError(exec, TypeError);
return asRegExpObject(thisValue)->test(exec, args);
}
JSValue JSC_HOST_CALL regExpProtoFuncExec(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- if (!thisValue.inherits(&RegExpObject::info))
+ if (!thisValue.isObject(&RegExpObject::info))
return throwError(exec, TypeError);
return asRegExpObject(thisValue)->exec(exec, args);
}
JSValue JSC_HOST_CALL regExpProtoFuncCompile(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- if (!thisValue.inherits(&RegExpObject::info))
+ if (!thisValue.isObject(&RegExpObject::info))
return throwError(exec, TypeError);
RefPtr<RegExp> regExp;
JSValue arg0 = args.at(0);
JSValue arg1 = args.at(1);
- if (arg0.inherits(&RegExpObject::info)) {
+ if (arg0.isObject(&RegExpObject::info)) {
if (!arg1.isUndefined())
return throwError(exec, TypeError, "Cannot supply flags when constructing one RegExp from another.");
regExp = asRegExpObject(arg0)->regExp();
@@ -100,8 +99,8 @@ JSValue JSC_HOST_CALL regExpProtoFuncCompile(ExecState* exec, JSObject*, JSValue
JSValue JSC_HOST_CALL regExpProtoFuncToString(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue.inherits(&RegExpObject::info)) {
- if (thisValue.inherits(&RegExpPrototype::info))
+ if (!thisValue.isObject(&RegExpObject::info)) {
+ if (thisValue.isObject(&RegExpPrototype::info))
return jsNontrivialString(exec, "//");
return throwError(exec, TypeError);
}
diff --git a/JavaScriptCore/runtime/ScopeChain.cpp b/JavaScriptCore/runtime/ScopeChain.cpp
index 960c525..5c2edab 100644
--- a/JavaScriptCore/runtime/ScopeChain.cpp
+++ b/JavaScriptCore/runtime/ScopeChain.cpp
@@ -56,7 +56,7 @@ int ScopeChain::localDepth() const
int scopeDepth = 0;
ScopeChainIterator iter = this->begin();
ScopeChainIterator end = this->end();
- while (!(*iter)->inherits(&JSActivation::info)) {
+ while (!(*iter)->isObject(&JSActivation::info)) {
++iter;
if (iter == end)
break;
diff --git a/JavaScriptCore/runtime/StringObjectThatMasqueradesAsUndefined.h b/JavaScriptCore/runtime/StringObjectThatMasqueradesAsUndefined.h
index 1d2e03f..bc5c0a5 100644
--- a/JavaScriptCore/runtime/StringObjectThatMasqueradesAsUndefined.h
+++ b/JavaScriptCore/runtime/StringObjectThatMasqueradesAsUndefined.h
@@ -44,7 +44,7 @@ namespace JSC {
static PassRefPtr<Structure> createStructure(JSValue proto)
{
- return Structure::create(proto, TypeInfo(ObjectType, MasqueradesAsUndefined | HasDefaultMark));
+ return Structure::create(proto, TypeInfo(ObjectType, MasqueradesAsUndefined));
}
virtual bool toBoolean(ExecState*) const { return false; }
diff --git a/JavaScriptCore/runtime/StringPrototype.cpp b/JavaScriptCore/runtime/StringPrototype.cpp
index b4f7634..531a302 100644
--- a/JavaScriptCore/runtime/StringPrototype.cpp
+++ b/JavaScriptCore/runtime/StringPrototype.cpp
@@ -23,7 +23,6 @@
#include "StringPrototype.h"
#include "CachedCall.h"
-#include "Error.h"
#include "JSArray.h"
#include "JSFunction.h"
#include "ObjectPrototype.h"
@@ -221,7 +220,7 @@ JSValue JSC_HOST_CALL stringProtoFuncReplace(ExecState* exec, JSObject*, JSValue
if (callType == CallTypeNone)
replacementString = replacement.toString(exec);
- if (pattern.inherits(&RegExpObject::info)) {
+ if (pattern.isObject(&RegExpObject::info)) {
RegExp* reg = asRegExpObject(pattern)->regExp();
bool global = reg->global();
@@ -366,7 +365,7 @@ JSValue JSC_HOST_CALL stringProtoFuncToString(ExecState* exec, JSObject*, JSValu
if (thisValue.isString())
return thisValue;
- if (thisValue.inherits(&StringObject::info))
+ if (thisValue.isObject(&StringObject::info))
return asStringObject(thisValue)->internalValue();
return throwError(exec, TypeError);
@@ -467,7 +466,7 @@ JSValue JSC_HOST_CALL stringProtoFuncMatch(ExecState* exec, JSObject*, JSValue t
UString u = s;
RefPtr<RegExp> reg;
RegExpObject* imp = 0;
- if (a0.inherits(&RegExpObject::info))
+ if (a0.isObject(&RegExpObject::info))
reg = asRegExpObject(a0)->regExp();
else {
/*
@@ -517,7 +516,7 @@ JSValue JSC_HOST_CALL stringProtoFuncSearch(ExecState* exec, JSObject*, JSValue
UString u = s;
RefPtr<RegExp> reg;
- if (a0.inherits(&RegExpObject::info))
+ if (a0.isObject(&RegExpObject::info))
reg = asRegExpObject(a0)->regExp();
else {
/*
@@ -569,7 +568,7 @@ JSValue JSC_HOST_CALL stringProtoFuncSplit(ExecState* exec, JSObject*, JSValue t
unsigned i = 0;
int p0 = 0;
unsigned limit = a1.isUndefined() ? 0xFFFFFFFFU : a1.toUInt32(exec);
- if (a0.inherits(&RegExpObject::info)) {
+ if (a0.isObject(&RegExpObject::info)) {
RegExp* reg = asRegExpObject(a0)->regExp();
if (s.isEmpty() && reg->match(s, 0) >= 0) {
// empty string matched by regexp -> empty array
@@ -822,8 +821,8 @@ JSValue JSC_HOST_CALL stringProtoFuncFontsize(ExecState* exec, JSObject*, JSValu
if (a0.getUInt32(smallInteger) && smallInteger <= 9) {
unsigned stringSize = s.size();
unsigned bufferSize = 22 + stringSize;
- UChar* buffer;
- if (!tryFastMalloc(bufferSize * sizeof(UChar)).getValue(buffer))
+ UChar* buffer = static_cast<UChar*>(tryFastMalloc(bufferSize * sizeof(UChar)));
+ if (!buffer)
return jsUndefined();
buffer[0] = '<';
buffer[1] = 'f';
@@ -870,8 +869,8 @@ JSValue JSC_HOST_CALL stringProtoFuncLink(ExecState* exec, JSObject*, JSValue th
unsigned linkTextSize = linkText.size();
unsigned stringSize = s.size();
unsigned bufferSize = 15 + linkTextSize + stringSize;
- UChar* buffer;
- if (!tryFastMalloc(bufferSize * sizeof(UChar)).getValue(buffer))
+ UChar* buffer = static_cast<UChar*>(tryFastMalloc(bufferSize * sizeof(UChar)));
+ if (!buffer)
return jsUndefined();
buffer[0] = '<';
buffer[1] = 'a';
diff --git a/JavaScriptCore/runtime/TypeInfo.h b/JavaScriptCore/runtime/TypeInfo.h
index 20c13ea..70aeed3 100644
--- a/JavaScriptCore/runtime/TypeInfo.h
+++ b/JavaScriptCore/runtime/TypeInfo.h
@@ -38,7 +38,6 @@ namespace JSC {
static const unsigned ImplementsDefaultHasInstance = 1 << 3;
static const unsigned NeedsThisConversion = 1 << 4;
static const unsigned HasStandardGetOwnPropertySlot = 1 << 5;
- static const unsigned HasDefaultMark = 1 << 6;
class TypeInfo {
friend class JIT;
@@ -60,7 +59,7 @@ namespace JSC {
bool overridesHasInstance() const { return m_flags & OverridesHasInstance; }
bool needsThisConversion() const { return m_flags & NeedsThisConversion; }
bool hasStandardGetOwnPropertySlot() const { return m_flags & HasStandardGetOwnPropertySlot; }
- bool hasDefaultMark() const { return m_flags & HasDefaultMark; }
+
unsigned flags() const { return m_flags; }
private:
diff --git a/JavaScriptCore/runtime/UString.cpp b/JavaScriptCore/runtime/UString.cpp
index 9977f12..118751e 100644
--- a/JavaScriptCore/runtime/UString.cpp
+++ b/JavaScriptCore/runtime/UString.cpp
@@ -32,14 +32,12 @@
#include <ctype.h>
#include <float.h>
#include <limits.h>
-#include <limits>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <wtf/ASCIICType.h>
#include <wtf/Assertions.h>
#include <wtf/MathExtras.h>
-#include <wtf/StringExtras.h>
#include <wtf/Vector.h>
#include <wtf/unicode/UTF8.h>
@@ -70,20 +68,20 @@ static const int minLengthToShare = 10;
static inline size_t overflowIndicator() { return std::numeric_limits<size_t>::max(); }
static inline size_t maxUChars() { return std::numeric_limits<size_t>::max() / sizeof(UChar); }
-static inline PossiblyNull<UChar*> allocChars(size_t length)
+static inline UChar* allocChars(size_t length)
{
ASSERT(length);
if (length > maxUChars())
return 0;
- return tryFastMalloc(sizeof(UChar) * length);
+ return static_cast<UChar*>(tryFastMalloc(sizeof(UChar) * length));
}
-static inline PossiblyNull<UChar*> reallocChars(UChar* buffer, size_t length)
+static inline UChar* reallocChars(UChar* buffer, size_t length)
{
ASSERT(length);
if (length > maxUChars())
return 0;
- return tryFastRealloc(buffer, sizeof(UChar) * length);
+ return static_cast<UChar*>(tryFastRealloc(buffer, sizeof(UChar) * length));
}
static inline void copyChars(UChar* destination, const UChar* source, unsigned numCharacters)
@@ -482,7 +480,8 @@ static inline bool expandCapacity(UString::Rep* rep, int requiredLength)
if (requiredLength > base->capacity) {
size_t newCapacity = expandedSize(requiredLength, base->preCapacity);
UChar* oldBuf = base->buf;
- if (!reallocChars(base->buf, newCapacity).getValue(base->buf)) {
+ base->buf = reallocChars(base->buf, newCapacity);
+ if (!base->buf) {
base->buf = oldBuf;
return false;
}
@@ -513,7 +512,8 @@ bool UString::Rep::reserveCapacity(int capacity)
size_t newCapacity = expandedSize(capacity, base->preCapacity);
UChar* oldBuf = base->buf;
- if (!reallocChars(base->buf, newCapacity).getValue(base->buf)) {
+ base->buf = reallocChars(base->buf, newCapacity);
+ if (!base->buf) {
base->buf = oldBuf;
return false;
}
@@ -540,8 +540,8 @@ void UString::expandPreCapacity(int requiredPreCap)
size_t newCapacity = expandedSize(requiredPreCap, base->capacity);
int delta = newCapacity - base->capacity - base->preCapacity;
- UChar* newBuf;
- if (!allocChars(newCapacity).getValue(newBuf)) {
+ UChar* newBuf = allocChars(newCapacity);
+ if (!newBuf) {
makeNull();
return;
}
@@ -566,8 +566,8 @@ static PassRefPtr<UString::Rep> createRep(const char* c)
return &UString::Rep::empty();
size_t length = strlen(c);
- UChar* d;
- if (!allocChars(length).getValue(d))
+ UChar* d = allocChars(length);
+ if (!d)
return &UString::Rep::null();
else {
for (size_t i = 0; i < length; i++)
@@ -656,8 +656,8 @@ static ALWAYS_INLINE PassRefPtr<UString::Rep> concatenate(PassRefPtr<UString::Re
} else {
// This is shared in some way that prevents us from modifying base, so we must make a whole new string.
size_t newCapacity = expandedSize(length, 0);
- UChar* d;
- if (!allocChars(newCapacity).getValue(d))
+ UChar* d = allocChars(newCapacity);
+ if (!d)
rep = &UString::Rep::null();
else {
copyChars(d, rep->data(), thisSize);
@@ -712,8 +712,8 @@ static ALWAYS_INLINE PassRefPtr<UString::Rep> concatenate(PassRefPtr<UString::Re
} else {
// This is shared in some way that prevents us from modifying base, so we must make a whole new string.
size_t newCapacity = expandedSize(length, 0);
- UChar* d;
- if (!allocChars(newCapacity).getValue(d))
+ UChar* d = allocChars(newCapacity);
+ if (!d)
rep = &UString::Rep::null();
else {
copyChars(d, rep->data(), thisSize);
@@ -800,8 +800,8 @@ PassRefPtr<UString::Rep> concatenate(UString::Rep* a, UString::Rep* b)
// a does not qualify for append, and b does not qualify for prepend, gotta make a whole new string
size_t newCapacity = expandedSize(length, 0);
- UChar* d;
- if (!allocChars(newCapacity).getValue(d))
+ UChar* d = allocChars(newCapacity);
+ if (!d)
return 0;
copyChars(d, a->data(), aSize);
copyChars(d + aSize, b->data(), bSize);
@@ -942,39 +942,6 @@ UString UString::from(int i)
return UString(p, static_cast<int>(end - p));
}
-UString UString::from(long long i)
-{
- UChar buf[1 + sizeof(i) * 3];
- UChar* end = buf + sizeof(buf) / sizeof(UChar);
- UChar* p = end;
-
- if (i == 0)
- *--p = '0';
- else if (i == std::numeric_limits<long long>::min()) {
- char minBuf[1 + sizeof(i) * 3];
-#if PLATFORM(WIN_OS)
- snprintf(minBuf, sizeof(minBuf) - 1, "%I64d", std::numeric_limits<long long>::min());
-#else
- snprintf(minBuf, sizeof(minBuf) - 1, "%lld", std::numeric_limits<long long>::min());
-#endif
- return UString(minBuf);
- } else {
- bool negative = false;
- if (i < 0) {
- negative = true;
- i = -i;
- }
- while (i) {
- *--p = static_cast<unsigned short>((i % 10) + '0');
- i /= 10;
- }
- if (negative)
- *--p = '-';
- }
-
- return UString(p, static_cast<int>(end - p));
-}
-
UString UString::from(unsigned int u)
{
UChar buf[sizeof(u) * 3];
@@ -1109,8 +1076,8 @@ UString UString::spliceSubstringsWithSeparators(const Range* substringRanges, in
if (totalLength == 0)
return "";
- UChar* buffer;
- if (!allocChars(totalLength).getValue(buffer))
+ UChar* buffer = allocChars(totalLength);
+ if (!buffer)
return null();
int maxCount = max(rangeCount, separatorCount);
@@ -1138,8 +1105,8 @@ UString UString::replaceRange(int rangeStart, int rangeLength, const UString& re
if (totalLength == 0)
return "";
- UChar* buffer;
- if (!allocChars(totalLength).getValue(buffer))
+ UChar* buffer = allocChars(totalLength);
+ if (!buffer)
return null();
copyChars(buffer, data(), rangeStart);
@@ -1186,8 +1153,8 @@ UString& UString::append(const UString &t)
} else {
// This is shared in some way that prevents us from modifying base, so we must make a whole new string.
size_t newCapacity = expandedSize(length, 0);
- UChar* d;
- if (!allocChars(newCapacity).getValue(d))
+ UChar* d = allocChars(newCapacity);
+ if (!d)
makeNull();
else {
copyChars(d, data(), thisSize);
@@ -1239,8 +1206,8 @@ UString& UString::append(UChar c)
if (length == 0) {
// this is empty - must make a new m_rep because we don't want to pollute the shared empty one
size_t newCapacity = expandedSize(1, 0);
- UChar* d;
- if (!allocChars(newCapacity).getValue(d))
+ UChar* d = allocChars(newCapacity);
+ if (!d)
makeNull();
else {
d[0] = c;
@@ -1267,8 +1234,8 @@ UString& UString::append(UChar c)
} else {
// This is shared in some way that prevents us from modifying base, so we must make a whole new string.
size_t newCapacity = expandedSize(length + 1, 0);
- UChar* d;
- if (!allocChars(newCapacity).getValue(d))
+ UChar* d = allocChars(newCapacity);
+ if (!d)
makeNull();
else {
copyChars(d, data(), length);
@@ -1346,7 +1313,8 @@ UString& UString::operator=(const char* c)
m_rep->_hash = 0;
m_rep->len = l;
} else {
- if (!allocChars(l).getValue(d)) {
+ d = allocChars(l);
+ if (!d) {
makeNull();
return *this;
}
diff --git a/JavaScriptCore/runtime/UString.h b/JavaScriptCore/runtime/UString.h
index 2dbca1f..d01b75d 100644
--- a/JavaScriptCore/runtime/UString.h
+++ b/JavaScriptCore/runtime/UString.h
@@ -91,8 +91,7 @@ namespace JSC {
{
// Guard against integer overflow
if (size < (std::numeric_limits<size_t>::max() / sizeof(UChar))) {
- void* buf = 0;
- if (tryFastMalloc(size * sizeof(UChar)).getValue(buf))
+ if (void * buf = tryFastMalloc(size * sizeof(UChar)))
return adoptRef(new BaseString(static_cast<UChar*>(buf), 0, size));
}
return adoptRef(new BaseString(0, 0, 0));
@@ -257,7 +256,6 @@ namespace JSC {
}
static UString from(int);
- static UString from(long long);
static UString from(unsigned int);
static UString from(long);
static UString from(double);
diff --git a/JavaScriptCore/wtf/FastMalloc.cpp b/JavaScriptCore/wtf/FastMalloc.cpp
index afa48e9..c14b755 100644
--- a/JavaScriptCore/wtf/FastMalloc.cpp
+++ b/JavaScriptCore/wtf/FastMalloc.cpp
@@ -178,10 +178,10 @@ void* fastZeroedMalloc(size_t n)
return result;
}
-TryMallocReturnValue tryFastZeroedMalloc(size_t n)
+void* tryFastZeroedMalloc(size_t n)
{
- void* result;
- if (!tryFastMalloc(n).getValue(result))
+ void* result = tryFastMalloc(n);
+ if (!result)
return 0;
memset(result, 0, n);
return result;
@@ -200,7 +200,7 @@ TryMallocReturnValue tryFastZeroedMalloc(size_t n)
namespace WTF {
-TryMallocReturnValue tryFastMalloc(size_t n)
+void* tryFastMalloc(size_t n)
{
ASSERT(!isForbidden());
@@ -226,9 +226,7 @@ void* fastMalloc(size_t n)
ASSERT(!isForbidden());
#if ENABLE(FAST_MALLOC_MATCH_VALIDATION)
- TryMallocReturnValue returnValue = tryFastMalloc(n);
- void* result;
- returnValue.getValue(result);
+ void* result = tryFastMalloc(n);
#else
void* result = malloc(n);
#endif
@@ -238,7 +236,7 @@ void* fastMalloc(size_t n)
return result;
}
-TryMallocReturnValue tryFastCalloc(size_t n_elements, size_t element_size)
+void* tryFastCalloc(size_t n_elements, size_t element_size)
{
ASSERT(!isForbidden());
@@ -266,9 +264,7 @@ void* fastCalloc(size_t n_elements, size_t element_size)
ASSERT(!isForbidden());
#if ENABLE(FAST_MALLOC_MATCH_VALIDATION)
- TryMallocReturnValue returnValue = tryFastCalloc(n_elements, element_size);
- void* result;
- returnValue.getValue(result);
+ void* result = tryFastCalloc(n_elements, element_size);
#else
void* result = calloc(n_elements, element_size);
#endif
@@ -295,7 +291,7 @@ void fastFree(void* p)
#endif
}
-TryMallocReturnValue tryFastRealloc(void* p, size_t n)
+void* tryFastRealloc(void* p, size_t n)
{
ASSERT(!isForbidden());
@@ -327,9 +323,7 @@ void* fastRealloc(void* p, size_t n)
ASSERT(!isForbidden());
#if ENABLE(FAST_MALLOC_MATCH_VALIDATION)
- TryMallocReturnValue returnValue = tryFastRealloc(p, n);
- void* result;
- returnValue.getValue(result);
+ void* result = tryFastRealloc(p, n);
#else
void* result = realloc(p, n);
#endif
@@ -3582,7 +3576,7 @@ void* fastMalloc(size_t size)
return malloc<true>(size);
}
-TryMallocReturnValue tryFastMalloc(size_t size)
+void* tryFastMalloc(size_t size)
{
return malloc<false>(size);
}
@@ -3643,7 +3637,7 @@ void* fastCalloc(size_t n, size_t elem_size)
return calloc<true>(n, elem_size);
}
-TryMallocReturnValue tryFastCalloc(size_t n, size_t elem_size)
+void* tryFastCalloc(size_t n, size_t elem_size)
{
return calloc<false>(n, elem_size);
}
@@ -3707,7 +3701,7 @@ void* fastRealloc(void* old_ptr, size_t new_size)
return realloc<true>(old_ptr, new_size);
}
-TryMallocReturnValue tryFastRealloc(void* old_ptr, size_t new_size)
+void* tryFastRealloc(void* old_ptr, size_t new_size)
{
return realloc<false>(old_ptr, new_size);
}
diff --git a/JavaScriptCore/wtf/FastMalloc.h b/JavaScriptCore/wtf/FastMalloc.h
index b23e7b0..787251f 100644
--- a/JavaScriptCore/wtf/FastMalloc.h
+++ b/JavaScriptCore/wtf/FastMalloc.h
@@ -22,7 +22,6 @@
#define WTF_FastMalloc_h
#include "Platform.h"
-#include "PossiblyNull.h"
#include <stdlib.h>
#include <new>
@@ -34,42 +33,11 @@ namespace WTF {
void* fastCalloc(size_t numElements, size_t elementSize);
void* fastRealloc(void*, size_t);
- struct TryMallocReturnValue {
- TryMallocReturnValue(void* data)
- : m_data(data)
- {
- }
- TryMallocReturnValue(const TryMallocReturnValue& source)
- : m_data(source.m_data)
- {
- source.m_data = 0;
- }
- ~TryMallocReturnValue() { ASSERT(!m_data); }
- template <typename T> bool getValue(T& data) WARN_UNUSED_RETURN;
- template <typename T> operator PossiblyNull<T>()
- {
- T value;
- getValue(value);
- return PossiblyNull<T>(value);
- }
- private:
- mutable void* m_data;
- };
-
- template <typename T> bool TryMallocReturnValue::getValue(T& data)
- {
- union u { void* data; T target; } res;
- res.data = m_data;
- data = res.target;
- bool returnValue = !!m_data;
- m_data = 0;
- return returnValue;
- }
-
- TryMallocReturnValue tryFastMalloc(size_t n);
- TryMallocReturnValue tryFastZeroedMalloc(size_t n);
- TryMallocReturnValue tryFastCalloc(size_t n_elements, size_t element_size);
- TryMallocReturnValue tryFastRealloc(void* p, size_t n);
+ // These functions return 0 if an allocation fails.
+ void* tryFastMalloc(size_t);
+ void* tryFastZeroedMalloc(size_t);
+ void* tryFastCalloc(size_t numElements, size_t elementSize);
+ void* tryFastRealloc(void*, size_t);
void fastFree(void*);
diff --git a/JavaScriptCore/wtf/Platform.h b/JavaScriptCore/wtf/Platform.h
index c431629..845684e 100644
--- a/JavaScriptCore/wtf/Platform.h
+++ b/JavaScriptCore/wtf/Platform.h
@@ -108,13 +108,6 @@
#define WTF_PLATFORM_NETBSD 1
#endif
-/* PLATFORM(QNX) */
-/* Operating system level dependencies for QNX that should be used */
-/* regardless of operating environment */
-#if defined(__QNXNTO__)
-#define WTF_PLATFORM_QNX 1
-#endif
-
/* PLATFORM(UNIX) */
/* Operating system level dependencies for Unix-like systems that */
/* should be used regardless of operating environment */
@@ -125,9 +118,7 @@
|| defined(unix) \
|| defined(__unix) \
|| defined(__unix__) \
- || defined(_AIX) \
- || defined(__HAIKU__) \
- || defined(__QNXNTO__)
+ || defined(_AIX)
#define WTF_PLATFORM_UNIX 1
#endif
@@ -152,8 +143,6 @@
#define WTF_PLATFORM_WX 1
#elif defined(BUILDING_GTK__)
#define WTF_PLATFORM_GTK 1
-#elif defined(BUILDING_HAIKU__)
-#define WTF_PLATFORM_HAIKU 1
#elif PLATFORM(DARWIN)
#define WTF_PLATFORM_MAC 1
#elif PLATFORM(WIN_OS)
@@ -200,7 +189,7 @@
/* Makes PLATFORM(WIN) default to PLATFORM(CAIRO) */
/* FIXME: This should be changed from a blacklist to a whitelist */
-#if !PLATFORM(MAC) && !PLATFORM(QT) && !PLATFORM(WX) && !PLATFORM(CHROMIUM) && !PLATFORM(WINCE) && !PLATFORM(HAIKU)
+#if !PLATFORM(MAC) && !PLATFORM(QT) && !PLATFORM(WX) && !PLATFORM(CHROMIUM) && !PLATFORM(WINCE)
#define WTF_PLATFORM_CAIRO 1
#endif
@@ -466,14 +455,6 @@
#endif
#endif
-#if PLATFORM(HAIKU)
-#define HAVE_POSIX_MEMALIGN 1
-#define WTF_USE_CURL 1
-#define WTF_USE_PTHREADS 1
-#define USE_SYSTEM_MALLOC 1
-#define ENABLE_NETSCAPE_PLUGIN_API 0
-#endif
-
#if !defined(HAVE_ACCESSIBILITY)
#if PLATFORM(IPHONE) || PLATFORM(MAC) || PLATFORM(WIN) || PLATFORM(GTK) || PLATFORM(CHROMIUM)
#define HAVE_ACCESSIBILITY 1
@@ -484,9 +465,7 @@
#define HAVE_SIGNAL_H 1
#endif
-#if !PLATFORM(WIN_OS) && !PLATFORM(SOLARIS) && !PLATFORM(QNX) \
- && !PLATFORM(SYMBIAN) && !PLATFORM(HAIKU) && !COMPILER(RVCT) \
- && !PLATFORM(ANDROID)
+#if !PLATFORM(WIN_OS) && !PLATFORM(SOLARIS) && !PLATFORM(SYMBIAN) && !COMPILER(RVCT) && !PLATFORM(ANDROID)
#define HAVE_TM_GMTOFF 1
#define HAVE_TM_ZONE 1
#define HAVE_TIMEGM 1
@@ -546,24 +525,12 @@
#define HAVE_SYS_PARAM_H 1
#define HAVE_SYS_TIME_H 1
-#elif PLATFORM(QNX)
-
-#define HAVE_ERRNO_H 1
-#define HAVE_MMAP 1
-#define HAVE_SBRK 1
-#define HAVE_STRINGS_H 1
-#define HAVE_SYS_PARAM_H 1
-#define HAVE_SYS_TIME_H 1
-
#else
/* FIXME: is this actually used or do other platforms generate their own config.h? */
#define HAVE_ERRNO_H 1
-/* As long as Haiku doesn't have a complete support of locale this will be disabled. */
-#if !PLATFORM(HAIKU)
#define HAVE_LANGINFO_H 1
-#endif
#define HAVE_MMAP 1
#define HAVE_SBRK 1
#define HAVE_STRINGS_H 1
@@ -627,10 +594,6 @@
#define ENABLE_GEOLOCATION 0
#endif
-#if !defined(ENABLE_NOTIFICATIONS)
-#define ENABLE_NOTIFICATIONS 0
-#endif
-
#if !defined(ENABLE_TEXT_CARET)
#define ENABLE_TEXT_CARET 1
#endif
@@ -645,9 +608,9 @@
#endif
#if !defined(WTF_USE_JSVALUE64) && !defined(WTF_USE_JSVALUE32) && !defined(WTF_USE_JSVALUE32_64)
-#if PLATFORM(X86_64) && (PLATFORM(MAC) || PLATFORM(LINUX))
+#if PLATFORM(X86_64) && (PLATFORM(MAC) || (PLATFORM(LINUX) && !PLATFORM(QT)))
#define WTF_USE_JSVALUE64 1
-#elif PLATFORM(ARM) || PLATFORM(PPC64)
+#elif PLATFORM(PPC64) || PLATFORM(QT) /* All Qt layout tests crash in JSVALUE32_64 mode. */
#define WTF_USE_JSVALUE32 1
#else
#define WTF_USE_JSVALUE32_64 1
@@ -676,20 +639,18 @@
#define ENABLE_JIT 1
#endif
-#if PLATFORM(QT)
-#if PLATFORM(X86) && PLATFORM(WIN_OS) && COMPILER(MINGW) && GCC_VERSION >= 40100
+#if PLATFORM(X86) && PLATFORM(QT)
+#if PLATFORM(WIN_OS) && COMPILER(MINGW) && GCC_VERSION >= 40100
#define ENABLE_JIT 1
#define WTF_USE_JIT_STUB_ARGUMENT_VA_LIST 1
-#elif PLATFORM(X86) && PLATFORM(WIN_OS) && COMPILER(MSVC)
+#elif PLATFORM(WIN_OS) && COMPILER(MSVC)
#define ENABLE_JIT 1
#define WTF_USE_JIT_STUB_ARGUMENT_REGISTER 1
-#elif PLATFORM(X86) && PLATFORM(LINUX) && GCC_VERSION >= 40100
+#elif PLATFORM(LINUX) && GCC_VERSION >= 40100
#define ENABLE_JIT 1
#define WTF_USE_JIT_STUB_ARGUMENT_VA_LIST 1
-#elif PLATFORM(ARM) && !PLATFORM_ARM_ARCH(7) && PLATFORM(LINUX)
- #define ENABLE_JIT 1
#endif
-#endif /* PLATFORM(QT) */
+#endif /* PLATFORM(QT) && PLATFORM(X86) */
#endif /* !defined(ENABLE_JIT) */
@@ -739,11 +700,10 @@
#define ENABLE_YARR_JIT 1
#endif
-#if PLATFORM(QT)
-#if (PLATFORM(X86) && PLATFORM(WIN_OS) && COMPILER(MINGW) && GCC_VERSION >= 40100) \
- || (PLATFORM(X86) && PLATFORM(WIN_OS) && COMPILER(MSVC)) \
- || (PLATFORM(X86) && PLATFORM(LINUX) && GCC_VERSION >= 40100) \
- || (PLATFORM(ARM) && !PLATFORM_ARM_ARCH(7) && PLATFORM(LINUX))
+#if PLATFORM(X86) && PLATFORM(QT)
+#if (PLATFORM(WIN_OS) && COMPILER(MINGW) && GCC_VERSION >= 40100) \
+ || (PLATFORM(WIN_OS) && COMPILER(MSVC)) \
+ || (PLATFORM(LINUX) && GCC_VERSION >= 40100)
#define ENABLE_YARR 1
#define ENABLE_YARR_JIT 1
#endif
@@ -797,10 +757,4 @@
#define WTF_USE_ACCELERATED_COMPOSITING 1
#endif
-#if COMPILER(GCC)
-#define WARN_UNUSED_RETURN __attribute__ ((warn_unused_result))
-#else
-#define WARN_UNUSED_RETURN
-#endif
-
#endif /* WTF_Platform_h */
diff --git a/JavaScriptCore/wtf/PossiblyNull.h b/JavaScriptCore/wtf/PossiblyNull.h
deleted file mode 100644
index 79c4d82..0000000
--- a/JavaScriptCore/wtf/PossiblyNull.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * 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.
- */
-
-#ifndef PossiblyNull_h
-#define PossiblyNull_h
-
-#include "Assertions.h"
-
-namespace WTF {
-
-template <typename T> struct PossiblyNull {
- PossiblyNull(T data)
- : m_data(data)
- {
- }
- PossiblyNull(const PossiblyNull<T>& source)
- : m_data(source.m_data)
- {
- source.m_data = 0;
- }
- ~PossiblyNull() { ASSERT(!m_data); }
- bool getValue(T& out) WARN_UNUSED_RETURN;
-private:
- mutable T m_data;
-};
-
-template <typename T> bool PossiblyNull<T>::getValue(T& out)
-{
- out = m_data;
- bool result = !!m_data;
- m_data = 0;
- return result;
-}
-
-}
-
-#endif
diff --git a/JavaScriptCore/wtf/SegmentedVector.h b/JavaScriptCore/wtf/SegmentedVector.h
index b1cbc4d..065c19c 100644
--- a/JavaScriptCore/wtf/SegmentedVector.h
+++ b/JavaScriptCore/wtf/SegmentedVector.h
@@ -116,7 +116,6 @@ namespace WTF {
}
size_t size() const { return m_size; }
- bool isEmpty() const { return !size(); }
T& at(size_t index)
{
@@ -250,6 +249,4 @@ namespace WTF {
} // namespace WTF
-using WTF::SegmentedVector;
-
#endif // SegmentedVector_h
diff --git a/JavaScriptCore/wtf/haiku/MainThreadHaiku.cpp b/JavaScriptCore/wtf/haiku/MainThreadHaiku.cpp
index 10c4248..4fd7b35 100644
--- a/JavaScriptCore/wtf/haiku/MainThreadHaiku.cpp
+++ b/JavaScriptCore/wtf/haiku/MainThreadHaiku.cpp
@@ -30,7 +30,6 @@
#include "config.h"
#include "MainThread.h"
-#include "NotImplemented.h"
namespace WTF {
diff --git a/JavaScriptCore/yarr/RegexInterpreter.cpp b/JavaScriptCore/yarr/RegexInterpreter.cpp
index aafea3c..b0aae65 100644
--- a/JavaScriptCore/yarr/RegexInterpreter.cpp
+++ b/JavaScriptCore/yarr/RegexInterpreter.cpp
@@ -20,7 +20,7 @@
* 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.
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "config.h"
@@ -90,7 +90,7 @@ public:
: term(0)
{
}
-
+
void* operator new(size_t, void* where)
{
return where;
@@ -124,7 +124,7 @@ public:
subpatternBackup[i] = output[(firstSubpatternId << 1) + i];
output[(firstSubpatternId << 1) + i] = -1;
}
-
+
new(getDisjunctionContext(term)) DisjunctionContext();
}
@@ -138,7 +138,7 @@ public:
for (unsigned i = 0; i < (numNestedSubpatterns << 1); ++i)
output[(firstSubpatternId << 1) + i] = subpatternBackup[i];
}
-
+
DisjunctionContext* getDisjunctionContext(ByteTerm& term)
{
return reinterpret_cast<DisjunctionContext*>(&(subpatternBackup[term.atom.parenthesesDisjunction->m_numSubpatterns << 1]));
@@ -208,7 +208,7 @@ public:
return input[pos - 1];
return -1;
}
-
+
unsigned getPos()
{
return pos;
@@ -218,7 +218,7 @@ public:
{
pos = p;
}
-
+
bool atStart()
{
return pos == 0;
@@ -284,7 +284,7 @@ public:
{
if (input.atEnd())
return false;
-
+
int ch = input.read();
if (pattern->m_ignoreCase ? ((Unicode::toLower(testChar) == ch) || (Unicode::toUpper(testChar) == ch)) : (testChar == ch)) {
@@ -341,7 +341,7 @@ public:
return false;
}
}
-
+
return true;
}
@@ -606,10 +606,10 @@ public:
if (matchDisjunction(term.atom.parenthesesDisjunction, context->getDisjunctionContext(term), true))
return true;
-
+
resetMatches(term, context);
- popParenthesesDisjunctionContext(backTrack);
freeParenthesesDisjunctionContext(context);
+ popParenthesesDisjunctionContext(backTrack);
}
return false;
@@ -910,8 +910,8 @@ public:
}
} else {
resetMatches(term, context);
- popParenthesesDisjunctionContext(backTrack);
freeParenthesesDisjunctionContext(context);
+ popParenthesesDisjunctionContext(backTrack);
}
if (backTrack->matchAmount) {
@@ -946,11 +946,11 @@ public:
}
return true;
}
-
+
// pop a match off the stack
resetMatches(term, context);
- popParenthesesDisjunctionContext(backTrack);
freeParenthesesDisjunctionContext(context);
+ popParenthesesDisjunctionContext(backTrack);
}
return false;
@@ -1266,37 +1266,37 @@ public:
ByteCompiler(RegexPattern& pattern)
: m_pattern(pattern)
{
- m_bodyDisjunction = 0;
- m_currentAlternativeIndex = 0;
+ bodyDisjunction = 0;
+ currentAlternativeIndex = 0;
}
-
+
BytecodePattern* compile()
{
regexBegin(m_pattern.m_numSubpatterns, m_pattern.m_body->m_callFrameSize);
emitDisjunction(m_pattern.m_body);
regexEnd();
- return new BytecodePattern(m_bodyDisjunction, m_allParenthesesInfo, m_pattern);
+ return new BytecodePattern(bodyDisjunction, m_allParenthesesInfo, m_pattern);
}
-
+
void checkInput(unsigned count)
{
- m_bodyDisjunction->terms.append(ByteTerm::CheckInput(count));
+ bodyDisjunction->terms.append(ByteTerm::CheckInput(count));
}
void assertionBOL(int inputPosition)
{
- m_bodyDisjunction->terms.append(ByteTerm::BOL(inputPosition));
+ bodyDisjunction->terms.append(ByteTerm::BOL(inputPosition));
}
void assertionEOL(int inputPosition)
{
- m_bodyDisjunction->terms.append(ByteTerm::EOL(inputPosition));
+ bodyDisjunction->terms.append(ByteTerm::EOL(inputPosition));
}
void assertionWordBoundary(bool invert, int inputPosition)
{
- m_bodyDisjunction->terms.append(ByteTerm::WordBoundary(invert, inputPosition));
+ bodyDisjunction->terms.append(ByteTerm::WordBoundary(invert, inputPosition));
}
void atomPatternCharacter(UChar ch, int inputPosition, unsigned frameLocation, unsigned quantityCount, QuantifierType quantityType)
@@ -1304,60 +1304,60 @@ public:
if (m_pattern.m_ignoreCase) {
UChar lo = Unicode::toLower(ch);
UChar hi = Unicode::toUpper(ch);
-
+
if (lo != hi) {
- m_bodyDisjunction->terms.append(ByteTerm(lo, hi, inputPosition, frameLocation, quantityCount, quantityType));
+ bodyDisjunction->terms.append(ByteTerm(lo, hi, inputPosition, frameLocation, quantityCount, quantityType));
return;
}
}
- m_bodyDisjunction->terms.append(ByteTerm(ch, inputPosition, frameLocation, quantityCount, quantityType));
+ bodyDisjunction->terms.append(ByteTerm(ch, inputPosition, frameLocation, quantityCount, quantityType));
}
-
+
void atomCharacterClass(CharacterClass* characterClass, bool invert, int inputPosition, unsigned frameLocation, unsigned quantityCount, QuantifierType quantityType)
{
- m_bodyDisjunction->terms.append(ByteTerm(characterClass, invert, inputPosition));
+ bodyDisjunction->terms.append(ByteTerm(characterClass, invert, inputPosition));
- m_bodyDisjunction->terms[m_bodyDisjunction->terms.size() - 1].atom.quantityCount = quantityCount;
- m_bodyDisjunction->terms[m_bodyDisjunction->terms.size() - 1].atom.quantityType = quantityType;
- m_bodyDisjunction->terms[m_bodyDisjunction->terms.size() - 1].frameLocation = frameLocation;
+ bodyDisjunction->terms[bodyDisjunction->terms.size() - 1].atom.quantityCount = quantityCount;
+ bodyDisjunction->terms[bodyDisjunction->terms.size() - 1].atom.quantityType = quantityType;
+ bodyDisjunction->terms[bodyDisjunction->terms.size() - 1].frameLocation = frameLocation;
}
void atomBackReference(unsigned subpatternId, int inputPosition, unsigned frameLocation, unsigned quantityCount, QuantifierType quantityType)
{
ASSERT(subpatternId);
- m_bodyDisjunction->terms.append(ByteTerm::BackReference(subpatternId, inputPosition));
+ bodyDisjunction->terms.append(ByteTerm::BackReference(subpatternId, inputPosition));
- m_bodyDisjunction->terms[m_bodyDisjunction->terms.size() - 1].atom.quantityCount = quantityCount;
- m_bodyDisjunction->terms[m_bodyDisjunction->terms.size() - 1].atom.quantityType = quantityType;
- m_bodyDisjunction->terms[m_bodyDisjunction->terms.size() - 1].frameLocation = frameLocation;
+ bodyDisjunction->terms[bodyDisjunction->terms.size() - 1].atom.quantityCount = quantityCount;
+ bodyDisjunction->terms[bodyDisjunction->terms.size() - 1].atom.quantityType = quantityType;
+ bodyDisjunction->terms[bodyDisjunction->terms.size() - 1].frameLocation = frameLocation;
}
void atomParenthesesSubpatternBegin(unsigned subpatternId, bool capture, int inputPosition, unsigned frameLocation, unsigned alternativeFrameLocation)
{
- int beginTerm = m_bodyDisjunction->terms.size();
+ int beginTerm = bodyDisjunction->terms.size();
- m_bodyDisjunction->terms.append(ByteTerm(ByteTerm::TypeParenthesesSubpatternOnceBegin, subpatternId, capture, inputPosition));
- m_bodyDisjunction->terms[m_bodyDisjunction->terms.size() - 1].frameLocation = frameLocation;
- m_bodyDisjunction->terms.append(ByteTerm::AlternativeBegin());
- m_bodyDisjunction->terms[m_bodyDisjunction->terms.size() - 1].frameLocation = alternativeFrameLocation;
+ bodyDisjunction->terms.append(ByteTerm(ByteTerm::TypeParenthesesSubpatternOnceBegin, subpatternId, capture, inputPosition));
+ bodyDisjunction->terms[bodyDisjunction->terms.size() - 1].frameLocation = frameLocation;
+ bodyDisjunction->terms.append(ByteTerm::AlternativeBegin());
+ bodyDisjunction->terms[bodyDisjunction->terms.size() - 1].frameLocation = alternativeFrameLocation;
- m_parenthesesStack.append(ParenthesesStackEntry(beginTerm, m_currentAlternativeIndex));
- m_currentAlternativeIndex = beginTerm + 1;
+ m_parenthesesStack.append(ParenthesesStackEntry(beginTerm, currentAlternativeIndex));
+ currentAlternativeIndex = beginTerm + 1;
}
void atomParentheticalAssertionBegin(unsigned subpatternId, bool invert, unsigned frameLocation, unsigned alternativeFrameLocation)
{
- int beginTerm = m_bodyDisjunction->terms.size();
+ int beginTerm = bodyDisjunction->terms.size();
- m_bodyDisjunction->terms.append(ByteTerm(ByteTerm::TypeParentheticalAssertionBegin, subpatternId, invert, 0));
- m_bodyDisjunction->terms[m_bodyDisjunction->terms.size() - 1].frameLocation = frameLocation;
- m_bodyDisjunction->terms.append(ByteTerm::AlternativeBegin());
- m_bodyDisjunction->terms[m_bodyDisjunction->terms.size() - 1].frameLocation = alternativeFrameLocation;
+ bodyDisjunction->terms.append(ByteTerm(ByteTerm::TypeParentheticalAssertionBegin, subpatternId, invert, 0));
+ bodyDisjunction->terms[bodyDisjunction->terms.size() - 1].frameLocation = frameLocation;
+ bodyDisjunction->terms.append(ByteTerm::AlternativeBegin());
+ bodyDisjunction->terms[bodyDisjunction->terms.size() - 1].frameLocation = alternativeFrameLocation;
- m_parenthesesStack.append(ParenthesesStackEntry(beginTerm, m_currentAlternativeIndex));
- m_currentAlternativeIndex = beginTerm + 1;
+ m_parenthesesStack.append(ParenthesesStackEntry(beginTerm, currentAlternativeIndex));
+ currentAlternativeIndex = beginTerm + 1;
}
unsigned popParenthesesStack()
@@ -1365,12 +1365,12 @@ public:
ASSERT(m_parenthesesStack.size());
int stackEnd = m_parenthesesStack.size() - 1;
unsigned beginTerm = m_parenthesesStack[stackEnd].beginTerm;
- m_currentAlternativeIndex = m_parenthesesStack[stackEnd].savedAlternativeIndex;
+ currentAlternativeIndex = m_parenthesesStack[stackEnd].savedAlternativeIndex;
m_parenthesesStack.shrink(stackEnd);
- ASSERT(beginTerm < m_bodyDisjunction->terms.size());
- ASSERT(m_currentAlternativeIndex < m_bodyDisjunction->terms.size());
-
+ ASSERT(beginTerm < bodyDisjunction->terms.size());
+ ASSERT(currentAlternativeIndex < bodyDisjunction->terms.size());
+
return beginTerm;
}
@@ -1387,25 +1387,25 @@ public:
void closeAlternative(int beginTerm)
{
int origBeginTerm = beginTerm;
- ASSERT(m_bodyDisjunction->terms[beginTerm].type == ByteTerm::TypeAlternativeBegin);
- int endIndex = m_bodyDisjunction->terms.size();
+ ASSERT(bodyDisjunction->terms[beginTerm].type == ByteTerm::TypeAlternativeBegin);
+ int endIndex = bodyDisjunction->terms.size();
- unsigned frameLocation = m_bodyDisjunction->terms[beginTerm].frameLocation;
+ unsigned frameLocation = bodyDisjunction->terms[beginTerm].frameLocation;
- if (!m_bodyDisjunction->terms[beginTerm].alternative.next)
- m_bodyDisjunction->terms.remove(beginTerm);
+ if (!bodyDisjunction->terms[beginTerm].alternative.next)
+ bodyDisjunction->terms.remove(beginTerm);
else {
- while (m_bodyDisjunction->terms[beginTerm].alternative.next) {
- beginTerm += m_bodyDisjunction->terms[beginTerm].alternative.next;
- ASSERT(m_bodyDisjunction->terms[beginTerm].type == ByteTerm::TypeAlternativeDisjunction);
- m_bodyDisjunction->terms[beginTerm].alternative.end = endIndex - beginTerm;
- m_bodyDisjunction->terms[beginTerm].frameLocation = frameLocation;
+ while (bodyDisjunction->terms[beginTerm].alternative.next) {
+ beginTerm += bodyDisjunction->terms[beginTerm].alternative.next;
+ ASSERT(bodyDisjunction->terms[beginTerm].type == ByteTerm::TypeAlternativeDisjunction);
+ bodyDisjunction->terms[beginTerm].alternative.end = endIndex - beginTerm;
+ bodyDisjunction->terms[beginTerm].frameLocation = frameLocation;
}
+
+ bodyDisjunction->terms[beginTerm].alternative.next = origBeginTerm - beginTerm;
- m_bodyDisjunction->terms[beginTerm].alternative.next = origBeginTerm - beginTerm;
-
- m_bodyDisjunction->terms.append(ByteTerm::AlternativeEnd());
- m_bodyDisjunction->terms[endIndex].frameLocation = frameLocation;
+ bodyDisjunction->terms.append(ByteTerm::AlternativeEnd());
+ bodyDisjunction->terms[endIndex].frameLocation = frameLocation;
}
}
@@ -1413,46 +1413,46 @@ public:
{
int beginTerm = 0;
int origBeginTerm = 0;
- ASSERT(m_bodyDisjunction->terms[beginTerm].type == ByteTerm::TypeBodyAlternativeBegin);
- int endIndex = m_bodyDisjunction->terms.size();
+ ASSERT(bodyDisjunction->terms[beginTerm].type == ByteTerm::TypeBodyAlternativeBegin);
+ int endIndex = bodyDisjunction->terms.size();
- unsigned frameLocation = m_bodyDisjunction->terms[beginTerm].frameLocation;
+ unsigned frameLocation = bodyDisjunction->terms[beginTerm].frameLocation;
- while (m_bodyDisjunction->terms[beginTerm].alternative.next) {
- beginTerm += m_bodyDisjunction->terms[beginTerm].alternative.next;
- ASSERT(m_bodyDisjunction->terms[beginTerm].type == ByteTerm::TypeBodyAlternativeDisjunction);
- m_bodyDisjunction->terms[beginTerm].alternative.end = endIndex - beginTerm;
- m_bodyDisjunction->terms[beginTerm].frameLocation = frameLocation;
+ while (bodyDisjunction->terms[beginTerm].alternative.next) {
+ beginTerm += bodyDisjunction->terms[beginTerm].alternative.next;
+ ASSERT(bodyDisjunction->terms[beginTerm].type == ByteTerm::TypeBodyAlternativeDisjunction);
+ bodyDisjunction->terms[beginTerm].alternative.end = endIndex - beginTerm;
+ bodyDisjunction->terms[beginTerm].frameLocation = frameLocation;
}
+
+ bodyDisjunction->terms[beginTerm].alternative.next = origBeginTerm - beginTerm;
- m_bodyDisjunction->terms[beginTerm].alternative.next = origBeginTerm - beginTerm;
-
- m_bodyDisjunction->terms.append(ByteTerm::BodyAlternativeEnd());
- m_bodyDisjunction->terms[endIndex].frameLocation = frameLocation;
+ bodyDisjunction->terms.append(ByteTerm::BodyAlternativeEnd());
+ bodyDisjunction->terms[endIndex].frameLocation = frameLocation;
}
void atomParenthesesEnd(bool doInline, unsigned lastSubpatternId, int inputPosition, unsigned frameLocation, unsigned quantityCount, QuantifierType quantityType, unsigned callFrameSize = 0)
{
unsigned beginTerm = popParenthesesStack();
closeAlternative(beginTerm + 1);
- unsigned endTerm = m_bodyDisjunction->terms.size();
+ unsigned endTerm = bodyDisjunction->terms.size();
- bool isAssertion = m_bodyDisjunction->terms[beginTerm].type == ByteTerm::TypeParentheticalAssertionBegin;
- bool invertOrCapture = m_bodyDisjunction->terms[beginTerm].invertOrCapture;
- unsigned subpatternId = m_bodyDisjunction->terms[beginTerm].atom.subpatternId;
+ bool isAssertion = bodyDisjunction->terms[beginTerm].type == ByteTerm::TypeParentheticalAssertionBegin;
+ bool invertOrCapture = bodyDisjunction->terms[beginTerm].invertOrCapture;
+ unsigned subpatternId = bodyDisjunction->terms[beginTerm].atom.subpatternId;
- m_bodyDisjunction->terms.append(ByteTerm(isAssertion ? ByteTerm::TypeParentheticalAssertionEnd : ByteTerm::TypeParenthesesSubpatternOnceEnd, subpatternId, invertOrCapture, inputPosition));
- m_bodyDisjunction->terms[beginTerm].atom.parenthesesWidth = endTerm - beginTerm;
- m_bodyDisjunction->terms[endTerm].atom.parenthesesWidth = endTerm - beginTerm;
- m_bodyDisjunction->terms[endTerm].frameLocation = frameLocation;
+ bodyDisjunction->terms.append(ByteTerm(isAssertion ? ByteTerm::TypeParentheticalAssertionEnd : ByteTerm::TypeParenthesesSubpatternOnceEnd, subpatternId, invertOrCapture, inputPosition));
+ bodyDisjunction->terms[beginTerm].atom.parenthesesWidth = endTerm - beginTerm;
+ bodyDisjunction->terms[endTerm].atom.parenthesesWidth = endTerm - beginTerm;
+ bodyDisjunction->terms[endTerm].frameLocation = frameLocation;
if (doInline) {
- m_bodyDisjunction->terms[beginTerm].atom.quantityCount = quantityCount;
- m_bodyDisjunction->terms[beginTerm].atom.quantityType = quantityType;
- m_bodyDisjunction->terms[endTerm].atom.quantityCount = quantityCount;
- m_bodyDisjunction->terms[endTerm].atom.quantityType = quantityType;
+ bodyDisjunction->terms[beginTerm].atom.quantityCount = quantityCount;
+ bodyDisjunction->terms[beginTerm].atom.quantityType = quantityType;
+ bodyDisjunction->terms[endTerm].atom.quantityCount = quantityCount;
+ bodyDisjunction->terms[endTerm].atom.quantityType = quantityType;
} else {
- ByteTerm& parenthesesBegin = m_bodyDisjunction->terms[beginTerm];
+ ByteTerm& parenthesesBegin = bodyDisjunction->terms[beginTerm];
ASSERT(parenthesesBegin.type == ByteTerm::TypeParenthesesSubpatternOnceBegin);
bool invertOrCapture = parenthesesBegin.invertOrCapture;
@@ -1463,26 +1463,26 @@ public:
parenthesesDisjunction->terms.append(ByteTerm::SubpatternBegin());
for (unsigned termInParentheses = beginTerm + 1; termInParentheses < endTerm; ++termInParentheses)
- parenthesesDisjunction->terms.append(m_bodyDisjunction->terms[termInParentheses]);
+ parenthesesDisjunction->terms.append(bodyDisjunction->terms[termInParentheses]);
parenthesesDisjunction->terms.append(ByteTerm::SubpatternEnd());
- m_bodyDisjunction->terms.shrink(beginTerm);
+ bodyDisjunction->terms.shrink(beginTerm);
m_allParenthesesInfo.append(parenthesesDisjunction);
- m_bodyDisjunction->terms.append(ByteTerm(ByteTerm::TypeParenthesesSubpattern, subpatternId, parenthesesDisjunction, invertOrCapture, inputPosition));
+ bodyDisjunction->terms.append(ByteTerm(ByteTerm::TypeParenthesesSubpattern, subpatternId, parenthesesDisjunction, invertOrCapture, inputPosition));
- m_bodyDisjunction->terms[beginTerm].atom.quantityCount = quantityCount;
- m_bodyDisjunction->terms[beginTerm].atom.quantityType = quantityType;
- m_bodyDisjunction->terms[beginTerm].frameLocation = frameLocation;
+ bodyDisjunction->terms[beginTerm].atom.quantityCount = quantityCount;
+ bodyDisjunction->terms[beginTerm].atom.quantityType = quantityType;
+ bodyDisjunction->terms[beginTerm].frameLocation = frameLocation;
}
}
void regexBegin(unsigned numSubpatterns, unsigned callFrameSize)
{
- m_bodyDisjunction = new ByteDisjunction(numSubpatterns, callFrameSize);
- m_bodyDisjunction->terms.append(ByteTerm::BodyAlternativeBegin());
- m_bodyDisjunction->terms[0].frameLocation = 0;
- m_currentAlternativeIndex = 0;
+ bodyDisjunction = new ByteDisjunction(numSubpatterns, callFrameSize);
+ bodyDisjunction->terms.append(ByteTerm::BodyAlternativeBegin());
+ bodyDisjunction->terms[0].frameLocation = 0;
+ currentAlternativeIndex = 0;
}
void regexEnd()
@@ -1492,27 +1492,27 @@ public:
void alterantiveBodyDisjunction()
{
- int newAlternativeIndex = m_bodyDisjunction->terms.size();
- m_bodyDisjunction->terms[m_currentAlternativeIndex].alternative.next = newAlternativeIndex - m_currentAlternativeIndex;
- m_bodyDisjunction->terms.append(ByteTerm::BodyAlternativeDisjunction());
+ int newAlternativeIndex = bodyDisjunction->terms.size();
+ bodyDisjunction->terms[currentAlternativeIndex].alternative.next = newAlternativeIndex - currentAlternativeIndex;
+ bodyDisjunction->terms.append(ByteTerm::BodyAlternativeDisjunction());
- m_currentAlternativeIndex = newAlternativeIndex;
+ currentAlternativeIndex = newAlternativeIndex;
}
void alterantiveDisjunction()
{
- int newAlternativeIndex = m_bodyDisjunction->terms.size();
- m_bodyDisjunction->terms[m_currentAlternativeIndex].alternative.next = newAlternativeIndex - m_currentAlternativeIndex;
- m_bodyDisjunction->terms.append(ByteTerm::AlternativeDisjunction());
+ int newAlternativeIndex = bodyDisjunction->terms.size();
+ bodyDisjunction->terms[currentAlternativeIndex].alternative.next = newAlternativeIndex - currentAlternativeIndex;
+ bodyDisjunction->terms.append(ByteTerm::AlternativeDisjunction());
- m_currentAlternativeIndex = newAlternativeIndex;
+ currentAlternativeIndex = newAlternativeIndex;
}
void emitDisjunction(PatternDisjunction* disjunction, unsigned inputCountAlreadyChecked = 0, unsigned parenthesesInputCountAlreadyChecked = 0)
{
for (unsigned alt = 0; alt < disjunction->m_alternatives.size(); ++alt) {
unsigned currentCountAlreadyChecked = inputCountAlreadyChecked;
-
+
if (alt) {
if (disjunction == m_pattern.m_body)
alterantiveBodyDisjunction();
@@ -1586,7 +1586,7 @@ public:
case PatternTerm::TypeParentheticalAssertion: {
unsigned alternativeFrameLocation = term.inputPosition + RegexStackSpaceForBackTrackInfoParentheticalAssertion;
-
+
atomParentheticalAssertionBegin(term.parentheses.subpatternId, term.invertOrCapture, term.frameLocation, alternativeFrameLocation);
emitDisjunction(term.parentheses.disjunction, currentCountAlreadyChecked, 0);
atomParenthesesEnd(true, term.parentheses.lastSubpatternId, 0, term.frameLocation, term.quantityCount, term.quantityType);
@@ -1599,8 +1599,8 @@ public:
private:
RegexPattern& m_pattern;
- ByteDisjunction* m_bodyDisjunction;
- unsigned m_currentAlternativeIndex;
+ ByteDisjunction* bodyDisjunction;
+ unsigned currentAlternativeIndex;
Vector<ParenthesesStackEntry> m_parenthesesStack;
Vector<ByteDisjunction*> m_allParenthesesInfo;
};
diff --git a/WEBKIT_MERGE_REVISION b/WEBKIT_MERGE_REVISION
index a58a065..edaf0cb 100644
--- a/WEBKIT_MERGE_REVISION
+++ b/WEBKIT_MERGE_REVISION
@@ -1,5 +1,5 @@
We sync with Chromium release revision, which has both webkit revision and V8 revision.
http://src.chromium.org/svn/branches/187/src@18043
- http://svn.webkit.org/repository/webkit/trunk@47420
+ http://svn.webkit.org/repository/webkit/trunk@44544
http://v8.googlecode.com/svn/branches/bleeding_edge@2703
diff --git a/WebCore/Android.derived.mk b/WebCore/Android.derived.mk
index e69de29..e2d3e13 100644
--- a/WebCore/Android.derived.mk
+++ b/WebCore/Android.derived.mk
@@ -0,0 +1,741 @@
+##
+##
+## Copyright 2007, The Android Open Source Project
+##
+## Licensed under the Apache License, Version 2.0 (the "License");
+## you may not use this file except in compliance with the License.
+## You may obtain a copy of the License at
+##
+## http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+##
+
+# This comment block is read by tools/webkitsync/diff.cpp
+# Don't remove it or move it.
+#
+# The following files are intentionally not included
+# LOCAL_SRC_FILES_EXCLUDED := \
+# css/RGBColor.idl \
+# dom/EventListener.idl \
+# dom/EventTarget.idl \
+# html/CanvasPixelArray.idl \
+# page/AbstractView.idl \
+# svg/ElementTimeControl.idl \
+# svg/SVGAnimatedPathData.idl \
+# svg/SVGAnimatedPoints.idl \
+# svg/SVGExternalResourcesRequired.idl \
+# svg/SVGFilterPrimitiveStandardAttributes.idl \
+# svg/SVGFitToViewBox.idl \
+# svg/SVGLangSpace.idl \
+# svg/SVGLocatable.idl \
+# svg/SVGStylable.idl \
+# svg/SVGTests.idl \
+# svg/SVGTransformable.idl \
+# svg/SVGURIReference.idl \
+# svg/SVGViewSpec.idl \
+# svg/SVGZoomAndPan.idl \
+
+# This comment block is read by tools/webkitsync/diff.cpp
+# Don't remove it or move it.
+#
+# The following files are intentionally not generated
+# LOCAL_GENERATED_FILES_EXCLUDED := \
+# WMLElementFactory.cpp \
+# WMLNames.cpp \
+# XLinkNames.cpp \
+
+# This comment block is read by tools/webkitsync/diff.cpp
+# Don't remove it or move it.
+#
+# The following directory wildcard matches are intentionally not included
+# If an entry starts with '/', any subdirectory may match
+# If an entry starts with '^', the first directory must match
+# LOCAL_DIR_WILDCARD_EXCLUDED :=
+#
+
+# This comment block is read by tools/webkitsync/diff.cpp
+# Don't remove it or move it.
+# If you edit it, keep it in alphabetical order
+#
+# These files are Android extensions
+# LOCAL_ANDROID_SRC_FILES_INCLUDED := \
+# dom/Touch*.idl \
+
+LOCAL_SRC_FILES :=
+# CSS property names and value keywords
+
+GEN := $(intermediates)/css/CSSPropertyNames.h
+$(GEN): SCRIPT := $(LOCAL_PATH)/css/makeprop.pl
+$(GEN): $(intermediates)/%.h : $(LOCAL_PATH)/%.in $(LOCAL_PATH)/css/SVGCSSPropertyNames.in
+ @echo "Generating CSSPropertyNames.h <= CSSPropertyNames.in"
+ @mkdir -p $(dir $@)
+ @cat $< > $(dir $@)/$(notdir $<)
+ifeq ($(ENABLE_SVG),true)
+ @cat $^ > $(@:%.h=%.in)
+endif
+ @cp -f $(SCRIPT) $(dir $@)
+ @cd $(dir $@) ; perl ./$(notdir $(SCRIPT))
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+GEN := $(intermediates)/css/CSSValueKeywords.h
+$(GEN): SCRIPT := $(LOCAL_PATH)/css/makevalues.pl
+$(GEN): $(intermediates)/%.h : $(LOCAL_PATH)/%.in $(LOCAL_PATH)/css/SVGCSSValueKeywords.in
+ @echo "Generating CSSValueKeywords.h <= CSSValueKeywords.in"
+ @mkdir -p $(dir $@)
+ @cp -f $(SCRIPT) $(dir $@)
+ifeq ($(ENABLE_SVG),true)
+ @perl -ne 'print lc' $^ > $(@:%.h=%.in)
+else
+ @perl -ne 'print lc' $< > $(@:%.h=%.in)
+endif
+ @cd $(dir $@); perl makevalues.pl
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+
+# DOCTYPE strings
+
+GEN := $(intermediates)/html/DocTypeStrings.cpp
+$(GEN): PRIVATE_CUSTOM_TOOL = gperf -CEot -L ANSI-C -k "*" -N findDoctypeEntry -F ,PubIDInfo::eAlmostStandards,PubIDInfo::eAlmostStandards $< > $@
+$(GEN): $(LOCAL_PATH)/html/DocTypeStrings.gperf
+ $(transform-generated-source)
+# we have to do this dep by hand:
+$(intermediates)/html/HTMLDocument.o : $(GEN)
+
+
+# HTML entity names
+
+GEN := $(intermediates)/html/HTMLEntityNames.c
+$(GEN): PRIVATE_CUSTOM_TOOL = gperf -a -L ANSI-C -C -G -c -o -t -k '*' -N findEntity -D -s 2 $< > $@
+$(GEN): $(LOCAL_PATH)/html/HTMLEntityNames.gperf
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+
+# color names
+
+GEN := $(intermediates)/platform/ColorData.c
+$(GEN): PRIVATE_CUSTOM_TOOL = gperf -CDEot -L ANSI-C -k '*' -N findColor -D -s 2 $< > $@
+$(GEN): $(LOCAL_PATH)/platform/ColorData.gperf
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+
+# CSS tokenizer
+
+GEN := $(intermediates)/css/tokenizer.cpp
+$(GEN): PRIVATE_CUSTOM_TOOL = $(OLD_FLEX) -t $< | perl $(dir $<)/maketokenizer > $@
+$(GEN): $(LOCAL_PATH)/css/tokenizer.flex $(LOCAL_PATH)/css/maketokenizer
+ $(transform-generated-source)
+# we have to do this dep by hand:
+$(intermediates)/css/CSSParser.o : $(GEN)
+
+# CSS grammar
+
+GEN := $(intermediates)/CSSGrammar.cpp
+$(GEN) : PRIVATE_YACCFLAGS := -p cssyy
+$(GEN): $(LOCAL_PATH)/css/CSSGrammar.y
+ $(call local-transform-y-to-cpp,.cpp)
+$(GEN): $(LOCAL_BISON)
+
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+# XPath grammar
+
+GEN := $(intermediates)/XPathGrammar.cpp
+$(GEN) : PRIVATE_YACCFLAGS := -p xpathyy
+$(GEN): $(LOCAL_PATH)/xml/XPathGrammar.y
+ $(call local-transform-y-to-cpp,.cpp)
+$(GEN): $(LOCAL_BISON)
+
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+# user agent style sheets
+
+style_sheets := $(LOCAL_PATH)/css/html4.css $(LOCAL_PATH)/css/quirks.css $(LOCAL_PATH)/css/view-source.css $(LOCAL_PATH)/css/mediaControls.css
+ifeq ($(ENABLE_SVG), true)
+style_sheets := $(style_sheets) $(LOCAL_PATH)/css/svg.css
+endif
+GEN := $(intermediates)/css/UserAgentStyleSheets.h
+make_css_file_arrays := $(LOCAL_PATH)/css/make-css-file-arrays.pl
+$(GEN): PRIVATE_CUSTOM_TOOL = $< $@ $(basename $@).cpp $(filter %.css,$^)
+$(GEN): $(make_css_file_arrays) $(style_sheets)
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN) $(GEN:%.h=%.cpp)
+
+# character set name table
+
+#gen_inputs := \
+ $(LOCAL_PATH)/platform/make-charset-table.pl \
+ $(LOCAL_PATH)/platform/character-sets.txt \
+ $(LOCAL_PATH)/platform/android/android-encodings.txt
+#GEN := $(intermediates)/platform/CharsetData.cpp
+#$(GEN): PRIVATE_CUSTOM_TOOL = $^ "android::Encoding::ENCODING_" > $@
+#$(GEN): $(gen_inputs)
+# $(transform-generated-source)
+#LOCAL_GENERATED_SOURCES += $(GEN)
+
+# the above rule will make this build too
+$(intermediates)/css/UserAgentStyleSheets.cpp : $(GEN)
+
+
+# lookup tables for old-style JavaScript bindings
+create_hash_table := $(LOCAL_PATH)/../JavaScriptCore/create_hash_table
+
+GEN := $(addprefix $(intermediates)/, \
+ bindings/js/JSDOMWindowBase.lut.h \
+ bindings/js/JSRGBColor.lut.h \
+ )
+$(GEN): PRIVATE_CUSTOM_TOOL = perl $(create_hash_table) $< > $@
+$(GEN): $(intermediates)/bindings/js/%.lut.h: $(LOCAL_PATH)/bindings/js/%.cpp $(create_hash_table)
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+
+GEN := $(intermediates)/bindings/js/JSHTMLInputElementBaseTable.cpp
+$(GEN): PRIVATE_CUSTOM_TOOL = perl $(create_hash_table) $< > $@
+$(GEN): $(intermediates)/bindings/js/%Table.cpp: $(LOCAL_PATH)/bindings/js/%.cpp $(create_hash_table)
+ $(transform-generated-source)
+$(intermediates)/bindings/js/JSHTMLInputElementBase.o : $(GEN)
+
+# lookup tables for old-style JavaScript bindings
+js_binding_scripts := $(addprefix $(LOCAL_PATH)/,\
+ bindings/scripts/CodeGenerator.pm \
+ bindings/scripts/IDLParser.pm \
+ bindings/scripts/IDLStructure.pm \
+ bindings/scripts/generate-bindings.pl \
+ )
+
+FEATURE_DEFINES := ANDROID_ORIENTATION_SUPPORT ENABLE_TOUCH_EVENTS=1 ENABLE_DATABASE=1 ENABLE_OFFLINE_WEB_APPLICATIONS=1 ENABLE_DOM_STORAGE=1 ENABLE_VIDEO=1 ENABLE_WORKERS=1 ENABLE_GEOLOCATION=1
+
+GEN := \
+ $(intermediates)/css/JSCSSCharsetRule.h \
+ $(intermediates)/css/JSCSSFontFaceRule.h \
+ $(intermediates)/css/JSCSSImportRule.h \
+ $(intermediates)/css/JSCSSMediaRule.h \
+ $(intermediates)/css/JSCSSPageRule.h \
+ $(intermediates)/css/JSCSSPrimitiveValue.h \
+ $(intermediates)/css/JSCSSRule.h \
+ $(intermediates)/css/JSCSSRuleList.h \
+ $(intermediates)/css/JSCSSStyleDeclaration.h \
+ $(intermediates)/css/JSCSSStyleRule.h \
+ $(intermediates)/css/JSCSSStyleSheet.h \
+ $(intermediates)/css/JSCSSUnknownRule.h \
+ $(intermediates)/css/JSCSSValue.h \
+ $(intermediates)/css/JSCSSValueList.h \
+ $(intermediates)/css/JSCSSVariablesDeclaration.h \
+ $(intermediates)/css/JSCSSVariablesRule.h \
+ $(intermediates)/css/JSCounter.h \
+ $(intermediates)/css/JSMediaList.h \
+ $(intermediates)/css/JSRect.h \
+ $(intermediates)/css/JSStyleSheet.h \
+ $(intermediates)/css/JSStyleSheetList.h \
+ $(intermediates)/css/JSWebKitCSSKeyframeRule.h \
+ $(intermediates)/css/JSWebKitCSSKeyframesRule.h \
+ $(intermediates)/css/JSWebKitCSSMatrix.h \
+ $(intermediates)/css/JSWebKitCSSTransformValue.h
+$(GEN): PRIVATE_PATH := $(LOCAL_PATH)
+$(GEN): PRIVATE_CUSTOM_TOOL = perl -I$(PRIVATE_PATH)/bindings/scripts $(PRIVATE_PATH)/bindings/scripts/generate-bindings.pl --defines "$(FEATURE_DEFINES) LANGUAGE_JAVASCRIPT" --generator JS --include dom --include html --outputdir $(dir $@) $<
+$(GEN): $(intermediates)/css/JS%.h : $(LOCAL_PATH)/css/%.idl $(js_binding_scripts)
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN) $(GEN:%.h=%.cpp)
+
+
+# We also need the .cpp files, which are generated as side effects of the
+# above rules. Specifying this explicitly makes -j2 work.
+$(patsubst %.h,%.cpp,$(GEN)): $(intermediates)/css/%.cpp : $(intermediates)/css/%.h
+
+# MANUAL MERGE : I took this out because compiling the result shows:
+# out/.../JSEventTarget.cpp: In function 'JSC::JSValue* WebCore::jsEventTargetPrototypeFunctionAddEventListener(JSC::ExecState*, JSC::JSObject*, JSC::JSValue*, const JSC::ArgList&)':
+# out/.../JSEventTarget.cpp:90: error: 'toEventListener' was not declared in this scope
+# but I can't find toEventListener anywhere, nor can I figure out how toEventListener
+# is generated
+# $(intermediates)/dom/JSEventTarget.h \
+
+GEN := \
+ $(intermediates)/dom/JSAttr.h \
+ $(intermediates)/dom/JSCDATASection.h \
+ $(intermediates)/dom/JSCharacterData.h \
+ $(intermediates)/dom/JSClientRect.h \
+ $(intermediates)/dom/JSClientRectList.h \
+ $(intermediates)/dom/JSClipboard.h \
+ $(intermediates)/dom/JSComment.h \
+ $(intermediates)/dom/JSDOMCoreException.h \
+ $(intermediates)/dom/JSDOMImplementation.h \
+ $(intermediates)/dom/JSDOMStringList.h \
+ $(intermediates)/dom/JSDocument.h \
+ $(intermediates)/dom/JSDocumentFragment.h \
+ $(intermediates)/dom/JSDocumentType.h \
+ $(intermediates)/dom/JSElement.h \
+ $(intermediates)/dom/JSEntity.h \
+ $(intermediates)/dom/JSEntityReference.h \
+ $(intermediates)/dom/JSEvent.h \
+ $(intermediates)/dom/JSEventException.h \
+ $(intermediates)/dom/JSKeyboardEvent.h \
+ $(intermediates)/dom/JSMessageChannel.h \
+ $(intermediates)/dom/JSMessageEvent.h \
+ $(intermediates)/dom/JSMessagePort.h \
+ $(intermediates)/dom/JSMouseEvent.h \
+ $(intermediates)/dom/JSMutationEvent.h \
+ $(intermediates)/dom/JSNamedNodeMap.h \
+ $(intermediates)/dom/JSNode.h \
+ $(intermediates)/dom/JSNodeFilter.h \
+ $(intermediates)/dom/JSNodeIterator.h \
+ $(intermediates)/dom/JSNodeList.h \
+ $(intermediates)/dom/JSNotation.h \
+ $(intermediates)/dom/JSOverflowEvent.h \
+ $(intermediates)/dom/JSProcessingInstruction.h \
+ $(intermediates)/dom/JSProgressEvent.h \
+ $(intermediates)/dom/JSRange.h \
+ $(intermediates)/dom/JSRangeException.h \
+ $(intermediates)/dom/JSText.h \
+ $(intermediates)/dom/JSTextEvent.h \
+ $(intermediates)/dom/JSTouch.h \
+ $(intermediates)/dom/JSTouchEvent.h \
+ $(intermediates)/dom/JSTouchList.h \
+ $(intermediates)/dom/JSTreeWalker.h \
+ $(intermediates)/dom/JSUIEvent.h \
+ $(intermediates)/dom/JSWebKitAnimationEvent.h \
+ $(intermediates)/dom/JSWebKitTransitionEvent.h \
+ $(intermediates)/dom/JSWheelEvent.h
+$(GEN): PRIVATE_PATH := $(LOCAL_PATH)
+$(GEN): PRIVATE_CUSTOM_TOOL = perl -I$(PRIVATE_PATH)/bindings/scripts $(PRIVATE_PATH)/bindings/scripts/generate-bindings.pl --defines "$(FEATURE_DEFINES) LANGUAGE_JAVASCRIPT" --generator JS --include dom --include html --outputdir $(dir $@) $<
+$(GEN): $(intermediates)/dom/JS%.h : $(LOCAL_PATH)/dom/%.idl $(js_binding_scripts)
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN) $(GEN:%.h=%.cpp)
+
+# We also need the .cpp files, which are generated as side effects of the
+# above rules. Specifying this explicitly makes -j2 work.
+$(patsubst %.h,%.cpp,$(GEN)): $(intermediates)/dom/%.cpp : $(intermediates)/dom/%.h
+
+
+GEN := \
+ $(intermediates)/html/JSCanvasGradient.h \
+ $(intermediates)/html/JSCanvasPattern.h \
+ $(intermediates)/html/JSCanvasRenderingContext2D.h \
+ $(intermediates)/html/JSFile.h \
+ $(intermediates)/html/JSFileList.h \
+ $(intermediates)/html/JSHTMLAnchorElement.h \
+ $(intermediates)/html/JSHTMLAppletElement.h \
+ $(intermediates)/html/JSHTMLAreaElement.h \
+ $(intermediates)/html/JSHTMLAudioElement.h \
+ $(intermediates)/html/JSHTMLBRElement.h \
+ $(intermediates)/html/JSHTMLBaseElement.h \
+ $(intermediates)/html/JSHTMLBaseFontElement.h \
+ $(intermediates)/html/JSHTMLBlockquoteElement.h \
+ $(intermediates)/html/JSHTMLBodyElement.h \
+ $(intermediates)/html/JSHTMLButtonElement.h \
+ $(intermediates)/html/JSHTMLCanvasElement.h \
+ $(intermediates)/html/JSHTMLCollection.h \
+ $(intermediates)/html/JSHTMLDListElement.h \
+ $(intermediates)/html/JSHTMLDirectoryElement.h \
+ $(intermediates)/html/JSHTMLDivElement.h \
+ $(intermediates)/html/JSHTMLDocument.h \
+ $(intermediates)/html/JSHTMLElement.h \
+ $(intermediates)/html/JSHTMLEmbedElement.h \
+ $(intermediates)/html/JSHTMLFieldSetElement.h \
+ $(intermediates)/html/JSHTMLFontElement.h \
+ $(intermediates)/html/JSHTMLFormElement.h \
+ $(intermediates)/html/JSHTMLFrameElement.h \
+ $(intermediates)/html/JSHTMLFrameSetElement.h \
+ $(intermediates)/html/JSHTMLHRElement.h \
+ $(intermediates)/html/JSHTMLHeadElement.h \
+ $(intermediates)/html/JSHTMLHeadingElement.h \
+ $(intermediates)/html/JSHTMLHtmlElement.h \
+ $(intermediates)/html/JSHTMLIFrameElement.h \
+ $(intermediates)/html/JSHTMLImageElement.h \
+ $(intermediates)/html/JSHTMLInputElement.h \
+ $(intermediates)/html/JSHTMLIsIndexElement.h \
+ $(intermediates)/html/JSHTMLLIElement.h \
+ $(intermediates)/html/JSHTMLLabelElement.h \
+ $(intermediates)/html/JSHTMLLegendElement.h \
+ $(intermediates)/html/JSHTMLLinkElement.h \
+ $(intermediates)/html/JSHTMLMapElement.h \
+ $(intermediates)/html/JSHTMLMarqueeElement.h \
+ $(intermediates)/html/JSHTMLMediaElement.h \
+ $(intermediates)/html/JSHTMLMenuElement.h \
+ $(intermediates)/html/JSHTMLMetaElement.h \
+ $(intermediates)/html/JSHTMLModElement.h \
+ $(intermediates)/html/JSHTMLOListElement.h \
+ $(intermediates)/html/JSHTMLObjectElement.h \
+ $(intermediates)/html/JSHTMLOptGroupElement.h \
+ $(intermediates)/html/JSHTMLOptionElement.h \
+ $(intermediates)/html/JSHTMLOptionsCollection.h \
+ $(intermediates)/html/JSHTMLParagraphElement.h \
+ $(intermediates)/html/JSHTMLParamElement.h \
+ $(intermediates)/html/JSHTMLPreElement.h \
+ $(intermediates)/html/JSHTMLQuoteElement.h \
+ $(intermediates)/html/JSHTMLScriptElement.h \
+ $(intermediates)/html/JSHTMLSelectElement.h \
+ $(intermediates)/html/JSHTMLSourceElement.h \
+ $(intermediates)/html/JSHTMLStyleElement.h \
+ $(intermediates)/html/JSHTMLTableCaptionElement.h \
+ $(intermediates)/html/JSHTMLTableCellElement.h \
+ $(intermediates)/html/JSHTMLTableColElement.h \
+ $(intermediates)/html/JSHTMLTableElement.h \
+ $(intermediates)/html/JSHTMLTableRowElement.h \
+ $(intermediates)/html/JSHTMLTableSectionElement.h \
+ $(intermediates)/html/JSHTMLTextAreaElement.h \
+ $(intermediates)/html/JSHTMLTitleElement.h \
+ $(intermediates)/html/JSHTMLUListElement.h \
+ $(intermediates)/html/JSHTMLVideoElement.h \
+ $(intermediates)/html/JSImageData.h \
+ $(intermediates)/html/JSMediaError.h \
+ $(intermediates)/html/JSTextMetrics.h \
+ $(intermediates)/html/JSTimeRanges.h \
+ $(intermediates)/html/JSVoidCallback.h
+
+$(GEN): PRIVATE_PATH := $(LOCAL_PATH)
+$(GEN): PRIVATE_CUSTOM_TOOL = perl -I$(PRIVATE_PATH)/bindings/scripts $(PRIVATE_PATH)/bindings/scripts/generate-bindings.pl --defines "$(FEATURE_DEFINES) LANGUAGE_JAVASCRIPT" --generator JS --include dom --include html --outputdir $(dir $@) $<
+$(GEN): $(intermediates)/html/JS%.h : $(LOCAL_PATH)/html/%.idl $(js_binding_scripts)
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN) $(GEN:%.h=%.cpp)
+
+# We also need the .cpp files, which are generated as side effects of the
+# above rules. Specifying this explicitly makes -j2 work.
+$(patsubst %.h,%.cpp,$(GEN)): $(intermediates)/html/%.cpp : $(intermediates)/html/%.h
+
+GEN := \
+ $(intermediates)/inspector/JSJavaScriptCallFrame.h
+
+$(GEN): PRIVATE_PATH := $(LOCAL_PATH)
+$(GEN): PRIVATE_CUSTOM_TOOL = perl -I$(PRIVATE_PATH)/bindings/scripts $(PRIVATE_PATH)/bindings/scripts/generate-bindings.pl --defines "$(FEATURE_DEFINES) LANGUAGE_JAVASCRIPT" --generator JS --include dom --include html --outputdir $(dir $@) $<
+$(GEN): $(intermediates)/inspector/JS%.h : $(LOCAL_PATH)/inspector/%.idl $(js_binding_scripts)
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN) $(GEN:%.h=%.cpp)
+
+# We also need the .cpp files, which are generated as side effects of the
+# above rules. Specifying this explicitly makes -j2 work.
+$(patsubst %.h,%.cpp,$(GEN)): $(intermediates)/inspector/%.cpp : $(intermediates)/inspector/%.h
+
+GEN := \
+ $(intermediates)/loader/appcache/JSDOMApplicationCache.h
+
+$(GEN): PRIVATE_PATH := $(LOCAL_PATH)
+$(GEN): PRIVATE_CUSTOM_TOOL = perl -I$(PRIVATE_PATH)/bindings/scripts $(PRIVATE_PATH)/bindings/scripts/generate-bindings.pl --defines "$(FEATURE_DEFINES) LANGUAGE_JAVASCRIPT" --generator JS --include dom --include html --outputdir $(dir $@) $<
+$(GEN): $(intermediates)/loader/appcache/JS%.h : $(LOCAL_PATH)/loader/appcache/%.idl $(js_binding_scripts)
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN) $(GEN:%.h=%.cpp)
+
+# We also need the .cpp files, which are generated as side effects of the
+# above rules. Specifying this explicitly makes -j2 work.
+$(patsubst %.h,%.cpp,$(GEN)): $(intermediates)/loader/appcache/%.cpp : $(intermediates)/loader/appcache/%.h
+
+# MANUAL MERGE : I took this out because compiling the result shows:
+# out/.../JSAbstractView.cpp:27:26: error: AbstractView.h: No such file or directory
+# I can't find AbstractView.h anywhere
+# $(intermediates)/page/JSAbstractView.h \
+
+GEN := \
+ $(intermediates)/page/JSBarInfo.h \
+ $(intermediates)/page/JSConsole.h \
+ $(intermediates)/page/JSCoordinates.h \
+ $(intermediates)/page/JSDOMSelection.h \
+ $(intermediates)/page/JSDOMWindow.h \
+ $(intermediates)/page/JSGeolocation.h \
+ $(intermediates)/page/JSGeoposition.h \
+ $(intermediates)/page/JSHistory.h \
+ $(intermediates)/page/JSLocation.h \
+ $(intermediates)/page/JSNavigator.h \
+ $(intermediates)/page/JSPositionError.h \
+ $(intermediates)/page/JSScreen.h \
+ $(intermediates)/page/JSWebKitPoint.h \
+ $(intermediates)/page/JSWorkerNavigator.h
+
+$(GEN): PRIVATE_PATH := $(LOCAL_PATH)
+$(GEN): PRIVATE_CUSTOM_TOOL = perl -I$(PRIVATE_PATH)/bindings/scripts $(PRIVATE_PATH)/bindings/scripts/generate-bindings.pl --defines "$(FEATURE_DEFINES) LANGUAGE_JAVASCRIPT" --generator JS --include dom --include html --outputdir $(dir $@) $<
+$(GEN): $(intermediates)/page/JS%.h : $(LOCAL_PATH)/page/%.idl $(js_binding_scripts)
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN) $(GEN:%.h=%.cpp)
+
+# We also need the .cpp files, which are generated as side effects of the
+# above rules. Specifying this explicitly makes -j2 work.
+$(patsubst %.h,%.cpp,$(GEN)): $(intermediates)/page/%.cpp : $(intermediates)/page/%.h
+
+GEN := \
+ $(intermediates)/plugins/JSMimeType.h \
+ $(intermediates)/plugins/JSMimeTypeArray.h \
+ $(intermediates)/plugins/JSPlugin.h \
+ $(intermediates)/plugins/JSPluginArray.h
+
+$(GEN): PRIVATE_PATH := $(LOCAL_PATH)
+$(GEN): PRIVATE_CUSTOM_TOOL = perl -I$(PRIVATE_PATH)/bindings/scripts $(PRIVATE_PATH)/bindings/scripts/generate-bindings.pl --defines "$(FEATURE_DEFINES) LANGUAGE_JAVASCRIPT" --generator JS --include dom --include html --outputdir $(dir $@) $<
+$(GEN): $(intermediates)/plugins/JS%.h : $(LOCAL_PATH)/plugins/%.idl $(js_binding_scripts)
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN) $(GEN:%.h=%.cpp)
+
+# We also need the .cpp files, which are generated as side effects of the
+# above rules. Specifying this explicitly makes -j2 work.
+$(patsubst %.h,%.cpp,$(GEN)): $(intermediates)/plugins/%.cpp : $(intermediates)/plugins/%.h
+
+# New section for Database storage API
+GEN := \
+ $(intermediates)/storage/JSDatabase.h \
+ $(intermediates)/storage/JSSQLError.h \
+ $(intermediates)/storage/JSSQLResultSet.h \
+ $(intermediates)/storage/JSSQLResultSetRowList.h \
+ $(intermediates)/storage/JSSQLTransaction.h
+
+$(GEN): PRIVATE_PATH := $(LOCAL_PATH)
+$(GEN): PRIVATE_CUSTOM_TOOL = perl -I$(PRIVATE_PATH)/bindings/scripts $(PRIVATE_PATH)/bindings/scripts/generate-bindings.pl --defines "$(FEATURE_DEFINES) LANGUAGE_JAVASCRIPT" --generator JS --include dom --include html --outputdir $(dir $@) $<
+$(GEN): $(intermediates)/storage/JS%.h : $(LOCAL_PATH)/storage/%.idl $(js_binding_scripts)
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN) $(GEN:%.h=%.cpp)
+
+# We also need the .cpp files, which are generated as side effects of the
+# above rules. Specifying this explicitly makes -j2 work.
+$(patsubst %.h,%.cpp,$(GEN)): $(intermediates)/storage/%.cpp : $(intermediates)/storage/%.h
+
+# new section for DOM Storage APIs
+GEN := \
+ $(intermediates)/storage/JSStorage.h \
+ $(intermediates)/storage/JSStorageEvent.h
+
+$(GEN): PRIVATE_PATH := $(LOCAL_PATH)
+$(GEN): PRIVATE_CUSTOM_TOOL = perl -I$(PRIVATE_PATH)/bindings/scripts $(PRIVATE_PATH)/bindings/scripts/generate-bindings.pl --defines "$(FEATURE_DEFINES) LANGUAGE_JAVASCRIPT" --generator JS --include dom --include html --outputdir $(dir $@) $<
+$(GEN): $(intermediates)/storage/JS%.h : $(LOCAL_PATH)/storage/%.idl $(js_binding_scripts)
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN) $(GEN:%.h=%.cpp)
+
+# We also need the .cpp files, which are generated as side effects of the
+# above rules. Specifying this explicitly makes -j2 work.
+$(patsubst %.h,%.cpp,$(GEN)): $(intermediates)/storage/%.cpp : $(intermediates)/storage/%.h
+
+#new section for svg
+ifeq ($(ENABLE_SVG), true)
+GEN := \
+ $(intermediates)/svg/JSSVGAElement.h \
+ $(intermediates)/svg/JSSVGAltGlyphElement.h \
+ $(intermediates)/svg/JSSVGAngle.h \
+ $(intermediates)/svg/JSSVGAnimateColorElement.h \
+ $(intermediates)/svg/JSSVGAnimateElement.h \
+ $(intermediates)/svg/JSSVGAnimateTransformElement.h \
+ $(intermediates)/svg/JSSVGAnimatedAngle.h \
+ $(intermediates)/svg/JSSVGAnimatedBoolean.h \
+ $(intermediates)/svg/JSSVGAnimatedEnumeration.h \
+ $(intermediates)/svg/JSSVGAnimatedInteger.h \
+ $(intermediates)/svg/JSSVGAnimatedLength.h \
+ $(intermediates)/svg/JSSVGAnimatedLengthList.h \
+ $(intermediates)/svg/JSSVGAnimatedNumber.h \
+ $(intermediates)/svg/JSSVGAnimatedNumberList.h \
+ $(intermediates)/svg/JSSVGAnimatedPreserveAspectRatio.h \
+ $(intermediates)/svg/JSSVGAnimatedRect.h \
+ $(intermediates)/svg/JSSVGAnimatedString.h \
+ $(intermediates)/svg/JSSVGAnimatedTransformList.h \
+ $(intermediates)/svg/JSSVGAnimationElement.h \
+ $(intermediates)/svg/JSSVGCircleElement.h \
+ $(intermediates)/svg/JSSVGClipPathElement.h \
+ $(intermediates)/svg/JSSVGColor.h \
+ $(intermediates)/svg/JSSVGComponentTransferFunctionElement.h \
+ $(intermediates)/svg/JSSVGCursorElement.h \
+ $(intermediates)/svg/JSSVGDefinitionSrcElement.h \
+ $(intermediates)/svg/JSSVGDefsElement.h \
+ $(intermediates)/svg/JSSVGDescElement.h \
+ $(intermediates)/svg/JSSVGDocument.h \
+ $(intermediates)/svg/JSSVGElement.h \
+ $(intermediates)/svg/JSSVGElementInstance.h \
+ $(intermediates)/svg/JSSVGElementInstanceList.h \
+ $(intermediates)/svg/JSSVGEllipseElement.h \
+ $(intermediates)/svg/JSSVGException.h \
+ $(intermediates)/svg/JSSVGFEBlendElement.h \
+ $(intermediates)/svg/JSSVGFEColorMatrixElement.h \
+ $(intermediates)/svg/JSSVGFEComponentTransferElement.h \
+ $(intermediates)/svg/JSSVGFECompositeElement.h \
+ $(intermediates)/svg/JSSVGFEDiffuseLightingElement.h \
+ $(intermediates)/svg/JSSVGFEDisplacementMapElement.h \
+ $(intermediates)/svg/JSSVGFEDistantLightElement.h \
+ $(intermediates)/svg/JSSVGFEFloodElement.h \
+ $(intermediates)/svg/JSSVGFEFuncAElement.h \
+ $(intermediates)/svg/JSSVGFEFuncBElement.h \
+ $(intermediates)/svg/JSSVGFEFuncGElement.h \
+ $(intermediates)/svg/JSSVGFEFuncRElement.h \
+ $(intermediates)/svg/JSSVGFEGaussianBlurElement.h \
+ $(intermediates)/svg/JSSVGFEImageElement.h \
+ $(intermediates)/svg/JSSVGFEMergeElement.h \
+ $(intermediates)/svg/JSSVGFEMergeNodeElement.h \
+ $(intermediates)/svg/JSSVGFEOffsetElement.h \
+ $(intermediates)/svg/JSSVGFEPointLightElement.h \
+ $(intermediates)/svg/JSSVGFESpecularLightingElement.h \
+ $(intermediates)/svg/JSSVGFESpotLightElement.h \
+ $(intermediates)/svg/JSSVGFETileElement.h \
+ $(intermediates)/svg/JSSVGFETurbulenceElement.h \
+ $(intermediates)/svg/JSSVGFilterElement.h \
+ $(intermediates)/svg/JSSVGFontElement.h \
+ $(intermediates)/svg/JSSVGFontFaceElement.h \
+ $(intermediates)/svg/JSSVGFontFaceFormatElement.h \
+ $(intermediates)/svg/JSSVGFontFaceNameElement.h \
+ $(intermediates)/svg/JSSVGFontFaceSrcElement.h \
+ $(intermediates)/svg/JSSVGFontFaceUriElement.h \
+ $(intermediates)/svg/JSSVGForeignObjectElement.h \
+ $(intermediates)/svg/JSSVGGElement.h \
+ $(intermediates)/svg/JSSVGGlyphElement.h \
+ $(intermediates)/svg/JSSVGGradientElement.h \
+ $(intermediates)/svg/JSSVGHKernElement.h \
+ $(intermediates)/svg/JSSVGImageElement.h \
+ $(intermediates)/svg/JSSVGLength.h \
+ $(intermediates)/svg/JSSVGLengthList.h \
+ $(intermediates)/svg/JSSVGLineElement.h \
+ $(intermediates)/svg/JSSVGLinearGradientElement.h \
+ $(intermediates)/svg/JSSVGMarkerElement.h \
+ $(intermediates)/svg/JSSVGMaskElement.h \
+ $(intermediates)/svg/JSSVGMatrix.h \
+ $(intermediates)/svg/JSSVGMetadataElement.h \
+ $(intermediates)/svg/JSSVGMissingGlyphElement.h \
+ $(intermediates)/svg/JSSVGNumber.h \
+ $(intermediates)/svg/JSSVGNumberList.h \
+ $(intermediates)/svg/JSSVGPaint.h \
+ $(intermediates)/svg/JSSVGPathElement.h \
+ $(intermediates)/svg/JSSVGPathSeg.h \
+ $(intermediates)/svg/JSSVGPathSegArcAbs.h \
+ $(intermediates)/svg/JSSVGPathSegArcRel.h \
+ $(intermediates)/svg/JSSVGPathSegClosePath.h \
+ $(intermediates)/svg/JSSVGPathSegCurvetoCubicAbs.h \
+ $(intermediates)/svg/JSSVGPathSegCurvetoCubicRel.h \
+ $(intermediates)/svg/JSSVGPathSegCurvetoCubicSmoothAbs.h \
+ $(intermediates)/svg/JSSVGPathSegCurvetoCubicSmoothRel.h \
+ $(intermediates)/svg/JSSVGPathSegCurvetoQuadraticAbs.h \
+ $(intermediates)/svg/JSSVGPathSegCurvetoQuadraticRel.h \
+ $(intermediates)/svg/JSSVGPathSegCurvetoQuadraticSmoothAbs.h \
+ $(intermediates)/svg/JSSVGPathSegCurvetoQuadraticSmoothRel.h \
+ $(intermediates)/svg/JSSVGPathSegLinetoAbs.h \
+ $(intermediates)/svg/JSSVGPathSegLinetoHorizontalAbs.h \
+ $(intermediates)/svg/JSSVGPathSegLinetoHorizontalRel.h \
+ $(intermediates)/svg/JSSVGPathSegLinetoRel.h \
+ $(intermediates)/svg/JSSVGPathSegLinetoVerticalAbs.h \
+ $(intermediates)/svg/JSSVGPathSegLinetoVerticalRel.h \
+ $(intermediates)/svg/JSSVGPathSegList.h \
+ $(intermediates)/svg/JSSVGPathSegMovetoAbs.h \
+ $(intermediates)/svg/JSSVGPathSegMovetoRel.h \
+ $(intermediates)/svg/JSSVGPatternElement.h \
+ $(intermediates)/svg/JSSVGPoint.h \
+ $(intermediates)/svg/JSSVGPointList.h \
+ $(intermediates)/svg/JSSVGPolygonElement.h \
+ $(intermediates)/svg/JSSVGPolylineElement.h \
+ $(intermediates)/svg/JSSVGPreserveAspectRatio.h \
+ $(intermediates)/svg/JSSVGRadialGradientElement.h \
+ $(intermediates)/svg/JSSVGRect.h \
+ $(intermediates)/svg/JSSVGRectElement.h \
+ $(intermediates)/svg/JSSVGRenderingIntent.h \
+ $(intermediates)/svg/JSSVGSVGElement.h \
+ $(intermediates)/svg/JSSVGScriptElement.h \
+ $(intermediates)/svg/JSSVGSetElement.h \
+ $(intermediates)/svg/JSSVGStopElement.h \
+ $(intermediates)/svg/JSSVGStringList.h \
+ $(intermediates)/svg/JSSVGStyleElement.h \
+ $(intermediates)/svg/JSSVGSwitchElement.h \
+ $(intermediates)/svg/JSSVGSymbolElement.h \
+ $(intermediates)/svg/JSSVGTRefElement.h \
+ $(intermediates)/svg/JSSVGTSpanElement.h \
+ $(intermediates)/svg/JSSVGTextContentElement.h \
+ $(intermediates)/svg/JSSVGTextElement.h \
+ $(intermediates)/svg/JSSVGTextPathElement.h \
+ $(intermediates)/svg/JSSVGTextPositioningElement.h \
+ $(intermediates)/svg/JSSVGTitleElement.h \
+ $(intermediates)/svg/JSSVGTransform.h \
+ $(intermediates)/svg/JSSVGTransformList.h \
+ $(intermediates)/svg/JSSVGUnitTypes.h \
+ $(intermediates)/svg/JSSVGUseElement.h \
+ $(intermediates)/svg/JSSVGViewElement.h \
+ $(intermediates)/svg/JSSVGZoomEvent.h
+$(GEN): PRIVATE_PATH := $(LOCAL_PATH)
+$(GEN): PRIVATE_CUSTOM_TOOL = perl -I$(PRIVATE_PATH)/bindings/scripts $(PRIVATE_PATH)/bindings/scripts/generate-bindings.pl --defines "$(FEATURE_DEFINES) LANGUAGE_JAVASCRIPT" --generator JS --include external/webkit/WebCore/dom --include external/webkit/WebCore/html --include external/webkit/WebCore/svg --outputdir $(dir $@) $<
+$(GEN): $(intermediates)/svg/JS%.h : $(LOCAL_PATH)/svg/%.idl $(js_binding_scripts)
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN) $(GEN:%.h=%.cpp)
+
+# We also need the .cpp files, which are generated as side effects of the
+# above rules. Specifying this explicitly makes -j2 work.
+$(patsubst %.h,%.cpp,$(GEN)): $(intermediates)/svg/%.cpp : $(intermediates)/svg/%.h
+endif
+
+# new section for Workers
+GEN := \
+ $(intermediates)/workers/JSWorker.h \
+ $(intermediates)/workers/JSWorkerContext.h \
+ $(intermediates)/workers/JSWorkerLocation.h
+
+$(GEN): PRIVATE_PATH := $(LOCAL_PATH)
+$(GEN): PRIVATE_CUSTOM_TOOL = perl -I$(PRIVATE_PATH)/bindings/scripts $(PRIVATE_PATH)/bindings/scripts/generate-bindings.pl --defines "$(FEATURE_DEFINES) LANGUAGE_JAVASCRIPT" --generator JS --include dom --include html --outputdir $(dir $@) $<
+$(GEN): $(intermediates)/workers/JS%.h : $(LOCAL_PATH)/workers/%.idl $(js_binding_scripts)
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN) $(GEN:%.h=%.cpp)
+
+# We also need the .cpp files, which are generated as side effects of the
+# above rules. Specifying this explicitly makes -j2 work.
+$(patsubst %.h,%.cpp,$(GEN)): $(intermediates)/workers/%.cpp : $(intermediates)/workers/%.h
+
+#new section for xml/DOMParser.idl
+GEN := \
+ $(intermediates)/xml/JSDOMParser.h \
+ $(intermediates)/xml/JSXMLHttpRequest.h \
+ $(intermediates)/xml/JSXMLHttpRequestException.h \
+ $(intermediates)/xml/JSXMLHttpRequestProgressEvent.h \
+ $(intermediates)/xml/JSXMLHttpRequestUpload.h \
+ $(intermediates)/xml/JSXMLSerializer.h \
+ $(intermediates)/xml/JSXPathEvaluator.h \
+ $(intermediates)/xml/JSXPathException.h \
+ $(intermediates)/xml/JSXPathExpression.h \
+ $(intermediates)/xml/JSXPathNSResolver.h \
+ $(intermediates)/xml/JSXPathResult.h \
+ $(intermediates)/xml/JSXSLTProcessor.h
+$(GEN): PRIVATE_PATH := $(LOCAL_PATH)
+$(GEN): PRIVATE_CUSTOM_TOOL = perl -I$(PRIVATE_PATH)/bindings/scripts $(PRIVATE_PATH)/bindings/scripts/generate-bindings.pl --defines "$(FEATURE_DEFINES) LANGUAGE_JAVASCRIPT" --generator JS --include dom --include html --outputdir $(dir $@) $<
+$(GEN): $(intermediates)/xml/JS%.h : $(LOCAL_PATH)/xml/%.idl $(js_binding_scripts)
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN) $(GEN:%.h=%.cpp)
+
+# We also need the .cpp files, which are generated as side effects of the
+# above rules. Specifying this explicitly makes -j2 work.
+$(patsubst %.h,%.cpp,$(GEN)): $(intermediates)/xml/%.cpp : $(intermediates)/xml/%.h
+#end
+
+# HTML tag and attribute names
+
+GEN:= $(intermediates)/HTMLNames.cpp $(intermediates)/HTMLElementFactory.cpp $(intermediates)/JSHTMLElementWrapperFactory.cpp
+$(GEN): PRIVATE_PATH := $(LOCAL_PATH)
+$(GEN): PRIVATE_CUSTOM_TOOL = perl -I $(PRIVATE_PATH)/bindings/scripts $< --tags $(html_tags) --attrs $(html_attrs) --extraDefines "$(FEATURE_DEFINES)" --factory --wrapperFactory --output $(dir $@)
+$(GEN): html_tags := $(LOCAL_PATH)/html/HTMLTagNames.in
+$(GEN): html_attrs := $(LOCAL_PATH)/html/HTMLAttributeNames.in
+$(GEN): $(LOCAL_PATH)/dom/make_names.pl $(html_tags) $(html_attrs)
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+# SVG tag and attribute names
+
+ifeq ($(ENABLE_SVG), true)
+GEN:= $(intermediates)/SVGNames.cpp $(intermediates)/SVGElementFactory.cpp $(intermediates)/JSSVGElementWrapperFactory.cpp
+SVG_FLAGS:=ENABLE_SVG_AS_IMAGE=1 ENABLE_SVG_FILTERS=1 ENABLE_SVG_FONTS=1 ENABLE_SVG_FOREIGN_OBJECT=1 ENABLE_SVG_USE=1
+$(GEN): PRIVATE_PATH := $(LOCAL_PATH)
+$(GEN): PRIVATE_CUSTOM_TOOL = perl -I $(PRIVATE_PATH)/bindings/scripts $< --tags $(svg_tags) --attrs $(svg_attrs) --extraDefines "$(SVG_FLAGS)" --factory --wrapperFactory --output $(dir $@)
+$(GEN): svg_tags := $(LOCAL_PATH)/svg/svgtags.in
+$(GEN): svg_attrs := $(LOCAL_PATH)/svg/svgattrs.in
+$(GEN): $(LOCAL_PATH)/dom/make_names.pl $(svg_tags) $(svg_attrs)
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+endif
+
+# XML attribute names
+
+GEN:= $(intermediates)/XMLNames.cpp
+$(GEN): PRIVATE_PATH := $(LOCAL_PATH)
+$(GEN): PRIVATE_CUSTOM_TOOL = perl -I $(PRIVATE_PATH)/bindings/scripts $< --attrs $(xml_attrs) --output $(dir $@)
+$(GEN): xml_attrs := $(LOCAL_PATH)/xml/xmlattrs.in
+$(GEN): $(LOCAL_PATH)/dom/make_names.pl $(xml_attrs)
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+# XLink attribute names
+
+ifeq ($(ENABLE_SVG), true)
+GEN:= $(intermediates)/XLinkNames.cpp
+$(GEN): PRIVATE_PATH := $(LOCAL_PATH)
+$(GEN): PRIVATE_CUSTOM_TOOL = perl -I $(PRIVATE_PATH)/bindings/scripts $< --attrs $(xlink_attrs) --output $(dir $@)
+$(GEN): xlink_attrs := $(LOCAL_PATH)/svg/xlinkattrs.in
+$(GEN): $(LOCAL_PATH)/dom/make_names.pl $(xlink_attrs)
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+endif
diff --git a/WebCore/Android.mk b/WebCore/Android.mk
index 3564483..3de7e2f 100644
--- a/WebCore/Android.mk
+++ b/WebCore/Android.mk
@@ -124,7 +124,6 @@ LOCAL_SRC_FILES := \
bindings/js/JSAudioConstructor.cpp \
bindings/js/JSCDATASectionCustom.cpp \
bindings/js/JSCSSRuleCustom.cpp \
- bindings/js/JSCSSRuleListCustom.cpp \
bindings/js/JSCSSStyleDeclarationCustom.cpp \
bindings/js/JSCSSValueCustom.cpp \
bindings/js/JSCanvasRenderingContext2DCustom.cpp \
@@ -149,19 +148,15 @@ LOCAL_SRC_FILES := \
bindings/js/JSDataGridDataSource.cpp \
bindings/js/JSDatabaseCustom.cpp \
bindings/js/JSDedicatedWorkerContextCustom.cpp \
- bindings/js/JSDesktopNotificationsCustom.cpp \
bindings/js/JSDocumentCustom.cpp \
bindings/js/JSDocumentFragmentCustom.cpp \
bindings/js/JSElementCustom.cpp \
bindings/js/JSEventCustom.cpp \
bindings/js/JSEventListener.cpp \
- bindings/js/JSEventSourceConstructor.cpp \
- bindings/js/JSEventSourceCustom.cpp \
bindings/js/JSEventTarget.cpp \
bindings/js/JSGeolocationCustom.cpp \
bindings/js/JSHTMLAllCollection.cpp \
bindings/js/JSHTMLAppletElementCustom.cpp \
- bindings/js/JSHTMLCanvasElementCustom.cpp \
bindings/js/JSHTMLCollectionCustom.cpp \
bindings/js/JSHTMLDataGridElementCustom.cpp \
bindings/js/JSHTMLDocumentCustom.cpp \
@@ -274,7 +269,6 @@ LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \
bridge/runtime_object.cpp \
bridge/runtime_root.cpp \
bridge/testbindings.cpp \
- bridge/testqtbindings.cpp \
\
css/CSSBorderImageValue.cpp \
css/CSSCanvasValue.cpp \
@@ -517,7 +511,6 @@ LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \
html/HTMLDataGridColElement.cpp \
html/HTMLDataGridElement.cpp \
html/HTMLDataGridRowElement.cpp \
- html/HTMLDataListElement.cpp \
html/HTMLDirectoryElement.cpp \
html/HTMLDivElement.cpp \
html/HTMLDocument.cpp \
@@ -590,7 +583,6 @@ LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \
html/PreloadScanner.cpp \
html/TimeRanges.cpp \
html/ValidityState.cpp \
- html/canvas/CanvasGradient.cpp \
\
loader/Cache.cpp \
loader/CachedCSSStyleSheet.cpp \
@@ -646,8 +638,6 @@ LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \
\
loader/loader.cpp \
\
- notifications/Notification.cpp \
- notifications/NotificationCenter.cpp \
page/BarInfo.cpp \
page/Chrome.cpp \
page/Console.cpp \
@@ -658,7 +648,6 @@ LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \
page/DOMWindow.cpp \
page/DragController.cpp \
page/EventHandler.cpp \
- page/EventSource.cpp \
page/FocusController.cpp \
page/Frame.cpp \
page/FrameTree.cpp \
@@ -683,15 +672,18 @@ LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \
\
page/android/DragControllerAndroid.cpp \
page/android/EventHandlerAndroid.cpp \
+ page/android/EventHandlerAndroid.cpp \
+ page/android/InspectorControllerAndroid.cpp \
page/android/InspectorControllerAndroid.cpp \
+ page/android/DragControllerAndroid.cpp \
\
+ page/XSSAuditor.cpp \
page/animation/AnimationBase.cpp \
page/animation/AnimationController.cpp \
page/animation/CompositeAnimation.cpp \
page/animation/ImplicitAnimation.cpp \
page/animation/KeyframeAnimation.cpp \
page/haiku/DragControllerHaiku.cpp \
- page/haiku/EventHandlerHaiku.cpp \
\
platform/Arena.cpp \
platform/ContentType.cpp \
@@ -765,7 +757,6 @@ LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \
platform/graphics/GraphicsTypes.cpp \
platform/graphics/Image.cpp \
platform/graphics/ImageBuffer.cpp \
- platform/graphics/ImageSource.cpp \
platform/graphics/IntRect.cpp \
platform/graphics/MediaPlayer.cpp \
platform/graphics/Path.cpp \
@@ -801,15 +792,6 @@ LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \
endif
LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \
- platform/graphics/haiku/ColorHaiku.cpp \
- platform/graphics/haiku/FloatPointHaiku.cpp \
- platform/graphics/haiku/FloatRectHaiku.cpp \
- platform/graphics/haiku/GradientHaiku.cpp \
- platform/graphics/haiku/GraphicsContextHaiku.cpp \
- platform/graphics/haiku/IntPointHaiku.cpp \
- platform/graphics/haiku/IntRectHaiku.cpp \
- platform/graphics/haiku/IntSizeHaiku.cpp \
- platform/graphics/haiku/PathHaiku.cpp \
platform/graphics/opentype/OpenTypeUtilities.cpp \
platform/graphics/skia/NativeImageSkia.cpp \
\
@@ -822,9 +804,7 @@ LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \
platform/graphics/transforms/TransformOperations.cpp \
platform/graphics/transforms/TransformationMatrix.cpp \
platform/graphics/transforms/TranslateTransformOperation.cpp \
- platform/graphics/wince/ColorWince.cpp \
platform/graphics/wince/FontCacheWince.cpp \
- platform/graphics/wince/FontCustomPlatformData.cpp \
\
platform/haiku/ClipboardHaiku.cpp \
platform/haiku/ContextMenuHaiku.cpp \
@@ -836,19 +816,14 @@ LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \
platform/haiku/EventLoopHaiku.cpp \
platform/haiku/FileChooserHaiku.cpp \
platform/haiku/FileSystemHaiku.cpp \
- platform/haiku/LocalizedStringsHaiku.cpp \
- platform/haiku/LoggingHaiku.cpp \
platform/haiku/MIMETypeRegistryHaiku.cpp \
platform/haiku/PasteboardHaiku.cpp \
platform/haiku/PlatformKeyboardEventHaiku.cpp \
platform/haiku/PlatformMouseEventHaiku.cpp \
platform/haiku/PlatformWheelEventHaiku.cpp \
platform/haiku/PopupMenuHaiku.cpp \
- platform/haiku/RenderThemeHaiku.cpp \
platform/haiku/ScreenHaiku.cpp \
- platform/haiku/ScrollbarThemeHaiku.cpp \
platform/haiku/SearchPopupMenuHaiku.cpp \
- platform/haiku/SharedBufferHaiku.cpp \
platform/haiku/SoundHaiku.cpp \
platform/haiku/TemporaryLinkStubs.cpp \
platform/haiku/WidgetHaiku.cpp \
@@ -906,7 +881,6 @@ LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \
\
platform/text/android/TextBreakIteratorInternalICU.cpp \
platform/text/haiku/StringHaiku.cpp \
- platform/text/haiku/TextBreakIteratorInternalICUHaiku.cpp \
\
plugins/MimeType.cpp \
plugins/MimeTypeArray.cpp \
@@ -1086,14 +1060,12 @@ LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \
storage/SQLResultSetRowList.cpp \
storage/SQLStatement.cpp \
storage/SQLTransaction.cpp \
- storage/SQLTransactionCoordinator.cpp \
storage/Storage.cpp \
storage/StorageAreaImpl.cpp \
storage/StorageAreaSync.cpp \
storage/StorageEvent.cpp \
storage/StorageMap.cpp \
storage/StorageNamespace.cpp \
- storage/StorageNamespaceImpl.cpp \
ifeq ($(ENABLE_SVG), true)
LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 5175089..53c2690 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,4247 +1,3 @@
-2009-08-18 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Support for parsing <datalist> element and generating HTMLDataListElement nodes.
- https://bugs.webkit.org/show_bug.cgi?id=26915
-
- Tests: fast/forms/datalist-nonoption-child.html
- fast/forms/datalist.html
-
- * WebCore.gypi:
- * WebCore.pro:
- * WebCore.vcproj/WebCore.vcproj:
- * WebCore.vcproj/WebCoreCommon.vsprops:
- * WebCore.vcproj/build-generated-files.sh:
- * WebCore.xcodeproj/project.pbxproj:
- * WebCoreSources.bkl:
- * css/html.css:
- * html/CollectionType.h:
- (WebCore::):
- * html/HTMLCollection.cpp:
- (WebCore::HTMLCollection::itemAfter):
- * html/HTMLDataListElement.cpp: Added.
- (WebCore::HTMLDataListElement::HTMLDataListElement):
- (WebCore::HTMLDataListElement::~HTMLDataListElement):
- (WebCore::HTMLDataListElement::checkDTD):
- (WebCore::HTMLDataListElement::options):
- * html/HTMLDataListElement.h: Added.
- * html/HTMLDataListElement.idl: Added.
- * html/HTMLElement.cpp:
- (WebCore::inlineTagList):
- * html/HTMLParser.cpp:
- (WebCore::HTMLParser::isAffectedByResidualStyle):
- * html/HTMLTagNames.in:
-
-2009-08-17 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by Eric Seidel.
-
- -webkit-box-orient:horizontal doesn't work on <button> tag
- https://bugs.webkit.org/show_bug.cgi?id=34445
-
- Make a flexible button's anonymous child flexible and pass the
- parent's box-orient to the anonymous child.
-
- Also, added a renderName for anonymous flexible boxes.
-
- Test: fast/flexbox/box-orient-button.html
-
- * rendering/RenderBlock.cpp:
- (WebCore::RenderBlock::createAnonymousBlock):
- * rendering/RenderBlock.h:
- * rendering/RenderButton.cpp:
- (WebCore::RenderButton::addChild):
- (WebCore::RenderButton::setupInnerStyle):
- * rendering/RenderFlexibleBox.cpp:
- (WebCore::RenderFlexibleBox::renderName):
-
-2009-08-17 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Dave Hyatt.
-
- Render -webkit-mask via compositing layers when possible
- https://bugs.webkit.org/show_bug.cgi?id=28414
-
- Implement accelerated compositing of -webkit-mask, when combined
- with already-composited content.
-
- RenderLayerBacking now creates an additional GraphicsLayer for the mask contents,
- and sets this as the mask on another GraphicsLayer via the setMaskLayer() method.
- GraphicsLayerCA then applies the mask using -[CALayer setMask:].
-
- The enum values for GraphicsLayerPaintingPhase were renamed to avoid the
- confusion with "mask", and a new value, GraphicsLayerPaintMask, was added which
- indicates that just the mask is painting.
-
- When painting the composited mask, we need to paint with the normal compositing
- mode rather than CompositeDestinationIn, so InlineFlowBox and RenderBox now consult
- layer()->hasCompositedMask() to pick the mode. If the mask is composited, they no longer
- need to make transparency layers.
-
- We no longer have to throw video rendering into software because of masks.
-
- When a masked element has composited descendants, that element needs to
- become composited so that the mask can be applied via compositing.
-
- Tests: compositing/masks/masked-ancestor.html
- compositing/masks/simple-composited-mask.html
-
- * platform/graphics/GraphicsLayer.cpp:
- (WebCore::GraphicsLayer::GraphicsLayer):
- * platform/graphics/GraphicsLayer.h:
- (WebCore::GraphicsLayer::maskLayer):
- (WebCore::GraphicsLayer::setMaskLayer):
- (WebCore::GraphicsLayer::paintingPhase):
- (WebCore::GraphicsLayer::setPaintingPhase):
- * platform/graphics/GraphicsLayerClient.h:
- (WebCore::):
- * platform/graphics/mac/GraphicsLayerCA.h:
- (WebCore::GraphicsLayerCA::):
- * platform/graphics/mac/GraphicsLayerCA.mm:
- (WebCore::GraphicsLayerCA::setMaskLayer):
- (WebCore::GraphicsLayerCA::recursiveCommitChanges):
- (WebCore::GraphicsLayerCA::commitLayerChanges):
- (WebCore::GraphicsLayerCA::updateMaskLayer):
- * rendering/InlineFlowBox.cpp:
- (WebCore::InlineFlowBox::paintMask):
- * rendering/RenderBox.cpp:
- (WebCore::RenderBox::paintMaskImages):
- * rendering/RenderLayer.cpp:
- (WebCore::RenderLayer::hasCompositedMask):
- * rendering/RenderLayer.h:
- (WebCore::RenderLayer::hasCompositedMask):
- * rendering/RenderLayerBacking.cpp:
- (WebCore::RenderLayerBacking::~RenderLayerBacking):
- (WebCore::RenderLayerBacking::destroyGraphicsLayer):
- (WebCore::RenderLayerBacking::updateGraphicsLayerConfiguration):
- (WebCore::RenderLayerBacking::updateGraphicsLayerGeometry):
- (WebCore::RenderLayerBacking::updateForegroundLayer):
- (WebCore::RenderLayerBacking::updateMaskLayer):
- (WebCore::RenderLayerBacking::paintingPhaseForPrimaryLayer):
- (WebCore::RenderLayerBacking::setContentsNeedDisplay):
- (WebCore::RenderLayerBacking::setContentsNeedDisplayInRect):
- (WebCore::RenderLayerBacking::paintIntoLayer):
- (WebCore::RenderLayerBacking::paintContents):
- * rendering/RenderLayerBacking.h:
- (WebCore::RenderLayerBacking::hasMaskLayer):
- * rendering/RenderLayerCompositor.cpp:
- (WebCore::RenderLayerCompositor::computeCompositingRequirements):
- (WebCore::RenderLayerCompositor::canAccelerateVideoRendering):
- (WebCore::RenderLayerCompositor::requiresCompositingWhenDescendantsAreCompositing):
- * rendering/RenderLayerCompositor.h:
-
-2009-08-17 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Dave Hyatt.
-
- Layer content misplaced with compositing, z-index and overflow
- https://bugs.webkit.org/show_bug.cgi?id=28361
-
- The foreground GraphicsLayer (used to render element foreground when the element has
- negative z-order children) was misplaced when there is a clipping layer (which clips
- children). The foreground layer is parented under the clipping layer so that the foreground
- depth-sorts with the layer's children, so its geometry needs to be computed relative to
- that clipping layer.
-
- Also clarified some FIXME comments, and corrected a debug-only layer name.
-
- Test: compositing/geometry/clipping-foreground.html
-
- * platform/graphics/mac/GraphicsLayerCA.mm:
- (WebCore::GraphicsLayerCA::updateSublayerList):
- * rendering/RenderLayerBacking.cpp:
- (WebCore::RenderLayerBacking::updateGraphicsLayerGeometry):
- (WebCore::RenderLayerBacking::updateForegroundLayer):
- * rendering/RenderLayerCompositor.cpp:
- (WebCore::RenderLayerCompositor::rebuildCompositingLayerTree):
-
-2009-08-17 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Sam Weinig.
-
- Fix leaks of SVGElementInstance seen during regression tests.
-
- r47313 made TreeShared types start with a ref-count of 1, but SVGElementInstance was mistakenly
- not updated to have a create method that adopted the initial reference. This lead to the instances
- of SVGElementInstance allocated by SVGUseElement being leaked.
-
- * svg/SVGElementInstance.h:
- (WebCore::SVGElementInstance::create):
- * svg/SVGUseElement.cpp:
- (WebCore::SVGUseElement::buildPendingResource):
- (WebCore::SVGUseElement::buildInstanceTree):
- (WebCore::SVGUseElement::handleDeepUseReferencing):
-
-2009-08-17 Brady Eidson <beidson@apple.com>
-
- Reviewed by Sam Weinig.
-
- Some cleanup towards https://bugs.webkit.org/show_bug.cgi?id=13631
- Page Cache should support pages with frames.
-
- - Re-factor all remaining page cache code out of DocumentLoader, as CachedPage/CacheFrame loads
- are solely the responsibility of FrameLoader.
- - Enhance some page cache related Logging to help development.
-
- * inspector/InspectorController.cpp:
- (WebCore::InspectorController::didCommitLoad):
- (WebCore::InspectorController::identifierForInitialRequest):
-
- * loader/DocumentLoader.cpp:
- (WebCore::DocumentLoader::DocumentLoader):
- * loader/DocumentLoader.h:
-
- * loader/FrameLoader.cpp:
- (WebCore::FrameLoader::FrameLoader):
- (WebCore::FrameLoader::commitProvisionalLoad):
- (WebCore::FrameLoader::continueLoadAfterWillSubmitForm):
- (WebCore::FrameLoader::loadProvisionalItemFromCachedPage):
- * loader/FrameLoader.h:
- (WebCore::FrameLoader::isLoadingFromCachedPage):
-
-2009-08-17 Roland Steiner <rolandsteiner@google.com>
-
- Reviewed by Eric Seidel.
-
- Moved implementation of isAfterContent to RenderObject
- (as inline method to avoid potential performance regressions).
-
- BUG 28376 - [Cleanup] isAfterContent() implemented twice, should be member of RenderObject
- (https://bugs.webkit.org/show_bug.cgi?id=28376)
-
- * rendering/RenderBox.cpp:
- * rendering/RenderBox.h:
- * rendering/RenderInline.cpp:
- * rendering/RenderObject.h:
- (WebCore::RenderObject::isAfterContent):
-
-2009-08-17 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by Darin Adler.
-
- Assertion failure in WebCore::RenderHTMLCanvas::layout
- https://bugs.webkit.org/show_bug.cgi?id=12052
-
- Don't handle run-in if the element is not a block element.
-
- Test: fast/runin/nonblock-runin.html
-
- * rendering/RenderBlock.cpp:
- (WebCore::RenderBlock::handleRunInChild):
-
-2009-08-17 Benjamin C Meyer <benjamin.meyer@torchmobile.com>
-
- Reviewed by Darin Adler.
-
- Fix createImageData to raise the NOT_SUPPORTED_ERR exception when
- either of the arguments are not finite.
-
- According to
- http://www.whatwg.org/specs/web-apps/current-work/#pixel-manipulation:
- "If any of the arguments to createImageData() or getImageData() are
- infinite or NaN, or if the createImageData() method is invoked with
- only one argument but that argument is null, the method must instead
- raise a NOT_SUPPORTED_ERR exception."
-
- Test: http://philip.html5.org/tests/canvas/suite/tests/2d.imageData.create.nonfinite.html
-
- * html/canvas/CanvasRenderingContext2D.cpp:
- (WebCore::CanvasRenderingContext2D::createImageData):
- * html/canvas/CanvasRenderingContext2D.h:
- * html/canvas/CanvasRenderingContext2D.idl:
-
-2009-08-17 Jeremy Orlow <jorlow@chromium.org>
-
- Reviewed by Darin Fisher.
-
- Add a way to release the storage lock
- https://bugs.webkit.org/show_bug.cgi?id=28411
-
- Two scripts within the same origin that are accessing LocalStorage must not do
- it simultaneously, according to the spec. There are some cases, however, where
- a script might want to override this behavior. navigator.getStorageUpdates()
- was added for this reason:
- http://dev.w3.org/html5/spec/Overview.html#manually-releasing-the-storage-mutex
-
- Add this function to navigator and hook it up to DOM Storage.
-
- * page/Navigator.cpp:
- (WebCore::Navigator::getStorageUpdates):
- * page/Navigator.h:
- * page/Navigator.idl:
- * storage/StorageNamespace.h:
- * storage/StorageNamespaceImpl.cpp:
- (WebCore::StorageNamespaceImpl::unlock):
- * storage/StorageNamespaceImpl.h:
-
-2009-08-17 Mark Rowe <mrowe@apple.com>
-
- Build fix.
-
- CFNetwork isn't present in the framework search path on Mac OS X so we can't directly include its headers.
- We include CoreServices.h, the umbrella framework that contains CFNetwork, from the prefix header which
- results in the CFNetwork headers being included on Mac OS X. CoreServices.h doesn't include CFNetwork.h on
- Windows though so we explicitly include this header from the prefix header when on Windows.
-
- * WebCorePrefix.h:
- * platform/network/cf/DNSCFNet.cpp: Remove #include that is no longer needed.
-
-2009-08-17 Alexey Proskuryakov <ap@apple.com>
-
- Trying a better build fix (the previous one broke Leopard bots, although it did build for me).
-
- * platform/network/cf/DNSCFNet.cpp: Include CFNetwork/CFNetwork.h instead.
-
-2009-08-17 Alexey Proskuryakov <ap@apple.com>
-
- Trying to fix Windows build.
-
- * platform/network/cf/DNSCFNet.cpp: Include CFNetwork/CFHost.h.
-
-2009-08-17 Peter Kasting <pkasting@google.com>
-
- Reviewed by Steve Falkenburg.
-
- https://bugs.webkit.org/show_bug.cgi?id=27323
- Only add Cygwin to the path when it isn't already there. This avoids
- causing problems for people who purposefully have non-Cygwin versions of
- executables like svn in front of the Cygwin ones in their paths.
-
- * WebCore.vcproj/QTMovieWin.vcproj:
- * WebCore.vcproj/WebCoreCommon.vsprops:
- * WebCore.vcproj/WebCoreGenerated.vcproj:
-
-2009-08-17 Alexey Proskuryakov <ap@apple.com>
-
- Reviewed by Geoff Garen.
-
- https://bugs.webkit.org/show_bug.cgi?id=28401
- Add support for DNS prefetching with CFNetwork
-
- This is just an optimization, no behavior change, so no tests.
-
- * platform/network/cf/DNSCFNet.cpp:
- (WebCore::clientCallback):
- (WebCore::prefetchDNS):
- Use async CFHostStartInfoResolution() for implementation.
-
-2009-08-17 Aaron Boodman <aa@chromium.org>
-
- Reviewed by Alexey Proskuryakov.
-
- https://bugs.webkit.org/show_bug.cgi?id=28313: Combine ThreadableLoaderOptions::crossOriginRequestPolicy and
- ThreadableLoaderOptions::crossOriginRedirectPolicy since they are always set the same way.
-
- Also, tightened up behavior of XMLHttpRequest with cross-origin redirects and access control. We have not implemented
- redirects access control, so we should never redirect across origins. But in two edge cases, we were:
-
- * Asynchronous XHR: Script on origin A requests resource from origin B. Server redirects (without sending access control
- authorization headers) to a resource on origin A.
- * Synchronous XHR: Script on origin A requests resource from origin B. Server redirects (without sending access control
- authorization headers) to another resource on origin B (this time sending access control authorization headers).
-
- Test: http/tests/xmlhttprequest/access-control-and-redirects.html
-
- * loader/DocumentThreadableLoader.cpp:
- (WebCore::DocumentThreadableLoader::willSendRequest): Refactor redirect checking code into shared location.
- (WebCore::DocumentThreadableLoader::loadRequest): Ditto.
- (WebCore::DocumentThreadableLoader::isAllowedRedirect): Ditto.
- * loader/DocumentThreadableLoader.h:
- * loader/ThreadableLoader.h:
- (WebCore::ThreadableLoaderOptions::ThreadableLoaderOptions): Remove ThreadableLoaderOptions::crossOriginRedirectPolicy.
- * page/EventSource.cpp:
- (WebCore::EventSource::connect): Ditto.
- * workers/Worker.cpp: Ditto.
- (WebCore::Worker::Worker): Ditto.
- * workers/WorkerContext.cpp: Ditto.
- (WebCore::WorkerContext::importScripts): Ditto.
- * workers/WorkerScriptLoader.cpp:
- (WebCore::WorkerScriptLoader::loadSynchronously): Ditto.
- (WebCore::WorkerScriptLoader::loadAsynchronously): Ditto.
- * workers/WorkerScriptLoader.h:
- * xml/XMLHttpRequest.cpp:
- (WebCore::XMLHttpRequest::createRequest): Ditto.
-
-2009-08-17 Adam Langley <agl@google.com>
-
- Reviewed by Dan Bernstein (relanding of r47157).
-
- Fix a typo in platform/graphics/skia/PlatformContextSkia.cpp
-
- https://bugs.webkit.org/show_bug.cgi?id=28172
-
- This was originally fixed in r47157, however it triggered a bug in
- Skia which caused Chromium Linux to fail layout tests in debug mode.
- It was reverted in r47189 while we sorted it out.
-
- The Skia bug was fixed in Skia's r321 [1] and rolled into Chromium in
- Chromium's r23523. This is a reland of the original patch.
-
- No new tests because it's a just typo fix.
-
- [1] http://code.google.com/p/skia/source/detail?r=321
-
- * platform/graphics/skia/PlatformContextSkia.cpp:
- (PlatformContextSkia::setupPaintCommon):
-
-2009-08-17 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
-
- Reviewed by Xan Lopez.
-
- Protect ResourceHandle for g_file_query_info_async call, using the
- same technique we already use for HTTP requests that take the soup
- path.
-
- * platform/network/soup/ResourceHandleSoup.cpp:
- (WebCore::ResourceHandleInternal::~ResourceHandleInternal):
- (WebCore::ResourceHandle::~ResourceHandle):
- (WebCore::finishedCallback):
- (WebCore::):
-
-2009-08-17 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Darin Adler.
-
- REGRESSION (r47255): MediaWiki's (including Wikipedia) navigation pane
- appears below the main content
- https://bugs.webkit.org/show_bug.cgi?id=28350
-
- A particular version of the MediaWiki software detects WebKit through
- user agent sniffing and imports a style sheet called KHTMLFixes.css,
- which contains a single rule that was meant to work around some KHTML
- bug, but currently has the sole effect of causing the float containing
- the main article content to extend all the way to the left and thus push
- down the left navigation pane.
-
- * css/CSSImportRule.cpp:
- (WebCore::CSSImportRule::setCSSStyleSheet): If site specific hacks are
- enabled, check if the imported style sheet is the MediaWiki
- KHTMLFixes.css. If so, remove the offending rule.
-
-2009-08-17 Brent Fulgham <bfulgham@webkit.org>
-
- Reviewed by Kevin Ollivier.
-
- Correct crash when processing local cancelled requests.
-
- No new tests. Existing fast/images/favicon-as-image.html
- displays the problem.
-
- * platform/network/curl/ResourceHandleManager.cpp:
- (WebCore::writeCallback): Add check for m_cancelled after
- performing local-file processing.
- (WebCore::ResourceHandleManager::downloadTimerCallback): Add
- check for m_cancelled after performing local-file processing.
-
-2009-08-17 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
-
- Unreviewed. Reverts 47371, since it breaks GTK+.
-
- * platform/graphics/ImageSource.cpp:
- (WebCore::ImageSource::setData):
- * platform/image-decoders/ImageDecoder.cpp: Removed.
- * platform/image-decoders/ImageDecoder.h:
- (WebCore::ImageDecoder::ImageDecoder):
- * platform/image-decoders/jpeg/JPEGImageDecoder.cpp:
- (WebCore::convertCMYKToRGBA):
- (WebCore::convertRGBToRGBA):
- (WebCore::JPEGImageDecoder::outputScanlines):
- * platform/image-decoders/jpeg/JPEGImageDecoder.h:
- * platform/image-decoders/png/PNGImageDecoder.cpp:
- (WebCore::PNGImageDecoder::headerAvailable):
- (WebCore::PNGImageDecoder::rowAvailable):
-
-2009-08-17 Yong Li <yong.li@torchmobile.com>
-
- Reviewed by Adam Treat.
-
- Allow image decoders to down-sample the image directly
- to scaled output buffer. This can be enabled/disabled by
- macro ENABLE(IMAGE_DECODER_DOWN_SAMPLING).
- Only JPEG and PNG decoders are modified to support it now.
- https://bugs.webkit.org/show_bug.cgi?id=28308
-
- * platform/graphics/ImageSource.cpp:
- (WebCore::ImageSource::setData):
- * platform/image-decoders/ImageDecoder.cpp: Added.
- * platform/image-decoders/ImageDecoder.h:
- (WebCore::ImageDecoder::ImageDecoder):
- (WebCore::ImageDecoder::setMaxNumPixels):
- * platform/image-decoders/jpeg/JPEGImageDecoder.cpp:
- (WebCore::convertCMYKToRGBA):
- (WebCore::convertRGBToRGBA):
- (WebCore::JPEGImageDecoder::outputScanlines):
- * platform/image-decoders/jpeg/JPEGImageDecoder.h:
- (WebCore::JPEGImageDecoder::setSize):
- * platform/image-decoders/png/PNGImageDecoder.cpp:
- (WebCore::PNGImageDecoder::headerAvailable):
- (WebCore::PNGImageDecoder::rowAvailable):
-
-2009-08-17 Simon Fraser <simon.fraser@apple.com>
-
- Build fix: fix float literals to avoid casting warnings.
-
- * rendering/MediaControlElements.cpp:
-
-2009-08-17 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Eric Seidel.
-
- Use OwnPtrs for GraphicsLayers
- https://bugs.webkit.org/show_bug.cgi?id=28399
-
- Convert RenderLayerBacking and RenderLayerCompositor to use OwnPtrs
- for their references to GraphicsLayers.
-
- * platform/graphics/GraphicsLayer.h:
- * platform/graphics/mac/GraphicsLayerCA.mm:
- (WebCore::GraphicsLayer::create):
- * rendering/RenderLayerBacking.cpp:
- (WebCore::RenderLayerBacking::RenderLayerBacking):
- (WebCore::RenderLayerBacking::createGraphicsLayer):
- (WebCore::RenderLayerBacking::destroyGraphicsLayer):
- (WebCore::RenderLayerBacking::updateGraphicsLayerGeometry):
- (WebCore::RenderLayerBacking::updateInternalHierarchy):
- (WebCore::RenderLayerBacking::updateClippingLayers):
- (WebCore::RenderLayerBacking::updateForegroundLayer):
- (WebCore::RenderLayerBacking::setContentsNeedDisplayInRect):
- * rendering/RenderLayerBacking.h:
- (WebCore::RenderLayerBacking::graphicsLayer):
- (WebCore::RenderLayerBacking::clippingLayer):
- (WebCore::RenderLayerBacking::ancestorClippingLayer):
- (WebCore::RenderLayerBacking::foregroundLayer):
- (WebCore::RenderLayerBacking::parentForSublayers):
- (WebCore::RenderLayerBacking::childForSuperlayers):
- * rendering/RenderLayerCompositor.cpp:
- (WebCore::RenderLayerCompositor::~RenderLayerCompositor):
- (WebCore::RenderLayerCompositor::rootPlatformLayer):
- (WebCore::RenderLayerCompositor::didMoveOnscreen):
- (WebCore::RenderLayerCompositor::ensureRootPlatformLayer):
- (WebCore::RenderLayerCompositor::destroyRootPlatformLayer):
- * rendering/RenderLayerCompositor.h:
-
-2009-08-17 Pavel Feldman <pfeldman@chromium.org>
-
- Reviewed by Timothy Hatcher.
-
- WebInspector: Reset InjectedScript styles cache on document change.
-
- https://bugs.webkit.org/show_bug.cgi?id=28390
-
- * inspector/InspectorController.cpp:
- (WebCore::InspectorController::close):
- (WebCore::InspectorController::populateScriptObjects):
- (WebCore::InspectorController::didCommitLoad):
- (WebCore::InspectorController::resetInjectedScript):
- * inspector/InspectorController.h:
- * inspector/InspectorDOMAgent.cpp:
- (WebCore::InspectorDOMAgent::setDocument):
- * inspector/InspectorDOMAgent.h:
- * inspector/front-end/InjectedScript.js:
- (InjectedScript._reset):
-
-2009-08-17 Darin Adler <darin@apple.com>
-
- Reviewed by Sam Weinig.
-
- * rendering/MediaControlElements.cpp: Removed unneeded include of CString.h,
- resorted includes, renamed "doc" to "document" and fixed formatting.
-
-2009-08-17 Darin Adler <darin@apple.com>
-
- Reviewed by Sam Weinig.
-
- Removed functions now unneeded due to use of Reflect to create
- language bindings.
-
- * accessibility/AccessibilityRenderObject.cpp:
- (WebCore::AccessibilityRenderObject::accessibilityParentForImageMap):
- Get at usemap attribute directly.
-
- * editing/DeleteButtonController.cpp:
- (WebCore::DeleteButtonController::createDeletionUI):
- Get at id attribute directly.
- * editing/EditorCommand.cpp:
- (WebCore::executeInsertHorizontalRule): Ditto.
-
- * html/HTMLDocument.cpp:
- (WebCore::HTMLDocument::dir): Get at dir attribute of body directly.
- (WebCore::HTMLDocument::setDir): Ditto.
-
- * html/HTMLElement.cpp: Deleted unused functions.
- * html/HTMLElement.h: Ditto.
-
- * html/HTMLImageElement.cpp: Deleted unused functions.
- (WebCore::HTMLImageElement::alt): Changed to return const AtomicString&.
- (WebCore::HTMLImageElement::addSubresourceAttributeURLs): Changed to
- get at usemap attribute directly, but added a FIXME because although
- it is what the old code did, it looks to not be entirely correct.
-
- * html/HTMLImageElement.h: Deleted unused functions.
-
- * rendering/HitTestResult.cpp:
- (WebCore::HitTestResult::altDisplayString): Get at alt attribute directly.
-
- * rendering/RenderImage.cpp:
- (WebCore::RenderImage::imageMap): Get at usemap attribute directly.
-
- * rendering/RenderLayerBacking.cpp:
- (WebCore::RenderLayerBacking::createGraphicsLayer): Get at id attribute
- directly.
- (WebCore::RenderLayerBacking::isSimpleContainerCompositingLayer): Removed
- explicit HTMLNames namespace qualification.
-
-2009-08-17 Darin Adler <darin@apple.com>
-
- Reviewed by Sam Weinig.
-
- * dom/Document.cpp:
- (WebCore::Document::setFocusedNode): Removed unneeded calls
- to RefPtr::get.
-
-2009-08-17 Pavel Feldman <pfeldman@chromium.org>
-
- Reviewed by Timothy Hatcher.
-
- WebInspector: Discard DOM Node bindings on any document change.
-
- https://bugs.webkit.org/show_bug.cgi?id=28389
-
- * inspector/InspectorDOMAgent.cpp:
- (WebCore::InspectorDOMAgent::setDocument):
-
-2009-08-13 Joseph Pecoraro <joepeck02@gmail.com>
-
- Reviewed by Timothy Hatcher.
-
- Inspector: Improve Cookie DataGrid to Show Hidden Data
- https://bugs.webkit.org/show_bug.cgi?id=28269
-
- * English.lproj/localizedStrings.js: DataGrid Headers "Name", "Value", "Size", ...
- * WebCore.gypi: added missing files
-
- Implemented Bindings for InspectorController.deleteCookie(name)
-
- * inspector/InspectorBackend.idl:
- * bindings/js/JSInspectorBackendCustom.cpp:
- (WebCore::JSInspectorBackend::cookies):
- (WebCore::JSInspectorBackend::deleteCookie):
-
- v8 Bindings Stubs
-
- * bindings/v8/custom/V8CustomBinding.h:
- * bindings/v8/custom/V8InspectorBackendCustom.cpp:
- (WebCore::CALLBACK_FUNC_DECL):
-
- Removed WebInspector.Cookie
-
- * inspector/front-end/Cookie.js: Removed.
- * inspector/front-end/inspector.html:
- * inspector/front-end/WebKit.qrc:
-
- Improved DataGrid and Kept Fallback Behavior for Platforms that don't
- yet provide access to raw cookies.
-
- * inspector/front-end/CookieItemsView.js:
- (WebInspector.CookieItemsView):
- (WebInspector.CookieItemsView.prototype.get statusBarItems):
- (WebInspector.CookieItemsView.prototype.update):
- (WebInspector.CookieItemsView.prototype.buildCookies):
- (WebInspector.CookieItemsView.prototype.dataGridForCookies):
- (WebInspector.CookieItemsView.prototype.fallbackUpdate.callback):
- (WebInspector.CookieItemsView.prototype.fallbackUpdate):
- (WebInspector.CookieItemsView.prototype.fallbackBuildCookiesFromString):
- (WebInspector.CookieItemsView.prototype.fallbackDataGridForCookies):
- (WebInspector.CookieItemsView.prototype._deleteButtonClicked):
-
- Interaction with the page through Injected Script (for fallback behavior)
-
- * inspector/front-end/DOMAgent.js:
- (InspectorController.getCookies):
- * inspector/front-end/InjectedScript.js:
- (InjectedScript.setStyleProperty): style fix
- (InjectedScript.getCookies):
-
- Allow alignment of text inside DataGrids.
-
- * inspector/front-end/DataGrid.js:
- (WebInspector.DataGrid):
- (WebInspector.DataGridNode.prototype.createCell):
- * inspector/front-end/DatabasesPanel.js:
- (WebInspector.DatabasesPanel.prototype.dataGridForDOMStorage):
- * inspector/front-end/inspector.css:
-
- Added deleteCookie(., ., String name)
- Modified getRawCookies to return a bool to know if its implemented
-
- * platform/CookieJar.h:
-
-
- Implemented deleteCookie for Macs
-
- * platform/mac/CookieJar.mm:
- (WebCore::getRawCookies):
- (WebCore::deleteCookie):
-
- Stub Implementations for Other Platforms
-
- * platform/haiku/CookieJarHaiku.cpp:
- (WebCore::getRawCookies):
- (WebCore::deleteCookie):
- * platform/network/chromium/CookieJarChromium.cpp:
- (WebCore::getRawCookies):
- (WebCore::deleteCookie):
- * platform/network/curl/CookieJarCurl.cpp:
- (WebCore::getRawCookies):
- (WebCore::deleteCookie):
- * platform/network/soup/CookieJarSoup.cpp:
- (WebCore::getRawCookies):
- (WebCore::deleteCookie):
- * platform/network/win/CookieJarCFNetWin.cpp:
- (WebCore::getRawCookies):
- (WebCore::deleteCookie):
- * platform/network/win/CookieJarWin.cpp:
- (WebCore::getRawCookies):
- (WebCore::deleteCookie):
- * platform/qt/CookieJarQt.cpp:
- (WebCore::getRawCookies):
- (WebCore::deleteCookie):
-
-2009-08-17 Adam Treat <adam.treat@torchmobile.com>
-
- Blind build fix for Leopard.
-
- * platform/graphics/GraphicsContext.cpp:
- (WebCore::GraphicsContext::adjustLineToPixelBoundaries):
-
-2009-08-13 Mike Fenton <mike.fenton@torchmobile.com>
-
- Reviewed by Adam Treat.
-
- Style fixes based on cpp_style.py and WebKit Style guide for
- GraphicsContextCG.cpp
-
- https://bugs.webkit.org/show_bug.cgi?id=28268
-
- * platform/graphics/cg/GraphicsContextCG.cpp:
- (WebCore::GraphicsContext::drawLine):
- (WebCore::GraphicsContext::drawEllipse):
- (WebCore::GraphicsContext::strokeArc):
- (WebCore::GraphicsContext::drawConvexPolygon):
- (WebCore::GraphicsContext::applyStrokePattern):
- (WebCore::GraphicsContext::drawPath):
- (WebCore::GraphicsContext::clipOut):
- (WebCore::GraphicsContext::clipOutEllipseInRect):
- (WebCore::GraphicsContext::addInnerRoundedRectClip):
- (WebCore::GraphicsContext::clipToImageBuffer):
- (WebCore::GraphicsContext::setPlatformShadow):
- (WebCore::GraphicsContext::setLineCap):
- (WebCore::GraphicsContext::setLineJoin):
- (WebCore::GraphicsContext::roundToDevicePixels):
- (WebCore::GraphicsContext::drawLineForText):
- (WebCore::GraphicsContext::setURLForRect):
- (WebCore::GraphicsContext::setImageInterpolationQuality):
- (WebCore::GraphicsContext::imageInterpolationQuality):
- (WebCore::GraphicsContext::setPlatformTextDrawingMode):
- (WebCore::GraphicsContext::setCompositeOperation):
-
-2009-08-13 Mike Fenton <mike.fenton@torchmobile.com>
-
- Reviewed by Adam Treat.
-
- Style fixes based on cpp_style.py and WebKit Style guide for
- GraphicsContext.cpp/h, GraphicsContextCairo.cpp and GraphicsContextQt.cpp.
-
- https://bugs.webkit.org/show_bug.cgi?id=28268
-
- * platform/graphics/GraphicsContext.cpp:
- (WebCore::GraphicsContext::save):
- (WebCore::GraphicsContext::restore):
- (GraphicsContext::drawText):
- (GraphicsContext::initFocusRing):
- (GraphicsContext::focusRingBoundingRect):
- (GraphicsContext::drawImage):
- * platform/graphics/GraphicsContext.h:
- * platform/graphics/cairo/GraphicsContextCairo.cpp:
- (WebCore::GraphicsContext::drawLine):
- (WebCore::GraphicsContext::strokeArc):
- (WebCore::GraphicsContext::setLineCap):
- (WebCore::GraphicsContext::setLineJoin):
- (WebCore::toCairoOperator):
- * platform/graphics/qt/GraphicsContextQt.cpp:
-
-2009-08-17 Darin Adler <darin@apple.com>
-
- Reviewed by Dan Bernstein.
-
- Change HTMLAreaElement to use OwnArrayPtr
- https://bugs.webkit.org/show_bug.cgi?id=28386
-
- * html/HTMLAreaElement.cpp:
- (WebCore::HTMLAreaElement::HTMLAreaElement): Removed unneeded initializer.
- (WebCore::HTMLAreaElement::~HTMLAreaElement): Removed unneeded delete call.
- (WebCore::HTMLAreaElement::parseMappedAttribute): Use the set function
- instead of deletion followed by assignment.
- * html/HTMLAreaElement.h: Use OwnArrayPtr.
-
-2009-08-17 Darin Adler <darin@apple.com>
-
- Fix Windows build.
-
- * dom/make_names.pl: Add back cast to (void*) needed on Windows.
-
-2009-08-17 Darin Adler <darin@apple.com>
-
- Reviewed by Dan Bernstein.
-
- Move noResize from HTMLFrameElementBase to HTMLFrameElement
- https://bugs.webkit.org/show_bug.cgi?id=28384
-
- * html/HTMLFrameElement.cpp:
- (WebCore::HTMLFrameElement::HTMLFrameElement): Initialize m_noResize.
- (WebCore::HTMLFrameElement::parseMappedAttribute): Set m_noResize to true
- here if noresizeAttr is changed. This code was moved here from
- HTMLFrameElementBase, but I added some FIXME comments.
- (WebCore::HTMLFrameElement::setNoResize): Set the attribute based on
- boolean argument. Moved here from HTMLFrameElementBase.
-
- * html/HTMLFrameElement.h: Moved noResize, setNoResize, and m_noResize
- here from HTMLFrameElementBase.
-
- * html/HTMLFrameElementBase.cpp:
- (WebCore::HTMLFrameElementBase::HTMLFrameElementBase): Removed m_noResize.
- (WebCore::HTMLFrameElementBase::parseMappedAttribute): Removed code to parse
- noresizeAttr.
-
- * html/HTMLFrameElementBase.h: Removed noResize, setNoResize, and m_noResize.
-
-2009-08-17 Darin Adler <darin@apple.com>
-
- Reviewed by Dan Bernstein.
-
- Tweak HTMLFrameElementBase so that m_URL can be private
- https://bugs.webkit.org/show_bug.cgi?id=28385
-
- * html/HTMLFrameElement.cpp:
- (WebCore::HTMLFrameElement::rendererIsNeeded): Removed m_URL argument.
- * html/HTMLFrameElementBase.cpp:
- (WebCore::HTMLFrameElementBase::isURLAllowed): Use m_URL instead of
- taking an argument.
- (WebCore::HTMLFrameElementBase::openURL): Removed m_URL argument.
- * html/HTMLFrameElementBase.h: Removed argument from isURLAllowed function.
- * html/HTMLIFrameElement.cpp:
- (WebCore::HTMLIFrameElement::rendererIsNeeded): Removed m_URL argument.
-
-2009-08-17 Darin Adler <darin@apple.com>
-
- Reviewed by Dan Bernstein.
-
- HTMLViewSourceDocument should use smart pointers
- https://bugs.webkit.org/show_bug.cgi?id=28378
-
- * html/HTMLViewSourceDocument.cpp:
- (WebCore::HTMLViewSourceDocument::HTMLViewSourceDocument): Don't initialize
- pointers any more since RefPtr starts 0 by default.
- (WebCore::HTMLViewSourceDocument::createContainingTable): Use more specific
- types for local variables.
- (WebCore::HTMLViewSourceDocument::addSpanWithClassName): Return a PassRefPtr,
- and use a RefPtr of a more specific type for a local variable.
- (WebCore::HTMLViewSourceDocument::addLine): Use more specific types for local
- variables, and use RefPtr as well.
- (WebCore::HTMLViewSourceDocument::addLink): Return a PassRefPtr, and use a
- RefPtr of a more specific type for a local variable.
-
- * html/HTMLViewSourceDocument.h: Change return types to PassRefPtr and
- data member types to RefPtr.
-
-2009-08-17 Darin Adler <darin@apple.com>
-
- Reviewed by Sam Weinig.
-
- DOM attribute getter/setter functions should use const AtomicString& type
- https://bugs.webkit.org/show_bug.cgi?id=25425
-
- Convert 4 more classes. These are classes I am going to make other changes
- to soon, so it's good to have this use of Reflect in the IDL out of the way.
-
- * html/HTMLEmbedElement.idl: Use Reflect for many attributes.
- * html/HTMLFrameElement.idl: Ditto.
- * html/HTMLIFrameElement.idl: Ditto.
- * html/HTMLObjectElement.idl: Ditto.
-
-2009-08-17 Darin Adler <darin@apple.com>
-
- Reviewed by Sam Weinig.
-
- Script to create element factory needs changes to accommodate calling create
- https://bugs.webkit.org/show_bug.cgi?id=28379
-
- * dom/make_names.pl: Tweak formatting. Remove lots of unneeded quotes
- around names used inside {}. Added new createWithNew property for tags
- that makes the factory use a create function instead of calling new.
- Renamed functions with initialize in their name to have default in their
- name, since they return an array full of default values and don't themselves
- initialize anything.
-
-2009-08-16 Darin Adler <darin@apple.com>
-
- Reviewed by Dan Bernstein.
-
- StyledElement should use ASCIICType instead of having its own toHex function
- https://bugs.webkit.org/show_bug.cgi?id=28377
-
- * dom/StyledElement.cpp:
- (WebCore::StyledElement::addCSSColor): Use isASCIIHexDigit and toASCIIHexValue.
-
-2009-08-16 Darin Adler <darin@apple.com>
-
- Reviewed by Dan Bernstein.
-
- execCommand("InsertHorizontalRule") inserts a broken <hr> element
- https://bugs.webkit.org/show_bug.cgi?id=28375
-
- * editing/EditorCommand.cpp:
- (WebCore::executeInsertHorizontalRule): Create an HTMLHRElement
- instead of just an HTMLElement.
-
-2009-08-16 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
-
- Reviewed by George Staikos.
-
- [WML] <option> element & 'onpick' events - history navigation is broken
- https://bugs.webkit.org/show_bug.cgi?id=28371
-
- After selecting an option element with an 'onpick' event associated with a 'go' task,
- the navigation is executed. When going back in history, the same 'onpick' event is fired
- again. Fix that problem, add wml/option-element-onpick-recursion.html covering the bug.
-
- Test: wml/option-element-onpick-recursion.html
-
- * wml/WMLOptionElement.cpp:
- (WebCore::WMLOptionElement::handleIntrinsicEventIfNeeded):
- * wml/WMLSelectElement.cpp:
- (WebCore::WMLSelectElement::WMLSelectElement):
- (WebCore::WMLSelectElement::selectInitialOptions):
- * wml/WMLSelectElement.h:
- (WebCore::WMLSelectElement::initialized):
-
-2009-08-16 Anthony Ricaud <rik@webkit.org>
-
- Reviewed by Timothy Hatcher.
-
- Inspector Resource filtering: keyboard Navigation always uses ALL resources
- https://bugs.webkit.org/show_bug.cgi?id=28231
-
- Determine if a resource is selectable on user action.
-
- * inspector/front-end/ResourcesPanel.js:
- (WebInspector.ResourceSidebarTreeElement.prototype.get selectable):
-
-2009-08-16 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/28355> Replace MAX()/MIN() macros with type-safe std::max()/min() templates
-
- Reviewed by Dan Bernstein.
-
- * accessibility/mac/AccessibilityObjectWrapper.mm:
- (AXAttributeStringSetSpelling): Changed MIN() to min().
- * platform/graphics/mac/FontMacATSUI.mm:
- (WebCore::Font::selectionRectForComplexText): Changed MAX() to
- max() and MIN() to min().
- (WebCore::Font::floatWidthForComplexText): Ditto.
- * platform/graphics/mac/SimpleFontDataMac.mm: Added using
- std::max statement.
- (WebCore::SimpleFontData::platformInit): Changed MAX() to max().
- * platform/text/mac/TextCodecMac.cpp:
- (WebCore::TextCodecMac::decode): Changed MIN() to min().
-
-2009-08-16 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
-
- Reviewed by George Staikos.
-
- [WML] Cleanup WMLIntrinsicEventHandling code
- https://bugs.webkit.org/show_bug.cgi?id=28358
-
- Remove superflous "Event* evt" parameter from executeTask() methods. It's a leftover from the initial WML merge.
-
- * wml/WMLAnchorElement.cpp:
- (WebCore::WMLAnchorElement::defaultEventHandler):
- * wml/WMLDoElement.cpp:
- (WebCore::WMLDoElement::defaultEventHandler):
- * wml/WMLGoElement.cpp:
- (WebCore::WMLGoElement::executeTask):
- * wml/WMLGoElement.h:
- * wml/WMLIntrinsicEventHandler.cpp:
- (WebCore::WMLIntrinsicEventHandler::triggerIntrinsicEvent):
- * wml/WMLPrevElement.cpp:
- (WebCore::WMLPrevElement::executeTask):
- * wml/WMLPrevElement.h:
- * wml/WMLRefreshElement.cpp:
- (WebCore::WMLRefreshElement::executeTask):
- * wml/WMLRefreshElement.h:
- * wml/WMLTaskElement.h:
-
-2009-08-16 Pavel Feldman <pfeldman@chromium.org>
-
- Reviewed by Timothy Hatcher.
-
- WebInspector: A handful of DOMAgent-related fixes and cleanups.
-
- - renamed elementId to nodeId in operations on nodes.
- - added load listeners to frame owners in InspectorDOMAgent.
- - removed InspectorController::inspectedWindowScriptObjectCleared event.
- - preserved isViaInspector flag for 'via inspector' marker to survive styles update.
- - removed contentDocument-related logic from ElementsPanel since it is handled in
- the InspectorDOMAgent.
- - removed DOM listeners unregistration and corresponding events from InspectorController.
- - made this.styles 'private' in ElementsPanel.
- - added TODO for the handleCopy processing.
-
- https://bugs.webkit.org/show_bug.cgi?id=28356
-
- * WebCore.order:
- * inspector/InspectorBackend.cpp:
- (WebCore::InspectorBackend::getChildNodes):
- (WebCore::InspectorBackend::setTextNodeValue):
- * inspector/InspectorBackend.h:
- * inspector/InspectorBackend.idl:
- * inspector/InspectorController.cpp:
- * inspector/InspectorController.h:
- * inspector/InspectorDOMAgent.cpp:
- (WebCore::InspectorDOMAgent::startListening):
- (WebCore::InspectorDOMAgent::stopListening):
- (WebCore::InspectorDOMAgent::handleEvent):
- (WebCore::InspectorDOMAgent::pushChildNodesToFrontend):
- (WebCore::InspectorDOMAgent::getChildNodes):
- (WebCore::InspectorDOMAgent::pushNodePathToFrontend):
- (WebCore::InspectorDOMAgent::setTextNodeValue):
- (WebCore::InspectorDOMAgent::buildObjectForNode):
- (WebCore::InspectorDOMAgent::buildArrayForContainerChildren):
- (WebCore::InspectorDOMAgent::innerParentNode):
- * inspector/InspectorDOMAgent.h:
- * inspector/InspectorFrontend.cpp:
- * inspector/InspectorFrontend.h:
- * inspector/front-end/DOMAgent.js:
- (WebInspector.DOMDocument.prototype.addEventListener):
- (WebInspector.DOMDocument.prototype.removeEventListener):
- (WebInspector.DOMDocument.prototype._fireDomEvent):
- (WebInspector.DOMAgent.prototype.getChildNodesAsync.mycallback):
- (WebInspector.DOMAgent.prototype.getChildNodesAsync):
- (WebInspector.DOMAgent.prototype._setChildNodes):
- (WebInspector.CSSStyleDeclaration.parseRule):
- (WebInspector.childNodeInserted):
- (WebInspector.childNodeRemoved):
- * inspector/front-end/ElementsPanel.js:
- (WebInspector.ElementsPanel):
- (WebInspector.ElementsPanel.prototype.reset):
- (WebInspector.ElementsPanel.prototype.addStyleChange):
- (WebInspector.ElementsPanel.prototype.removeStyleChange):
- (WebInspector.ElementsPanel.prototype._updateModifiedNodes):
- (WebInspector.ElementsPanel.prototype.updateBreadcrumb):
- (WebInspector.ElementsPanel.prototype.handleCopyEvent):
- * inspector/front-end/ElementsTreeOutline.js:
- (WebInspector.ElementsTreeOutline.prototype.set rootDOMNode):
- (WebInspector.ElementsTreeOutline.prototype.findTreeElement):
- (WebInspector.ElementsTreeElement):
- (WebInspector.ElementsTreeElement.prototype._updateChildren.updateChildrenOfNode):
- (WebInspector.ElementsTreeElement.prototype._updateChildren):
- (WebInspector.ElementsTreeElement.prototype.onexpand):
- * inspector/front-end/InjectedScript.js:
- (InjectedScript.addStyleSelector):
- (InjectedScript._serializeRule):
- * inspector/front-end/StylesSidebarPane.js:
- (WebInspector.StylePropertiesSection):
- * inspector/front-end/inspector.js:
- (WebInspector.set hoveredDOMNode):
- * inspector/front-end/treeoutline.js:
- (TreeOutline.prototype.findTreeElement):
- * inspector/front-end/utilities.js:
- (Node.prototype.enclosingNodeOrSelfWithNodeNameInArray):
- (Node.prototype.enclosingNodeOrSelfWithClass):
- (isAncestorNode):
- (firstCommonNodeAncestor):
- (traverseNextNode):
- (traversePreviousNode):
- ():
- * loader/FrameLoader.cpp:
- (WebCore::FrameLoader::dispatchWindowObjectAvailable):
- * page/android/InspectorControllerAndroid.cpp:
-
-2009-08-15 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Dave Hyatt
-
- Optimize updateFillImages() to not add/remove clients every time
- https://bugs.webkit.org/show_bug.cgi?id=28334
-
- Optimize the case where old and new just have a single layer pointing to the same (or no)
- image.
-
- * rendering/RenderObject.cpp:
- (WebCore::RenderObject::updateFillImages):
-
-2009-08-15 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Anders Carlsson.
-
- Implement animations of multiple text-shadows and -webkit-box-shadows.
- https://bugs.webkit.org/show_bug.cgi?id=28266
-
- Test: transitions/multiple-shadow-transitions.html
-
- * page/animation/AnimationBase.cpp:
- (WebCore::PropertyWrapperShadow::equals):
- (WebCore::PropertyWrapperShadow::blend):
-
-2009-08-15 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Anders Carlsson.
-
- Make transitions work for position and size of multiple backgrounds and masks.
- https://bugs.webkit.org/show_bug.cgi?id=28266
-
- Make background-position, background-size, -webkit-mask-position and -webkit-mask-size
- properties animatable with multiple backgrounds, rather than just animating the first one.
-
- Tests: transitions/multiple-background-size-transitions.html
- transitions/multiple-background-transitions.html
- transitions/multiple-mask-transitions.html
-
- * page/animation/AnimationBase.cpp:
- (WebCore::FillLayerPropertyWrapperBase::FillLayerPropertyWrapperBase):
- (WebCore::FillLayerPropertyWrapperBase::~FillLayerPropertyWrapperBase):
- (WebCore::FillLayerPropertyWrapperGetter::FillLayerPropertyWrapperGetter):
- (WebCore::FillLayerPropertyWrapperGetter::equals):
- (WebCore::FillLayerPropertyWrapper::FillLayerPropertyWrapper):
- (WebCore::FillLayerPropertyWrapper::blend):
- (WebCore::FillLayersPropertyWrapper::FillLayersPropertyWrapper):
- (WebCore::FillLayersPropertyWrapper::equals):
- (WebCore::FillLayersPropertyWrapper::blend):
- (WebCore::ensurePropertyMap):
- * rendering/style/FillLayer.h:
- (WebCore::FillLayer::setXPosition):
- (WebCore::FillLayer::setYPosition):
- (WebCore::FillLayer::setSize):
-
-2009-08-15 George Staikos <george.staikos@torchmobile.com>
-
- Reviewed by Jan Alonzo.
-
- Don't crash in fieldset code when WML is enabled.
- https://bugs.webkit.org/show_bug.cgi?id=28012
-
- Test: fast/wml/html-fieldset-crash.html
-
- * rendering/RenderFieldset.cpp:
- (WebCore::RenderFieldset::findLegend): ++brackets
-
-2009-08-15 Sam Weinig <sam@webkit.org>
-
- Try and enable EventSource on Windows.
-
- * WebCore.vcproj/WebCoreCommon.vsprops:
- * WebCore.vcproj/build-generated-files.sh:
-
-2009-08-15 Sam Weinig <sam@webkit.org>
-
- Reviewed by Dan Bernstein.
-
- Setting attribute event listeners to the body does not set them on the window
- https://bugs.webkit.org/show_bug.cgi?id=28343
-
- Tests: fast/dom/Window/HTMLBodyElement-window-eventListener-attributes.html
- fast/dom/Window/HTMLFrameSetElement-window-eventListener-attributes.html
-
- * html/HTMLBodyElement.cpp:
- (WebCore::HTMLBodyElement::setOnblur): Use setWindowAttributeEventListener instead of setAttributeEventListener.
- (WebCore::HTMLBodyElement::setOnerror): Ditto.
- (WebCore::HTMLBodyElement::setOnfocus): Ditto.
- (WebCore::HTMLBodyElement::setOnload): Ditto.
- (WebCore::HTMLBodyElement::setOnbeforeunload): Ditto.
- (WebCore::HTMLBodyElement::setOnmessage): Ditto.
- (WebCore::HTMLBodyElement::setOnoffline): Ditto.
- (WebCore::HTMLBodyElement::setOnonline): Ditto.
- (WebCore::HTMLBodyElement::setOnresize): Ditto.
- (WebCore::HTMLBodyElement::setOnstorage): Ditto.
- (WebCore::HTMLBodyElement::setOnunload): Ditto.
- * html/HTMLFrameSetElement.cpp:
- (WebCore::HTMLFrameSetElement::setOnblur): Ditto.
- (WebCore::HTMLFrameSetElement::setOnerror): Ditto.
- (WebCore::HTMLFrameSetElement::setOnfocus): Ditto.
- (WebCore::HTMLFrameSetElement::setOnload): Ditto.
- (WebCore::HTMLFrameSetElement::setOnbeforeunload): Ditto.
- (WebCore::HTMLFrameSetElement::setOnmessage): Ditto.
- (WebCore::HTMLFrameSetElement::setOnoffline): Ditto.
- (WebCore::HTMLFrameSetElement::setOnonline): Ditto.
- (WebCore::HTMLFrameSetElement::setOnresize): Ditto.
- (WebCore::HTMLFrameSetElement::setOnstorage): Ditto.
- (WebCore::HTMLFrameSetElement::setOnunload): Ditto.
-
-2009-08-15 Sam Weinig <sam@webkit.org>
-
- Reviewed by Dan Bernstein.
-
- Fix up some IDL comments.
-
- * html/HTMLBodyElement.idl:
- * html/HTMLFrameSetElement.idl:
-
-2009-08-15 Adam Bergkvist <adam.bergkvist@ericsson.com>
-
- Reviewed by Sam Weinig.
-
- Added implementation of the EventSource object that enables
- server-sent events from HTML5.
- http://dev.w3.org/html5/eventsource/
- https://bugs.webkit.org/show_bug.cgi?id=14997
-
- Tests: fast/eventsource/eventsource-attribute-listeners.html
- fast/eventsource/eventsource-constructor.html
- http/tests/eventsource/eventsource-bad-mime-type.html
- http/tests/eventsource/eventsource-parse-event-stream.html
- http/tests/eventsource/eventsource-reconnect.html
- http/tests/eventsource/eventsource-status-code-states.html
- http/tests/eventsource/workers/eventsource-simple.html
-
- * Configurations/FeatureDefines.xcconfig:
- * DerivedSources.cpp:
- * DerivedSources.make:
- * GNUmakefile.am:
- * WebCore.pro:
- * WebCore.vcproj/WebCore.vcproj:
- * WebCore.xcodeproj/project.pbxproj:
- * bindings/js/JSDOMWindowCustom.cpp:
- (WebCore::JSDOMWindow::eventSource):
- * bindings/js/JSEventSourceConstructor.cpp: Added.
- (WebCore::):
- (WebCore::JSEventSourceConstructor::JSEventSourceConstructor):
- (WebCore::constructEventSource):
- (WebCore::JSEventSourceConstructor::getConstructData):
- * bindings/js/JSEventSourceConstructor.h: Added.
- (WebCore::JSEventSourceConstructor::classInfo):
- * bindings/js/JSEventSourceCustom.cpp: Added.
- (WebCore::JSEventSource::markChildren):
- (WebCore::JSEventSource::addEventListener):
- (WebCore::JSEventSource::removeEventListener):
- * bindings/js/JSEventTarget.cpp:
- (WebCore::toJS):
- (WebCore::toEventTarget):
- * bindings/js/JSWorkerContextCustom.cpp:
- (WebCore::JSWorkerContext::eventSource):
- * dom/EventNames.h:
- * dom/EventTarget.cpp:
- (WebCore::EventTarget::toEventSource):
- * dom/EventTarget.h:
- * page/DOMWindow.idl:
- * page/EventSource.cpp: Added.
- (WebCore::EventSource::EventSource):
- (WebCore::EventSource::~EventSource):
- (WebCore::EventSource::connect):
- (WebCore::EventSource::endRequest):
- (WebCore::EventSource::scheduleReconnect):
- (WebCore::EventSource::reconnectTimerFired):
- (WebCore::EventSource::url):
- (WebCore::EventSource::readyState):
- (WebCore::EventSource::close):
- (WebCore::EventSource::scriptExecutionContext):
- (WebCore::EventSource::addEventListener):
- (WebCore::EventSource::removeEventListener):
- (WebCore::EventSource::dispatchEvent):
- (WebCore::EventSource::didReceiveResponse):
- (WebCore::EventSource::didReceiveData):
- (WebCore::EventSource::didFinishLoading):
- (WebCore::EventSource::didFail):
- (WebCore::EventSource::didFailRedirectCheck):
- (WebCore::EventSource::parseEventStream):
- (WebCore::EventSource::parseEventStreamLine):
- (WebCore::EventSource::dispatchGenericEvent):
- (WebCore::EventSource::dispatchMessageEvent):
- (WebCore::EventSource::stop):
- * page/EventSource.h: Added.
- (WebCore::EventSource::create):
- (WebCore::EventSource::):
- (WebCore::EventSource::setOnopen):
- (WebCore::EventSource::onopen):
- (WebCore::EventSource::setOnmessage):
- (WebCore::EventSource::onmessage):
- (WebCore::EventSource::setOnerror):
- (WebCore::EventSource::onerror):
- (WebCore::EventSource::toEventSource):
- (WebCore::EventSource::eventListeners):
- (WebCore::EventSource::refEventTarget):
- (WebCore::EventSource::derefEventTarget):
- * page/EventSource.idl: Added.
- * workers/WorkerContext.idl:
-
-2009-08-15 Pavel Feldman <pfeldman@chromium.org>
-
- Reviewed by Timothy Hatcher.
-
- WebInspector: Minor DOMAgent bugfixes.
-
- https://bugs.webkit.org/show_bug.cgi?id=28177
-
- * inspector/InspectorDOMAgent.cpp:
- (WebCore::InspectorDOMAgent::nodeForId):
- * inspector/front-end/DOMAgent.js:
- (WebInspector.DOMAgent):
- * inspector/front-end/ElementsPanel.js:
- (WebInspector.ElementsPanel.this.treeOutline.focusedNodeChanged):
-
-2009-08-15 Pavel Feldman <pfeldman@chromium.org>
-
- Reviewed by Timothy Hatcher.
-
- WebInspector: Evaluating objects while on a breakpoint dumps string
- representation instead of live object.
-
- https://bugs.webkit.org/show_bug.cgi?id=28280
-
- * inspector/front-end/ConsoleView.js:
- (WebInspector.ConsoleView.prototype.completions.this._evalInInspectedWindow):
- (WebInspector.ConsoleView.prototype.completions):
- (WebInspector.ConsoleView.prototype._reportCompletions):
- * inspector/front-end/ScriptsPanel.js:
- (WebInspector.ScriptsPanel.prototype.doEvalInCallFrame.delayedEvaluation):
- (WebInspector.ScriptsPanel.prototype.doEvalInCallFrame):
- (WebInspector.ScriptsPanel.prototype.variablesInSelectedCallFrame):
-
-2009-08-15 Maxime Simon <simon.maxime@gmail.com>
-
- Reviewed by Eric Seidel.
-
- [Haiku] Adding two new files to WebCore/platform/haiku:
- LocalizedStringsHaiku.cpp and LoggingHaiku.cpp
- https://bugs.webkit.org/show_bug.cgi?id=28129
-
- * platform/haiku/LocalizedStringsHaiku.cpp: Added.
- (WebCore::submitButtonDefaultLabel):
- (WebCore::inputElementAltText):
- (WebCore::resetButtonDefaultLabel):
- (WebCore::defaultLanguage):
- (WebCore::searchableIndexIntroduction):
- (WebCore::fileButtonChooseFileLabel):
- (WebCore::fileButtonNoFileSelectedLabel):
- (WebCore::contextMenuItemTagOpenLinkInNewWindow):
- (WebCore::contextMenuItemTagDownloadLinkToDisk):
- (WebCore::contextMenuItemTagCopyLinkToClipboard):
- (WebCore::contextMenuItemTagOpenImageInNewWindow):
- (WebCore::contextMenuItemTagDownloadImageToDisk):
- (WebCore::contextMenuItemTagCopyImageToClipboard):
- (WebCore::contextMenuItemTagOpenFrameInNewWindow):
- (WebCore::contextMenuItemTagCopy):
- (WebCore::contextMenuItemTagGoBack):
- (WebCore::contextMenuItemTagGoForward):
- (WebCore::contextMenuItemTagStop):
- (WebCore::contextMenuItemTagReload):
- (WebCore::contextMenuItemTagCut):
- (WebCore::contextMenuItemTagPaste):
- (WebCore::contextMenuItemTagNoGuessesFound):
- (WebCore::contextMenuItemTagIgnoreSpelling):
- (WebCore::contextMenuItemTagLearnSpelling):
- (WebCore::contextMenuItemTagSearchWeb):
- (WebCore::contextMenuItemTagLookUpInDictionary):
- (WebCore::contextMenuItemTagOpenLink):
- (WebCore::contextMenuItemTagIgnoreGrammar):
- (WebCore::contextMenuItemTagSpellingMenu):
- (WebCore::contextMenuItemTagShowSpellingPanel):
- (WebCore::contextMenuItemTagCheckSpelling):
- (WebCore::contextMenuItemTagCheckSpellingWhileTyping):
- (WebCore::contextMenuItemTagCheckGrammarWithSpelling):
- (WebCore::contextMenuItemTagFontMenu):
- (WebCore::contextMenuItemTagBold):
- (WebCore::contextMenuItemTagItalic):
- (WebCore::contextMenuItemTagUnderline):
- (WebCore::contextMenuItemTagOutline):
- (WebCore::contextMenuItemTagWritingDirectionMenu):
- (WebCore::contextMenuItemTagDefaultDirection):
- (WebCore::contextMenuItemTagLeftToRight):
- (WebCore::contextMenuItemTagRightToLeft):
- (WebCore::contextMenuItemTagInspectElement):
- (WebCore::searchMenuNoRecentSearchesText):
- (WebCore::searchMenuRecentSearchesText):
- (WebCore::searchMenuClearRecentSearchesText):
- (WebCore::unknownFileSizeText):
- (WebCore::AXWebAreaText):
- (WebCore::AXLinkText):
- (WebCore::AXListMarkerText):
- (WebCore::AXImageMapText):
- (WebCore::AXHeadingText):
- (WebCore::imageTitle):
- (WebCore::contextMenuItemTagTextDirectionMenu):
- (WebCore::AXButtonActionVerb):
- (WebCore::AXTextFieldActionVerb):
- (WebCore::AXRadioButtonActionVerb):
- (WebCore::AXCheckedCheckBoxActionVerb):
- (WebCore::AXUncheckedCheckBoxActionVerb):
- (WebCore::AXLinkActionVerb):
- (WebCore::AXDefinitionListTermText):
- (WebCore::AXDefinitionListDefinitionText):
- * platform/haiku/LoggingHaiku.cpp: Added.
- (WebCore::InitializeLoggingChannelsIfNecessary):
-
-2009-08-15 Darin Adler <darin@apple.com>
-
- Fix GTK build.
-
- * accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:
- (fallbackObject): Pass 0 for document. Should be OK at least for now.
-
-2009-08-15 Darin Adler <darin@apple.com>
-
- Fix Qt build.
-
- * dom/XMLTokenizerQt.cpp: Use create functions instead of calling new
- directly to make CDATASection and Comment nodes.
-
-2009-08-14 Darin Adler <darin@apple.com>
-
- Reviewed by Sam Weinig.
-
- Make DOM classes start with a reference count of 1, like all other RefCounted
- https://bugs.webkit.org/show_bug.cgi?id=28068
-
- First half, everything except for element classes.
-
- * GNUmakefile.am: Removed DocPtr.h.
- * WebCore.gypi: Ditto.
- * WebCore.vcproj/WebCore.vcproj: Ditto.
- * WebCore.xcodeproj/project.pbxproj: Ditto.
-
- * dom/Attr.cpp:
- (WebCore::Attr::Attr): Added a call to createTextChild here so callers don't
- have to call it explicitly.
- (WebCore::Attr::create): Added.
- (WebCore::Attr::setValue): Changed to take AtomicString.
- (WebCore::Attr::cloneNode): Use create.
-
- * dom/Attr.h: Added a create function. Made the constructor private,
- and a lot of other functions private as well.
-
- * dom/Attribute.cpp:
- (WebCore::Attribute::createAttrIfNeeded): Use Attr::create.
-
- * dom/CDATASection.cpp:
- (WebCore::CDATASection::create): Added.
- (WebCore::CDATASection::cloneNode): Use create.
- (WebCore::CDATASection::virtualCreate): Ditto.
-
- * dom/CDATASection.h: Added a create function. Made everything private.
- Removed unneeded destructor declaration.
-
- * dom/CharacterData.cpp:
- (WebCore::CharacterData::CharacterData): Replaced the multiple constructors
- with a single one that takes ConstructionType.
-
- * dom/CharacterData.h: Made more functions be protected and private.
- Made m_data be private.
-
- * dom/Comment.cpp:
- (WebCore::Comment::Comment): Got rid of an extra constructor.
- (WebCore::Comment::create): Added.
- (WebCore::Comment::cloneNode): Call create.
-
- * dom/Comment.h: Added a create function. Made everything private.
-
- * dom/ContainerNode.cpp:
- (WebCore::dispatchChildInsertionEvents): Use RefPtr instead of DocPtr.
- (WebCore::dispatchChildRemovalEvents): Ditto.
-
- * dom/ContainerNode.h: Made the constructor protected and passed
- ConstructionType instead of an isElement boolean.
-
- * dom/DocPtr.h: Removed.
-
- * dom/Document.cpp:
- (WebCore::Document::Document): Simplified the code that sets m_document
- since it's no longer a smart pointer.
- (WebCore::Document::removedLastRef): Use explicit calls to selfOnlyRef
- and selfOnlyDeref instead of a DocPtr in here.
- (WebCore::Document::~Document): Simplified the code that sets m_document
- since it's no longer a smart pointer.
- (WebCore::Document::createDocumentFragment): Call create.
- (WebCore::Document::createTextNode): Ditto.
- (WebCore::Document::createComment): Ditto.
- (WebCore::Document::createCDATASection): Ditto.
- (WebCore::Document::createProcessingInstruction): Ditto.
- (WebCore::Document::createEntityReference): Ditto.
- (WebCore::Document::createEditingTextNode): Ditto.
- (WebCore::Document::importNode): Call Attr::create.
- (WebCore::Document::createAttributeNS): Ditto.
-
- * dom/Document.h: Call adoptRef. Made a lot of functions private and
- protected and sorted them so public functions come first.
-
- * dom/DocumentFragment.cpp:
- (WebCore::DocumentFragment::create): Added.
- (WebCore::DocumentFragment::cloneNode): Call create.
- * dom/DocumentFragment.h: Added create.
-
- * dom/DocumentType.cpp:
- (WebCore::DocumentType::DocumentType): Pass type to Node constructor.
- (WebCore::DocumentType::cloneNode): Use create.
- * dom/DocumentType.h:
- (WebCore::DocumentType::create): Call adoptRef.
-
- * dom/EditingText.cpp:
- (WebCore::EditingText::create): Added.
- * dom/EditingText.h: Added a create function. Made everything private.
-
- * dom/Element.cpp:
- (WebCore::Element::Element): Pass CreateElementZeroRefCount to preserve
- the zero reference count behavior for classes derived from Element.
-
- * dom/EntityReference.cpp:
- (WebCore::EntityReference::create): Added.
- (WebCore::EntityReference::cloneNode): Call create.
- * dom/EntityReference.h: Added create. Made everything private.
-
- * dom/Node.cpp:
- (WebCore::Node::initialRefCount): Added. Inline helper function for
- the constructor.
- (WebCore::Node::isContainer): Ditto.
- (WebCore::Node::isElement): Ditto.
- (WebCore::Node::isText): Ditto.
- (WebCore::Node::Node): Changed to take a construction type argument.
- Since m_document is now a normal pointer, added a call to selfOnlyRef.
- (WebCore::Node::~Node): Ditto, but selfOnlyDeref.
- (WebCore::Node::setDocument): Added selfOnlyRef/Deref calls.
- (WebCore::Node::appendTextContent): Use the data function instead of
- calling nodeValue functions, which do the same thing in a roundabout way.
-
- * dom/Node.h: Made the constructor protected and replaced the multiple
- arguments iwth a single ConstructionType argument. Sorted the public
- things first.
-
- * dom/Notation.h: Made most things private.
- * dom/Notation.cpp: Removed extra constructor.
-
- * dom/ProcessingInstruction.cpp:
- (WebCore::ProcessingInstruction::create): Added.
- (WebCore::ProcessingInstruction::cloneNode): Call create.
- * dom/ProcessingInstruction.h: Added create function. Made many other
- members private.
-
- * dom/Range.cpp:
- (WebCore::Range::processContents): Use DocumentFragment::create.
-
- * dom/Text.cpp:
- (WebCore::Text::Text): Updated for base class change.
- (WebCore::Text::create): Added.
- (WebCore::Text::splitText): Changed to not require access to m_data.
- (WebCore::Text::cloneNode): Call create.
- (WebCore::Text::createRenderer): Call dataImpl.
- (WebCore::Text::attach): Call data.
- (WebCore::Text::recalcStyle): Call dataImpl.
- (WebCore::Text::virtualCreate): Call create.
- (WebCore::Text::createWithLengthLimit): Call create.
- (WebCore::Text::formatForDebugger): Call data.
-
- * dom/Text.h: Added a create function. Made many other members private.
- Renamed createNew to virtualCreate.
-
- * dom/XMLTokenizer.cpp:
- (WebCore::XMLTokenizer::enterText): Call Text::create.
-
- * dom/XMLTokenizerLibxml2.cpp:
- (WebCore::XMLTokenizer::cdataBlock): Call CDATASection::create.
- (WebCore::XMLTokenizer::comment): Call Comment::create.
-
- * editing/CompositeEditCommand.cpp:
- (WebCore::CompositeEditCommand::deleteInsignificantText):
- Call data instead of string.
-
- * editing/CreateLinkCommand.cpp:
- (WebCore::CreateLinkCommand::doApply): Call Text::create.
-
- * editing/EditorCommand.cpp:
- (WebCore::executeInsertNode): Call DocumentFragment::create.
-
- * editing/SplitTextNodeCommand.cpp:
- (WebCore::SplitTextNodeCommand::doApply): Call Text::create.
-
- * editing/markup.cpp:
- (WebCore::appendStartMarkup): Call data instead of nodeValue.
-
- * html/HTMLDocument.h:
- (WebCore::HTMLDocument::create): Call adoptRef.
-
- * html/HTMLElement.cpp:
- (WebCore::HTMLElement::createContextualFragment): Call DocumentFragment::create.
- (WebCore::replaceChildrenWithFragment): Call data instead of string.
- (WebCore::replaceChildrenWithText): Call Text::create.
- (WebCore::HTMLElement::setInnerText): Call DocumentFragment::create and
- Text::create.
- (WebCore::HTMLElement::setOuterText): Call Text::create.
-
- * html/HTMLKeygenElement.cpp:
- (WebCore::HTMLKeygenElement::HTMLKeygenElement): Call Text::create.
-
- * html/HTMLOptionElement.cpp:
- (WebCore::HTMLOptionElement::setText): Call Text::create.
-
- * html/HTMLParser.cpp:
- (WebCore::HTMLParser::textCreateErrorCheck): Call Text::create.
- (WebCore::HTMLParser::commentCreateErrorCheck): Call Comment::create.
- (WebCore::HTMLParser::handleIsindex): Call Text::create.
-
- * html/HTMLViewSourceDocument.cpp:
- (WebCore::HTMLViewSourceDocument::addText): Call Text::create.
-
- * html/HTMLViewSourceDocument.h:
- (WebCore::HTMLViewSourceDocument::create): Call adoptRef.
-
- * loader/FTPDirectoryDocument.cpp:
- (WebCore::FTPDirectoryTokenizer::appendEntry): Call Text::create.
- (WebCore::FTPDirectoryTokenizer::createTDForFilename): Call Text::create.
-
- * loader/FTPDirectoryDocument.h:
- (WebCore::FTPDirectoryDocument::create): Call adoptRef.
- * loader/ImageDocument.h:
- (WebCore::ImageDocument::create): Ditto.
- * loader/MediaDocument.h:
- (WebCore::MediaDocument::create): Ditto.
- * loader/PlaceholderDocument.h:
- (WebCore::PlaceholderDocument::create): Ditto.
- * loader/PluginDocument.h:
- (WebCore::PluginDocument::create): Ditto.
- * loader/TextDocument.h:
- (WebCore::TextDocument::create): Ditto.
-
- * loader/loader.cpp:
- (WebCore::Loader::Host::didFinishLoading): Use RefPtr instead of DocPtr.
- (WebCore::Loader::Host::didFail): Ditto.
-
- * platform/TreeShared.h:
- (WebCore::TreeShared::TreeShared): Added an initialRefCount argument,
- defaulting to 1. Node still sometimes initializes it to 0 instead for now.
-
- * rendering/RenderText.cpp:
- (WebCore::RenderText::originalText): Use dataImpl instead of string.
-
- * rendering/RenderTextFragment.cpp:
- (WebCore::RenderTextFragment::originalText): Use dataImpl instead of string.
- (WebCore::RenderTextFragment::previousCharacter): Ditto.
-
- * svg/SVGDocument.h:
- (WebCore::SVGDocument::create): Use adoptRef.
-
- * svg/SVGElementInstance.cpp:
- (WebCore::SVGElementInstance::SVGElementInstance): Updated to take a
- PassRefPtr.
-
- * svg/SVGElementInstance.h: Made everything private.
-
- * wml/WMLDocument.h:
- (WebCore::WMLDocument::create): Called adoptRef.
-
- * xml/XPathNamespace.cpp:
- (WebCore::XPathNamespace::XPathNamespace): Take AtomicString arguments.
- * xml/XPathNamespace.h: Made everything private.
-
- * xml/XSLTProcessor.cpp:
- (WebCore::createFragmentFromSource): Use DocumentFragment::create and
- Text::create.
-
-2009-08-13 Jon Honeycutt <jhoneycutt@apple.com>
-
- Part of <rdar://problem/6218721> No MSAA focus events fired for Webkit
- nightly (20866)
-
- https://bugs.webkit.org/show_bug.cgi?id=20866
-
- Reviewed by Oliver Hunt.
-
- * accessibility/AXObjectCache.cpp:
- (WebCore::AXObjectCache::AXObjectCache):
- Changed to take a pointer to its owner document. This is used by
- AXObjectCache::handleFocusedUIElementChanged().
- (WebCore::AXObjectCache::focusedUIElementForPage):
- Code moved from AccessibilityRenderObject::focusedUIElement(). Modified
- to be a static function and to take a pointer to a Page.
- (WebCore::AXObjectCache::platformGenerateAXID):
- Moved the code to generate the next AXID from getAXID() to here. Added
- a #if to make this non-WIN only, because Windows has its own
- implementation.
- (WebCore::AXObjectCache::getAXID):
- Ensure that we generate a positive AXID, ranging from 1 to LONG_MAX.
-
- * accessibility/AXObjectCache.h:
- Add a declaration for Document and Page. Removed the declaration of
- AccessibilityObject, because we include the header. Reordered the
- declaration of Node alphabetically. Moved the typedef for AXID to
- AccessibilityObject. Removed some trailing whitespace. Added a member
- variable to hold a pointer to the owner Document.
- (WebCore::AXObjectCache::AXObjectCache):
- Changed to take a pointer to its owner Document.
- (WebCore::AXObjectCache::focusedUIElementForPage):
- Added; code moved from AccessiblityRenderObject::focusedUIElement().
- Returns the focused element with respect to accessibility.
- (WebCore::AXObjectCache::platformGenerateAXID):
- Declare a function to generate an AXID.
- (WebCore::AXObjectCache::objectFromAXID):
- Return the AccessibilityObject with the given AXID.
-
- * accessibility/AccessibilityObject.h:
- Moved the typedef for AXID from AXObjectCache to here. Made the m_id
- member use the typedef.
- (WebCore::AccessibilityObject::axObjectID):
- Changed the return type to use the typedef.
- (WebCore::AccessibilityObject::setAXObjectID):
- Changed the argument type to use the typedef.
-
- * accessibility/AccessibilityRenderObject.cpp:
- Removed some unneeded #includes.
- (WebCore::AccessibilityRenderObject::focusedUIElement):
- Moved the code to AXObjectCache::focusedUIElementForPage(), which we now
- call.
-
- * accessibility/win/AXObjectCacheWin.cpp:
- (WebCore::AXObjectCache::platformGenerateAXID):
- Ensure that we generate an AXID that is in the range 1 to LONG_MAX.
- (WebCore::AXObjectCache::handleFocusedUIElementChanged):
- If the Document has no Page, return. If the Page has not focused
- element (respecting accessibility), return. Assert that the
- accessibility of the focused element is not ignored, and that the
- object's AXID will be negative and fit into a LONG when negated.
- Broadcast a focus event for the object.
-
- * dom/Document.cpp:
- (WebCore::Document::axObjectCache):
- Pass this when creating the AXObjectCache.
- (WebCore::Document::setFocusedNode):
- Call AXObjectCache::handleFocusedUIElementChanged() on Windows.
-
-2009-08-14 Jiahua Huang <jhuangjiahua@gmail.com>
-
- Reviewed by Jan Alonzo.
-
- [gtk] Pasteboard/GtkClipboard can't handle the "text/html" target.
- https://bugs.webkit.org/show_bug.cgi?id=27028
-
- Remove the improper set of enum WebKitWebViewTargetInfo
- by grabbing the target infos via m_helper.
-
- * manual-tests/gtk/copy-htmltext.html: Added.
- * platform/Pasteboard.h:
- * platform/gtk/PasteboardGtk.cpp:
- (WebCore::clipboard_get_contents_cb):
- * platform/gtk/PasteboardHelper.h:
-
-2009-08-14 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Dave Hyatt.
-
- Fix an assertion when bringing up the Inspector.
- https://bugs.webkit.org/show_bug.cgi?id=28318
-
- The fix for bug 28295 assumed that image clients count the number of times
- addClient/removeClient is called. That was true for CachedResource clients,
- but not StyleGeneratedImage clients, which pass the call onto CSSImageGeneratorValue.
-
- Fix by making CSSImageGeneratorValue count the number of times a client is
- added/removed.
-
- * css/CSSCanvasValue.cpp:
- (WebCore::CSSCanvasValue::canvasChanged):
- (WebCore::CSSCanvasValue::canvasResized):
- * css/CSSImageGeneratorValue.cpp:
- (WebCore::CSSImageGeneratorValue::addClient):
- (WebCore::CSSImageGeneratorValue::removeClient):
- (WebCore::CSSImageGeneratorValue::getImage):
- * css/CSSImageGeneratorValue.h:
-
-2009-08-14 Brent Fulgham <bfulgham@webkit.org>
-
- Reviewed by Kevin Ollivier.
-
- Correct libcurl crash when downloading local files.
- https://bugs.webkit.org/show_bug.cgi?id=28312
-
- No new tests. Test is covered by fast/encoding/char-encoding-mac.html.
-
- * platform/network/curl/ResourceHandleManager.cpp:
- (WebCore::handleLocalReceiveResponse): New static function that
- performs the local setting of valid URL and firing didReceiveResponse.
- This code was moved from writeCallback.
- (WebCore::writeCallback): Move local file handling to static function
- (above) and use the function instead.
- (WebCore::readCallback): Add check
- for responseFired, and handle as a local file if it was not.
-
-2009-08-14 Maxime Simon <simon.maxime@gmail.com>
-
- Reviewed by Oliver Hunt.
-
- [Haiku] Fix RenderThemeHaiku build.
- https://bugs.webkit.org/show_bug.cgi?id=28307
-
- * platform/haiku/RenderThemeHaiku.cpp: Included RenderThemeHaiku.h
- instead of RenderTheme.h.
- (WebCore::RenderThemeHaiku::paintCheckbox): Removed the wrong 'virtual'
- before the function.
- (WebCore::RenderThemeHaiku::paintRadio): Removed the wrong 'virtual'
- before the function.
- * platform/haiku/RenderThemeHaiku.h: Corrected wrong function definitions.
-
-2009-08-14 Maxime Simon <simon.maxime@gmail.com>
-
- Reviewed by Oliver Hunt.
-
- [Haiku] Adding SharedBufferHaiku to WebCore.
- https://bugs.webkit.org/show_bug.cgi?id=28309
-
- * platform/haiku/SharedBufferHaiku.cpp: Added.
- (WebCore::SharedBuffer::createWithContentsOfFile):
- * platform/haiku/TemporaryLinkStubs.cpp: Removed unnecessary headers
- and functions.
- (WebCore::signedPublicKeyAndChallengeString):
- (WebCore::getSupportedKeySizes):
-
-2009-08-14 Nate Chapin <japhet@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- Ensure we're getting the right v8 context in the V8 DOMWindowEvent custom getter.
-
- https://bugs.webkit.org/show_bug.cgi?id=28311
-
- This should fix Chromium failing LayoutTests/fast/events/set-event-in-another-frame.html.
-
- * bindings/v8/custom/V8DOMWindowCustom.cpp:
- (WebCore::ACCESSOR_GETTER):
-
-2009-08-14 Aaron Boodman <aa@chromium.org>
-
- Reviewed by Alexey Proskuryakov.
-
- BUG 28134: Move the remaining parts of Access Control from XMLHttpRequest to ThreadableDocumentLoader.
- https://bugs.webkit.org/show_bug.cgi?id=28134
-
- No new tests added since Access Control was already well tested and this is a pure refactor.
-
- * loader/DocumentThreadableLoader.cpp: Move a lot of the access control code from XHR in, preserving its
- basic strategy. Also, modify the synchronous path to not be a special case, but reuse more of the async
- path.
-
- (WebCore::DocumentThreadableLoader::loadResourceSynchronously): Go through the async path and pass additional flags.
- (WebCore::DocumentThreadableLoader::create): Group enum params into an options struct.
- (WebCore::DocumentThreadableLoader::DocumentThreadableLoader): Ditto.
- (WebCore::DocumentThreadableLoader::makeSimpleCrossOriginAccessRequest): Brought mostly from XHR.
- (WebCore::DocumentThreadableLoader::makeCrossOriginAccessRequestWithPreflight): Ditto.
- (WebCore::DocumentThreadableLoader::willSendRequest): Handle preflight case.
- (WebCore::DocumentThreadableLoader::didReceiveResponse): Ditto.
- (WebCore::DocumentThreadableLoader::didFinishLoading): Ditto.
- (WebCore::DocumentThreadableLoader::getShouldUseCredentialStorage): Ditto.
- (WebCore::DocumentThreadableLoader::preflightSuccess): Preflight handling.
- (WebCore::DocumentThreadableLoader::preflightFailure): Ditto.
- (WebCore::DocumentThreadableLoader::loadRequest): Common request function that handles async/sync.
- * loader/DocumentThreadableLoader.h: Group enum params into an options struct.
- * loader/ThreadableLoader.cpp: Ditto.
- (WebCore::ThreadableLoader::create): Ditto.
- (WebCore::ThreadableLoader::loadResourceSynchronously): Ditto.
- * loader/ThreadableLoader.h: Ditto.
- (WebCore::ThreadableLoaderOptions::ThreadableLoaderOptions): Ditto.
- * loader/WorkerThreadableLoader.cpp: Ditto.
- (WebCore::WorkerThreadableLoader::WorkerThreadableLoader):Ditto.
- (WebCore::WorkerThreadableLoader::loadResourceSynchronously): Ditto.
- (WebCore::WorkerThreadableLoader::MainThreadBridge::MainThreadBridge): Ditto.
- (WebCore::WorkerThreadableLoader::MainThreadBridge::mainThreadCreateLoader): Ditto.
- * loader/WorkerThreadableLoader.h: Ditto.
- (WebCore::WorkerThreadableLoader::create): Ditto.
- * platform/CrossThreadCopier.h: Allow ThreadableLoaderOptions to be copied across threads.
- (WebCore::):
- * workers/WorkerScriptLoader.cpp: More enum->struct grouping.
- (WebCore::WorkerScriptLoader::loadSynchronously): More enum->struct grouping.
- (WebCore::WorkerScriptLoader::loadAsynchronously): More enum->struct grouping.
- * xml/XMLHttpRequest.cpp: Remove all the access control code and some supporting state.
- (WebCore::XMLHttpRequest::XMLHttpRequest): Ditto.
- (WebCore::XMLHttpRequest::createRequest): Ditto.
- (WebCore::XMLHttpRequest::didFinishLoading): Ditto.
- (WebCore::XMLHttpRequest::didReceiveResponse): Ditto.
- (WebCore::XMLHttpRequest::didReceiveData): Ditto.
- * xml/XMLHttpRequest.h: Ditto.
-
-2009-08-14 Darin Adler <darin@apple.com>
-
- Reviewed by Sam Weinig.
-
- Rename the confusing isObject(<class>) to inherits(<class>).
- It still works on non-objects, returning false.
-
- * bindings/js/JSEventTarget.cpp:
- (WebCore::toEventTarget):
- * bindings/js/JSGeolocationCustom.cpp:
- (WebCore::createPositionCallback):
- (WebCore::createPositionErrorCallback):
- * bindings/js/JSNodeFilterCustom.cpp:
- (WebCore::toNodeFilter):
- * bindings/js/JSXMLHttpRequestCustom.cpp:
- (WebCore::JSXMLHttpRequest::send):
- * bindings/js/JSXSLTProcessorCustom.cpp:
- (WebCore::JSXSLTProcessor::importStylesheet):
- (WebCore::JSXSLTProcessor::transformToFragment):
- (WebCore::JSXSLTProcessor::transformToDocument):
- * bindings/scripts/CodeGeneratorJS.pm:
- * bridge/objc/objc_runtime.mm:
- (JSC::Bindings::callObjCFallbackObject):
- * bridge/runtime_method.cpp:
- (JSC::callRuntimeMethod):
- Updated to new name, inherits, from old name, isObject.
-
-2009-08-14 Yael Aharon <yael.aharon@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- Allow Qt API to list and to remove URL schemes that were registered as
- local URL schemes.
- [Qt] Allow applications to register their own local URL scheme.
- https://bugs.webkit.org/show_bug.cgi?id=28240
-
- * page/SecurityOrigin.cpp:
- (WebCore::SecurityOrigin::removeURLSchemeRegisteredAsLocal):
- (WebCore::SecurityOrigin::localURLSchemes):
- * page/SecurityOrigin.h:
-
-2009-08-14 Pavel Feldman <pfeldman@chromium.org>
-
- Reviewed by Timothy Hatcher.
-
- WebInspector: Wrap console objects late (in the frontend) so that injected
- script was already in place.
-
- https://bugs.webkit.org/show_bug.cgi?id=28297
-
- * inspector/ConsoleMessage.cpp:
- (WebCore::ConsoleMessage::ConsoleMessage):
- * inspector/ConsoleMessage.h:
- * inspector/InspectorController.cpp:
- (WebCore::InspectorController::addMessageToConsole):
- (WebCore::InspectorController::startGroup):
- (WebCore::InspectorController::setFrontendProxyObject):
- * inspector/InspectorController.h:
- * inspector/InspectorFrontend.cpp:
- (WebCore::InspectorFrontend::InspectorFrontend):
- (WebCore::InspectorFrontend::addMessageToConsole):
- * inspector/InspectorFrontend.h:
-
-2009-08-13 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Dan Bernstein.
-
- Fix logic in RenderObject::updateFillImages() that led to incorrect client
- counts if an image was used twice in the background-image property.
- https://bugs.webkit.org/show_bug.cgi?id=28295
-
- Test: fast/backgrounds/multiple-backgrounds-assert.html
-
- * rendering/RenderObject.cpp:
- (WebCore::RenderObject::updateFillImages):
- Simplify the logic to call addClient()/removeClient() for every background
- image, but go through the new layers first to avoid removing all the
- clients of an image.
-
-2009-08-13 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Devirtualise marking
- https://bugs.webkit.org/show_bug.cgi?id=28294
-
- Make sure we override the JSObject createStructure method on those
- objects that have custom marking routines.
-
- * bindings/scripts/CodeGeneratorJS.pm:
-
-2009-08-13 Darin Adler <darin@apple.com>
-
- Reviewed by Mark Rowe.
-
- Follow-up to earlier work to remove dependencies on JavaScriptCore.
-
- * ForwardingHeaders/parser/Parser.h: Removed.
- * inspector/JavaScriptDebugServer.cpp: Removed now-unneeded includes
- of Parser.h.
-
-2009-08-13 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Eric Seidel.
-
- 'box-orient: block-axis' behaves like 'box-orient: horizontal', causes
- an assertion failure in debug builds
- https://bugs.webkit.org/show_bug.cgi?id=28279
-
- Test: fast/flexbox/block-axis.html
-
- * css/CSSPrimitiveValueMappings.h:
- (WebCore::CSSPrimitiveValue::operator EBoxOrient): Map block-axis to
- vertical.
-
-2009-08-13 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Dan Bernstein.
-
- Fix crash when removing reflection on an absolutely-positioned image.
- https://bugs.webkit.org/show_bug.cgi?id=28289
-
- Make sure we clean up the reflection layer when removing the reflection,
- so that the RenderLayer tree does not contain pointers to deleted layers.
-
- Test: fast/reflections/reflected-img-crash.html
-
- * rendering/RenderLayer.cpp:
- (WebCore::RenderLayer::~RenderLayer):
- (WebCore::RenderLayer::styleChanged):
- (WebCore::RenderLayer::removeReflection):
- * rendering/RenderLayer.h:
-
-2009-08-13 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Simon Fraser.
-
- misalignment because of float:left of <div> tag
- https://bugs.webkit.org/show_bug.cgi?id=15869
-
- One section of http://edgar.sec.gov site draws to the right of the rest
- of the content
- <rdar://problem/7135951>
-
- Tests: fast/block/float/avoidance-percent-width-compat.html
- fast/block/float/avoidance-percent-width-strict.html
-
- * rendering/RenderBlock.cpp:
- (WebCore::RenderBlock::getClearDelta): Changed to apply the same float
- avoidance logic in strict mode and in compatibility mode, which
- matches Firefox and IE. Changed to compute and use the computed
- width of the child, instead of ignoring non-fixed widths.
-
-2009-08-13 Steve Block <steveblock@google.com>
-
- Reviewed by Darin Adler.
-
- Geolocation PositionOptions does not use correct default values.
- https://bugs.webkit.org/show_bug.cgi?id=27254
-
- Sets the correct default values for the properties of the PositionOptions object
- passed to Geolocation methods. See http://www.w3.org/TR/geolocation-API/.
-
- Also adds checking to throw an exception if arguments of the incorrect type are
- passed to Geolocation methods. Adds a layout test to test this. This test should
- pass on all platforms where Geolocation is implemented.
-
- Test: fast/dom/Geolocation/argument-types.html
-
- * bindings/js/JSGeolocationCustom.cpp:
- (WebCore::createPositionCallback): Added. Creates the callback.
- (WebCore::createPositionErrorCallback): Added. Creates the calback.
- (WebCore::createPositionOptions): Added. Creates the PositionOptions object, setting defaults where required.
- (WebCore::JSGeolocation::getCurrentPosition): Modified. Now uses above helper functions.
- (WebCore::JSGeolocation::watchPosition): Modified. Now uses above helper functions.
- * page/Geolocation.cpp:
- (WebCore::Geolocation::GeoNotifier::GeoNotifier): Modified. Asserts that PositionOptions object is present.
- (WebCore::Geolocation::GeoNotifier::startTimer): Modified. Only starts timer if timeout has been set.
- * page/PositionOptions.h:
- (WebCore::PositionOptions::create): Modified. Creates object with default values.
- (WebCore::PositionOptions::timeout): Modified. Uses correct type.
- (WebCore::PositionOptions::hasTimeout): Added. Determines whether a timeout has been set.
- (WebCore::PositionOptions::setTimeout): Modified. Uses correct type.
- (WebCore::PositionOptions::maximumAge): Modified. Uses correct type.
- (WebCore::PositionOptions::setMaximumAge): Modified. Uses correct type.
- (WebCore::PositionOptions::PositionOptions): Modified. Creates object with default values.
-
-2009-08-13 David Levin <levin@chromium.org>
-
- Unreviewed chromium build fix.
-
- [Chromium] Let CodeGeneratorV8.pm know that RGBColor is ref-counted.
-
- * bindings/scripts/CodeGeneratorV8.pm:
-
-2009-08-13 Drew Wilson <atwilson@google.com>
-
- Reviewed by David Levin.
-
- Merge error in SharedWorker code
- https://bugs.webkit.org/show_bug.cgi?id=28277
-
- Fixed merge error that prevents WebKit from compiling with SHARED_WORKERS enabled.
- No new tests needed.
-
- * workers/DefaultSharedWorkerRepository.cpp:
- Removed duplicated functions.
-
-2009-08-13 Kyle Prete <kylep@chromium.org>
-
- Reviewed by Dave Levin.
-
- Chromium: Show a "Playback Disabled" button on media error.
- https://bugs.webkit.org/show_bug.cgi?id=28196
- Use a disabled play button when the media file cannot be played.
-
- No new tests needed. Covered by LayoutTests/media/video-empty-source.html
-
- * rendering/RenderThemeChromiumSkia.cpp:
- (WebCore::RenderThemeChromiumSkia::paintMediaPlayButton):
-
-2009-08-13 Mark Rowe <mrowe@apple.com>
-
- Try and fix the Qt build.
-
- * bridge/qt/qt_runtime.cpp:
-
-2009-08-13 Zan Dobersek <zandobersek@gmail.com>
-
- Reviewed by Gustavo Noronha.
-
- [GTK] Drag and drop support
- https://bugs.webkit.org/show_bug.cgi?id=23642
-
- Utilizes functions that are being called upon drag and drop actions.
- Uses different GTK clipboards that hold different types
- of drag data - images, HTML markup, text, URL, URL label.
- Also clears each clipboard before setting new data to it.
-
- No new tests - despite some implementations, no new functionality
- is added until implementations of the GTK drag and drop protocol
- in WebKit part.
-
- * platform/gtk/ClipboardGtk.cpp:
- (WebCore::ClipboardGtk::ClipboardGtk):
- (WebCore::ClipboardGtk::~ClipboardGtk):
- (WebCore::getCachedImage):
- (WebCore::ClipboardGtk::declareAndWriteDragImage):
- (WebCore::ClipboardGtk::writeURL):
- (WebCore::ClipboardGtk::writeRange):
- * platform/gtk/ClipboardGtk.h: ClipboardGdk -> ClipboardGtk
-
-2009-08-13 Darin Adler <darin@apple.com>
-
- Reviewed by David Levin.
-
- JavaScriptCore tweaks to get ready for the parser arena
- https://bugs.webkit.org/show_bug.cgi?id=28243
-
- * ForwardingHeaders/runtime/CollectorHeapIterator.h: Removed.
-
- * WebCore.xcodeproj/project.pbxproj: Exposed a couple header
- files as Private that are now needed to compile Mac WebKit.
-
- * bindings/js/JSAudioConstructor.cpp:
- * bindings/js/JSDOMBinding.cpp:
- * bindings/js/JSDOMBinding.h:
- * bindings/js/JSDOMWindowCustom.cpp:
- * bindings/js/JSHTMLInputElementCustom.cpp:
- * bindings/js/JSHistoryCustom.cpp:
- * bindings/js/JSImageConstructor.cpp:
- * bindings/js/JSLazyEventListener.cpp:
- * bindings/js/JSLocationCustom.cpp:
- * bindings/js/JSMessageChannelConstructor.cpp:
- * bindings/js/JSOptionConstructor.cpp:
- * bindings/js/JSWebSocketConstructor.cpp:
- * bindings/js/JSWebSocketCustom.cpp:
- * bindings/js/JSWorkerConstructor.cpp:
- * bindings/js/JSXMLHttpRequestConstructor.cpp:
- * bridge/jni/jni_jsobject.mm:
- Updated includes.
-
- * inspector/JavaScriptDebugServer.cpp:
- (WebCore::JavaScriptDebugServer::sourceParsed):
- Change to not assert if this is called with no listeners.
- I don't think this was guaranteed before, and we now use
- this code path when recompiling. Slightly less efficient,
- but this is a one-time cost when turning on the debugger.
- (WebCore::JavaScriptDebugServer::recompileAllJSFunctions):
- Change to call Debugger::recompileAllJSFunctions.
-
-2009-08-13 Brady Eidson <beidson@apple.com>
-
- Reviewed by Eric Seidel.
-
- <rdar://problem/7138591> and https://bugs.webkit.org/show_bug.cgi?id=28260
- onhashchange property cannot be set from javascript.
-
- Test: fast/loader/onhashchange-attribute-listeners.html
-
- * html/HTMLBodyElement.cpp:
- (WebCore::HTMLBodyElement::onhashchange):
- (WebCore::HTMLBodyElement::setOnhashchange):
- * html/HTMLBodyElement.h:
- * html/HTMLBodyElement.idl:
-
- * html/HTMLFrameSetElement.cpp:
- (WebCore::HTMLFrameSetElement::onhashchange):
- (WebCore::HTMLFrameSetElement::setOnhashchange):
- * html/HTMLFrameSetElement.h:
- * html/HTMLFrameSetElement.idl:
-
- * page/DOMWindow.cpp:
- (WebCore::DOMWindow::onhashchange):
- (WebCore::DOMWindow::setOnhashchange):
- * page/DOMWindow.h:
- * page/DOMWindow.idl:
-
-2009-08-13 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Geoff Garen.
-
- Fix leaks of RGBColor instances from below SVGColor::rgbColor.
-
- * svg/SVGColor.cpp:
- (WebCore::SVGColor::rgbColor): Return a PassRefPtr to ensure that the newly-allocated
- RGBColor is cleaned up by the caller.
- * svg/SVGColor.h:
-
-2009-08-13 Pavel Feldman <pfeldman@chromium.org>
-
- Reviewed by Timothy Hatcher.
-
- WebInspector: Migrate to DOMAgent (serialized access to DOM).
-
- https://bugs.webkit.org/show_bug.cgi?id=28177
-
- * bindings/js/JSInspectorBackendCustom.cpp:
- (WebCore::JSInspectorBackend::highlightDOMNode):
- (WebCore::JSInspectorBackend::nodeForId):
- (WebCore::JSInspectorBackend::idForNode):
- (WebCore::JSInspectorBackend::wrapObject):
- (WebCore::JSInspectorBackend::unwrapObject):
- (WebCore::JSInspectorBackend::pushNodePathToFrontend):
- (WebCore::JSInspectorBackend::selectDatabase):
- (WebCore::JSInspectorBackend::selectDOMStorage):
- * bindings/js/ScriptObjectQuarantine.cpp:
- (WebCore::getQuarantinedScriptObject):
- * bindings/js/ScriptObjectQuarantine.h:
- * bindings/js/ScriptValue.cpp:
- (WebCore::ScriptValue::isObject):
- * bindings/js/ScriptValue.h:
- * bindings/v8/ScriptObjectQuarantine.cpp:
- (WebCore::getQuarantinedScriptObject):
- * bindings/v8/ScriptObjectQuarantine.h:
- * bindings/v8/ScriptValue.h:
- (WebCore::ScriptValue::isObject):
- * bindings/v8/custom/V8CustomBinding.h:
- * bindings/v8/custom/V8InspectorBackendCustom.cpp:
- (WebCore::CALLBACK_FUNC_DECL):
- * inspector/ConsoleMessage.cpp:
- (WebCore::ConsoleMessage::ConsoleMessage):
- * inspector/ConsoleMessage.h:
- * inspector/InspectorBackend.cpp:
- (WebCore::InspectorBackend::clearMessages):
- (WebCore::InspectorBackend::loaded):
- (WebCore::InspectorBackend::highlight):
- (WebCore::InspectorBackend::nodeForId):
- (WebCore::InspectorBackend::idForNode):
- (WebCore::InspectorBackend::wrapObject):
- (WebCore::InspectorBackend::unwrapObject):
- (WebCore::InspectorBackend::pushNodePathToFrontend):
- (WebCore::InspectorBackend::addNodesToSearchResult):
- (WebCore::InspectorBackend::selectDatabase):
- (WebCore::InspectorBackend::selectDOMStorage):
- * inspector/InspectorBackend.h:
- * inspector/InspectorBackend.idl:
- * inspector/InspectorController.cpp:
- (WebCore::InspectorController::InspectorController):
- (WebCore::InspectorController::focusNode):
- (WebCore::InspectorController::addMessageToConsole):
- (WebCore::InspectorController::clearConsoleMessages):
- (WebCore::InspectorController::startGroup):
- (WebCore::InspectorController::scriptObjectReady):
- (WebCore::InspectorController::setFrontendProxyObject):
- (WebCore::InspectorController::close):
- (WebCore::InspectorController::didCommitLoad):
- (WebCore::InspectorController::wrapObject):
- (WebCore::InspectorController::unwrapObject):
- * inspector/InspectorController.h:
- * inspector/InspectorDOMAgent.cpp:
- (WebCore::InspectorDOMAgent::setDocument):
- (WebCore::InspectorDOMAgent::handleEvent):
- (WebCore::InspectorDOMAgent::pushDocumentToFrontend):
- (WebCore::InspectorDOMAgent::pushChildNodesToFrontend):
- (WebCore::InspectorDOMAgent::nodeForId):
- (WebCore::InspectorDOMAgent::pushNodePathToFrontend):
- (WebCore::InspectorDOMAgent::buildObjectForNode):
- (WebCore::InspectorDOMAgent::buildArrayForContainerChildren):
- (WebCore::InspectorDOMAgent::innerParentElement):
- * inspector/InspectorDOMAgent.h:
- * inspector/InspectorDOMStorageResource.cpp:
- (WebCore::InspectorDOMStorageResource::bind):
- * inspector/InspectorFrontend.cpp:
- (WebCore::InspectorFrontend::clearConsoleMessages):
- (WebCore::InspectorFrontend::updateFocusedNode):
- (WebCore::InspectorFrontend::setDocument):
- (WebCore::InspectorFrontend::selectDatabase):
- (WebCore::InspectorFrontend::selectDOMStorage):
- (WebCore::InspectorFrontend::addNodesToSearchResult):
- * inspector/InspectorFrontend.h:
- * inspector/front-end/ConsoleView.js:
- (WebInspector.ConsoleView.prototype.clearMessages):
- (WebInspector.ConsoleView.prototype.completions):
- (WebInspector.ConsoleView.prototype._reportCompletions):
- (WebInspector.ConsoleView.prototype._messagesClicked):
- (WebInspector.ConsoleView.prototype.doEvalInWindow.evalCallback):
- (WebInspector.ConsoleView.prototype.doEvalInWindow):
- (WebInspector.ConsoleView.prototype._format):
- (WebInspector.ConsoleView.prototype._formatfunction):
- (WebInspector.ConsoleView.prototype._formatdate):
- (WebInspector.ConsoleView.prototype._formatregexp):
- (WebInspector.ConsoleView.prototype._formatnode):
- (WebInspector.ConsoleView.prototype._formatobject):
- * inspector/front-end/DOMAgent.js:
- (WebInspector.DOMNode):
- (WebInspector.DOMNode.prototype._renumber):
- (WebInspector.DOMDocument):
- (WebInspector.DOMAgent):
- (WebInspector.DOMAgent.prototype.getChildNodesAsync):
- (WebInspector.DOMAgent.prototype.setAttributeAsync):
- (WebInspector.DOMAgent.prototype.removeAttributeAsync):
- (WebInspector.DOMAgent.prototype.setTextNodeValueAsync):
- (WebInspector.DOMAgent.prototype.nodeForId):
- (WebInspector.DOMAgent.prototype._setDocument):
- (WebInspector.DOMAgent.prototype._setChildNodes):
- (WebInspector.DOMAgent.prototype._bindNodes):
- (WebInspector.DOMAgent.prototype._childNodeInserted):
- (WebInspector.CSSStyleDeclaration):
- (WebInspector.CSSStyleDeclaration.parseRule):
- (WebInspector.setDocument):
- (InspectorController.getStyles):
- (InspectorController.getComputedStyle):
- (InspectorController.getInlineStyle):
- (InspectorController.applyStyleText):
- (InspectorController.setStyleText):
- (InspectorController.toggleStyleEnabled):
- (InspectorController.applyStyleRuleText):
- (InspectorController.addStyleSelector):
- (InspectorController.setStyleProperty):
- (InspectorController.getPrototypes):
- (InspectorController.getProperties):
- (InspectorController.setPropertyValue):
- (InspectorController.evaluate):
- (InspectorController.addInspectedNode):
- (InspectorController.performSearch):
- (InspectorController.searchCanceled):
- * inspector/front-end/ElementsPanel.js:
- (WebInspector.ElementsPanel.this.treeOutline.focusedNodeChanged):
- (WebInspector.ElementsPanel.prototype.searchCanceled):
- (WebInspector.ElementsPanel.prototype.performSearch):
- (WebInspector.ElementsPanel.prototype._updateMatchesCount):
- (WebInspector.ElementsPanel.prototype._updateMatchesCountSoon):
- (WebInspector.ElementsPanel.prototype.addNodesToSearchResult):
- * inspector/front-end/ElementsTreeOutline.js:
- (WebInspector.ElementsTreeOutline.prototype.set focusedDOMNode.restoreHighlightToHoveredNode):
- (WebInspector.ElementsTreeOutline.prototype.set focusedDOMNode):
- (WebInspector.ElementsTreeElement.prototype.updateChildren):
- (WebInspector.ElementsTreeElement.prototype._attributeEditingCommitted):
- * inspector/front-end/InjectedScript.js:
- (InjectedScript.applyStyleRuleText):
- (InjectedScript.addStyleSelector):
- (InjectedScript._doesSelectorAffectNode):
- (InjectedScript._serializeRule):
- (InjectedScript._serializeStyle):
- (InjectedScript.getProperties):
- (InjectedScript.evaluate):
- (InjectedScript.addInspectedNode):
- (InjectedScript.performSearch.addNodesToResults):
- (InjectedScript.performSearch.matchExactItems):
- (InjectedScript.performSearch.matchExactId.addNodesToResults.call):
- (InjectedScript.performSearch.matchExactId):
- (InjectedScript.performSearch):
- (InjectedScript.performSearch.matchExactTagNames):
- (InjectedScript.performSearch.matchExactAttributeNames):
- (InjectedScript.performSearch.matchPartialTagNames):
- (InjectedScript.performSearch.matchStartOfTagNames):
- (InjectedScript.performSearch.matchPartialTagNamesAndAttributeValues):
- (InjectedScript.performSearch.matchPartialAttributeValues):
- (InjectedScript.performSearch.matchStyleSelector):
- (InjectedScript.performSearch.matchPlainText):
- (InjectedScript.performSearch.matchXPathQuery):
- (InjectedScript.performSearch.finishedSearching):
- (InjectedScript.performSearch.processChunk):
- (InjectedScript.searchCanceled):
- (InjectedScript._ensureCommandLineAPIInstalled.inspectObject):
- (InjectedScript._ensureCommandLineAPIInstalled):
- (InjectedScript._resolveObject):
- (InjectedScript._nodeForId):
- (InjectedScript._objectForId):
- (InjectedScript._createProxyObject):
- * inspector/front-end/ObjectPropertiesSection.js:
- (WebInspector.ObjectPropertyTreeElement.prototype.onpopulate):
- (WebInspector.ObjectPropertyTreeElement.prototype.update):
- * inspector/front-end/ObjectProxy.js:
- (WebInspector.ObjectProxy):
- (WebInspector.ObjectPropertyProxy):
- * inspector/front-end/PropertiesSidebarPane.js:
- (WebInspector.PropertiesSidebarPane.prototype.update.callback):
- (WebInspector.PropertiesSidebarPane.prototype.update):
- * inspector/front-end/StylesSidebarPane.js:
- (WebInspector.StylesSidebarPane.prototype.update.callback):
- (WebInspector.StylesSidebarPane.prototype.update):
- (WebInspector.StylePropertiesSection.prototype.editingSelectorCommitted):
- (WebInspector.StylePropertiesSection.prototype.editingSelectorCancelled):
- (WebInspector.BlankStylePropertiesSection.prototype.editingCommitted.callback):
- (WebInspector.BlankStylePropertiesSection.prototype.editingCommitted):
- (WebInspector.StylePropertyTreeElement.prototype):
- * inspector/front-end/inspector.js:
- (WebInspector._updateHoverHighlight):
- (WebInspector.loaded):
- (WebInspector.clearConsoleMessages):
- (WebInspector.selectDatabase):
- (WebInspector.selectDOMStorage):
- (WebInspector.updateFocusedNode):
- (WebInspector.addNodesToSearchResult):
- * inspector/front-end/utilities.js:
- (Object.proxyType):
- * storage/Storage.h:
- (WebCore::Storage::frame):
-
-2009-08-13 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Geoff Garen.
-
- Fix leaks of RGBColor instances from below CSSPrimitiveValue::getRGBColorValue.
-
- * css/CSSPrimitiveValue.cpp:
- (WebCore::CSSPrimitiveValue::getRGBColorValue): Return a PassRefPtr to ensure that the
- newly-allocated RGBColor is cleaned up by the caller.
- * css/CSSPrimitiveValue.h:
-
-2009-08-13 Eric Seidel <eric@webkit.org>
-
- Reviewed by David Hyatt.
-
- wrong font size when css font-family includes monospace
- https://bugs.webkit.org/show_bug.cgi?id=19161
-
- Firefox only uses fixed-width default size for exactly "font-family: monospace;".
- WebKit has historically used fixed-width default size any time a
- font-family includes monospace in the fallback list.
-
- This patch corrects WebKit's behavior to match Firefox.
- I also had to fix a bug in WebKit's font-family fallback behavior where
- child elements would inherit parts of their parents fallback lists.
-
- This patch is mostly just replacing all cases where we used to check for:
- fontDescription.genericFontFamily() == MonospaceFamily
- with:
- fontDescription.useFixedDefaultSize()
-
- Tests: fast/css/getComputedStyle/computed-style-font-family-monospace.html
- fast/css/getComputedStyle/font-family-fallback-reset.html
-
- * css/CSSStyleSelector.cpp:
- (WebCore::CSSStyleSelector::applyProperty):
- Deploy useFixedDefaultSize(). Also fix the bug where child
- FontDescriptions would carry part of the parent font-family fallback list.
- (WebCore::CSSStyleSelector::checkForGenericFamilyChange):
- It's no longer alright to just check genericFontFamily(),
- we have to check to make sure the changed style has a matching useFixedDefaultSize().
- * platform/graphics/FontDescription.h:
- (WebCore::FontDescription::useFixedDefaultSize):
- Only use the fixed default size if we have one font family and it is "monospace".
- "-webkit-monospace" is the internal representation of the CSS identifier "monospace".
-
-2009-08-13 Christian Plesner Hansen <christian.plesner.hansen@gmail.com>
-
- Reviewed by Dimitri Glazkov.
-
- [v8] Fix atomic string externalization crash.
- Atomic string externalization assumes that all non-empty strings
- can be externalized which is untrue on 64-bit. This change fixed
- that.
-
- https://bugs.webkit.org/show_bug.cgi?id=28215
-
- This bug causes loads of test crashes, no need to add new tests
- specifically for this.
-
- * bindings/v8/V8Binding.cpp:
- (WebCore::v8StringToAtomicWebCoreString):
-
-2009-08-13 George Staikos <george.staikos@torchmobile.com>
-
- Rubberstamped by Darin Adler.
-
- Use ASSERT_UNUSED instead of UNUSED_PARAM
-
- * wml/WMLAnchorElement.cpp:
- (WebCore::WMLAnchorElement::deregisterTask):
- * wml/WMLDoElement.cpp:
- (WebCore::WMLDoElement::deregisterTask):
-
-2009-08-13 Steve Block <steveblock@google.com>
-
- Reviewed by Darin Adler.
-
- Fixes a couple of bugs in SecurityOrigin::createFromDatabaseIdentifier.
- https://bugs.webkit.org/show_bug.cgi?id=28262
-
- No new tests possible.
-
- * page/SecurityOrigin.cpp:
- (WebCore::SecurityOrigin::createFromDatabaseIdentifier):
-
-2009-08-13 Dirk Schulze <krit@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [CAIRO] getImageData fails on a given rect bigger than the image rect
-
- The destination image and the source image was mixed up on creating the
- imageData.
-
- This is just a clean up and doesn't affect the current behavior. It's not
- possible to test this failure in a LayoutTest. Only canvas uses getImageData
- at the moment and returns before calling getImageData, if the image rect does
- not contain the requested rect.
-
- * platform/graphics/cairo/ImageBufferCairo.cpp:
- (WebCore::getImageData):
-
-2009-08-13 Maxime Simon <simon.maxime@gmail.com>
-
- Reviewed by Eric Seidel.
-
- [Haiku] Adding RenderTheme to WebCore.
- https://bugs.webkit.org/show_bug.cgi?id=28258
-
- * platform/haiku/RenderThemeHaiku.cpp: Added.
- (WebCore::RenderThemeHaiku::create):
- (WebCore::RenderTheme::themeForPage):
- (WebCore::RenderThemeHaiku::RenderThemeHaiku):
- (WebCore::RenderThemeHaiku::~RenderThemeHaiku):
- (WebCore::supportsFocus):
- (WebCore::RenderThemeHaiku::supportsFocusRing):
- (WebCore::RenderThemeHaiku::platformActiveSelectionBackgroundColor):
- (WebCore::RenderThemeHaiku::platformInactiveSelectionBackgroundColor):
- (WebCore::RenderThemeHaiku::platformActiveSelectionForegroundColor):
- (WebCore::RenderThemeHaiku::platformInactiveSelectionForegroundColor):
- (WebCore::RenderThemeHaiku::platformTextSearchHighlightColor):
- (WebCore::RenderThemeHaiku::systemFont):
- (WebCore::RenderThemeHaiku::paintCheckbox):
- (WebCore::RenderThemeHaiku::setCheckboxSize):
- (WebCore::RenderThemeHaiku::paintRadio):
- (WebCore::RenderThemeHaiku::setRadioSize):
- (WebCore::RenderThemeHaiku::adjustMenuListStyle):
- (WebCore::RenderThemeHaiku::paintMenuList):
- * platform/haiku/RenderThemeHaiku.h: Added.
- (WebCore::RenderThemeHaiku::supportsHover):
-
-2009-08-13 Maxime Simon <simon.maxime@gmail.com>
-
- Reviewed by Eric Seidel.
-
- [Haiku] Remove the "m_point" code from ContextMenuHaiku.cpp
- https://bugs.webkit.org/show_bug.cgi?id=28256
-
- * platform/haiku/ContextMenuHaiku.cpp:
- (WebCore::ContextMenuReceiver::ContextMenuReceiver):
- (WebCore::ContextMenu::ContextMenu):
- (WebCore::ContextMenu::appendItem):
- (WebCore::ContextMenu::insertItem):
-
-2009-08-13 Joseph Pecoraro <joepeck02@gmail.com>
-
- Reviewed by Darin Adler.
-
- Inspector: Show Hidden Cookie Data
- https://bugs.webkit.org/show_bug.cgi?id=28185
-
- Added new file Cookie.h to the WebCore XCode
-
- * WebCore.xcodeproj/project.pbxproj:
-
- InspectorController.cookies() binding
-
- * bindings/js/JSInspectorBackendCustom.cpp:
- (WebCore::JSInspectorBackend::cookies):
- * inspector/InspectorBackend.idl:
-
- Struct for static Cookie information
- (name, value, path, domain, expires, httpOnly, secure, session)
-
- * platform/Cookie.h: Added.
- (WebCore::Cookie::Cookie):
-
- Getter for the a list of raw Cookies
- getRawCookies(., ., out Vector<Cookie>)
-
- * platform/CookieJar.h:
-
- Implementation of getRawCookies for the mac platform.
-
- * platform/mac/CookieJar.mm:
- (WebCore::getRawCookies):
-
- Stub other CookieJar implementations to satisfy the interface.
-
- * platform/haiku/CookieJarHaiku.cpp:
- (WebCore::getRawCookies):
- * platform/network/chromium/CookieJarChromium.cpp:
- (WebCore::getRawCookies):
- * platform/network/curl/CookieJarCurl.cpp:
- (WebCore::getRawCookies):
- * platform/network/soup/CookieJarSoup.cpp:
- (WebCore::getRawCookies):
- * platform/network/win/CookieJarCFNetWin.cpp:
- (WebCore::getRawCookies):
- * platform/network/win/CookieJarWin.cpp:
- (WebCore::getRawCookies):
- * platform/qt/CookieJarQt.cpp:
- (WebCore::getRawCookies):
-
-2009-08-13 Patrick Mueller <Patrick_Mueller@us.ibm.com>
-
- Reviewed by Timothy Hatcher.
-
- Add a new gesture in Web Inspector to remove breakpoints
- https://bugs.webkit.org/show_bug.cgi?id=19131
-
- * inspector/front-end/SourceFrame.js:
- (WebInspector.SourceFrame.prototype._documentMouseDown):
-
-2009-08-13 Norbert Leser <norbert.leser@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- Symbian target components (library and executable files)
- require Unique Identifiers (i.e., UID3).
- These identifiers are defined in the respective project
- file, conditionally for "symbian" platform.
-
- * WebCore.pro:
-
-2009-08-13 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by Eric Seidel.
-
- wrong calculation of overflow size for flexbox and table
- https://bugs.webkit.org/show_bug.cgi?id=28064
-
- RenderFlexibleBox and RenderTable were using the width of overflow
- to update height of overflow, so height became wrong value and
- width was not updated. As the corresponding code of RenderBlock
- was sane, I factored it out and used from RenderFlexibleBox and
- RenderTable.
-
- * rendering/RenderBlock.cpp:
- (WebCore::RenderBlock::updateOverflowWithShadowAndReflection): created from code of layoutBlock
- (WebCore::RenderBlock::layoutBlock):
- * rendering/RenderBlock.h:
- * rendering/RenderFlexibleBox.cpp: use updateOverflowWithShadowAndReflection
- (WebCore::RenderFlexibleBox::layoutBlock):
- * rendering/RenderTable.cpp:
- (WebCore::RenderTable::layout): use updateOverflowWithShadowAndReflection
-
-2009-08-13 Mark Rowe <mrowe@apple.com>
-
- Revert r47185, the fix for <https://bugs.webkit.org/show_bug.cgi?id=28185>, as it broke the
- Windows build in a non-obvious manner.
-
- * WebCore.xcodeproj/project.pbxproj:
- * bindings/js/JSInspectorBackendCustom.cpp:
- * inspector/InspectorBackend.idl:
- * platform/Cookie.h: Removed.
- * platform/CookieJar.h:
- * platform/haiku/CookieJarHaiku.cpp:
- (WebCore::setCookies):
- (WebCore::cookies):
- * platform/mac/CookieJar.mm:
- * platform/network/chromium/CookieJarChromium.cpp:
- * platform/network/curl/CookieJarCurl.cpp:
- * platform/network/soup/CookieJarSoup.cpp:
- * platform/network/win/CookieJarCFNetWin.cpp:
- * platform/network/win/CookieJarWin.cpp:
- * platform/qt/CookieJarQt.cpp:
-
-2009-08-13 Ariya Hidayat <ariya.hidayat@nokia.com>
-
- Not reviewed: build fix (for r47192), adding new file from
- https://bugs.webkit.org/show_bug.cgi?id=28174
-
- * inspector/front-end/StatusBarButton.js: Added.
-
-2009-08-13 Mikhail Naganov <mnaganov@chromium.org>
-
- Reviewed by Timothy Hatcher.
-
- Introduced StatusBarButton class that encapsulates glyphs support.
- Views updated accordingly.
-
- https://bugs.webkit.org/show_bug.cgi?id=28174
-
- * WebCore.gypi:
- * WebCore.vcproj/WebCore.vcproj:
- * inspector/front-end/CookieItemsView.js:
- (WebInspector.CookieItemsView):
- (WebInspector.CookieItemsView.prototype.get statusBarItems): Updated to retrieve DOM element from StatusBarButton instance (here and in similar getters below.)
- (WebInspector.CookieItemsView.prototype.hide):
- (WebInspector.CookieItemsView.prototype.update):
- * inspector/front-end/DOMStorageItemsView.js:
- (WebInspector.DOMStorageItemsView):
- (WebInspector.DOMStorageItemsView.prototype.get statusBarItems):
- (WebInspector.DOMStorageItemsView.prototype.hide):
- (WebInspector.DOMStorageItemsView.prototype.update):
- * inspector/front-end/ElementsPanel.js:
- (WebInspector.ElementsPanel):
- (WebInspector.ElementsPanel.prototype.get statusBarItems):
- (WebInspector.ElementsPanel.prototype.hide):
- (WebInspector.ElementsPanel.prototype._nodeSearchButtonClicked):
- * inspector/front-end/Panel.js:
- * inspector/front-end/ProfileView.js:
- (WebInspector.ProfileView):
- (WebInspector.ProfileView.prototype.get statusBarItems):
- (WebInspector.ProfileView.prototype._updatePercentButton):
- (WebInspector.ProfileView.prototype._focusClicked):
- (WebInspector.ProfileView.prototype._excludeClicked):
- (WebInspector.ProfileView.prototype._resetClicked):
- * inspector/front-end/ProfilesPanel.js:
- (WebInspector.ProfilesPanel):
- (WebInspector.ProfilesPanel.prototype.get statusBarItems):
- (WebInspector.ProfilesPanel.prototype.setRecordingProfile):
- (WebInspector.ProfilesPanel.prototype._updateInterface):
- * inspector/front-end/ResourcesPanel.js:
- (WebInspector.ResourcesPanel.prototype.get statusBarItems):
- (WebInspector.ResourcesPanel.prototype.reset):
- (WebInspector.ResourcesPanel.prototype._toggleLargerResources):
- * inspector/front-end/ScriptsPanel.js:
- (WebInspector.ScriptsPanel):
- (WebInspector.ScriptsPanel.prototype.get statusBarItems):
- (WebInspector.ScriptsPanel.prototype._updatePauseOnExceptionsButton):
- (WebInspector.ScriptsPanel.prototype._updateDebuggerButtons):
- * inspector/front-end/StatusBarButton.js: Added.
- (WebInspector.StatusBarButton):
- (WebInspector.StatusBarButton.prototype._clicked):
- (WebInspector.StatusBarButton.prototype.get disabled):
- (WebInspector.StatusBarButton.prototype.set disabled):
- (WebInspector.StatusBarButton.prototype.get title):
- (WebInspector.StatusBarButton.prototype.set title):
- (WebInspector.StatusBarButton.prototype.get toggled):
- (WebInspector.StatusBarButton.prototype.set toggled):
- (WebInspector.StatusBarButton.prototype.get visible):
- (WebInspector.StatusBarButton.prototype.set visible):
- * inspector/front-end/WebKit.qrc:
- * inspector/front-end/inspector.css: For uniformity, class names are always used to identify status bar buttons. Also, fixed "Reload" button style to use glyphs.
- * inspector/front-end/inspector.html:
-
-2009-08-12 Ariya Hidayat <ariya.hidayat@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Add shadow support in GraphicsContext::fillRect().
-
- * platform/graphics/qt/GraphicsContextQt.cpp:
- (WebCore::GraphicsContext::fillRect): Paint shadow if necessary.
- (WebCore::GraphicsContext::setPlatformShadow): Inverse y offset.
-
-2009-08-13 David Levin <levin@chromium.org>
-
- Unreviewed build fix for Chromium Linux.
-
- Rollback r47157 as this broke debug tests of Chromium Linux.
-
- * platform/graphics/skia/PlatformContextSkia.cpp:
- (PlatformContextSkia::setupPaintCommon):
-
-2009-08-13 David Levin <levin@chromium.org>
-
- Unreviewed build fix for chromium.
-
- The chromium build broke due to r47185 which added
- a cookies array to inspector/InspectorBackend.idl.
-
- * bindings/v8/custom/V8CustomBinding.h: Added the declaration for the cookies callback.
- * bindings/v8/custom/V8InspectorBackendCustom.cpp:
- (WebCore::CALLBACK_FUNC_DECL(InspectorBackendCookies)): Stubbed out an implementation
- for the cookies callback.
-
-2009-08-12 Joseph Pecoraro <joepeck02@gmail.com>
-
- Reviewed by Timothy Hatcher.
-
- Inspector: Show Hidden Cookie Data
- https://bugs.webkit.org/show_bug.cgi?id=28185
-
- Added new file Cookie.h to the WebCore XCode
-
- * WebCore.xcodeproj/project.pbxproj:
-
- InspectorController.cookies() binding
-
- * bindings/js/JSInspectorBackendCustom.cpp:
- (WebCore::JSInspectorBackend::cookies):
- * inspector/InspectorBackend.idl:
-
- Struct for static Cookie information
- (name, value, path, domain, expires, httpOnly, secure, session)
-
- * platform/Cookie.h: Added.
- (WebCore::Cookie::Cookie):
-
- Getter for the a list of raw Cookies
- getRawCookies(., ., out Vector<Cookie>)
-
- * platform/CookieJar.h:
-
- Implementation of getRawCookies for the mac platform.
-
- * platform/mac/CookieJar.mm:
- (WebCore::getRawCookies):
-
- Stub other CookieJar implementations to satisfy the interface.
-
- * platform/haiku/CookieJarHaiku.cpp:
- (WebCore::getRawCookies):
- * platform/network/chromium/CookieJarChromium.cpp:
- (WebCore::getRawCookies):
- * platform/network/curl/CookieJarCurl.cpp:
- (WebCore::getRawCookies):
- * platform/network/soup/CookieJarSoup.cpp:
- (WebCore::getRawCookies):
- * platform/network/win/CookieJarCFNetWin.cpp:
- (WebCore::getRawCookies):
- * platform/network/win/CookieJarWin.cpp:
- (WebCore::getRawCookies):
- * platform/qt/CookieJarQt.cpp:
- (WebCore::getRawCookies):
-
-2009-08-08 Joseph Pecoraro <joepeck02@gmail.com>
-
- Reviewed by Timothy Hatcher.
-
- Inspector: Cookies in Storage Panel
- https://bugs.webkit.org/show_bug.cgi?id=27202
-
- Data Structure for a Cookie. Just Key/Value for Now:
-
- * inspector/front-end/Cookie.js: Added.
- (WebInspector.Cookie):
- (WebInspector.Cookie.prototype.get key):
- (WebInspector.Cookie.prototype.set key):
- (WebInspector.Cookie.prototype.get value):
- (WebInspector.Cookie.prototype.set value):
-
- A Storage View for Cookies. Allows for Refresh/Delete:
-
- * inspector/front-end/CookieItemsView.js: Added.
- (WebInspector.CookieItemsView):
- (WebInspector.CookieItemsView.prototype.get statusBarItems): refresh and delete buttons
- (WebInspector.CookieItemsView.prototype.show):
- (WebInspector.CookieItemsView.prototype.hide):
- (WebInspector.CookieItemsView.prototype.update):
- (WebInspector.CookieItemsView.prototype.buildCookies): parses the inspected window's document.cookie string
- (WebInspector.CookieItemsView.prototype.dataGridForCookies): creates a datagrid for cookies
- (WebInspector.CookieItemsView.prototype._deleteButtonClicked): attempt at deleting the cookie (not flawless)
- (WebInspector.CookieItemsView.prototype._refreshButtonClicked): rebuild the datagrid
-
- Include a SidebarSection Section in the Databases Panel:
-
- * inspector/front-end/DatabasesPanel.js:
- (WebInspector.DatabasesPanel):
- (WebInspector.DatabasesPanel.prototype.show): calls populateInterface
- (WebInspector.DatabasesPanel.prototype.populateInterface): adds cookies if they don't exist
- (WebInspector.DatabasesPanel.prototype.reset): remove cookie specific parts
- (WebInspector.DatabasesPanel.prototype.addCookies): add cookies sidebar tree element
- (WebInspector.DatabasesPanel.prototype.showCookies): sets the visible view to a CookiesItemView
- (WebInspector.CookieSidebarTreeElement):
- (WebInspector.CookieSidebarTreeElement.prototype.onselect):
- (WebInspector.CookieSidebarTreeElement.prototype.get mainTitle): just "Cookies" at the moment
- (WebInspector.CookieSidebarTreeElement.prototype.set mainTitle):
- (WebInspector.CookieSidebarTreeElement.prototype.get subtitle): no subtitle yet
- (WebInspector.CookieSidebarTreeElement.prototype.set subtitle):
-
- New "Cookies" Image for the Sidebar:
-
- * inspector/front-end/Images/cookie.png: Added.
- * inspector/front-end/inspector.css:
-
- Include the Added Files where appropriate:
-
- * inspector/front-end/WebKit.qrc:
- * inspector/front-end/inspector.html:
-
-2009-08-12 George Wright <george.wright@torchmobile.com>
-
- Reviewed by George Staikos.
-
- Add SQLTransactionCoordinator.[h,cpp] to WebCore.pro.
-
- https://bugs.webkit.org/show_bug.cgi?id=28246
-
- * WebCore.pro:
-
-2009-08-12 George Staikos <george.staikos@torchmobile.com>
-
- Reviewed by Adam Treat.
-
- Mark unused variables to avoid compile failures in -Werror.
-
- * wml/WMLAnchorElement.cpp:
- (WebCore::WMLAnchorElement::deregisterTask):
- * wml/WMLDoElement.cpp:
- (WebCore::WMLDoElement::deregisterTask):
-
-2009-08-12 Charles Wei <charles.wei@torchmobile.com.cn>
-
- Reviewed by Niko Zimmermann.
-
- This is to add WCSS marquee support , which is defined by OMA and is an extension for CSS2,
- It extends CSS display with "display:-wap-marquee;-wap-marquee-dir:xxx;-wap-marquee-speed:xxx;-wap-marquee-style:xxx"
- Minor fixes by Eric Seidel and George Staikos.
- https://bugs.webkit.org/show_bug.cgi?id=23727
-
- No new tests, the tests have already been landed at LayoutTests/fast/wcss/
-
- * WebCore.pro:
- * css/CSSParser.cpp:
- (WebCore::CSSParser::parseValue):
- * css/CSSPrimitiveValueMappings.h:
- (WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
- * css/CSSStyleSelector.cpp:
- (WebCore::CSSStyleSelector::applyProperty):
- * css/CSSValueKeywords.in:
- * css/WCSSPropertyNames.in: Added.
- * css/WCSSValueKeywords.in: Added.
- * rendering/RenderMarquee.cpp:
- (WebCore::RenderMarquee::start):
- * rendering/RenderObject.cpp:
- (WebCore::RenderObject::createObject):
- * rendering/style/RenderStyleConstants.h:
- (WebCore::):
-
-2009-08-12 George Wright <george.wright@torchmobile.com>
-
- Reviewed by David Hyatt.
-
- Update the canvas renderer's intrinsic size with the zoomed
- lengths and ensure the intrinsic size is correct when setting
- an initial style.
-
- https://bugs.webkit.org/show_bug.cgi?id=26908
-
- Test: fast/canvas/canvas-zoom.html
-
- * rendering/RenderHTMLCanvas.cpp:
- (WebCore::RenderHTMLCanvas::canvasSizeChanged):
- * rendering/RenderReplaced.cpp:
- (WebCore::RenderReplaced::styleDidChange):
-
-2009-08-12 Alpha Lam <hclam@chromium.org>
-
- Reviewed by Simon Fraser.
-
- Fix regression for dragging the media controller thumb.
- https://bugs.webkit.org/show_bug.cgi?id=28211
-
- Modified the conditions for rejecting events on the media controller
- to only rejecting mouse events not from the left button.
-
- Test: media/controls-drag-timebar.html
-
- * rendering/MediaControlElements.cpp:
- (WebCore::MediaControlTimelineElement::defaultEventHandler):
-
-2009-08-12 Dumitru Daniliuc <dumi@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Fixing a deadlock caused by two transactions that run on two
- different database handles for the same DB. Adding a per-DB thread
- transaction coordinator that allows the DB thread to run only one
- transaction per DB file at any given time.
-
- Adding a regression test for this bug.
-
- Test: storage/multiple-transactions-on-different-handles.html
-
- https://bugs.webkit.org/show_bug.cgi?id=27966
-
- * GNUmakefile.am:
- * WebCore.gypi:
- * WebCore.vcproj/WebCore.vcproj:
- * WebCore.xcodeproj/project.pbxproj:
- * storage/Database.cpp:
- (WebCore::Database::transactionCoordinator):
- * storage/Database.h:
- * storage/DatabaseThread.cpp:
- (WebCore::DatabaseThread::DatabaseThread):
- * storage/DatabaseThread.h:
- (WebCore::DatabaseThread::transactionCoordinator):
- * storage/SQLTransaction.cpp:
- (WebCore::SQLTransaction::SQLTransaction):
- (WebCore::SQLTransaction::debugStepName):
- (WebCore::SQLTransaction::performNextStep):
- (WebCore::SQLTransaction::aquireLock):
- (WebCore::SQLTransaction::lockAquired):
- (WebCore::SQLTransaction::cleanupAfterSuccessCallback):
- (WebCore::SQLTransaction::cleanupAfterTransactionErrorCallback):
- * storage/SQLTransaction.h:
- * storage/SQLTransactionCoordinator.cpp: Added.
- * storage/SQLTransactionCoordinator.h: Added.
-
-2009-08-12 Darin Adler <darin@apple.com>
-
- Reviewed by Geoff Garen.
-
- Custom properties on DOM objects are lost after GC (as demonstrated by the gc-9.html test)
- https://bugs.webkit.org/show_bug.cgi?id=28194
-
- * GNUmakefile.am: Added the two new source files.
- * WebCore.gypi: Ditto.
- * WebCore.pro: Ditto.
- * WebCore.vcproj/WebCore.vcproj: Ditto.
- * WebCore.xcodeproj/project.pbxproj: Ditto.
- * WebCoreSources.bkl: Ditto.
-
- * bindings/js/JSCSSRuleListCustom.cpp: Added.
- (WebCore::JSCSSRuleList::markChildren): Call markDOMObjectWrapper
- on rules in the list.
-
- * bindings/js/JSCSSStyleDeclarationCustom.cpp:
- (WebCore::JSCSSStyleDeclaration::markChildren): Added. Call
- markDOMObjectWrapper on the CSSValue objects that are owned by the
- declaration as values of the properties.
-
- * bindings/js/JSDOMBinding.cpp:
- (WebCore::isObservableThroughDOM): Added code to handle some
- cases where nodes are observable because they own objects that
- in turn have custom properties.
-
- * bindings/js/JSDOMBinding.h: Fix a typo in the header.
-
- * bindings/js/JSDocumentCustom.cpp:
- (WebCore::JSDocument::markChildren): Added call to markDOMObjectWrapper
- for implementation and styleSheets.
-
- * bindings/js/JSElementCustom.cpp:
- (WebCore::JSElement::markChildren): Added. Calls markDOMObjectWrapper
- for attributes and style.
-
- * bindings/js/JSHTMLCanvasElementCustom.cpp: Added.
- (WebCore::JSHTMLCanvasElement::markChildren): Call markDOMObjectWrapper
- on the rendering context.
-
- * bindings/js/JSStyleSheetCustom.cpp:
- (WebCore::JSStyleSheet::markChildren): Call markDOMObjectWrapper on
- items in the stylesheet.
-
- * bindings/js/JSStyleSheetListCustom.cpp:
- (WebCore::JSStyleSheetList::markChildren): Added. Calls
- markDOMObjectWrapper on stylesheets in the list.
-
- * css/CSSRuleList.idl: Added CustomMarkFunction.
- * css/CSSStyleDeclaration.idl: Ditto.
- * css/StyleSheetList.idl: Ditto.
- * dom/Element.idl: Ditto.
- * html/HTMLCanvasElement.idl: Ditto.
-
- * dom/Element.h: Made everything private that could be.
- Added access to the attributeMap that does returns
- the existing map without doing any of the lazy-updating work. This
- is needed to get at the existing attributes during garbage collection
- without having side effects.
-
- * html/HTMLCanvasElement.h: Cleaned up the header a bit, making
- members private. Added renderingContext2D function for use in
- JSHTMLCanvasElement::markChildren.
-
-2009-08-12 Brian Weinstein <bweinstein@apple.com>
-
- Reviewed by Eric Seidel.
-
- Fixes two bugs about Pan Scrolling - Scrolling with middle mouse button doesn't
- work in Expanded view on reader.google.com, and Can enter auto scroll from a non-scrollable area.
- https://bugs.webkit.org/show_bug.cgi?id=28023
- https://bugs.webkit.org/show_bug.cgi?id=24794
-
- Added a new method to RenderBox seeing if the Box can be scrolled and actually has something to
- scroll, and use that for pan scrolling.
-
- Test: platform/win/fast/events/panScroll-nested-divs.html
-
- * page/EventHandler.cpp:
- (WebCore::EventHandler::handleMouseDraggedEvent):
- (WebCore::EventHandler::updateAutoscrollRenderer):
- (WebCore::EventHandler::handleMousePressEvent):
- * rendering/RenderBox.cpp:
- (WebCore::RenderBox::canBeScrolledAndHasScrollableArea):
- * rendering/RenderBox.h:
- * rendering/RenderLayer.cpp:
- (WebCore::RenderLayer::scrollByRecursively):
-
-2009-08-12 Brian Weinstein <bweinstein@apple.com>
-
- Reviewed by Adam Roben.
-
- Fix of <rdar://6728361> Mouse wheel scrolling on a page with expanded drop down
- list detaches drop down.
-
- Added a function for Windows PopupMenu's to return their class name.
-
- * platform/PopupMenu.h:
- * platform/win/PopupMenuWin.cpp:
- (WebCore::PopupMenu::popupClassName):
-
-2009-08-12 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by Dan Bernstein.
-
- WINCE PORT: Color and Gradient
- https://bugs.webkit.org/show_bug.cgi?id=27511
-
- * platform/graphics/wince/ColorWince.cpp: Added.
- * platform/graphics/wince/GradientWince.cpp: Added.
-
-2009-08-12 Yong Li <yong.li@torchmobile.com>
-
- Reviewed by Eric Seidel.
-
- fix a typo in platform/graphics/skia/PlatformContextSkia.cpp
- https://bugs.webkit.org/show_bug.cgi?id=28172
-
- No new tests because it's a just typo fix.
-
- * platform/graphics/skia/PlatformContextSkia.cpp:
- (PlatformContextSkia::setupPaintCommon):
-
-2009-08-12 Michelangelo De Simone <micdesim@gmail.com>
-
- Reviewed by Darin Adler.
-
- https://bugs.webkit.org/show_bug.cgi?id=27458
- Support for the :default CSS pseudoclass, as per HTML5 spec.
- http://www.whatwg.org/specs/web-apps/current-work/multipage/interactive-elements.html#selector-default
-
- Tests: fast/css/pseudo-default-001.html
- fast/css/pseudo-default-002.html
- fast/css/pseudo-default-003.html
- fast/css/pseudo-default-004.html
-
- * css/CSSSelector.cpp:
- (WebCore::CSSSelector::extractPseudoType): pseudoDefault
- * css/CSSSelector.h:
- (WebCore::CSSSelector::):
- * css/CSSStyleSelector.cpp:
- (WebCore::CSSStyleSelector::canShareStyleWithElement): sharing stuff is
- aware that only one default button can be present in a form
- (WebCore::CSSStyleSelector::SelectorChecker::checkOneSelector): applies
- the :default CSS pseudoclass
- * dom/Element.h:
- (WebCore::Element::isDefaultButtonForForm): new method to determine
- whether a FormControl is a default button for a given form
- * html/HTMLFormControlElement.cpp:
- (WebCore::HTMLFormControlElement::isDefaultButtonForForm): ditto
- * html/HTMLFormControlElement.h:
- * html/HTMLFormElement.cpp:
- (WebCore::HTMLFormElement::defaultButton): extracts the default button
- from the form
- * html/HTMLFormElement.h:
-
-2009-08-12 David Levin <levin@chromium.org>
-
- No review, rolling out r47106.
- https://bugs.webkit.org/show_bug.cgi?id=28215
-
- This patch relied on a new version of v8 which is not available
- in chromium yet.
-
- * bindings/v8/V8Binding.cpp:
- (WebCore::v8StringToAtomicWebCoreString):
-
-2009-08-12 Steve Block <steveblock@google.com>
-
- Reviewed by Eric Seidel.
-
- Bug 26993 : Geolocation::requestPermission()
- https://bugs.webkit.org/show_bug.cgi?id=26993
-
- Second patch to allow the Geolocation permission request to chrome to be asynchronous
- or synchronous. Fixes a bug where callbacks were called twice when permissions
- are granted synchronously.
-
- No new tests required.
-
- * page/Geolocation.cpp:
- (WebCore::Geolocation::setIsAllowed): Modified. Calls makeSuccessCallbacks() rather than geolocationServicePositionChanged().
- (WebCore::Geolocation::geolocationServicePositionChanged): Modified. Updated logic to avoid repeated callbacks when permissions are granted synchronously.
- (WebCore::Geolocation::makeSuccessCallbacks): Added. Calls success callbacks.
- * page/Geolocation.h: Modified. Adds makeSuccessCallbacks().
-
-2009-08-12 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Sam Weinig.
-
- <rdar://problem/6952336>
- CrashTracer: [USER] 3 crashes in Safari at com.apple.WebCore • WebCore::SecurityOrigin::canAccess const + 27
-
- Make sure to set the security origin before calling dispatchWindowObjectAvailable.
-
- * loader/FrameLoader.cpp:
- (WebCore::FrameLoader::begin):
-
-2009-08-12 Xiaomei Ji <xji@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Fix [Chromium] drop down menu letter selection, skip selections
- https://bugs.webkit.org/show_bug.cgi?id=28205
-
- Not auto-testable since it is chromim platform specific code, and it involves sending a keyboard
- event to the popup, which is not possible (eventSender sends the key
- events through webview, we want to go through the webwidget).
-
- * manual-tests/keyboard_select_elements_with_same_beginning.html: Added.
- * platform/chromium/PopupMenuChromium.cpp:
- (WebCore::isCharacterTypeEvent): style change.
- (WebCore::PopupListBox::handleKeyEvent): typeAheadFind should be called only when the event is
- a character type event to avoid calling twice for English.
- (WebCore::PopupListBox::typeAheadFind): remove unnecessary checking of isCharacterTypeEvent() since the whole function is only called under that condition.
-
-2009-08-12 Maxime Simon <simon.maxime@gmail.com>
-
- Reviewed by Eric Seidel.
-
- [Haiku] Adding GraphicsContext to WebCore/platform/graphics/haiku.
- https://bugs.webkit.org/show_bug.cgi?id=28130
-
- * platform/graphics/haiku/GraphicsContextHaiku.cpp: Added.
- (WebCore::GraphicsContextPlatformPrivate::GraphicsContextPlatformPrivate):
- (WebCore::GraphicsContextPlatformPrivate::~GraphicsContextPlatformPrivate):
- (WebCore::GraphicsContext::GraphicsContext):
- (WebCore::GraphicsContext::~GraphicsContext):
- (WebCore::GraphicsContext::platformContext):
- (WebCore::GraphicsContext::savePlatformState):
- (WebCore::GraphicsContext::restorePlatformState):
- (WebCore::GraphicsContext::drawRect):
- (WebCore::GraphicsContext::drawLine):
- (WebCore::GraphicsContext::drawEllipse):
- (WebCore::GraphicsContext::strokeArc):
- (WebCore::GraphicsContext::strokePath):
- (WebCore::GraphicsContext::drawConvexPolygon):
- (WebCore::GraphicsContext::fillRect):
- (WebCore::GraphicsContext::fillRoundedRect):
- (WebCore::GraphicsContext::fillPath):
- (WebCore::GraphicsContext::beginPath):
- (WebCore::GraphicsContext::addPath):
- (WebCore::GraphicsContext::clip):
- (WebCore::GraphicsContext::drawFocusRing):
- (WebCore::GraphicsContext::drawLineForText):
- (WebCore::GraphicsContext::drawLineForMisspellingOrBadGrammar):
- (WebCore::GraphicsContext::roundToDevicePixels):
- (WebCore::GraphicsContext::beginTransparencyLayer):
- (WebCore::GraphicsContext::endTransparencyLayer):
- (WebCore::GraphicsContext::clearRect):
- (WebCore::GraphicsContext::strokeRect):
- (WebCore::GraphicsContext::setLineCap):
- (WebCore::GraphicsContext::setLineJoin):
- (WebCore::GraphicsContext::setMiterLimit):
- (WebCore::GraphicsContext::setAlpha):
- (WebCore::GraphicsContext::setCompositeOperation):
- (WebCore::GraphicsContext::clipOut):
- (WebCore::GraphicsContext::clipToImageBuffer):
- (WebCore::GraphicsContext::getCTM):
- (WebCore::GraphicsContext::translate):
- (WebCore::GraphicsContext::origin):
- (WebCore::GraphicsContext::rotate):
- (WebCore::GraphicsContext::scale):
- (WebCore::GraphicsContext::clipOutEllipseInRect):
- (WebCore::GraphicsContext::addInnerRoundedRectClip):
- (WebCore::GraphicsContext::concatCTM):
- (WebCore::GraphicsContext::setPlatformShouldAntialias):
- (WebCore::GraphicsContext::setImageInterpolationQuality):
- (WebCore::GraphicsContext::setURLForRect):
- (WebCore::GraphicsContext::setPlatformFont):
- (WebCore::GraphicsContext::setPlatformStrokeColor):
- (WebCore::GraphicsContext::getHaikuStrokeStyle):
- (WebCore::GraphicsContext::setPlatformStrokeStyle):
- (WebCore::GraphicsContext::setPlatformStrokeThickness):
- (WebCore::GraphicsContext::setPlatformFillColor):
- (WebCore::GraphicsContext::clearPlatformShadow):
- (WebCore::GraphicsContext::setPlatformShadow):
-
-2009-08-12 Maxime Simon <simon.maxime@gmail.com>
-
- Reviewed by Eric Seidel.
-
- [Haiku] Modifying WebCore/platform/graphics files to allow Haiku port.
- https://bugs.webkit.org/show_bug.cgi?id=28128
-
- * platform/graphics/BitmapImage.h: Adding getBBitmap() function.
- * platform/graphics/Color.h: rgb_color is the Color struct in Haiku.
- * platform/graphics/FloatPoint.h: BPoint is the Point class in Haiku.
- * platform/graphics/FloatRect.h: BRect is the Rect class in Haiku.
- * platform/graphics/GraphicsContext.cpp:
- * platform/graphics/GraphicsContext.h: BView is the PlatformGraphicsContext
- class for Haiku. Adding getHaikuStrokeStyle() function.
- * platform/graphics/Icon.h: Adding an empty Icon() constructor because
- this class isn't implemented for the moment.
- * platform/graphics/ImageSource.h: BBitmap is the native bitmap class
- for Haiku.
- * platform/graphics/IntPoint.h: BPoint is the Point class in Haiku.
- * platform/graphics/IntRect.h: BRect is the Rect class in Haiku.
- * platform/graphics/IntSize.h: BSize is the Size class in Haiku.
- * platform/graphics/Path.h: BRegion is the Path class in Haiku.
- * platform/graphics/Pattern.h: Adding the GraphicsDef.h header and the
- native pattern type.
- * platform/graphics/SimpleFontData.h: Adding Haiku's Font.h header.
-
-2009-08-12 Maxime Simon <simon.maxime@gmail.com>
-
- Reviewed by Eric Seidel.
-
- [Haiku] Adding modification to the WebCore/platform/ files to allow
- the Haiku port.
- https://bugs.webkit.org/show_bug.cgi?id=28128
-
- * platform/ContextMenuItem.h: BMenu is the PlatformMenuItemDescription
- class of Haiku.
- * platform/Cursor.h: BCursor is the Cursor class of Haiku.
- * platform/DragData.h: Use a BMessage as DragDataRef.
- * platform/DragImage.h: Use a BBitmap as DragImageRef.
- * platform/PlatformKeyboardEvent.h: Use BMessage as event vehicle.
- * platform/PlatformMenuDescription.h: BMenu is the
- PlatformMenuDescription class of Haiku.
- * platform/PlatformMouseEvent.h: Use BMessage as event vehicle.
- * platform/PlatformWheelEvent.h: Use BMessage as event vehicle.
- * platform/PopupMenu.h: Adding a m_menu attribute for Haiku.
- * platform/Widget.h: BView is the PlatformWidget class of Haiku.
-
-2009-08-12 Maxime Simon <simon.maxime@gmail.com>
-
- Reviewed by Eric Seidel.
-
- [Haiku] Tiny modifications on WebCore files to allow Haiku port.
- https://bugs.webkit.org/show_bug.cgi?id=28128
-
- * bindings/js/ScriptControllerHaiku.cpp: Style cleanup.
- * loader/CachedFont.cpp: Haiku behaves like Qt, Gtk, or Chromium,
- so many PLATFORM(HAIKU) were added to these functions.
- (WebCore::CachedFont::~CachedFont):
- (WebCore::CachedFont::ensureCustomFontData):
- (WebCore::CachedFont::platformDataFromCustomData):
- (WebCore::CachedFont::allClientsRemoved):
- * page/EventHandler.cpp: Like the mac and Qt port, Haiku doesn't need the
- invertSenseOfTabsToLinks() function.
- * page/haiku/DragControllerHaiku.cpp: Style cleanup.
- * platform/image-decoders/ImageDecoder.h: For image decoding Haiku
- behaves like Cairo or Wx, (not like Skia).
- (WebCore::RGBA32Buffer::getAddr):
- * platform/text/PlatformString.h: Adding the String(BString&) and BString()
- methods specific to Haiku.
- * platform/text/UnicodeRange.h: Haiku needs to include stdint.h.
- * platform/text/haiku/TextBreakIteratorInternalICUHaiku.cpp:
- (WebCore::currentSearchLocaleID): Missing function.
-
-2009-08-12 Maxime Simon <simon.maxime@gmail.com>
-
- Reviewed by Eric Seidel.
-
- [Haiku] Adding the ScrollbarTheme files.
- https://bugs.webkit.org/show_bug.cgi?id=28125
-
- * platform/haiku/ScrollbarThemeHaiku.cpp: Added.
- (buttonWidth):
- (WebCore::ScrollbarTheme::nativeTheme):
- (WebCore::ScrollbarThemeHaiku::ScrollbarThemeHaiku):
- (WebCore::ScrollbarThemeHaiku::~ScrollbarThemeHaiku):
- (WebCore::ScrollbarThemeHaiku::scrollbarThickness):
- (WebCore::ScrollbarThemeHaiku::hasButtons):
- (WebCore::ScrollbarThemeHaiku::hasThumb):
- (WebCore::ScrollbarThemeHaiku::backButtonRect):
- (WebCore::ScrollbarThemeHaiku::forwardButtonRect):
- (WebCore::ScrollbarThemeHaiku::trackRect):
- (WebCore::ScrollbarThemeHaiku::paintScrollbarBackground):
- (WebCore::ScrollbarThemeHaiku::paintButton):
- (WebCore::ScrollbarThemeHaiku::paintThumb):
- * platform/haiku/ScrollbarThemeHaiku.h: Added.
-
-2009-08-12 Maxime Simon <simon.maxime@gmail.com>
-
- Reviewed by Eric Seidel.
-
- [Haiku] Adding eight simple files to WebCore/platform/graphics/haiku.
- https://bugs.webkit.org/show_bug.cgi?id=28122
-
- * platform/graphics/haiku/ColorHaiku.cpp: Added.
- (WebCore::Color::Color):
- (WebCore::Color::operator rgb_color):
- (WebCore::focusRingColor):
- * platform/graphics/haiku/FloatPointHaiku.cpp: Added.
- (WebCore::FloatPoint::FloatPoint):
- (WebCore::FloatPoint::operator BPoint):
- * platform/graphics/haiku/FloatRectHaiku.cpp: Added.
- (WebCore::FloatRect::FloatRect):
- (WebCore::FloatRect::operator BRect):
- * platform/graphics/haiku/GradientHaiku.cpp: Added.
- (WebCore::Gradient::platformDestroy):
- (WebCore::Gradient::platformGradient):
- (WebCore::Gradient::fill):
- * platform/graphics/haiku/IntPointHaiku.cpp: Added.
- (WebCore::IntPoint::IntPoint):
- (WebCore::IntPoint::operator BPoint):
- * platform/graphics/haiku/IntRectHaiku.cpp: Added.
- (WebCore::IntRect::IntRect):
- (WebCore::IntRect::operator BRect):
- * platform/graphics/haiku/IntSizeHaiku.cpp: Added.
- (WebCore::IntSize::IntSize):
- (WebCore::IntSize::operator BSize):
- * platform/graphics/haiku/PathHaiku.cpp: Added.
- (WebCore::Path::Path):
- (WebCore::Path::~Path):
- (WebCore::Path::operator=):
- (WebCore::Path::hasCurrentPoint):
- (WebCore::Path::contains):
- (WebCore::Path::translate):
- (WebCore::Path::boundingRect):
- (WebCore::Path::moveTo):
- (WebCore::Path::addLineTo):
- (WebCore::Path::addQuadCurveTo):
- (WebCore::Path::addBezierCurveTo):
- (WebCore::Path::addArcTo):
- (WebCore::Path::closeSubpath):
- (WebCore::Path::addArc):
- (WebCore::Path::addRect):
- (WebCore::Path::addEllipse):
- (WebCore::Path::clear):
- (WebCore::Path::isEmpty):
- (WebCore::Path::debugString):
- (WebCore::Path::apply):
- (WebCore::Path::transform):
- (WebCore::Path::strokeBoundingRect):
-
-2009-08-12 Lyon Chen <lyon.chen@torchmobile.com>
-
- Reviewed by George Staikos.
-
- WINCE PORT: Implement Keygen for WINCE
- https://bugs.webkit.org/show_bug.cgi?id=27543
-
- * platform/wince/KeygenWince.cpp: Added.
-
-2009-08-12 Brent Fulgham <bfulgham@webkit.org>
-
- Rubber-stamped by Kevin Ollivier.
-
- Handle crash in wx due to null value passed to strlen in
- the CString constructor.
-
- * platform/network/curl/ResourceHandleManager.cpp:
- (WebCore::certificatePath): Check for null return from getenv
- and use default CString constructor instead.
-
-2009-08-12 Yong Li <yong.li@torchmobile.com>
-
- Reviewed by Eric Seidel.
-
- WINCE PORT: simple stubs to make it build for WINCE
- https://bugs.webkit.org/show_bug.cgi?id=27543
-
- * platform/wince/DragDataWince.cpp: Added.
- * platform/wince/DragImageWince.cpp: Added.
- * platform/wince/EditorWince.cpp: Added.
- * platform/wince/KURLWince.cpp: Added.
-
-2009-08-12 Yong Li <yong.li@torchmobile.com>
-
- Reviewed by George Staikos.
-
- WINCEPORT: FileSystem and FileChooser
- https://bugs.webkit.org/show_bug.cgi?id=27543
-
- * platform/wince/FileChooserWince.cpp: Added.
- * platform/wince/FileSystemWince.cpp: Added.
-
-2009-08-12 Yong Li <yong.li@torchmobile.com>
-
- Reviewed by Eric Seidel.
-
- WINCE PORT: implement Cursor for WINCE. There's no real cursor on most
- WinMob devices. We pass the cursor info to application, which so that
- can determine what to do.
- https://bugs.webkit.org/show_bug.cgi?id=27543
-
- * platform/wince/CursorWince.cpp: Added.
-
-2009-08-12 Yong Li <yong.li@torchmobile.com>
-
- Reviewed by George Staikos.
-
- WINCE PORT: MIMETypeRegistry
- https://bugs.webkit.org/show_bug.cgi?id=27543
-
- * platform/wince/MIMETypeRegistryWince.cpp: Added.
-
-2009-08-12 Joe Mason <joe.mason@torchmobile.com>
-
- Reviewed by George Staikos.
-
- WINCE PORT: Pasteboard and SearchPopupMenu
- https://bugs.webkit.org/show_bug.cgi?id=27543
-
- * platform/wince/PasteboardWince.cpp: Added.
- * platform/wince/SearchPopupMenuWince.cpp: Added.
-
-2009-08-12 Yong Li <yong.li@torchmobile.com>
-
- Reviewed by George Staikos.
-
- WINCE PORT: Add SharedTimerWince.cpp and SystemTimeWince.cpp
- https://bugs.webkit.org/show_bug.cgi?id=27543
-
- * platform/wince/SharedTimerWince.cpp: Added.
- * platform/wince/SystemTimeWince.cpp: Added.
-
-2009-08-12 Mark Mentovai <mark@chromium.org>
-
- Reviewed by Darin Adler.
-
- https://bugs.webkit.org/show_bug.cgi?id=28204
- Allow C++ exceptions to be disabled in WebCore's V8 Mac build.
-
- * WebCorePrefix.h:
- Only undefine |try| and |catch| when building Objective-C[++],
- leaving the C++ library definitions intact for C++.
-
-2009-08-12 Nate Chapin <japhet@chromium.org>
-
- Reviewed by Adam Barth.
-
- Add a Custom Setter for DOMWindowEvent in the V8 bindings.
- https://bugs.webkit.org/show_bug.cgi?id=27719
-
- Tests: fast/events/set-event-in-another-frame.html
- fast/events/set-event-to-null.html
-
- * bindings/scripts/CodeGeneratorV8.pm: Clean up custom getter/setter code,
- as it currently doesn't support a custom getter
- and a v8-specific custom setter simultaneously.
- * bindings/v8/custom/V8CustomBinding.h:
- * bindings/v8/custom/V8DOMWindowCustom.cpp:
- (WebCore::ACCESSOR_SETTER):
- * page/DOMWindow.idl:
-
-2009-08-12 Peter Kasting <pkasting@google.com>
-
- Reviewed by Adam Treat.
-
- https://bugs.webkit.org/show_bug.cgi?id=27965
- Merge wx/ImageSourceWx.cpp into ImageSource.cpp. No changes to
- ImageSource.cpp were needed, so this just deletes ImageSourceWx.cpp.
-
- * WebCore.gypi:
- * WebCoreSources.bkl:
- * platform/graphics/wx/ImageSourceWx.cpp: Removed.
- * webcore-wx.bkl:
-
-2009-08-12 Peter Kasting <pkasting@google.com>
-
- Reviewed by Dave Levin.
-
- https://bugs.webkit.org/show_bug.cgi?id=27933
- Build fix after r47099.
-
- * platform/graphics/skia/ImageBufferSkia.cpp:
- (WebCore::getImageData):
- (WebCore::putImageData):
-
-2009-08-08 Yong Li <yong.li@torchmobile.com>
-
- Reviewed by Adam Treat.
-
- WINCE PORT: Implement Path for WINCE. Most code can be
- reused for other ports that don't have native path support
- https://bugs.webkit.org/show_bug.cgi?id=28188
-
- Written also by George Staikos (including quadCurve() and bezier())
-
- * platform/graphics/wince/PathWince.cpp: Added.
- * platform/graphics/wince/PlatformPathWince.cpp: Added.
- * platform/graphics/wince/PlatformPathWince.h: Added.
- * platform/graphics/wince/WinceGraphicsExtras.h: Added.
-
-2009-08-12 Joseph Pecoraro <joepeck02@gmail.com>
-
- "Double-click to add" new style button does not always show up [quick fix]
- https://bugs.webkit.org/show_bug.cgi?id=28187
-
- * inspector/front-end/StylesSidebarPane.js:
- (WebInspector.StylePropertyTreeElement.prototype.updateTitle):
-
-2009-08-12 Crystal Zhang <crystal.zhang@torchmobile.com>
-
- Reviewed by George Staikos.
-
- WINCE PORT: MediaPlayerProxy and MediaPlayerPrivate
- https://bugs.webkit.org/show_bug.cgi?id=28178
-
- * platform/graphics/wince/MediaPlayerPrivateWince.h: Added.
- * platform/graphics/wince/MediaPlayerProxy.cpp: Added.
- * platform/graphics/wince/MediaPlayerProxy.h: Added.
-
-2009-08-12 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Reviewed by Eric Seidel.
-
- HTML 5 database and LocalStorage is not persistent on the Symbian port of QtWebKit
- https://bugs.webkit.org/show_bug.cgi?id=28175
-
- Call QDir::toNativeSeparators() before the path is passed to the OS.
-
- Based on work by David Leong.
-
- * platform/qt/FileSystemQt.cpp:
- (WebCore::pathByAppendingComponent):
-
-2009-08-12 Dirk Schulze <krit@webkit.org>
-
- Reviewed by Ariya Hidayat.
-
- Minor build-fix for SVG Filter. Use getUnmultipliedImageData instead
- of getImageData. This changed since r47099.
-
- * platform/graphics/filters/FEColorMatrix.cpp:
- (WebCore::FEColorMatrix::apply):
-
-2009-08-12 Viet-Trung Luu <viettrungluu@gmail.com>
-
- Reviewed by Dimitri Glazkov.
-
- Explicitly set control tints for Chromium/Mac, since the controls'
- NSCell(s) lack an NSView and hence their tint isn't updated
- automatically when the application is activated/deactivated.
- https://bugs.webkit.org/show_bug.cgi?id=28108
- http://crbug.com/18199
-
- * rendering/RenderThemeChromiumMac.mm:
- (WebCore::updateNSCellControlTint):
- (WebCore::RenderThemeChromiumMac::paintCheckbox):
- (WebCore::RenderThemeChromiumMac::paintRadio):
- (WebCore::RenderThemeChromiumMac::paintButton):
- (WebCore::RenderThemeChromiumMac::paintMenuList):
- (WebCore::RenderThemeChromiumMac::paintSliderThumb):
- (WebCore::RenderThemeChromiumMac::paintSearchField):
- (WebCore::RenderThemeChromiumMac::paintSearchFieldCancelButton):
- (WebCore::RenderThemeChromiumMac::paintSearchFieldResultsDecoration):
- (WebCore::RenderThemeChromiumMac::paintSearchFieldResultsButton):
-
-2009-08-12 Christian Plesner Hansen <christian.plesner.hansen@gmail.com>
-
- Reviewed by Dimitri Glazkov.
-
- [V8] Fix atomic string externalization crash.
- Atomic string externalization assumes that all non-empty strings
- can be externalized which is untrue on 64-bit. This change fixed
- that.
-
- https://bugs.webkit.org/show_bug.cgi?id=28215
-
- This bug causes loads of test crashes, no need to add new tests
- specifically for this.
-
- * bindings/v8/V8Binding.cpp:
- (WebCore::v8StringToAtomicWebCoreString):
-
-2009-08-12 Ariya Hidayat <ariya.hidayat@nokia.com>
-
- Reviewed by Holger Freyther.
-
- [Qt] Fix box-shadow painting in r47103. The edge should not be blurry.
- Also optimize by not having to save and restore painter state.
-
- * platform/graphics/qt/GraphicsContextQt.cpp:
- (WebCore::GraphicsContext::drawRect):
- (WebCore::GraphicsContext::fillRect):
-
-2009-08-12 Ariya Hidayat <ariya.hidayat@nokia.com>
-
- Reviewed by Adam Treat.
-
- [Qt] Fix coding style in GraphicsContextQt.cpp
-
- * platform/graphics/qt/GraphicsContextQt.cpp:
- (WebCore::toQtCompositionMode):
- (WebCore::toQtLineCap):
- (WebCore::toQtLineJoin):
- (WebCore::GraphicsContextPlatformPrivate::p):
- (WebCore::GraphicsContext::drawLine):
- (WebCore::GraphicsContext::strokeArc):
- (WebCore::GraphicsContext::drawConvexPolygon):
- (WebCore::GraphicsContext::pen):
- (WebCore::GraphicsContext::fillPath):
- (WebCore::GraphicsContext::strokePath):
- (WebCore::GraphicsContext::fillRect):
- (WebCore::GraphicsContext::clipPath):
- (WebCore::GraphicsContext::drawFocusRing):
- (WebCore::GraphicsContext::beginTransparencyLayer):
- (WebCore::GraphicsContext::endTransparencyLayer):
- (WebCore::GraphicsContext::clearRect):
- (WebCore::GraphicsContext::setLineCap):
- (WebCore::GraphicsContext::setLineJoin):
- (WebCore::GraphicsContext::setMiterLimit):
- (WebCore::GraphicsContext::setAlpha):
- (WebCore::GraphicsContext::clipOut):
- (WebCore::GraphicsContext::clipOutEllipseInRect):
- (WebCore::GraphicsContext::addInnerRoundedRectClip):
- (WebCore::GraphicsContext::setPlatformStrokeColor):
- (WebCore::GraphicsContext::setPlatformStrokeStyle):
- (WebCore::GraphicsContext::setPlatformStrokeThickness):
-
-2009-08-12 Szabo Carol <carol.szabo@nokia.com>
-
- Reviewed by Simon Hausmann and Ariya Hidayat.
-
- https://bugs.webkit.org/show_bug.cgi?id=23291
-
- [Qt] Partial support for -webkit-box-shadow. Blur is not support and
- the shadow still does not go well with border radius.
-
- * platform/graphics/qt/GraphicsContextQt.cpp:
- (WebCore::GraphicsContext::drawRect):
- (WebCore::GraphicsContext::fillRect):
-
-2009-08-12 Xan Lopez <xlopez@igalia.com>
-
- Reviewed by Jan Alonzo.
-
- Use AM_V_GEN in a few more places, for less noisy builds.
-
- * GNUmakefile.am:
-
-2009-08-12 Dirk Schulze <krit@webkit.org>
-
- Reviewed by Oliver Hunt.
-
- SVG Filter premultiplied color support for getImageDate/putImageData
- [https://bugs.webkit.org/show_bug.cgi?id=27933]
-
- Some SVG Filters need premultiplied ImageData for the calculation. Therefore getImageData
- and putImageData of ImageBuffer need support for premultiplied colors.
-
- * html/CanvasRenderingContext2D.cpp:
- (WebCore::CanvasRenderingContext2D::getImageData):
- (WebCore::CanvasRenderingContext2D::putImageData):
- * platform/graphics/ImageBuffer.h:
- (WebCore::):
- * platform/graphics/cairo/ImageBufferCairo.cpp:
- (WebCore::getImageData):
- (WebCore::ImageBuffer::getUnmultipliedImageData):
- (WebCore::ImageBuffer::getPremultipliedImageData):
- (WebCore::putImageData):
- (WebCore::ImageBuffer::putUnmultipliedImageData):
- (WebCore::ImageBuffer::putPremultipliedImageData):
- * platform/graphics/cg/ImageBufferCG.cpp:
- (WebCore::getImageData):
- (WebCore::ImageBuffer::getUnmultipliedImageData):
- (WebCore::ImageBuffer::getPremultipliedImageData):
- (WebCore::putImageData):
- (WebCore::ImageBuffer::putUnmultipliedImageData):
- (WebCore::ImageBuffer::putPremultipliedImageData):
- * platform/graphics/qt/ImageBufferQt.cpp:
- (WebCore::getImageData):
- (WebCore::ImageBuffer::getUnmultipliedImageData):
- (WebCore::ImageBuffer::getPremultipliedImageData):
- (WebCore::putImageData):
- (WebCore::ImageBuffer::putUnmultipliedImageData):
- (WebCore::ImageBuffer::putPremultipliedImageData):
- * platform/graphics/skia/ImageBufferSkia.cpp:
- (WebCore::getImageData):
- (WebCore::ImageBuffer::getUnmultipliedImageData):
- (WebCore::ImageBuffer::getPremultipliedImageData):
- (WebCore::putImageData):
- (WebCore::ImageBuffer::putUnmultipliedImageData):
- (WebCore::ImageBuffer::putPremultipliedImageData):
- * platform/graphics/wx/ImageBufferWx.cpp:
- (WebCore::ImageBuffer::getUnmultipliedImageData):
- (WebCore::ImageBuffer::getPremultipliedImageData):
- (WebCore::ImageBuffer::putUnmultipliedImageData):
- (WebCore::ImageBuffer::putPremultipliedImageData):
- * svg/graphics/SVGResourceMasker.cpp:
- (WebCore::SVGResourceMasker::applyMask):
-
-2009-08-12 Mikhail Naganov <mnaganov@chromium.org>
-
- Reviewed by Timothy Hatcher.
-
- Changed Number.bytesToString to support low-resolution output.
-
- https://bugs.webkit.org/show_bug.cgi?id=28146
-
- * inspector/front-end/utilities.js:
- (Number.bytesToString):
-
-2009-08-12 Prasanth Ullattil <prasanth.ullattil@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- Add support for hooking BeginPaint/EndPaint on 64Bit Windows
-
- Webkit uses the runtime patching trick explained by "Feng Yuan" for
- hooking these paint functions. It currently supports only 32bit assembly
- code. This patch adds support for 64Bit version. Since inline-assemblies
- are not supported for 64Bit, we have use a seperate .asm file.
-
- * WebCore.pro:
- * plugins/win/PaintHooks.asm: Added.
- * plugins/win/PluginViewWin.cpp:
- (WebCore::PluginView::hookedBeginPaint):
- (WebCore::PluginView::hookedEndPaint):
- (WebCore::hook):
-
-2009-08-11 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Gavin Barraclough.
-
- Make it harder to misuse try* allocation routines
- https://bugs.webkit.org/show_bug.cgi?id=27469
-
- Add forwarding header for PossiblyNull type, and add missing null check
- to ImageBuffer creation.
-
- * ForwardingHeaders/wtf/PossiblyNull.h: Added.
- * platform/graphics/cg/ImageBufferCG.cpp:
- (WebCore::ImageBuffer::ImageBuffer):
-
-2009-08-11 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Restrict use of FuncDeclNode & FuncExprNode to the parser.
- https://bugs.webkit.org/show_bug.cgi?id=28209
-
- * inspector/JavaScriptDebugServer.cpp:
- (WebCore::JavaScriptDebugServer::recompileAllJSFunctions):
- Function signature change.
-
-2009-08-11 Peter Kasting <pkasting@google.com>
-
- Reviewed by Adam Treat.
-
- https://bugs.webkit.org/show_bug.cgi?id=27965
- Merge skia/ImageSourceSkia.cpp into ImageSource.cpp.
-
- * WebCore.gypi: Remove deleted file, plus a file that was deleted a while back.
- * platform/graphics/ImageSource.cpp:
- (WebCore::ImageSource::setData): Use slightly shorter syntax.
- (WebCore::ImageSource::filenameExtension): Use shorter syntax.
- (WebCore::ImageSource::createFrameAtIndex): Remove redundant call, clarify comments, reject all empty images.
- (WebCore::ImageSource::frameHasAlphaAtIndex): Clarify comments, use shorter syntax.
- * platform/graphics/skia/ImageSourceSkia.cpp: Removed.
-
-2009-08-11 Drew Wilson <atwilson@google.com>
-
- Reviewed by David Levin.
-
- SharedWorkers do not exit when the last parent document exits
- https://bugs.webkit.org/show_bug.cgi?id=28170
-
- Prevents Documents from being suspended/placed in the page cache if they are associated with shared workers.
-
- Added vector cache instead of nested hash tables for SharedWorker repository.
-
- Added SharedWorkerRepository::documentDetached API.
-
- * dom/Document.cpp:
- (WebCore::Document::detach):
- Notifies SharedWorkerRepository when the document is closing.
- * loader/FrameLoader.cpp:
- Updated FrameLoader to not cache the Document if it is associated with a SharedWorker (since we can't suspend workers yet, we need to shut them down).
- (WebCore::FrameLoader::canCachePageContainingThisFrame):
- (WebCore::FrameLoader::logCanCacheFrameDecision):
- * workers/DefaultSharedWorkerRepository.cpp:
- (WebCore::SharedWorkerProxy::create):
- (WebCore::SharedWorkerProxy::isClosing):
- Renamed from closing().
- (WebCore::SharedWorkerProxy::matches):
- Added manual equality function to replace old hash lookup.
- (WebCore::SharedWorkerProxy::isDocumentInWorkerDocuments):
- Checks to see if a document is in the worker's list of documents. Used to determine if page is suspendable.
- (WebCore::SharedWorkerProxy::SharedWorkerProxy):
- (WebCore::SharedWorkerProxy::addToWorkerDocuments):
- Added tracking of the worker's list of documents for lifecycle purposes.
- (WebCore::SharedWorkerProxy::documentDetached):
- Shuts down the proxy when the last associated document is detached.
- (WebCore::SharedWorkerProxy::close):
- Marks the proxy as closed so it is no longer shared with new instances.
- (WebCore::SharedWorkerProxy::workerContextDestroyed):
- Removes the proxy from the repository/frees the proxy when the associated SharedWorkerContext is destroyed.
- (WebCore::DefaultSharedWorkerRepository::workerScriptLoaded):
- closing()->isClosing()
- (WebCore::SharedWorkerRepository::documentDetached):
- (WebCore::SharedWorkerRepository::hasSharedWorkers):
- Used by FrameLoader to determine if a page has shared workers and so cannot be suspended/cached.
- (WebCore::DefaultSharedWorkerRepository::hasSharedWorkers):
- (WebCore::DefaultSharedWorkerRepository::removeProxy):
- Invoked by workerContextDestroyed() to remove a SharedWorkerProxy from the repository.
- (WebCore::DefaultSharedWorkerRepository::documentDetached):
- (WebCore::DefaultSharedWorkerRepository::connectToWorker):
- (WebCore::DefaultSharedWorkerRepository::getProxy):
- * workers/DefaultSharedWorkerRepository.h:
- * workers/SharedWorkerRepository.h:
-
-2009-08-11 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Darin Adler.
-
- Bug 28200 - ListMarker should be included as part of the text value to parse
- https://bugs.webkit.org/show_bug.cgi?id=28200
-
- When returning text through the marker range attributes, the list marker text should
- also be included. It isn't included by default because a TextIterator is used which
- only looks at Nodes for text. A list marker does not have a corresponding node,
- so its text is not returned through accessibility. That is, until now.
-
- Test: platform/mac/accessibility/string-range-contains-listmarker.html
-
- * accessibility/AccessibilityObject.cpp:
- (WebCore::AccessibilityObject::listMarkerTextForRange):
- (WebCore::AccessibilityObject::stringForVisiblePositionRange):
- * accessibility/AccessibilityObject.h:
- * accessibility/mac/AccessibilityObjectWrapper.mm:
- (-[AccessibilityObjectWrapper doAXAttributedStringForTextMarkerRange:]):
- (-[AccessibilityObjectWrapper accessibilityParameterizedAttributeNames]):
- (-[AccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]):
- * rendering/RenderListItem.h:
-
- Make markerText() public so that accessibility code can access it.
-
-2009-08-11 Peter Kasting <pkasting@google.com>
-
- Reviewed by Adam Treat.
-
- https://bugs.webkit.org/show_bug.cgi?id=27965
- Move cairo/ImageSourceCairo.cpp to ImageSource.cpp in preparation for
- merging most of the other ImageSource*.cpp files with it.
-
- * GNUmakefile.am:
- * WebCore.gypi:
- * WebCore.vcproj/WebCore.vcproj:
- * platform/graphics/ImageSource.cpp: Copied from WebCore/platform/graphics/cairo/ImageSourceCairo.cpp.
- * platform/graphics/cairo/ImageSourceCairo.cpp: Removed.
-
-2009-08-10 Brent Fulgham <bfulgham@webkit.org>
-
- Reviewed by Adam Roben.
-
- Cairo-based Windows port does not handle the https protocol.
- https://bugs.webkit.org/show_bug.cgi?id=28171.
-
- No new tests needed. Existing https tests show this failure
- for WinCairo builds.
-
- * WebCore.vcproj/WebCoreCURL.vsprops: Add a few preprocessor
- definitions for SSL support in cURL.
- * platform/network/curl/ResourceHandleManager.h: Add new
- certificate path member variable.
- * platform/network/curl/ResourceHandleManager.cpp:
- (WebCore::certificateBundlePath): New method to retrieve the
- proper certificate resource bundle path.
- (WebCore::ResourceHandleManager::initializeHandle): Check for
- the resource bundle and use if available to activate SSL
- support.
-
-2009-08-11 Maxime Simon <simon.maxime@gmail.com>
-
- Reviewed by Eric Seidel.
-
- [Haiku] Use Clipboard::create() instead of the constructor of Clipboard.
- https://bugs.webkit.org/show_bug.cgi?id=28127
-
- * editing/haiku/EditorHaiku.cpp:
- (WebCore::Editor::newGeneralClipboard):
- * page/haiku/EventHandlerHaiku.cpp:
- (WebCore::EventHandler::passWheelEventToWidget):
- (WebCore::EventHandler::createDraggingClipboard):
- * platform/haiku/ClipboardHaiku.cpp: Style cleanup. There were many whitespace end of lines.
- (WebCore::ClipboardHaiku::ClipboardHaiku):
- (WebCore::ClipboardHaiku::clearAllData):
- (WebCore::ClipboardHaiku::getData):
- (WebCore::ClipboardHaiku::setData):
- (WebCore::ClipboardHaiku::types):
- (WebCore::ClipboardHaiku::dragLocation):
- (WebCore::ClipboardHaiku::dragImage):
- (WebCore::ClipboardHaiku::setDragImage):
- (WebCore::ClipboardHaiku::dragImageElement):
- (WebCore::ClipboardHaiku::createDragImage):
- (WebCore::ClipboardHaiku::declareAndWriteDragImage):
- (WebCore::ClipboardHaiku::writeURL):
- (WebCore::ClipboardHaiku::writeRange):
- (WebCore::ClipboardHaiku::hasData):
- * platform/haiku/DragDataHaiku.cpp:
- (WebCore::DragData::createClipboard):
-
-2009-08-11 Drew Wilson <atwilson@google.com>
-
- Reviewed by NOBODY (build break).
-
- Speculative GTK build fix
-
- * GNUmakefile.am:
- Added missing .idl file, and added notifications directory to IDL_PATH.
-
-2009-08-11 Drew Wilson <atwilson@google.com>
-
- Reviewed by NOBODY (build break).
-
- Speculative Windows build fix
-
- * WebCore.vcproj/WebCore.vcproj:
- Added missing build steps for non-debug targets.
-
-2009-08-11 Drew Wilson <atwilson@google.com>
-
- Reviewed by NOBODY (build break)
-
- Speculative build fix for Qt build.
-
- * WebCore.pro: Added /notifications to include path
-
-2009-08-11 John Gregg <johnnyg@google.com>
-
- Reviewed by Maciej Stachowiak.
-
- Desktop Notifications API
- https://bugs.webkit.org/show_bug.cgi?id=25463
-
- Adds an implementation of desktop notifications, behind the compile-time
- flag ENABLE(NOTIFICATIONS). This code simply relays calls on the JavaScript
- API through a NotificationProvider interface, which must provide the services
- to actually notify the user and manage the desktop. This provider is injected
- into WebKit through the ChromeClient for normal page contexts and through the
- WorkerThread for worker contexts.
-
- A permissions API is defined on a per-origin basis, which allows a web page
- to check if its origin is allowed to show desktop notifications, and to request
- permission for its origin.
-
- * Configurations/FeatureDefines.xcconfig:
- * DerivedSources.cpp:
- * DerivedSources.make:
- * GNUmakefile.am:
- * WebCore.vcproj/WebCore.vcproj:
- * WebCore.vcproj/WebCoreCommon.vsprops:
- * WebCore.xcodeproj/project.pbxproj:
- * bindings/js/JSDOMWindowCustom.cpp:
- * bindings/js/JSDesktopNotificationsCustom.cpp: Added.
- (WebCore::JSNotificationCenter::requestPermission):
- (WebCore::JSNotification::addEventListener):
- (WebCore::JSNotification::removeEventListener):
- * bindings/js/JSEventTarget.cpp:
- (WebCore::toJS):
- (WebCore::toEventTarget):
- * dom/EventTarget.cpp:
- (WebCore::EventTarget::toNotification):
- * dom/EventTarget.h:
- * loader/EmptyClients.h:
- (WebCore::EmptyChromeClient::notificationPresenter):
- * notifications: Added.
- * notifications/Notification.cpp: Added.
- (WebCore::Notification::Notification):
- (WebCore::Notification::~Notification):
- (WebCore::Notification::show):
- (WebCore::Notification::cancel):
- (WebCore::Notification::ondisplay):
- (WebCore::Notification::setOndisplay):
- (WebCore::Notification::onerror):
- (WebCore::Notification::setOnerror):
- (WebCore::Notification::onclose):
- (WebCore::Notification::setOnclose):
- (WebCore::Notification::getAttributeEventListener):
- (WebCore::Notification::setAttributeEventListener):
- (WebCore::Notification::clearAttributeEventListener):
- (WebCore::Notification::dispatchDisplayEvent):
- (WebCore::Notification::dispatchErrorEvent):
- (WebCore::Notification::dispatchCloseEvent):
- (WebCore::Notification::addEventListener):
- (WebCore::Notification::removeEventListener):
- (WebCore::Notification::handleEvent):
- (WebCore::Notification::dispatchEvent):
- * notifications/Notification.h: Added.
- (WebCore::Notification::create):
- (WebCore::Notification::isHTML):
- (WebCore::Notification::url):
- (WebCore::Notification::contents):
- (WebCore::Notification::scriptExecutionContext):
- (WebCore::Notification::toNotification):
- (WebCore::Notification::refEventTarget):
- (WebCore::Notification::derefEventTarget):
- * notifications/Notification.idl: Added.
- * notifications/NotificationCenter.cpp: Added.
- (WebCore::NotificationCenter::NotificationCenter):
- (WebCore::NotificationCenter::checkPermission):
- (WebCore::NotificationCenter::requestPermission):
- * notifications/NotificationCenter.h: Added.
- (WebCore::NotificationCenter::create):
- (WebCore::NotificationCenter::createHTMLNotification):
- (WebCore::NotificationCenter::createNotification):
- (WebCore::NotificationCenter::context):
- (WebCore::NotificationCenter::presenter):
- * notifications/NotificationCenter.idl: Added.
- * notifications/NotificationContents.h: Added.
- (WebCore::NotificationContents::NotificationContents):
- (WebCore::NotificationContents::icon):
- (WebCore::NotificationContents::title):
- (WebCore::NotificationContents::body):
- * notifications/NotificationPresenter.h: Added.
- (WebCore::NotificationPresenter::):
- (WebCore::NotificationPresenter::~NotificationPresenter):
- * page/Chrome.cpp:
- (WebCore::Chrome::notificationPresenter):
- * page/Chrome.h:
- * page/ChromeClient.h:
- * page/DOMWindow.cpp:
- (WebCore::DOMWindow::clear):
- (WebCore::DOMWindow::webkitNotifications):
- * page/DOMWindow.h:
- * page/DOMWindow.idl:
- * page/Page.h:
- * workers/WorkerContext.cpp:
- (WebCore::WorkerContext::~WorkerContext):
- (WebCore::WorkerContext::webkitNotifications):
- * workers/WorkerContext.h:
- * workers/WorkerContext.idl:
- * workers/WorkerThread.h:
- (WebCore::WorkerThread::getNotificationPresenter):
- (WebCore::WorkerThread::setNotificationPresenter):
-
-2009-08-11 Joseph Pecoraro <joepeck02@gmail.com>
-
- Reviewed by Timothy Hatcher.
-
- Inspector: Console Drawer is Toggling instead of Staying Open
- https://bugs.webkit.org/show_bug.cgi?id=28115
-
- * inspector/front-end/Drawer.js:
- (WebInspector.Drawer.prototype.showView): ensures the drawer will be open and showing the provided view
- * inspector/front-end/inspector.js:
- (WebInspector.showConsole): usees the new showView to guarantee the Drawer will be open
- (WebInspector.showChanges): uses the new showView guarantee the Drawer will be open
-
-2009-08-11 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
-
- Reviewed by George Staikos.
-
- [WML] WMLPageState is not allowed to store the active card, it needs to be done per document
- https://bugs.webkit.org/show_bug.cgi?id=28180
-
- Don't store the active WMLCardElement in WMLPageState, but in WMLDocument.
- Otherwhise this may lead to crashes related to intrinsic event exeuction.
-
- Unfortunately select elements aren't testable by the layout tests, so adding
- a new manual test reproducing the crash.
-
- * manual-tests/wml/select-onpick-event-crash.wml: Added.
- * wml/WMLCardElement.cpp:
- (WebCore::WMLCardElement::determineActiveCard):
- * wml/WMLDoElement.cpp:
- (WebCore::WMLDoElement::defaultEventHandler):
- * wml/WMLDocument.cpp:
- (WebCore::WMLDocument::finishedParsing):
- * wml/WMLDocument.h:
- (WebCore::WMLDocument::activeCard):
- * wml/WMLGoElement.cpp:
- (WebCore::WMLGoElement::executeTask):
- * wml/WMLPageState.cpp:
- (WebCore::WMLPageState::WMLPageState):
- * wml/WMLPageState.h:
- * wml/WMLPrevElement.cpp:
- (WebCore::WMLPrevElement::executeTask):
- * wml/WMLRefreshElement.cpp:
- (WebCore::WMLRefreshElement::executeTask):
-
-2009-08-07 Peter Kasting <pkasting@google.com>
-
- Reviewed by Eric Seidel.
-
- https://bugs.webkit.org/show_bug.cgi?id=28073
- Treat icons with no bit count and no color count as 256-color for
- purposes of quality ranking. Also fix a couple cases of a style
- violation.
-
- Test: fast/images/icon-0colors.html
-
- * platform/image-decoders/ico/ICOImageDecoder.cpp:
- (WebCore::ICOImageDecoder::processDirectory):
- (WebCore::ICOImageDecoder::readDirectoryEntry):
-
-2009-08-11 Drew Wilson <atwilson@google.com>
-
- Reviewed by David Levin.
-
- Need to refactor WorkerObjectProxy.
- https://bugs.webkit.org/show_bug.cgi?id=28136
-
- Added WorkerReportingProxy for reporting worker state (exceptions, console messages, thread exited) to the parent.
-
- Existing tests are sufficient, as this is only a refactoring.
-
- * GNUmakefile.am:
- Added WorkerReportingProxy.h to build.
- * WebCore.gypi:
- Added WorkerReportingProxy.h to build.
- * WebCore.vcproj/WebCore.vcproj:
- Added WorkerReportingProxy.h to build.
- * WebCore.xcodeproj/project.pbxproj:
- Added WorkerReportingProxy.h to build.
- * workers/DedicatedWorkerContext.cpp:
- * workers/DedicatedWorkerContext.h:
- Removed addMessage/forwardException() APIs - now handled by WorkerReportingProxy.
- * workers/DedicatedWorkerThread.cpp:
- (WebCore::DedicatedWorkerThread::DedicatedWorkerThread):
- Changed constructor to pass WorkerReportingProxy to base class.
- * workers/DefaultSharedWorkerRepository.cpp:
- Updated SharedWorkerProxy to implement WorkerReportingProxy interface.
- (WebCore::SharedWorkerProxy::postExceptionToWorkerObject):
- (WebCore::SharedWorkerProxy::postConsoleMessageToWorkerObject):
- (WebCore::SharedWorkerProxy::workerContextClosed):
- (WebCore::SharedWorkerProxy::workerContextDestroyed):
- (WebCore::DefaultSharedWorkerRepository::workerScriptLoaded):
- Now passes in WorkerReportingProxy when creating SharedWorkerThread.
- * workers/SharedWorkerContext.cpp:
- * workers/SharedWorkerContext.h:
- Removed addMessage/forwardException() APIs - now handled by WorkerReportingProxy.
- * workers/SharedWorkerThread.cpp:
- (WebCore::SharedWorkerThread::create):
- (WebCore::SharedWorkerThread::SharedWorkerThread):
- Passes WorkerReportingProxy to base class constructor.
- * workers/SharedWorkerThread.h:
- Constructor now takes a WorkerReportingProxy.
- * workers/WorkerContext.cpp:
- (WebCore::WorkerContext::~WorkerContext):
- Moved code that calls workerContextDestroyed() into base class so shared workers share this functionality.
- (WebCore::WorkerContext::close):
- Now notifies WorkerReportingProxy when the thread is closing.
- (WebCore::WorkerContext::reportException):
- Reports exceptions via WorkerReportingProxy.
- (WebCore::WorkerContext::addMessage):
- Reports console messages via WorkerReportingProxy.
- * workers/WorkerContext.h:
- * workers/WorkerObjectProxy.h:
- (WebCore::WorkerObjectProxy::workerContextClosed):
- Default empty implementation for dedicated workers.
- * workers/WorkerReportingProxy.h: Added.
- Base interface that contains APIs moved from WorkerObjectProxy.
- (WebCore::WorkerReportingProxy::~WorkerReportingProxy):
- * workers/WorkerThread.cpp:
- (WebCore::WorkerThread::WorkerThread):
- Updated constructor to accept a WorkerReportingProxy.
- * workers/WorkerThread.h:
- (WebCore::WorkerThread::workerReportingProxy):
-
-2009-08-11 Simon Hausmann <simon.hausmann@nokia.com>
-
- Reviewed by NOBODY (build fix).
-
- Fix the Qt build after r47022.
-
- Use the new markChildren() pattern for marking aggregate/child objects.
-
- * bridge/qt/qt_instance.cpp:
- (JSC::Bindings::QtRuntimeObjectImp::markChildren):
- (JSC::Bindings::QtInstance::markAggregate):
- * bridge/qt/qt_instance.h:
- * bridge/qt/qt_runtime.cpp:
- (JSC::Bindings::QtRuntimeMetaMethod::markChildren):
- * bridge/qt/qt_runtime.h:
-
2009-08-11 Simon Hausmann <simon.hausmann@nokia.com>
Reviewed by Holger Freyther.
@@ -4435,7 +191,7 @@
* page/DOMWindow.cpp:
(WebCore::DOMWindow::applicationCache):
-2009-08-10 Crystal Zhang <crystal.zhang@torchmobile.com>
+2009-08-10 Crystal Zhang <crystal.zhang@staikos.net>
Reviewed by George Staikos.
diff --git a/WebCore/Configurations/FeatureDefines.xcconfig b/WebCore/Configurations/FeatureDefines.xcconfig
index 2369253..37d2df6 100644
--- a/WebCore/Configurations/FeatureDefines.xcconfig
+++ b/WebCore/Configurations/FeatureDefines.xcconfig
@@ -37,14 +37,11 @@ ENABLE_3D_RENDERING_1060 = ENABLE_3D_RENDERING;
ENABLE_CHANNEL_MESSAGING = ENABLE_CHANNEL_MESSAGING;
ENABLE_DATABASE = ENABLE_DATABASE;
ENABLE_DATAGRID = ENABLE_DATAGRID;
-ENABLE_DATALIST = ENABLE_DATALIST;
ENABLE_DOM_STORAGE = ENABLE_DOM_STORAGE;
-ENABLE_EVENTSOURCE = ENABLE_EVENTSOURCE;
ENABLE_FILTERS = ;
ENABLE_GEOLOCATION = ;
ENABLE_ICONDATABASE = ENABLE_ICONDATABASE;
ENABLE_JAVASCRIPT_DEBUGGER = ENABLE_JAVASCRIPT_DEBUGGER;
-ENABLE_NOTIFICATIONS = ;
ENABLE_OFFLINE_WEB_APPLICATIONS = ENABLE_OFFLINE_WEB_APPLICATIONS;
ENABLE_RUBY = ENABLE_RUBY;
ENABLE_SHARED_WORKERS = ;
@@ -62,4 +59,4 @@ ENABLE_WORKERS = ENABLE_WORKERS;
ENABLE_XPATH = ENABLE_XPATH;
ENABLE_XSLT = ENABLE_XSLT;
-FEATURE_DEFINES = $(ENABLE_3D_CANVAS) $(ENABLE_3D_RENDERING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_DATABASE) $(ENABLE_DATAGRID) $(ENABLE_DATALIST) $(ENABLE_DOM_STORAGE) $(ENABLE_EVENTSOURCE) $(ENABLE_FILTERS) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_JAVASCRIPT_DEBUGGER) $(ENABLE_NOTIFICATIONS) $(ENABLE_OFFLINE_WEB_APPLICATIONS) $(ENABLE_RUBY) $(ENABLE_SHARED_WORKERS) $(ENABLE_SVG) $(ENABLE_SVG_ANIMATION) $(ENABLE_SVG_AS_IMAGE) $(ENABLE_SVG_DOM_OBJC_BINDINGS) $(ENABLE_SVG_FONTS) $(ENABLE_SVG_FOREIGN_OBJECT) $(ENABLE_SVG_USE) $(ENABLE_VIDEO) $(ENABLE_WEB_SOCKETS) $(ENABLE_WML) $(ENABLE_WORKERS) $(ENABLE_XPATH) $(ENABLE_XSLT);
+FEATURE_DEFINES = $(ENABLE_3D_CANVAS) $(ENABLE_3D_RENDERING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_DATABASE) $(ENABLE_DATAGRID) $(ENABLE_DOM_STORAGE) $(ENABLE_FILTERS) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_JAVASCRIPT_DEBUGGER) $(ENABLE_OFFLINE_WEB_APPLICATIONS) $(ENABLE_RUBY) $(ENABLE_SHARED_WORKERS) $(ENABLE_SVG) $(ENABLE_SVG_ANIMATION) $(ENABLE_SVG_AS_IMAGE) $(ENABLE_SVG_DOM_OBJC_BINDINGS) $(ENABLE_SVG_FONTS) $(ENABLE_SVG_FOREIGN_OBJECT) $(ENABLE_SVG_USE) $(ENABLE_VIDEO) $(ENABLE_WEB_SOCKETS) $(ENABLE_WML) $(ENABLE_WORKERS) $(ENABLE_XPATH) $(ENABLE_XSLT);
diff --git a/WebCore/DerivedSources.cpp b/WebCore/DerivedSources.cpp
index d127c48..b0311e2 100644
--- a/WebCore/DerivedSources.cpp
+++ b/WebCore/DerivedSources.cpp
@@ -73,7 +73,6 @@
#include "JSErrorEvent.cpp"
#include "JSEvent.cpp"
#include "JSEventException.cpp"
-#include "JSEventSource.cpp"
#include "JSFile.cpp"
#include "JSFileList.cpp"
#include "JSHistory.cpp"
@@ -93,7 +92,6 @@
#include "JSHTMLDataGridCellElement.cpp"
#include "JSHTMLDataGridColElement.cpp"
#include "JSHTMLDataGridRowElement.cpp"
-#include "JSHTMLDataListElement.cpp"
#include "JSHTMLDirectoryElement.cpp"
#include "JSHTMLDivElement.cpp"
#include "JSHTMLDListElement.cpp"
@@ -168,8 +166,6 @@
#include "JSNodeIterator.cpp"
#include "JSNodeList.cpp"
#include "JSNotation.cpp"
-#include "JSNotificationCenter.cpp"
-#include "JSNotification.cpp"
#include "JSOverflowEvent.cpp"
#include "JSPlugin.cpp"
#include "JSPluginArray.cpp"
diff --git a/WebCore/DerivedSources.make b/WebCore/DerivedSources.make
index 4cdde30..788c5ee 100644
--- a/WebCore/DerivedSources.make
+++ b/WebCore/DerivedSources.make
@@ -35,7 +35,6 @@ VPATH = \
$(WebCore)/html/canvas \
$(WebCore)/inspector \
$(WebCore)/loader/appcache \
- $(WebCore)/notifications \
$(WebCore)/page \
$(WebCore)/plugins \
$(WebCore)/storage \
@@ -100,7 +99,6 @@ DOM_CLASSES = \
Event \
EventException \
EventListener \
- EventSource \
EventTarget \
File \
FileList \
@@ -122,7 +120,6 @@ DOM_CLASSES = \
HTMLDataGridCellElement \
HTMLDataGridColElement \
HTMLDataGridRowElement \
- HTMLDataListElement \
HTMLDListElement \
HTMLDirectoryElement \
HTMLDivElement \
@@ -197,8 +194,6 @@ DOM_CLASSES = \
NodeIterator \
NodeList \
Notation \
- Notification \
- NotificationCenter \
OverflowEvent \
Plugin \
PluginArray \
@@ -559,10 +554,6 @@ UserAgentStyleSheets.h : css/make-css-file-arrays.pl $(USER_AGENT_STYLE_SHEETS)
# HTML tag and attribute names
-ifeq ($(findstring ENABLE_DATALIST,$(FEATURE_DEFINES)), ENABLE_DATALIST)
- HTML_FLAGS := $(HTML_FLAGS) ENABLE_DATALIST=1
-endif
-
ifeq ($(findstring ENABLE_VIDEO,$(FEATURE_DEFINES)), ENABLE_VIDEO)
HTML_FLAGS := $(HTML_FLAGS) ENABLE_VIDEO=1
endif
@@ -692,7 +683,7 @@ endif
# JavaScript bindings
GENERATE_BINDINGS = perl -I $(WebCore)/bindings/scripts $(WebCore)/bindings/scripts/generate-bindings.pl \
- --include dom --include html --include css --include page --include notifications --include xml --include svg --outputDir .
+ --include dom --include html --include css --include page --include xml --include svg --outputDir .
GENERATE_BINDINGS_SCRIPTS = \
bindings/scripts/CodeGenerator.pm \
diff --git a/WebCore/ForwardingHeaders/parser/Parser.h b/WebCore/ForwardingHeaders/parser/Parser.h
new file mode 100644
index 0000000..863df59
--- /dev/null
+++ b/WebCore/ForwardingHeaders/parser/Parser.h
@@ -0,0 +1,4 @@
+#ifndef WebCore_FWD_Parser_h
+#define WebCore_FWD_Parser_h
+#include <JavaScriptCore/Parser.h>
+#endif
diff --git a/WebCore/ForwardingHeaders/runtime/CollectorHeapIterator.h b/WebCore/ForwardingHeaders/runtime/CollectorHeapIterator.h
new file mode 100644
index 0000000..fcfe26d
--- /dev/null
+++ b/WebCore/ForwardingHeaders/runtime/CollectorHeapIterator.h
@@ -0,0 +1,4 @@
+#ifndef WebCore_FWD_CollectorHeapIterator_h
+#define WebCore_FWD_CollectorHeapIterator_h
+#include <JavaScriptCore/CollectorHeapIterator.h>
+#endif
diff --git a/WebCore/ForwardingHeaders/wtf/PossiblyNull.h b/WebCore/ForwardingHeaders/wtf/PossiblyNull.h
deleted file mode 100644
index d52a4a0..0000000
--- a/WebCore/ForwardingHeaders/wtf/PossiblyNull.h
+++ /dev/null
@@ -1,4 +0,0 @@
-#ifndef WebCore_FWD_PossiblyNull_h
-#define WebCore_FWD_PossiblyNull_h
-#include <JavaScriptCore/PossiblyNull.h>
-#endif
diff --git a/WebCore/GNUmakefile.am b/WebCore/GNUmakefile.am
index e2240f7..5cc1fd6 100644
--- a/WebCore/GNUmakefile.am
+++ b/WebCore/GNUmakefile.am
@@ -26,7 +26,6 @@ webcore_cppflags += \
-I$(srcdir)/WebCore/loader/appcache \
-I$(srcdir)/WebCore/loader/archive \
-I$(srcdir)/WebCore/loader/icon \
- -I$(srcdir)/WebCore/notifications \
-I$(srcdir)/WebCore/page \
-I$(srcdir)/WebCore/page/animation \
-I$(srcdir)/WebCore/platform \
@@ -176,7 +175,6 @@ IDL_BINDINGS += \
WebCore/html/HTMLDataGridCellElement.idl \
WebCore/html/HTMLDataGridColElement.idl \
WebCore/html/HTMLDataGridRowElement.idl \
- WebCore/html/HTMLDataListElement.idl \
WebCore/html/HTMLDListElement.idl \
WebCore/html/HTMLDirectoryElement.idl \
WebCore/html/HTMLDivElement.idl \
@@ -236,14 +234,11 @@ IDL_BINDINGS += \
WebCore/html/VoidCallback.idl \
WebCore/inspector/JavaScriptCallFrame.idl \
WebCore/inspector/InspectorBackend.idl \
- WebCore/notifications/Notification.idl \
- WebCore/notifications/NotificationCenter.idl \
WebCore/page/BarInfo.idl \
WebCore/page/Console.idl \
WebCore/page/Coordinates.idl \
WebCore/page/DOMSelection.idl \
WebCore/page/DOMWindow.idl \
- WebCore/page/EventSource.idl \
WebCore/page/Geolocation.idl \
WebCore/page/Geoposition.idl \
WebCore/page/History.idl \
@@ -316,7 +311,6 @@ webcore_sources += \
WebCore/bindings/js/JSDataGridDataSource.cpp \
WebCore/bindings/js/JSDataGridDataSource.h \
WebCore/bindings/js/JSCSSRuleCustom.cpp \
- WebCore/bindings/js/JSCSSRuleListCustom.cpp \
WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp \
WebCore/bindings/js/JSCSSStyleDeclarationCustom.h \
WebCore/bindings/js/JSCSSValueCustom.cpp \
@@ -348,9 +342,6 @@ webcore_sources += \
WebCore/bindings/js/JSEventCustom.cpp \
WebCore/bindings/js/JSEventListener.cpp \
WebCore/bindings/js/JSEventListener.h \
- WebCore/bindings/js/JSEventSourceConstructor.cpp \
- WebCore/bindings/js/JSEventSourceConstructor.h \
- WebCore/bindings/js/JSEventSourceCustom.cpp \
WebCore/bindings/js/JSEventTarget.cpp \
WebCore/bindings/js/JSEventTarget.h \
WebCore/bindings/js/JSGeolocationCustom.cpp \
@@ -358,7 +349,6 @@ webcore_sources += \
WebCore/bindings/js/JSHTMLAllCollection.h \
WebCore/bindings/js/JSHTMLAppletElementCustom.cpp \
WebCore/bindings/js/JSHTMLAppletElementCustom.h \
- WebCore/bindings/js/JSHTMLCanvasElementCustom.cpp \
WebCore/bindings/js/JSHTMLCollectionCustom.cpp \
WebCore/bindings/js/JSHTMLDataGridElementCustom.cpp \
WebCore/bindings/js/JSHTMLDocumentCustom.cpp \
@@ -664,6 +654,7 @@ webcore_sources += \
WebCore/dom/DOMCoreException.h \
WebCore/dom/DOMImplementation.cpp \
WebCore/dom/DOMImplementation.h \
+ WebCore/dom/DocPtr.h \
WebCore/dom/Document.cpp \
WebCore/dom/Document.h \
WebCore/dom/DocumentFragment.cpp \
@@ -967,8 +958,6 @@ webcore_sources += \
WebCore/html/HTMLDataGridColElement.h \
WebCore/html/HTMLDataGridRowElement.cpp \
WebCore/html/HTMLDataGridRowElement.h \
- WebCore/html/HTMLDataListElement.cpp \
- WebCore/html/HTMLDataListElement.h \
WebCore/html/HTMLDListElement.cpp \
WebCore/html/HTMLDListElement.h \
WebCore/html/HTMLDirectoryElement.cpp \
@@ -1278,8 +1267,6 @@ webcore_sources += \
WebCore/page/EditorClient.h \
WebCore/page/EventHandler.cpp \
WebCore/page/EventHandler.h \
- WebCore/page/EventSource.cpp \
- WebCore/page/EventSource.h \
WebCore/page/FocusController.cpp \
WebCore/page/FocusController.h \
WebCore/page/FocusDirection.h \
@@ -1479,7 +1466,6 @@ webcore_sources += \
WebCore/platform/graphics/ImageBuffer.cpp \
WebCore/platform/graphics/ImageBuffer.h \
WebCore/platform/graphics/ImageObserver.h \
- WebCore/platform/graphics/ImageSource.cpp \
WebCore/platform/graphics/ImageSource.h \
WebCore/platform/graphics/IntPoint.h \
WebCore/platform/graphics/IntRect.cpp \
@@ -1871,6 +1857,7 @@ webcoregtk_sources += \
WebCore/platform/graphics/cairo/ImageBufferCairo.cpp \
WebCore/platform/graphics/cairo/ImageBufferData.h \
WebCore/platform/graphics/cairo/ImageCairo.cpp \
+ WebCore/platform/graphics/cairo/ImageSourceCairo.cpp \
WebCore/platform/graphics/cairo/PathCairo.cpp \
WebCore/platform/graphics/cairo/PatternCairo.cpp \
WebCore/platform/graphics/cairo/TransformationMatrixCairo.cpp \
@@ -2124,8 +2111,6 @@ webcore_sources += \
WebCore/storage/SQLTransaction.cpp \
WebCore/storage/SQLTransaction.h \
WebCore/storage/SQLTransactionCallback.h \
- WebCore/storage/SQLTransactionCoordinator.h \
- WebCore/storage/SQLTransactionCoordinator.cpp \
WebCore/storage/SQLTransactionErrorCallback.h
else
@@ -2134,30 +2119,6 @@ webcore_cppflags += -DENABLE_DATABASE=0
endif # END ENABLE_DATABASE
# ----
-# HTML5 datalist Support
-# ----
-if ENABLE_DATALIST
-
-HTML_FEATURES += ENABLE_DATALIST=1
-webcore_cppflags += -DENABLE_DATALIST=1
-
-endif # END ENABLE_DATALIST
-
-# ----
-# HTML5 server-sent events
-# ----
-if !ENABLE_EVENTSOURCE
-global_cppflags += -DENABLE_EVENTSOURCE=0
-endif
-
-if ENABLE_EVENTSOURCE
-FEATURE_DEFINES_JAVASCRIPT += ENABLE_EVENTSOURCE=1
-
-webcore_cppflags += \
- -DENABLE_EVENTSOURCE=1
-endif # ENABLE_EVENTSOURCE
-
-# ----
# HTML5 client-side session and persistent storage
# ----
if ENABLE_DOM_STORAGE
@@ -2409,7 +2370,6 @@ webcore_sources += \
WebCore/workers/WorkerMessagingProxy.cpp \
WebCore/workers/WorkerMessagingProxy.h \
WebCore/workers/WorkerObjectProxy.h \
- WebCore/workers/WorkerReportingProxy.h \
WebCore/workers/WorkerRunLoop.cpp \
WebCore/workers/WorkerRunLoop.h \
WebCore/workers/WorkerScriptLoader.cpp \
@@ -2501,7 +2461,7 @@ webcore_sources += \
DerivedSources/WMLNames.cpp: DerivedSources/WMLElementFactory.cpp;
DerivedSources/WMLElementFactory.cpp: $(WebCore)/dom/make_names.pl $(WebCore)/wml/WMLTagNames.in $(WebCore)/wml/WMLAttributeNames.in
- $(AM_V_GEN)$(PERL) -I$(WebCore)/bindings/scripts $< --tags $(WebCore)/wml/WMLTagNames.in --attrs $(WebCore)/wml/WMLAttributeNames.in --factory --wrapperFactory --outputDir "$(GENSOURCES)"
+ $(PERL) -I$(WebCore)/bindings/scripts $< --tags $(WebCore)/wml/WMLTagNames.in --attrs $(WebCore)/wml/WMLAttributeNames.in --factory --wrapperFactory --outputDir "$(GENSOURCES)"
endif # END ENABLE_WML
# ----
@@ -2549,24 +2509,6 @@ webcoregtk_sources += \
WebCore/platform/gtk/GeolocationServiceGtk.h
endif # END ENABLE_GEOLOCATION
-# ----
-# Notifications support
-# ----
-if ENABLE_NOTIFICATIONS
-FEATURE_DEFINES_JAVASCRIPT += ENABLE_NOTIFICATIONS=1
-
-webcore_cppflags += \
- -DENABLE_NOTIFICATIONS=1
-
-webcore_sources += \
- WebCore/notifications/Notification.cpp \
- WebCore/notifications/Notification.h \
- WebCore/notifications/NotificationCenter.cpp \
- WebCore/notifications/NotificationCenter.h \
- WebCore/notifications/NotificationPresenter.h \
- WebCore/notifications/NotificationContents.h
-
-endif # END ENABLE_NOTIFICATIONS
# ----
# SVG Support
@@ -3179,10 +3121,10 @@ DerivedSources/JSSVGElementWrapperFactory.cpp: DerivedSources/SVGElementFactory.
if SVG_FLAGS
DerivedSources/SVGElementFactory.cpp: $(WebCore)/dom/make_names.pl $(WebCore)/svg/svgtags.in $(WebCore)/svg/svgattrs.in
- $(AM_V_GEN)$(PERL) -I$(WebCore)/bindings/scripts $< --tags $(WebCore)/svg/svgtags.in --attrs $(WebCore)/svg/svgattrs.in --extraDefines "$(SVG_FEATURES)" --factory --wrapperFactory --outputDir "$(GENSOURCES)"
+ $(PERL) -I$(WebCore)/bindings/scripts $< --tags $(WebCore)/svg/svgtags.in --attrs $(WebCore)/svg/svgattrs.in --extraDefines "$(SVG_FEATURES)" --factory --wrapperFactory --outputDir "$(GENSOURCES)"
else
DerivedSources/SVGElementFactory.cpp: $(WebCore)/dom/make_names.pl $(WebCore)/svg/svgtags.in $(WebCore)/svg/svgattrs.in
- $(AM_V_GEN)$(PERL) -I$(WebCore)/bindings/scripts $< --tags $(WebCore)/svg/svgtags.in --attrs $(WebCore)/svg/svgattrs.in --factory --wrapperFactory --outputDir "$(GENSOURCES)"
+ $(PERL) -I$(WebCore)/bindings/scripts $< --tags $(WebCore)/svg/svgtags.in --attrs $(WebCore)/svg/svgattrs.in --factory --wrapperFactory --outputDir "$(GENSOURCES)"
endif # SVG_FLAGS
@@ -3191,7 +3133,7 @@ endif # SVG_FLAGS
DerivedSources/XLinkNames.h: DerivedSources/XLinkNames.cpp;
DerivedSources/XLinkNames.cpp : $(WebCore)/dom/make_names.pl $(WebCore)/svg/xlinkattrs.in
- $(AM_V_GEN)$(PERL) -I$(WebCore)/bindings/scripts $< --attrs $(WebCore)/svg/xlinkattrs.in --outputDir "$(GENSOURCES)"
+ $(PERL) -I$(WebCore)/bindings/scripts $< --attrs $(WebCore)/svg/xlinkattrs.in --outputDir "$(GENSOURCES)"
endif # END ENABLE_SVG
@@ -3235,20 +3177,20 @@ DerivedSources/CSSValueKeywords.h : $(WEBCORE_CSS_VALUE_KEYWORDS) $(WebCore)/css
# DOCTYPE strings
DerivedSources/DocTypeStrings.cpp : $(WebCore)/html/DocTypeStrings.gperf
- $(AM_V_GEN)$(GPERF) -CEot -L ANSI-C -k "*" -N findDoctypeEntry -F ,PubIDInfo::eAlmostStandards,PubIDInfo::eAlmostStandards $(WebCore)/html/DocTypeStrings.gperf > $@
+ $(GPERF) -CEot -L ANSI-C -k "*" -N findDoctypeEntry -F ,PubIDInfo::eAlmostStandards,PubIDInfo::eAlmostStandards $(WebCore)/html/DocTypeStrings.gperf > $@
# HTML entity names
DerivedSources/HTMLEntityNames.c : $(WebCore)/html/HTMLEntityNames.gperf
- $(AM_V_GEN)$(GPERF) -a -L ANSI-C -C -G -c -o -t -k '*' -N findEntity -D -s 2 \
+ $(GPERF) -a -L ANSI-C -C -G -c -o -t -k '*' -N findEntity -D -s 2 \
$(WebCore)/html/HTMLEntityNames.gperf > $@
# color names
DerivedSources/ColorData.c: $(WebCore)/platform/ColorData.gperf
- $(AM_V_GEN)$(GPERF) -CDEot -L ANSI-C -k '*' -N findColor -D -s 2 $< > $@
+ $(GPERF) -CDEot -L ANSI-C -k '*' -N findColor -D -s 2 $< > $@
# CSS tokenizer
DerivedSources/tokenizer.cpp : $(WebCore)/css/tokenizer.flex $(WebCore)/css/maketokenizer
- $(AM_V_GEN)$(FLEX) -t $< | $(PERL) $(WebCore)/css/maketokenizer > $@
+ $(FLEX) -t $< | $(PERL) $(WebCore)/css/maketokenizer > $@
# CSS grammar
@@ -3285,7 +3227,7 @@ SCRIPTS_BINDINGS = \
DerivedSources/UserAgentStyleSheetsData.cpp: DerivedSources/UserAgentStyleSheets.h;
DerivedSources/UserAgentStyleSheets.h: $(WebCore)/css/make-css-file-arrays.pl $(USER_AGENT_STYLE_SHEETS)
- $(AM_V_GEN)$(PERL) $< $@ DerivedSources/UserAgentStyleSheetsData.cpp $(USER_AGENT_STYLE_SHEETS)
+ $(PERL) $< $@ DerivedSources/UserAgentStyleSheetsData.cpp $(USER_AGENT_STYLE_SHEETS)
# HTML tag and attribute names
DerivedSources/HTMLElementFactory.cpp: DerivedSources/HTMLNames.cpp;
@@ -3296,16 +3238,16 @@ DerivedSources/JSHTMLElementWrapperFactory.h: DerivedSources/JSHTMLElementWrappe
if HTML_FLAGS
DerivedSources/HTMLNames.cpp: $(WebCore)/dom/make_names.pl $(WebCore)/html/HTMLTagNames.in $(WebCore)/html/HTMLAttributeNames.in
- $(AM_V_GEN)$(PERL) -I$(WebCore)/bindings/scripts $< --tags $(WebCore)/html/HTMLTagNames.in --attrs $(WebCore)/html/HTMLAttributeNames.in --extraDefines "$(HTML_FEATURES)" --factory --wrapperFactory --outputDir "$(GENSOURCES)"
+ $(PERL) -I$(WebCore)/bindings/scripts $< --tags $(WebCore)/html/HTMLTagNames.in --attrs $(WebCore)/html/HTMLAttributeNames.in --extraDefines "$(HTML_FEATURES)" --factory --wrapperFactory --outputDir "$(GENSOURCES)"
else
DerivedSources/HTMLNames.cpp: $(WebCore)/dom/make_names.pl $(WebCore)/html/HTMLTagNames.in $(WebCore)/html/HTMLAttributeNames.in
- $(AM_V_GEN)$(PERL) -I$(WebCore)/bindings/scripts $< --tags $(WebCore)/html/HTMLTagNames.in --attrs $(WebCore)/html/HTMLAttributeNames.in --factory --wrapperFactory --outputDir "$(GENSOURCES)"
+ $(PERL) -I$(WebCore)/bindings/scripts $< --tags $(WebCore)/html/HTMLTagNames.in --attrs $(WebCore)/html/HTMLAttributeNames.in --factory --wrapperFactory --outputDir "$(GENSOURCES)"
endif # HTML_FLAGS
DerivedSources/XMLNames.h: DerivedSources/XMLNames.cpp;
DerivedSources/XMLNames.cpp: $(WebCore)/dom/make_names.pl $(WebCore)/xml/xmlattrs.in
- $(AM_V_GEN)$(PERL) -I$(WebCore)/bindings/scripts $< --attrs $(WebCore)/xml/xmlattrs.in --outputDir "$(GENSOURCES)"
+ $(PERL) -I$(WebCore)/bindings/scripts $< --attrs $(WebCore)/xml/xmlattrs.in --outputDir "$(GENSOURCES)"
IDL_PATH := \
$(WebCore)/bindings/js \
@@ -3315,7 +3257,6 @@ IDL_PATH := \
$(WebCore)/html/canvas \
$(WebCore)/inspector \
$(WebCore)/loader/appcache \
- $(WebCore)/notifications \
$(WebCore)/page \
$(WebCore)/storage \
$(WebCore)/svg \
@@ -3330,7 +3271,7 @@ DerivedSources/JS%.h: DerivedSources/JS%.cpp;
.SECONDARY:
DerivedSources/JS%.cpp: %.idl $(SCRIPTS_BINDINGS) $(WebCore)/bindings/scripts/CodeGeneratorJS.pm
- $(AM_V_GEN)$(PERL) -I$(WebCore)/bindings/scripts $(WebCore)/bindings/scripts/generate-bindings.pl $(IDL_PATH:%=--include "%") --outputDir "$(GENSOURCES)" --defines "$(FEATURE_DEFINES_JAVASCRIPT)" --generator JS $<
+ $(PERL) -I$(WebCore)/bindings/scripts $(WebCore)/bindings/scripts/generate-bindings.pl $(IDL_PATH:%=--include "%") --outputDir "$(GENSOURCES)" --defines "$(FEATURE_DEFINES_JAVASCRIPT)" --generator JS $<
IDL_BINDINGS_JS_PURE := \
WebCore/svg/ElementTimeControl.idl \
@@ -3440,3 +3381,4 @@ dist_webresources_DATA = \
CLEANFILES += \
libWebCoreJS.la
+
diff --git a/WebCore/WebCore.gypi b/WebCore/WebCore.gypi
index 1d7fa6c..8738e15 100644
--- a/WebCore/WebCore.gypi
+++ b/WebCore/WebCore.gypi
@@ -100,7 +100,6 @@
'html/HTMLDataGridColElement.idl',
'html/HTMLDataGridElement.idl',
'html/HTMLDataGridRowElement.idl',
- 'html/HTMLDataListElement.idl',
'html/HTMLDirectoryElement.idl',
'html/HTMLDivElement.idl',
'html/HTMLDocument.idl',
@@ -415,7 +414,6 @@
'bindings/js/JSConsoleCustom.cpp',
'bindings/js/JSCoordinatesCustom.cpp',
'bindings/js/JSCSSRuleCustom.cpp',
- 'bindings/js/JSCSSRuleListCustom.cpp',
'bindings/js/JSCSSStyleDeclarationCustom.cpp',
'bindings/js/JSCSSStyleDeclarationCustom.h',
'bindings/js/JSCSSValueCustom.cpp',
@@ -466,7 +464,6 @@
'bindings/js/JSHTMLAllCollection.h',
'bindings/js/JSHTMLAppletElementCustom.cpp',
'bindings/js/JSHTMLAppletElementCustom.h',
- 'bindings/js/JSHTMLCanvasElementCustom.cpp',
'bindings/js/JSHTMLCollectionCustom.cpp',
'bindings/js/JSHTMLDataGridElementCustom.cpp',
'bindings/js/JSHTMLDocumentCustom.cpp',
@@ -950,6 +947,7 @@
'dom/DOMCoreException.h',
'dom/DOMImplementation.cpp',
'dom/DOMImplementation.h',
+ 'dom/DocPtr.h',
'dom/Document.cpp',
'dom/Document.h',
'dom/DocumentFragment.cpp',
@@ -1265,8 +1263,6 @@
'html/HTMLDataGridElement.h',
'html/HTMLDataGridRowElement.cpp',
'html/HTMLDataGridRowElement.h',
- 'html/HTMLDataListElement.cpp',
- 'html/HTMLDataListElement.h',
'html/HTMLDirectoryElement.cpp',
'html/HTMLDirectoryElement.h',
'html/HTMLDivElement.cpp',
@@ -1752,6 +1748,7 @@
'platform/graphics/cairo/ImageBufferCairo.cpp',
'platform/graphics/cairo/ImageBufferData.h',
'platform/graphics/cairo/ImageCairo.cpp',
+ 'platform/graphics/cairo/ImageSourceCairo.cpp',
'platform/graphics/cairo/PathCairo.cpp',
'platform/graphics/cairo/PatternCairo.cpp',
'platform/graphics/cairo/TransformationMatrixCairo.cpp',
@@ -1915,6 +1912,8 @@
'platform/graphics/skia/GraphicsContextSkia.cpp',
'platform/graphics/skia/ImageBufferSkia.cpp',
'platform/graphics/skia/ImageSkia.cpp',
+ 'platform/graphics/skia/ImageSourceSkia.cpp',
+ 'platform/graphics/skia/ImageSourceSkia.h',
'platform/graphics/skia/IntPointSkia.cpp',
'platform/graphics/skia/IntRectSkia.cpp',
'platform/graphics/skia/NativeImageSkia.cpp',
@@ -1997,6 +1996,7 @@
'platform/graphics/wx/GraphicsContextWx.cpp',
'platform/graphics/wx/ImageBufferData.h',
'platform/graphics/wx/ImageBufferWx.cpp',
+ 'platform/graphics/wx/ImageSourceWx.cpp',
'platform/graphics/wx/ImageWx.cpp',
'platform/graphics/wx/IntPointWx.cpp',
'platform/graphics/wx/IntRectWx.cpp',
@@ -2060,7 +2060,6 @@
'platform/graphics/ImageBuffer.h',
'platform/graphics/ImageObserver.h',
'platform/graphics/ImageSource.h',
- 'platform/graphics/ImageSource.cpp',
'platform/graphics/IntPoint.h',
'platform/graphics/IntRect.cpp',
'platform/graphics/IntRect.h',
@@ -2542,7 +2541,6 @@
'platform/ContextMenu.cpp',
'platform/ContextMenu.h',
'platform/ContextMenuItem.h',
- 'platform/Cookie.h',
'platform/CookieJar.h',
'platform/CrossThreadCopier.h',
'platform/CrossThreadCopier.cpp',
@@ -2965,8 +2963,6 @@
'storage/SQLTransaction.cpp',
'storage/SQLTransaction.h',
'storage/SQLTransactionCallback.h',
- 'storage/SQLTransactionCoordinator.h',
- 'storage/SQLTransactionCoordinator.cpp',
'storage/SQLTransactionErrorCallback.h',
'storage/Storage.cpp',
'storage/Storage.h',
@@ -3357,7 +3353,6 @@
'workers/WorkerMessagingProxy.cpp',
'workers/WorkerMessagingProxy.h',
'workers/WorkerObjectProxy.h',
- 'workers/WorkerReportingProxy.h',
'workers/WorkerRunLoop.cpp',
'workers/WorkerRunLoop.h',
'workers/WorkerScriptLoader.cpp',
@@ -3430,7 +3425,6 @@
'inspector/front-end/ChangesView.js',
'inspector/front-end/Color.js',
'inspector/front-end/ConsoleView.js',
- 'inspector/front-end/CookieItemsView.js',
'inspector/front-end/Database.js',
'inspector/front-end/DatabaseQueryView.js',
'inspector/front-end/DatabasesPanel.js',
@@ -3472,7 +3466,6 @@
'inspector/front-end/SidebarTreeElement.js',
'inspector/front-end/SourceFrame.js',
'inspector/front-end/SourceView.js',
- 'inspector/front-end/StatusBarButton.js',
'inspector/front-end/StylesSidebarPane.js',
'inspector/front-end/TextPrompt.js',
'inspector/front-end/TopDownProfileDataGridTree.js',
@@ -3488,7 +3481,6 @@
'inspector/front-end/Images/clearConsoleButtonGlyph.png',
'inspector/front-end/Images/closeButtons.png',
'inspector/front-end/Images/consoleButtonGlyph.png',
- 'inspector/front-end/Images/cookie.png',
'inspector/front-end/Images/database.png',
'inspector/front-end/Images/databasesIcon.png',
'inspector/front-end/Images/databaseTable.png',
diff --git a/WebCore/WebCore.order b/WebCore/WebCore.order
index c9441c6..31b178c 100644
--- a/WebCore/WebCore.order
+++ b/WebCore/WebCore.order
@@ -2290,6 +2290,7 @@ __ZN3JSC8Bindings10RootObject9gcProtectEPNS_8JSObjectE
__ZNK3WTF9HashTableIPN3JSC8JSObjectESt4pairIS3_jENS_18PairFirstExtractorIS5_EENS_7PtrHashIS3_EENS_14PairHashTraitsINS_10HashTra
__ZN3WTF7HashMapIPN3JSC8JSObjectEjNS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS6_IjEEE3addERKS3_RKj
__ZN3WTF9HashTableIPN3JSC8JSObjectESt4pairIS3_jENS_18PairFirstExtractorIS5_EENS_7PtrHashIS3_EENS_14PairHashTraitsINS_10HashTrai
+__ZN7WebCore19InspectorController34inspectedWindowScriptObjectClearedEPNS_5FrameE
__ZN7WebCore6StringC1ERKN3JSC7UStringE
__ZN7WebCore6StringC2ERKN3JSC7UStringE
__ZNK7WebCore20StringSourceProvider4dataEv
diff --git a/WebCore/WebCore.pro b/WebCore/WebCore.pro
index 5eeadb7..6a19309 100644
--- a/WebCore/WebCore.pro
+++ b/WebCore/WebCore.pro
@@ -10,8 +10,6 @@ symbian: {
webkitlibs.sources = QtWebKit.dll
webkitlibs.path = /sys/bin
DEPLOYMENT += webkitlibs
-
- TARGET.UID3 = 0x200267C2
}
include($$PWD/../WebKit.pri)
@@ -108,7 +106,6 @@ contains(DEFINES, ENABLE_SINGLE_THREADED=1) {
!contains(DEFINES, ENABLE_JAVASCRIPT_DEBUGGER=.): DEFINES += ENABLE_JAVASCRIPT_DEBUGGER=1
!contains(DEFINES, ENABLE_DATABASE=.): DEFINES += ENABLE_DATABASE=1
-!contains(DEFINES, ENABLE_EVENTSOURCE=.): DEFINES += ENABLE_EVENTSOURCE=1
!contains(DEFINES, ENABLE_OFFLINE_WEB_APPLICATIONS=.): DEFINES += ENABLE_OFFLINE_WEB_APPLICATIONS=1
!contains(DEFINES, ENABLE_DOM_STORAGE=.): DEFINES += ENABLE_DOM_STORAGE=1
!contains(DEFINES, ENABLE_ICONDATABASE=.): DEFINES += ENABLE_ICONDATABASE=1
@@ -128,7 +125,6 @@ contains(DEFINES, ENABLE_SINGLE_THREADED=1) {
!contains(DEFINES, ENABLE_XPATH=.): DEFINES += ENABLE_XPATH=1
!contains(DEFINES, ENABLE_XSLT=.): DEFINES += ENABLE_XSLT=0
#!contains(DEFINES, ENABLE_XBL=.): DEFINES += ENABLE_XBL=1
-!contains(DEFINES, ENABLE_WCSS=.): DEFINES += ENABLE_WCSS=0
!contains(DEFINES, ENABLE_WML=.): DEFINES += ENABLE_WML=0
!contains(DEFINES, ENABLE_SHARED_WORKERS=.): DEFINES += ENABLE_SHARED_WORKERS=0
!contains(DEFINES, ENABLE_WORKERS=.): DEFINES += ENABLE_WORKERS=1
@@ -156,9 +152,6 @@ contains(DEFINES, ENABLE_SINGLE_THREADED=1) {
else:DEFINES += ENABLE_VIDEO=0
}
-# HTML5 datalist support
-!contains(DEFINES, ENABLE_DATALIST=.): DEFINES += ENABLE_DATALIST=1
-
# Nescape plugins support (NPAPI)
!contains(DEFINES, ENABLE_NETSCAPE_PLUGIN_API=.) {
unix|win32-*:!embedded:!wince*:!symbian {
@@ -200,7 +193,6 @@ INCLUDEPATH = \
$$PWD/loader/appcache \
$$PWD/loader/archive \
$$PWD/loader/icon \
- $$PWD/notifications \
$$PWD/page \
$$PWD/page/animation \
$$PWD/platform \
@@ -262,16 +254,9 @@ WALDOCSSVALUES = $$PWD/css/CSSValueKeywords.in
DASHBOARDSUPPORTCSSPROPERTIES = $$PWD/css/DashboardSupportCSSPropertyNames.in
+SVGCSSPROPERTIES = $$PWD/css/SVGCSSPropertyNames.in
-contains(DEFINES, ENABLE_SVG=1) {
- EXTRACSSPROPERTIES += $$PWD/css/SVGCSSPropertyNames.in
- EXTRACSSVALUES += $$PWD/css/SVGCSSValueKeywords.in
-}
-
-contains(DEFINES, ENABLE_WCSS=1) {
- EXTRACSSPROPERTIES += $$PWD/css/WCSSPropertyNames.in
- EXTRACSSVALUES += $$PWD/css/WCSSValueKeywords.in
-}
+SVGCSSVALUES = $$PWD/css/SVGCSSValueKeywords.in
STYLESHEETS_EMBED = \
$$PWD/css/html.css \
@@ -379,7 +364,6 @@ IDL_BINDINGS += \
html/HTMLDataGridCellElement.idl \
html/HTMLDataGridColElement.idl \
html/HTMLDataGridRowElement.idl \
- html/HTMLDataListElement.idl \
html/HTMLDirectoryElement.idl \
html/HTMLDivElement.idl \
html/HTMLDListElement.idl \
@@ -446,7 +430,6 @@ IDL_BINDINGS += \
page/Coordinates.idl \
page/DOMSelection.idl \
page/DOMWindow.idl \
- page/EventSource.idl \
page/Geolocation.idl \
page/Geoposition.idl \
page/History.idl \
@@ -645,7 +628,6 @@ SOURCES += \
bindings/js/JSClipboardCustom.cpp \
bindings/js/JSConsoleCustom.cpp \
bindings/js/JSCSSRuleCustom.cpp \
- bindings/js/JSCSSRuleListCustom.cpp \
bindings/js/JSCSSStyleDeclarationCustom.cpp \
bindings/js/JSCSSValueCustom.cpp \
bindings/js/JSCoordinatesCustom.cpp \
@@ -663,14 +645,11 @@ SOURCES += \
bindings/js/JSDOMWindowShell.cpp \
bindings/js/JSElementCustom.cpp \
bindings/js/JSEventCustom.cpp \
- bindings/js/JSEventSourceConstructor.cpp \
- bindings/js/JSEventSourceCustom.cpp \
bindings/js/JSEventTarget.cpp \
bindings/js/JSGeolocationCustom.cpp \
bindings/js/JSHTMLAllCollection.cpp \
bindings/js/JSHistoryCustom.cpp \
bindings/js/JSHTMLAppletElementCustom.cpp \
- bindings/js/JSHTMLCanvasElementCustom.cpp \
bindings/js/JSHTMLCollectionCustom.cpp \
bindings/js/JSHTMLDataGridElementCustom.cpp \
bindings/js/JSHTMLDocumentCustom.cpp \
@@ -965,7 +944,6 @@ SOURCES += \
html/HTMLDataGridCellElement.cpp \
html/HTMLDataGridColElement.cpp \
html/HTMLDataGridRowElement.cpp \
- html/HTMLDataListElement.cpp \
html/HTMLDirectoryElement.cpp \
html/HTMLDivElement.cpp \
html/HTMLDListElement.cpp \
@@ -1098,7 +1076,6 @@ SOURCES += \
page/NavigatorBase.cpp \
page/DragController.cpp \
page/EventHandler.cpp \
- page/EventSource.cpp \
page/FocusController.cpp \
page/Frame.cpp \
page/FrameTree.cpp \
@@ -1346,7 +1323,6 @@ HEADERS += \
bindings/js/JSDOMWindowCustom.h \
bindings/js/JSDOMWindowShell.h \
bindings/js/JSEventListener.h \
- bindings/js/JSEventSourceConstructor.h \
bindings/js/JSEventTarget.h \
bindings/js/JSHistoryCustom.h \
bindings/js/JSHTMLAllCollection.h \
@@ -1772,7 +1748,6 @@ HEADERS += \
page/DOMWindow.h \
page/DragController.h \
page/EventHandler.h \
- page/EventSource.h \
page/FocusController.h \
page/Frame.h \
page/FrameTree.h \
@@ -2451,10 +2426,6 @@ contains(DEFINES, ENABLE_DATAGRID=1) {
FEATURE_DEFINES_JAVASCRIPT += ENABLE_DATAGRID=1
}
-contains(DEFINES, ENABLE_EVENTSOURCE=1) {
- FEATURE_DEFINES_JAVASCRIPT += ENABLE_EVENTSOURCE=1
-}
-
contains(DEFINES, ENABLE_SQLITE=1) {
!system-sqlite:exists( $${SQLITE3SRCDIR}/sqlite3.c ) {
# Build sqlite3 into WebCore from source
@@ -2502,7 +2473,6 @@ contains(DEFINES, ENABLE_DATABASE=1) {
storage/SQLResultSetRowList.cpp \
storage/SQLStatement.cpp \
storage/SQLTransaction.cpp \
- storage/SQLTransactionCoordinator.cpp \
bindings/js/JSCustomSQLStatementCallback.cpp \
bindings/js/JSCustomSQLStatementErrorCallback.cpp \
bindings/js/JSCustomSQLTransactionCallback.cpp \
@@ -2530,7 +2500,6 @@ contains(DEFINES, ENABLE_DOM_STORAGE=1) {
storage/SQLResultSetRowList.h \
storage/SQLStatement.h \
storage/SQLTransaction.h \
- storage/SQLTransactionCoordinator.h \
storage/StorageArea.h \
storage/StorageAreaImpl.h \
storage/StorageAreaSync.h \
@@ -2703,14 +2672,6 @@ contains(DEFINES, ENABLE_FILTERS=1) {
FEATURE_DEFINES_JAVASCRIPT += ENABLE_FILTERS=1
}
-contains(DEFINES, ENABLE_WCSS=1) {
- FEATURE_DEFINES_JAVASCRIPT += ENABLE_WCSS=1
- contains(DEFINES, ENABLE_XHTMLMP=0) {
- DEFINES -= ENABLE_XHTMLMP=0
- DEFINES += ENABLE_XHTMLMP=1
- }
-}
-
contains(DEFINES, ENABLE_WML=1) {
SOURCES += \
wml/WMLAElement.cpp \
@@ -3019,25 +2980,42 @@ contains(DEFINES, ENABLE_SVG=1) {
xlinknames.variable_out = GENERATED_SOURCES
addExtraCompilerWithHeader(xlinknames)
-}
-# GENERATOR 6-A:
-cssprops.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.cpp
-cssprops.input = WALDOCSSPROPS
-cssprops.commands = perl -ne \"print lc\" ${QMAKE_FILE_NAME} $$DASHBOARDSUPPORTCSSPROPERTIES $$EXTRACSSPROPERTIES > $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.in && cd $$GENERATED_SOURCES_DIR && perl $$PWD/css/makeprop.pl && $(DEL_FILE) ${QMAKE_FILE_BASE}.strip ${QMAKE_FILE_BASE}.in ${QMAKE_FILE_BASE}.gperf
-cssprops.CONFIG = target_predeps no_link
-cssprops.variable_out =
-cssprops.depend = ${QMAKE_FILE_NAME} DASHBOARDSUPPORTCSSPROPERTIES EXTRACSSPROPERTIES
-addExtraCompilerWithHeader(cssprops)
-
-# GENERATOR 6-B:
-cssvalues.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.c
-cssvalues.input = WALDOCSSVALUES
-cssvalues.commands = perl -ne \"print lc\" ${QMAKE_FILE_NAME} $$EXTRACSSVALUES > $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.in && cd $$GENERATED_SOURCES_DIR && perl $$PWD/css/makevalues.pl && $(DEL_FILE) ${QMAKE_FILE_BASE}.in ${QMAKE_FILE_BASE}.strip ${QMAKE_FILE_BASE}.gperf
-cssvalues.CONFIG = target_predeps no_link
-cssvalues.variable_out =
-cssvalues.depend = ${QMAKE_FILE_NAME} EXTRACSSVALUES
-cssvalues.clean = ${QMAKE_FILE_OUT} ${QMAKE_VAR_GENERATED_SOURCES_DIR_SLASH}${QMAKE_FILE_BASE}.h
-addExtraCompiler(cssvalues)
+ # GENERATOR 6-A:
+ cssprops.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.cpp
+ cssprops.input = WALDOCSSPROPS
+ cssprops.commands = perl -ne \"print lc\" ${QMAKE_FILE_NAME} $$DASHBOARDSUPPORTCSSPROPERTIES $$SVGCSSPROPERTIES > $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.in && cd $$GENERATED_SOURCES_DIR && perl $$PWD/css/makeprop.pl && $(DEL_FILE) ${QMAKE_FILE_BASE}.strip ${QMAKE_FILE_BASE}.in ${QMAKE_FILE_BASE}.gperf
+ cssprops.CONFIG = target_predeps no_link
+ cssprops.variable_out =
+ cssprops.depend = ${QMAKE_FILE_NAME} DASHBOARDSUPPORTCSSPROPERTIES SVGCSSPROPERTIES
+ addExtraCompilerWithHeader(cssprops)
+
+ # GENERATOR 6-B:
+ cssvalues.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.c
+ cssvalues.input = WALDOCSSVALUES
+ cssvalues.commands = perl -ne \"print lc\" ${QMAKE_FILE_NAME} $$SVGCSSVALUES > $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.in && cd $$GENERATED_SOURCES_DIR && perl $$PWD/css/makevalues.pl && $(DEL_FILE) ${QMAKE_FILE_BASE}.in ${QMAKE_FILE_BASE}.strip ${QMAKE_FILE_BASE}.gperf
+ cssvalues.CONFIG = target_predeps no_link
+ cssvalues.variable_out =
+ cssvalues.depend = ${QMAKE_FILE_NAME} SVGCSSVALUES
+ addExtraCompilerWithHeader(cssvalues)
+} else {
+ # GENERATOR 6-A:
+ cssprops.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.cpp
+ cssprops.input = WALDOCSSPROPS
+ cssprops.commands = perl -ne \"print lc\" ${QMAKE_FILE_NAME} $$DASHBOARDSUPPORTCSSPROPERTIES > $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.in && cd $$GENERATED_SOURCES_DIR && perl $$PWD/css/makeprop.pl && $(DEL_FILE) ${QMAKE_FILE_BASE}.strip ${QMAKE_FILE_BASE}.in ${QMAKE_FILE_BASE}.gperf
+ cssprops.CONFIG = target_predeps no_link
+ cssprops.variable_out =
+ cssprops.depend = ${QMAKE_FILE_NAME} DASHBOARDSUPPORTCSSPROPERTIES
+ addExtraCompilerWithHeader(cssprops)
+
+ # GENERATOR 6-B:
+ cssvalues.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.c
+ cssvalues.input = WALDOCSSVALUES
+ cssvalues.commands = perl -ne \"print lc\" ${QMAKE_FILE_NAME} > $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.in && cd $$GENERATED_SOURCES_DIR && perl $$PWD/css/makevalues.pl && $(DEL_FILE) ${QMAKE_FILE_BASE}.in ${QMAKE_FILE_BASE}.strip ${QMAKE_FILE_BASE}.gperf
+ cssvalues.CONFIG = target_predeps no_link
+ cssvalues.variable_out =
+ cssvalues.clean = ${QMAKE_FILE_OUT} ${QMAKE_VAR_GENERATED_SOURCES_DIR_SLASH}${QMAKE_FILE_BASE}.h
+ addExtraCompiler(cssvalues)
+}
contains(DEFINES, ENABLE_JAVASCRIPT_DEBUGGER=1) {
FEATURE_DEFINES_JAVASCRIPT += ENABLE_JAVASCRIPT_DEBUGGER=1
@@ -3263,20 +3241,3 @@ CONFIG(QTDIR_build):isEqual(QT_MAJOR_VERSION, 4):greaterThan(QT_MINOR_VERSION, 4
CONFIG += no_debug_info
}
-!win32-g++:win32:contains(QMAKE_HOST.arch, x86_64):{
- asm_compiler.commands = ml64 /c
- asm_compiler.commands += /Fo ${QMAKE_FILE_OUT} ${QMAKE_FILE_IN}
- asm_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)}
- asm_compiler.input = ASM_SOURCES
- asm_compiler.variable_out = OBJECTS
- asm_compiler.name = compiling[asm] ${QMAKE_FILE_IN}
- silent:asm_compiler.commands = @echo compiling[asm] ${QMAKE_FILE_IN} && $$asm_compiler.commands
- QMAKE_EXTRA_COMPILERS += asm_compiler
-
- ASM_SOURCES += \
- plugins/win/PaintHooks.asm
- if(win32-msvc2005|win32-msvc2008):equals(TEMPLATE_PREFIX, "vc") {
- SOURCES += \
- plugins/win/PaintHooks.asm
- }
-}
diff --git a/WebCore/WebCore.vcproj/QTMovieWin.vcproj b/WebCore/WebCore.vcproj/QTMovieWin.vcproj
index e53bd22..593855b 100644
--- a/WebCore/WebCore.vcproj/QTMovieWin.vcproj
+++ b/WebCore/WebCore.vcproj/QTMovieWin.vcproj
@@ -23,7 +23,7 @@
>
<Tool
Name="VCPreBuildEventTool"
- CommandLine="%SystemDrive%\cygwin\bin\which.exe bash&#x0D;&#x0A;if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH%&#x0D;&#x0A;cmd /c&#x0D;&#x0A;&#x0D;&#x0A;if exist &quot;$(WebKitOutputDir)\buildfailed&quot; grep XX$(ProjectName)XX &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;if errorlevel 1 exit 1&#x0D;&#x0A;echo XX$(ProjectName)XX &gt; &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;&#x0D;&#x0A;bash &quot;$(WebKitLibrariesDir)\tools\scripts\auto-version.sh&quot; &quot;$(IntDir)&quot;&#x0D;&#x0A;"
+ CommandLine="set PATH=%SystemDrive%\cygwin\bin;%PATH%&#x0D;&#x0A;&#x0D;&#x0A;if exist &quot;$(WebKitOutputDir)\buildfailed&quot; grep XX$(ProjectName)XX &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;if errorlevel 1 exit 1&#x0D;&#x0A;echo XX$(ProjectName)XX &gt; &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;&#x0D;&#x0A;bash &quot;$(WebKitLibrariesDir)\tools\scripts\auto-version.sh&quot; &quot;$(IntDir)&quot;&#x0D;&#x0A;"
/>
<Tool
Name="VCCustomBuildTool"
@@ -96,7 +96,7 @@
>
<Tool
Name="VCPreBuildEventTool"
- CommandLine="%SystemDrive%\cygwin\bin\which.exe bash&#x0D;&#x0A;if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH%&#x0D;&#x0A;cmd /c&#x0D;&#x0A;&#x0D;&#x0A;if exist &quot;$(WebKitOutputDir)\buildfailed&quot; grep XX$(ProjectName)XX &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;if errorlevel 1 exit 1&#x0D;&#x0A;echo XX$(ProjectName)XX &gt; &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;&#x0D;&#x0A;bash &quot;$(WebKitLibrariesDir)\tools\scripts\auto-version.sh&quot; &quot;$(IntDir)&quot;&#x0D;&#x0A;"
+ CommandLine="set PATH=%SystemDrive%\cygwin\bin;%PATH%&#x0D;&#x0A;&#x0D;&#x0A;if exist &quot;$(WebKitOutputDir)\buildfailed&quot; grep XX$(ProjectName)XX &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;if errorlevel 1 exit 1&#x0D;&#x0A;echo XX$(ProjectName)XX &gt; &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;&#x0D;&#x0A;bash &quot;$(WebKitLibrariesDir)\tools\scripts\auto-version.sh&quot; &quot;$(IntDir)&quot;&#x0D;&#x0A;"
/>
<Tool
Name="VCCustomBuildTool"
@@ -168,7 +168,7 @@
>
<Tool
Name="VCPreBuildEventTool"
- CommandLine="%SystemDrive%\cygwin\bin\which.exe bash&#x0D;&#x0A;if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH%&#x0D;&#x0A;cmd /c&#x0D;&#x0A;&#x0D;&#x0A;if exist &quot;$(WebKitOutputDir)\buildfailed&quot; grep XX$(ProjectName)XX &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;if errorlevel 1 exit 1&#x0D;&#x0A;echo XX$(ProjectName)XX &gt; &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;&#x0D;&#x0A;bash &quot;$(WebKitLibrariesDir)\tools\scripts\auto-version.sh&quot; &quot;$(IntDir)&quot;&#x0D;&#x0A;"
+ CommandLine="set PATH=%SystemDrive%\cygwin\bin;%PATH%&#x0D;&#x0A;&#x0D;&#x0A;if exist &quot;$(WebKitOutputDir)\buildfailed&quot; grep XX$(ProjectName)XX &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;if errorlevel 1 exit 1&#x0D;&#x0A;echo XX$(ProjectName)XX &gt; &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;&#x0D;&#x0A;bash &quot;$(WebKitLibrariesDir)\tools\scripts\auto-version.sh&quot; &quot;$(IntDir)&quot;&#x0D;&#x0A;"
/>
<Tool
Name="VCCustomBuildTool"
diff --git a/WebCore/WebCore.vcproj/WebCore.vcproj b/WebCore/WebCore.vcproj/WebCore.vcproj
index 9d08b56..7aef730 100644
--- a/WebCore/WebCore.vcproj/WebCore.vcproj
+++ b/WebCore/WebCore.vcproj/WebCore.vcproj
@@ -67,7 +67,7 @@
/>
<Tool
Name="VCPostBuildEventTool"
- CommandLine="mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\bindings&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\parser&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\runtime&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\masm&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\pcre&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\profiler&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wrec&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode\icu&quot;&#x0D;&#x0A;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\config.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitOutputDir)\obj\WebCore\DerivedSources\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\accessibility\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\accessibility\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\inspector\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\appcache\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\archive\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\archive\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\icon\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\history\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\history\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\html\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\notifications\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\css\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\animation\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\transforms\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\opentype\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\text\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\sql\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\cairo\cairo\src\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\bindings\js\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\page\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\page\animation\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\page\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\bridge\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\plugins\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\plugins\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\rendering\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\rendering\style\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\editing\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\dom\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\xml\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\svg\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\storage\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\workers\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\bindings\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\bindings&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\parser\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\parser&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\runtime\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\runtime&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\masm\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\masm&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\pcre\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\pcre&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\profiler\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\profiler&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wrec\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wrec&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\unicode\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\unicode\icu\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode\icu&quot;&#x0D;&#x0A;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\bin\WebKit.resources\inspector&quot;&#x0D;&#x0A;xcopy /y /d /s /exclude:xcopy.excludes &quot;$(ProjectDir)\..\inspector\front-end\*&quot; &quot;$(WebKitOutputDir)\bin\WebKit.resources\inspector&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\bin\WebKit.resources\en.lproj&quot;&#x0D;&#x0A;xcopy /y /d /s /exclude:xcopy.excludes &quot;$(ProjectDir)\..\English.lproj\localizedStrings.js&quot; &quot;$(WebKitOutputDir)\bin\WebKit.resources\en.lproj&quot;&#x0D;&#x0A;&#x0D;&#x0A;if exist &quot;$(WebKitOutputDir)\buildfailed&quot; del &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;"
+ CommandLine="mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\bindings&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\parser&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\runtime&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\masm&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\pcre&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\profiler&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wrec&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode\icu&quot;&#x0D;&#x0A;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\config.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitOutputDir)\obj\WebCore\DerivedSources\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\accessibility\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\accessibility\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\inspector\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\appcache\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\archive\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\archive\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\icon\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\history\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\history\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\html\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\css\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\animation\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\transforms\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\opentype\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\text\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\sql\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\cairo\cairo\src\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\bindings\js\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\page\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\page\animation\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\page\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\bridge\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\plugins\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\plugins\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\rendering\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\rendering\style\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\editing\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\dom\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\xml\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\svg\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\storage\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\workers\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\bindings\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\bindings&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\parser\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\parser&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\runtime\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\runtime&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\masm\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\masm&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\pcre\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\pcre&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\profiler\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\profiler&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wrec\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wrec&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\unicode\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\unicode\icu\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode\icu&quot;&#x0D;&#x0A;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\bin\WebKit.resources\inspector&quot;&#x0D;&#x0A;xcopy /y /d /s /exclude:xcopy.excludes &quot;$(ProjectDir)\..\inspector\front-end\*&quot; &quot;$(WebKitOutputDir)\bin\WebKit.resources\inspector&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\bin\WebKit.resources\en.lproj&quot;&#x0D;&#x0A;xcopy /y /d /s /exclude:xcopy.excludes &quot;$(ProjectDir)\..\English.lproj\localizedStrings.js&quot; &quot;$(WebKitOutputDir)\bin\WebKit.resources\en.lproj&quot;&#x0D;&#x0A;&#x0D;&#x0A;if exist &quot;$(WebKitOutputDir)\buildfailed&quot; del &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;"
/>
</Configuration>
<Configuration
@@ -123,7 +123,7 @@
/>
<Tool
Name="VCPostBuildEventTool"
- CommandLine="mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\bindings&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\parser&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\runtime&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\masm&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\pcre&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\profiler&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wrec&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode\icu&quot;&#x0D;&#x0A;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\config.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitOutputDir)\obj\WebCore\DerivedSources\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\accessibility\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\accessibility\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\inspector\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\appcache\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\archive\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\archive\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\icon\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\history\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\history\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\html\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\notifications\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\css\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\animation\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\transforms\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\opentype\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\text\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\sql\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\cairo\cairo\src\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\bindings\js\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\page\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\page\animation\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\page\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\bridge\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\plugins\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\plugins\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\rendering\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\rendering\style\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\editing\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\dom\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\xml\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\svg\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\storage\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\workers\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\bindings\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\bindings&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\parser\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\parser&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\runtime\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\runtime&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\masm\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\masm&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\pcre\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\pcre&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\profiler\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\profiler&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wrec\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wrec&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\unicode\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\unicode\icu\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode\icu&quot;&#x0D;&#x0A;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\bin\WebKit.resources\inspector&quot;&#x0D;&#x0A;xcopy /y /d /s /exclude:xcopy.excludes &quot;$(ProjectDir)\..\inspector\front-end\*&quot; &quot;$(WebKitOutputDir)\bin\WebKit.resources\inspector&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\bin\WebKit.resources\en.lproj&quot;&#x0D;&#x0A;xcopy /y /d /s /exclude:xcopy.excludes &quot;$(ProjectDir)\..\English.lproj\localizedStrings.js&quot; &quot;$(WebKitOutputDir)\bin\WebKit.resources\en.lproj&quot;&#x0D;&#x0A;&#x0D;&#x0A;if exist &quot;$(WebKitOutputDir)\buildfailed&quot; del &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;"
+ CommandLine="mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\bindings&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\parser&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\runtime&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\masm&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\pcre&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\profiler&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wrec&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode\icu&quot;&#x0D;&#x0A;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\config.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitOutputDir)\obj\WebCore\DerivedSources\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\accessibility\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\accessibility\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\inspector\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\appcache\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\archive\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\archive\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\icon\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\history\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\history\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\html\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\css\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\animation\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\transforms\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\opentype\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\text\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\sql\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\cairo\cairo\src\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\bindings\js\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\page\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\page\animation\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\page\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\bridge\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\plugins\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\plugins\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\rendering\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\rendering\style\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\editing\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\dom\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\xml\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\svg\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\storage\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\workers\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\bindings\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\bindings&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\parser\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\parser&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\runtime\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\runtime&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\masm\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\masm&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\pcre\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\pcre&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\profiler\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\profiler&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wrec\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wrec&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\unicode\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\unicode\icu\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode\icu&quot;&#x0D;&#x0A;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\bin\WebKit.resources\inspector&quot;&#x0D;&#x0A;xcopy /y /d /s /exclude:xcopy.excludes &quot;$(ProjectDir)\..\inspector\front-end\*&quot; &quot;$(WebKitOutputDir)\bin\WebKit.resources\inspector&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\bin\WebKit.resources\en.lproj&quot;&#x0D;&#x0A;xcopy /y /d /s /exclude:xcopy.excludes &quot;$(ProjectDir)\..\English.lproj\localizedStrings.js&quot; &quot;$(WebKitOutputDir)\bin\WebKit.resources\en.lproj&quot;&#x0D;&#x0A;&#x0D;&#x0A;if exist &quot;$(WebKitOutputDir)\buildfailed&quot; del &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;"
/>
</Configuration>
<Configuration
@@ -178,7 +178,7 @@
/>
<Tool
Name="VCPostBuildEventTool"
- CommandLine="mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\bindings&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\parser&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\runtime&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\masm&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\pcre&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\profiler&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wrec&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode\icu&quot;&#x0D;&#x0A;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\config.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitOutputDir)\obj\WebCore\DerivedSources\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\accessibility\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\accessibility\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\inspector\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\appcache\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\archive\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\archive\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\icon\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\history\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\history\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\html\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\notifications\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\css\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\animation\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\transforms\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\opentype\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\text\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\sql\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\cairo\cairo\src\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\bindings\js\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\page\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\page\animation\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\page\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\bridge\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\plugins\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\plugins\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\rendering\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\rendering\style\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\editing\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\dom\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\xml\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\svg\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\storage\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\workers\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\bindings\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\bindings&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\parser\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\parser&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\runtime\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\runtime&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\masm\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\masm&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\pcre\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\pcre&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\profiler\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\profiler&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wrec\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wrec&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\unicode\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\unicode\icu\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode\icu&quot;&#x0D;&#x0A;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\bin\WebKit.resources\inspector&quot;&#x0D;&#x0A;xcopy /y /d /s /exclude:xcopy.excludes &quot;$(ProjectDir)\..\inspector\front-end\*&quot; &quot;$(WebKitOutputDir)\bin\WebKit.resources\inspector&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\bin\WebKit.resources\en.lproj&quot;&#x0D;&#x0A;xcopy /y /d /s /exclude:xcopy.excludes &quot;$(ProjectDir)\..\English.lproj\localizedStrings.js&quot; &quot;$(WebKitOutputDir)\bin\WebKit.resources\en.lproj&quot;&#x0D;&#x0A;&#x0D;&#x0A;if exist &quot;$(WebKitOutputDir)\buildfailed&quot; del &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;"
+ CommandLine="mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\bindings&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\parser&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\runtime&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\masm&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\pcre&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\profiler&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wrec&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode\icu&quot;&#x0D;&#x0A;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\config.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitOutputDir)\obj\WebCore\DerivedSources\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\accessibility\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\accessibility\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\inspector\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\appcache\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\archive\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\archive\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\icon\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\history\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\history\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\html\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\css\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\animation\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\transforms\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\opentype\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\text\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\sql\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\cairo\cairo\src\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\bindings\js\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\page\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\page\animation\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\page\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\bridge\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\plugins\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\plugins\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\rendering\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\rendering\style\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\editing\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\dom\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\xml\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\svg\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\storage\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\workers\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\bindings\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\bindings&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\parser\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\parser&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\runtime\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\runtime&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\masm\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\masm&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\pcre\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\pcre&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\profiler\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\profiler&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wrec\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wrec&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\unicode\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\unicode\icu\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode\icu&quot;&#x0D;&#x0A;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\bin\WebKit.resources\inspector&quot;&#x0D;&#x0A;xcopy /y /d /s /exclude:xcopy.excludes &quot;$(ProjectDir)\..\inspector\front-end\*&quot; &quot;$(WebKitOutputDir)\bin\WebKit.resources\inspector&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\bin\WebKit.resources\en.lproj&quot;&#x0D;&#x0A;xcopy /y /d /s /exclude:xcopy.excludes &quot;$(ProjectDir)\..\English.lproj\localizedStrings.js&quot; &quot;$(WebKitOutputDir)\bin\WebKit.resources\en.lproj&quot;&#x0D;&#x0A;&#x0D;&#x0A;if exist &quot;$(WebKitOutputDir)\buildfailed&quot; del &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;"
/>
</Configuration>
<Configuration
@@ -233,7 +233,7 @@
/>
<Tool
Name="VCPostBuildEventTool"
- CommandLine="mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\bindings&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\parser&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\runtime&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\masm&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\pcre&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\profiler&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wrec&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode\icu&quot;&#x0D;&#x0A;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\config.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitOutputDir)\obj\WebCore\DerivedSources\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\accessibility\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\accessibility\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\inspector\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\appcache\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\archive\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\archive\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\icon\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\history\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\history\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\html\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\notifications\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\css\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\animation\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\transforms\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\opentype\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\text\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\curl\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\sql\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\cairo\cairo\src\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\bindings\js\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\page\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\page\animation\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\page\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\bridge\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\plugins\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\plugins\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\rendering\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\rendering\style\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\editing\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\dom\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\xml\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\svg\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\storage\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\workers\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\bindings\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\bindings&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\parser\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\parser&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\runtime\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\runtime&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\masm\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\masm&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\pcre\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\pcre&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\profiler\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\profiler&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wrec\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wrec&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\unicode\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\unicode\icu\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode\icu&quot;&#x0D;&#x0A;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\bin\WebKit.resources\inspector&quot;&#x0D;&#x0A;xcopy /y /d /s /exclude:xcopy.excludes &quot;$(ProjectDir)\..\inspector\front-end\*&quot; &quot;$(WebKitOutputDir)\bin\WebKit.resources\inspector&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\bin\WebKit.resources\en.lproj&quot;&#x0D;&#x0A;xcopy /y /d /s /exclude:xcopy.excludes &quot;$(ProjectDir)\..\English.lproj\localizedStrings.js&quot; &quot;$(WebKitOutputDir)\bin\WebKit.resources\en.lproj&quot;&#x0D;&#x0A;&#x0D;&#x0A;if exist &quot;$(WebKitOutputDir)\buildfailed&quot; del &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;"
+ CommandLine="mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\bindings&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\parser&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\runtime&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\masm&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\pcre&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\profiler&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wrec&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode\icu&quot;&#x0D;&#x0A;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\config.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitOutputDir)\obj\WebCore\DerivedSources\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\accessibility\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\accessibility\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\inspector\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\appcache\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\archive\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\archive\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\icon\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\history\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\history\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\html\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\css\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\animation\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\transforms\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\opentype\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\text\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\curl\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\sql\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\cairo\cairo\src\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\bindings\js\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\page\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\page\animation\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\page\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\bridge\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\plugins\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\plugins\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\rendering\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\rendering\style\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\editing\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\dom\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\xml\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\svg\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\storage\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\workers\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\bindings\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\bindings&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\parser\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\parser&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\runtime\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\runtime&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\masm\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\masm&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\pcre\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\pcre&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\profiler\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\profiler&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wrec\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wrec&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\unicode\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\unicode\icu\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode\icu&quot;&#x0D;&#x0A;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\bin\WebKit.resources\inspector&quot;&#x0D;&#x0A;xcopy /y /d /s /exclude:xcopy.excludes &quot;$(ProjectDir)\..\inspector\front-end\*&quot; &quot;$(WebKitOutputDir)\bin\WebKit.resources\inspector&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\bin\WebKit.resources\en.lproj&quot;&#x0D;&#x0A;xcopy /y /d /s /exclude:xcopy.excludes &quot;$(ProjectDir)\..\English.lproj\localizedStrings.js&quot; &quot;$(WebKitOutputDir)\bin\WebKit.resources\en.lproj&quot;&#x0D;&#x0A;&#x0D;&#x0A;if exist &quot;$(WebKitOutputDir)\buildfailed&quot; del &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;"
/>
</Configuration>
<Configuration
@@ -289,7 +289,7 @@
/>
<Tool
Name="VCPostBuildEventTool"
- CommandLine="mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\bindings&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\parser&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\runtime&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\masm&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\pcre&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\profiler&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wrec&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode\icu&quot;&#x0D;&#x0A;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\config.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitOutputDir)\obj\WebCore\DerivedSources\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\accessibility\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\accessibility\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\inspector\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\appcache\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\archive\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\archive\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\icon\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\history\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\history\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\html\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\notifications\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\css\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\animation\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\transforms\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\opentype\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\text\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\curl\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\sql\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\cairo\cairo\src\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\bindings\js\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\page\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\page\animation\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\page\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\bridge\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\plugins\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\plugins\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\rendering\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\rendering\style\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\editing\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\dom\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\xml\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\svg\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\storage\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\workers\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\bindings\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\bindings&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\parser\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\parser&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\runtime\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\runtime&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\masm\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\masm&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\pcre\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\pcre&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\profiler\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\profiler&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wrec\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wrec&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\unicode\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\unicode\icu\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode\icu&quot;&#x0D;&#x0A;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\bin\WebKit.resources\inspector&quot;&#x0D;&#x0A;xcopy /y /d /s /exclude:xcopy.excludes &quot;$(ProjectDir)\..\inspector\front-end\*&quot; &quot;$(WebKitOutputDir)\bin\WebKit.resources\inspector&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\bin\WebKit.resources\en.lproj&quot;&#x0D;&#x0A;xcopy /y /d /s /exclude:xcopy.excludes &quot;$(ProjectDir)\..\English.lproj\localizedStrings.js&quot; &quot;$(WebKitOutputDir)\bin\WebKit.resources\en.lproj&quot;&#x0D;&#x0A;&#x0D;&#x0A;if exist &quot;$(WebKitOutputDir)\buildfailed&quot; del &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;"
+ CommandLine="mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\bindings&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\parser&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\runtime&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\masm&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\pcre&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\profiler&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wrec&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode\icu&quot;&#x0D;&#x0A;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\config.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitOutputDir)\obj\WebCore\DerivedSources\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\accessibility\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\accessibility\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\inspector\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\appcache\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\archive\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\archive\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\icon\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\history\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\history\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\html\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\css\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\animation\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\transforms\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\opentype\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\text\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\curl\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\sql\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\cairo\cairo\src\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\bindings\js\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\page\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\page\animation\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\page\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\bridge\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\plugins\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\plugins\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\rendering\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\rendering\style\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\editing\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\dom\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\xml\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\svg\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\storage\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\workers\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\bindings\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\bindings&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\parser\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\parser&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\runtime\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\runtime&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\masm\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\masm&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\pcre\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\pcre&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\profiler\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\profiler&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wrec\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wrec&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\unicode\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\unicode\icu\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode\icu&quot;&#x0D;&#x0A;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\bin\WebKit.resources\inspector&quot;&#x0D;&#x0A;xcopy /y /d /s /exclude:xcopy.excludes &quot;$(ProjectDir)\..\inspector\front-end\*&quot; &quot;$(WebKitOutputDir)\bin\WebKit.resources\inspector&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\bin\WebKit.resources\en.lproj&quot;&#x0D;&#x0A;xcopy /y /d /s /exclude:xcopy.excludes &quot;$(ProjectDir)\..\English.lproj\localizedStrings.js&quot; &quot;$(WebKitOutputDir)\bin\WebKit.resources\en.lproj&quot;&#x0D;&#x0A;&#x0D;&#x0A;if exist &quot;$(WebKitOutputDir)\buildfailed&quot; del &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;"
/>
</Configuration>
</Configurations>
@@ -2779,54 +2779,6 @@
>
</File>
<File
- RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSEventSource.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCCLCompilerTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCCLCompilerTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug_Internal|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCCLCompilerTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug_Cairo|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCCLCompilerTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release_Cairo|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCCLCompilerTool"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSEventSource.h"
- >
- </File>
- <File
RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSFile.cpp"
>
<FileConfiguration
@@ -3835,14 +3787,6 @@
>
</File>
<File
- RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSHTMLDataListElement.h"
- >
- </File>
- <File
- RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSHTMLDataListElement.cpp"
- >
- </File>
- <File
RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSHTMLDirectoryElement.cpp"
>
<FileConfiguration
@@ -7443,102 +7387,6 @@
>
</File>
<File
- RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSNotification.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCCLCompilerTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCCLCompilerTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug_Internal|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCCLCompilerTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug_Cairo|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCCLCompilerTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release_Cairo|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCCLCompilerTool"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSNotification.h"
- >
- </File>
- <File
- RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSNotificationCenter.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCCLCompilerTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCCLCompilerTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug_Internal|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCCLCompilerTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug_Cairo|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCCLCompilerTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release_Cairo|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCCLCompilerTool"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSNotificationCenter.h"
- >
- </File>
- <File
RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSOverflowEvent.cpp"
>
<FileConfiguration
@@ -16869,14 +16717,6 @@
>
</File>
<File
- RelativePath="..\page\EventSource.cpp"
- >
- </File>
- <File
- RelativePath="..\page\EventSource.h"
- >
- </File>
- <File
RelativePath="..\page\FocusController.cpp"
>
</File>
@@ -18549,34 +18389,6 @@
>
</File>
<File
- RelativePath="..\platform\graphics\ImageSource.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCCLCompilerTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCCLCompilerTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug_Internal|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCCLCompilerTool"
- />
- </FileConfiguration>
- </File>
- <File
RelativePath="..\platform\graphics\ImageSource.h"
>
</File>
@@ -19752,6 +19564,34 @@
</FileConfiguration>
</File>
<File
+ RelativePath="..\platform\graphics\cairo\ImageSourceCairo.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug_Internal|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
RelativePath="..\platform\graphics\cairo\PathCairo.cpp"
>
<FileConfiguration
@@ -23792,6 +23632,10 @@
>
</File>
<File
+ RelativePath="..\dom\DocPtr.h"
+ >
+ </File>
+ <File
RelativePath="..\dom\Document.cpp"
>
</File>
@@ -24448,10 +24292,6 @@
>
</File>
<File
- RelativePath="..\workers\WorkerReportingProxy.h"
- >
- </File>
- <File
RelativePath="..\workers\WorkerRunLoop.cpp"
>
</File>
@@ -24481,34 +24321,6 @@
</File>
</Filter>
<Filter
- Name="notifications"
- >
- <File
- RelativePath="..\notifications\Notification.cpp"
- >
- </File>
- <File
- RelativePath="..\notifications\Notification.h"
- >
- </File>
- <File
- RelativePath="..\notifications\NotificationCenter.cpp"
- >
- </File>
- <File
- RelativePath="..\notifications\NotificationCenter.h"
- >
- </File>
- <File
- RelativePath="..\notifications\NotificationContents.h"
- >
- </File>
- <File
- RelativePath="..\notifications\NotificationPresenter.h"
- >
- </File>
- </Filter>
- <Filter
Name="editing"
>
<File
@@ -25740,14 +25552,6 @@
>
</File>
<File
- RelativePath="..\html\HTMLDataListElement.cpp"
- >
- </File>
- <File
- RelativePath="..\html\HTMLDataListElement.h"
- >
- </File>
- <File
RelativePath="..\html\HTMLDirectoryElement.cpp"
>
<FileConfiguration
@@ -28687,10 +28491,6 @@
>
</File>
<File
- RelativePath="..\bindings\js\JSCSSRuleListCustom.cpp"
- >
- </File>
- <File
RelativePath="..\bindings\js\JSCSSStyleDeclarationCustom.cpp"
>
</File>
@@ -28775,10 +28575,6 @@
>
</File>
<File
- RelativePath="..\bindings\js\JSDesktopNotificationsCustom.cpp"
- >
- </File>
- <File
RelativePath="..\bindings\js\JSDocumentCustom.cpp"
>
</File>
@@ -28847,18 +28643,6 @@
>
</File>
<File
- RelativePath="..\bindings\js\JSEventSourceConstructor.cpp"
- >
- </File>
- <File
- RelativePath="..\bindings\js\JSEventSourceConstructor.h"
- >
- </File>
- <File
- RelativePath="..\bindings\js\JSEventSourceCustom.cpp"
- >
- </File>
- <File
RelativePath="..\bindings\js\JSEventTarget.cpp"
>
</File>
@@ -28887,10 +28671,6 @@
>
</File>
<File
- RelativePath="..\bindings\js\JSHTMLCanvasElementCustom.cpp"
- >
- </File>
- <File
RelativePath="..\bindings\js\JSHTMLCollectionCustom.cpp"
>
</File>
@@ -30816,14 +30596,6 @@
>
</File>
<File
- RelativePath="..\storage\SQLTransactionCoordinator.h"
- >
- </File>
- <File
- RelativePath="..\storage\SQLTransactionCoordinator.cpp"
- >
- </File>
- <File
RelativePath="..\storage\SQLTransactionErrorCallback.h"
>
</File>
@@ -31311,10 +31083,6 @@
>
</File>
<File
- RelativePath="..\inspector\front-end\StatusBarButton.js"
- >
- </File>
- <File
RelativePath="..\inspector\front-end\StylesSidebarPane.js"
>
</File>
diff --git a/WebCore/WebCore.vcproj/WebCoreCURL.vsprops b/WebCore/WebCore.vcproj/WebCoreCURL.vsprops
index 4320e05..aaadb97 100644
--- a/WebCore/WebCore.vcproj/WebCoreCURL.vsprops
+++ b/WebCore/WebCore.vcproj/WebCoreCURL.vsprops
@@ -7,6 +7,5 @@
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="$(ProjectDir)..\platform\network\curl"
- PreprocessorDefinitions="USE_WINDOWS_SSPI;USE_SSLEAY;HAVE_ZLIB"
/>
</VisualStudioPropertySheet>
diff --git a/WebCore/WebCore.vcproj/WebCoreCommon.vsprops b/WebCore/WebCore.vcproj/WebCoreCommon.vsprops
index cbf71e1..3dd37fc 100644
--- a/WebCore/WebCore.vcproj/WebCoreCommon.vsprops
+++ b/WebCore/WebCore.vcproj/WebCoreCommon.vsprops
@@ -7,8 +7,8 @@
>
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="&quot;$(ProjectDir)..\&quot;;&quot;$(ProjectDir)..&quot;;&quot;$(ProjectDir)..\accessibility&quot;;&quot;$(ProjectDir)..\accessibility\win&quot;;&quot;$(ProjectDir)..\bridge&quot;;&quot;$(ProjectDir)..\bridge\c&quot;;&quot;$(ProjectDir)..\css&quot;;&quot;$(ProjectDir)..\editing&quot;;&quot;$(ProjectDir)..\rendering&quot;;&quot;$(ProjectDir)..\rendering\style&quot;;&quot;$(ProjectDir)..\bindings\js&quot;;&quot;$(ProjectDir)..\dom&quot;;&quot;$(ProjectDir)..\dom\default&quot;;&quot;$(ProjectDir)..\history&quot;;&quot;$(ProjectDir)..\html&quot;;&quot;$(ProjectDir)..\html\canvas&quot;;&quot;$(ProjectDir)..\inspector&quot;;&quot;$(ProjectDir)..\loader&quot;;&quot;$(ProjectDir)..\loader\appcache&quot;;&quot;$(ProjectDir)..\loader\archive&quot;;&quot;$(ProjectDir)..\loader\archive\cf&quot;;&quot;$(ProjectDir)..\loader\icon&quot;;&quot;$(ProjectDir)..\notifications&quot;;&quot;$(ProjectDir)..\page&quot;;&quot;$(ProjectDir)..\page\animation&quot;;&quot;$(ProjectDir)..\page\win&quot;;&quot;$(ProjectDir)..\platform&quot;;&quot;$(ProjectDir)..\platform\animation&quot;;&quot;$(ProjectDir)..\platform\sql&quot;;&quot;$(ProjectDir)..\platform\win&quot;;&quot;$(ProjectDir)..\platform\network&quot;;&quot;$(ProjectDir)..\platform\network\win&quot;;&quot;$(ProjectDir)..\platform\cf&quot;;&quot;$(ProjectDir)..\platform\graphics&quot;;&quot;$(ProjectDir)..\platform\graphics\opentype&quot;;&quot;$(ProjectDir)..\platform\graphics\transforms&quot;;&quot;$(ProjectDir)..\platform\text&quot;;&quot;$(ProjectDir)..\platform\graphics\win&quot;;&quot;$(ProjectDir)..\xml&quot;;&quot;$(WebKitOutputDir)\obj\WebCore\DerivedSources&quot;;&quot;$(ProjectDir)..\plugins&quot;;&quot;$(ProjectDir)..\plugins\win&quot;;&quot;$(ProjectDir)..\svg\graphics&quot;;&quot;$(ProjectDir)..\svg\graphics\filters&quot;;&quot;$(ProjectDir)..\svg&quot;;&quot;$(ProjectDir)..\wml&quot;;&quot;$(ProjectDir)..\storage&quot;;&quot;$(ProjectDir)..\workers&quot;;&quot;$(WebKitOutputDir)\include&quot;;&quot;$(WebKitOutputDir)\include\private&quot;;&quot;$(WebKitOutputDir)\include\JavaScriptCore&quot;;&quot;$(WebKitOutputDir)\include\private\JavaScriptCore&quot;;&quot;$(ProjectDir)..\ForwardingHeaders&quot;;&quot;$(WebKitLibrariesDir)\include&quot;;&quot;$(WebKitLibrariesDir)\include\private&quot;;&quot;$(WebKitLibrariesDir)\include\private\JavaScriptCore&quot;;&quot;$(WebKitLibrariesDir)\include\icu&quot;;&quot;$(WebKitLibrariesDir)\include\iconv&quot;;&quot;$(WebKitLibrariesDir)\include\pthreads&quot;;&quot;$(WebKitLibrariesDir)\include\sqlite&quot;;&quot;$(WebKitLibrariesDir)\include\JavaScriptCore&quot;;&quot;$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders&quot;;&quot;$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders\GNUCompatibility&quot;;&quot;$(ProjectDir)..\svg\animation&quot;"
- PreprocessorDefinitions="__WIN32__;WEBCORE_CONTEXT_MENUS;ENABLE_CHANNEL_MESSAGING;ENABLE_DATABASE;ENABLE_DATAGRID;ENABLE_DATALIST;ENABLE_DOM_STORAGE;ENABLE_EVENTSOURCE;ENABLE_ICONDATABASE;ENABLE_OFFLINE_WEB_APPLICATIONS;ENABLE_RUBY;ENABLE_SVG;ENABLE_SVG_ANIMATION;ENABLE_SVG_AS_IMAGE;ENABLE_SVG_FONTS;ENABLE_SVG_FOREIGN_OBJECT;ENABLE_SVG_USE;ENABLE_WEB_SOCKETS;ENABLE_WORKERS;ENABLE_XPATH;ENABLE_XSLT"
+ AdditionalIncludeDirectories="&quot;$(ProjectDir)..\&quot;;&quot;$(ProjectDir)..&quot;;&quot;$(ProjectDir)..\accessibility&quot;;&quot;$(ProjectDir)..\accessibility\win&quot;;&quot;$(ProjectDir)..\bridge&quot;;&quot;$(ProjectDir)..\bridge\c&quot;;&quot;$(ProjectDir)..\css&quot;;&quot;$(ProjectDir)..\editing&quot;;&quot;$(ProjectDir)..\rendering&quot;;&quot;$(ProjectDir)..\rendering\style&quot;;&quot;$(ProjectDir)..\bindings\js&quot;;&quot;$(ProjectDir)..\dom&quot;;&quot;$(ProjectDir)..\dom\default&quot;;&quot;$(ProjectDir)..\history&quot;;&quot;$(ProjectDir)..\html&quot;;&quot;$(ProjectDir)..\html\canvas&quot;;&quot;$(ProjectDir)..\inspector&quot;;&quot;$(ProjectDir)..\loader&quot;;&quot;$(ProjectDir)..\loader\appcache&quot;;&quot;$(ProjectDir)..\loader\archive&quot;;&quot;$(ProjectDir)..\loader\archive\cf&quot;;&quot;$(ProjectDir)..\loader\icon&quot;;&quot;$(ProjectDir)..\page&quot;;&quot;$(ProjectDir)..\page\animation&quot;;&quot;$(ProjectDir)..\page\win&quot;;&quot;$(ProjectDir)..\platform&quot;;&quot;$(ProjectDir)..\platform\animation&quot;;&quot;$(ProjectDir)..\platform\sql&quot;;&quot;$(ProjectDir)..\platform\win&quot;;&quot;$(ProjectDir)..\platform\network&quot;;&quot;$(ProjectDir)..\platform\network\win&quot;;&quot;$(ProjectDir)..\platform\cf&quot;;&quot;$(ProjectDir)..\platform\graphics&quot;;&quot;$(ProjectDir)..\platform\graphics\opentype&quot;;&quot;$(ProjectDir)..\platform\graphics\transforms&quot;;&quot;$(ProjectDir)..\platform\text&quot;;&quot;$(ProjectDir)..\platform\graphics\win&quot;;&quot;$(ProjectDir)..\xml&quot;;&quot;$(WebKitOutputDir)\obj\WebCore\DerivedSources&quot;;&quot;$(ProjectDir)..\plugins&quot;;&quot;$(ProjectDir)..\plugins\win&quot;;&quot;$(ProjectDir)..\svg\graphics&quot;;&quot;$(ProjectDir)..\svg\graphics\filters&quot;;&quot;$(ProjectDir)..\svg&quot;;&quot;$(ProjectDir)..\wml&quot;;&quot;$(ProjectDir)..\storage&quot;;&quot;$(ProjectDir)..\workers&quot;;&quot;$(WebKitOutputDir)\include&quot;;&quot;$(WebKitOutputDir)\include\private&quot;;&quot;$(WebKitOutputDir)\include\JavaScriptCore&quot;;&quot;$(WebKitOutputDir)\include\private\JavaScriptCore&quot;;&quot;$(ProjectDir)..\ForwardingHeaders&quot;;&quot;$(WebKitLibrariesDir)\include&quot;;&quot;$(WebKitLibrariesDir)\include\private&quot;;&quot;$(WebKitLibrariesDir)\include\private\JavaScriptCore&quot;;&quot;$(WebKitLibrariesDir)\include\icu&quot;;&quot;$(WebKitLibrariesDir)\include\iconv&quot;;&quot;$(WebKitLibrariesDir)\include\pthreads&quot;;&quot;$(WebKitLibrariesDir)\include\sqlite&quot;;&quot;$(WebKitLibrariesDir)\include\JavaScriptCore&quot;;&quot;$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders&quot;;&quot;$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders\GNUCompatibility&quot;;&quot;$(ProjectDir)..\svg\animation&quot;"
+ PreprocessorDefinitions="__WIN32__;WEBCORE_CONTEXT_MENUS;ENABLE_CHANNEL_MESSAGING;ENABLE_DATABASE;ENABLE_DATAGRID;ENABLE_DOM_STORAGE;ENABLE_ICONDATABASE;ENABLE_OFFLINE_WEB_APPLICATIONS;ENABLE_RUBY;ENABLE_SVG;ENABLE_SVG_ANIMATION;ENABLE_SVG_AS_IMAGE;ENABLE_SVG_FONTS;ENABLE_SVG_FOREIGN_OBJECT;ENABLE_SVG_USE;ENABLE_WEB_SOCKETS;ENABLE_WORKERS;ENABLE_XPATH;ENABLE_XSLT"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="WebCorePrefix.h"
ForcedIncludeFiles="WebCorePrefix.h"
@@ -19,6 +19,6 @@
/>
<Tool
Name="VCPreBuildEventTool"
- CommandLine="%SystemDrive%\cygwin\bin\which.exe bash&#x0D;&#x0A;if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH%&#x0D;&#x0A;cmd /c&#x0D;&#x0A;if exist &quot;$(WebKitOutputDir)\buildfailed&quot; grep XX$(ProjectName)XX &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;if errorlevel 1 exit 1&#x0D;&#x0A;echo XX$(ProjectName)XX &gt; &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;&#x0D;&#x0A;touch &quot;$(WebKitOutputDir)\tmp.cpp&quot;&#x0D;&#x0A;cl /analyze /nologo /c &quot;$(WebKitOutputDir)\tmp.cpp&quot; /Fo&quot;$(IntDir)\tmp.obj&quot; 2&gt;&amp;1 | findstr D9040&#x0D;&#x0A;if ERRORLEVEL 1 (set EnablePREfast=&quot;true&quot;) else (set EnablePREfast=&quot;false&quot;)&#x0D;&#x0A;if ERRORLEVEL 1 (set AnalyzeWithLargeStack=&quot;/analyze:65536&quot;) else (set AnalyzeWithLargeStack=&quot;&quot;)&#x0D;&#x0A;exit /b&#x0D;&#x0A;"
+ CommandLine="set PATH=%SystemDrive%\cygwin\bin;%PATH%&#x0D;&#x0A;if exist &quot;$(WebKitOutputDir)\buildfailed&quot; grep XX$(ProjectName)XX &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;if errorlevel 1 exit 1&#x0D;&#x0A;echo XX$(ProjectName)XX &gt; &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;&#x0D;&#x0A;touch &quot;$(WebKitOutputDir)\tmp.cpp&quot;&#x0D;&#x0A;cl /analyze /nologo /c &quot;$(WebKitOutputDir)\tmp.cpp&quot; /Fo&quot;$(IntDir)\tmp.obj&quot; 2&gt;&amp;1 | findstr D9040&#x0D;&#x0A;if ERRORLEVEL 1 (set EnablePREfast=&quot;true&quot;) else (set EnablePREfast=&quot;false&quot;)&#x0D;&#x0A;if ERRORLEVEL 1 (set AnalyzeWithLargeStack=&quot;/analyze:65536&quot;) else (set AnalyzeWithLargeStack=&quot;&quot;)&#x0D;&#x0A;exit /b&#x0D;&#x0A;"
/>
</VisualStudioPropertySheet>
diff --git a/WebCore/WebCore.vcproj/WebCoreGenerated.vcproj b/WebCore/WebCore.vcproj/WebCoreGenerated.vcproj
index 4a39032..a7e8f6f 100644
--- a/WebCore/WebCore.vcproj/WebCoreGenerated.vcproj
+++ b/WebCore/WebCore.vcproj/WebCoreGenerated.vcproj
@@ -22,8 +22,8 @@
>
<Tool
Name="VCNMakeTool"
- BuildCommandLine="%SystemDrive%\cygwin\bin\which.exe bash&#x0D;&#x0A;if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH%&#x0D;&#x0A;cmd /c&#x0D;&#x0A;if exist &quot;$(WebKitOutputDir)\buildfailed&quot; grep XX$(ProjectName)XX &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;if errorlevel 1 exit 1&#x0D;&#x0A;echo XX$(ProjectName)XX &gt; &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;&#x0D;&#x0A;bash build-generated-files.sh &quot;$(WebKitOutputDir)&quot; &quot;$(WebKitLibrariesDir)&quot;&#x0D;&#x0A;bash migrate-idls.sh &quot;$(WebKitOutputDir)/obj/WebKit/DOMInterfaces&quot;&#x0D;&#x0A;&#x0D;&#x0A;if exist &quot;$(WebKitOutputDir)\buildfailed&quot; del &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;"
- ReBuildCommandLine="echo XX$(ProjectName)XX &gt; &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;&#x0D;&#x0A;del /s /q &quot;$(WebKitOutputDir)\obj\WebCore\DerivedSources&quot;&#x0D;&#x0A;del /s /q &quot;$(WebKitOutputDir)\obj\WebKit\DOMInterfaces&quot;&#x0D;&#x0A;%SystemDrive%\cygwin\bin\which.exe bash&#x0D;&#x0A;if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH%&#x0D;&#x0A;cmd /c&#x0D;&#x0A;bash build-generated-files.sh &quot;$(WebKitOutputDir)&quot; &quot;$(WebKitLibrariesDir)&quot;&#x0D;&#x0A;bash migrate-idls.sh &quot;$(WebKitOutputDir)/obj/WebKit/DOMInterfaces&quot;&#x0D;&#x0A;&#x0D;&#x0A;if exist &quot;$(WebKitOutputDir)\buildfailed&quot; del &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;"
+ BuildCommandLine="set PATH=%SystemDrive%\cygwin\bin;%PATH%&#x0D;&#x0A;if exist &quot;$(WebKitOutputDir)\buildfailed&quot; grep XX$(ProjectName)XX &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;if errorlevel 1 exit 1&#x0D;&#x0A;echo XX$(ProjectName)XX &gt; &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;&#x0D;&#x0A;bash build-generated-files.sh &quot;$(WebKitOutputDir)&quot; &quot;$(WebKitLibrariesDir)&quot;&#x0D;&#x0A;bash migrate-idls.sh &quot;$(WebKitOutputDir)/obj/WebKit/DOMInterfaces&quot;&#x0D;&#x0A;&#x0D;&#x0A;if exist &quot;$(WebKitOutputDir)\buildfailed&quot; del &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;"
+ ReBuildCommandLine="echo XX$(ProjectName)XX &gt; &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;&#x0D;&#x0A;del /s /q &quot;$(WebKitOutputDir)\obj\WebCore\DerivedSources&quot;&#x0D;&#x0A;del /s /q &quot;$(WebKitOutputDir)\obj\WebKit\DOMInterfaces&quot;&#x0D;&#x0A;set PATH=%SystemDrive%\cygwin\bin;%PATH%&#x0D;&#x0A;bash build-generated-files.sh &quot;$(WebKitOutputDir)&quot; &quot;$(WebKitLibrariesDir)&quot;&#x0D;&#x0A;bash migrate-idls.sh &quot;$(WebKitOutputDir)/obj/WebKit/DOMInterfaces&quot;&#x0D;&#x0A;&#x0D;&#x0A;if exist &quot;$(WebKitOutputDir)\buildfailed&quot; del &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;"
CleanCommandLine="del /s /q &quot;$(WebKitOutputDir)\obj\WebCore\DerivedSources&quot;&#x0D;&#x0A;del /s /q &quot;$(WebKitOutputDir)\obj\WebKit\DOMInterfaces&quot;&#x0D;&#x0A;if exist &quot;$(WebKitOutputDir)\buildfailed&quot; del &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;"
Output=""
PreprocessorDefinitions=""
diff --git a/WebCore/WebCore.vcproj/build-generated-files.sh b/WebCore/WebCore.vcproj/build-generated-files.sh
index 46b8c7b..e4cbd45 100644
--- a/WebCore/WebCore.vcproj/build-generated-files.sh
+++ b/WebCore/WebCore.vcproj/build-generated-files.sh
@@ -71,5 +71,5 @@ mkdir -p "${BUILT_PRODUCTS_DIR}/DerivedSources"
cd "${BUILT_PRODUCTS_DIR}/DerivedSources"
export WebCore="${XSRCROOT}"
-export FEATURE_DEFINES="ENABLE_CHANNEL_MESSAGING ENABLE_DATABASE ENABLE_DATAGRID ENABLE_DATALIST ENABLE_DOM_STORAGE ENABLE_EVENTSOURCE ENABLE_ICONDATABASE ENABLE_JAVASCRIPT_DEBUGGER ENABLE_OFFLINE_WEB_APPLICATIONS ENABLE_RUBY ENABLE_SVG ENABLE_SVG_ANIMATION ENABLE_SVG_AS_IMAGE ENABLE_SVG_FONTS ENABLE_SVG_FOREIGN_OBJECT ENABLE_SVG_USE ENABLE_VIDEO ENABLE_WEB_SOCKETS ENABLE_WORKERS ENABLE_XPATH ENABLE_XSLT"
+export FEATURE_DEFINES="ENABLE_CHANNEL_MESSAGING ENABLE_DATABASE ENABLE_DATAGRID ENABLE_DOM_STORAGE ENABLE_ICONDATABASE ENABLE_JAVASCRIPT_DEBUGGER ENABLE_OFFLINE_WEB_APPLICATIONS ENABLE_RUBY ENABLE_SVG ENABLE_SVG_ANIMATION ENABLE_SVG_AS_IMAGE ENABLE_SVG_FONTS ENABLE_SVG_FOREIGN_OBJECT ENABLE_SVG_USE ENABLE_VIDEO ENABLE_WEB_SOCKETS ENABLE_WORKERS ENABLE_XPATH ENABLE_XSLT"
make -f "$WebCore/DerivedSources.make" -j ${NUMCPUS} || exit 1
diff --git a/WebCore/WebCore.xcodeproj/project.pbxproj b/WebCore/WebCore.xcodeproj/project.pbxproj
index e4d8124..96c4fc7 100644
--- a/WebCore/WebCore.xcodeproj/project.pbxproj
+++ b/WebCore/WebCore.xcodeproj/project.pbxproj
@@ -635,16 +635,6 @@
31C0FF4C0E4CEFDD007D6FE5 /* DOMWebKitTransitionEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 31C0FF460E4CEFDD007D6FE5 /* DOMWebKitTransitionEvent.h */; };
31C0FF4D0E4CEFDD007D6FE5 /* DOMWebKitTransitionEvent.mm in Sources */ = {isa = PBXBuildFile; fileRef = 31C0FF470E4CEFDD007D6FE5 /* DOMWebKitTransitionEvent.mm */; };
31C0FF4E0E4CEFDD007D6FE5 /* DOMWebKitTransitionEventInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 31C0FF480E4CEFDD007D6FE5 /* DOMWebKitTransitionEventInternal.h */; };
- 33503C9A10179A74003B47E1 /* NotificationPresenter.h in Headers */ = {isa = PBXBuildFile; fileRef = 33503C9910179A74003B47E1 /* NotificationPresenter.h */; settings = {ATTRIBUTES = (Private, ); }; };
- 33503CA310179AD7003B47E1 /* JSNotification.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 33503C9F10179AD7003B47E1 /* JSNotification.cpp */; };
- 33503CA410179AD7003B47E1 /* JSNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = 33503CA010179AD7003B47E1 /* JSNotification.h */; };
- 33503CA510179AD7003B47E1 /* JSNotificationCenter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 33503CA110179AD7003B47E1 /* JSNotificationCenter.cpp */; };
- 33503CA610179AD7003B47E1 /* JSNotificationCenter.h in Headers */ = {isa = PBXBuildFile; fileRef = 33503CA210179AD7003B47E1 /* JSNotificationCenter.h */; };
- 33503CC010179C1A003B47E1 /* JSDesktopNotificationsCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 33503CBF10179C1A003B47E1 /* JSDesktopNotificationsCustom.cpp */; };
- 33503CC71017A1B1003B47E1 /* Notification.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 33503CC61017A1B1003B47E1 /* Notification.cpp */; };
- 3390CA550FFC157B00921962 /* NotificationCenter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3390CA510FFC157B00921962 /* NotificationCenter.cpp */; };
- 3390CA560FFC157B00921962 /* NotificationCenter.h in Headers */ = {isa = PBXBuildFile; fileRef = 3390CA520FFC157B00921962 /* NotificationCenter.h */; };
- 3390CA580FFC157B00921962 /* NotificationContents.h in Headers */ = {isa = PBXBuildFile; fileRef = 3390CA540FFC157B00921962 /* NotificationContents.h */; };
371F4F400D25B9AF00ECE0D5 /* FontData.h in Headers */ = {isa = PBXBuildFile; fileRef = 371F4F3E0D25B9AF00ECE0D5 /* FontData.h */; settings = {ATTRIBUTES = (Private, ); }; };
371F4F410D25B9AF00ECE0D5 /* FontData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 371F4F3F0D25B9AF00ECE0D5 /* FontData.cpp */; };
371F4FFC0D25E7F300ECE0D5 /* SegmentedFontData.h in Headers */ = {isa = PBXBuildFile; fileRef = 371F4FFA0D25E7F300ECE0D5 /* SegmentedFontData.h */; };
@@ -685,7 +675,6 @@
4162A4581011464700DFF3ED /* JSDedicatedWorkerContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 4162A4561011464700DFF3ED /* JSDedicatedWorkerContext.h */; };
4167EBF5102962BA003D252A /* DefaultSharedWorkerRepository.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4167EBF3102962BA003D252A /* DefaultSharedWorkerRepository.cpp */; };
4167EBF6102962BA003D252A /* DefaultSharedWorkerRepository.h in Headers */ = {isa = PBXBuildFile; fileRef = 4167EBF4102962BA003D252A /* DefaultSharedWorkerRepository.h */; };
- 416E29A6102FA962007FC14E /* WorkerReportingProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 416E29A5102FA962007FC14E /* WorkerReportingProxy.h */; };
416E75BE0EDF8FD700360E1D /* ScriptCallStack.h in Headers */ = {isa = PBXBuildFile; fileRef = 416E75BC0EDF8FD700360E1D /* ScriptCallStack.h */; };
416E75BF0EDF8FD700360E1D /* ScriptCallStack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 416E75BD0EDF8FD700360E1D /* ScriptCallStack.cpp */; };
416E75CB0EDF90C700360E1D /* ScriptCallFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 416E75C90EDF90C700360E1D /* ScriptCallFrame.h */; };
@@ -976,7 +965,7 @@
6515EC910D9723FF0063D49A /* JSSVGAltGlyphElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6515EC8F0D9723FF0063D49A /* JSSVGAltGlyphElement.cpp */; };
6515EC920D9723FF0063D49A /* JSSVGAltGlyphElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 6515EC900D9723FF0063D49A /* JSSVGAltGlyphElement.h */; };
652FBBBC0DE27CB60001D386 /* JSDOMWindowCustom.h in Headers */ = {isa = PBXBuildFile; fileRef = 652FBBBB0DE27CB60001D386 /* JSDOMWindowCustom.h */; };
- 65488D6B0DD5A83D009D83B2 /* StringSourceProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 65488D6A0DD5A83D009D83B2 /* StringSourceProvider.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ 65488D6B0DD5A83D009D83B2 /* StringSourceProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 65488D6A0DD5A83D009D83B2 /* StringSourceProvider.h */; };
6550B69D099DF0270090D781 /* CDATASection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6550B693099DF0270090D781 /* CDATASection.cpp */; };
6550B69E099DF0270090D781 /* CDATASection.h in Headers */ = {isa = PBXBuildFile; fileRef = 6550B694099DF0270090D781 /* CDATASection.h */; };
6550B69F099DF0270090D781 /* CharacterData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6550B695099DF0270090D781 /* CharacterData.cpp */; };
@@ -2098,8 +2087,6 @@
938E65F709F0985D008A48EC /* JSHTMLElementWrapperFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 938E65F609F0985D008A48EC /* JSHTMLElementWrapperFactory.cpp */; };
938E666009F09B81008A48EC /* JSHTMLCanvasElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 938E665F09F09B81008A48EC /* JSHTMLCanvasElement.cpp */; };
938E666209F09B87008A48EC /* JSHTMLCanvasElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 938E666109F09B87008A48EC /* JSHTMLCanvasElement.h */; };
- 9392262D1032107B006E7D5D /* JSHTMLCanvasElementCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9392262C1032107B006E7D5D /* JSHTMLCanvasElementCustom.cpp */; };
- 9392262F10321084006E7D5D /* JSCSSRuleListCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9392262E10321084006E7D5D /* JSCSSRuleListCustom.cpp */; };
9392F1420AD185F400691BD4 /* RenderCounter.h in Headers */ = {isa = PBXBuildFile; fileRef = 9392F1410AD185F400691BD4 /* RenderCounter.h */; };
9392F1440AD185FE00691BD4 /* RenderCounter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9392F1430AD185FE00691BD4 /* RenderCounter.cpp */; };
9392F14C0AD1861B00691BD4 /* CounterNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 9392F14B0AD1861B00691BD4 /* CounterNode.h */; };
@@ -2149,6 +2136,7 @@
93EB169509F880B00091F8FF /* WebCoreSystemInterface.mm in Sources */ = {isa = PBXBuildFile; fileRef = 93EB169409F880B00091F8FF /* WebCoreSystemInterface.mm */; };
93EB169709F880C00091F8FF /* WebCoreSystemInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = 93EB169609F880C00091F8FF /* WebCoreSystemInterface.h */; settings = {ATTRIBUTES = (Private, ); }; };
93EB355F09E37FD600F43799 /* MouseEventWithHitTestResults.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93EB355E09E37FD600F43799 /* MouseEventWithHitTestResults.cpp */; };
+ 93EEC1FA09C2877700C515D1 /* DocPtr.h in Headers */ = {isa = PBXBuildFile; fileRef = 93EEC1E709C2877700C515D1 /* DocPtr.h */; settings = {ATTRIBUTES = (Private, ); }; };
93F198E508245E59001E9ABC /* HTMLDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = F523D23C02DE4396018635CA /* HTMLDocument.h */; settings = {ATTRIBUTES = (Private, ); }; };
93F198E608245E59001E9ABC /* HTMLElement.h in Headers */ = {isa = PBXBuildFile; fileRef = F523D23F02DE4396018635CA /* HTMLElement.h */; settings = {ATTRIBUTES = (Private, ); }; };
93F198EF08245E59001E9ABC /* HTMLParser.h in Headers */ = {isa = PBXBuildFile; fileRef = F523D25102DE4396018635CA /* HTMLParser.h */; };
@@ -3863,8 +3851,6 @@
B5A684240FFABEAA00D24689 /* SQLiteFileSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B5A684230FFABEAA00D24689 /* SQLiteFileSystem.cpp */; };
B6D39711103AF29D00A83BC7 /* MockGeolocationService.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6D39710103AF29D00A83BC7 /* MockGeolocationService.cpp */; };
B6D39715103AF2BB00A83BC7 /* MockGeolocationService.h in Headers */ = {isa = PBXBuildFile; fileRef = B6D39714103AF2BB00A83BC7 /* MockGeolocationService.h */; };
- B5C1123B102B6C4600096578 /* SQLTransactionCoordinator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B5C11239102B6C4600096578 /* SQLTransactionCoordinator.cpp */; };
- B5C1123C102B6C4600096578 /* SQLTransactionCoordinator.h in Headers */ = {isa = PBXBuildFile; fileRef = B5C1123A102B6C4600096578 /* SQLTransactionCoordinator.h */; };
BC00F0040E0A185500FD04E3 /* DOMFile.h in Headers */ = {isa = PBXBuildFile; fileRef = BC00EFFE0E0A185500FD04E3 /* DOMFile.h */; };
BC00F0050E0A185500FD04E3 /* DOMFile.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC00EFFF0E0A185500FD04E3 /* DOMFile.mm */; };
BC00F0060E0A185500FD04E3 /* DOMFileInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = BC00F0000E0A185500FD04E3 /* DOMFileInternal.h */; };
@@ -4386,7 +4372,7 @@
C55E38C010040D5D00A56BDB /* StorageNamespaceImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C55E38BC10040D5D00A56BDB /* StorageNamespaceImpl.cpp */; };
C6D74AD509AA282E000B0A52 /* ModifySelectionListLevel.h in Headers */ = {isa = PBXBuildFile; fileRef = C6D74AD309AA282E000B0A52 /* ModifySelectionListLevel.h */; };
C6D74AE409AA290A000B0A52 /* ModifySelectionListLevel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C6D74AE309AA290A000B0A52 /* ModifySelectionListLevel.cpp */; };
- CE54FD381016D9A6008B44C8 /* ScriptSourceProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = CE54FD371016D9A6008B44C8 /* ScriptSourceProvider.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ CE54FD381016D9A6008B44C8 /* ScriptSourceProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = CE54FD371016D9A6008B44C8 /* ScriptSourceProvider.h */; };
D05CED290A40BB2C00C5AF38 /* FormatBlockCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D05CED270A40BB2C00C5AF38 /* FormatBlockCommand.cpp */; };
D05CED2A0A40BB2C00C5AF38 /* FormatBlockCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = D05CED280A40BB2C00C5AF38 /* FormatBlockCommand.h */; };
D06C0D8F0CFD11460065F43F /* RemoveFormatCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = D06C0D8D0CFD11460065F43F /* RemoveFormatCommand.h */; };
@@ -4400,20 +4386,12 @@
D23CA55D0AB0EAAE005108A5 /* JSRangeException.h in Headers */ = {isa = PBXBuildFile; fileRef = D23CA55C0AB0EAAE005108A5 /* JSRangeException.h */; };
D23CA55F0AB0EAB6005108A5 /* JSRangeException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D23CA55E0AB0EAB6005108A5 /* JSRangeException.cpp */; };
D23CA56C0AB0EB8D005108A5 /* RangeException.h in Headers */ = {isa = PBXBuildFile; fileRef = D23CA56B0AB0EB8D005108A5 /* RangeException.h */; };
- D8B6152F1032495100C8554A /* Cookie.h in Headers */ = {isa = PBXBuildFile; fileRef = D8B6152E1032495100C8554A /* Cookie.h */; };
DB23C2CB0A508D29002489EB /* IndentOutdentCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DB23C2C90A508D29002489EB /* IndentOutdentCommand.cpp */; };
DB23C2CC0A508D29002489EB /* IndentOutdentCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = DB23C2CA0A508D29002489EB /* IndentOutdentCommand.h */; };
DD05FE0D0B8BA3C6009ACDFE /* WebCoreObjCExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = DD05FE0B0B8BA3C6009ACDFE /* WebCoreObjCExtras.h */; settings = {ATTRIBUTES = (Private, ); }; };
DD763BB20992C2C900740B8E /* libxml2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = DD763BB10992C2C900740B8E /* libxml2.dylib */; };
DD7CDF250A23CF9800069928 /* CSSUnknownRule.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E6CCE0A1989CA007FB8C5 /* CSSUnknownRule.h */; };
DDE63ED50B7D45A800226998 /* DOMTextEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 933A14750B7D1BAF00A53FFD /* DOMTextEvent.h */; };
- E0FEF372B17C53EAC1C1FBEE /* EventSource.h in Headers */ = {isa = PBXBuildFile; fileRef = E0FEF371B17C53EAC1C1FBEE /* EventSource.h */; };
- E0FEF372B27C53EAC1C1FBEE /* EventSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E0FEF371B27C53EAC1C1FBEE /* EventSource.cpp */; };
- E0FEF372B37C53EAC1C1FBEE /* JSEventSource.h in Headers */ = {isa = PBXBuildFile; fileRef = E0FEF371B37C53EAC1C1FBEE /* JSEventSource.h */; };
- E0FEF372B47C53EAC1C1FBEE /* JSEventSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E0FEF371B47C53EAC1C1FBEE /* JSEventSource.cpp */; };
- E0FEF372B57C53EAC1C1FBEE /* JSEventSourceCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E0FEF371B57C53EAC1C1FBEE /* JSEventSourceCustom.cpp */; };
- E0FEF372B67C53EAC1C1FBEE /* JSEventSourceConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = E0FEF371B67C53EAC1C1FBEE /* JSEventSourceConstructor.h */; };
- E0FEF372B77C53EAC1C1FBEE /* JSEventSourceConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E0FEF371B77C53EAC1C1FBEE /* JSEventSourceConstructor.cpp */; };
E107400D0E77BDC00033AF24 /* JSMessageChannel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E107400B0E77BDC00033AF24 /* JSMessageChannel.cpp */; };
E107400E0E77BDC00033AF24 /* JSMessageChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = E107400C0E77BDC00033AF24 /* JSMessageChannel.h */; };
E10743240E7835830033AF24 /* JSMessageChannelConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E10743230E7835830033AF24 /* JSMessageChannelConstructor.cpp */; };
@@ -4543,13 +4521,6 @@
ED501DC60B249F2900AE18D9 /* EditorMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = ED501DC50B249F2900AE18D9 /* EditorMac.mm */; };
EDE3A5000C7A430600956A37 /* ColorMac.h in Headers */ = {isa = PBXBuildFile; fileRef = EDE3A4FF0C7A430600956A37 /* ColorMac.h */; settings = {ATTRIBUTES = (Private, ); }; };
EDEC98030AED7E170059137F /* WebCorePrefix.h in Headers */ = {isa = PBXBuildFile; fileRef = EDEC98020AED7E170059137F /* WebCorePrefix.h */; };
- F5C041DA0FFCA7CE00839D4A /* HTMLDataListElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5C041D70FFCA7CE00839D4A /* HTMLDataListElement.cpp */; };
- F5C041DB0FFCA7CE00839D4A /* HTMLDataListElement.h in Headers */ = {isa = PBXBuildFile; fileRef = F5C041D80FFCA7CE00839D4A /* HTMLDataListElement.h */; };
- F5C041E30FFCA96D00839D4A /* DOMHTMLDataListElement.h in Headers */ = {isa = PBXBuildFile; fileRef = F5C041DE0FFCA96D00839D4A /* DOMHTMLDataListElement.h */; };
- F5C041E40FFCA96D00839D4A /* DOMHTMLDataListElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = F5C041DF0FFCA96D00839D4A /* DOMHTMLDataListElement.mm */; };
- F5C041E50FFCA96D00839D4A /* DOMHTMLDataListElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = F5C041E00FFCA96D00839D4A /* DOMHTMLDataListElementInternal.h */; };
- F5C041E60FFCA96D00839D4A /* JSHTMLDataListElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5C041E10FFCA96D00839D4A /* JSHTMLDataListElement.cpp */; };
- F5C041E70FFCA96D00839D4A /* JSHTMLDataListElement.h in Headers */ = {isa = PBXBuildFile; fileRef = F5C041E20FFCA96D00839D4A /* JSHTMLDataListElement.h */; };
F916C48D0DB510F80076CD83 /* JSXMLHttpRequestProgressEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F916C48B0DB510F80076CD83 /* JSXMLHttpRequestProgressEvent.cpp */; };
F916C48E0DB510F80076CD83 /* JSXMLHttpRequestProgressEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = F916C48C0DB510F80076CD83 /* JSXMLHttpRequestProgressEvent.h */; };
F9F0ED7A0DB50CA200D16DB9 /* XMLHttpRequestProgressEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = F9F0ED770DB50CA200D16DB9 /* XMLHttpRequestProgressEvent.h */; };
@@ -5663,19 +5634,6 @@
31C0FF460E4CEFDD007D6FE5 /* DOMWebKitTransitionEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMWebKitTransitionEvent.h; sourceTree = "<group>"; };
31C0FF470E4CEFDD007D6FE5 /* DOMWebKitTransitionEvent.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMWebKitTransitionEvent.mm; sourceTree = "<group>"; };
31C0FF480E4CEFDD007D6FE5 /* DOMWebKitTransitionEventInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMWebKitTransitionEventInternal.h; sourceTree = "<group>"; };
- 333F704E0FB49CA2008E12A6 /* Notification.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Notification.idl; path = notifications/Notification.idl; sourceTree = "<group>"; };
- 333F704F0FB49CA2008E12A6 /* Notification.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Notification.h; path = notifications/Notification.h; sourceTree = "<group>"; };
- 33503C9910179A74003B47E1 /* NotificationPresenter.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = NotificationPresenter.h; path = notifications/NotificationPresenter.h; sourceTree = "<group>"; };
- 33503C9F10179AD7003B47E1 /* JSNotification.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSNotification.cpp; sourceTree = "<group>"; };
- 33503CA010179AD7003B47E1 /* JSNotification.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSNotification.h; sourceTree = "<group>"; };
- 33503CA110179AD7003B47E1 /* JSNotificationCenter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSNotificationCenter.cpp; sourceTree = "<group>"; };
- 33503CA210179AD7003B47E1 /* JSNotificationCenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSNotificationCenter.h; sourceTree = "<group>"; };
- 33503CBF10179C1A003B47E1 /* JSDesktopNotificationsCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDesktopNotificationsCustom.cpp; sourceTree = "<group>"; };
- 33503CC61017A1B1003B47E1 /* Notification.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Notification.cpp; path = notifications/Notification.cpp; sourceTree = "<group>"; };
- 3390CA510FFC157B00921962 /* NotificationCenter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NotificationCenter.cpp; path = notifications/NotificationCenter.cpp; sourceTree = "<group>"; };
- 3390CA520FFC157B00921962 /* NotificationCenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NotificationCenter.h; path = notifications/NotificationCenter.h; sourceTree = "<group>"; };
- 3390CA530FFC157B00921962 /* NotificationCenter.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = NotificationCenter.idl; path = notifications/NotificationCenter.idl; sourceTree = "<group>"; };
- 3390CA540FFC157B00921962 /* NotificationContents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NotificationContents.h; path = notifications/NotificationContents.h; sourceTree = "<group>"; };
371F4F3E0D25B9AF00ECE0D5 /* FontData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FontData.h; sourceTree = "<group>"; };
371F4F3F0D25B9AF00ECE0D5 /* FontData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FontData.cpp; sourceTree = "<group>"; };
371F4FFA0D25E7F300ECE0D5 /* SegmentedFontData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SegmentedFontData.h; sourceTree = "<group>"; };
@@ -5717,7 +5675,6 @@
4162A4561011464700DFF3ED /* JSDedicatedWorkerContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDedicatedWorkerContext.h; sourceTree = "<group>"; };
4167EBF3102962BA003D252A /* DefaultSharedWorkerRepository.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DefaultSharedWorkerRepository.cpp; path = workers/DefaultSharedWorkerRepository.cpp; sourceTree = "<group>"; };
4167EBF4102962BA003D252A /* DefaultSharedWorkerRepository.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DefaultSharedWorkerRepository.h; path = workers/DefaultSharedWorkerRepository.h; sourceTree = "<group>"; };
- 416E29A5102FA962007FC14E /* WorkerReportingProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WorkerReportingProxy.h; path = workers/WorkerReportingProxy.h; sourceTree = "<group>"; };
416E75BC0EDF8FD700360E1D /* ScriptCallStack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptCallStack.h; sourceTree = "<group>"; };
416E75BD0EDF8FD700360E1D /* ScriptCallStack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptCallStack.cpp; sourceTree = "<group>"; };
416E75C90EDF90C700360E1D /* ScriptCallFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptCallFrame.h; sourceTree = "<group>"; };
@@ -7140,8 +7097,6 @@
938E662509F09956008A48EC /* HTMLCanvasElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLCanvasElement.idl; sourceTree = "<group>"; };
938E665F09F09B81008A48EC /* JSHTMLCanvasElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLCanvasElement.cpp; sourceTree = "<group>"; };
938E666109F09B87008A48EC /* JSHTMLCanvasElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSHTMLCanvasElement.h; sourceTree = "<group>"; };
- 9392262C1032107B006E7D5D /* JSHTMLCanvasElementCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLCanvasElementCustom.cpp; sourceTree = "<group>"; };
- 9392262E10321084006E7D5D /* JSCSSRuleListCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCSSRuleListCustom.cpp; sourceTree = "<group>"; };
9392F1410AD185F400691BD4 /* RenderCounter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderCounter.h; sourceTree = "<group>"; };
9392F1430AD185FE00691BD4 /* RenderCounter.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderCounter.cpp; sourceTree = "<group>"; };
9392F14B0AD1861B00691BD4 /* CounterNode.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CounterNode.h; sourceTree = "<group>"; };
@@ -7203,6 +7158,7 @@
93EB355E09E37FD600F43799 /* MouseEventWithHitTestResults.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MouseEventWithHitTestResults.cpp; sourceTree = "<group>"; };
93EEC1E509C2877700C515D1 /* Attr.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Attr.idl; sourceTree = "<group>"; };
93EEC1E609C2877700C515D1 /* CharacterData.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CharacterData.idl; sourceTree = "<group>"; };
+ 93EEC1E709C2877700C515D1 /* DocPtr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DocPtr.h; sourceTree = "<group>"; };
93EEC1E809C2877700C515D1 /* DocumentType.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DocumentType.idl; sourceTree = "<group>"; };
93EEC1E909C2877700C515D1 /* DOMImplementation.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DOMImplementation.idl; sourceTree = "<group>"; };
93EEC1EA09C2877700C515D1 /* Element.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Element.idl; sourceTree = "<group>"; };
@@ -8773,8 +8729,6 @@
B5A684230FFABEAA00D24689 /* SQLiteFileSystem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SQLiteFileSystem.cpp; path = sql/SQLiteFileSystem.cpp; sourceTree = "<group>"; };
B6D39710103AF29D00A83BC7 /* MockGeolocationService.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MockGeolocationService.cpp; sourceTree = "<group>"; };
B6D39714103AF2BB00A83BC7 /* MockGeolocationService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MockGeolocationService.h; sourceTree = "<group>"; };
- B5C11239102B6C4600096578 /* SQLTransactionCoordinator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SQLTransactionCoordinator.cpp; sourceTree = "<group>"; };
- B5C1123A102B6C4600096578 /* SQLTransactionCoordinator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SQLTransactionCoordinator.h; sourceTree = "<group>"; };
BC00EFFE0E0A185500FD04E3 /* DOMFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMFile.h; sourceTree = "<group>"; };
BC00EFFF0E0A185500FD04E3 /* DOMFile.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMFile.mm; sourceTree = "<group>"; };
BC00F0000E0A185500FD04E3 /* DOMFileInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMFileInternal.h; sourceTree = "<group>"; };
@@ -9347,19 +9301,10 @@
D23CA55C0AB0EAAE005108A5 /* JSRangeException.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSRangeException.h; sourceTree = "<group>"; };
D23CA55E0AB0EAB6005108A5 /* JSRangeException.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSRangeException.cpp; sourceTree = "<group>"; };
D23CA56B0AB0EB8D005108A5 /* RangeException.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RangeException.h; sourceTree = "<group>"; };
- D8B6152E1032495100C8554A /* Cookie.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Cookie.h; sourceTree = "<group>"; };
DB23C2C90A508D29002489EB /* IndentOutdentCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = IndentOutdentCommand.cpp; sourceTree = "<group>"; };
DB23C2CA0A508D29002489EB /* IndentOutdentCommand.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = IndentOutdentCommand.h; sourceTree = "<group>"; };
DD05FE0B0B8BA3C6009ACDFE /* WebCoreObjCExtras.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WebCoreObjCExtras.h; sourceTree = "<group>"; };
DD763BB10992C2C900740B8E /* libxml2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libxml2.dylib; path = /usr/lib/libxml2.dylib; sourceTree = "<absolute>"; };
- E0FEF371B07C53EAC1C1FBEE /* EventSource.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = EventSource.idl; sourceTree = "<group>"; };
- E0FEF371B17C53EAC1C1FBEE /* EventSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventSource.h; sourceTree = "<group>"; };
- E0FEF371B27C53EAC1C1FBEE /* EventSource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EventSource.cpp; sourceTree = "<group>"; };
- E0FEF371B37C53EAC1C1FBEE /* JSEventSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSEventSource.h; sourceTree = "<group>"; };
- E0FEF371B47C53EAC1C1FBEE /* JSEventSource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSEventSource.cpp; sourceTree = "<group>"; };
- E0FEF371B57C53EAC1C1FBEE /* JSEventSourceCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSEventSourceCustom.cpp; sourceTree = "<group>"; };
- E0FEF371B67C53EAC1C1FBEE /* JSEventSourceConstructor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSEventSourceConstructor.h; sourceTree = "<group>"; };
- E0FEF371B77C53EAC1C1FBEE /* JSEventSourceConstructor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSEventSourceConstructor.cpp; sourceTree = "<group>"; };
E107400B0E77BDC00033AF24 /* JSMessageChannel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMessageChannel.cpp; sourceTree = "<group>"; };
E107400C0E77BDC00033AF24 /* JSMessageChannel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSMessageChannel.h; sourceTree = "<group>"; };
E10743230E7835830033AF24 /* JSMessageChannelConstructor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMessageChannelConstructor.cpp; sourceTree = "<group>"; };
@@ -9526,14 +9471,6 @@
F587868402DE3B8601EA4122 /* Cursor.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = Cursor.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
F587869902DE3B8601EA4122 /* DeprecatedPtrList.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = DeprecatedPtrList.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
F58EF58E02DFDFB7018635CA /* WebCore.base.exp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.exports; path = WebCore.base.exp; sourceTree = "<group>"; tabWidth = 4; usesTabs = 0; };
- F5C041D70FFCA7CE00839D4A /* HTMLDataListElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLDataListElement.cpp; sourceTree = "<group>"; };
- F5C041D80FFCA7CE00839D4A /* HTMLDataListElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLDataListElement.h; sourceTree = "<group>"; };
- F5C041D90FFCA7CE00839D4A /* HTMLDataListElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLDataListElement.idl; sourceTree = "<group>"; };
- F5C041DE0FFCA96D00839D4A /* DOMHTMLDataListElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMHTMLDataListElement.h; sourceTree = "<group>"; };
- F5C041DF0FFCA96D00839D4A /* DOMHTMLDataListElement.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLDataListElement.mm; sourceTree = "<group>"; };
- F5C041E00FFCA96D00839D4A /* DOMHTMLDataListElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMHTMLDataListElementInternal.h; sourceTree = "<group>"; };
- F5C041E10FFCA96D00839D4A /* JSHTMLDataListElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLDataListElement.cpp; sourceTree = "<group>"; };
- F5C041E20FFCA96D00839D4A /* JSHTMLDataListElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSHTMLDataListElement.h; sourceTree = "<group>"; };
F5C2869302846DCD018635CA /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = "<absolute>"; };
F5C2869402846DCD018635CA /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; };
F5C2869502846DCD018635CA /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
@@ -9622,7 +9559,6 @@
93EEC1EC09C2877700C515D1 /* html */,
1C81B94D0E9732D900266E07 /* inspector */,
BCB16BFB0979C38700467741 /* loader */,
- 333F703D0FB49C16008E12A6 /* notifications */,
65BF02180974806300C43196 /* page */,
BCF1A5BA097832090061A123 /* platform */,
5DCF83690D59157800953BC6 /* plugins */,
@@ -9710,7 +9646,6 @@
A83B79120CCB003F000B0825 /* Events */,
A83B79080CCAFF2B000B0825 /* HTML */,
1C5FAECA0DCFD8C900D58F78 /* Inspector */,
- 33503C9C10179A9A003B47E1 /* Notifications */,
1AC226020DB69EA70089B669 /* Offline */,
A9D247F90D757E4100FDF959 /* Plugins */,
BC9854460CD3DA5F00069BC1 /* Ranges */,
@@ -9877,8 +9812,6 @@
1AE82EC90CAAE177002237AE /* storage */ = {
isa = PBXGroup;
children = (
- B5C11239102B6C4600096578 /* SQLTransactionCoordinator.cpp */,
- B5C1123A102B6C4600096578 /* SQLTransactionCoordinator.h */,
514185ED0CD65F0400763C99 /* ChangeVersionWrapper.cpp */,
514185EC0CD65F0400763C99 /* ChangeVersionWrapper.h */,
5196115E0CAC56570010A80C /* Database.cpp */,
@@ -10097,7 +10030,6 @@
2E43463D0F546A8200B0F1BA /* WorkerMessagingProxy.cpp */,
2E43463E0F546A8200B0F1BA /* WorkerMessagingProxy.h */,
2E43463F0F546A8200B0F1BA /* WorkerObjectProxy.h */,
- 416E29A5102FA962007FC14E /* WorkerReportingProxy.h */,
2E4346400F546A8200B0F1BA /* WorkerRunLoop.cpp */,
2E4346410F546A8200B0F1BA /* WorkerRunLoop.h */,
A7D6B3480F61104500B79FD1 /* WorkerScriptLoader.cpp */,
@@ -10127,32 +10059,6 @@
name = animation;
sourceTree = "<group>";
};
- 333F703D0FB49C16008E12A6 /* notifications */ = {
- isa = PBXGroup;
- children = (
- 33503CC61017A1B1003B47E1 /* Notification.cpp */,
- 33503C9910179A74003B47E1 /* NotificationPresenter.h */,
- 3390CA510FFC157B00921962 /* NotificationCenter.cpp */,
- 3390CA520FFC157B00921962 /* NotificationCenter.h */,
- 3390CA530FFC157B00921962 /* NotificationCenter.idl */,
- 3390CA540FFC157B00921962 /* NotificationContents.h */,
- 333F704E0FB49CA2008E12A6 /* Notification.idl */,
- 333F704F0FB49CA2008E12A6 /* Notification.h */,
- );
- name = notifications;
- sourceTree = "<group>";
- };
- 33503C9C10179A9A003B47E1 /* Notifications */ = {
- isa = PBXGroup;
- children = (
- 33503C9F10179AD7003B47E1 /* JSNotification.cpp */,
- 33503CA010179AD7003B47E1 /* JSNotification.h */,
- 33503CA110179AD7003B47E1 /* JSNotificationCenter.cpp */,
- 33503CA210179AD7003B47E1 /* JSNotificationCenter.h */,
- );
- name = Notifications;
- sourceTree = "<group>";
- };
449195900FBE175B00D9F824 /* Exports */ = {
isa = PBXGroup;
children = (
@@ -10651,9 +10557,6 @@
1AF326770D78B9440068F0C4 /* EditorClient.h */,
93C09A800B064F00005ABD4D /* EventHandler.cpp */,
93C09A520B064DB3005ABD4D /* EventHandler.h */,
- E0FEF371B27C53EAC1C1FBEE /* EventSource.cpp */,
- E0FEF371B17C53EAC1C1FBEE /* EventSource.h */,
- E0FEF371B07C53EAC1C1FBEE /* EventSource.idl */,
14993BE30B2F2B1C0050497F /* FocusController.cpp */,
14993BE40B2F2B1C0050497F /* FocusController.h */,
062287830B4DB322000C34DF /* FocusDirection.h */,
@@ -11422,8 +11325,6 @@
93F9B6540BA0F35E00854064 /* DOMHTMLCanvasElement.mm */,
85DF2F8C0AA3C88100AD64C5 /* DOMHTMLCollection.h */,
85DF2F8D0AA3C88100AD64C5 /* DOMHTMLCollection.mm */,
- F5C041DE0FFCA96D00839D4A /* DOMHTMLDataListElement.h */,
- F5C041DF0FFCA96D00839D4A /* DOMHTMLDataListElement.mm */,
85BA4CFD0AA688680088052D /* DOMHTMLDirectoryElement.h */,
85BA4CFE0AA688680088052D /* DOMHTMLDirectoryElement.mm */,
85BA4CFF0AA688680088052D /* DOMHTMLDivElement.h */,
@@ -11578,7 +11479,6 @@
85E711520AC5D5340053270F /* DOMHTMLButtonElementInternal.h */,
93F9B6550BA0F35E00854064 /* DOMHTMLCanvasElementInternal.h */,
85E711530AC5D5340053270F /* DOMHTMLCollectionInternal.h */,
- F5C041E00FFCA96D00839D4A /* DOMHTMLDataListElementInternal.h */,
85E711540AC5D5340053270F /* DOMHTMLDirectoryElementInternal.h */,
85E711550AC5D5340053270F /* DOMHTMLDivElementInternal.h */,
85E711560AC5D5340053270F /* DOMHTMLDListElementInternal.h */,
@@ -12006,9 +11906,6 @@
BC77CD410FEFE0C40070887B /* HTMLDataGridRowElement.cpp */,
BC77CCED0FEFDE6C0070887B /* HTMLDataGridRowElement.h */,
BC77CC6B0FEC3D5F0070887B /* HTMLDataGridRowElement.idl */,
- F5C041D70FFCA7CE00839D4A /* HTMLDataListElement.cpp */,
- F5C041D80FFCA7CE00839D4A /* HTMLDataListElement.h */,
- F5C041D90FFCA7CE00839D4A /* HTMLDataListElement.idl */,
A8EA79ED0A1916DF00A8EF5F /* HTMLDirectoryElement.cpp */,
A8EA79EE0A1916DF00A8EF5F /* HTMLDirectoryElement.h */,
1A85B1D90A1B23A400D8C87C /* HTMLDirectoryElement.idl */,
@@ -12291,8 +12188,6 @@
BC212A400FE83A1800EC3708 /* JSHTMLDataGridElement.h */,
BC77CD4C0FEFE1610070887B /* JSHTMLDataGridRowElement.cpp */,
BC77CD4D0FEFE1610070887B /* JSHTMLDataGridRowElement.h */,
- F5C041E10FFCA96D00839D4A /* JSHTMLDataListElement.cpp */,
- F5C041E20FFCA96D00839D4A /* JSHTMLDataListElement.h */,
1A85B1E00A1B240500D8C87C /* JSHTMLDirectoryElement.cpp */,
1A85B1E10A1B240500D8C87C /* JSHTMLDirectoryElement.h */,
1A85B2B40A1B2AC700D8C87C /* JSHTMLDivElement.cpp */,
@@ -13713,8 +13608,6 @@
BCBFB53B0DCD29CF0019B3E5 /* JSDOMWindowShell.h */,
93B70D4D09EB0C7C009D8468 /* JSEventListener.cpp */,
93B70D4E09EB0C7C009D8468 /* JSEventListener.h */,
- E0FEF371B67C53EAC1C1FBEE /* JSEventSourceConstructor.h */,
- E0FEF371B77C53EAC1C1FBEE /* JSEventSourceConstructor.cpp */,
BC60901E0E91B8EC000C68B5 /* JSEventTarget.cpp */,
BC60901D0E91B8EC000C68B5 /* JSEventTarget.h */,
9350E70C0E87500B00189FFF /* JSHTMLAllCollection.cpp */,
@@ -13850,7 +13743,6 @@
C0DFC86F0DB6841A003EAE7C /* JSConsoleCustom.cpp */,
FE700DD00F92D81A008E2BFE /* JSCoordinatesCustom.cpp */,
BC46C1ED0C0DDBDF0020CFC3 /* JSCSSRuleCustom.cpp */,
- 9392262E10321084006E7D5D /* JSCSSRuleListCustom.cpp */,
BC5825F20C0B89380053F1B5 /* JSCSSStyleDeclarationCustom.cpp */,
BC20FB7E0C0E8E6C00D1447F /* JSCSSValueCustom.cpp */,
FE80D7A20E9C1ED2000D6F75 /* JSCustomPositionCallback.cpp */,
@@ -13871,7 +13763,6 @@
1AE830420CAB0ED1002237AE /* JSDatabaseCustom.cpp */,
BC77D1510FF19C730070887B /* JSDataGridColumnListCustom.cpp */,
4162A453101145E300DFF3ED /* JSDedicatedWorkerContextCustom.cpp */,
- 33503CBF10179C1A003B47E1 /* JSDesktopNotificationsCustom.cpp */,
929264760B61FC7200B41D34 /* JSDocumentCustom.cpp */,
929264760B61FC7200B41D34 /* JSDocumentCustom.cpp */,
BC1DEA4E0E268EB60083A73F /* JSDocumentFragmentCustom.cpp */,
@@ -13881,11 +13772,9 @@
652FBBBB0DE27CB60001D386 /* JSDOMWindowCustom.h */,
BC2ED5540C6B9BD300920BFF /* JSElementCustom.cpp */,
BCEFAF4D0C317E6900FA81F6 /* JSEventCustom.cpp */,
- E0FEF371B57C53EAC1C1FBEE /* JSEventSourceCustom.cpp */,
FE80D7A60E9C1ED2000D6F75 /* JSGeolocationCustom.cpp */,
BCE7B1920D4E86960075A539 /* JSHistoryCustom.cpp */,
BC4EDEF30C08F3FB007EDD49 /* JSHTMLAppletElementCustom.cpp */,
- 9392262C1032107B006E7D5D /* JSHTMLCanvasElementCustom.cpp */,
BCCBAD3A0C18BFF800CE890F /* JSHTMLCollectionCustom.cpp */,
BCBCAE530FF1A29E000762AE /* JSHTMLDataGridElementCustom.cpp */,
BC51580A0C03D404008BB0EE /* JSHTMLDocumentCustom.cpp */,
@@ -14016,8 +13905,6 @@
BC5A86B40C3367E800EEA649 /* JSDOMSelection.h */,
1403BA0B09EB18C700797C7F /* JSDOMWindow.cpp */,
1403BA0E09EB18F800797C7F /* JSDOMWindow.h */,
- E0FEF371B37C53EAC1C1FBEE /* JSEventSource.h */,
- E0FEF371B47C53EAC1C1FBEE /* JSEventSource.cpp */,
BC94D14C0C275C68006BC617 /* JSHistory.cpp */,
BC94D14D0C275C68006BC617 /* JSHistory.h */,
BCE1C4390D9830D3003B02F2 /* JSLocation.cpp */,
@@ -14182,7 +14069,6 @@
93B6A0E70B0BCA6700F5027A /* ContextMenu.cpp */,
93B6A0E50B0BCA5C00F5027A /* ContextMenu.h */,
06027CAC0B1CBFC000884B2D /* ContextMenuItem.h */,
- D8B6152E1032495100C8554A /* Cookie.h */,
9352088109BD45E900F2038D /* CookieJar.h */,
2E4346560F546A9900B0F1BA /* CrossThreadCopier.cpp */,
2E4346570F546A9900B0F1BA /* CrossThreadCopier.h */,
@@ -14822,6 +14708,7 @@
A81872110977D3C0005826D9 /* ContainerNode.h */,
A8C4A7F809D563270003AC8D /* CSSMappedAttributeDeclaration.cpp */,
A8C4A7F709D563270003AC8D /* CSSMappedAttributeDeclaration.h */,
+ 93EEC1E709C2877700C515D1 /* DocPtr.h */,
A8185F3409765765005826D9 /* Document.cpp */,
A8185F3809765765005826D9 /* Document.h */,
6548E24809E1E04D00AF8020 /* Document.idl */,
@@ -15222,6 +15109,7 @@
93F1996D08245E59001E9ABC /* DeprecatedPtrListImpl.h in Headers */,
B2F34FE60E82F81400F627CD /* DNS.h in Headers */,
BCB16C2A0979C3BD00467741 /* DocLoader.h in Headers */,
+ 93EEC1FA09C2877700C515D1 /* DocPtr.h in Headers */,
A8185F4009765766005826D9 /* Document.h in Headers */,
A8185F3D09765766005826D9 /* DocumentFragment.h in Headers */,
656D37360ADBA5DE00A4554D /* DocumentLoader.h in Headers */,
@@ -15327,8 +15215,6 @@
93F9B6580BA0F35E00854064 /* DOMHTMLCanvasElementInternal.h in Headers */,
85DF2F8E0AA3C88100AD64C5 /* DOMHTMLCollection.h in Headers */,
85E711A20AC5D5350053270F /* DOMHTMLCollectionInternal.h in Headers */,
- F5C041E30FFCA96D00839D4A /* DOMHTMLDataListElement.h in Headers */,
- F5C041E50FFCA96D00839D4A /* DOMHTMLDataListElementInternal.h in Headers */,
85BA4D0B0AA688680088052D /* DOMHTMLDirectoryElement.h in Headers */,
85E711A30AC5D5350053270F /* DOMHTMLDirectoryElementInternal.h in Headers */,
85BA4D0D0AA688680088052D /* DOMHTMLDivElement.h in Headers */,
@@ -15986,7 +15872,6 @@
935FBC4509BA00B900E230B1 /* EventListener.h in Headers */,
1CA19E160DC255CA0065A994 /* EventLoop.h in Headers */,
939885C408B7E3D100E707C4 /* EventNames.h in Headers */,
- E0FEF372B17C53EAC1C1FBEE /* EventSource.h in Headers */,
E12EDB7B0B308A78002704B6 /* EventTarget.h in Headers */,
BC60D8F30D2A11E000B9918F /* ExceptionBase.h in Headers */,
935FBCF209BA143B00E230B1 /* ExceptionCode.h in Headers */,
@@ -16083,7 +15968,6 @@
BC77CB870FEBF5AF0070887B /* HTMLDataGridColElement.h in Headers */,
BC212A1F0FE8333200EC3708 /* HTMLDataGridElement.h in Headers */,
BC77CCEE0FEFDE6C0070887B /* HTMLDataGridRowElement.h in Headers */,
- F5C041DB0FFCA7CE00839D4A /* HTMLDataListElement.h in Headers */,
A8EA79FA0A1916DF00A8EF5F /* HTMLDirectoryElement.h in Headers */,
A8EA7CB70A192B9C00A8EF5F /* HTMLDivElement.h in Headers */,
A8EA79F70A1916DF00A8EF5F /* HTMLDListElement.h in Headers */,
@@ -16273,8 +16157,6 @@
14E8378E09F85D4F00B85AE4 /* JSEvent.h in Headers */,
BC60D9C00D2A269A00B9918F /* JSEventException.h in Headers */,
93B70D6A09EB0C7C009D8468 /* JSEventListener.h in Headers */,
- E0FEF372B37C53EAC1C1FBEE /* JSEventSource.h in Headers */,
- E0FEF372B67C53EAC1C1FBEE /* JSEventSourceConstructor.h in Headers */,
BC60901F0E91B8EC000C68B5 /* JSEventTarget.h in Headers */,
BC00F0150E0A189500FD04E3 /* JSFile.h in Headers */,
BC00F0170E0A189500FD04E3 /* JSFileList.h in Headers */,
@@ -16298,7 +16180,6 @@
BC77CBD40FEBF8310070887B /* JSHTMLDataGridColElement.h in Headers */,
BC212A420FE83A1800EC3708 /* JSHTMLDataGridElement.h in Headers */,
BC77CD4F0FEFE1610070887B /* JSHTMLDataGridRowElement.h in Headers */,
- F5C041E70FFCA96D00839D4A /* JSHTMLDataListElement.h in Headers */,
1A85B1E70A1B240500D8C87C /* JSHTMLDirectoryElement.h in Headers */,
1A85B2B70A1B2AC700D8C87C /* JSHTMLDivElement.h in Headers */,
1A85B1E90A1B240500D8C87C /* JSHTMLDListElement.h in Headers */,
@@ -16380,8 +16261,6 @@
1A750D8E0A90E521000FF215 /* JSNodeIterator.h in Headers */,
BCD9C2C30C17B69E005C90A2 /* JSNodeList.h in Headers */,
65DF31FE09D1CC60000BE325 /* JSNotation.h in Headers */,
- 33503CA410179AD7003B47E1 /* JSNotification.h in Headers */,
- 33503CA610179AD7003B47E1 /* JSNotificationCenter.h in Headers */,
A826E8AE0A1A8F2300CD1BB6 /* JSOptionConstructor.h in Headers */,
1A0D57410A5C7867007EDD4C /* JSOverflowEvent.h in Headers */,
A9D247FF0D757E6900FDF959 /* JSPlugin.h in Headers */,
@@ -16654,9 +16533,6 @@
63D7B32D0E78CD3F00F7617C /* NodeRenderStyle.h in Headers */,
9382AAB40D8C386100F357A6 /* NodeWithIndex.h in Headers */,
A8EA7EBE0A1945D000A8EF5F /* Notation.h in Headers */,
- 3390CA560FFC157B00921962 /* NotificationCenter.h in Headers */,
- 3390CA580FFC157B00921962 /* NotificationContents.h in Headers */,
- 33503C9A10179A74003B47E1 /* NotificationPresenter.h in Headers */,
1A569D0B0D7E2B82007C3983 /* NP_jsobject.h in Headers */,
1A569D0C0D7E2B82007C3983 /* npapi.h in Headers */,
1A219B3B0DCA87AB0040E3A0 /* npfunctions.h in Headers */,
@@ -17316,9 +17192,6 @@
49484FCB102CF23C00187DD3 /* CanvasRenderingContext2D.h in Headers */,
49484FCE102CF23C00187DD3 /* CanvasStyle.h in Headers */,
B6D39715103AF2BB00A83BC7 /* MockGeolocationService.h in Headers */,
- 416E29A6102FA962007FC14E /* WorkerReportingProxy.h in Headers */,
- B5C1123C102B6C4600096578 /* SQLTransactionCoordinator.h in Headers */,
- D8B6152F1032495100C8554A /* Cookie.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -17808,7 +17681,6 @@
85BA4CDE0AA6861B0088052D /* DOMHTMLButtonElement.mm in Sources */,
93F9B6570BA0F35E00854064 /* DOMHTMLCanvasElement.mm in Sources */,
85DF2F8F0AA3C88100AD64C5 /* DOMHTMLCollection.mm in Sources */,
- F5C041E40FFCA96D00839D4A /* DOMHTMLDataListElement.mm in Sources */,
85BA4D0C0AA688680088052D /* DOMHTMLDirectoryElement.mm in Sources */,
85BA4D0E0AA688680088052D /* DOMHTMLDivElement.mm in Sources */,
85BA4D100AA688680088052D /* DOMHTMLDListElement.mm in Sources */,
@@ -18055,7 +17927,6 @@
93C09A7F0B064EEF005ABD4D /* EventHandlerMac.mm in Sources */,
1CA19E050DC255950065A994 /* EventLoopMac.mm in Sources */,
939885C308B7E3D100E707C4 /* EventNames.cpp in Sources */,
- E0FEF372B27C53EAC1C1FBEE /* EventSource.cpp in Sources */,
E12EDBEA0B308E0B002704B6 /* EventTarget.cpp in Sources */,
BC60D8F20D2A11E000B9918F /* ExceptionBase.cpp in Sources */,
93831B570D087D6000E5C984 /* ExceptionCode.cpp in Sources */,
@@ -18152,7 +18023,6 @@
BC77CBAA0FEBF6C90070887B /* HTMLDataGridColElement.cpp in Sources */,
BCF524600FEBEE5D0095BF26 /* HTMLDataGridElement.cpp in Sources */,
BC77CD420FEFE0C40070887B /* HTMLDataGridRowElement.cpp in Sources */,
- F5C041DA0FFCA7CE00839D4A /* HTMLDataListElement.cpp in Sources */,
A8EA79F90A1916DF00A8EF5F /* HTMLDirectoryElement.cpp in Sources */,
A8EA7CB10A192B9C00A8EF5F /* HTMLDivElement.cpp in Sources */,
A8EA79F50A1916DF00A8EF5F /* HTMLDListElement.cpp in Sources */,
@@ -18336,7 +18206,6 @@
BCBCAE3C0FF19399000762AE /* JSDataGridDataSource.cpp in Sources */,
4162A4571011464700DFF3ED /* JSDedicatedWorkerContext.cpp in Sources */,
4162A454101145E300DFF3ED /* JSDedicatedWorkerContextCustom.cpp in Sources */,
- 33503CC010179C1A003B47E1 /* JSDesktopNotificationsCustom.cpp in Sources */,
659DDC8209E198BA001BF3C6 /* JSDocument.cpp in Sources */,
929264770B61FC7200B41D34 /* JSDocumentCustom.cpp in Sources */,
1A494EDE0A123F4C00FDAFC1 /* JSDocumentFragment.cpp in Sources */,
@@ -18363,9 +18232,6 @@
BCEFAF4E0C317E6900FA81F6 /* JSEventCustom.cpp in Sources */,
BC60D9BF0D2A269A00B9918F /* JSEventException.cpp in Sources */,
93B70D6909EB0C7C009D8468 /* JSEventListener.cpp in Sources */,
- E0FEF372B47C53EAC1C1FBEE /* JSEventSource.cpp in Sources */,
- E0FEF372B77C53EAC1C1FBEE /* JSEventSourceConstructor.cpp in Sources */,
- E0FEF372B57C53EAC1C1FBEE /* JSEventSourceCustom.cpp in Sources */,
BC6090200E91B8EC000C68B5 /* JSEventTarget.cpp in Sources */,
BC00F0140E0A189500FD04E3 /* JSFile.cpp in Sources */,
BC00F0160E0A189500FD04E3 /* JSFileList.cpp in Sources */,
@@ -18394,7 +18260,6 @@
BC212A410FE83A1800EC3708 /* JSHTMLDataGridElement.cpp in Sources */,
BCBCAE540FF1A29E000762AE /* JSHTMLDataGridElementCustom.cpp in Sources */,
BC77CD4E0FEFE1610070887B /* JSHTMLDataGridRowElement.cpp in Sources */,
- F5C041E60FFCA96D00839D4A /* JSHTMLDataListElement.cpp in Sources */,
1A85B1E60A1B240500D8C87C /* JSHTMLDirectoryElement.cpp in Sources */,
1A85B2B60A1B2AC700D8C87C /* JSHTMLDivElement.cpp in Sources */,
1A85B1E80A1B240500D8C87C /* JSHTMLDListElement.cpp in Sources */,
@@ -18500,8 +18365,6 @@
BCD9C2C20C17B69E005C90A2 /* JSNodeList.cpp in Sources */,
BCD9C2650C17AA67005C90A2 /* JSNodeListCustom.cpp in Sources */,
65DF31FD09D1CC60000BE325 /* JSNotation.cpp in Sources */,
- 33503CA310179AD7003B47E1 /* JSNotification.cpp in Sources */,
- 33503CA510179AD7003B47E1 /* JSNotificationCenter.cpp in Sources */,
A826EC480A1B0CBE00CD1BB6 /* JSOptionConstructor.cpp in Sources */,
1A0D57400A5C7867007EDD4C /* JSOverflowEvent.cpp in Sources */,
A9D247FE0D757E6900FDF959 /* JSPlugin.cpp in Sources */,
@@ -18791,8 +18654,6 @@
854FE7320A2297BE0058D7AD /* NodeFilterCondition.cpp in Sources */,
854FE7340A2297BE0058D7AD /* NodeIterator.cpp in Sources */,
A8EA7EBF0A1945D000A8EF5F /* Notation.cpp in Sources */,
- 33503CC71017A1B1003B47E1 /* Notification.cpp in Sources */,
- 3390CA550FFC157B00921962 /* NotificationCenter.cpp in Sources */,
1A569D0A0D7E2B82007C3983 /* NP_jsobject.cpp in Sources */,
1A569D0D0D7E2B82007C3983 /* npruntime.cpp in Sources */,
1A569D130D7E2B82007C3983 /* objc_class.mm in Sources */,
@@ -19383,9 +19244,6 @@
49484FCA102CF23C00187DD3 /* CanvasRenderingContext2D.cpp in Sources */,
49484FCD102CF23C00187DD3 /* CanvasStyle.cpp in Sources */,
B6D39711103AF29D00A83BC7 /* MockGeolocationService.cpp in Sources */,
- 9392262D1032107B006E7D5D /* JSHTMLCanvasElementCustom.cpp in Sources */,
- 9392262F10321084006E7D5D /* JSCSSRuleListCustom.cpp in Sources */,
- B5C1123B102B6C4600096578 /* SQLTransactionCoordinator.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
diff --git a/WebCore/WebCorePrefix.h b/WebCore/WebCorePrefix.h
index 6c8e200..c0d1e70 100644
--- a/WebCore/WebCorePrefix.h
+++ b/WebCore/WebCorePrefix.h
@@ -113,13 +113,6 @@
#include <stdio.h>
#else
#include <CoreServices/CoreServices.h>
-
-#if defined(WIN32) || defined(_WIN32)
-/* Including CoreServices.h on Windows doesn't include CFNetwork.h, so we do
- it explicitly here to make Windows more consistent with Mac. */
-#include <CFNetwork/CFNetwork.h>
-#endif
-
#endif
#endif
@@ -132,11 +125,8 @@
#define delete ("if you use new/delete make sure to include config.h at the top of the file"())
#endif
-/* When C++ exceptions are disabled, the C++ library defines |try| and |catch|
- * to allow C++ code that expects exceptions to build. These definitions
- * interfere with Objective-C++ uses of Objective-C exception handlers, which
- * use |@try| and |@catch|. As a workaround, undefine these macros. */
-#ifdef __OBJC__
+/* Work around a bug with C++ library that screws up Objective-C++ when exception support is disabled. */
+#if defined(__APPLE__)
#undef try
#undef catch
#endif
diff --git a/WebCore/WebCoreSources.bkl b/WebCore/WebCoreSources.bkl
index a40c2b1..a9a1b42 100644
--- a/WebCore/WebCoreSources.bkl
+++ b/WebCore/WebCoreSources.bkl
@@ -60,7 +60,6 @@ This file contains the list of files needed to build WebCore.
bindings/js/JSClipboardCustom.cpp
bindings/js/JSConsoleCustom.cpp
bindings/js/JSCSSRuleCustom.cpp
- bindings/js/JSCSSRuleListCustom.cpp
bindings/js/JSCSSStyleDeclarationCustom.cpp
bindings/js/JSCSSValueCustom.cpp
bindings/js/JSCoordinatesCustom.cpp
@@ -86,14 +85,11 @@ This file contains the list of files needed to build WebCore.
bindings/js/JSDocumentFragmentCustom.cpp
bindings/js/JSElementCustom.cpp
bindings/js/JSEventCustom.cpp
- bindings/js/JSEventSourceConstructor.cpp
- bindings/js/JSEventSourceCustom.cpp
bindings/js/JSEventTarget.cpp
bindings/js/JSGeolocationCustom.cpp
bindings/js/JSHTMLAllCollection.cpp
bindings/js/JSHistoryCustom.cpp
bindings/js/JSHTMLAppletElementCustom.cpp
- bindings/js/JSHTMLCanvasElementCustom.cpp
bindings/js/JSHTMLCollectionCustom.cpp
bindings/js/JSHTMLDataGridElementCustom.cpp
bindings/js/JSHTMLDocumentCustom.cpp
@@ -287,7 +283,6 @@ This file contains the list of files needed to build WebCore.
DerivedSources/WebCore/JSEntityReference.cpp
DerivedSources/WebCore/JSErrorEvent.cpp
DerivedSources/WebCore/JSEvent.cpp
- DerivedSources/WebCore/JSEventSource.cpp
DerivedSources/WebCore/JSEventException.cpp
DerivedSources/WebCore/JSFile.cpp
DerivedSources/WebCore/JSFileList.cpp
@@ -308,7 +303,6 @@ This file contains the list of files needed to build WebCore.
DerivedSources/WebCore/JSHTMLDataGridCellElement.cpp
DerivedSources/WebCore/JSHTMLDataGridColElement.cpp
DerivedSources/WebCore/JSHTMLDataGridRowElement.cpp
- DerivedSources/WebCore/JSHTMLDataListElement.cpp
DerivedSources/WebCore/JSHTMLDListElement.cpp
DerivedSources/WebCore/JSHTMLDirectoryElement.cpp
DerivedSources/WebCore/JSHTMLDivElement.cpp
@@ -598,7 +592,6 @@ This file contains the list of files needed to build WebCore.
html/HTMLDataGridCellElement.cpp
html/HTMLDataGridColElement.cpp
html/HTMLDataGridRowElement.cpp
- html/HTMLDataListElement.cpp
html/HTMLDListElement.cpp
html/HTMLDirectoryElement.cpp
html/HTMLDivElement.cpp
@@ -754,7 +747,6 @@ This file contains the list of files needed to build WebCore.
page/DOMWindow.cpp
page/DragController.cpp
page/EventHandler.cpp
- page/EventSource.cpp
page/FocusController.cpp
page/Frame.cpp
page/FrameTree.cpp
@@ -843,7 +835,6 @@ This file contains the list of files needed to build WebCore.
platform/graphics/GraphicsContext.cpp
platform/graphics/GraphicsTypes.cpp
platform/graphics/Image.cpp
- platform/graphics/ImageSource.cpp
platform/graphics/IntRect.cpp
platform/graphics/Path.cpp
platform/graphics/PathTraversalState.cpp
diff --git a/WebCore/accessibility/AXObjectCache.cpp b/WebCore/accessibility/AXObjectCache.cpp
index db57f3b..0b758e6 100644
--- a/WebCore/accessibility/AXObjectCache.cpp
+++ b/WebCore/accessibility/AXObjectCache.cpp
@@ -43,11 +43,8 @@
#include "AccessibilityTableColumn.h"
#include "AccessibilityTableHeaderContainer.h"
#include "AccessibilityTableRow.h"
-#include "FocusController.h"
-#include "Frame.h"
-#include "HTMLNames.h"
#include "InputElement.h"
-#include "Page.h"
+#include "HTMLNames.h"
#include "RenderObject.h"
#include "RenderView.h"
@@ -60,9 +57,8 @@ using namespace HTMLNames;
bool AXObjectCache::gAccessibilityEnabled = false;
bool AXObjectCache::gAccessibilityEnhancedUserInterfaceEnabled = false;
-AXObjectCache::AXObjectCache(const Document* document)
+AXObjectCache::AXObjectCache()
: m_notificationPostTimer(this, &AXObjectCache::notificationPostTimerFired)
- , m_document(document)
{
}
@@ -77,32 +73,6 @@ AXObjectCache::~AXObjectCache()
}
}
-AccessibilityObject* AXObjectCache::focusedUIElementForPage(const Page* page)
-{
- // get the focused node in the page
- Document* focusedDocument = page->focusController()->focusedOrMainFrame()->document();
- Node* focusedNode = focusedDocument->focusedNode();
- if (!focusedNode)
- focusedNode = focusedDocument;
-
- RenderObject* focusedNodeRenderer = focusedNode->renderer();
- if (!focusedNodeRenderer)
- return 0;
-
- AccessibilityObject* obj = focusedNodeRenderer->document()->axObjectCache()->getOrCreate(focusedNodeRenderer);
-
- if (obj->shouldFocusActiveDescendant()) {
- if (AccessibilityObject* descendant = obj->activeDescendant())
- obj = descendant;
- }
-
- // the HTML element, for example, is focusable but has an AX object that is ignored
- if (obj->accessibilityIsIgnored())
- obj = obj->parentObjectUnignored();
-
- return obj;
-}
-
AccessibilityObject* AXObjectCache::get(RenderObject* renderer)
{
if (!renderer)
@@ -243,23 +213,6 @@ void AXObjectCache::remove(RenderObject* renderer)
m_renderObjectMapping.remove(renderer);
}
-#if !PLATFORM(WIN)
-AXID AXObjectCache::platformGenerateAXID() const
-{
- static AXID lastUsedID = 0;
-
- // Generate a new ID.
- AXID objID = lastUsedID;
- do {
- ++objID;
- } while (objID == 0 || HashTraits<AXID>::isDeletedValue(objID) || m_idsInUse.contains(objID));
-
- lastUsedID = objID;
-
- return objID;
-}
-#endif
-
AXID AXObjectCache::getAXID(AccessibilityObject* obj)
{
// check for already-assigned ID
@@ -268,10 +221,15 @@ AXID AXObjectCache::getAXID(AccessibilityObject* obj)
ASSERT(m_idsInUse.contains(objID));
return objID;
}
-
- objID = platformGenerateAXID();
-
+
+ // generate a new ID
+ static AXID lastUsedID = 0;
+ objID = lastUsedID;
+ do
+ ++objID;
+ while (objID == 0 || HashTraits<AXID>::isDeletedValue(objID) || m_idsInUse.contains(objID));
m_idsInUse.add(objID);
+ lastUsedID = objID;
obj->setAXObjectID(objID);
return objID;
diff --git a/WebCore/accessibility/AXObjectCache.h b/WebCore/accessibility/AXObjectCache.h
index 96ded44..7a808dd 100644
--- a/WebCore/accessibility/AXObjectCache.h
+++ b/WebCore/accessibility/AXObjectCache.h
@@ -42,12 +42,13 @@ class WebCoreTextMarker;
namespace WebCore {
- class Document;
- class Node;
- class Page;
class RenderObject;
class String;
class VisiblePosition;
+ class AccessibilityObject;
+ class Node;
+
+ typedef unsigned AXID;
struct TextMarkerData {
AXID axID;
@@ -58,11 +59,9 @@ namespace WebCore {
class AXObjectCache {
public:
- AXObjectCache(const Document*);
+ AXObjectCache();
~AXObjectCache();
-
- static AccessibilityObject* focusedUIElementForPage(const Page*);
-
+
// to be used with render objects
AccessibilityObject* getOrCreate(RenderObject*);
@@ -95,13 +94,11 @@ namespace WebCore {
void removeAXID(AccessibilityObject*);
bool isIDinUse(AXID id) const { return m_idsInUse.contains(id); }
- AXID platformGenerateAXID() const;
- AccessibilityObject* objectFromAXID(AXID id) const { return m_objects.get(id).get(); }
// Text marker utilities.
static void textMarkerDataForVisiblePosition(TextMarkerData&, const VisiblePosition&);
static VisiblePosition visiblePositionForTextMarkerData(TextMarkerData&);
-
+
private:
HashMap<AXID, RefPtr<AccessibilityObject> > m_objects;
HashMap<RenderObject*, AXID> m_renderObjectMapping;
@@ -116,8 +113,6 @@ namespace WebCore {
AXID getAXID(AccessibilityObject*);
bool nodeIsAriaType(Node* node, String role);
-
- const Document* m_document;
};
#if !HAVE(ACCESSIBILITY)
diff --git a/WebCore/accessibility/AccessibilityObject.cpp b/WebCore/accessibility/AccessibilityObject.cpp
index 4fb4e3a..d6fd969 100644
--- a/WebCore/accessibility/AccessibilityObject.cpp
+++ b/WebCore/accessibility/AccessibilityObject.cpp
@@ -41,7 +41,6 @@
#include "NotImplemented.h"
#include "Page.h"
#include "RenderImage.h"
-#include "RenderListItem.h"
#include "RenderListMarker.h"
#include "RenderMenuList.h"
#include "RenderTextControl.h"
@@ -364,49 +363,6 @@ static bool replacedNodeNeedsCharacter(Node* replacedNode)
return true;
}
-// Finds a RenderListItem parent give a node.
-RenderListItem* AccessibilityObject::renderListItemContainerForNode(Node* node) const
-{
- for (Node* stringNode = node; stringNode; stringNode = stringNode->parent()) {
- RenderObject* renderObject = stringNode->renderer();
- if (!renderObject || !renderObject->isListItem())
- continue;
-
- return toRenderListItem(renderObject);
- }
-
- return 0;
-}
-
-// Returns the text associated with a list marker if this node is contained within a list item.
-String AccessibilityObject::listMarkerTextForNodeAndPosition(Node* node, const VisiblePosition& visiblePositionStart) const
-{
- // If the range does not contain the start of the line, the list marker text should not be included.
- if (!isStartOfLine(visiblePositionStart))
- return String();
-
- RenderListItem* listItem = renderListItemContainerForNode(node);
- if (!listItem)
- return String();
-
- // If this is in a list item, we need to manually add the text for the list marker
- // because a RenderListMarker does not have a Node equivalent and thus does not appear
- // when iterating text.
- const String& markerText = listItem->markerText();
- if (markerText.isEmpty())
- return String();
-
- // Append text, plus the period that follows the text.
- // FIXME: Not all list marker styles are followed by a period, but this
- // sounds much better when there is a synthesized pause because of a period.
- Vector<UChar> resultVector;
- resultVector.append(markerText.characters(), markerText.length());
- resultVector.append('.');
- resultVector.append(' ');
-
- return String::adopt(resultVector);
-}
-
String AccessibilityObject::stringForVisiblePositionRange(const VisiblePositionRange& visiblePositionRange) const
{
if (visiblePositionRange.isNull())
@@ -417,11 +373,6 @@ String AccessibilityObject::stringForVisiblePositionRange(const VisiblePositionR
for (TextIterator it(range.get()); !it.atEnd(); it.advance()) {
// non-zero length means textual node, zero length means replaced node (AKA "attachments" in AX)
if (it.length() != 0) {
- // Add a textual representation for list marker text
- String listMarkerText = listMarkerTextForNodeAndPosition(it.node(), visiblePositionRange.start);
- if (!listMarkerText.isEmpty())
- resultVector.append(listMarkerText.characters(), listMarkerText.length());
-
resultVector.append(it.characters(), it.length());
} else {
// locate the node and starting offset for this replaced range
diff --git a/WebCore/accessibility/AccessibilityObject.h b/WebCore/accessibility/AccessibilityObject.h
index 9173953..3f6c395 100644
--- a/WebCore/accessibility/AccessibilityObject.h
+++ b/WebCore/accessibility/AccessibilityObject.h
@@ -86,13 +86,10 @@ class IntPoint;
class IntSize;
class Node;
class RenderObject;
-class RenderListItem;
class VisibleSelection;
class String;
class Widget;
-typedef unsigned AXID;
-
enum AccessibilityRole {
UnknownRole = 1,
ButtonRole,
@@ -307,8 +304,8 @@ public:
virtual PassRefPtr<Range> ariaSelectedTextDOMRange() const { return 0; }
virtual AXObjectCache* axObjectCache() const { return 0; }
- AXID axObjectID() const { return m_id; }
- void setAXObjectID(AXID axObjectID) { m_id = axObjectID; }
+ unsigned axObjectID() const { return m_id; }
+ void setAXObjectID(unsigned axObjectID) { m_id = axObjectID; }
static AccessibilityObject* anchorElementForNode(Node*);
virtual Element* anchorElement() const { return 0; }
@@ -411,7 +408,6 @@ public:
virtual String doAXStringForRange(const PlainTextRange&) const { return String(); }
virtual IntRect doAXBoundsForRange(const PlainTextRange&) const { return IntRect(); }
- String listMarkerTextForNodeAndPosition(Node*, const VisiblePosition&) const;
unsigned doAXLineForIndex(unsigned);
@@ -440,15 +436,14 @@ public:
virtual void updateBackingStore() { }
protected:
- AXID m_id;
+ unsigned m_id;
AccessibilityChildrenVector m_children;
mutable bool m_haveChildren;
AccessibilityRole m_role;
virtual void clearChildren();
virtual bool isDetached() const { return true; }
- RenderListItem* renderListItemContainerForNode(Node* node) const;
-
+
#if PLATFORM(MAC)
RetainPtr<AccessibilityObjectWrapper> m_wrapper;
#elif PLATFORM(WIN) && !PLATFORM(WINCE)
diff --git a/WebCore/accessibility/AccessibilityRenderObject.cpp b/WebCore/accessibility/AccessibilityRenderObject.cpp
index b0b97fc..e0f9a91 100644
--- a/WebCore/accessibility/AccessibilityRenderObject.cpp
+++ b/WebCore/accessibility/AccessibilityRenderObject.cpp
@@ -35,6 +35,7 @@
#include "CharacterNames.h"
#include "EventNames.h"
#include "FloatRect.h"
+#include "FocusController.h"
#include "Frame.h"
#include "FrameLoader.h"
#include "HTMLAreaElement.h"
@@ -53,6 +54,7 @@
#include "HitTestResult.h"
#include "LocalizedStrings.h"
#include "NodeList.h"
+#include "Page.h"
#include "RenderButton.h"
#include "RenderFieldset.h"
#include "RenderFileUploadControl.h"
@@ -1656,7 +1658,7 @@ AccessibilityObject* AccessibilityRenderObject::accessibilityParentForImageMap(H
// The HTMLImageElement's useMap() value includes the '#' symbol at the beginning,
// which has to be stripped off
- String useMapName = static_cast<HTMLImageElement*>(curr)->getAttribute(usemapAttr).string().substring(1).lower();
+ String useMapName = static_cast<HTMLImageElement*>(curr)->useMap().substring(1).lower();
if (useMapName == mapName)
return axObjectCache()->getOrCreate(obj);
}
@@ -2100,11 +2102,32 @@ AccessibilityObject* AccessibilityRenderObject::doAccessibilityHitTest(const Int
AccessibilityObject* AccessibilityRenderObject::focusedUIElement() const
{
+ // get the focused node in the page
Page* page = m_renderer->document()->page();
if (!page)
return 0;
-
- return AXObjectCache::focusedUIElementForPage(page);
+
+ Document* focusedDocument = page->focusController()->focusedOrMainFrame()->document();
+ Node* focusedNode = focusedDocument->focusedNode();
+ if (!focusedNode)
+ focusedNode = focusedDocument;
+
+ RenderObject* focusedNodeRenderer = focusedNode->renderer();
+ if (!focusedNodeRenderer)
+ return 0;
+
+ AccessibilityObject* obj = focusedNodeRenderer->document()->axObjectCache()->getOrCreate(focusedNodeRenderer);
+
+ if (obj->shouldFocusActiveDescendant()) {
+ if (AccessibilityObject* descendant = obj->activeDescendant())
+ obj = descendant;
+ }
+
+ // the HTML element, for example, is focusable but has an AX object that is ignored
+ if (obj->accessibilityIsIgnored())
+ obj = obj->parentObjectUnignored();
+
+ return obj;
}
bool AccessibilityRenderObject::shouldFocusActiveDescendant() const
diff --git a/WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp b/WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp
index f346a81..6d3729b 100644
--- a/WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp
+++ b/WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp
@@ -60,7 +60,7 @@ using namespace WebCore;
static AccessibilityObject* fallbackObject()
{
- static AXObjectCache* fallbackCache = new AXObjectCache(0);
+ static AXObjectCache* fallbackCache = new AXObjectCache();
static AccessibilityObject* object = 0;
if (!object) {
// FIXME: using fallbackCache->getOrCreate(ListBoxOptionRole) is a hack
diff --git a/WebCore/accessibility/mac/AccessibilityObjectWrapper.mm b/WebCore/accessibility/mac/AccessibilityObjectWrapper.mm
index 75cefee..d1e0599 100644
--- a/WebCore/accessibility/mac/AccessibilityObjectWrapper.mm
+++ b/WebCore/accessibility/mac/AccessibilityObjectWrapper.mm
@@ -378,7 +378,7 @@ static void AXAttributeStringSetSpelling(NSMutableAttributedString* attrString,
// add misspelling attribute for the intersection of the marker and the range
int rStart = range.location + (marker.startOffset - offset);
- int rLength = min(marker.endOffset, endOffset) - marker.startOffset;
+ int rLength = MIN(marker.endOffset, endOffset) - marker.startOffset;
NSRange spellRange = NSMakeRange(rStart, rLength);
AXAttributeStringSetNumber(attrString, NSAccessibilityMisspelledTextAttribute, [NSNumber numberWithBool:YES], spellRange);
@@ -478,9 +478,6 @@ static NSString* nsStringForReplacedNode(Node* replacedNode)
- (NSAttributedString*)doAXAttributedStringForTextMarkerRange:(WebCoreTextMarkerRange*)textMarkerRange
{
- if (!m_object)
- return nil;
-
// extract the start and end VisiblePosition
VisiblePosition startVisiblePosition = visiblePositionForStartOfTextMarkerRange(textMarkerRange);
if (startVisiblePosition.isNull())
@@ -490,7 +487,6 @@ static NSString* nsStringForReplacedNode(Node* replacedNode)
if (endVisiblePosition.isNull())
return nil;
- VisiblePositionRange visiblePositionRange(startVisiblePosition, endVisiblePosition);
// iterate over the range to build the AX attributed string
NSMutableAttributedString* attrString = [[NSMutableAttributedString alloc] init];
TextIterator it(makeRange(startVisiblePosition, endVisiblePosition).get());
@@ -503,11 +499,6 @@ static NSString* nsStringForReplacedNode(Node* replacedNode)
// non-zero length means textual node, zero length means replaced node (AKA "attachments" in AX)
if (it.length() != 0) {
- // Add the text of the list marker item if necessary.
- String listMarkerText = m_object->listMarkerTextForNodeAndPosition(node, VisiblePosition(it.range()->startPosition()));
- if (!listMarkerText.isEmpty())
- AXAttributedStringAppendText(attrString, node, offset, listMarkerText.characters(), listMarkerText.length());
-
AXAttributedStringAppendText(attrString, node, offset, it.characters(), it.length());
} else {
Node* replacedNode = node->childNode(offset);
@@ -1590,7 +1581,6 @@ static NSString* roleValueToNSString(AccessibilityRole value)
@"AXStyleTextMarkerRangeForTextMarker",
@"AXLengthForTextMarkerRange",
NSAccessibilityBoundsForRangeParameterizedAttribute,
- NSAccessibilityStringForRangeParameterizedAttribute,
nil];
}
@@ -1942,14 +1932,6 @@ static RenderObject* rendererForView(NSView* view)
NSRect rect = m_object->boundsForVisiblePositionRange(VisiblePositionRange(start, end));
return [NSValue valueWithRect:rect];
}
-
- if ([attribute isEqualToString:NSAccessibilityStringForRangeParameterizedAttribute]) {
- VisiblePosition start = m_object->visiblePositionForIndex(range.location);
- VisiblePosition end = m_object->visiblePositionForIndex(range.location+range.length);
- if (start.isNull() || end.isNull())
- return nil;
- return m_object->stringForVisiblePositionRange(VisiblePositionRange(start, end));
- }
if ([attribute isEqualToString: @"AXAttributedStringForTextMarkerRange"])
return [self doAXAttributedStringForTextMarkerRange:textMarkerRange];
diff --git a/WebCore/accessibility/win/AXObjectCacheWin.cpp b/WebCore/accessibility/win/AXObjectCacheWin.cpp
index f782ceb..e39d5a5 100644
--- a/WebCore/accessibility/win/AXObjectCacheWin.cpp
+++ b/WebCore/accessibility/win/AXObjectCacheWin.cpp
@@ -28,10 +28,6 @@
#include "AXObjectCache.h"
#include "AccessibilityObject.h"
-#include "Document.h"
-#include "Page.h"
-
-using namespace std;
namespace WebCore {
@@ -54,43 +50,8 @@ void AXObjectCache::postPlatformNotification(AccessibilityObject*, const String&
{
}
-AXID AXObjectCache::platformGenerateAXID() const
-{
- static AXID lastUsedID = 0;
-
- // Generate a new ID. Windows accessibility relies on a positive AXID,
- // ranging from 1 to LONG_MAX.
- AXID objID = lastUsedID;
- do {
- ++objID;
- objID %= std::numeric_limits<LONG>::max();
- } while (objID == 0 || HashTraits<AXID>::isDeletedValue(objID) || m_idsInUse.contains(objID));
-
- ASSERT(objID >= 1 && objID <= std::numeric_limits<LONG>::max());
-
- lastUsedID = objID;
-
- return objID;
-}
-
void AXObjectCache::handleFocusedUIElementChanged()
{
- Page* page = m_document->page();
- if (!page || !page->chrome()->platformWindow())
- return;
-
- AccessibilityObject* focusedObject = focusedUIElementForPage(page);
- if (!focusedObject)
- return;
-
- ASSERT(!focusedObject->accessibilityIsIgnored());
- ASSERT(focusedObject->axObjectID() >= 1 && focusedObject->axObjectID() <= numeric_limits<LONG>::max());
-
- // Windows will end up calling get_accChild() on the root accessible
- // object for the WebView, passing the child ID that we specify below. We
- // negate the AXID so we know that the caller is passing the ID of an
- // element, not the index of a child element.
- NotifyWinEvent(EVENT_OBJECT_FOCUS, page->chrome()->platformWindow(), OBJID_CLIENT, -static_cast<LONG>(focusedObject->axObjectID()));
}
} // namespace WebCore
diff --git a/WebCore/bindings/js/JSAudioConstructor.cpp b/WebCore/bindings/js/JSAudioConstructor.cpp
index 174cc11..87a3880 100644
--- a/WebCore/bindings/js/JSAudioConstructor.cpp
+++ b/WebCore/bindings/js/JSAudioConstructor.cpp
@@ -34,7 +34,6 @@
#include "JSHTMLAudioElement.h"
#include "ScriptExecutionContext.h"
#include "Text.h"
-#include <runtime/Error.h>
using namespace JSC;
diff --git a/WebCore/bindings/js/JSCSSRuleListCustom.cpp b/WebCore/bindings/js/JSCSSRuleListCustom.cpp
deleted file mode 100644
index be3a9a2..0000000
--- a/WebCore/bindings/js/JSCSSRuleListCustom.cpp
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2009 Apple Inc. All right 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 "config.h"
-#include "JSCSSRuleList.h"
-
-#include "CSSRuleList.h"
-
-using namespace JSC;
-
-namespace WebCore {
-
-void JSCSSRuleList::markChildren(MarkStack& markStack)
-{
- Base::markChildren(markStack);
-
- CSSRuleList* list = impl();
- JSGlobalData& globalData = *Heap::heap(this)->globalData();
-
- unsigned length = list->length();
- for (unsigned i = 0; i < length; ++i)
- markDOMObjectWrapper(markStack, globalData, list->item(i));
-}
-
-}
diff --git a/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp b/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp
index 4a137d3..280ec93 100644
--- a/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp
+++ b/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2007, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 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
@@ -27,8 +27,8 @@
#include "JSCSSStyleDeclarationCustom.h"
#include "AtomicString.h"
-#include "CSSMutableStyleDeclaration.h"
#include "CSSPrimitiveValue.h"
+#include "CSSStyleDeclaration.h"
#include "CSSValue.h"
#include "PlatformString.h"
#include <runtime/StringObjectThatMasqueradesAsUndefined.h>
@@ -40,21 +40,6 @@ using namespace WTF;
namespace WebCore {
-void JSCSSStyleDeclaration::markChildren(MarkStack& markStack)
-{
- Base::markChildren(markStack);
-
- CSSStyleDeclaration* declaration = impl();
- JSGlobalData& globalData = *Heap::heap(this)->globalData();
-
- if (declaration->isMutableStyleDeclaration()) {
- CSSMutableStyleDeclaration* mutableDeclaration = static_cast<CSSMutableStyleDeclaration*>(declaration);
- CSSMutableStyleDeclaration::const_iterator end = mutableDeclaration->end();
- for (CSSMutableStyleDeclaration::const_iterator it = mutableDeclaration->begin(); it != end; ++it)
- markDOMObjectWrapper(markStack, globalData, it->value());
- }
-}
-
// Check for a CSS prefix.
// Passed prefix is all lowercase.
// First character of the prefix within the property name may be upper or lowercase.
diff --git a/WebCore/bindings/js/JSDOMBinding.cpp b/WebCore/bindings/js/JSDOMBinding.cpp
index 06492f9..566b986 100644
--- a/WebCore/bindings/js/JSDOMBinding.cpp
+++ b/WebCore/bindings/js/JSDOMBinding.cpp
@@ -28,7 +28,6 @@
#include "ExceptionCode.h"
#include "Frame.h"
#include "HTMLAudioElement.h"
-#include "HTMLCanvasElement.h"
#include "HTMLImageElement.h"
#include "HTMLScriptElement.h"
#include "HTMLNames.h"
@@ -43,7 +42,6 @@
#include "RangeException.h"
#include "ScriptController.h"
#include "XMLHttpRequestException.h"
-#include <runtime/JSFunction.h>
#include <runtime/PrototypeFunction.h>
#include <wtf/StdLibExtras.h>
@@ -266,48 +264,18 @@ static inline bool isObservableThroughDOM(JSNode* jsNode)
Node* node = jsNode->impl();
if (node->inDocument()) {
- // If a node is in the document, and its wrapper has custom properties,
+ // 1. If a node is in the document, and its wrapper has custom properties,
// the wrapper is observable because future access to the node through the
// DOM must reflect those properties.
if (jsNode->hasCustomProperties())
return true;
- // If a node is in the document, and has event listeners, its wrapper is
+ // 2. If a node is in the document, and has event listeners, its wrapper is
// observable because its wrapper is responsible for marking those event listeners.
if (node->eventListeners().size())
return true; // Technically, we may overzealously mark a wrapper for a node that has only non-JS event listeners. Oh well.
-
- // If a node owns another object with a wrapper with custom properties,
- // the wrapper must be treated as observable, because future access to
- // those objects through the DOM must reflect those properties.
- // FIXME: It would be better if this logic could be in the node next to
- // the custom markChildren functions rather than here.
- if (node->isElementNode()) {
- if (NamedNodeMap* attributes = static_cast<Element*>(node)->attributeMap()) {
- if (DOMObject* wrapper = getCachedDOMObjectWrapper(*jsNode->globalObject()->globalData(), attributes)) {
- if (wrapper->hasCustomProperties())
- return true;
- }
- }
- if (node->isStyledElement()) {
- if (CSSMutableStyleDeclaration* style = static_cast<StyledElement*>(node)->inlineStyleDecl()) {
- if (DOMObject* wrapper = getCachedDOMObjectWrapper(*jsNode->globalObject()->globalData(), style)) {
- if (wrapper->hasCustomProperties())
- return true;
- }
- }
- }
- if (static_cast<Element*>(node)->hasTagName(canvasTag)) {
- if (CanvasRenderingContext2D* context = static_cast<HTMLCanvasElement*>(node)->renderingContext2D()) {
- if (DOMObject* wrapper = getCachedDOMObjectWrapper(*jsNode->globalObject()->globalData(), context)) {
- if (wrapper->hasCustomProperties())
- return true;
- }
- }
- }
- }
} else {
- // If a wrapper is the last reference to an image or script element
+ // 3. If a wrapper is the last reference to an image or script element
// that is loading but not in the document, the wrapper is observable
// because it is the only thing keeping the image element alive, and if
// the image element is destroyed, its load event will not fire.
@@ -380,9 +348,6 @@ void updateDOMNodeDocument(Node* node, Document* oldDocument, Document* newDocum
void markDOMObjectWrapper(MarkStack& markStack, JSGlobalData& globalData, void* object)
{
- // FIXME: This could be changed to only mark wrappers that are "observable"
- // as markDOMNodesForDocument does, allowing us to collect more wrappers,
- // but doing this correctly would be challenging.
if (!object)
return;
DOMObject* wrapper = getCachedDOMObjectWrapper(globalData, object);
diff --git a/WebCore/bindings/js/JSDOMBinding.h b/WebCore/bindings/js/JSDOMBinding.h
index 5abd7a7..64cfc3a 100644
--- a/WebCore/bindings/js/JSDOMBinding.h
+++ b/WebCore/bindings/js/JSDOMBinding.h
@@ -26,6 +26,7 @@
#include "Document.h" // For DOMConstructorWithDocument
#include <runtime/Completion.h>
#include <runtime/Lookup.h>
+#include <runtime/JSFunction.h>
#include <wtf/Noncopyable.h>
namespace JSC {
@@ -60,7 +61,7 @@ namespace WebCore {
#endif
};
- // FIXME: This class should collapse into DOMObject once all DOMObjects are
+ // FIXME: This class should colapse into DOMObject once all DOMObjects are
// updated to store a globalObject pointer.
class DOMObjectWithGlobalPointer : public DOMObject {
public:
diff --git a/WebCore/bindings/js/JSDOMWindowCustom.cpp b/WebCore/bindings/js/JSDOMWindowCustom.cpp
index 44a11e4..9798972 100644
--- a/WebCore/bindings/js/JSDOMWindowCustom.cpp
+++ b/WebCore/bindings/js/JSDOMWindowCustom.cpp
@@ -38,7 +38,6 @@
#include "JSDOMWindowShell.h"
#include "JSEvent.h"
#include "JSEventListener.h"
-#include "JSEventSourceConstructor.h"
#include "JSHTMLCollection.h"
#include "JSHistory.h"
#include "JSImageConstructor.h"
@@ -55,7 +54,6 @@
#include "Location.h"
#include "MediaPlayer.h"
#include "MessagePort.h"
-#include "NotificationCenter.h"
#include "Page.h"
#include "PlatformScreen.h"
#include "RegisteredEventListener.h"
@@ -63,8 +61,6 @@
#include "ScriptController.h"
#include "Settings.h"
#include "WindowFeatures.h"
-#include <runtime/Error.h>
-#include <runtime/JSFunction.h>
#include <runtime/JSObject.h>
#include <runtime/PrototypeFunction.h>
@@ -428,13 +424,6 @@ JSValue JSDOMWindow::event(ExecState* exec) const
return toJS(exec, event);
}
-#if ENABLE(EVENTSOURCE)
-JSValue JSDOMWindow::eventSource(ExecState* exec) const
-{
- return getDOMConstructor<JSEventSourceConstructor>(exec, this);
-}
-#endif
-
JSValue JSDOMWindow::image(ExecState* exec) const
{
return getDOMConstructor<JSImageConstructor>(exec, this);
diff --git a/WebCore/bindings/js/JSDesktopNotificationsCustom.cpp b/WebCore/bindings/js/JSDesktopNotificationsCustom.cpp
deleted file mode 100644
index fb34c7b..0000000
--- a/WebCore/bindings/js/JSDesktopNotificationsCustom.cpp
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * 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
- * "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 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 "config.h"
-
-#if ENABLE(NOTIFICATIONS)
-
-#include "Document.h"
-#include "JSCustomVoidCallback.h"
-#include "JSEventListener.h"
-#include "JSNotification.h"
-#include "JSNotificationCenter.h"
-#include "Notification.h"
-#include "NotificationCenter.h"
-
-using namespace JSC;
-
-namespace WebCore {
-
-JSValue JSNotificationCenter::requestPermission(ExecState* exec, const ArgList& args)
-{
- // Permission request is only valid from page context.
- ScriptExecutionContext* context = impl()->context();
- if (context->isWorkerContext())
- return throwError(exec, SyntaxError);
-
- if (!args.at(0).isObject())
- return throwError(exec, TypeError);
-
- PassRefPtr<JSCustomVoidCallback> callback = JSCustomVoidCallback::create(args.at(0).getObject(), static_cast<Document*>(context)->frame());
-
- impl()->requestPermission(callback);
- return jsUndefined();
-}
-
-JSValue JSNotification::addEventListener(ExecState* exec, const ArgList& args)
-{
- JSDOMGlobalObject* globalObject = toJSDOMGlobalObject(impl()->scriptExecutionContext());
- if (!globalObject)
- return jsUndefined();
-
- if (RefPtr<JSEventListener> listener = globalObject->findOrCreateJSEventListener(args.at(1)))
- impl()->addEventListener(args.at(0).toString(exec), listener.release(), args.at(2).toBoolean(exec));
-
- return jsUndefined();
-}
-
-JSValue JSNotification::removeEventListener(ExecState* exec, const ArgList& args)
-{
- JSDOMGlobalObject* globalObject = toJSDOMGlobalObject(impl()->scriptExecutionContext());
- if (!globalObject)
- return jsUndefined();
-
- if (JSEventListener* listener = globalObject->findJSEventListener(args.at(1)))
- impl()->removeEventListener(args.at(0).toString(exec), listener, args.at(2).toBoolean(exec));
-
- return jsUndefined();
-}
-
-
-} // namespace
-
-#endif // ENABLE(NOTIFICATIONS)
diff --git a/WebCore/bindings/js/JSDocumentCustom.cpp b/WebCore/bindings/js/JSDocumentCustom.cpp
index 25c0b00..39a1fc5 100644
--- a/WebCore/bindings/js/JSDocumentCustom.cpp
+++ b/WebCore/bindings/js/JSDocumentCustom.cpp
@@ -42,14 +42,8 @@ namespace WebCore {
void JSDocument::markChildren(MarkStack& markStack)
{
JSNode::markChildren(markStack);
-
- Document* document = impl();
- JSGlobalData& globalData = *Heap::heap(this)->globalData();
-
- markDOMNodesForDocument(markStack, document);
- markActiveObjectsForContext(markStack, globalData, document);
- markDOMObjectWrapper(markStack, globalData, document->implementation());
- markDOMObjectWrapper(markStack, globalData, document->styleSheets());
+ markDOMNodesForDocument(markStack, impl());
+ markActiveObjectsForContext(markStack, *Heap::heap(this)->globalData(), impl());
}
JSValue JSDocument::location(ExecState* exec) const
diff --git a/WebCore/bindings/js/JSElementCustom.cpp b/WebCore/bindings/js/JSElementCustom.cpp
index c7b19e3..47793d0 100644
--- a/WebCore/bindings/js/JSElementCustom.cpp
+++ b/WebCore/bindings/js/JSElementCustom.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2007, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 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
@@ -51,18 +51,6 @@ namespace WebCore {
using namespace HTMLNames;
-void JSElement::markChildren(MarkStack& markStack)
-{
- Base::markChildren(markStack);
-
- Element* element = impl();
- JSGlobalData& globalData = *Heap::heap(this)->globalData();
-
- markDOMObjectWrapper(markStack, globalData, element->attributeMap());
- if (element->isStyledElement())
- markDOMObjectWrapper(markStack, globalData, static_cast<StyledElement*>(element)->inlineStyleDecl());
-}
-
static inline bool allowSettingSrcToJavascriptURL(ExecState* exec, Element* element, const String& name, const String& value)
{
if ((element->hasTagName(iframeTag) || element->hasTagName(frameTag)) && equalIgnoringCase(name, "src") && protocolIsJavaScript(deprecatedParseURL(value))) {
@@ -71,7 +59,7 @@ static inline bool allowSettingSrcToJavascriptURL(ExecState* exec, Element* elem
return false;
}
return true;
-}
+}
JSValue JSElement::setAttribute(ExecState* exec, const ArgList& args)
{
diff --git a/WebCore/bindings/js/JSEventSourceConstructor.cpp b/WebCore/bindings/js/JSEventSourceConstructor.cpp
deleted file mode 100644
index c6e4825..0000000
--- a/WebCore/bindings/js/JSEventSourceConstructor.cpp
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (C) 2009 Ericsson AB
- * 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 Ericsson 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
- * "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 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 "config.h"
-
-#if ENABLE(EVENTSOURCE)
-
-#include "JSEventSourceConstructor.h"
-
-#include "EventSource.h"
-#include "ExceptionCode.h"
-#include "JSEventSource.h"
-#include "ScriptExecutionContext.h"
-#include <runtime/Error.h>
-
-using namespace JSC;
-
-namespace WebCore {
-
-ASSERT_CLASS_FITS_IN_CELL(JSEventSourceConstructor);
-
-const ClassInfo JSEventSourceConstructor::s_info = { "EventSourceContructor", 0, 0, 0 };
-
-JSEventSourceConstructor::JSEventSourceConstructor(ExecState* exec, JSDOMGlobalObject* globalObject)
- : DOMConstructorObject(JSEventSourceConstructor::createStructure(globalObject->objectPrototype()), globalObject)
-{
- putDirect(exec->propertyNames().prototype, JSEventSourcePrototype::self(exec, globalObject), None);
- putDirect(exec->propertyNames().length, jsNumber(exec, 1), ReadOnly|DontDelete|DontEnum);
-}
-
-static JSObject* constructEventSource(ExecState* exec, JSObject* constructor, const ArgList& args)
-{
- if (args.size() < 1)
- return throwError(exec, SyntaxError, "Not enough arguments");
-
- UString url = args.at(0).toString(exec);
- if (exec->hadException())
- return 0;
-
- JSEventSourceConstructor* jsConstructor = static_cast<JSEventSourceConstructor*>(constructor);
- ScriptExecutionContext* context = jsConstructor->scriptExecutionContext();
- if (!context)
- return throwError(exec, ReferenceError, "EventSource constructor associated document is unavailable");
-
- ExceptionCode ec = 0;
- RefPtr<EventSource> eventSource = EventSource::create(url, context, ec);
- if (ec) {
- setDOMException(exec, ec);
- return 0;
- }
-
- return asObject(toJS(exec, jsConstructor->globalObject(), eventSource.release()));
-}
-
-ConstructType JSEventSourceConstructor::getConstructData(ConstructData& constructData)
-{
- constructData.native.function = constructEventSource;
- return ConstructTypeHost;
-}
-
-} // namespace WebCore
-
-#endif // ENABLE(EVENTSOURCE)
diff --git a/WebCore/bindings/js/JSEventSourceConstructor.h b/WebCore/bindings/js/JSEventSourceConstructor.h
deleted file mode 100644
index b2f3cb5..0000000
--- a/WebCore/bindings/js/JSEventSourceConstructor.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2009 Ericsson AB
- * 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 Ericsson 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
- * "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 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 JSEventSourceConstructor_h
-#define JSEventSourceConstructor_h
-
-#if ENABLE(EVENTSOURCE)
-
-#include "JSDOMBinding.h"
-
-namespace WebCore {
-
- class JSEventSourceConstructor : public DOMConstructorObject {
- public:
- JSEventSourceConstructor(JSC::ExecState*, JSDOMGlobalObject*);
- static const JSC::ClassInfo s_info;
-
- private:
- virtual JSC::ConstructType getConstructData(JSC::ConstructData&);
- virtual const JSC::ClassInfo* classInfo() const { return &s_info; }
- };
-
-} // namespace WebCore
-
-#endif // ENABLE(EVENTSOURCE)
-
-#endif // JSEventSourceConstructor_h
diff --git a/WebCore/bindings/js/JSEventSourceCustom.cpp b/WebCore/bindings/js/JSEventSourceCustom.cpp
deleted file mode 100644
index d20ccd6..0000000
--- a/WebCore/bindings/js/JSEventSourceCustom.cpp
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright (C) 2009 Ericsson AB
- * 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 Ericsson 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
- * "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 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 "config.h"
-
-#if ENABLE(EVENTSOURCE)
-
-#include "JSEventSource.h"
-
-#include "EventSource.h"
-#include "JSDOMGlobalObject.h"
-#include "JSEventListener.h"
-
-using namespace JSC;
-
-namespace WebCore {
-
-void JSEventSource::markChildren(MarkStack& markStack)
-{
- DOMObject::markChildren(markStack);
-
- markIfNotNull(markStack, m_impl->onopen());
- markIfNotNull(markStack, m_impl->onmessage());
- markIfNotNull(markStack, m_impl->onerror());
-
- typedef EventSource::EventListenersMap EventListenersMap;
- typedef EventSource::ListenerVector ListenerVector;
- EventListenersMap& eventListeners = m_impl->eventListeners();
- for (EventListenersMap::iterator mapIter = eventListeners.begin(); mapIter != eventListeners.end(); ++mapIter) {
- for (ListenerVector::iterator vecIter = mapIter->second.begin(); vecIter != mapIter->second.end(); ++vecIter)
- (*vecIter)->markJSFunction(markStack);
- }
-}
-
-JSValue JSEventSource::addEventListener(ExecState* exec, const ArgList& args)
-{
- JSDOMGlobalObject* globalObject = toJSDOMGlobalObject(impl()->scriptExecutionContext());
- if (!globalObject)
- return jsUndefined();
- RefPtr<JSEventListener> listener = globalObject->findOrCreateJSEventListener(args.at(1));
- if (!listener)
- return jsUndefined();
- impl()->addEventListener(args.at(0).toString(exec), listener.release(), args.at(2).toBoolean(exec));
- return jsUndefined();
-}
-
-JSValue JSEventSource::removeEventListener(ExecState* exec, const ArgList& args)
-{
- JSDOMGlobalObject* globalObject = toJSDOMGlobalObject(impl()->scriptExecutionContext());
- if (!globalObject)
- return jsUndefined();
- JSEventListener* listener = globalObject->findJSEventListener(args.at(1));
- if (!listener)
- return jsUndefined();
- impl()->removeEventListener(args.at(0).toString(exec), listener, args.at(2).toBoolean(exec));
- return jsUndefined();
-}
-
-} // namespace WebCore
-
-#endif // ENABLE(EVENTSOURCE)
diff --git a/WebCore/bindings/js/JSEventTarget.cpp b/WebCore/bindings/js/JSEventTarget.cpp
index 5825ee5..c34e10e 100644
--- a/WebCore/bindings/js/JSEventTarget.cpp
+++ b/WebCore/bindings/js/JSEventTarget.cpp
@@ -43,11 +43,6 @@
#include "XMLHttpRequest.h"
#include "XMLHttpRequestUpload.h"
-#if ENABLE(EVENTSOURCE)
-#include "EventSource.h"
-#include "JSEventSource.h"
-#endif
-
#if ENABLE(OFFLINE_WEB_APPLICATIONS)
#include "DOMApplicationCache.h"
#include "JSDOMApplicationCache.h"
@@ -65,11 +60,6 @@
#include "Worker.h"
#endif
-#if ENABLE(NOTIFICATIONS)
-#include "JSNotification.h"
-#include "Notification.h"
-#endif
-
using namespace JSC;
namespace WebCore {
@@ -79,11 +69,6 @@ JSValue toJS(ExecState* exec, JSDOMGlobalObject* globalObject, EventTarget* targ
if (!target)
return jsNull();
-#if ENABLE(EVENTSOURCE)
- if (EventSource* eventSource = target->toEventSource())
- return toJS(exec, globalObject, eventSource);
-#endif
-
#if ENABLE(SVG)
// SVGElementInstance supports both toSVGElementInstance and toNode since so much mouse handling code depends on toNode returning a valid node.
if (SVGElementInstance* instance = target->toSVGElementInstance())
@@ -126,11 +111,6 @@ JSValue toJS(ExecState* exec, JSDOMGlobalObject* globalObject, EventTarget* targ
return toJSDOMGlobalObject(workerContext);
#endif
-#if ENABLE(NOTIFICATIONS)
- if (Notification* notification = target->toNotification())
- return toJS(exec, notification);
-#endif
-
ASSERT_NOT_REACHED();
return jsNull();
}
@@ -138,7 +118,7 @@ JSValue toJS(ExecState* exec, JSDOMGlobalObject* globalObject, EventTarget* targ
EventTarget* toEventTarget(JSC::JSValue value)
{
#define CONVERT_TO_EVENT_TARGET(type) \
- if (value.inherits(&JS##type::s_info)) \
+ if (value.isObject(&JS##type::s_info)) \
return static_cast<JS##type*>(asObject(value))->impl();
CONVERT_TO_EVENT_TARGET(Node)
@@ -146,13 +126,9 @@ EventTarget* toEventTarget(JSC::JSValue value)
CONVERT_TO_EVENT_TARGET(XMLHttpRequestUpload)
CONVERT_TO_EVENT_TARGET(MessagePort)
- if (value.inherits(&JSDOMWindowShell::s_info))
+ if (value.isObject(&JSDOMWindowShell::s_info))
return static_cast<JSDOMWindowShell*>(asObject(value))->impl();
-#if ENABLE(EVENTSOURCE)
- CONVERT_TO_EVENT_TARGET(EventSource)
-#endif
-
#if ENABLE(OFFLINE_WEB_APPLICATIONS)
CONVERT_TO_EVENT_TARGET(DOMApplicationCache)
#endif
@@ -171,10 +147,6 @@ EventTarget* toEventTarget(JSC::JSValue value)
CONVERT_TO_EVENT_TARGET(SharedWorkerContext)
#endif
-#if ENABLE(NOTIFICATIONS)
- CONVERT_TO_EVENT_TARGET(Notification)
-#endif
-
return 0;
}
diff --git a/WebCore/bindings/js/JSGeolocationCustom.cpp b/WebCore/bindings/js/JSGeolocationCustom.cpp
index cc0ba8b..6379a1c 100644
--- a/WebCore/bindings/js/JSGeolocationCustom.cpp
+++ b/WebCore/bindings/js/JSGeolocationCustom.cpp
@@ -34,7 +34,6 @@
#include "JSCustomPositionErrorCallback.h"
#include "JSDOMWindow.h"
#include "PositionOptions.h"
-#include <runtime/InternalFunction.h>
using namespace JSC;
using namespace std;
@@ -44,7 +43,7 @@ namespace WebCore {
static PassRefPtr<PositionCallback> createPositionCallback(ExecState* exec, JSValue value)
{
// The spec specifies 'FunctionOnly' for this object.
- if (!value.inherits(&InternalFunction::info)) {
+ if (!value.isObject(&InternalFunction::info)) {
setDOMException(exec, TYPE_MISMATCH_ERR);
return 0;
}
@@ -56,12 +55,12 @@ static PassRefPtr<PositionCallback> createPositionCallback(ExecState* exec, JSVa
static PassRefPtr<PositionErrorCallback> createPositionErrorCallback(ExecState* exec, JSValue value)
{
- // Argument is optional (hence undefined is allowed), and null is allowed.
+ // Argument is optional (hence undefined is allowed), and null is allowed.
if (value.isUndefinedOrNull())
return 0;
// The spec specifies 'FunctionOnly' for this object.
- if (!value.inherits(&InternalFunction::info)) {
+ if (!value.isObject(&InternalFunction::info)) {
setDOMException(exec, TYPE_MISMATCH_ERR);
return 0;
}
@@ -92,7 +91,7 @@ static PassRefPtr<PositionOptions> createPositionOptions(ExecState* exec, JSValu
JSValue enableHighAccuracyValue = object->get(exec, Identifier(exec, "enableHighAccuracy"));
if (exec->hadException())
return 0;
- if (!enableHighAccuracyValue.isUndefined()) {
+ if(!enableHighAccuracyValue.isUndefined()) {
options->setEnableHighAccuracy(enableHighAccuracyValue.toBoolean(exec));
if (exec->hadException())
return 0;
diff --git a/WebCore/bindings/js/JSHTMLCanvasElementCustom.cpp b/WebCore/bindings/js/JSHTMLCanvasElementCustom.cpp
deleted file mode 100644
index 921e243..0000000
--- a/WebCore/bindings/js/JSHTMLCanvasElementCustom.cpp
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2009 Apple Inc. All right 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 "config.h"
-#include "JSHTMLCanvasElement.h"
-
-#include "HTMLCanvasElement.h"
-
-using namespace JSC;
-
-namespace WebCore {
-
-void JSHTMLCanvasElement::markChildren(MarkStack& markStack)
-{
- Base::markChildren(markStack);
-
- HTMLCanvasElement* canvas = static_cast<HTMLCanvasElement*>(impl());
- JSGlobalData& globalData = *Heap::heap(this)->globalData();
-
- markDOMObjectWrapper(markStack, globalData, canvas->renderingContext2D());
-}
-
-}
diff --git a/WebCore/bindings/js/JSHTMLInputElementCustom.cpp b/WebCore/bindings/js/JSHTMLInputElementCustom.cpp
index e5166ee..6b47622 100644
--- a/WebCore/bindings/js/JSHTMLInputElementCustom.cpp
+++ b/WebCore/bindings/js/JSHTMLInputElementCustom.cpp
@@ -29,7 +29,6 @@
#include "Document.h"
#include "HTMLInputElement.h"
#include "Settings.h"
-#include <runtime/Error.h>
using namespace JSC;
diff --git a/WebCore/bindings/js/JSHistoryCustom.cpp b/WebCore/bindings/js/JSHistoryCustom.cpp
index a11266d..a3b15e1 100644
--- a/WebCore/bindings/js/JSHistoryCustom.cpp
+++ b/WebCore/bindings/js/JSHistoryCustom.cpp
@@ -31,7 +31,6 @@
#include "Frame.h"
#include "History.h"
-#include <runtime/JSFunction.h>
#include <runtime/PrototypeFunction.h>
using namespace JSC;
diff --git a/WebCore/bindings/js/JSImageConstructor.cpp b/WebCore/bindings/js/JSImageConstructor.cpp
index 0f4a991..faaaf41 100644
--- a/WebCore/bindings/js/JSImageConstructor.cpp
+++ b/WebCore/bindings/js/JSImageConstructor.cpp
@@ -25,7 +25,6 @@
#include "JSHTMLImageElement.h"
#include "JSNode.h"
#include "ScriptExecutionContext.h"
-#include <runtime/Error.h>
using namespace JSC;
diff --git a/WebCore/bindings/js/JSInspectorBackendCustom.cpp b/WebCore/bindings/js/JSInspectorBackendCustom.cpp
index 30e6dc2..b2eb2d1 100644
--- a/WebCore/bindings/js/JSInspectorBackendCustom.cpp
+++ b/WebCore/bindings/js/JSInspectorBackendCustom.cpp
@@ -2,7 +2,6 @@
* Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
* Copyright (C) 2008 Matt Lilek <webkit@mattlilek.com>
* Copyright (C) 2009 Google Inc. All rights reserved.
- * Copyright (C) 2009 Joseph Pecoraro
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
@@ -35,8 +34,6 @@
#include "JSInspectorBackend.h"
#include "Console.h"
-#include "Cookie.h"
-#include "CookieJar.h"
#if ENABLE(DATABASE)
#include "Database.h"
#include "JSDatabase.h"
@@ -54,10 +51,6 @@
#include "JSRange.h"
#include "Node.h"
#include "Page.h"
-#if ENABLE(DOM_STORAGE)
-#include "Storage.h"
-#include "JSStorage.h"
-#endif
#include "TextIterator.h"
#include "VisiblePosition.h"
#include <runtime/JSArray.h>
@@ -77,12 +70,21 @@ using namespace JSC;
namespace WebCore {
-JSValue JSInspectorBackend::highlightDOMNode(JSC::ExecState* exec, const JSC::ArgList& args)
+JSValue JSInspectorBackend::highlightDOMNode(JSC::ExecState*, const JSC::ArgList& args)
{
if (args.size() < 1)
return jsUndefined();
- impl()->highlight(args.at(0).toInt32(exec));
+ JSQuarantinedObjectWrapper* wrapper = JSQuarantinedObjectWrapper::asWrapper(args.at(0));
+ if (!wrapper)
+ return jsUndefined();
+
+ Node* node = toNode(wrapper->unwrappedObject());
+ if (!node)
+ return jsUndefined();
+
+ impl()->highlight(node);
+
return jsUndefined();
}
@@ -156,68 +158,6 @@ JSValue JSInspectorBackend::inspectedWindow(ExecState*, const ArgList&)
return JSInspectedObjectWrapper::wrap(inspectedWindow->globalExec(), inspectedWindow);
}
-JSValue JSInspectorBackend::cookies(ExecState* exec, const ArgList&)
-{
- InspectorController* ic = impl()->inspectorController();
- if (!ic)
- return jsUndefined();
-
- Document* document = ic->inspectedPage()->mainFrame()->document();
- Vector<Cookie> cookies;
- bool isImplemented = getRawCookies(document, document->cookieURL(), cookies);
-
- if (!isImplemented)
- return jsUndefined();
-
- MarkedArgumentBuffer result;
- Identifier nameIdentifier(exec, "name");
- Identifier valueIdentifier(exec, "value");
- Identifier domainIdentifier(exec, "domain");
- Identifier pathIdentifier(exec, "path");
- Identifier expiresIdentifier(exec, "expires");
- Identifier sizeIdentifier(exec, "size");
- Identifier httpOnlyIdentifier(exec, "httpOnly");
- Identifier secureIdentifier(exec, "secure");
- Identifier sessionIdentifier(exec, "session");
-
- unsigned length = cookies.size();
- for (unsigned i = 0; i < length; ++i) {
- const Cookie& cookie = cookies[i];
- JSObject* cookieObject = constructEmptyObject(exec);
- cookieObject->putDirect(nameIdentifier, jsString(exec, cookie.name));
- cookieObject->putDirect(valueIdentifier, jsString(exec, cookie.value));
- cookieObject->putDirect(domainIdentifier, jsString(exec, cookie.domain));
- cookieObject->putDirect(pathIdentifier, jsString(exec, cookie.path));
- cookieObject->putDirect(expiresIdentifier, jsNumber(exec, cookie.expires));
- cookieObject->putDirect(sizeIdentifier, jsNumber(exec, cookie.name.length() + cookie.value.length()));
- cookieObject->putDirect(httpOnlyIdentifier, jsBoolean(cookie.httpOnly));
- cookieObject->putDirect(secureIdentifier, jsBoolean(cookie.secure));
- cookieObject->putDirect(sessionIdentifier, jsBoolean(cookie.session));
- result.append(cookieObject);
- }
-
- return constructArray(exec, result);
-}
-
-JSValue JSInspectorBackend::deleteCookie(ExecState* exec, const ArgList& args)
-{
- if (args.size() < 1)
- return jsUndefined();
-
- InspectorController* ic = impl()->inspectorController();
- if (!ic)
- return jsUndefined();
-
- String cookieName = args.at(0).toString(exec);
- if (exec->hadException())
- return jsUndefined();
-
- Document* document = ic->inspectedPage()->mainFrame()->document();
- WebCore::deleteCookie(document, document->cookieURL(), cookieName);
-
- return jsUndefined();
-}
-
JSValue JSInspectorBackend::setting(ExecState* exec, const ArgList& args)
{
if (args.size() < 1)
@@ -340,107 +280,4 @@ JSValue JSInspectorBackend::profiles(JSC::ExecState* exec, const JSC::ArgList&)
#endif
-JSValue JSInspectorBackend::nodeForId(ExecState* exec, const ArgList& args)
-{
- if (args.size() < 1)
- return jsUndefined();
-
- Node* node = impl()->nodeForId(args.at(0).toInt32(exec));
- if (!node)
- return jsUndefined();
-
- InspectorController* ic = impl()->inspectorController();
- if (!ic)
- return jsUndefined();
-
- JSLock lock(SilenceAssertionsOnly);
- JSDOMWindow* inspectedWindow = toJSDOMWindow(ic->inspectedPage()->mainFrame());
- return JSInspectedObjectWrapper::wrap(inspectedWindow->globalExec(), toJS(exec, deprecatedGlobalObjectForPrototype(inspectedWindow->globalExec()), node));
-}
-
-JSValue JSInspectorBackend::idForNode(ExecState* exec, const ArgList& args)
-{
- if (args.size() < 1)
- return jsUndefined();
-
- JSQuarantinedObjectWrapper* wrapper = JSQuarantinedObjectWrapper::asWrapper(args.at(0));
- if (!wrapper)
- return jsUndefined();
-
- Node* node = toNode(wrapper->unwrappedObject());
- if (node)
- return jsNumber(exec, impl()->idForNode(node));
- return jsUndefined();
-}
-
-JSValue JSInspectorBackend::wrapObject(ExecState*, const ArgList& args)
-{
- if (args.size() < 1)
- return jsUndefined();
-
- return impl()->wrapObject(ScriptValue(args.at(0))).jsValue();
-}
-
-JSValue JSInspectorBackend::unwrapObject(ExecState* exec, const ArgList& args)
-{
- if (args.size() < 1)
- return jsUndefined();
-
- return impl()->unwrapObject(args.at(0).toString(exec)).jsValue();
-}
-
-JSValue JSInspectorBackend::pushNodePathToFrontend(ExecState* exec, const ArgList& args)
-{
- if (args.size() < 2)
- return jsUndefined();
-
- JSQuarantinedObjectWrapper* wrapper = JSQuarantinedObjectWrapper::asWrapper(args.at(0));
- if (!wrapper)
- return jsUndefined();
-
- Node* node = toNode(wrapper->unwrappedObject());
- if (!node)
- return jsUndefined();
-
- bool selectInUI = args.at(1).toBoolean(exec);
- return jsNumber(exec, impl()->pushNodePathToFrontend(node, selectInUI));
-}
-
-#if ENABLE(DATABASE)
-JSValue JSInspectorBackend::selectDatabase(ExecState*, const ArgList& args)
-{
- if (args.size() < 1)
- return jsUndefined();
-
- JSQuarantinedObjectWrapper* wrapper = JSQuarantinedObjectWrapper::asWrapper(args.at(0));
- if (!wrapper)
- return jsUndefined();
-
- Database* database = toDatabase(wrapper->unwrappedObject());
- if (database)
- impl()->selectDatabase(database);
- return jsUndefined();
-}
-#endif
-
-#if ENABLE(DOM_STORAGE)
-JSValue JSInspectorBackend::selectDOMStorage(ExecState*, const ArgList& args)
-{
- if (args.size() < 1)
- return jsUndefined();
- InspectorController* ic = impl()->inspectorController();
- if (!ic)
- return jsUndefined();
-
- JSQuarantinedObjectWrapper* wrapper = JSQuarantinedObjectWrapper::asWrapper(args.at(0));
- if (!wrapper)
- return jsUndefined();
-
- Storage* storage = toStorage(wrapper->unwrappedObject());
- if (storage)
- impl()->selectDOMStorage(storage);
- return jsUndefined();
-}
-#endif
-
} // namespace WebCore
diff --git a/WebCore/bindings/js/JSLazyEventListener.cpp b/WebCore/bindings/js/JSLazyEventListener.cpp
index cf0ed44..7caff2b 100644
--- a/WebCore/bindings/js/JSLazyEventListener.cpp
+++ b/WebCore/bindings/js/JSLazyEventListener.cpp
@@ -23,7 +23,6 @@
#include "Frame.h"
#include "JSNode.h"
#include <runtime/FunctionConstructor.h>
-#include <runtime/JSFunction.h>
#include <runtime/JSLock.h>
#include <wtf/RefCountedLeakCounter.h>
diff --git a/WebCore/bindings/js/JSLocationCustom.cpp b/WebCore/bindings/js/JSLocationCustom.cpp
index 0289bc0..d7d32f4 100644
--- a/WebCore/bindings/js/JSLocationCustom.cpp
+++ b/WebCore/bindings/js/JSLocationCustom.cpp
@@ -31,7 +31,6 @@
#include "KURL.h"
#include "Location.h"
#include "ScriptController.h"
-#include <runtime/JSFunction.h>
#include <runtime/PrototypeFunction.h>
using namespace JSC;
diff --git a/WebCore/bindings/js/JSMessageChannelConstructor.cpp b/WebCore/bindings/js/JSMessageChannelConstructor.cpp
index 9721ba3..25a5cb2 100644
--- a/WebCore/bindings/js/JSMessageChannelConstructor.cpp
+++ b/WebCore/bindings/js/JSMessageChannelConstructor.cpp
@@ -30,7 +30,6 @@
#include "JSDocument.h"
#include "JSMessageChannel.h"
#include "MessageChannel.h"
-#include <runtime/Error.h>
using namespace JSC;
diff --git a/WebCore/bindings/js/JSNodeFilterCustom.cpp b/WebCore/bindings/js/JSNodeFilterCustom.cpp
index 2a99a93..09fd110 100644
--- a/WebCore/bindings/js/JSNodeFilterCustom.cpp
+++ b/WebCore/bindings/js/JSNodeFilterCustom.cpp
@@ -48,7 +48,7 @@ JSValue JSNodeFilter::acceptNode(ExecState* exec, const ArgList& args)
PassRefPtr<NodeFilter> toNodeFilter(JSValue value)
{
- if (value.inherits(&JSNodeFilter::s_info))
+ if (value.isObject(&JSNodeFilter::s_info))
return static_cast<JSNodeFilter*>(asObject(value))->impl();
return NodeFilter::create(JSNodeFilterCondition::create(value));
diff --git a/WebCore/bindings/js/JSOptionConstructor.cpp b/WebCore/bindings/js/JSOptionConstructor.cpp
index 7da0666..2b8bd5d 100644
--- a/WebCore/bindings/js/JSOptionConstructor.cpp
+++ b/WebCore/bindings/js/JSOptionConstructor.cpp
@@ -25,7 +25,6 @@
#include "JSHTMLOptionElement.h"
#include "ScriptExecutionContext.h"
#include "Text.h"
-#include <runtime/Error.h>
using namespace JSC;
diff --git a/WebCore/bindings/js/JSStyleSheetCustom.cpp b/WebCore/bindings/js/JSStyleSheetCustom.cpp
index d711b6f..43249dc 100644
--- a/WebCore/bindings/js/JSStyleSheetCustom.cpp
+++ b/WebCore/bindings/js/JSStyleSheetCustom.cpp
@@ -56,19 +56,12 @@ void JSStyleSheet::markChildren(MarkStack& markStack)
{
Base::markChildren(markStack);
- StyleSheet* sheet = impl();
- JSGlobalData& globalData = *Heap::heap(this)->globalData();
-
- unsigned length = sheet->length();
- for (unsigned i = 0; i < length; ++i)
- markDOMObjectWrapper(markStack, globalData, sheet->item(i));
-
// This prevents us from having a style sheet with a dangling ownerNode pointer.
// A better solution would be to handle this on the DOM side -- if the style sheet
// is kept around, then we want the node to stay around too. One possibility would
// be to make ref/deref on the style sheet ref/deref the node instead, but there's
// a lot of disentangling of the CSS DOM objects that would need to happen first.
- if (Node* ownerNode = sheet->ownerNode()) {
+ if (Node* ownerNode = impl()->ownerNode()) {
if (JSNode* ownerNodeWrapper = getCachedDOMNodeWrapper(ownerNode->document(), ownerNode))
markStack.append(ownerNodeWrapper);
}
diff --git a/WebCore/bindings/js/JSStyleSheetListCustom.cpp b/WebCore/bindings/js/JSStyleSheetListCustom.cpp
index 7bf9389..1da6418 100644
--- a/WebCore/bindings/js/JSStyleSheetListCustom.cpp
+++ b/WebCore/bindings/js/JSStyleSheetListCustom.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2007, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2007 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -35,18 +35,6 @@ using namespace JSC;
namespace WebCore {
-void JSStyleSheetList::markChildren(MarkStack& markStack)
-{
- Base::markChildren(markStack);
-
- StyleSheetList* list = impl();
- JSGlobalData& globalData = *Heap::heap(this)->globalData();
-
- unsigned length = list->length();
- for (unsigned i = 0; i < length; ++i)
- markDOMObjectWrapper(markStack, globalData, list->item(i));
-}
-
bool JSStyleSheetList::canGetItemsForName(ExecState*, StyleSheetList* styleSheetList, const Identifier& propertyName)
{
return styleSheetList->getNamedItem(propertyName);
diff --git a/WebCore/bindings/js/JSWebSocketConstructor.cpp b/WebCore/bindings/js/JSWebSocketConstructor.cpp
index 5b34765..ca2e104 100644
--- a/WebCore/bindings/js/JSWebSocketConstructor.cpp
+++ b/WebCore/bindings/js/JSWebSocketConstructor.cpp
@@ -37,7 +37,6 @@
#include "JSWebSocket.h"
#include "ScriptExecutionContext.h"
#include "WebSocket.h"
-#include <runtime/Error.h>
using namespace JSC;
diff --git a/WebCore/bindings/js/JSWebSocketCustom.cpp b/WebCore/bindings/js/JSWebSocketCustom.cpp
index 401b33d..3aa4b8b 100644
--- a/WebCore/bindings/js/JSWebSocketCustom.cpp
+++ b/WebCore/bindings/js/JSWebSocketCustom.cpp
@@ -38,7 +38,6 @@
#include "KURL.h"
#include "WebSocket.h"
#include "NotImplemented.h"
-#include <runtime/Error.h>
using namespace JSC;
diff --git a/WebCore/bindings/js/JSWorkerConstructor.cpp b/WebCore/bindings/js/JSWorkerConstructor.cpp
index 69c05e7..9943cfb 100644
--- a/WebCore/bindings/js/JSWorkerConstructor.cpp
+++ b/WebCore/bindings/js/JSWorkerConstructor.cpp
@@ -34,7 +34,6 @@
#include "JSDOMWindowCustom.h"
#include "JSWorker.h"
#include "Worker.h"
-#include <runtime/Error.h>
using namespace JSC;
diff --git a/WebCore/bindings/js/JSWorkerContextCustom.cpp b/WebCore/bindings/js/JSWorkerContextCustom.cpp
index 7ece7a0..919c81f 100644
--- a/WebCore/bindings/js/JSWorkerContextCustom.cpp
+++ b/WebCore/bindings/js/JSWorkerContextCustom.cpp
@@ -43,10 +43,6 @@
#include "WorkerNavigator.h"
#include <interpreter/Interpreter.h>
-#if ENABLE(EVENTSOURCE)
-#include "JSEventSourceConstructor.h"
-#endif
-
using namespace JSC;
namespace WebCore {
@@ -81,13 +77,6 @@ bool JSWorkerContext::getOwnPropertySlotDelegate(ExecState* exec, const Identifi
return false;
}
-#if ENABLE(EVENTSOURCE)
-JSValue JSWorkerContext::eventSource(ExecState* exec) const
-{
- return getDOMConstructor<JSEventSourceConstructor>(exec, this);
-}
-#endif
-
JSValue JSWorkerContext::xmlHttpRequest(ExecState* exec) const
{
return getDOMConstructor<JSXMLHttpRequestConstructor>(exec, this);
diff --git a/WebCore/bindings/js/JSXMLHttpRequestConstructor.cpp b/WebCore/bindings/js/JSXMLHttpRequestConstructor.cpp
index 91fff9a..a644c9e 100644
--- a/WebCore/bindings/js/JSXMLHttpRequestConstructor.cpp
+++ b/WebCore/bindings/js/JSXMLHttpRequestConstructor.cpp
@@ -23,7 +23,6 @@
#include "JSXMLHttpRequest.h"
#include "ScriptExecutionContext.h"
#include "XMLHttpRequest.h"
-#include <runtime/Error.h>
using namespace JSC;
diff --git a/WebCore/bindings/js/JSXMLHttpRequestCustom.cpp b/WebCore/bindings/js/JSXMLHttpRequestCustom.cpp
index 95bc16e..a591fae 100644
--- a/WebCore/bindings/js/JSXMLHttpRequestCustom.cpp
+++ b/WebCore/bindings/js/JSXMLHttpRequestCustom.cpp
@@ -123,9 +123,9 @@ JSValue JSXMLHttpRequest::send(ExecState* exec, const ArgList& args)
JSValue val = args.at(0);
if (val.isUndefinedOrNull())
impl()->send(ec);
- else if (val.inherits(&JSDocument::s_info))
+ else if (val.isObject(&JSDocument::s_info))
impl()->send(toDocument(val), ec);
- else if (val.inherits(&JSFile::s_info))
+ else if (val.isObject(&JSFile::s_info))
impl()->send(toFile(val), ec);
else
impl()->send(val.toString(exec), ec);
diff --git a/WebCore/bindings/js/JSXSLTProcessorCustom.cpp b/WebCore/bindings/js/JSXSLTProcessorCustom.cpp
index 441bbc9..01e53a6 100644
--- a/WebCore/bindings/js/JSXSLTProcessorCustom.cpp
+++ b/WebCore/bindings/js/JSXSLTProcessorCustom.cpp
@@ -49,7 +49,7 @@ namespace WebCore {
JSValue JSXSLTProcessor::importStylesheet(ExecState*, const ArgList& args)
{
JSValue nodeVal = args.at(0);
- if (nodeVal.inherits(&JSNode::s_info)) {
+ if (nodeVal.isObject(&JSNode::s_info)) {
JSNode* node = static_cast<JSNode*>(asObject(nodeVal));
impl()->importStylesheet(node->impl());
return jsUndefined();
@@ -62,7 +62,7 @@ JSValue JSXSLTProcessor::transformToFragment(ExecState* exec, const ArgList& arg
{
JSValue nodeVal = args.at(0);
JSValue docVal = args.at(1);
- if (nodeVal.inherits(&JSNode::s_info) && docVal.inherits(&JSDocument::s_info)) {
+ if (nodeVal.isObject(&JSNode::s_info) && docVal.isObject(&JSDocument::s_info)) {
WebCore::Node* node = static_cast<JSNode*>(asObject(nodeVal))->impl();
Document* doc = static_cast<Document*>(static_cast<JSDocument*>(asObject(docVal))->impl());
return toJS(exec, impl()->transformToFragment(node, doc).get());
@@ -74,7 +74,7 @@ JSValue JSXSLTProcessor::transformToFragment(ExecState* exec, const ArgList& arg
JSValue JSXSLTProcessor::transformToDocument(ExecState* exec, const ArgList& args)
{
JSValue nodeVal = args.at(0);
- if (nodeVal.inherits(&JSNode::s_info)) {
+ if (nodeVal.isObject(&JSNode::s_info)) {
JSNode* node = static_cast<JSNode*>(asObject(nodeVal));
RefPtr<Document> resultDocument = impl()->transformToDocument(node->impl());
if (resultDocument)
diff --git a/WebCore/bindings/js/ScriptControllerHaiku.cpp b/WebCore/bindings/js/ScriptControllerHaiku.cpp
index 3fe471d..b573b97 100644
--- a/WebCore/bindings/js/ScriptControllerHaiku.cpp
+++ b/WebCore/bindings/js/ScriptControllerHaiku.cpp
@@ -28,8 +28,8 @@
#include "ScriptController.h"
#include "PluginView.h"
-#include "runtime.h"
#include "runtime_root.h"
+#include "runtime.h"
namespace WebCore {
diff --git a/WebCore/bindings/js/ScriptObjectQuarantine.cpp b/WebCore/bindings/js/ScriptObjectQuarantine.cpp
index f96f89e..89553ef 100644
--- a/WebCore/bindings/js/ScriptObjectQuarantine.cpp
+++ b/WebCore/bindings/js/ScriptObjectQuarantine.cpp
@@ -38,7 +38,6 @@
#include "JSNode.h"
#include "ScriptObject.h"
#include "ScriptValue.h"
-#include "Storage.h"
#include <runtime/JSLock.h>
@@ -81,11 +80,10 @@ bool getQuarantinedScriptObject(Database* database, ScriptObject& quarantinedObj
#endif
#if ENABLE(DOM_STORAGE)
-bool getQuarantinedScriptObject(Storage* storage, ScriptObject& quarantinedObject)
+bool getQuarantinedScriptObject(Frame* frame, Storage* storage, ScriptObject& quarantinedObject)
{
- ASSERT(storage);
- Frame* frame = storage->frame();
ASSERT(frame);
+ ASSERT(storage);
JSDOMGlobalObject* globalObject = toJSDOMWindow(frame);
ExecState* exec = globalObject->globalExec();
diff --git a/WebCore/bindings/js/ScriptObjectQuarantine.h b/WebCore/bindings/js/ScriptObjectQuarantine.h
index df52379..d70acd7 100644
--- a/WebCore/bindings/js/ScriptObjectQuarantine.h
+++ b/WebCore/bindings/js/ScriptObjectQuarantine.h
@@ -37,6 +37,7 @@ namespace WebCore {
class Database;
class DOMWindow;
+ class Frame;
class Node;
class ScriptObject;
class ScriptValue;
@@ -48,7 +49,7 @@ namespace WebCore {
bool getQuarantinedScriptObject(Database* database, ScriptObject& quarantinedObject);
#endif
#if ENABLE(DOM_STORAGE)
- bool getQuarantinedScriptObject(Storage* storage, ScriptObject& quarantinedObject);
+ bool getQuarantinedScriptObject(Frame* frame, Storage* storage, ScriptObject& quarantinedObject);
#endif
bool getQuarantinedScriptObject(Node* node, ScriptObject& quarantinedObject);
bool getQuarantinedScriptObject(DOMWindow* domWindow, ScriptObject& quarantinedObject);
diff --git a/WebCore/bindings/js/ScriptValue.cpp b/WebCore/bindings/js/ScriptValue.cpp
index 6eac102..d427cee 100644
--- a/WebCore/bindings/js/ScriptValue.cpp
+++ b/WebCore/bindings/js/ScriptValue.cpp
@@ -74,11 +74,4 @@ bool ScriptValue::isUndefined() const
return m_value.get().isUndefined();
}
-bool ScriptValue::isObject() const
-{
- if (!m_value)
- return false;
- return m_value.get().isObject();
-}
-
} // namespace WebCore
diff --git a/WebCore/bindings/js/ScriptValue.h b/WebCore/bindings/js/ScriptValue.h
index 19bb693..209ce06 100644
--- a/WebCore/bindings/js/ScriptValue.h
+++ b/WebCore/bindings/js/ScriptValue.h
@@ -50,7 +50,6 @@ public:
bool isEqual(ScriptState*, const ScriptValue&) const;
bool isNull() const;
bool isUndefined() const;
- bool isObject() const;
bool hasNoValue() const { return m_value == JSC::JSValue(); }
private:
diff --git a/WebCore/bindings/scripts/CodeGeneratorJS.pm b/WebCore/bindings/scripts/CodeGeneratorJS.pm
index f6de50e..1918aef 100644
--- a/WebCore/bindings/scripts/CodeGeneratorJS.pm
+++ b/WebCore/bindings/scripts/CodeGeneratorJS.pm
@@ -667,12 +667,6 @@ sub GenerateHeader
push(@headerContent,
" static PassRefPtr<JSC::Structure> createStructure(JSC::JSValue prototype)\n" .
" {\n" .
- " return JSC::Structure::create(prototype, JSC::TypeInfo(JSC::ObjectType" . ($dataNode->extendedAttributes->{"CustomMarkFunction"} ? "" : ", JSC::HasDefaultMark") . "));\n" .
- " }\n");
- } elsif ($dataNode->extendedAttributes->{"CustomMarkFunction"}) {
- push(@headerContent,
- " static PassRefPtr<JSC::Structure> createStructure(JSC::JSValue prototype)\n" .
- " {\n" .
" return JSC::Structure::create(prototype, JSC::TypeInfo(JSC::ObjectType));\n" .
" }\n");
}
@@ -1379,7 +1373,7 @@ sub GenerateImplementation
push(@implContent, " if (!castedThisObj)\n");
push(@implContent, " return throwError(exec, TypeError);\n");
} else {
- push(@implContent, " if (!thisValue.inherits(&${className}::s_info))\n");
+ push(@implContent, " if (!thisValue.isObject(&${className}::s_info))\n");
push(@implContent, " return throwError(exec, TypeError);\n");
push(@implContent, " $className* castedThisObj = static_cast<$className*>(asObject(thisValue));\n");
}
@@ -1543,7 +1537,7 @@ sub GenerateImplementation
push(@implContent, "{\n");
- push(@implContent, " return value.inherits(&${className}::s_info) ? " . ($podType ? "($podType) *" : "") . "static_cast<$className*>(asObject(value))->impl() : ");
+ push(@implContent, " return value.isObject(&${className}::s_info) ? " . ($podType ? "($podType) *" : "") . "static_cast<$className*>(asObject(value))->impl() : ");
if ($podType and $podType ne "float") {
push(@implContent, "$podType();\n}\n");
} else {
diff --git a/WebCore/bindings/scripts/CodeGeneratorV8.pm b/WebCore/bindings/scripts/CodeGeneratorV8.pm
index 1eb3e85..439f368 100644
--- a/WebCore/bindings/scripts/CodeGeneratorV8.pm
+++ b/WebCore/bindings/scripts/CodeGeneratorV8.pm
@@ -975,24 +975,51 @@ sub GenerateBatchedAttributeData
$setter = "V8Custom::v8${customAccessor}AccessorSetter";
}
}
- } else {
- # Default Getter and Setter
- $getter = "${interfaceName}Internal::${attrName}AttrGetter";
- $setter = "${interfaceName}Internal::${attrName}AttrSetter";
- # Custom Setter
- if ($attrExt->{"CustomSetter"} || $attrExt->{"V8CustomSetter"} || $attrExt->{"Custom"} || $attrExt->{"V8Custom"}) {
+ # Custom Getter and Setter
+ } elsif ($attrExt->{"Custom"} || $attrExt->{"V8Custom"}) {
+ $getter = "V8Custom::v8${customAccessor}AccessorGetter";
+ if ($interfaceName eq "WorkerContext" and $attrName eq "self") {
+ $setter = "0";
+ $propAttr = "v8::ReadOnly";
+ } else {
$hasCustomSetter = 1;
$setter = "V8Custom::v8${customAccessor}AccessorSetter";
}
- # Custom Getter
- if ($attrExt->{"CustomGetter"} || $attrExt->{"Custom"} || $attrExt->{"V8Custom"}) {
- $getter = "V8Custom::v8${customAccessor}AccessorGetter";
+ # Custom Setter
+ } elsif ($attrExt->{"CustomSetter"} || $attrExt->{"V8CustomSetter"}) {
+ $hasCustomSetter = 1;
+ $getter = "${interfaceName}Internal::${attrName}AttrGetter";
+ $setter = "V8Custom::v8${customAccessor}AccessorSetter";
+
+ # Custom Getter
+ } elsif ($attrExt->{"CustomGetter"}) {
+ $getter = "V8Custom::v8${customAccessor}AccessorGetter";
+ $setter = "${interfaceName}Internal::${attrName}AttrSetter";
+
+ # Replaceable
+ } elsif ($attrExt->{"Replaceable"}) {
+ # Replaceable accessor is put on instance template with ReadOnly attribute.
+ $getter = "${interfaceName}Internal::${attrName}AttrGetter";
+ $setter = "0";
+
+ # Mark to avoid duplicate v8::ReadOnly flags in output.
+ $hasCustomSetter = 1;
+
+ # Handle the special case of window.top being marked upstream as Replaceable.
+ # FIXME: Investigate why [Replaceable] is not marked as ReadOnly
+ # upstream and reach parity.
+ if (!($interfaceName eq "DOMWindow" and $attrName eq "top")) {
+ $propAttr .= "|v8::ReadOnly";
}
+
+ # Normal
+ } else {
+ $getter = "${interfaceName}Internal::${attrName}AttrGetter";
+ $setter = "${interfaceName}Internal::${attrName}AttrSetter";
}
- # Replaceable
if ($attrExt->{"Replaceable"} && !$hasCustomSetter) {
$setter = "0";
$propAttr .= "|v8::ReadOnly";
@@ -1626,7 +1653,6 @@ sub IsRefPtrType
return 1 if $type eq "Plugin";
return 1 if $type eq "ProcessingInstruction";
return 1 if $type eq "Range";
- return 1 if $type eq "RGBColor";
return 1 if $type eq "Text";
return 1 if $type eq "TextMetrics";
return 1 if $type eq "TimeRanges";
diff --git a/WebCore/bindings/v8/ScriptObjectQuarantine.cpp b/WebCore/bindings/v8/ScriptObjectQuarantine.cpp
index c9f379b..053cf68 100644
--- a/WebCore/bindings/v8/ScriptObjectQuarantine.cpp
+++ b/WebCore/bindings/v8/ScriptObjectQuarantine.cpp
@@ -38,7 +38,6 @@
#include "Page.h"
#include "ScriptObject.h"
#include "ScriptValue.h"
-#include "Storage.h"
#include "V8Binding.h"
#include "V8Proxy.h"
@@ -62,11 +61,10 @@ bool getQuarantinedScriptObject(Database* database, ScriptObject& quarantinedObj
return false;
}
-bool getQuarantinedScriptObject(Storage* storage, ScriptObject& quarantinedObject)
+bool getQuarantinedScriptObject(Frame* frame, Storage* storage, ScriptObject& quarantinedObject)
{
- ASSERT(storage);
- Frame* frame = storage->frame();
ASSERT(frame);
+ ASSERT(storage);
#if ENABLE(DOM_STORAGE)
v8::HandleScope handleScope;
diff --git a/WebCore/bindings/v8/ScriptObjectQuarantine.h b/WebCore/bindings/v8/ScriptObjectQuarantine.h
index 712dd9b..3b7ccff 100644
--- a/WebCore/bindings/v8/ScriptObjectQuarantine.h
+++ b/WebCore/bindings/v8/ScriptObjectQuarantine.h
@@ -42,6 +42,7 @@ namespace WebCore {
class Database;
class DOMWindow;
+ class Frame;
class Node;
class ScriptObject;
class ScriptValue;
@@ -50,7 +51,7 @@ namespace WebCore {
ScriptValue quarantineValue(ScriptState*, const ScriptValue&);
bool getQuarantinedScriptObject(Database* database, ScriptObject& quarantinedObject);
- bool getQuarantinedScriptObject(Storage* storage, ScriptObject& quarantinedObject);
+ bool getQuarantinedScriptObject(Frame* frame, Storage* storage, ScriptObject& quarantinedObject);
bool getQuarantinedScriptObject(Node* node, ScriptObject& quarantinedObject);
bool getQuarantinedScriptObject(DOMWindow* domWindow, ScriptObject& quarantinedObject);
diff --git a/WebCore/bindings/v8/ScriptValue.h b/WebCore/bindings/v8/ScriptValue.h
index ddc3577..004851b 100644
--- a/WebCore/bindings/v8/ScriptValue.h
+++ b/WebCore/bindings/v8/ScriptValue.h
@@ -110,12 +110,7 @@ public:
{
return m_value->IsUndefined();
}
-
- bool isObject() const
- {
- return m_value->IsObject();
- }
-
+
bool hasNoValue() const
{
return m_value.IsEmpty();
diff --git a/WebCore/bindings/v8/V8Binding.cpp b/WebCore/bindings/v8/V8Binding.cpp
index c0367d5..c5d580a 100644
--- a/WebCore/bindings/v8/V8Binding.cpp
+++ b/WebCore/bindings/v8/V8Binding.cpp
@@ -154,12 +154,14 @@ AtomicString v8StringToAtomicWebCoreString(v8::Handle<v8::String> v8String)
{
WebCoreStringResource* stringResource = WebCoreStringResource::toStringResource(v8String);
if (!stringResource) {
- if (!v8String->CanMakeExternal())
- return v8StringToWebCoreString(v8String, DoNotExternalize, AtomicStringType);
// If this string hasn't been externalized, we force it now.
- v8StringToWebCoreString(v8String, Externalize, AtomicStringType);
+ String plain = v8StringToWebCoreString(v8String, Externalize, AtomicStringType);
+ // If the string is empty there's no room to cache an atomic
+ // string so we bail out.
+ if (plain.isEmpty())
+ return plain;
stringResource = WebCoreStringResource::toStringResource(v8String);
- ASSERT(stringResource);
+ ASSERT(stringResource != NULL);
}
return stringResource->atomicString();
}
diff --git a/WebCore/bindings/v8/custom/V8CustomBinding.h b/WebCore/bindings/v8/custom/V8CustomBinding.h
index 945dcbb..80fed1d 100644
--- a/WebCore/bindings/v8/custom/V8CustomBinding.h
+++ b/WebCore/bindings/v8/custom/V8CustomBinding.h
@@ -218,7 +218,7 @@ namespace WebCore {
DECLARE_PROPERTY_ACCESSOR(CanvasRenderingContext2DStrokeStyle);
DECLARE_PROPERTY_ACCESSOR(CanvasRenderingContext2DFillStyle);
- DECLARE_PROPERTY_ACCESSOR(DOMWindowEvent);
+ DECLARE_PROPERTY_ACCESSOR_GETTER(DOMWindowEvent);
DECLARE_PROPERTY_ACCESSOR_GETTER(DOMWindowCrypto);
DECLARE_PROPERTY_ACCESSOR_SETTER(DOMWindowLocation);
DECLARE_PROPERTY_ACCESSOR_SETTER(DOMWindowOpener);
@@ -402,23 +402,12 @@ namespace WebCore {
DECLARE_CALLBACK(InspectorBackendSetting);
DECLARE_CALLBACK(InspectorBackendInspectedWindow);
DECLARE_CALLBACK(InspectorBackendSetSetting);
- DECLARE_CALLBACK(InspectorBackendCookies);
- DECLARE_CALLBACK(InspectorBackendDeleteCookie);
DECLARE_CALLBACK(InspectorBackendCurrentCallFrame);
DECLARE_CALLBACK(InspectorBackendDebuggerEnabled);
DECLARE_CALLBACK(InspectorBackendPauseOnExceptions);
DECLARE_CALLBACK(InspectorBackendProfilerEnabled);
- DECLARE_CALLBACK(InspectorBackendNodeForId);
- DECLARE_CALLBACK(InspectorBackendIdForNode);
- DECLARE_CALLBACK(InspectorBackendWrapObject);
- DECLARE_CALLBACK(InspectorBackendUnwrapObject);
- DECLARE_CALLBACK(InspectorBackendPushNodePathToFrontend);
#if ENABLE(DATABASE)
DECLARE_CALLBACK(InspectorBackendDatabaseTableNames);
- DECLARE_CALLBACK(InspectorBackendSelectDatabase);
-#endif
-#if ENABLE(DOM_STORAGE)
- DECLARE_CALLBACK(InspectorBackendSelectDOMStorage);
#endif
DECLARE_CALLBACK(InspectorBackendWrapCallback);
diff --git a/WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp b/WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp
index 13d40bc..7d0b9e6 100644
--- a/WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp
+++ b/WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp
@@ -145,37 +145,14 @@ static v8::Handle<v8::Value> convertBase64(const String& str, bool encode)
ACCESSOR_GETTER(DOMWindowEvent)
{
- v8::Handle<v8::Object> holder = V8DOMWrapper::lookupDOMWrapper(V8ClassIndex::DOMWINDOW, info.This());
- if (holder.IsEmpty())
- return v8::Undefined();
-
- Frame* frame = V8DOMWrapper::convertToNativeObject<DOMWindow>(V8ClassIndex::DOMWINDOW, holder)->frame();
- if (!frame || !V8Proxy::canAccessFrame(frame, true))
- return v8::Undefined();
-
- v8::Local<v8::Context> context = V8Proxy::context(frame);
v8::Local<v8::String> eventSymbol = v8::String::NewSymbol("event");
+ v8::Local<v8::Context> context = v8::Context::GetCurrent();
v8::Handle<v8::Value> jsEvent = context->Global()->GetHiddenValue(eventSymbol);
if (jsEvent.IsEmpty())
return v8::Undefined();
return jsEvent;
}
-ACCESSOR_SETTER(DOMWindowEvent)
-{
- v8::Handle<v8::Object> holder = V8DOMWrapper::lookupDOMWrapper(V8ClassIndex::DOMWINDOW, info.This());
- if (holder.IsEmpty())
- return;
-
- Frame* frame = V8DOMWrapper::convertToNativeObject<DOMWindow>(V8ClassIndex::DOMWINDOW, holder)->frame();
- if (!frame || !V8Proxy::canAccessFrame(frame, true))
- return;
-
- v8::Local<v8::Context> context = V8Proxy::context(frame);
- v8::Local<v8::String> eventSymbol = v8::String::NewSymbol("event");
- context->Global()->SetHiddenValue(eventSymbol, value);
-}
-
ACCESSOR_GETTER(DOMWindowCrypto)
{
// FIXME: Implement me.
diff --git a/WebCore/bindings/v8/custom/V8InspectorBackendCustom.cpp b/WebCore/bindings/v8/custom/V8InspectorBackendCustom.cpp
index cb9b3a9..2571df4 100644
--- a/WebCore/bindings/v8/custom/V8InspectorBackendCustom.cpp
+++ b/WebCore/bindings/v8/custom/V8InspectorBackendCustom.cpp
@@ -57,8 +57,13 @@ CALLBACK_FUNC_DECL(InspectorBackendHighlightDOMNode)
if (args.Length() < 1)
return v8::Undefined();
+ Node* node = V8DOMWrapper::convertDOMWrapperToNode<Node>(v8::Handle<v8::Object>::Cast(args[0]));
+ if (!node)
+ return v8::Undefined();
+
InspectorBackend* inspectorBackend = V8DOMWrapper::convertToNativeObject<InspectorBackend>(V8ClassIndex::INSPECTORBACKEND, args.Holder());
- inspectorBackend->highlight(args[0]->ToInt32()->Value());
+ inspectorBackend->highlight(node);
+
return v8::Undefined();
}
@@ -204,123 +209,10 @@ CALLBACK_FUNC_DECL(InspectorBackendSetSetting)
return v8::Undefined();
}
-CALLBACK_FUNC_DECL(InspectorBackendCookies)
-{
- INC_STATS("InspectorBackend.cookies()");
- // FIXME: Not yet implemented.
- return v8::Undefined();
-}
-
-CALLBACK_FUNC_DECL(InspectorBackendDeleteCookie)
-{
- INC_STATS("InspectorBackend.deleteCookie()");
- // FIXME: Not yet implemented. (see WebCore/bindings/js/JSInspectorBackendCustom.cpp#deleteCookie)
- return v8::Undefined();
-}
-
CALLBACK_FUNC_DECL(InspectorBackendWrapCallback)
{
INC_STATS("InspectorBackend.wrapCallback()");
return args[0];
}
-CALLBACK_FUNC_DECL(InspectorBackendNodeForId)
-{
- INC_STATS("InspectorBackend.nodeForId()");
- if (args.Length() < 1)
- return v8::Undefined();
-
- InspectorBackend* inspectorBackend = V8DOMWrapper::convertToNativeObject<InspectorBackend>(V8ClassIndex::INSPECTORBACKEND, args.Holder());
-
- Node* node = inspectorBackend->nodeForId(args[0]->ToInt32()->Value());
- if (!node)
- return v8::Undefined();
-
- InspectorController* ic = inspectorBackend->inspectorController();
- if (!ic)
- return v8::Undefined();
-
- return V8DOMWrapper::convertToV8Object(V8ClassIndex::NODE, node);
-}
-
-CALLBACK_FUNC_DECL(InspectorBackendIdForNode)
-{
- INC_STATS("InspectorBackend.idForNode()");
- if (args.Length() < 1)
- return v8::Undefined();
-
- InspectorBackend* inspectorBackend = V8DOMWrapper::convertToNativeObject<InspectorBackend>(V8ClassIndex::INSPECTORBACKEND, args.Holder());
- Node* node = V8DOMWrapper::convertDOMWrapperToNode<Node>(v8::Handle<v8::Object>::Cast(args[0]));
- if (node)
- return v8::Number::New(inspectorBackend->idForNode(node));
- return v8::Undefined();
-}
-
-CALLBACK_FUNC_DECL(InspectorBackendWrapObject)
-{
- INC_STATS("InspectorBackend.wrapObject()");
- if (args.Length() < 1)
- return v8::Undefined();
-
- InspectorBackend* inspectorBackend = V8DOMWrapper::convertToNativeObject<InspectorBackend>(V8ClassIndex::INSPECTORBACKEND, args.Holder());
- return inspectorBackend->wrapObject(ScriptValue(args[0])).v8Value();
-}
-
-CALLBACK_FUNC_DECL(InspectorBackendUnwrapObject)
-{
- INC_STATS("InspectorBackend.unwrapObject()");
- if (args.Length() < 1)
- return v8::Undefined();
-
- InspectorBackend* inspectorBackend = V8DOMWrapper::convertToNativeObject<InspectorBackend>(V8ClassIndex::INSPECTORBACKEND, args.Holder());
- return inspectorBackend->unwrapObject(toWebCoreStringWithNullCheck(args[0])).v8Value();
-}
-
-CALLBACK_FUNC_DECL(InspectorBackendPushNodePathToFrontend)
-{
- INC_STATS("InspectorBackend.pushNodePathToFrontend()");
- if (args.Length() < 2)
- return v8::Undefined();
-
- InspectorBackend* inspectorBackend = V8DOMWrapper::convertToNativeObject<InspectorBackend>(V8ClassIndex::INSPECTORBACKEND, args.Holder());
- Node* node = V8DOMWrapper::convertDOMWrapperToNode<Node>(v8::Handle<v8::Object>::Cast(args[0]));
- bool selectInUI = args[1]->ToBoolean()->Value();
- if (node)
- return v8::Number::New(inspectorBackend->pushNodePathToFrontend(node, selectInUI));
-
- return v8::Undefined();
-}
-
-#if ENABLE(DATABASE)
-CALLBACK_FUNC_DECL(InspectorBackendSelectDatabase)
-{
- INC_STATS("InspectorBackend.selectDatabase()");
- if (args.Length() < 1)
- return v8::Undefined();
-
- InspectorBackend* inspectorBackend = V8DOMWrapper::convertToNativeObject<InspectorBackend>(V8ClassIndex::INSPECTORBACKEND, args.Holder());
- Database* database = V8DOMWrapper::convertToNativeObject<Database>(V8ClassIndex::DATABASE, v8::Handle<v8::Object>::Cast(args[0]));
- if (database)
- inspectorBackend->selectDatabase(database);
-
- return v8::Undefined();
-}
-#endif
-
-#if ENABLE(DOM_STORAGE)
-CALLBACK_FUNC_DECL(InspectorBackendSelectDOMStorage)
-{
- INC_STATS("InspectorBackend.selectDOMStorage()");
- if (args.Length() < 1)
- return v8::Undefined();
-
- InspectorBackend* inspectorBackend = V8DOMWrapper::convertToNativeObject<InspectorBackend>(V8ClassIndex::INSPECTORBACKEND, args.Holder());
- Storage* storage = V8DOMWrapper::convertToNativeObject<Storage>(V8ClassIndex::STORAGE, v8::Handle<v8::Object>::Cast(args[0]));
- if (storage)
- inspectorBackend->selectDOMStorage(storage);
-
- return v8::Undefined();
-}
-#endif
-
} // namespace WebCore
diff --git a/WebCore/bridge/jni/jni_jsobject.mm b/WebCore/bridge/jni/jni_jsobject.mm
index eb4a6bd..c9af8b0 100644
--- a/WebCore/bridge/jni/jni_jsobject.mm
+++ b/WebCore/bridge/jni/jni_jsobject.mm
@@ -29,18 +29,19 @@
#if ENABLE(MAC_JAVA_BRIDGE)
#include "Frame.h"
-#include "ScriptController.h"
-#include "StringSourceProvider.h"
#include "WebCoreFrameView.h"
#include "jni_runtime.h"
#include "jni_utility.h"
+#include "ScriptController.h"
#include "runtime_object.h"
#include "runtime_root.h"
#include <interpreter/CallFrame.h>
-#include <runtime/Completion.h>
#include <runtime/JSGlobalObject.h>
#include <runtime/JSLock.h>
+#include <runtime/Completion.h>
+#include <runtime/Completion.h>
#include <wtf/Assertions.h>
+#include <parser/SourceProvider.h>
using WebCore::Frame;
diff --git a/WebCore/bridge/npapi.h b/WebCore/bridge/npapi.h
index 5991f5b..126d513 100644
--- a/WebCore/bridge/npapi.h
+++ b/WebCore/bridge/npapi.h
@@ -114,14 +114,6 @@
/* Definition of Basic Types */
/*----------------------------------------------------------------------*/
-/* QNX sets the _INT16 and friends defines, but does not typedef the types */
-#ifdef __QNXNTO__
-#undef _UINT16
-#undef _INT16
-#undef _UINT32
-#undef _INT32
-#endif
-
#ifndef _UINT16
#define _UINT16
typedef unsigned short uint16;
diff --git a/WebCore/bridge/objc/objc_runtime.mm b/WebCore/bridge/objc/objc_runtime.mm
index 67bd2a3..2d69c1c 100644
--- a/WebCore/bridge/objc/objc_runtime.mm
+++ b/WebCore/bridge/objc/objc_runtime.mm
@@ -209,7 +209,7 @@ void ObjcFallbackObjectImp::put(ExecState*, const Identifier&, JSValue, PutPrope
static JSValue JSC_HOST_CALL callObjCFallbackObject(ExecState* exec, JSObject* function, JSValue thisValue, const ArgList& args)
{
- if (!thisValue.inherits(&RuntimeObjectImp::s_info))
+ if (!thisValue.isObject(&RuntimeObjectImp::s_info))
return throwError(exec, TypeError);
JSValue result = jsUndefined();
diff --git a/WebCore/bridge/qt/qt_instance.cpp b/WebCore/bridge/qt/qt_instance.cpp
index 58280e3..506697a 100644
--- a/WebCore/bridge/qt/qt_instance.cpp
+++ b/WebCore/bridge/qt/qt_instance.cpp
@@ -56,12 +56,12 @@ public:
static const ClassInfo s_info;
- virtual void markChildren(MarkStack& markStack)
+ virtual void mark()
{
- RuntimeObjectImp::markChildren(markStack);
QtInstance* instance = static_cast<QtInstance*>(getInternalInstance());
if (instance)
- instance->markAggregate(markStack);
+ instance->mark();
+ RuntimeObjectImp::mark();
}
protected:
@@ -202,13 +202,13 @@ RuntimeObjectImp* QtInstance::createRuntimeObject(ExecState* exec)
return ret;
}
-void QtInstance::markAggregate(MarkStack& markStack)
+void QtInstance::mark()
{
- if (m_defaultMethod)
- markStack.append(m_defaultMethod);
+ if (m_defaultMethod && !m_defaultMethod->marked())
+ m_defaultMethod->mark();
foreach(JSObject* val, m_methods.values()) {
- if (val)
- markStack.append(val);
+ if (val && !val->marked())
+ val->mark();
}
}
diff --git a/WebCore/bridge/qt/qt_instance.h b/WebCore/bridge/qt/qt_instance.h
index c276b29..23766b1 100644
--- a/WebCore/bridge/qt/qt_instance.h
+++ b/WebCore/bridge/qt/qt_instance.h
@@ -48,7 +48,7 @@ public:
virtual JSValue valueOf(ExecState*) const;
virtual JSValue defaultValue(ExecState*, PreferredPrimitiveType) const;
- void markAggregate(MarkStack&);
+ virtual void mark(); // This isn't inherited
virtual JSValue invokeMethod(ExecState*, const MethodList&, const ArgList&);
diff --git a/WebCore/bridge/qt/qt_runtime.cpp b/WebCore/bridge/qt/qt_runtime.cpp
index 1590417..6be119c 100644
--- a/WebCore/bridge/qt/qt_runtime.cpp
+++ b/WebCore/bridge/qt/qt_runtime.cpp
@@ -20,7 +20,6 @@
#include "config.h"
#include "qt_runtime.h"
-#include "BooleanObject.h"
#include "DateInstance.h"
#include "DateMath.h"
#include "DatePrototype.h"
@@ -47,9 +46,9 @@
#include <JSFunction.h>
#include <limits.h>
#include <runtime.h>
-#include <runtime/Error.h>
#include <runtime_array.h>
#include <runtime_object.h>
+#include "BooleanObject.h"
// QtScript has these
Q_DECLARE_METATYPE(QObjectList);
@@ -1329,14 +1328,14 @@ QtRuntimeMetaMethod::QtRuntimeMetaMethod(ExecState* exec, const Identifier& iden
d->m_allowPrivate = allowPrivate;
}
-void QtRuntimeMetaMethod::markChildren(MarkStack& markStack)
+void QtRuntimeMetaMethod::mark()
{
- QtRuntimeMethod::markChildren(markStack);
+ QtRuntimeMethod::mark();
QW_D(QtRuntimeMetaMethod);
if (d->m_connect)
- markStack.append(d->m_connect);
+ d->m_connect->mark();
if (d->m_disconnect)
- markStack.append(d->m_disconnect);
+ d->m_disconnect->mark();
}
JSValue QtRuntimeMetaMethod::call(ExecState* exec, JSObject* functionObject, JSValue thisValue, const ArgList& args)
diff --git a/WebCore/bridge/qt/qt_runtime.h b/WebCore/bridge/qt/qt_runtime.h
index edb577c..72d93eb 100644
--- a/WebCore/bridge/qt/qt_runtime.h
+++ b/WebCore/bridge/qt/qt_runtime.h
@@ -167,7 +167,7 @@ public:
virtual bool getOwnPropertySlot(ExecState *, const Identifier&, PropertySlot&);
- virtual void markChildren(MarkStack& markStack);
+ virtual void mark();
protected:
QtRuntimeMetaMethodData* d_func() const {return reinterpret_cast<QtRuntimeMetaMethodData*>(d_ptr);}
diff --git a/WebCore/bridge/runtime_method.cpp b/WebCore/bridge/runtime_method.cpp
index 15ea582..0af0af5 100644
--- a/WebCore/bridge/runtime_method.cpp
+++ b/WebCore/bridge/runtime_method.cpp
@@ -82,13 +82,13 @@ static JSValue JSC_HOST_CALL callRuntimeMethod(ExecState* exec, JSObject* functi
RuntimeObjectImp* imp;
- if (thisValue.inherits(&RuntimeObjectImp::s_info)) {
+ if (thisValue.isObject(&RuntimeObjectImp::s_info)) {
imp = static_cast<RuntimeObjectImp*>(asObject(thisValue));
} else {
// If thisObj is the DOM object for a plugin, get the corresponding
// runtime object from the DOM object.
JSValue value = thisValue.get(exec, Identifier(exec, "__apple_runtime_object"));
- if (value.inherits(&RuntimeObjectImp::s_info))
+ if (value.isObject(&RuntimeObjectImp::s_info))
imp = static_cast<RuntimeObjectImp*>(asObject(value));
else
return throwError(exec, TypeError);
diff --git a/WebCore/css/CSSCanvasValue.cpp b/WebCore/css/CSSCanvasValue.cpp
index 0c1c3f9..cf8cb42 100644
--- a/WebCore/css/CSSCanvasValue.cpp
+++ b/WebCore/css/CSSCanvasValue.cpp
@@ -47,15 +47,15 @@ String CSSCanvasValue::cssText() const
void CSSCanvasValue::canvasChanged(HTMLCanvasElement*, const FloatRect& changedRect)
{
IntRect imageChangeRect = enclosingIntRect(changedRect);
- RenderObjectSizeCountMap::const_iterator end = m_clients.end();
- for (RenderObjectSizeCountMap::const_iterator curr = m_clients.begin(); curr != end; ++curr)
+ HashMap<RenderObject*, IntSize>::const_iterator end = m_clients.end();
+ for (HashMap<RenderObject*, IntSize>::const_iterator curr = m_clients.begin(); curr != end; ++curr)
curr->first->imageChanged(static_cast<WrappedImagePtr>(this), &imageChangeRect);
}
void CSSCanvasValue::canvasResized(HTMLCanvasElement*)
{
- RenderObjectSizeCountMap::const_iterator end = m_clients.end();
- for (RenderObjectSizeCountMap::const_iterator curr = m_clients.begin(); curr != end; ++curr)
+ HashMap<RenderObject*, IntSize>::const_iterator end = m_clients.end();
+ for (HashMap<RenderObject*, IntSize>::const_iterator curr = m_clients.begin(); curr != end; ++curr)
curr->first->imageChanged(static_cast<WrappedImagePtr>(this));
}
diff --git a/WebCore/css/CSSImageGeneratorValue.cpp b/WebCore/css/CSSImageGeneratorValue.cpp
index 4cf0873..6e23d95 100644
--- a/WebCore/css/CSSImageGeneratorValue.cpp
+++ b/WebCore/css/CSSImageGeneratorValue.cpp
@@ -49,42 +49,24 @@ void CSSImageGeneratorValue::addClient(RenderObject* renderer, const IntSize& si
ref();
if (!size.isEmpty())
m_sizes.add(size);
-
- RenderObjectSizeCountMap::iterator it = m_clients.find(renderer);
- if (it == m_clients.end())
- m_clients.add(renderer, SizeCountPair(size, 1));
- else {
- SizeCountPair& sizeCount = it->second;
- ++sizeCount.second;
- }
+ m_clients.add(renderer, size);
}
void CSSImageGeneratorValue::removeClient(RenderObject* renderer)
{
- RenderObjectSizeCountMap::iterator it = m_clients.find(renderer);
- ASSERT(it != m_clients.end());
-
- SizeCountPair& sizeCount = it->second;
- IntSize size = sizeCount.first;
+ IntSize size = m_clients.get(renderer);
if (!size.isEmpty()) {
m_sizes.remove(size);
if (!m_sizes.contains(size))
m_images.remove(size);
}
-
- if (!--sizeCount.second)
- m_clients.remove(renderer);
-
+ m_clients.remove(renderer);
deref();
}
Image* CSSImageGeneratorValue::getImage(RenderObject* renderer, const IntSize& size)
{
- RenderObjectSizeCountMap::iterator it = m_clients.find(renderer);
- ASSERT(it != m_clients.end());
-
- SizeCountPair& sizeCount = it->second;
- IntSize oldSize = sizeCount.first;
+ IntSize oldSize = m_clients.get(renderer);
if (oldSize != size) {
removeClient(renderer);
addClient(renderer, size);
diff --git a/WebCore/css/CSSImageGeneratorValue.h b/WebCore/css/CSSImageGeneratorValue.h
index c053bfe..661fd37 100644
--- a/WebCore/css/CSSImageGeneratorValue.h
+++ b/WebCore/css/CSSImageGeneratorValue.h
@@ -57,11 +57,8 @@ protected:
Image* getImage(RenderObject*, const IntSize&);
void putImage(const IntSize&, PassRefPtr<Image>);
- typedef pair<IntSize, int> SizeCountPair;
- typedef HashMap<RenderObject*, SizeCountPair> RenderObjectSizeCountMap;
-
HashCountedSet<IntSize> m_sizes; // A count of how many times a given image size is in use.
- RenderObjectSizeCountMap m_clients; // A map from RenderObjects (with entry count) to image sizes.
+ HashMap<RenderObject*, IntSize> m_clients; // A map from RenderObjects to image sizes.
HashMap<IntSize, RefPtr<Image> > m_images; // A cache of Image objects by image size.
RefPtr<StyleGeneratedImage> m_image;
diff --git a/WebCore/css/CSSImportRule.cpp b/WebCore/css/CSSImportRule.cpp
index adcfbb9..50e60f4 100644
--- a/WebCore/css/CSSImportRule.cpp
+++ b/WebCore/css/CSSImportRule.cpp
@@ -1,7 +1,7 @@
/*
* (C) 1999-2003 Lars Knoll (knoll@kde.org)
* (C) 2002-2003 Dirk Mueller (mueller@kde.org)
- * Copyright (C) 2002, 2005, 2006, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2002, 2005, 2006, 2008 Apple Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -26,8 +26,6 @@
#include "DocLoader.h"
#include "Document.h"
#include "MediaList.h"
-#include "Settings.h"
-#include <wtf/StdLibExtras.h>
namespace WebCore {
@@ -62,20 +60,7 @@ void CSSImportRule::setCSSStyleSheet(const String& url, const String& charset, c
CSSStyleSheet* parent = parentStyleSheet();
bool strict = !parent || parent->useStrictParsing();
- String sheetText = sheet->sheetText(strict);
- m_styleSheet->parseString(sheetText, strict);
-
- if (strict && parent && parent->doc() && parent->doc()->settings() && parent->doc()->settings()->needsSiteSpecificQuirks()) {
- // Work around <https://bugs.webkit.org/show_bug.cgi?id=28350>.
- DEFINE_STATIC_LOCAL(const String, slashKHTMLFixesDotCss, ("/KHTMLFixes.css"));
- DEFINE_STATIC_LOCAL(const String, mediaWikiKHTMLFixesStyleSheet, ("/* KHTML fix stylesheet */\n/* work around the horizontal scrollbars */\n#column-content { margin-left: 0; }\n\n"));
- if (url.endsWith(slashKHTMLFixesDotCss) && sheetText == mediaWikiKHTMLFixesStyleSheet) {
- ASSERT(m_styleSheet->length() == 1);
- ExceptionCode ec;
- m_styleSheet->deleteRule(0, ec);
- }
- }
-
+ m_styleSheet->parseString(sheet->sheetText(strict), strict);
m_loading = false;
if (parent)
diff --git a/WebCore/css/CSSParser.cpp b/WebCore/css/CSSParser.cpp
index b299fcf..b79992f 100644
--- a/WebCore/css/CSSParser.cpp
+++ b/WebCore/css/CSSParser.cpp
@@ -4,7 +4,6 @@
* Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
* Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com>
* Copyright (C) 2008 Eric Seidel <eric@webkit.org>
- * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -748,11 +747,7 @@ bool CSSParser::parseValue(int propId, bool important)
// inline | block | list-item | run-in | inline-block | table |
// inline-table | table-row-group | table-header-group | table-footer-group | table-row |
// table-column-group | table-column | table-cell | table-caption | box | inline-box | none | inherit
-#if ENABLE(WCSS)
- if ((id >= CSSValueInline && id <= CSSValueWapMarquee) || id == CSSValueNone)
-#else
if ((id >= CSSValueInline && id <= CSSValueWebkitInlineBox) || id == CSSValueNone)
-#endif
valid_primitive = true;
break;
@@ -1318,28 +1313,6 @@ bool CSSParser::parseValue(int propId, bool important)
else
valid_primitive = validUnit(value, FTime|FInteger|FNonNeg, m_strict);
break;
-#if ENABLE(WCSS)
- case CSSPropertyWapMarqueeDir:
- if (id == CSSValueLtr || id == CSSValueRtl)
- valid_primitive = true;
- break;
- case CSSPropertyWapMarqueeStyle:
- if (id == CSSValueNone || id == CSSValueSlide || id == CSSValueScroll || id == CSSValueAlternate)
- valid_primitive = true;
- break;
- case CSSPropertyWapMarqueeLoop:
- if (id == CSSValueInfinite)
- valid_primitive = true;
- else
- valid_primitive = validUnit(value, FInteger | FNonNeg, m_strict);
- break;
- case CSSPropertyWapMarqueeSpeed:
- if (id == CSSValueNormal || id == CSSValueSlow || id == CSSValueFast)
- valid_primitive = true;
- else
- valid_primitive = validUnit(value, FTime | FInteger | FNonNeg, m_strict);
- break;
-#endif
case CSSPropertyWebkitUserDrag: // auto | none | element
if (id == CSSValueAuto || id == CSSValueNone || id == CSSValueElement)
valid_primitive = true;
diff --git a/WebCore/css/CSSPrimitiveValue.cpp b/WebCore/css/CSSPrimitiveValue.cpp
index 1f2c9ca..6343dac 100644
--- a/WebCore/css/CSSPrimitiveValue.cpp
+++ b/WebCore/css/CSSPrimitiveValue.cpp
@@ -643,7 +643,7 @@ Rect* CSSPrimitiveValue::getRectValue(ExceptionCode& ec) const
return m_value.rect;
}
-PassRefPtr<RGBColor> CSSPrimitiveValue::getRGBColorValue(ExceptionCode& ec) const
+RGBColor* CSSPrimitiveValue::getRGBColorValue(ExceptionCode& ec) const
{
ec = 0;
if (m_type != CSS_RGBCOLOR) {
@@ -652,7 +652,7 @@ PassRefPtr<RGBColor> CSSPrimitiveValue::getRGBColorValue(ExceptionCode& ec) cons
}
// FIMXE: This should not return a new object for each invocation.
- return RGBColor::create(m_value.rgbcolor);
+ return RGBColor::create(m_value.rgbcolor).releaseRef();
}
Pair* CSSPrimitiveValue::getPairValue(ExceptionCode& ec) const
diff --git a/WebCore/css/CSSPrimitiveValue.h b/WebCore/css/CSSPrimitiveValue.h
index d417619..85a0ba3 100644
--- a/WebCore/css/CSSPrimitiveValue.h
+++ b/WebCore/css/CSSPrimitiveValue.h
@@ -152,7 +152,7 @@ public:
Rect* getRectValue(ExceptionCode&) const;
Rect* getRectValue() const { return m_type != CSS_RECT ? 0 : m_value.rect; }
- PassRefPtr<RGBColor> getRGBColorValue(ExceptionCode&) const;
+ RGBColor* getRGBColorValue(ExceptionCode&) const;
RGBA32 getRGBA32Value() const { return m_type != CSS_RGBCOLOR ? 0 : m_value.rgbcolor; }
Pair* getPairValue(ExceptionCode&) const;
diff --git a/WebCore/css/CSSPrimitiveValueMappings.h b/WebCore/css/CSSPrimitiveValueMappings.h
index be96407..69cfbb1 100644
--- a/WebCore/css/CSSPrimitiveValueMappings.h
+++ b/WebCore/css/CSSPrimitiveValueMappings.h
@@ -1,7 +1,6 @@
/*
* Copyright (C) 2007 Alexey Proskuryakov <ap@nypop.com>.
* Copyright (C) 2008 Apple Inc. All rights reserved.
- * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/)
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -523,7 +522,6 @@ template<> inline CSSPrimitiveValue::operator EBoxOrient() const
case CSSValueInlineAxis:
return HORIZONTAL;
case CSSValueVertical:
- case CSSValueBlockAxis:
return VERTICAL;
default:
ASSERT_NOT_REACHED();
@@ -779,11 +777,6 @@ template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EDisplay e)
case TABLE_CAPTION:
m_value.ident = CSSValueTableCaption;
break;
-#if ENABLE(WCSS)
- case WAP_MARQUEE:
- m_value.ident = CSSValueWapMarquee;
- break;
-#endif
case BOX:
m_value.ident = CSSValueWebkitBox;
break;
diff --git a/WebCore/css/CSSRuleList.idl b/WebCore/css/CSSRuleList.idl
index 9add078..224d6a1 100644
--- a/WebCore/css/CSSRuleList.idl
+++ b/WebCore/css/CSSRuleList.idl
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2006, 2007, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -27,7 +27,6 @@ module css {
// Introduced in DOM Level 2:
interface [
- CustomMarkFunction,
GenerateConstructor,
HasIndexGetter,
InterfaceUUID=64c346a0-1e34-49d3-9472-57ec8e0fdccb,
diff --git a/WebCore/css/CSSSelector.cpp b/WebCore/css/CSSSelector.cpp
index 25dbd87..80910a7 100644
--- a/WebCore/css/CSSSelector.cpp
+++ b/WebCore/css/CSSSelector.cpp
@@ -77,7 +77,6 @@ void CSSSelector::extractPseudoType() const
DEFINE_STATIC_LOCAL(AtomicString, before, ("before"));
DEFINE_STATIC_LOCAL(AtomicString, checked, ("checked"));
DEFINE_STATIC_LOCAL(AtomicString, fileUploadButton, ("-webkit-file-upload-button"));
- DEFINE_STATIC_LOCAL(AtomicString, defaultString, ("default"));
DEFINE_STATIC_LOCAL(AtomicString, disabled, ("disabled"));
DEFINE_STATIC_LOCAL(AtomicString, readOnly, ("read-only"));
DEFINE_STATIC_LOCAL(AtomicString, readWrite, ("read-write"));
@@ -171,9 +170,7 @@ void CSSSelector::extractPseudoType() const
else if (m_value == fileUploadButton) {
m_pseudoType = PseudoFileUploadButton;
element = true;
- } else if (m_value == defaultString)
- m_pseudoType = PseudoDefault;
- else if (m_value == disabled)
+ } else if (m_value == disabled)
m_pseudoType = PseudoDisabled;
else if (m_value == readOnly)
m_pseudoType = PseudoReadOnly;
diff --git a/WebCore/css/CSSSelector.h b/WebCore/css/CSSSelector.h
index 53de50d..18251fd 100644
--- a/WebCore/css/CSSSelector.h
+++ b/WebCore/css/CSSSelector.h
@@ -126,7 +126,6 @@ namespace WebCore {
PseudoChecked,
PseudoEnabled,
PseudoFullPageMedia,
- PseudoDefault,
PseudoDisabled,
PseudoInputPlaceholder,
PseudoOptional,
diff --git a/WebCore/css/CSSStyleDeclaration.idl b/WebCore/css/CSSStyleDeclaration.idl
index 3e37418..f7ce37f 100644
--- a/WebCore/css/CSSStyleDeclaration.idl
+++ b/WebCore/css/CSSStyleDeclaration.idl
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2006, 2007, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
* Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
*
* This library is free software; you can redistribute it and/or
@@ -22,7 +22,6 @@ module css {
// Introduced in DOM Level 2:
interface [
- CustomMarkFunction,
GenerateConstructor,
DelegatingPutFunction,
HasNameGetter,
diff --git a/WebCore/css/CSSStyleSelector.cpp b/WebCore/css/CSSStyleSelector.cpp
index 2f7d900..9074476 100644
--- a/WebCore/css/CSSStyleSelector.cpp
+++ b/WebCore/css/CSSStyleSelector.cpp
@@ -995,9 +995,6 @@ bool CSSStyleSelector::canShareStyleWithElement(Node* n)
if (s->isEnabledFormControl() != m_element->isEnabledFormControl())
return false;
-
- if (s->isDefaultButtonForForm() != m_element->isDefaultButtonForForm())
- return false;
}
if (style->transitions() || style->animations())
@@ -2361,8 +2358,6 @@ bool CSSStyleSelector::SelectorChecker::checkOneSelector(CSSSelector* sel, Eleme
case CSSSelector::PseudoFullPageMedia:
return e && e->document() && e->document()->isMediaDocument();
break;
- case CSSSelector::PseudoDefault:
- return e && e->isDefaultButtonForForm();
case CSSSelector::PseudoDisabled:
if (e && e->isFormControlElement()) {
InputElement* inputElement = toInputElement(e);
@@ -2996,26 +2991,6 @@ void CSSStyleSelector::applyProperty(int id, CSSValue *value)
return;
case CSSPropertyDisplay:
HANDLE_INHERIT_AND_INITIAL_AND_PRIMITIVE(display, Display)
-#if ENABLE(WCSS)
- if (primitiveValue) {
- if (primitiveValue->getIdent() == CSSValueWapMarquee) {
- // Initialize Wap Marquee style
- m_style->setOverflowX(OMARQUEE);
- m_style->setOverflowY(OMARQUEE);
- m_style->setWhiteSpace(NOWRAP);
- m_style->setMarqueeDirection(MLEFT);
- m_style->setMarqueeSpeed(85); // Normal speed
- m_style->setMarqueeLoopCount(1);
- m_style->setMarqueeBehavior(MSCROLL);
-
- if (m_parentStyle)
- m_style->setDisplay(m_parentStyle->display());
- else
- m_style->setDisplay(*primitiveValue);
- } else
- m_style->setDisplay(*primitiveValue);
- }
-#endif
return;
case CSSPropertyEmptyCells:
HANDLE_INHERIT_AND_INITIAL_AND_PRIMITIVE(emptyCells, EmptyCells)
@@ -3779,6 +3754,7 @@ void CSSStyleSelector::applyProperty(int id, CSSValue *value)
{
FontDescription fontDescription = m_style->fontDescription();
fontDescription.setKeywordSize(0);
+ bool familyIsFixed = fontDescription.genericFamily() == FontDescription::MonospaceFamily;
float oldSize = 0;
float size = 0;
@@ -3793,7 +3769,7 @@ void CSSStyleSelector::applyProperty(int id, CSSValue *value)
if (m_parentNode)
fontDescription.setKeywordSize(m_parentStyle->fontDescription().keywordSize());
} else if (isInitial) {
- size = fontSizeForKeyword(CSSValueMedium, m_style->htmlHacks(), fontDescription.useFixedDefaultSize());
+ size = fontSizeForKeyword(CSSValueMedium, m_style->htmlHacks(), familyIsFixed);
fontDescription.setKeywordSize(CSSValueMedium - CSSValueXxSmall + 1);
} else if (primitiveValue->getIdent()) {
// Keywords are being used.
@@ -3806,7 +3782,7 @@ void CSSStyleSelector::applyProperty(int id, CSSValue *value)
case CSSValueXLarge:
case CSSValueXxLarge:
case CSSValueWebkitXxxLarge:
- size = fontSizeForKeyword(primitiveValue->getIdent(), m_style->htmlHacks(), fontDescription.useFixedDefaultSize());
+ size = fontSizeForKeyword(primitiveValue->getIdent(), m_style->htmlHacks(), familyIsFixed);
fontDescription.setKeywordSize(primitiveValue->getIdent() - CSSValueXxSmall + 1);
break;
case CSSValueLarger:
@@ -4049,12 +4025,13 @@ void CSSStyleSelector::applyProperty(int id, CSSValue *value)
if (m_style->setFontDescription(fontDescription))
m_fontDirty = true;
return;
- } else if (isInitial) {
+ }
+ else if (isInitial) {
FontDescription initialDesc = FontDescription();
FontDescription fontDescription = m_style->fontDescription();
// We need to adjust the size to account for the generic family change from monospace
// to non-monospace.
- if (fontDescription.keywordSize() && fontDescription.useFixedDefaultSize())
+ if (fontDescription.keywordSize() && fontDescription.genericFamily() == FontDescription::MonospaceFamily)
setFontSize(fontDescription, fontSizeForKeyword(CSSValueXxSmall + fontDescription.keywordSize() - 1, m_style->htmlHacks(), false));
fontDescription.setGenericFamily(initialDesc.genericFamily());
if (!initialDesc.firstFamily().familyIsEmpty())
@@ -4064,23 +4041,21 @@ void CSSStyleSelector::applyProperty(int id, CSSValue *value)
return;
}
- if (!value->isValueList())
- return;
+ if (!value->isValueList()) return;
FontDescription fontDescription = m_style->fontDescription();
- CSSValueList* list = static_cast<CSSValueList*>(value);
+ CSSValueList *list = static_cast<CSSValueList*>(value);
int len = list->length();
FontFamily& firstFamily = fontDescription.firstFamily();
- FontFamily* currFamily = 0;
+ FontFamily *currFamily = 0;
// Before mapping in a new font-family property, we should reset the generic family.
- bool oldFamilyUsedFixedDefaultSize = fontDescription.useFixedDefaultSize();
+ bool oldFamilyIsMonospace = fontDescription.genericFamily() == FontDescription::MonospaceFamily;
fontDescription.setGenericFamily(FontDescription::NoFamily);
for (int i = 0; i < len; i++) {
- CSSValue* item = list->itemWithoutBoundsCheck(i);
- if (!item->isPrimitiveValue())
- continue;
- CSSPrimitiveValue* val = static_cast<CSSPrimitiveValue*>(item);
+ CSSValue *item = list->itemWithoutBoundsCheck(i);
+ if (!item->isPrimitiveValue()) continue;
+ CSSPrimitiveValue *val = static_cast<CSSPrimitiveValue*>(item);
AtomicString face;
Settings* settings = m_checker.m_document->settings();
if (val->primitiveType() == CSSPrimitiveValue::CSS_STRING)
@@ -4112,32 +4087,28 @@ void CSSStyleSelector::applyProperty(int id, CSSValue *value)
break;
}
}
-
+
if (!face.isEmpty()) {
if (!currFamily) {
// Filling in the first family.
firstFamily.setFamily(face);
- firstFamily.appendFamily(0); // Remove any inherited family-fallback list.
currFamily = &firstFamily;
- } else {
+ }
+ else {
RefPtr<SharedFontFamily> newFamily = SharedFontFamily::create();
newFamily->setFamily(face);
currFamily->appendFamily(newFamily);
currFamily = newFamily.get();
}
+
+ if (fontDescription.keywordSize() && (fontDescription.genericFamily() == FontDescription::MonospaceFamily) != oldFamilyIsMonospace)
+ setFontSize(fontDescription, fontSizeForKeyword(CSSValueXxSmall + fontDescription.keywordSize() - 1, m_style->htmlHacks(), !oldFamilyIsMonospace));
+
+ if (m_style->setFontDescription(fontDescription))
+ m_fontDirty = true;
}
}
-
- // We can't call useFixedDefaultSize() until all new font families have been added
- // If currFamily is non-zero then we set at least one family on this description.
- if (currFamily) {
- if (fontDescription.keywordSize() && fontDescription.useFixedDefaultSize() != oldFamilyUsedFixedDefaultSize)
- setFontSize(fontDescription, fontSizeForKeyword(CSSValueXxSmall + fontDescription.keywordSize() - 1, m_style->htmlHacks(), !oldFamilyUsedFixedDefaultSize));
-
- if (m_style->setFontDescription(fontDescription))
- m_fontDirty = true;
- }
- return;
+ return;
}
case CSSPropertyTextDecoration: {
// list of ident
@@ -4771,9 +4742,6 @@ void CSSStyleSelector::applyProperty(int id, CSSValue *value)
m_style->setMarqueeLoopCount(m_parentStyle->marqueeLoopCount());
m_style->setMarqueeBehavior(m_parentStyle->marqueeBehavior());
return;
-#if ENABLE(WCSS)
- case CSSPropertyWapMarqueeLoop:
-#endif
case CSSPropertyWebkitMarqueeRepetition: {
HANDLE_INHERIT_AND_INITIAL(marqueeLoopCount, MarqueeLoopCount)
if (!primitiveValue)
@@ -4784,9 +4752,6 @@ void CSSStyleSelector::applyProperty(int id, CSSValue *value)
m_style->setMarqueeLoopCount(primitiveValue->getIntValue());
return;
}
-#if ENABLE(WCSS)
- case CSSPropertyWapMarqueeSpeed:
-#endif
case CSSPropertyWebkitMarqueeSpeed: {
HANDLE_INHERIT_AND_INITIAL(marqueeSpeed, MarqueeSpeed)
if (!primitiveValue)
@@ -4837,30 +4802,9 @@ void CSSStyleSelector::applyProperty(int id, CSSValue *value)
}
return;
}
-#if ENABLE(WCSS)
- case CSSPropertyWapMarqueeStyle:
-#endif
case CSSPropertyWebkitMarqueeStyle:
HANDLE_INHERIT_AND_INITIAL_AND_PRIMITIVE(marqueeBehavior, MarqueeBehavior)
return;
-#if ENABLE(WCSS)
- case CSSPropertyWapMarqueeDir:
- HANDLE_INHERIT_AND_INITIAL(marqueeDirection, MarqueeDirection)
- if (primitiveValue && primitiveValue->getIdent()) {
- switch (primitiveValue->getIdent()) {
- case CSSValueLtr:
- m_style->setMarqueeDirection(MRIGHT);
- break;
- case CSSValueRtl:
- m_style->setMarqueeDirection(MLEFT);
- break;
- default:
- m_style->setMarqueeDirection(*primitiveValue);
- break;
- }
- }
- return;
-#endif
case CSSPropertyWebkitMarqueeDirection:
HANDLE_INHERIT_AND_INITIAL_AND_PRIMITIVE(marqueeDirection, MarqueeDirection)
return;
@@ -5643,7 +5587,8 @@ void CSSStyleSelector::checkForGenericFamilyChange(RenderStyle* style, RenderSty
return;
const FontDescription& parentFont = parentStyle->fontDescription();
- if (childFont.useFixedDefaultSize() == parentFont.useFixedDefaultSize())
+
+ if (childFont.genericFamily() == parentFont.genericFamily())
return;
// For now, lump all families but monospace together.
@@ -5656,16 +5601,17 @@ void CSSStyleSelector::checkForGenericFamilyChange(RenderStyle* style, RenderSty
// If the font uses a keyword size, then we refetch from the table rather than
// multiplying by our scale factor.
float size;
- if (childFont.keywordSize())
- size = fontSizeForKeyword(CSSValueXxSmall + childFont.keywordSize() - 1, style->htmlHacks(), childFont.useFixedDefaultSize());
- else {
+ if (childFont.keywordSize()) {
+ size = fontSizeForKeyword(CSSValueXxSmall + childFont.keywordSize() - 1, style->htmlHacks(),
+ childFont.genericFamily() == FontDescription::MonospaceFamily);
+ } else {
Settings* settings = m_checker.m_document->settings();
float fixedScaleFactor = settings
? static_cast<float>(settings->defaultFixedFontSize()) / settings->defaultFontSize()
: 1;
- size = parentFont.useFixedDefaultSize() ?
- childFont.specifiedSize() / fixedScaleFactor :
- childFont.specifiedSize() * fixedScaleFactor;
+ size = (parentFont.genericFamily() == FontDescription::MonospaceFamily) ?
+ childFont.specifiedSize()/fixedScaleFactor :
+ childFont.specifiedSize()*fixedScaleFactor;
}
FontDescription newFontDescription(childFont);
diff --git a/WebCore/css/CSSValueKeywords.in b/WebCore/css/CSSValueKeywords.in
index 621276b..c0b52f2 100644
--- a/WebCore/css/CSSValueKeywords.in
+++ b/WebCore/css/CSSValueKeywords.in
@@ -260,7 +260,6 @@ table-cell
table-caption
-webkit-box
-webkit-inline-box
--wap-marquee
#none
#
# CSS_PROP_CURSOR:
diff --git a/WebCore/css/StyleSheetList.idl b/WebCore/css/StyleSheetList.idl
index 574d749..2abd22f 100644
--- a/WebCore/css/StyleSheetList.idl
+++ b/WebCore/css/StyleSheetList.idl
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2006, 2007, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
* Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
*
* This library is free software; you can redistribute it and/or
@@ -22,7 +22,6 @@ module stylesheets {
// Introduced in DOM Level 2:
interface [
- CustomMarkFunction,
GenerateConstructor,
HasIndexGetter,
HasNameGetter,
diff --git a/WebCore/css/WCSSPropertyNames.in b/WebCore/css/WCSSPropertyNames.in
deleted file mode 100644
index 704209f..0000000
--- a/WebCore/css/WCSSPropertyNames.in
+++ /dev/null
@@ -1,4 +0,0 @@
--wap-marquee-dir
--wap-marquee-loop
--wap-marquee-speed
--wap-marquee-style
diff --git a/WebCore/css/WCSSValueKeywords.in b/WebCore/css/WCSSValueKeywords.in
deleted file mode 100644
index 00657ba..0000000
--- a/WebCore/css/WCSSValueKeywords.in
+++ /dev/null
@@ -1 +0,0 @@
-# place holder for all WCSS specific CSS value keywords
diff --git a/WebCore/css/html.css b/WebCore/css/html.css
index 3d0b667..6b03390 100644
--- a/WebCore/css/html.css
+++ b/WebCore/css/html.css
@@ -483,10 +483,6 @@ select[size="1"] {
white-space: pre;
}
-datalist {
- display: none;
-}
-
optgroup {
font-weight: bolder;
}
diff --git a/WebCore/dom/Attr.cpp b/WebCore/dom/Attr.cpp
index aa5916b..435c1af 100644
--- a/WebCore/dom/Attr.cpp
+++ b/WebCore/dom/Attr.cpp
@@ -3,7 +3,7 @@
* (C) 1999 Antti Koivisto (koivisto@kde.org)
* (C) 2001 Peter Kelly (pmk@post.com)
* (C) 2001 Dirk Mueller (mueller@kde.org)
- * Copyright (C) 2004, 2005, 2006, 2007, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -30,10 +30,10 @@
namespace WebCore {
-inline Attr::Attr(Element* element, Document* document, PassRefPtr<Attribute> attribute)
- : ContainerNode(document)
+Attr::Attr(Element* element, Document* docPtr, PassRefPtr<Attribute> a)
+ : ContainerNode(docPtr)
, m_element(element)
- , m_attribute(attribute)
+ , m_attribute(a)
, m_ignoreChildrenChanged(0)
, m_specified(true)
{
@@ -41,13 +41,6 @@ inline Attr::Attr(Element* element, Document* document, PassRefPtr<Attribute> at
m_attribute->m_impl = this;
}
-PassRefPtr<Attr> Attr::create(Element* element, Document* document, PassRefPtr<Attribute> attribute)
-{
- RefPtr<Attr> attr = adoptRef(new Attr(element, document, attribute));
- attr->createTextChild();
- return attr.release();
-}
-
Attr::~Attr()
{
ASSERT(m_attribute->attr() == this);
@@ -93,14 +86,14 @@ const AtomicString& Attr::prefix() const
return m_attribute->prefix();
}
-void Attr::setPrefix(const AtomicString& prefix, ExceptionCode& ec)
+void Attr::setPrefix(const AtomicString &_prefix, ExceptionCode& ec)
{
ec = 0;
- checkSetPrefix(prefix, ec);
+ checkSetPrefix(_prefix, ec);
if (ec)
return;
- m_attribute->setPrefix(prefix);
+ m_attribute->setPrefix(_prefix);
}
String Attr::nodeValue() const
@@ -108,11 +101,11 @@ String Attr::nodeValue() const
return value();
}
-void Attr::setValue(const AtomicString& value, ExceptionCode&)
+void Attr::setValue(const String& v, ExceptionCode&)
{
m_ignoreChildrenChanged++;
removeChildren();
- m_attribute->setValue(value);
+ m_attribute->setValue(v.impl());
createTextChild();
m_ignoreChildrenChanged--;
@@ -127,7 +120,7 @@ void Attr::setNodeValue(const String& v, ExceptionCode& ec)
PassRefPtr<Node> Attr::cloneNode(bool /*deep*/)
{
- RefPtr<Attr> clone = adoptRef(new Attr(0, document(), m_attribute->clone()));
+ RefPtr<Attr> clone = new Attr(0, document(), m_attribute->clone());
cloneChildNodes(clone.get());
return clone.release();
}
diff --git a/WebCore/dom/Attr.h b/WebCore/dom/Attr.h
index e927a6e..ed4dc07 100644
--- a/WebCore/dom/Attr.h
+++ b/WebCore/dom/Attr.h
@@ -3,7 +3,7 @@
* (C) 1999 Antti Koivisto (koivisto@kde.org)
* (C) 2001 Peter Kelly (pmk@post.com)
* (C) 2001 Dirk Mueller (mueller@kde.org)
- * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -39,47 +39,48 @@ namespace WebCore {
class Attr : public ContainerNode {
friend class NamedNodeMap;
public:
- static PassRefPtr<Attr> create(Element*, Document*, PassRefPtr<Attribute>);
- virtual ~Attr();
+ Attr(Element*, Document*, PassRefPtr<Attribute>);
+ ~Attr();
+ // Call this after calling the constructor so the
+ // Attr node isn't floating when we append the text node.
+ void createTextChild();
+
+ // DOM methods & attributes for Attr
String name() const { return qualifiedName().toString(); }
bool specified() const { return m_specified; }
Element* ownerElement() const { return m_element; }
- const AtomicString& value() const { return m_attribute->value(); }
- void setValue(const AtomicString&, ExceptionCode&);
-
- Attribute* attr() const { return m_attribute.get(); }
- const QualifiedName& qualifiedName() const { return m_attribute->name(); }
-
- // An extension to get presentational information for attributes.
- CSSStyleDeclaration* style() { return m_attribute->style(); }
-
- void setSpecified(bool specified) { m_specified = specified; }
-
-private:
- Attr(Element*, Document*, PassRefPtr<Attribute>);
-
- void createTextChild();
+ String value() const { return m_attribute->value(); }
+ void setValue(const String&, ExceptionCode&);
+ // DOM methods overridden from parent classes
virtual String nodeName() const;
virtual NodeType nodeType() const;
-
const AtomicString& localName() const;
const AtomicString& namespaceURI() const;
const AtomicString& prefix() const;
-
virtual void setPrefix(const AtomicString&, ExceptionCode&);
virtual String nodeValue() const;
virtual void setNodeValue(const String&, ExceptionCode&);
virtual PassRefPtr<Node> cloneNode(bool deep);
+ // Other methods (not part of DOM)
virtual bool isAttributeNode() const { return true; }
virtual bool childTypeAllowed(NodeType);
virtual void childrenChanged(bool changedByParser = false, Node* beforeChange = 0, Node* afterChange = 0, int childCountDelta = 0);
+ Attribute* attr() const { return m_attribute.get(); }
+ const QualifiedName& qualifiedName() const { return m_attribute->name(); }
+
+ // An extension to get presentational information for attributes.
+ CSSStyleDeclaration* style() { return m_attribute->style(); }
+
+ void setSpecified(bool specified) { m_specified = specified; }
+
+private:
virtual const AtomicString& virtualPrefix() const { return prefix(); }
virtual const AtomicString& virtualLocalName() const { return localName(); }
virtual const AtomicString& virtualNamespaceURI() const { return namespaceURI(); }
diff --git a/WebCore/dom/Attribute.cpp b/WebCore/dom/Attribute.cpp
index 0ab0bb6..048ac6a 100644
--- a/WebCore/dom/Attribute.cpp
+++ b/WebCore/dom/Attribute.cpp
@@ -37,8 +37,10 @@ PassRefPtr<Attribute> Attribute::clone() const
PassRefPtr<Attr> Attribute::createAttrIfNeeded(Element* e)
{
RefPtr<Attr> r = m_impl;
- if (!r)
- r = Attr::create(e, e->document(), this);
+ if (!r) {
+ r = new Attr(e, e->document(), this);
+ r->createTextChild();
+ }
return r.release();
}
diff --git a/WebCore/dom/CDATASection.cpp b/WebCore/dom/CDATASection.cpp
index d73054e..72faa70 100644
--- a/WebCore/dom/CDATASection.cpp
+++ b/WebCore/dom/CDATASection.cpp
@@ -1,7 +1,7 @@
/*
* Copyright (C) 1999 Lars Knoll (knoll@kde.org)
* (C) 1999 Antti Koivisto (koivisto@kde.org)
- * Copyright (C) 2003, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2003, 2008 Apple Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -26,14 +26,13 @@
namespace WebCore {
-inline CDATASection::CDATASection(Document* document, const String& data)
- : Text(document, data)
+CDATASection::CDATASection(Document* document, const String& text)
+ : Text(document, text)
{
}
-PassRefPtr<CDATASection> CDATASection::create(Document* document, const String& data)
+CDATASection::~CDATASection()
{
- return adoptRef(new CDATASection(document, data));
}
String CDATASection::nodeName() const
@@ -48,17 +47,19 @@ Node::NodeType CDATASection::nodeType() const
PassRefPtr<Node> CDATASection::cloneNode(bool /*deep*/)
{
- return create(document(), data());
+ return new CDATASection(document(), m_data);
}
+// DOM Section 1.1.1
bool CDATASection::childTypeAllowed(NodeType)
{
return false;
}
-PassRefPtr<Text> CDATASection::virtualCreate(const String& data)
+PassRefPtr<Text> CDATASection::createNew(PassRefPtr<StringImpl> string)
{
- return create(document(), data);
+ return new CDATASection(document(), string);
}
+
} // namespace WebCore
diff --git a/WebCore/dom/CDATASection.h b/WebCore/dom/CDATASection.h
index 5cf07e1..8b7df9d 100644
--- a/WebCore/dom/CDATASection.h
+++ b/WebCore/dom/CDATASection.h
@@ -1,7 +1,9 @@
/*
+ * This file is part of the DOM implementation for KDE.
+ *
* Copyright (C) 1999 Lars Knoll (knoll@kde.org)
* (C) 1999 Antti Koivisto (koivisto@kde.org)
- * Copyright (C) 2003, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2003 Apple Computer, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -29,16 +31,16 @@ namespace WebCore {
class CDATASection : public Text {
public:
- static PassRefPtr<CDATASection> create(Document*, const String&);
-
-private:
CDATASection(Document*, const String&);
+ virtual ~CDATASection();
virtual String nodeName() const;
virtual NodeType nodeType() const;
virtual PassRefPtr<Node> cloneNode(bool deep);
virtual bool childTypeAllowed(NodeType);
- virtual PassRefPtr<Text> virtualCreate(const String&);
+
+protected:
+ virtual PassRefPtr<Text> createNew(PassRefPtr<StringImpl>);
};
} // namespace WebCore
diff --git a/WebCore/dom/CharacterData.cpp b/WebCore/dom/CharacterData.cpp
index 902b7ff..9a72de9 100644
--- a/WebCore/dom/CharacterData.cpp
+++ b/WebCore/dom/CharacterData.cpp
@@ -1,7 +1,7 @@
/*
* Copyright (C) 1999 Lars Knoll (knoll@kde.org)
* (C) 1999 Antti Koivisto (koivisto@kde.org)
- * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -30,11 +30,20 @@
namespace WebCore {
-CharacterData::CharacterData(Document* document, const String& text, ConstructionType type)
- : Node(document, type)
- , m_data(text.impl() ? text.impl() : StringImpl::empty())
+CharacterData::CharacterData(Document *doc, bool isText)
+ : Node(doc, false, false, isText)
+ , m_data(StringImpl::empty())
+{
+}
+
+CharacterData::CharacterData(Document* document, const String& text, bool isText)
+ : Node(document, false, false, isText)
+{
+ m_data = text.impl() ? text.impl() : StringImpl::empty();
+}
+
+CharacterData::~CharacterData()
{
- ASSERT(type == CreateOther || type == CreateText);
}
void CharacterData::setData(const String& data, ExceptionCode&)
diff --git a/WebCore/dom/CharacterData.h b/WebCore/dom/CharacterData.h
index 6c31933..d9e55c0 100644
--- a/WebCore/dom/CharacterData.h
+++ b/WebCore/dom/CharacterData.h
@@ -1,7 +1,7 @@
/*
* Copyright (C) 1999 Lars Knoll (knoll@kde.org)
* (C) 1999 Antti Koivisto (koivisto@kde.org)
- * Copyright (C) 2003, 2004, 2005, 2006, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2003, 2004, 2005, 2006, 2008 Apple Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -29,6 +29,12 @@ namespace WebCore {
class CharacterData : public Node {
public:
+ CharacterData(Document*, const String& text, bool isText = false);
+ CharacterData(Document*, bool isText = false);
+ virtual ~CharacterData();
+
+ // DOM methods & attributes for CharacterData
+
String data() const { return m_data; }
void setData(const String&, ExceptionCode&);
unsigned length() const { return m_data->length(); }
@@ -36,30 +42,31 @@ public:
void appendData(const String&, ExceptionCode&);
void insertData(unsigned offset, const String&, ExceptionCode&);
void deleteData(unsigned offset, unsigned count, ExceptionCode&);
- void replaceData(unsigned offset, unsigned count, const String&, ExceptionCode&);
+ void replaceData(unsigned offset, unsigned count, const String &arg, ExceptionCode&);
bool containsOnlyWhitespace() const;
- StringImpl* dataImpl() { return m_data.get(); }
-
-protected:
- CharacterData(Document*, const String&, ConstructionType);
-
- virtual bool rendererIsNeeded(RenderStyle*);
-
- void setDataImpl(PassRefPtr<StringImpl> impl) { m_data = impl; }
- void dispatchModifiedEvent(StringImpl* oldValue);
+ // DOM methods overridden from parent classes
-private:
virtual String nodeValue() const;
virtual void setNodeValue(const String&, ExceptionCode&);
+
+ // Other methods (not part of DOM)
+
virtual bool isCharacterDataNode() const { return true; }
virtual int maxCharacterOffset() const;
- virtual bool offsetInCharacters() const;
+ StringImpl* string() { return m_data.get(); }
- void checkCharDataOperation(unsigned offset, ExceptionCode&);
+ virtual bool offsetInCharacters() const;
+ virtual bool rendererIsNeeded(RenderStyle*);
+protected:
RefPtr<StringImpl> m_data;
+
+ void dispatchModifiedEvent(StringImpl* oldValue);
+
+private:
+ void checkCharDataOperation(unsigned offset, ExceptionCode&);
};
} // namespace WebCore
diff --git a/WebCore/dom/Comment.cpp b/WebCore/dom/Comment.cpp
index 3dcde38..a36a491 100644
--- a/WebCore/dom/Comment.cpp
+++ b/WebCore/dom/Comment.cpp
@@ -1,7 +1,9 @@
-/*
+/**
+ * This file is part of the DOM implementation for KDE.
+ *
* Copyright (C) 1999 Lars Knoll (knoll@kde.org)
* (C) 1999 Antti Koivisto (koivisto@kde.org)
- * Copyright (C) 2003, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2003 Apple Computer, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -22,16 +24,22 @@
#include "config.h"
#include "Comment.h"
+#include "Document.h"
+
namespace WebCore {
-inline Comment::Comment(Document* document, const String& text)
- : CharacterData(document, text, CreateOther)
+Comment::Comment(Document* doc, const String& text)
+ : CharacterData(doc, text)
+{
+}
+
+Comment::Comment(Document* doc)
+ : CharacterData(doc)
{
}
-PassRefPtr<Comment> Comment::create(Document* document, const String& text)
+Comment::~Comment()
{
- return adoptRef(new Comment(document, text));
}
String Comment::nodeName() const
@@ -46,9 +54,10 @@ Node::NodeType Comment::nodeType() const
PassRefPtr<Node> Comment::cloneNode(bool /*deep*/)
{
- return create(document(), data());
+ return document()->createComment(m_data);
}
+// DOM Section 1.1.1
bool Comment::childTypeAllowed(NodeType)
{
return false;
diff --git a/WebCore/dom/Comment.h b/WebCore/dom/Comment.h
index 680ffae..d00ba62 100644
--- a/WebCore/dom/Comment.h
+++ b/WebCore/dom/Comment.h
@@ -1,7 +1,9 @@
/*
+ * This file is part of the DOM implementation for KDE.
+ *
* Copyright (C) 1999 Lars Knoll (knoll@kde.org)
* (C) 1999 Antti Koivisto (koivisto@kde.org)
- * Copyright (C) 2003, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2003 Apple Computer, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -29,14 +31,16 @@ namespace WebCore {
class Comment : public CharacterData {
public:
- static PassRefPtr<Comment> create(Document*, const String&);
-
-private:
- Comment(Document*, const String&);
+ Comment(Document*, const String &_text);
+ Comment(Document*);
+ virtual ~Comment();
+ // DOM methods overridden from parent classes
virtual String nodeName() const;
virtual NodeType nodeType() const;
virtual PassRefPtr<Node> cloneNode(bool deep);
+
+ // Other methods (not part of DOM)
virtual bool isCommentNode() const { return true; }
virtual bool childTypeAllowed(NodeType);
};
diff --git a/WebCore/dom/ContainerNode.cpp b/WebCore/dom/ContainerNode.cpp
index 569756c..2d79156 100644
--- a/WebCore/dom/ContainerNode.cpp
+++ b/WebCore/dom/ContainerNode.cpp
@@ -869,16 +869,16 @@ static void dispatchChildInsertionEvents(Node* child, ExceptionCode& ec)
ASSERT(!eventDispatchForbidden());
RefPtr<Node> c = child;
- RefPtr<Document> document = child->document();
+ DocPtr<Document> doc = child->document();
if (c->parentNode() && c->parentNode()->inDocument())
c->insertedIntoDocument();
else
c->insertedIntoTree(true);
- document->incDOMTreeVersion();
+ doc->incDOMTreeVersion();
- if (c->parentNode() && document->hasListenerType(Document::DOMNODEINSERTED_LISTENER)) {
+ if (c->parentNode() && doc->hasListenerType(Document::DOMNODEINSERTED_LISTENER)) {
ec = 0;
c->dispatchMutationEvent(eventNames().DOMNodeInsertedEvent, true, c->parentNode(), String(), String(), ec);
if (ec)
@@ -886,28 +886,27 @@ static void dispatchChildInsertionEvents(Node* child, ExceptionCode& ec)
}
// dispatch the DOMNodeInsertedIntoDocument event to all descendants
- if (c->inDocument() && document->hasListenerType(Document::DOMNODEINSERTEDINTODOCUMENT_LISTENER)) {
+ if (c->inDocument() && doc->hasListenerType(Document::DOMNODEINSERTEDINTODOCUMENT_LISTENER))
for (; c; c = c->traverseNextNode(child)) {
ec = 0;
c->dispatchMutationEvent(eventNames().DOMNodeInsertedIntoDocumentEvent, false, 0, String(), String(), ec);
if (ec)
return;
}
- }
}
static void dispatchChildRemovalEvents(Node* child, ExceptionCode& ec)
{
RefPtr<Node> c = child;
- RefPtr<Document> document = child->document();
+ DocPtr<Document> doc = child->document();
// update auxiliary doc info (e.g. iterators) to note that node is being removed
- document->nodeWillBeRemoved(child);
+ doc->nodeWillBeRemoved(child);
- document->incDOMTreeVersion();
+ doc->incDOMTreeVersion();
// dispatch pre-removal mutation events
- if (c->parentNode() && document->hasListenerType(Document::DOMNODEREMOVED_LISTENER)) {
+ if (c->parentNode() && doc->hasListenerType(Document::DOMNODEREMOVED_LISTENER)) {
ec = 0;
c->dispatchMutationEvent(eventNames().DOMNodeRemovedEvent, true, c->parentNode(), String(), String(), ec);
if (ec)
@@ -915,7 +914,7 @@ static void dispatchChildRemovalEvents(Node* child, ExceptionCode& ec)
}
// dispatch the DOMNodeRemovedFromDocument event to all descendants
- if (c->inDocument() && document->hasListenerType(Document::DOMNODEREMOVEDFROMDOCUMENT_LISTENER))
+ if (c->inDocument() && doc->hasListenerType(Document::DOMNODEREMOVEDFROMDOCUMENT_LISTENER))
for (; c; c = c->traverseNextNode(child)) {
ec = 0;
c->dispatchMutationEvent(eventNames().DOMNodeRemovedFromDocumentEvent, false, 0, String(), String(), ec);
diff --git a/WebCore/dom/ContainerNode.h b/WebCore/dom/ContainerNode.h
index aa480a7..3ad932c 100644
--- a/WebCore/dom/ContainerNode.h
+++ b/WebCore/dom/ContainerNode.h
@@ -2,7 +2,7 @@
* Copyright (C) 1999 Lars Knoll (knoll@kde.org)
* (C) 1999 Antti Koivisto (koivisto@kde.org)
* (C) 2001 Dirk Mueller (mueller@kde.org)
- * Copyright (C) 2004, 2005, 2006, 2007, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -38,6 +38,7 @@ namespace Private {
class ContainerNode : public Node {
public:
+ ContainerNode(Document*, bool isElement = false);
virtual ~ContainerNode();
Node* firstChild() const { return m_firstChild; }
@@ -73,8 +74,6 @@ public:
void cloneChildNodes(ContainerNode* clone);
protected:
- ContainerNode(Document*, ConstructionType = CreateContainer);
-
static void queuePostAttachCallback(NodeCallback, Node*);
void suspendPostAttachCallbacks();
void resumePostAttachCallbacks();
@@ -98,8 +97,8 @@ private:
Node* m_lastChild;
};
-inline ContainerNode::ContainerNode(Document* document, ConstructionType type)
- : Node(document, type)
+inline ContainerNode::ContainerNode(Document* document, bool isElement)
+ : Node(document, isElement, true)
, m_firstChild(0)
, m_lastChild(0)
{
diff --git a/WebCore/dom/DocPtr.h b/WebCore/dom/DocPtr.h
new file mode 100644
index 0000000..8b50e8d
--- /dev/null
+++ b/WebCore/dom/DocPtr.h
@@ -0,0 +1,114 @@
+/*
+ * This file is part of the DOM implementation for KDE.
+ * Copyright (C) 2005, 2006 Apple Computer, Inc.
+ *
+ * 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 DocPtr_h
+#define DocPtr_h
+
+namespace WebCore {
+
+template <class T> class DocPtr {
+public:
+ DocPtr() : m_ptr(0) {}
+ DocPtr(T *ptr) : m_ptr(ptr) { if (ptr) ptr->selfOnlyRef(); }
+ DocPtr(const DocPtr &o) : m_ptr(o.m_ptr) { if (T *ptr = m_ptr) ptr->selfOnlyRef(); }
+ ~DocPtr() { if (T *ptr = m_ptr) ptr->selfOnlyDeref(); }
+
+ template <class U> DocPtr(const DocPtr<U> &o) : m_ptr(o.get()) { if (T *ptr = m_ptr) ptr->selfOnlyRef(); }
+
+ void resetSkippingRef(T *o) { m_ptr = o; }
+
+ T *get() const { return m_ptr; }
+
+ T &operator*() const { return *m_ptr; }
+ T *operator->() const { return m_ptr; }
+
+ bool operator!() const { return !m_ptr; }
+
+ // this type conversion operator allows implicit conversion to
+ // bool but not to other integer types
+
+ typedef T * (DocPtr::*UnspecifiedBoolType)() const;
+ operator UnspecifiedBoolType() const
+ {
+ return m_ptr ? &DocPtr::get : 0;
+ }
+
+ DocPtr &operator=(const DocPtr &);
+ DocPtr &operator=(T *);
+
+ private:
+ T *m_ptr;
+};
+
+template <class T> DocPtr<T> &DocPtr<T>::operator=(const DocPtr<T> &o)
+{
+ T *optr = o.m_ptr;
+ if (optr)
+ optr->selfOnlyRef();
+ if (T *ptr = m_ptr)
+ ptr->selfOnlyDeref();
+ m_ptr = optr;
+ return *this;
+}
+
+template <class T> inline DocPtr<T> &DocPtr<T>::operator=(T *optr)
+{
+ if (optr)
+ optr->selfOnlyRef();
+ if (T *ptr = m_ptr)
+ ptr->selfOnlyDeref();
+ m_ptr = optr;
+ return *this;
+}
+
+template <class T> inline bool operator==(const DocPtr<T> &a, const DocPtr<T> &b)
+{
+ return a.get() == b.get();
+}
+
+template <class T> inline bool operator==(const DocPtr<T> &a, const T *b)
+{
+ return a.get() == b;
+}
+
+template <class T> inline bool operator==(const T *a, const DocPtr<T> &b)
+{
+ return a == b.get();
+}
+
+template <class T> inline bool operator!=(const DocPtr<T> &a, const DocPtr<T> &b)
+{
+ return a.get() != b.get();
+}
+
+template <class T> inline bool operator!=(const DocPtr<T> &a, const T *b)
+{
+ return a.get() != b;
+}
+
+template <class T> inline bool operator!=(const T *a, const DocPtr<T> &b)
+{
+ return a != b.get();
+}
+
+} // namespace WebCore
+
+#endif // DocPtr_h
diff --git a/WebCore/dom/Document.cpp b/WebCore/dom/Document.cpp
index 644eb61..066cf46 100644
--- a/WebCore/dom/Document.cpp
+++ b/WebCore/dom/Document.cpp
@@ -107,7 +107,6 @@
#include "SegmentedString.h"
#include "SelectionController.h"
#include "Settings.h"
-#include "SharedWorkerRepository.h"
#include "StyleSheetList.h"
#include "TextEvent.h"
#include "TextIterator.h"
@@ -362,7 +361,7 @@ Document::Document(Frame* frame, bool isXHTML)
, m_containsWMLContent(false)
#endif
{
- m_document = this;
+ m_document.resetSkippingRef(this);
m_printing = false;
@@ -432,7 +431,8 @@ void Document::removedLastRef()
// want the document to be destructed until after
// removeAllChildren returns, so we guard ourselves with an
// extra self-only ref.
- selfOnlyRef();
+
+ DocPtr<Document> guard(this);
// We must make sure not to be retaining any of our children through
// these extra pointers or we will create a reference cycle.
@@ -456,8 +456,6 @@ void Document::removedLastRef()
#ifndef NDEBUG
m_inRemovedLastRefFunction = false;
#endif
-
- selfOnlyDeref();
} else {
#ifndef NDEBUG
m_deletionHasBegun = true;
@@ -484,7 +482,7 @@ Document::~Document()
#endif
delete m_tokenizer;
- m_document = 0;
+ m_document.resetSkippingRef(0);
delete m_styleSelector;
delete m_docLoader;
@@ -520,6 +518,8 @@ Document::~Document()
if (m_styleSheets)
m_styleSheets->documentDestroyed();
+
+ m_document = 0;
}
void Document::resetLinkColor()
@@ -589,17 +589,17 @@ PassRefPtr<Element> Document::createElement(const AtomicString& name, ExceptionC
PassRefPtr<DocumentFragment> Document::createDocumentFragment()
{
- return DocumentFragment::create(document());
+ return new DocumentFragment(document());
}
PassRefPtr<Text> Document::createTextNode(const String& data)
{
- return Text::create(this, data);
+ return new Text(this, data);
}
PassRefPtr<Comment> Document::createComment(const String& data)
{
- return Comment::create(this, data);
+ return new Comment(this, data);
}
PassRefPtr<CDATASection> Document::createCDATASection(const String& data, ExceptionCode& ec)
@@ -608,7 +608,7 @@ PassRefPtr<CDATASection> Document::createCDATASection(const String& data, Except
ec = NOT_SUPPORTED_ERR;
return 0;
}
- return CDATASection::create(this, data);
+ return new CDATASection(this, data);
}
PassRefPtr<ProcessingInstruction> Document::createProcessingInstruction(const String& target, const String& data, ExceptionCode& ec)
@@ -621,7 +621,7 @@ PassRefPtr<ProcessingInstruction> Document::createProcessingInstruction(const St
ec = NOT_SUPPORTED_ERR;
return 0;
}
- return ProcessingInstruction::create(this, target, data);
+ return new ProcessingInstruction(this, target, data);
}
PassRefPtr<EntityReference> Document::createEntityReference(const String& name, ExceptionCode& ec)
@@ -634,12 +634,12 @@ PassRefPtr<EntityReference> Document::createEntityReference(const String& name,
ec = NOT_SUPPORTED_ERR;
return 0;
}
- return EntityReference::create(this, name);
+ return new EntityReference(this, name);
}
PassRefPtr<EditingText> Document::createEditingTextNode(const String& text)
{
- return EditingText::create(this, text);
+ return new EditingText(this, text);
}
PassRefPtr<CSSStyleDeclaration> Document::createCSSStyleDeclaration()
@@ -704,8 +704,11 @@ PassRefPtr<Node> Document::importNode(Node* importedNode, bool deep, ExceptionCo
return newElement.release();
}
- case ATTRIBUTE_NODE:
- return Attr::create(0, this, static_cast<Attr*>(importedNode)->attr()->clone());
+ case ATTRIBUTE_NODE: {
+ RefPtr<Attr> newAttr = new Attr(0, this, static_cast<Attr*>(importedNode)->attr()->clone());
+ newAttr->createTextChild();
+ return newAttr.release();
+ }
case DOCUMENT_FRAGMENT_NODE: {
DocumentFragment* oldFragment = static_cast<DocumentFragment*>(importedNode);
RefPtr<DocumentFragment> newFragment = createDocumentFragment();
@@ -1376,11 +1379,7 @@ void Document::detach()
// Send out documentWillBecomeInactive() notifications to registered elements,
// in order to stop media elements
documentWillBecomeInactive();
-
-#if ENABLE(SHARED_WORKERS)
- SharedWorkerRepository::documentDetached(this);
-#endif
-
+
if (m_frame) {
FrameView* view = m_frame->view();
if (view)
@@ -1501,7 +1500,7 @@ AXObjectCache* Document::axObjectCache() const
return doc->axObjectCache();
// this is the top-level document, so install a new cache
- m_axObjectCache = new AXObjectCache(this);
+ m_axObjectCache = new AXObjectCache;
return m_axObjectCache;
#endif // ANDROID
}
@@ -2661,10 +2660,10 @@ bool Document::setFocusedNode(PassRefPtr<Node> newFocusedNode)
focusChangeBlocked = true;
newFocusedNode = 0;
}
- if (oldFocusedNode == this && oldFocusedNode->hasOneRef())
+ if ((oldFocusedNode.get() == this) && oldFocusedNode->hasOneRef())
return true;
- if (oldFocusedNode == oldFocusedNode->rootEditableElement())
+ if (oldFocusedNode.get() == oldFocusedNode->rootEditableElement())
frame()->editor()->didEndEditing();
}
@@ -2693,7 +2692,7 @@ bool Document::setFocusedNode(PassRefPtr<Node> newFocusedNode)
}
m_focusedNode->setFocus();
- if (m_focusedNode == m_focusedNode->rootEditableElement())
+ if (m_focusedNode.get() == m_focusedNode->rootEditableElement())
frame()->editor()->didBeginEditing();
// eww, I suck. set the qt focus correctly
@@ -2715,7 +2714,7 @@ bool Document::setFocusedNode(PassRefPtr<Node> newFocusedNode)
}
}
-#if (PLATFORM(MAC) || PLATFORM(WIN)) && !PLATFORM(CHROMIUM)
+#if PLATFORM(MAC) && !PLATFORM(CHROMIUM)
if (!focusChangeBlocked && m_focusedNode && AXObjectCache::accessibilityEnabled())
axObjectCache()->handleFocusedUIElementChanged();
#elif PLATFORM(GTK)
@@ -2724,9 +2723,9 @@ bool Document::setFocusedNode(PassRefPtr<Node> newFocusedNode)
RenderObject* newFocusedRenderer = 0;
if (oldFocusedNode)
- oldFocusedRenderer = oldFocusedNode->renderer();
+ oldFocusedRenderer = oldFocusedNode.get()->renderer();
if (newFocusedNode)
- newFocusedRenderer = newFocusedNode->renderer();
+ newFocusedRenderer = newFocusedNode.get()->renderer();
axObjectCache()->handleFocusedUIElementChangedWithRenderers(oldFocusedRenderer, newFocusedRenderer);
}
@@ -3926,7 +3925,7 @@ PassRefPtr<Attr> Document::createAttributeNS(const String& namespaceURI, const S
// FIXME: Assume this is a mapped attribute, since createAttribute isn't namespace-aware. There's no harm to XML
// documents if we're wrong.
- return Attr::create(0, this, MappedAttribute::create(qName, StringImpl::empty()));
+ return new Attr(0, this, MappedAttribute::create(qName, StringImpl::empty()));
}
#if ENABLE(SVG)
diff --git a/WebCore/dom/Document.h b/WebCore/dom/Document.h
index c18a864..fc4dc7e 100644
--- a/WebCore/dom/Document.h
+++ b/WebCore/dom/Document.h
@@ -172,16 +172,19 @@ class Document : public ContainerNode, public ScriptExecutionContext {
public:
static PassRefPtr<Document> create(Frame* frame)
{
- return adoptRef(new Document(frame, false));
+ return new Document(frame, false);
}
static PassRefPtr<Document> createXHTML(Frame* frame)
{
- return adoptRef(new Document(frame, true));
+ return new Document(frame, true);
}
virtual ~Document();
+ virtual bool isDocument() const { return true; }
+
using ContainerNode::ref;
using ContainerNode::deref;
+ virtual void removedLastRef();
// Nodes belonging to this document hold "self-only" references -
// these are enough to keep the document from being destroyed, but
@@ -211,6 +214,7 @@ public:
DocumentType* doctype() const { return m_docType.get(); }
DOMImplementation* implementation() const;
+ virtual void childrenChanged(bool changedByParser = false, Node* beforeChange = 0, Node* afterChange = 0, int childCountDelta = 0);
Element* documentElement() const
{
@@ -295,6 +299,11 @@ public:
CollectionCache* nameCollectionInfo(CollectionType, const AtomicString& name);
+ // DOM methods overridden from parent classes
+
+ virtual String nodeName() const;
+ virtual NodeType nodeType() const;
+
// Other methods (not part of DOM)
virtual bool isHTMLDocument() const { return false; }
virtual bool isImageDocument() const { return false; }
@@ -446,6 +455,9 @@ public:
virtual String userAgent(const KURL&) const;
+ // from cachedObjectClient
+ virtual void setCSSStyleSheet(const String& url, const String& charset, const CachedCSSStyleSheet*);
+
#if FRAME_LOADS_USER_STYLESHEET
void setUserStyleSheet(const String& sheet);
#endif
@@ -462,6 +474,10 @@ public:
enum ParseMode { Compat, AlmostStrict, Strict };
+private:
+ virtual void determineParseMode() {}
+
+public:
void setParseMode(ParseMode m) { m_parseMode = m; }
ParseMode parseMode() const { return m_parseMode; }
@@ -490,6 +506,11 @@ public:
MouseEventWithHitTestResults prepareMouseEvent(const HitTestRequest&, const IntPoint&, const PlatformMouseEvent&);
+ virtual bool childTypeAllowed(NodeType);
+ virtual PassRefPtr<Node> cloneNode(bool deep);
+
+ virtual bool canReplaceChild(Node* newChild, Node* oldChild);
+
StyleSheetList* styleSheets();
/* Newly proposed CSS3 mechanism for selecting alternate
@@ -730,6 +751,8 @@ public:
void setDocType(PassRefPtr<DocumentType>);
+ virtual void finishedParsing();
+
#if ENABLE(XPATH)
// XPathEvaluator methods
PassRefPtr<XPathExpression> createExpression(const String& expression,
@@ -776,6 +799,7 @@ public:
HTMLCanvasElement* getCSSCanvasElement(const String& name);
bool isDNSPrefetchEnabled() const { return m_isDNSPrefetchEnabled; }
+ void initDNSPrefetch();
void parseDNSPrefetchControlHeader(const String&);
virtual void reportException(const String& errorMessage, int lineNumber, const String& sourceURL);
@@ -784,95 +808,10 @@ public:
virtual void scriptImported(unsigned long, const String&);
virtual void postTask(PassRefPtr<Task>); // Executes the task on context's thread asynchronously.
- typedef HashMap<WebCore::Node*, JSNode*> JSWrapperCache;
- JSWrapperCache& wrapperCache() { return m_wrapperCache; }
-
- virtual void finishedParsing();
-
- bool inPageCache() const { return m_inPageCache; }
- void setInPageCache(bool flag);
-
- // Elements can register themselves for the "documentWillBecomeInactive()" and
- // "documentDidBecomeActive()" callbacks
- void registerForDocumentActivationCallbacks(Element*);
- void unregisterForDocumentActivationCallbacks(Element*);
- void documentWillBecomeInactive();
- void documentDidBecomeActive();
-
- void registerForMediaVolumeCallbacks(Element*);
- void unregisterForMediaVolumeCallbacks(Element*);
- void mediaVolumeDidChange();
-
- void setShouldCreateRenderers(bool);
- bool shouldCreateRenderers();
-
- void setDecoder(PassRefPtr<TextResourceDecoder>);
- TextResourceDecoder* decoder() const { return m_decoder.get(); }
-
- String displayStringModifiedByEncoding(const String&) const;
- PassRefPtr<StringImpl> displayStringModifiedByEncoding(PassRefPtr<StringImpl>) const;
- void displayBufferModifiedByEncoding(UChar* buffer, unsigned len) const;
-
- // Quirk for the benefit of Apple's Dictionary application.
- void setFrameElementsShouldIgnoreScrolling(bool ignore) { m_frameElementsShouldIgnoreScrolling = ignore; }
- bool frameElementsShouldIgnoreScrolling() const { return m_frameElementsShouldIgnoreScrolling; }
-
-#if ENABLE(DASHBOARD_SUPPORT)
- void setDashboardRegionsDirty(bool f) { m_dashboardRegionsDirty = f; }
- bool dashboardRegionsDirty() const { return m_dashboardRegionsDirty; }
- bool hasDashboardRegions () const { return m_hasDashboardRegions; }
- void setHasDashboardRegions(bool f) { m_hasDashboardRegions = f; }
- const Vector<DashboardRegionValue>& dashboardRegions() const;
- void setDashboardRegions(const Vector<DashboardRegionValue>&);
-#endif
-
- void removeAllEventListeners();
-
- void registerDisconnectedNodeWithEventListeners(Node*);
- void unregisterDisconnectedNodeWithEventListeners(Node*);
-
- CheckedRadioButtons& checkedRadioButtons() { return m_checkedRadioButtons; }
-
-#if ENABLE(SVG)
- const SVGDocumentExtensions* svgExtensions();
- SVGDocumentExtensions* accessSVGExtensions();
-#endif
-
- void initSecurityContext();
-
- // Explicitly override the security origin for this document.
- // Note: It is dangerous to change the security origin of a document
- // that already contains content.
- void setSecurityOrigin(SecurityOrigin*);
-
- bool processingLoadEvent() const { return m_processingLoadEvent; }
-
-#if ENABLE(DATABASE)
- void addOpenDatabase(Database*);
- void removeOpenDatabase(Database*);
- DatabaseThread* databaseThread(); // Creates the thread as needed, but not if it has been already terminated.
- void setHasOpenDatabases() { m_hasOpenDatabases = true; }
- bool hasOpenDatabases() { return m_hasOpenDatabases; }
- void stopDatabases();
-#endif
-
- void setUsingGeolocation(bool f) { m_usingGeolocation = f; }
- bool usingGeolocation() const { return m_usingGeolocation; };
-
-#if ENABLE(WML)
- void setContainsWMLContent(bool value) { m_containsWMLContent = value; }
- bool containsWMLContent() const { return m_containsWMLContent; }
-
- void resetWMLPageState();
- void initializeWMLPageState();
-#endif
-
protected:
Document(Frame*, bool isXHTML);
- void setStyleSelector(CSSStyleSelector* styleSelector) { m_styleSelector = styleSelector; }
-
- void clearXMLVersion() { m_xmlVersion = String(); }
+ void setStyleSelector(CSSStyleSelector* styleSelector) { m_styleSelector = styleSelector; }
#if ENABLE(TOUCH_EVENTS) // Android
public:
@@ -887,38 +826,16 @@ private:
#endif // ENABLE(TOUCH_EVENTS)
private:
- virtual bool isDocument() const { return true; }
- virtual void removedLastRef();
- virtual void determineParseMode() { }
-
- virtual void childrenChanged(bool changedByParser = false, Node* beforeChange = 0, Node* afterChange = 0, int childCountDelta = 0);
-
- virtual String nodeName() const;
- virtual NodeType nodeType() const;
- virtual void setCSSStyleSheet(const String& url, const String& charset, const CachedCSSStyleSheet*);
- virtual bool childTypeAllowed(NodeType);
- virtual PassRefPtr<Node> cloneNode(bool deep);
- virtual bool canReplaceChild(Node* newChild, Node* oldChild);
-
virtual void refScriptExecutionContext() { ref(); }
virtual void derefScriptExecutionContext() { deref(); }
virtual const KURL& virtualURL() const; // Same as url(), but needed for ScriptExecutionContext to implement it without a performance loss for direct calls.
virtual KURL virtualCompleteURL(const String&) const; // Same as completeURL() for the same reason as above.
- void initDNSPrefetch();
-
String encoding() const;
void executeScriptSoonTimerFired(Timer<Document>*);
- void updateTitle();
- void removeAllDisconnectedNodeEventListeners();
- void updateFocusAppearanceTimerFired(Timer<Document>*);
- void updateBaseURL();
-
- void cacheDocumentElement() const;
-
CSSStyleSelector* m_styleSelector;
bool m_didCalculateStyleSelector;
@@ -1071,6 +988,96 @@ private:
bool m_shouldProcessNoScriptElement;
#endif
+public:
+ bool inPageCache() const { return m_inPageCache; }
+ void setInPageCache(bool flag);
+
+ // Elements can register themselves for the "documentWillBecomeInactive()" and
+ // "documentDidBecomeActive()" callbacks
+ void registerForDocumentActivationCallbacks(Element*);
+ void unregisterForDocumentActivationCallbacks(Element*);
+ void documentWillBecomeInactive();
+ void documentDidBecomeActive();
+
+ void registerForMediaVolumeCallbacks(Element*);
+ void unregisterForMediaVolumeCallbacks(Element*);
+ void mediaVolumeDidChange();
+
+ void setShouldCreateRenderers(bool);
+ bool shouldCreateRenderers();
+
+ void setDecoder(PassRefPtr<TextResourceDecoder>);
+ TextResourceDecoder* decoder() const { return m_decoder.get(); }
+
+ String displayStringModifiedByEncoding(const String&) const;
+ PassRefPtr<StringImpl> displayStringModifiedByEncoding(PassRefPtr<StringImpl>) const;
+ void displayBufferModifiedByEncoding(UChar* buffer, unsigned len) const;
+
+ // Quirk for the benefit of Apple's Dictionary application.
+ void setFrameElementsShouldIgnoreScrolling(bool ignore) { m_frameElementsShouldIgnoreScrolling = ignore; }
+ bool frameElementsShouldIgnoreScrolling() const { return m_frameElementsShouldIgnoreScrolling; }
+
+#if ENABLE(DASHBOARD_SUPPORT)
+ void setDashboardRegionsDirty(bool f) { m_dashboardRegionsDirty = f; }
+ bool dashboardRegionsDirty() const { return m_dashboardRegionsDirty; }
+ bool hasDashboardRegions () const { return m_hasDashboardRegions; }
+ void setHasDashboardRegions(bool f) { m_hasDashboardRegions = f; }
+ const Vector<DashboardRegionValue>& dashboardRegions() const;
+ void setDashboardRegions(const Vector<DashboardRegionValue>&);
+#endif
+
+ void removeAllEventListeners();
+
+ void registerDisconnectedNodeWithEventListeners(Node*);
+ void unregisterDisconnectedNodeWithEventListeners(Node*);
+
+ CheckedRadioButtons& checkedRadioButtons() { return m_checkedRadioButtons; }
+
+#if ENABLE(SVG)
+ const SVGDocumentExtensions* svgExtensions();
+ SVGDocumentExtensions* accessSVGExtensions();
+#endif
+
+ void initSecurityContext();
+
+ // Explicitly override the security origin for this document.
+ // Note: It is dangerous to change the security origin of a document
+ // that already contains content.
+ void setSecurityOrigin(SecurityOrigin*);
+
+ bool processingLoadEvent() const { return m_processingLoadEvent; }
+
+#if ENABLE(DATABASE)
+ void addOpenDatabase(Database*);
+ void removeOpenDatabase(Database*);
+ DatabaseThread* databaseThread(); // Creates the thread as needed, but not if it has been already terminated.
+ void setHasOpenDatabases() { m_hasOpenDatabases = true; }
+ bool hasOpenDatabases() { return m_hasOpenDatabases; }
+ void stopDatabases();
+#endif
+
+ void setUsingGeolocation(bool f) { m_usingGeolocation = f; }
+ bool usingGeolocation() const { return m_usingGeolocation; };
+
+#if ENABLE(WML)
+ void setContainsWMLContent(bool value) { m_containsWMLContent = value; }
+ bool containsWMLContent() const { return m_containsWMLContent; }
+
+ void resetWMLPageState();
+ void initializeWMLPageState();
+#endif
+
+protected:
+ void clearXMLVersion() { m_xmlVersion = String(); }
+
+private:
+ void updateTitle();
+ void removeAllDisconnectedNodeEventListeners();
+ void updateFocusAppearanceTimerFired(Timer<Document>*);
+ void updateBaseURL();
+
+ void cacheDocumentElement() const;
+
RenderObject* m_savedRenderer;
int m_secureForms;
@@ -1124,6 +1131,10 @@ private:
unsigned m_numNodeListCaches;
+public:
+ typedef HashMap<WebCore::Node*, JSNode*> JSWrapperCache;
+ JSWrapperCache& wrapperCache() { return m_wrapperCache; }
+private:
JSWrapperCache m_wrapperCache;
#if ENABLE(DATABASE)
@@ -1152,7 +1163,7 @@ inline bool Document::hasElementWithId(AtomicStringImpl* id) const
inline bool Node::isDocumentNode() const
{
- return this == m_document;
+ return this == m_document.get();
}
} // namespace WebCore
diff --git a/WebCore/dom/DocumentFragment.cpp b/WebCore/dom/DocumentFragment.cpp
index 3663e99..7a6174f 100644
--- a/WebCore/dom/DocumentFragment.cpp
+++ b/WebCore/dom/DocumentFragment.cpp
@@ -1,8 +1,10 @@
-/*
+/**
+ * This file is part of the DOM implementation for KDE.
+ *
* Copyright (C) 1999 Lars Knoll (knoll@kde.org)
* (C) 1999 Antti Koivisto (koivisto@kde.org)
* (C) 2001 Dirk Mueller (mueller@kde.org)
- * Copyright (C) 2004, 2005, 2006, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2004, 2005, 2006 Apple Computer, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -21,18 +23,13 @@
*/
#include "config.h"
+
#include "DocumentFragment.h"
namespace WebCore {
-inline DocumentFragment::DocumentFragment(Document* document)
- : ContainerNode(document)
-{
-}
-
-PassRefPtr<DocumentFragment> DocumentFragment::create(Document* document)
+DocumentFragment::DocumentFragment(Document *doc) : ContainerNode(doc)
{
- return adoptRef(new DocumentFragment(document));
}
String DocumentFragment::nodeName() const
@@ -45,6 +42,7 @@ Node::NodeType DocumentFragment::nodeType() const
return DOCUMENT_FRAGMENT_NODE;
}
+// DOM Section 1.1.1
bool DocumentFragment::childTypeAllowed(NodeType type)
{
switch (type) {
@@ -62,7 +60,7 @@ bool DocumentFragment::childTypeAllowed(NodeType type)
PassRefPtr<Node> DocumentFragment::cloneNode(bool deep)
{
- RefPtr<DocumentFragment> clone = create(document());
+ RefPtr<DocumentFragment> clone = new DocumentFragment(document());
if (deep)
cloneChildNodes(clone.get());
return clone.release();
diff --git a/WebCore/dom/DocumentFragment.h b/WebCore/dom/DocumentFragment.h
index e624ee4..46d8ecd 100644
--- a/WebCore/dom/DocumentFragment.h
+++ b/WebCore/dom/DocumentFragment.h
@@ -1,8 +1,10 @@
/*
+ * This file is part of the DOM implementation for KDE.
+ *
* Copyright (C) 1999 Lars Knoll (knoll@kde.org)
* (C) 1999 Antti Koivisto (koivisto@kde.org)
* (C) 2001 Dirk Mueller (mueller@kde.org)
- * Copyright (C) 2004, 2005, 2006, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2004, 2005, 2006 Apple Computer, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -30,9 +32,6 @@ namespace WebCore {
class DocumentFragment : public ContainerNode {
public:
- static PassRefPtr<DocumentFragment> create(Document*);
-
-private:
DocumentFragment(Document*);
virtual String nodeName() const;
diff --git a/WebCore/dom/DocumentType.cpp b/WebCore/dom/DocumentType.cpp
index b8185e7..885a65b 100644
--- a/WebCore/dom/DocumentType.cpp
+++ b/WebCore/dom/DocumentType.cpp
@@ -2,7 +2,7 @@
* Copyright (C) 1999 Lars Knoll (knoll@kde.org)
* (C) 1999 Antti Koivisto (koivisto@kde.org)
* (C) 2001 Dirk Mueller (mueller@kde.org)
- * Copyright (C) 2004, 2005, 2006, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2004, 2005, 2006, 2008 Apple Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -29,11 +29,11 @@
namespace WebCore {
-DocumentType::DocumentType(Document* document, const String& name, const String& publicId, const String& systemId)
- : Node(document, CreateOther)
- , m_name(name)
- , m_publicId(publicId)
- , m_systemId(systemId)
+DocumentType::DocumentType(Document* document, const String& n, const String& p, const String& s)
+ : Node(document)
+ , m_name(n)
+ , m_publicId(p)
+ , m_systemId(s)
{
}
@@ -54,7 +54,7 @@ Node::NodeType DocumentType::nodeType() const
PassRefPtr<Node> DocumentType::cloneNode(bool /*deep*/)
{
- return create(document(), m_name, m_publicId, m_systemId);
+ return new DocumentType(document(), m_name, m_publicId, m_systemId);
}
void DocumentType::insertedIntoDocument()
diff --git a/WebCore/dom/DocumentType.h b/WebCore/dom/DocumentType.h
index 4f89d01..9fd3c6e 100644
--- a/WebCore/dom/DocumentType.h
+++ b/WebCore/dom/DocumentType.h
@@ -2,7 +2,7 @@
* Copyright (C) 1999 Lars Knoll (knoll@kde.org)
* (C) 1999 Antti Koivisto (koivisto@kde.org)
* (C) 2001 Dirk Mueller (mueller@kde.org)
- * Copyright (C) 2004, 2005, 2006, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2004, 2005, 2006, 2008 Apple Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -34,7 +34,7 @@ class DocumentType : public Node {
public:
static PassRefPtr<DocumentType> create(Document* document, const String& name, const String& publicId, const String& systemId)
{
- return adoptRef(new DocumentType(document, name, publicId, systemId));
+ return new DocumentType(document, name, publicId, systemId);
}
NamedNodeMap* entities() const { return m_entities.get(); }
diff --git a/WebCore/dom/EditingText.cpp b/WebCore/dom/EditingText.cpp
index b36931a..40cf97d 100644
--- a/WebCore/dom/EditingText.cpp
+++ b/WebCore/dom/EditingText.cpp
@@ -1,5 +1,9 @@
-/*
- * Copyright (C) 2003, 2009 Apple Inc. All rights reserved.
+/**
+ * This file is part of the DOM implementation for KDE.
+ *
+ * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
+ * (C) 1999 Antti Koivisto (koivisto@kde.org)
+ * Copyright (C) 2003 Apple Computer, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -20,19 +24,24 @@
#include "config.h"
#include "EditingText.h"
-// FIXME: Does this really require a class? Perhaps instead any text node
-// inside an editable element could have the "always create a renderer" behavior.
+// FIXME: does this really require a class? Perhaps any Text node
+// inside an editable element should have the "always create a renderer"
+// behavior.
namespace WebCore {
-inline EditingText::EditingText(Document* document, const String& data)
- : Text(document, data)
+EditingText::EditingText(Document *impl, const String &text)
+ : Text(impl, text)
+{
+}
+
+EditingText::EditingText(Document *impl)
+ : Text(impl)
{
}
-PassRefPtr<EditingText> EditingText::create(Document* document, const String& data)
+EditingText::~EditingText()
{
- return adoptRef(new EditingText(document, data));
}
bool EditingText::rendererIsNeeded(RenderStyle*)
diff --git a/WebCore/dom/EditingText.h b/WebCore/dom/EditingText.h
index 08223c2..e114786 100644
--- a/WebCore/dom/EditingText.h
+++ b/WebCore/dom/EditingText.h
@@ -1,5 +1,9 @@
/*
- * Copyright (C) 2003, 2009 Apple Inc. All rights reserved.
+ * This file is part of the DOM implementation for KDE.
+ *
+ * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
+ * (C) 1999 Antti Koivisto (koivisto@kde.org)
+ * Copyright (C) 2003 Apple Computer, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -27,12 +31,11 @@ namespace WebCore {
class EditingText : public Text {
public:
- static PassRefPtr<EditingText> create(Document*, const String&);
+ EditingText(Document *impl, const String &text);
+ EditingText(Document *impl);
+ virtual ~EditingText();
-private:
virtual bool rendererIsNeeded(RenderStyle *);
-
- EditingText(Document*, const String&);
};
} // namespace WebCore
diff --git a/WebCore/dom/Element.cpp b/WebCore/dom/Element.cpp
index 7aee10c..1956be4 100644
--- a/WebCore/dom/Element.cpp
+++ b/WebCore/dom/Element.cpp
@@ -57,8 +57,8 @@ namespace WebCore {
using namespace HTMLNames;
using namespace XMLNames;
-Element::Element(const QualifiedName& tagName, Document* document)
- : ContainerNode(document, CreateElementZeroRefCount)
+Element::Element(const QualifiedName& tagName, Document* doc)
+ : ContainerNode(doc, true)
, m_tagName(tagName)
{
}
diff --git a/WebCore/dom/Element.h b/WebCore/dom/Element.h
index 6aa6312..223c26a 100644
--- a/WebCore/dom/Element.h
+++ b/WebCore/dom/Element.h
@@ -3,7 +3,7 @@
* (C) 1999 Antti Koivisto (koivisto@kde.org)
* (C) 2001 Peter Kelly (pmk@post.com)
* (C) 2001 Dirk Mueller (mueller@kde.org)
- * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -42,7 +42,7 @@ class IntSize;
class Element : public ContainerNode {
public:
Element(const QualifiedName&, Document*);
- virtual ~Element();
+ ~Element();
const AtomicString& getIDAttribute() const;
bool hasAttribute(const QualifiedName&) const;
@@ -64,6 +64,7 @@ public:
void scrollIntoView(bool alignToTop = true);
void scrollIntoViewIfNeeded(bool centerIfNeeded = true);
+ void scrollByUnits(int units, ScrollGranularity);
void scrollByLines(int lines);
void scrollByPages(int pages);
@@ -107,11 +108,17 @@ public:
const AtomicString& localName() const { return m_tagName.localName(); }
const AtomicString& prefix() const { return m_tagName.prefix(); }
+ virtual void setPrefix(const AtomicString&, ExceptionCode&);
const AtomicString& namespaceURI() const { return m_tagName.namespaceURI(); }
virtual KURL baseURI() const;
+ // DOM methods overridden from parent classes
+ virtual NodeType nodeType() const;
virtual String nodeName() const;
+ virtual void insertedIntoDocument();
+ virtual void removedFromDocument();
+ virtual void childrenChanged(bool changedByParser = false, Node* beforeChange = 0, Node* afterChange = 0, int childCountDelta = 0);
PassRefPtr<Element> cloneElementWithChildren();
PassRefPtr<Element> cloneElementWithoutChildren();
@@ -129,9 +136,13 @@ public:
// This method is called whenever an attribute is added, changed or removed.
virtual void attributeChanged(Attribute*, bool preserveDecls = false);
+ // The implementation of Element::attributeChanged() calls the following two functions.
+ // They are separated to allow a different flow of control in StyledElement::attributeChanged().
+ void recalcStyleIfNeededAfterAttributeChanged(Attribute*);
+ void updateAfterAttributeChanged(Attribute*);
+
// not part of the DOM
void setAttributeMap(PassRefPtr<NamedNodeMap>);
- NamedNodeMap* attributeMap() const { return namedAttrMap.get(); }
virtual void copyNonAttributeProperties(const Element* /*source*/) { }
@@ -142,6 +153,10 @@ public:
virtual RenderStyle* computedStyle();
+ virtual bool childTypeAllowed(NodeType);
+
+ virtual PassRefPtr<Attribute> createAttribute(const QualifiedName&, const AtomicString& value);
+
void dispatchAttrRemovalEvent(Attribute*);
void dispatchAttrAdditionEvent(Attribute*);
@@ -155,6 +170,12 @@ public:
virtual void updateFocusAppearance(bool restorePreviousSelection);
void blur();
+#ifndef NDEBUG
+ virtual void formatForDebugger(char* buffer, unsigned length) const;
+#endif
+
+ bool pseudoStyleCacheIsInvalid(const RenderStyle* currentStyle, RenderStyle* newStyle);
+
String innerText() const;
String outerText() const;
@@ -185,13 +206,13 @@ public:
Element* nextElementSibling() const;
unsigned childElementCount() const;
+ // FormControlElement API
virtual bool isFormControlElement() const { return false; }
virtual bool isEnabledFormControl() const { return true; }
virtual bool isReadOnlyFormControl() const { return false; }
virtual bool isTextFormControl() const { return false; }
virtual bool isOptionalFormControl() const { return false; }
virtual bool isRequiredFormControl() const { return false; }
- virtual bool isDefaultButtonForForm() const { return false; }
virtual bool formControlValueMatchesRenderer() const { return false; }
virtual void setFormControlValueMatchesRenderer(bool) { }
@@ -204,37 +225,13 @@ public:
virtual void dispatchFormControlChangeEvent() { }
-protected:
- virtual void insertedIntoDocument();
- virtual void removedFromDocument();
- virtual void childrenChanged(bool changedByParser = false, Node* beforeChange = 0, Node* afterChange = 0, int childCountDelta = 0);
-
- // The implementation of Element::attributeChanged() calls the following two functions.
- // They are separated to allow a different flow of control in StyledElement::attributeChanged().
- void recalcStyleIfNeededAfterAttributeChanged(Attribute*);
- void updateAfterAttributeChanged(Attribute*);
-
private:
- void scrollByUnits(int units, ScrollGranularity);
-
- virtual void setPrefix(const AtomicString&, ExceptionCode&);
- virtual NodeType nodeType() const;
- virtual bool childTypeAllowed(NodeType);
-
- virtual PassRefPtr<Attribute> createAttribute(const QualifiedName&, const AtomicString& value);
-
-#ifndef NDEBUG
- virtual void formatForDebugger(char* buffer, unsigned length) const;
-#endif
-
- bool pseudoStyleCacheIsInvalid(const RenderStyle* currentStyle, RenderStyle* newStyle);
-
virtual void createAttributeMap() const;
- virtual void updateStyleAttribute() const { }
+ virtual void updateStyleAttribute() const {}
#if ENABLE(SVG)
- virtual void updateAnimatedSVGAttribute(const String&) const { }
+ virtual void updateAnimatedSVGAttribute(const String&) const {}
#endif
void updateFocusAppearanceSoonAfterAttach();
@@ -251,10 +248,10 @@ private:
QualifiedName m_tagName;
virtual NodeRareData* createRareData();
+protected:
ElementRareData* rareData() const;
ElementRareData* ensureRareData();
-protected:
mutable RefPtr<NamedNodeMap> namedAttrMap;
};
diff --git a/WebCore/dom/Element.idl b/WebCore/dom/Element.idl
index 16aac84..53711e9 100644
--- a/WebCore/dom/Element.idl
+++ b/WebCore/dom/Element.idl
@@ -21,7 +21,6 @@
module core {
interface [
- CustomMarkFunction,
GenerateConstructor,
GenerateNativeConverter,
InlineGetOwnPropertySlot,
diff --git a/WebCore/dom/EntityReference.cpp b/WebCore/dom/EntityReference.cpp
index c4c292a..012605c 100644
--- a/WebCore/dom/EntityReference.cpp
+++ b/WebCore/dom/EntityReference.cpp
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2000 Peter Kelly (pmk@post.com)
- * Copyright (C) 2006, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2006, 2008 Apple Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -23,17 +23,12 @@
namespace WebCore {
-inline EntityReference::EntityReference(Document* document, const String& entityName)
+EntityReference::EntityReference(Document* document, const String& entityName)
: ContainerNode(document)
, m_entityName(entityName)
{
}
-PassRefPtr<EntityReference> EntityReference::create(Document* document, const String& entityName)
-{
- return adoptRef(new EntityReference(document, entityName));
-}
-
String EntityReference::nodeName() const
{
return m_entityName;
@@ -46,7 +41,7 @@ Node::NodeType EntityReference::nodeType() const
PassRefPtr<Node> EntityReference::cloneNode(bool)
{
- return create(document(), m_entityName);
+ return new EntityReference(document(), m_entityName);
}
} // namespace
diff --git a/WebCore/dom/EntityReference.h b/WebCore/dom/EntityReference.h
index 7a6f6c3..4767a5e 100644
--- a/WebCore/dom/EntityReference.h
+++ b/WebCore/dom/EntityReference.h
@@ -28,15 +28,13 @@ namespace WebCore {
class EntityReference : public ContainerNode {
public:
- static PassRefPtr<EntityReference> create(Document*, const String& entityName);
-
-private:
EntityReference(Document*, const String& entityName);
virtual String nodeName() const;
virtual NodeType nodeType() const;
virtual PassRefPtr<Node> cloneNode(bool deep);
+private:
String m_entityName;
};
diff --git a/WebCore/dom/EventNames.h b/WebCore/dom/EventNames.h
index 18c4240..d28b154 100644
--- a/WebCore/dom/EventNames.h
+++ b/WebCore/dom/EventNames.h
@@ -73,7 +73,6 @@ namespace WebCore {
macro(obsolete) \
macro(offline) \
macro(online) \
- macro(open) \
macro(overflowchanged) \
macro(paste) \
macro(readystatechange) \
diff --git a/WebCore/dom/EventTarget.cpp b/WebCore/dom/EventTarget.cpp
index 2f13da8..7ba0584 100644
--- a/WebCore/dom/EventTarget.cpp
+++ b/WebCore/dom/EventTarget.cpp
@@ -44,11 +44,6 @@ EventTarget::~EventTarget()
{
}
-EventSource* EventTarget::toEventSource()
-{
- return 0;
-}
-
Node* EventTarget::toNode()
{
return 0;
@@ -111,13 +106,6 @@ SharedWorkerContext* EventTarget::toSharedWorkerContext()
}
#endif
-#if ENABLE(NOTIFICATIONS)
-Notification* EventTarget::toNotification()
-{
- return 0;
-}
-#endif
-
#ifndef NDEBUG
void forbidEventDispatch()
{
diff --git a/WebCore/dom/EventTarget.h b/WebCore/dom/EventTarget.h
index 6d3cb7c..2ededda 100644
--- a/WebCore/dom/EventTarget.h
+++ b/WebCore/dom/EventTarget.h
@@ -43,10 +43,8 @@ namespace WebCore {
class DOMWindow;
class Event;
class EventListener;
- class EventSource;
class MessagePort;
class Node;
- class Notification;
class SVGElementInstance;
class ScriptExecutionContext;
class SharedWorker;
@@ -59,7 +57,6 @@ namespace WebCore {
class EventTarget {
public:
- virtual EventSource* toEventSource();
virtual MessagePort* toMessagePort();
virtual Node* toNode();
virtual DOMWindow* toDOMWindow();
@@ -81,10 +78,6 @@ namespace WebCore {
virtual SharedWorkerContext* toSharedWorkerContext();
#endif
-#if ENABLE(NOTIFICATIONS)
- virtual Notification* toNotification();
-#endif
-
virtual ScriptExecutionContext* scriptExecutionContext() const = 0;
virtual void addEventListener(const AtomicString& eventType, PassRefPtr<EventListener>, bool useCapture) = 0;
diff --git a/WebCore/dom/Node.cpp b/WebCore/dom/Node.cpp
index 819f908..18655c6 100644
--- a/WebCore/dom/Node.cpp
+++ b/WebCore/dom/Node.cpp
@@ -337,69 +337,8 @@ Node::StyleChange Node::diff(const RenderStyle* s1, const RenderStyle* s2)
return ch;
}
-inline bool Node::initialRefCount(ConstructionType type)
-{
- switch (type) {
- case CreateContainer:
- case CreateElement:
- case CreateOther:
- case CreateText:
- return 1;
- case CreateElementZeroRefCount:
- return 0;
- }
- ASSERT_NOT_REACHED();
- return 1;
-}
-
-inline bool Node::isContainer(ConstructionType type)
-{
- switch (type) {
- case CreateContainer:
- case CreateElement:
- case CreateElementZeroRefCount:
- return true;
- case CreateOther:
- case CreateText:
- return false;
- }
- ASSERT_NOT_REACHED();
- return false;
-}
-
-inline bool Node::isElement(ConstructionType type)
-{
- switch (type) {
- case CreateContainer:
- case CreateOther:
- case CreateText:
- return false;
- case CreateElement:
- case CreateElementZeroRefCount:
- return true;
- }
- ASSERT_NOT_REACHED();
- return false;
-}
-
-inline bool Node::isText(ConstructionType type)
-{
- switch (type) {
- case CreateContainer:
- case CreateElement:
- case CreateElementZeroRefCount:
- case CreateOther:
- return false;
- case CreateText:
- return true;
- }
- ASSERT_NOT_REACHED();
- return false;
-}
-
-Node::Node(Document* document, ConstructionType type)
- : TreeShared<Node>(initialRefCount(type))
- , m_document(document)
+Node::Node(Document* doc, bool isElement, bool isContainer, bool isText)
+ : m_document(doc)
, m_previous(0)
, m_next(0)
, m_renderer(0)
@@ -416,27 +355,25 @@ Node::Node(Document* document, ConstructionType type)
, m_inDetach(false)
, m_inSubtreeMark(false)
, m_hasRareData(false)
- , m_isElement(isElement(type))
- , m_isContainer(isContainer(type))
- , m_isText(isText(type))
+ , m_isElement(isElement)
+ , m_isContainer(isContainer)
+ , m_isText(isText)
, m_parsingChildrenFinished(true)
+#if ENABLE(SVG)
+ , m_areSVGAttributesValid(true)
+#endif
, m_isStyleAttributeValid(true)
, m_synchronizingStyleAttribute(false)
#if ENABLE(SVG)
- , m_areSVGAttributesValid(true)
, m_synchronizingSVGAttributes(false)
#endif
{
- if (m_document)
- m_document->selfOnlyRef();
-
#ifndef NDEBUG
if (shouldIgnoreLeaks)
ignoreSet.add(this);
else
nodeCounter.increment();
#endif
-
#if DUMP_NODE_STATISTICS
liveNodeSet.add(this);
#endif
@@ -479,9 +416,6 @@ Node::~Node()
m_previous->setNextSibling(0);
if (m_next)
m_next->setPreviousSibling(0);
-
- if (m_document)
- m_document->selfOnlyDeref();
}
#ifdef NDEBUG
@@ -516,19 +450,14 @@ void Node::setDocument(Document* document)
if (inDocument() || m_document == document)
return;
- document->selfOnlyRef();
-
setWillMoveToNewOwnerDocumentWasCalled(false);
willMoveToNewOwnerDocument();
ASSERT(willMoveToNewOwnerDocumentWasCalled);
#if USE(JSC)
- updateDOMNodeDocument(this, m_document, document);
+ updateDOMNodeDocument(this, m_document.get(), document);
#endif
- if (m_document)
- m_document->selfOnlyDeref();
-
m_document = document;
setDidMoveToNewOwnerDocumentWasCalled(false);
@@ -1971,11 +1900,11 @@ void Node::appendTextContent(bool convertBRsToNewlines, StringBuilder& content)
case TEXT_NODE:
case CDATA_SECTION_NODE:
case COMMENT_NODE:
- content.append(static_cast<const CharacterData*>(this)->data());
+ content.append(static_cast<const CharacterData*>(this)->CharacterData::nodeValue());
break;
case PROCESSING_INSTRUCTION_NODE:
- content.append(static_cast<const ProcessingInstruction*>(this)->data());
+ content.append(static_cast<const ProcessingInstruction*>(this)->ProcessingInstruction::nodeValue());
break;
case ELEMENT_NODE:
diff --git a/WebCore/dom/Node.h b/WebCore/dom/Node.h
index d1f58dc..f10e830 100644
--- a/WebCore/dom/Node.h
+++ b/WebCore/dom/Node.h
@@ -25,6 +25,7 @@
#ifndef Node_h
#define Node_h
+#include "DocPtr.h"
#include "EventTarget.h"
#include "KURLHash.h"
#include "PlatformString.h"
@@ -107,6 +108,7 @@ public:
enum StyleChange { NoChange, NoInherit, Inherit, Detach, Force };
static StyleChange diff(const RenderStyle*, const RenderStyle*);
+ Node(Document*, bool isElement = false, bool isContainer = false, bool isText = false);
virtual ~Node();
// DOM methods & attributes for Node
@@ -314,7 +316,7 @@ public:
{
ASSERT(this);
ASSERT(m_document || (nodeType() == DOCUMENT_TYPE_NODE && !inDocument()));
- return m_document;
+ return m_document.get();
}
void setDocument(Document*);
@@ -671,35 +673,14 @@ public:
using TreeShared<Node>::ref;
using TreeShared<Node>::deref;
-
-protected:
- // CreateElementZeroRefCount is deprecated and can be removed once we convert all element
- // classes to start with a reference count of 1.
- enum ConstructionType { CreateContainer, CreateElement, CreateOther, CreateText, CreateElementZeroRefCount };
- Node(Document*, ConstructionType);
-
- virtual void willMoveToNewOwnerDocument();
- virtual void didMoveToNewOwnerDocument();
-
- virtual void addSubresourceAttributeURLs(ListHashSet<KURL>&) const { }
- void setTabIndexExplicitly(short);
-
- bool hasRareData() const { return m_hasRareData; }
-
- NodeRareData* rareData() const;
- NodeRareData* ensureRareData();
-
+
private:
- static bool initialRefCount(ConstructionType);
- static bool isContainer(ConstructionType);
- static bool isElement(ConstructionType);
- static bool isText(ConstructionType);
-
virtual void refEventTarget() { ref(); }
virtual void derefEventTarget() { deref(); }
void removeAllEventListenersSlowCase();
+private:
virtual NodeRareData* createRareData();
Node* containerChildNode(unsigned index) const;
unsigned containerChildNodeCount() const;
@@ -717,7 +698,7 @@ private:
void appendTextContent(bool convertBRsToNewlines, StringBuilder&) const;
- Document* m_document;
+ DocPtr<Document> m_document;
Node* m_previous;
Node* m_next;
RenderObject* m_renderer;
@@ -740,16 +721,22 @@ private:
const bool m_isText : 1;
protected:
- // These bits are used by derived classes, pulled up here so they can
+ // These bits are used by the Element derived class, pulled up here so they can
// be stored in the same memory word as the Node bits above.
+ bool m_parsingChildrenFinished : 1;
+#if ENABLE(SVG)
+ mutable bool m_areSVGAttributesValid : 1;
+#endif
- bool m_parsingChildrenFinished : 1; // Element
- mutable bool m_isStyleAttributeValid : 1; // StyledElement
- mutable bool m_synchronizingStyleAttribute : 1; // StyledElement
+ // These bits are used by the StyledElement derived class, and live here for the
+ // same reason as above.
+ mutable bool m_isStyleAttributeValid : 1;
+ mutable bool m_synchronizingStyleAttribute : 1;
#if ENABLE(SVG)
- mutable bool m_areSVGAttributesValid : 1; // Element
- mutable bool m_synchronizingSVGAttributes : 1; // SVGElement
+ // This bit is used by the SVGElement derived class, and lives here for the same
+ // reason as above.
+ mutable bool m_synchronizingSVGAttributes : 1;
#endif
// 11 bits remaining
diff --git a/WebCore/dom/Notation.cpp b/WebCore/dom/Notation.cpp
index cade384..7081d98 100644
--- a/WebCore/dom/Notation.cpp
+++ b/WebCore/dom/Notation.cpp
@@ -1,6 +1,8 @@
-/*
+/**
+ * This file is part of the DOM implementation for KDE.
+ *
* Copyright (C) 2000 Peter Kelly (pmk@post.com)
- * Copyright (C) 2006, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2006 Apple Computer, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -17,14 +19,17 @@
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
-
#include "config.h"
#include "Notation.h"
namespace WebCore {
-Notation::Notation(Document* document, const String& name, const String& publicId, const String& systemId)
- : ContainerNode(document)
+Notation::Notation(Document* doc) : ContainerNode(doc)
+{
+}
+
+Notation::Notation(Document* doc, const String& name, const String& publicId, const String& systemId)
+ : ContainerNode(doc)
, m_name(name)
, m_publicId(publicId)
, m_systemId(systemId)
@@ -47,6 +52,7 @@ PassRefPtr<Node> Notation::cloneNode(bool /*deep*/)
return 0;
}
+// DOM Section 1.1.1
bool Notation::childTypeAllowed(NodeType)
{
return false;
diff --git a/WebCore/dom/Notation.h b/WebCore/dom/Notation.h
index 547c9e7..2bd5363 100644
--- a/WebCore/dom/Notation.h
+++ b/WebCore/dom/Notation.h
@@ -1,6 +1,8 @@
/*
+ * This file is part of the DOM implementation for KDE.
+ *
* Copyright (C) 2000 Peter Kelly (pmk@post.com)
- * Copyright (C) 2006, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2006 Apple Computer, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -22,25 +24,26 @@
#ifndef Notation_h
#define Notation_h
+#include "CachedResourceClient.h"
#include "ContainerNode.h"
namespace WebCore {
-// FIXME: This class is never instantiated. Maybe it should be removed.
-
class Notation : public ContainerNode {
public:
- const String& publicId() const { return m_publicId; }
- const String& systemId() const { return m_systemId; }
-
-private:
+ Notation(Document*);
Notation(Document*, const String& name, const String& publicId, const String& systemId);
+ // DOM methods & attributes for Notation
+ String publicId() const { return m_publicId; }
+ String systemId() const { return m_systemId; }
+
virtual String nodeName() const;
virtual NodeType nodeType() const;
virtual PassRefPtr<Node> cloneNode(bool deep);
virtual bool childTypeAllowed(NodeType);
+private:
String m_name;
String m_publicId;
String m_systemId;
diff --git a/WebCore/dom/ProcessingInstruction.cpp b/WebCore/dom/ProcessingInstruction.cpp
index 8404481..806bf92 100644
--- a/WebCore/dom/ProcessingInstruction.cpp
+++ b/WebCore/dom/ProcessingInstruction.cpp
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2000 Peter Kelly (pmk@post.com)
- * Copyright (C) 2006, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2006, 2008 Apple Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -35,10 +35,8 @@
namespace WebCore {
-inline ProcessingInstruction::ProcessingInstruction(Document* document, const String& target, const String& data)
- : ContainerNode(document)
- , m_target(target)
- , m_data(data)
+ProcessingInstruction::ProcessingInstruction(Document* doc)
+ : ContainerNode(doc)
, m_cachedSheet(0)
, m_loading(false)
, m_alternate(false)
@@ -48,9 +46,17 @@ inline ProcessingInstruction::ProcessingInstruction(Document* document, const St
{
}
-PassRefPtr<ProcessingInstruction> ProcessingInstruction::create(Document* document, const String& target, const String& data)
+ProcessingInstruction::ProcessingInstruction(Document* doc, const String& target, const String& data)
+ : ContainerNode(doc)
+ , m_target(target)
+ , m_data(data)
+ , m_cachedSheet(0)
+ , m_loading(false)
+ , m_alternate(false)
+#if ENABLE(XSLT)
+ , m_isXSL(false)
+#endif
{
- return adoptRef(new ProcessingInstruction(document, target, data));
}
ProcessingInstruction::~ProcessingInstruction()
@@ -89,9 +95,8 @@ void ProcessingInstruction::setNodeValue(const String& nodeValue, ExceptionCode&
PassRefPtr<Node> ProcessingInstruction::cloneNode(bool /*deep*/)
{
- // FIXME: Is it a problem that this does not copy m_localHref?
- // What about other data members?
- return create(document(), m_target, m_data);
+ // ### copy m_localHref
+ return new ProcessingInstruction(document(), m_target, m_data);
}
// DOM Section 1.1.1
diff --git a/WebCore/dom/ProcessingInstruction.h b/WebCore/dom/ProcessingInstruction.h
index 4b7dc86..d133019 100644
--- a/WebCore/dom/ProcessingInstruction.h
+++ b/WebCore/dom/ProcessingInstruction.h
@@ -1,6 +1,8 @@
/*
+ * This file is part of the DOM implementation for KDE.
+ *
* Copyright (C) 2000 Peter Kelly (pmk@post.com)
- * Copyright (C) 2006 Apple Inc. All rights reserved.
+ * Copyright (C) 2006 Apple Computer, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -33,28 +35,15 @@ class CSSStyleSheet;
class ProcessingInstruction : public ContainerNode, private CachedResourceClient {
public:
- static PassRefPtr<ProcessingInstruction> create(Document*, const String& target, const String& data);
+ ProcessingInstruction(Document*);
+ ProcessingInstruction(Document*, const String& target, const String& data);
virtual ~ProcessingInstruction();
- const String& target() const { return m_target; }
- const String& data() const { return m_data; }
+ // DOM methods & attributes for Notation
+ String target() const { return m_target; }
+ String data() const { return m_data; }
void setData(const String&, ExceptionCode&);
- void setCreatedByParser(bool createdByParser) { m_createdByParser = createdByParser; }
-
- virtual void finishParsingChildren();
-
- const String& localHref() const { return m_localHref; }
- StyleSheet* sheet() const { return m_sheet.get(); }
- void setCSSStyleSheet(PassRefPtr<CSSStyleSheet>);
-
-#if ENABLE(XSLT)
- bool isXSL() const { return m_isXSL; }
-#endif
-
-private:
- ProcessingInstruction(Document*, const String& target, const String& data);
-
virtual String nodeName() const;
virtual NodeType nodeType() const;
virtual String nodeValue() const;
@@ -66,18 +55,28 @@ private:
virtual void insertedIntoDocument();
virtual void removedFromDocument();
+ void setCreatedByParser(bool createdByParser) { m_createdByParser = createdByParser; }
+ virtual void finishParsingChildren();
+ // Other methods (not part of DOM)
+ String localHref() const { return m_localHref; }
+ StyleSheet* sheet() const { return m_sheet.get(); }
void checkStyleSheet();
virtual void setCSSStyleSheet(const String& url, const String& charset, const CachedCSSStyleSheet*);
#if ENABLE(XSLT)
virtual void setXSLStyleSheet(const String& url, const String& sheet);
#endif
-
+ void setCSSStyleSheet(PassRefPtr<CSSStyleSheet>);
bool isLoading() const;
virtual bool sheetLoaded();
+#if ENABLE(XSLT)
+ bool isXSL() const { return m_isXSL; }
+#endif
+
virtual void addSubresourceAttributeURLs(ListHashSet<KURL>&) const;
+private:
void parseStyleSheet(const String& sheet);
String m_target;
diff --git a/WebCore/dom/Range.cpp b/WebCore/dom/Range.cpp
index b9a531c..edee305 100644
--- a/WebCore/dom/Range.cpp
+++ b/WebCore/dom/Range.cpp
@@ -586,7 +586,7 @@ PassRefPtr<DocumentFragment> Range::processContents(ActionType action, Exception
RefPtr<DocumentFragment> fragment;
if (action == EXTRACT_CONTENTS || action == CLONE_CONTENTS)
- fragment = DocumentFragment::create(m_ownerDocument.get());
+ fragment = new DocumentFragment(m_ownerDocument.get());
ec = 0;
if (collapsed(ec))
diff --git a/WebCore/dom/StyledElement.cpp b/WebCore/dom/StyledElement.cpp
index 13c23fb..456cc52 100644
--- a/WebCore/dom/StyledElement.cpp
+++ b/WebCore/dom/StyledElement.cpp
@@ -280,6 +280,14 @@ CSSStyleDeclaration* StyledElement::style()
return getInlineStyleDecl();
}
+static inline int toHex(UChar c)
+{
+ return ((c >= '0' && c <= '9') ? (c - '0')
+ : ((c >= 'a' && c <= 'f') ? (c - 'a' + 10)
+ : ((c >= 'A' && c <= 'F') ? (c - 'A' + 10)
+ : -1)));
+}
+
void StyledElement::addCSSProperty(MappedAttribute* attr, int id, const String &value)
{
if (!attr->decl()) createMappedDecl(attr);
@@ -385,9 +393,10 @@ void StyledElement::addCSSColor(MappedAttribute* attr, int id, const String& c)
// search forward for digits in the string
int numDigits = 0;
while (pos < (int)color.length() && numDigits < basicLength) {
- colors[component] <<= 4;
- if (isASCIIHexDigit(color[pos])) {
- colors[component] += toASCIIHexValue(color[pos]);
+ int hex = toHex(color[pos]);
+ colors[component] = (colors[component] << 4);
+ if (hex > 0) {
+ colors[component] += hex;
maxDigit = min(maxDigit, numDigits);
}
numDigits++;
@@ -401,9 +410,10 @@ void StyledElement::addCSSColor(MappedAttribute* attr, int id, const String& c)
// normalize to 00-ff. The highest filled digit counts, minimum is 2 digits
maxDigit -= 2;
- colors[0] >>= 4 * maxDigit;
- colors[1] >>= 4 * maxDigit;
- colors[2] >>= 4 * maxDigit;
+ colors[0] >>= 4*maxDigit;
+ colors[1] >>= 4*maxDigit;
+ colors[2] >>= 4*maxDigit;
+ // ASSERT(colors[0] < 0x100 && colors[1] < 0x100 && colors[2] < 0x100);
color = String::format("#%02x%02x%02x", colors[0], colors[1], colors[2]);
if (attr->decl()->setProperty(id, color, false))
diff --git a/WebCore/dom/Text.cpp b/WebCore/dom/Text.cpp
index 00db1c1..bbd926b 100644
--- a/WebCore/dom/Text.cpp
+++ b/WebCore/dom/Text.cpp
@@ -1,7 +1,7 @@
/*
* Copyright (C) 1999 Lars Knoll (knoll@kde.org)
* (C) 1999 Antti Koivisto (koivisto@kde.org)
- * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -37,18 +37,22 @@
#include "WMLVariables.h"
#endif
-using namespace std;
-
namespace WebCore {
-Text::Text(Document* document, const String& data)
- : CharacterData(document, data, CreateText)
+// DOM Section 1.1.1
+
+Text::Text(Document* document, const String& text)
+ : CharacterData(document, text, true)
+{
+}
+
+Text::Text(Document* document)
+ : CharacterData(document, true)
{
}
-PassRefPtr<Text> Text::create(Document* document, const String& data)
+Text::~Text()
{
- return adoptRef(new Text(document, data));
}
PassRefPtr<Text> Text::splitText(unsigned offset, ExceptionCode& ec)
@@ -57,14 +61,14 @@ PassRefPtr<Text> Text::splitText(unsigned offset, ExceptionCode& ec)
// INDEX_SIZE_ERR: Raised if the specified offset is negative or greater than
// the number of 16-bit units in data.
- if (offset > length()) {
+ if (offset > m_data->length()) {
ec = INDEX_SIZE_ERR;
return 0;
}
- RefPtr<StringImpl> oldStr = dataImpl();
- RefPtr<Text> newText = virtualCreate(oldStr->substring(offset));
- setDataImpl(oldStr->substring(0, offset));
+ RefPtr<StringImpl> oldStr = m_data;
+ RefPtr<Text> newText = createNew(oldStr->substring(offset));
+ m_data = oldStr->substring(0, offset);
dispatchModifiedEvent(oldStr.get());
@@ -77,7 +81,7 @@ PassRefPtr<Text> Text::splitText(unsigned offset, ExceptionCode& ec)
document()->textNodeSplit(this);
if (renderer())
- toRenderText(renderer())->setText(dataImpl());
+ toRenderText(renderer())->setText(m_data);
return newText.release();
}
@@ -195,7 +199,7 @@ Node::NodeType Text::nodeType() const
PassRefPtr<Node> Text::cloneNode(bool /*deep*/)
{
- return create(document(), data());
+ return document()->createTextNode(m_data);
}
bool Text::rendererIsNeeded(RenderStyle *style)
@@ -240,7 +244,7 @@ bool Text::rendererIsNeeded(RenderStyle *style)
return true;
}
-RenderObject* Text::createRenderer(RenderArena* arena, RenderStyle*)
+RenderObject *Text::createRenderer(RenderArena* arena, RenderStyle*)
{
#if ENABLE(SVG)
if (parentNode()->isSVGElement()
@@ -248,17 +252,17 @@ RenderObject* Text::createRenderer(RenderArena* arena, RenderStyle*)
&& !parentNode()->hasTagName(SVGNames::foreignObjectTag)
#endif
)
- return new (arena) RenderSVGInlineText(this, dataImpl());
+ return new (arena) RenderSVGInlineText(this, m_data);
#endif
- return new (arena) RenderText(this, dataImpl());
+ return new (arena) RenderText(this, m_data);
}
void Text::attach()
{
#if ENABLE(WML)
if (document()->isWMLDocument() && !containsOnlyWhitespace()) {
- String text = data();
+ String text = m_data;
ASSERT(!text.isEmpty());
text = substituteVariableReferences(text, document());
@@ -282,7 +286,7 @@ void Text::recalcStyle(StyleChange change)
if (needsStyleRecalc()) {
if (renderer()) {
if (renderer()->isText())
- toRenderText(renderer())->setText(dataImpl());
+ toRenderText(renderer())->setText(m_data);
} else {
if (attached())
detach();
@@ -292,42 +296,40 @@ void Text::recalcStyle(StyleChange change)
setNeedsStyleRecalc(NoStyleChange);
}
+// DOM Section 1.1.1
bool Text::childTypeAllowed(NodeType)
{
return false;
}
-PassRefPtr<Text> Text::virtualCreate(const String& data)
+PassRefPtr<Text> Text::createNew(PassRefPtr<StringImpl> string)
{
- return create(document(), data);
+ return new Text(document(), string);
}
-PassRefPtr<Text> Text::createWithLengthLimit(Document* document, const String& data, unsigned& charsLeft, unsigned maxChars)
+PassRefPtr<Text> Text::createWithLengthLimit(Document* doc, const String& text, unsigned& charsLeft, unsigned maxChars)
{
- unsigned dataLength = data.length();
-
- if (charsLeft == dataLength && charsLeft <= maxChars) {
+ if (charsLeft == text.length() && charsLeft <= maxChars) {
charsLeft = 0;
- return create(document, data);
+ return new Text(doc, text);
}
-
- unsigned start = dataLength - charsLeft;
- unsigned end = start + min(charsLeft, maxChars);
- // Check we are not on an unbreakable boundary.
- TextBreakIterator* it = characterBreakIterator(data.characters(), dataLength);
- if (end < dataLength && !isTextBreak(it, end))
+ unsigned start = text.length() - charsLeft;
+ unsigned end = start + std::min(charsLeft, maxChars);
+
+ // check we are not on an unbreakable boundary
+ TextBreakIterator* it = characterBreakIterator(text.characters(), text.length());
+ if (end < text.length() && !isTextBreak(it, end))
end = textBreakPreceding(it, end);
- // If we have maxChars of unbreakable characters the above could lead to
- // an infinite loop.
- // FIXME: It would be better to just have the old value of end before calling
- // textBreakPreceding rather than this, because this exceeds the length limit.
+ // maxChars of unbreakable characters could lead to infinite loop
if (end <= start)
- end = dataLength;
+ end = text.length();
- charsLeft = dataLength - end;
- return create(document, data.substring(start, end - start));
+ String nodeText = text.substring(start, end - start);
+ charsLeft = text.length() - end;
+
+ return new Text(doc, nodeText);
}
#ifndef NDEBUG
@@ -341,7 +343,7 @@ void Text::formatForDebugger(char *buffer, unsigned length) const
result += s;
}
- s = data();
+ s = nodeValue();
if (s.length() > 0) {
if (result.length() > 0)
result += "; ";
diff --git a/WebCore/dom/Text.h b/WebCore/dom/Text.h
index 4722736..e5a6e69 100644
--- a/WebCore/dom/Text.h
+++ b/WebCore/dom/Text.h
@@ -1,7 +1,7 @@
/*
* Copyright (C) 1999 Lars Knoll (knoll@kde.org)
* (C) 1999 Antti Koivisto (koivisto@kde.org)
- * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -27,39 +27,44 @@
namespace WebCore {
+const unsigned cTextNodeLengthLimit = 1 << 16;
+
class Text : public CharacterData {
public:
- static const unsigned defaultLengthLimit = 1 << 16;
+ Text(Document *impl, const String &_text);
+ Text(Document *impl);
+ virtual ~Text();
- static PassRefPtr<Text> create(Document*, const String&);
- static PassRefPtr<Text> createWithLengthLimit(Document*, const String&, unsigned& charsLeft, unsigned lengthLimit = defaultLengthLimit);
+ // DOM methods & attributes for CharacterData
PassRefPtr<Text> splitText(unsigned offset, ExceptionCode&);
// DOM Level 3: http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-1312295772
-
String wholeText() const;
PassRefPtr<Text> replaceWholeText(const String&, ExceptionCode&);
- virtual void attach();
-
-protected:
- Text(Document*, const String&);
+ // DOM methods overridden from parent classes
-private:
virtual String nodeName() const;
virtual NodeType nodeType() const;
virtual PassRefPtr<Node> cloneNode(bool deep);
+
+ // Other methods (not part of DOM)
+
+ virtual void attach();
virtual bool rendererIsNeeded(RenderStyle*);
virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
virtual void recalcStyle(StyleChange = NoChange);
virtual bool childTypeAllowed(NodeType);
- virtual PassRefPtr<Text> virtualCreate(const String&);
+ static PassRefPtr<Text> createWithLengthLimit(Document*, const String&, unsigned& charsLeft, unsigned maxChars = cTextNodeLengthLimit);
#ifndef NDEBUG
virtual void formatForDebugger(char* buffer, unsigned length) const;
#endif
+
+protected:
+ virtual PassRefPtr<Text> createNew(PassRefPtr<StringImpl>);
};
} // namespace WebCore
diff --git a/WebCore/dom/XMLTokenizer.cpp b/WebCore/dom/XMLTokenizer.cpp
index 4d06343..1747c3c 100644
--- a/WebCore/dom/XMLTokenizer.cpp
+++ b/WebCore/dom/XMLTokenizer.cpp
@@ -136,7 +136,7 @@ bool XMLTokenizer::enterText()
#if !USE(QXMLSTREAM)
ASSERT(m_bufferedText.size() == 0);
#endif
- RefPtr<Node> newNode = Text::create(m_doc, "");
+ RefPtr<Node> newNode = new Text(m_doc, "");
if (!m_currentNode->addChild(newNode.get()))
return false;
setCurrentNode(newNode.get());
diff --git a/WebCore/dom/XMLTokenizerLibxml2.cpp b/WebCore/dom/XMLTokenizerLibxml2.cpp
index da2f9b6..4387a66 100644
--- a/WebCore/dom/XMLTokenizerLibxml2.cpp
+++ b/WebCore/dom/XMLTokenizerLibxml2.cpp
@@ -951,7 +951,7 @@ void XMLTokenizer::cdataBlock(const xmlChar* s, int len)
exitText();
- RefPtr<Node> newNode = CDATASection::create(m_doc, toString(s, len));
+ RefPtr<Node> newNode = new CDATASection(m_doc, toString(s, len));
if (!m_currentNode->addChild(newNode.get()))
return;
if (m_view && !newNode->attached())
@@ -970,7 +970,7 @@ void XMLTokenizer::comment(const xmlChar* s)
exitText();
- RefPtr<Node> newNode = Comment::create(m_doc, toString(s));
+ RefPtr<Node> newNode = new Comment(m_doc, toString(s));
m_currentNode->addChild(newNode.get());
if (m_view && !newNode->attached())
newNode->attach();
diff --git a/WebCore/dom/XMLTokenizerQt.cpp b/WebCore/dom/XMLTokenizerQt.cpp
index 799eef3..16c637f 100644
--- a/WebCore/dom/XMLTokenizerQt.cpp
+++ b/WebCore/dom/XMLTokenizerQt.cpp
@@ -692,7 +692,7 @@ void XMLTokenizer::parseCdata()
{
exitText();
- RefPtr<Node> newNode = CDATASection::create(m_doc, m_stream.text());
+ RefPtr<Node> newNode = new CDATASection(m_doc, m_stream.text());
if (!m_currentNode->addChild(newNode.get()))
return;
if (m_view && !newNode->attached())
@@ -703,7 +703,7 @@ void XMLTokenizer::parseComment()
{
exitText();
- RefPtr<Node> newNode = Comment::create(m_doc, m_stream.text());
+ RefPtr<Node> newNode = new Comment(m_doc, m_stream.text());
m_currentNode->addChild(newNode.get());
if (m_view && !newNode->attached())
newNode->attach();
diff --git a/WebCore/dom/make_names.pl b/WebCore/dom/make_names.pl
index 4e6eb38..e6d59a0 100755
--- a/WebCore/dom/make_names.pl
+++ b/WebCore/dom/make_names.pl
@@ -48,30 +48,28 @@ my %parameters = ();
my $extraDefines = 0;
my $preprocessor = "/usr/bin/gcc -E -P -x c++";
-GetOptions(
- 'tags=s' => \$tagsFile,
+GetOptions('tags=s' => \$tagsFile,
'attrs=s' => \$attrsFile,
'factory' => \$printFactory,
'outputDir=s' => \$outputDir,
'extraDefines=s' => \$extraDefines,
'preprocessor=s' => \$preprocessor,
- 'wrapperFactory' => \$printWrapperFactory
-);
+ 'wrapperFactory' => \$printWrapperFactory);
die "You must specify at least one of --tags <file> or --attrs <file>" unless (length($tagsFile) || length($attrsFile));
readNames($tagsFile, "tags") if length($tagsFile);
readNames($attrsFile, "attrs") if length($attrsFile);
-die "You must specify a namespace (e.g. SVG) for <namespace>Names.h" unless $parameters{namespace};
-die "You must specify a namespaceURI (e.g. http://www.w3.org/2000/svg)" unless $parameters{namespaceURI};
+die "You must specify a namespace (e.g. SVG) for <namespace>Names.h" unless $parameters{'namespace'};
+die "You must specify a namespaceURI (e.g. http://www.w3.org/2000/svg)" unless $parameters{'namespaceURI'};
-$parameters{namespacePrefix} = $parameters{namespace} unless $parameters{namespacePrefix};
+$parameters{'namespacePrefix'} = $parameters{'namespace'} unless $parameters{'namespacePrefix'};
mkpath($outputDir);
-my $namesBasePath = "$outputDir/$parameters{namespace}Names";
-my $factoryBasePath = "$outputDir/$parameters{namespace}ElementFactory";
-my $wrapperFactoryBasePath = "$outputDir/JS$parameters{namespace}ElementWrapperFactory";
+my $namesBasePath = "$outputDir/$parameters{'namespace'}Names";
+my $factoryBasePath = "$outputDir/$parameters{'namespace'}ElementFactory";
+my $wrapperFactoryBasePath = "$outputDir/JS$parameters{'namespace'}ElementWrapperFactory";
printNamesHeaderFile("$namesBasePath.h");
printNamesCppFile("$namesBasePath.cpp");
@@ -88,44 +86,39 @@ if ($printWrapperFactory) {
### Hash initialization
-sub defaultTagPropertyHash
+sub initializeTagPropertyHash
{
- return (
- 'constructorNeedsCreatedByParser' => 0,
- 'constructorNeedsFormElement' => 0,
- 'createWithNew' => 1,
- 'exportString' => 0,
- 'interfaceName' => defaultInterfaceName($_[0]),
- # By default, the JSInterfaceName is the same as the interfaceName.
- 'JSInterfaceName' => defaultInterfaceName($_[0]),
- 'mapToTagName' => '',
- 'wrapperOnlyIfMediaIsAvailable' => 0,
- 'conditional' => 0
- );
+ return ('constructorNeedsCreatedByParser' => 0,
+ 'constructorNeedsFormElement' => 0,
+ 'exportString' => 0,
+ 'interfaceName' => defaultInterfaceName($_[0]),
+ # By default, the JSInterfaceName is the same as the interfaceName.
+ 'JSInterfaceName' => defaultInterfaceName($_[0]),
+ 'mapToTagName' => '',
+ 'wrapperOnlyIfMediaIsAvailable' => 0,
+ 'conditional' => 0);
}
-sub defaultAttrPropertyHash
+sub initializeAttrPropertyHash
{
return ('exportString' => 0);
}
-sub defaultParametersHash
+sub initializeParametersHash
{
- return (
- 'namespace' => '',
- 'namespacePrefix' => '',
- 'namespaceURI' => '',
- 'guardFactoryWith' => '',
- 'tagsNullNamespace' => 0,
- 'attrsNullNamespace' => 0,
- 'exportStrings' => 0
- );
+ return ('namespace' => '',
+ 'namespacePrefix' => '',
+ 'namespaceURI' => '',
+ 'guardFactoryWith' => '',
+ 'tagsNullNamespace' => 0,
+ 'attrsNullNamespace' => 0,
+ 'exportStrings' => 0);
}
sub defaultInterfaceName
{
- die "No namespace found" if !$parameters{namespace};
- return $parameters{namespace} . upperCaseName($_[0]) . "Element"
+ die "No namespace found" if !$parameters{'namespace'};
+ return $parameters{'namespace'} . upperCaseName($_[0]) . "Element"
}
### Parsing handlers
@@ -136,16 +129,16 @@ sub tagsHandler
$tag =~ s/-/_/g;
- # Initialize default property values.
- $tags{$tag} = { defaultTagPropertyHash($tag) } if !defined($tags{$tag});
+ # Initialize default properties' values.
+ $tags{$tag} = { initializeTagPropertyHash($tag) } if !defined($tags{$tag});
if ($property) {
die "Unknown property $property for tag $tag\n" if !defined($tags{$tag}{$property});
-
- # The code relies on JSInterfaceName deriving from interfaceName to check for custom JSInterfaceName.
- # So override JSInterfaceName if it was not already set.
- $tags{$tag}{JSInterfaceName} = $value if $property eq "interfaceName" && $tags{$tag}{JSInterfaceName} eq $tags{$tag}{interfaceName};
-
+ # The code rely on JSInterfaceName deriving from interfaceName to check for custom JSInterfaceName.
+ # So just override JSInterfaceName if it was not already set.
+ if ($property eq "interfaceName" && $tags{$tag}{'JSInterfaceName'} eq $tags{$tag}{'interfaceName'}) {
+ $tags{$tag}{'JSInterfaceName'} = $value;
+ }
$tags{$tag}{$property} = $value;
}
}
@@ -157,7 +150,7 @@ sub attrsHandler
$attr =~ s/-/_/g;
# Initialize default properties' values.
- $attrs{$attr} = { defaultAttrPropertyHash($attr) } if !defined($attrs{$attr});
+ $attrs{$attr} = { initializeAttrPropertyHash($attr) } if !defined($attrs{$attr});
if ($property) {
die "Unknown property $property for attribute $attr\n" if !defined($attrs{$attr}{$property});
@@ -170,7 +163,7 @@ sub parametersHandler
my ($parameter, $value) = @_;
# Initialize default properties' values.
- %parameters = defaultParametersHash() if !(keys %parameters);
+ %parameters = initializeParametersHash() if !(keys %parameters);
die "Unknown parameter $parameter for tags/attrs\n" if !defined($parameters{$parameter});
$parameters{$parameter} = $value;
@@ -221,7 +214,7 @@ sub printMacros
for my $name (sort keys %$namesRef) {
print F "$macro $name","$suffix;\n";
- if ($parameters{exportStrings} or $names{$name}{exportString}) {
+ if ($parameters{'exportStrings'} or $names{$name}{"exportString"}) {
print F "extern char $name", "${suffix}String[];\n";
}
}
@@ -230,7 +223,7 @@ sub printMacros
sub usesDefaultWrapper
{
my $tagName = shift;
- return $tagName eq $parameters{namespace} . "Element";
+ return $tagName eq $parameters{'namespace'} . "Element";
}
# Build a direct mapping from the tags to the Element to create, excluding
@@ -239,16 +232,16 @@ sub buildConstructorMap
{
my %tagConstructorMap = ();
for my $tagName (keys %tags) {
- my $interfaceName = $tags{$tagName}{interfaceName};
+ my $interfaceName = $tags{$tagName}{'interfaceName'};
next if (usesDefaultWrapper($interfaceName));
- if ($tags{$tagName}{mapToTagName}) {
- die "Cannot handle multiple mapToTagName for $tagName\n" if $tags{$tags{$tagName}{mapToTagName}}{mapToTagName};
- $interfaceName = $tags{ $tags{$tagName}{mapToTagName} }{interfaceName};
+ if ($tags{$tagName}{'mapToTagName'}) {
+ die "Cannot handle multiple mapToTagName for $tagName\n" if $tags{$tags{$tagName}{'mapToTagName'}}{'mapToTagName'};
+ $interfaceName = $tags{ $tags{$tagName}{'mapToTagName'} }{'interfaceName'};
}
# Chop the string to keep the interesting part.
- $interfaceName =~ s/$parameters{namespace}(.*)Element/$1/;
+ $interfaceName =~ s/$parameters{'namespace'}(.*)Element/$1/;
$tagConstructorMap{$tagName} = lc($interfaceName);
}
@@ -261,13 +254,17 @@ sub printConstructorSignature
{
my ($F, $tagName, $constructorName, $constructorTagName) = @_;
- print F "static PassRefPtr<$parameters{namespace}Element> ${constructorName}Constructor(const QualifiedName& $constructorTagName, Document* document";
- if ($parameters{namespace} eq "HTML") {
+ print F "static PassRefPtr<$parameters{'namespace'}Element> ${constructorName}Constructor(const QualifiedName& $constructorTagName, Document* doc";
+ if ($parameters{'namespace'} eq "HTML") {
print F ", HTMLFormElement*";
- print F " formElement" if $tags{$tagName}{constructorNeedsFormElement};
+ if ($tags{$tagName}{'constructorNeedsFormElement'}) {
+ print F " formElement";
+ }
}
print F ", bool";
- print F " createdByParser" if $tags{$tagName}{constructorNeedsCreatedByParser};
+ if ($tags{$tagName}{'constructorNeedsCreatedByParser'}) {
+ print F " createdByParser";
+ }
print F ")\n{\n";
}
@@ -279,26 +276,22 @@ sub printConstructorInterior
my ($F, $tagName, $interfaceName, $constructorTagName) = @_;
# Handle media elements.
- if ($tags{$tagName}{wrapperOnlyIfMediaIsAvailable}) {
+ if ($tags{$tagName}{'wrapperOnlyIfMediaIsAvailable'}) {
print F <<END
if (!MediaPlayer::isAvailable())
- return new HTMLElement($constructorTagName, document);
+ return new HTMLElement($constructorTagName, doc);
END
;
}
- my $newPrefix = "";
- my $createSuffix = "::create";
-
- if ($tags{$tagName}{createWithNew}) {
- $newPrefix = "new ";
- $createSuffix = "";
+ # Now call the constructor with the right parameters.
+ print F " return new ${interfaceName}($constructorTagName, doc";
+ if ($tags{$tagName}{'constructorNeedsFormElement'}) {
+ print F ", formElement";
+ }
+ if ($tags{$tagName}{'constructorNeedsCreatedByParser'}) {
+ print F ", createdByParser";
}
-
- # Call the constructor with the right parameters.
- print F " return $newPrefix$interfaceName${createSuffix}($constructorTagName, document";
- print F ", formElement" if $tags{$tagName}{constructorNeedsFormElement};
- print F ", createdByParser" if $tags{$tagName}{constructorNeedsCreatedByParser};
print F ");\n}\n\n";
}
@@ -307,20 +300,20 @@ sub printConstructors
my ($F, $tagConstructorMapRef) = @_;
my %tagConstructorMap = %$tagConstructorMapRef;
- print F "#if $parameters{guardFactoryWith}\n" if $parameters{guardFactoryWith};
+ print F "#if $parameters{'guardFactoryWith'}\n" if $parameters{'guardFactoryWith'};
# This is to avoid generating the same constructor several times.
my %uniqueTags = ();
for my $tagName (sort keys %tagConstructorMap) {
- my $interfaceName = $tags{$tagName}{interfaceName};
+ my $interfaceName = $tags{$tagName}{'interfaceName'};
# Ignore the mapped tag
# FIXME: It could be moved inside this loop but was split for readibility.
- next if (defined($uniqueTags{$interfaceName}) || $tags{$tagName}{mapToTagName});
+ next if (defined($uniqueTags{$interfaceName}) || $tags{$tagName}{'mapToTagName'});
$uniqueTags{$interfaceName} = '1';
- my $conditional = $tags{$tagName}{conditional};
+ my $conditional = $tags{$tagName}{"conditional"};
if ($conditional) {
my $conditionalString = "ENABLE(" . join(") && ENABLE(", split(/&/, $conditional)) . ")";
print F "#if ${conditionalString}\n\n";
@@ -330,20 +323,20 @@ sub printConstructors
printConstructorInterior($F, $tagName, $interfaceName, "tagName");
if ($conditional) {
- print F "#endif\n";
+ print F "#endif\n\n";
}
}
# Mapped tag name uses a special wrapper to keep their prefix and namespaceURI while using the mapped localname.
for my $tagName (sort keys %tagConstructorMap) {
- if ($tags{$tagName}{mapToTagName}) {
- my $mappedName = $tags{$tagName}{mapToTagName};
+ if ($tags{$tagName}{'mapToTagName'}) {
+ my $mappedName = $tags{$tagName}{'mapToTagName'};
printConstructorSignature($F, $mappedName, $mappedName . "To" . $tagName, "tagName");
- printConstructorInterior($F, $mappedName, $tags{$mappedName}{interfaceName}, "QualifiedName(tagName.prefix(), ${mappedName}Tag.localName(), tagName.namespaceURI())");
+ printConstructorInterior($F, $mappedName, $tags{$mappedName}{'interfaceName'}, "QualifiedName(tagName.prefix(), ${mappedName}Tag.localName(), tagName.namespaceURI())");
}
}
- print F "#endif\n" if $parameters{guardFactoryWith};
+ print F "#endif\n" if $parameters{'guardFactoryWith'};
}
sub printFunctionInits
@@ -353,14 +346,14 @@ sub printFunctionInits
for my $tagName (sort keys %tagConstructorMap) {
- my $conditional = $tags{$tagName}{conditional};
+ my $conditional = $tags{$tagName}{"conditional"};
if ($conditional) {
my $conditionalString = "ENABLE(" . join(") && ENABLE(", split(/&/, $conditional)) . ")";
print F "#if ${conditionalString}\n";
}
- if ($tags{$tagName}{mapToTagName}) {
- print F " addTag(${tagName}Tag, $tags{$tagName}{mapToTagName}To${tagName}Constructor);\n";
+ if ($tags{$tagName}{'mapToTagName'}) {
+ print F " addTag(${tagName}Tag, $tags{$tagName}{'mapToTagName'}To${tagName}Constructor);\n";
} else {
print F " addTag(${tagName}Tag, $tagConstructorMap{$tagName}Constructor);\n";
}
@@ -375,7 +368,9 @@ sub svgCapitalizationHacks
{
my $name = shift;
- $name = "FE" . ucfirst $1 if $name =~ /^fe(.+)$/;
+ if ($name =~ /^fe(.+)$/) {
+ $name = "FE" . ucfirst $1;
+ }
return $name;
}
@@ -384,7 +379,7 @@ sub upperCaseName
{
my $name = shift;
- $name = svgCapitalizationHacks($name) if ($parameters{namespace} eq "SVG");
+ $name = svgCapitalizationHacks($name) if ($parameters{'namespace'} eq "SVG");
while ($name =~ /^(.*?)_(.*)/) {
$name = $1 . ucfirst $2;
@@ -397,11 +392,10 @@ sub printLicenseHeader
{
my $F = shift;
print F "/*
- * THIS FILE WAS AUTOMATICALLY GENERATED, DO NOT EDIT.
+ * THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT.
*
- * This file was generated by the dom/make_names.pl script.
*
- * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2005 Apple Computer, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -422,9 +416,10 @@ sub printLicenseHeader
* 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.
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
";
}
@@ -433,16 +428,16 @@ sub printNamesHeaderFile
my ($headerPath) = shift;
my $F;
open F, ">$headerPath";
-
+
printLicenseHeader($F);
- print F "#ifndef DOM_$parameters{namespace}NAMES_H\n";
- print F "#define DOM_$parameters{namespace}NAMES_H\n\n";
+ print F "#ifndef DOM_$parameters{'namespace'}NAMES_H\n";
+ print F "#define DOM_$parameters{'namespace'}NAMES_H\n\n";
print F "#include \"QualifiedName.h\"\n\n";
-
- print F "namespace WebCore {\n\n namespace $parameters{namespace}Names {\n\n";
-
- my $lowerNamespace = lc($parameters{namespacePrefix});
- print F "#ifndef DOM_$parameters{namespace}NAMES_HIDE_GLOBALS\n";
+
+ print F "namespace WebCore {\n\n namespace $parameters{'namespace'}Names {\n\n";
+
+ my $lowerNamespace = lc($parameters{'namespacePrefix'});
+ print F "#ifndef DOM_$parameters{'namespace'}NAMES_HIDE_GLOBALS\n";
print F "// Namespace\n";
print F "extern const WebCore::AtomicString ${lowerNamespace}NamespaceURI;\n\n";
@@ -456,19 +451,19 @@ sub printNamesHeaderFile
printMacros($F, "extern const WebCore::QualifiedName", "Attr", \%attrs);
}
print F "#endif\n\n";
-
+
if (keys %tags) {
- print F "WebCore::QualifiedName** get$parameters{namespace}Tags(size_t* size);\n";
+ print F "WebCore::QualifiedName** get$parameters{'namespace'}Tags(size_t* size);\n";
}
if (keys %attrs) {
- print F "WebCore::QualifiedName** get$parameters{namespace}Attrs(size_t* size);\n";
+ print F "WebCore::QualifiedName** get$parameters{'namespace'}Attrs(size_t* size);\n";
}
-
+
print F "\nvoid init();\n\n";
print F "} }\n\n";
print F "#endif\n\n";
-
+
close F;
}
@@ -480,25 +475,25 @@ sub printNamesCppFile
printLicenseHeader($F);
- my $lowerNamespace = lc($parameters{namespacePrefix});
+ my $lowerNamespace = lc($parameters{'namespacePrefix'});
print F "#include \"config.h\"\n";
print F "#ifdef SKIP_STATIC_CONSTRUCTORS_ON_GCC\n";
-print F "#define DOM_$parameters{namespace}NAMES_HIDE_GLOBALS 1\n";
+print F "#define DOM_$parameters{'namespace'}NAMES_HIDE_GLOBALS 1\n";
print F "#else\n";
print F "#define QNAME_DEFAULT_CONSTRUCTOR 1\n";
print F "#endif\n\n";
-print F "#include \"$parameters{namespace}Names.h\"\n\n";
+print F "#include \"$parameters{'namespace'}Names.h\"\n\n";
print F "#include \"StaticConstructors.h\"\n";
-print F "namespace WebCore {\n\n namespace $parameters{namespace}Names {
+print F "namespace WebCore {\n\n namespace $parameters{'namespace'}Names {
using namespace WebCore;
-DEFINE_GLOBAL(AtomicString, ${lowerNamespace}NamespaceURI, \"$parameters{namespaceURI}\")
+DEFINE_GLOBAL(AtomicString, ${lowerNamespace}NamespaceURI, \"$parameters{'namespaceURI'}\")
";
if (keys %tags) {
@@ -507,14 +502,14 @@ DEFINE_GLOBAL(AtomicString, ${lowerNamespace}NamespaceURI, \"$parameters{namespa
print F "DEFINE_GLOBAL(QualifiedName, ", $name, "Tag, nullAtom, \"$name\", ${lowerNamespace}NamespaceURI);\n";
}
- print F "\n\nWebCore::QualifiedName** get$parameters{namespace}Tags(size_t* size)\n";
- print F "{\n static WebCore::QualifiedName* $parameters{namespace}Tags[] = {\n";
+ print F "\n\nWebCore::QualifiedName** get$parameters{'namespace'}Tags(size_t* size)\n";
+ print F "{\n static WebCore::QualifiedName* $parameters{'namespace'}Tags[] = {\n";
for my $name (sort keys %tags) {
print F " (WebCore::QualifiedName*)&${name}Tag,\n";
}
print F " };\n";
print F " *size = ", scalar(keys %tags), ";\n";
- print F " return $parameters{namespace}Tags;\n";
+ print F " return $parameters{'namespace'}Tags;\n";
print F "}\n";
}
@@ -523,14 +518,14 @@ DEFINE_GLOBAL(AtomicString, ${lowerNamespace}NamespaceURI, \"$parameters{namespa
for my $name (sort keys %attrs) {
print F "DEFINE_GLOBAL(QualifiedName, ", $name, "Attr, nullAtom, \"$name\", ${lowerNamespace}NamespaceURI);\n";
}
- print F "\n\nWebCore::QualifiedName** get$parameters{namespace}Attrs(size_t* size)\n";
- print F "{\n static WebCore::QualifiedName* $parameters{namespace}Attr[] = {\n";
+ print F "\n\nWebCore::QualifiedName** get$parameters{'namespace'}Attrs(size_t* size)\n";
+ print F "{\n static WebCore::QualifiedName* $parameters{'namespace'}Attr[] = {\n";
for my $name (sort keys %attrs) {
print F " (WebCore::QualifiedName*)&${name}Attr,\n";
}
print F " };\n";
print F " *size = ", scalar(keys %attrs), ";\n";
- print F " return $parameters{namespace}Attr;\n";
+ print F " return $parameters{'namespace'}Attr;\n";
print F "}\n";
}
@@ -554,16 +549,16 @@ print F "\nvoid init()
AtomicString::init();
";
- print(F " AtomicString ${lowerNamespace}NS(\"$parameters{namespaceURI}\");\n\n");
+ print(F " AtomicString ${lowerNamespace}NS(\"$parameters{'namespaceURI'}\");\n\n");
print(F " // Namespace\n");
print(F " new ((void*)&${lowerNamespace}NamespaceURI) AtomicString(${lowerNamespace}NS);\n\n");
if (keys %tags) {
- my $tagsNamespace = $parameters{tagsNullNamespace} ? "nullAtom" : "${lowerNamespace}NS";
+ my $tagsNamespace = $parameters{'tagsNullNamespace'} ? "nullAtom" : "${lowerNamespace}NS";
printDefinitions($F, \%tags, "tags", $tagsNamespace);
}
if (keys %attrs) {
- my $attrsNamespace = $parameters{attrsNullNamespace} ? "nullAtom" : "${lowerNamespace}NS";
+ my $attrsNamespace = $parameters{'attrsNullNamespace'} ? "nullAtom" : "${lowerNamespace}NS";
printDefinitions($F, \%attrs, "attributes", $attrsNamespace);
}
@@ -577,7 +572,7 @@ sub printJSElementIncludes
my %tagsSeen;
for my $tagName (sort keys %tags) {
- my $JSInterfaceName = $tags{$tagName}{JSInterfaceName};
+ my $JSInterfaceName = $tags{$tagName}{"JSInterfaceName"};
next if defined($tagsSeen{$JSInterfaceName}) || usesDefaultJSWrapper($tagName);
$tagsSeen{$JSInterfaceName} = 1;
@@ -591,7 +586,7 @@ sub printElementIncludes
my %tagsSeen;
for my $tagName (sort keys %tags) {
- my $interfaceName = $tags{$tagName}{interfaceName};
+ my $interfaceName = $tags{$tagName}{"interfaceName"};
next if defined($tagsSeen{$interfaceName});
$tagsSeen{$interfaceName} = 1;
@@ -609,7 +604,7 @@ sub printDefinitionStrings
my %names = %$namesRef;
for my $name (sort keys %$namesRef) {
- next if (!$parameters{exportStrings} and !$names{$name}{exportString});
+ next if (!$parameters{'exportStrings'} and !$names{$name}{"exportString"});
my $realName = $name;
$realName =~ s/_/-/g;
@@ -630,7 +625,7 @@ sub printDefinitions
my %names = %$namesRef;
for my $name (sort keys %$namesRef) {
- next if ($parameters{exportStrings} or $names{$name}{exportString});
+ next if ($parameters{'exportStrings'} or $names{$name}{"exportString"});
my $realName = $name;
$realName =~ s/_/-/g;
@@ -656,31 +651,39 @@ printLicenseHeader($F);
print F <<END
#include "config.h"
-#include "$parameters{namespace}ElementFactory.h"
+#include "$parameters{'namespace'}ElementFactory.h"
+
+#include "$parameters{'namespace'}Names.h"
+#if ENABLE(DASHBOARD_SUPPORT)
+#include "Document.h"
+#include "Settings.h"
+#endif
-#include "$parameters{namespace}Names.h"
END
;
+if ($parameters{'namespace'} eq "HTML") {
+ print F "#include \"HTMLFormElement.h\"\n";
+}
+
printElementIncludes($F);
print F <<END
#include <wtf/HashMap.h>
-#if ENABLE(DASHBOARD_SUPPORT)
-#include "Document.h"
-#include "Settings.h"
-#endif
-
namespace WebCore {
-using namespace $parameters{namespace}Names;
+using namespace $parameters{'namespace'}Names;
END
;
-print F "typedef PassRefPtr<$parameters{namespace}Element> (*ConstructorFunction)(const QualifiedName&, Document*";
-print F ", HTMLFormElement*" if $parameters{namespace} eq "HTML";
+print F "typedef PassRefPtr<$parameters{'namespace'}Element> (*ConstructorFunction)(const QualifiedName&, Document*";
+
+if ($parameters{'namespace'} eq "HTML") {
+ print F ", HTMLFormElement*";
+}
+
print F ", bool createdByParser);\n";
print F <<END
typedef HashMap<AtomicStringImpl*, ConstructorFunction> FunctionMap;
@@ -694,7 +697,7 @@ my %tagConstructorMap = buildConstructorMap();
printConstructors($F, \%tagConstructorMap);
-print F "#if $parameters{guardFactoryWith}\n" if $parameters{guardFactoryWith};
+print F "#if $parameters{'guardFactoryWith'}\n" if $parameters{'guardFactoryWith'};
print F <<END
static void addTag(const QualifiedName& tag, ConstructorFunction func)
@@ -702,10 +705,10 @@ static void addTag(const QualifiedName& tag, ConstructorFunction func)
gFunctionMap->set(tag.localName().impl(), func);
}
-static void createFunctionMap()
+static inline void createFunctionMapIfNecessary()
{
- ASSERT(!gFunctionMap);
-
+ if (gFunctionMap)
+ return;
// Create the table.
gFunctionMap = new FunctionMap;
@@ -716,25 +719,30 @@ END
printFunctionInits($F, \%tagConstructorMap);
print F "}\n";
-print F "#endif\n" if $parameters{guardFactoryWith};
+print F "#endif\n" if $parameters{'guardFactoryWith'};
+
+print F "\nPassRefPtr<$parameters{'namespace'}Element> $parameters{'namespace'}ElementFactory::create$parameters{'namespace'}Element(const QualifiedName& qName, Document* doc";
+
+if ($parameters{"namespace"} eq "HTML") {
+ print F ", HTMLFormElement* formElement";
+}
-print F "\nPassRefPtr<$parameters{namespace}Element> $parameters{namespace}ElementFactory::create$parameters{namespace}Element(const QualifiedName& qName, Document* document";
-print F ", HTMLFormElement* formElement" if $parameters{namespace} eq "HTML";
print F ", bool createdByParser)\n{\n";
-print F "#if $parameters{guardFactoryWith}\n" if $parameters{guardFactoryWith};
+print F "#if $parameters{'guardFactoryWith'}\n" if $parameters{'guardFactoryWith'};
print F <<END
- if (!document)
+ // Don't make elements without a document
+ if (!doc)
return 0;
END
;
-if ($parameters{namespace} ne "HTML") {
+if ($parameters{'namespace'} ne "HTML") {
print F <<END
#if ENABLE(DASHBOARD_SUPPORT)
- Settings* settings = document->settings();
+ Settings* settings = doc->settings();
if (settings && settings->usesDashboardBackwardCompatibilityMode())
return 0;
#endif
@@ -744,21 +752,21 @@ END
}
print F <<END
- if (!gFunctionMap)
- createFunctionMap();
- if (ConstructorFunction function = gFunctionMap->get(qName.localName().impl()))
+ createFunctionMapIfNecessary();
+ ConstructorFunction func = gFunctionMap->get(qName.localName().impl());
+ if (func)
END
;
-if ($parameters{namespace} eq "HTML") {
- print F " return function(qName, document, formElement, createdByParser);\n";
+if ($parameters{"namespace"} eq "HTML") {
+ print F " return func(qName, doc, formElement, createdByParser);\n";
} else {
- print F " return function(qName, document, createdByParser);\n";
+ print F " return func(qName, doc, createdByParser);\n";
}
-print F " return new $parameters{namespace}Element(qName, document);\n";
+print F " return new $parameters{'namespace'}Element(qName, doc);\n";
-if ($parameters{guardFactoryWith}) {
+if ($parameters{'guardFactoryWith'}) {
print F <<END
#else
@@ -789,8 +797,8 @@ sub printFactoryHeaderFile
printLicenseHeader($F);
print F<<END
-#ifndef $parameters{namespace}ElementFactory_h
-#define $parameters{namespace}ElementFactory_h
+#ifndef $parameters{'namespace'}ElementFactory_h
+#define $parameters{'namespace'}ElementFactory_h
#include <wtf/PassRefPtr.h>
@@ -803,29 +811,35 @@ namespace WebCore {
namespace WebCore {
- class $parameters{namespace}Element;
+ class $parameters{'namespace'}Element;
END
;
-print F " class HTMLFormElement;\n" if $parameters{namespace} eq "HTML";
+if ($parameters{'namespace'} eq "HTML") {
+ print F " class HTMLFormElement;\n";
+}
print F<<END
// The idea behind this class is that there will eventually be a mapping from namespace URIs to ElementFactories that can dispense
// elements. In a compound document world, the generic createElement function (will end up being virtual) will be called.
- class $parameters{namespace}ElementFactory {
+ class $parameters{'namespace'}ElementFactory {
public:
PassRefPtr<Element> createElement(const WebCore::QualifiedName&, WebCore::Document*, bool createdByParser = true);
END
;
-print F " static PassRefPtr<$parameters{namespace}Element> create$parameters{namespace}Element(const WebCore::QualifiedName&, WebCore::Document*";
-print F ", HTMLFormElement* = 0" if $parameters{namespace} eq "HTML";
+print F " static PassRefPtr<$parameters{'namespace'}Element> create$parameters{'namespace'}Element(const WebCore::QualifiedName&, WebCore::Document*";
+
+if ($parameters{'namespace'} eq "HTML") {
+ print F ", HTMLFormElement* = 0";
+}
+
print F ", bool /*createdByParser*/ = true);\n";
printf F<<END
};
}
-#endif // $parameters{namespace}ElementFactory_h
+#endif // $parameters{'namespace'}ElementFactory_h
END
;
@@ -840,7 +854,7 @@ sub usesDefaultJSWrapper
my $name = shift;
# A tag reuses the default wrapper if its JSInterfaceName matches the default namespace Element.
- return $tags{$name}{JSInterfaceName} eq $parameters{namespace} . "Element" || $tags{$name}{JSInterfaceName} eq "HTMLNoScriptElement";
+ return $tags{$name}{'JSInterfaceName'} eq $parameters{"namespace"} . "Element" || $tags{$name}{'JSInterfaceName'} eq "HTMLNoScriptElement";
}
sub printWrapperFunctions
@@ -850,11 +864,11 @@ sub printWrapperFunctions
my %tagsSeen;
for my $tagName (sort keys %tags) {
# Avoid defining the same wrapper method twice.
- my $JSInterfaceName = $tags{$tagName}{JSInterfaceName};
+ my $JSInterfaceName = $tags{$tagName}{"JSInterfaceName"};
next if defined($tagsSeen{$JSInterfaceName}) || usesDefaultJSWrapper($tagName);
$tagsSeen{$JSInterfaceName} = 1;
- my $conditional = $tags{$tagName}{conditional};
+ my $conditional = $tags{$tagName}{"conditional"};
if ($conditional) {
my $conditionalString = "ENABLE(" . join(") && ENABLE(", split(/&/, $conditional)) . ")";
print F "#if ${conditionalString}\n\n";
@@ -862,12 +876,12 @@ sub printWrapperFunctions
# Hack for the media tags
# FIXME: This should have been done via a CustomWrapper attribute and a separate *Custom file.
- if ($tags{$tagName}{wrapperOnlyIfMediaIsAvailable}) {
+ if ($tags{$tagName}{"wrapperOnlyIfMediaIsAvailable"}) {
print F <<END
-static JSNode* create${JSInterfaceName}Wrapper(ExecState* exec, JSDOMGlobalObject* globalObject, PassRefPtr<$parameters{namespace}Element> element)
+static JSNode* create${JSInterfaceName}Wrapper(ExecState* exec, JSDOMGlobalObject* globalObject, PassRefPtr<$parameters{'namespace'}Element> element)
{
if (!MediaPlayer::isAvailable())
- return CREATE_DOM_NODE_WRAPPER(exec, globalObject, $parameters{namespace}Element, element.get());
+ return CREATE_DOM_NODE_WRAPPER(exec, globalObject, $parameters{'namespace'}Element, element.get());
return CREATE_DOM_NODE_WRAPPER(exec, globalObject, ${JSInterfaceName}, element.get());
}
@@ -875,7 +889,7 @@ END
;
} else {
print F <<END
-static JSNode* create${JSInterfaceName}Wrapper(ExecState* exec, JSDOMGlobalObject* globalObject, PassRefPtr<$parameters{namespace}Element> element)
+static JSNode* create${JSInterfaceName}Wrapper(ExecState* exec, JSDOMGlobalObject* globalObject, PassRefPtr<$parameters{'namespace'}Element> element)
{
return CREATE_DOM_NODE_WRAPPER(exec, globalObject, ${JSInterfaceName}, element.get());
}
@@ -883,7 +897,6 @@ static JSNode* create${JSInterfaceName}Wrapper(ExecState* exec, JSDOMGlobalObjec
END
;
}
-
if ($conditional) {
print F "#endif\n\n";
}
@@ -900,13 +913,13 @@ sub printWrapperFactoryCppFile
print F "#include \"config.h\"\n\n";
- print F "#if $parameters{guardFactoryWith}\n\n" if $parameters{guardFactoryWith};
+ print F "#if $parameters{'guardFactoryWith'}\n\n" if $parameters{'guardFactoryWith'};
- print F "#include \"JS$parameters{namespace}ElementWrapperFactory.h\"\n";
+ print F "#include \"JS$parameters{'namespace'}ElementWrapperFactory.h\"\n";
printJSElementIncludes($F);
- print F "\n#include \"$parameters{namespace}Names.h\"\n\n";
+ print F "\n#include \"$parameters{'namespace'}Names.h\"\n\n";
printElementIncludes($F);
@@ -917,9 +930,9 @@ using namespace JSC;
namespace WebCore {
-using namespace $parameters{namespace}Names;
+using namespace $parameters{'namespace'}Names;
-typedef JSNode* (*Create$parameters{namespace}ElementWrapperFunction)(ExecState*, JSDOMGlobalObject*, PassRefPtr<$parameters{namespace}Element>);
+typedef JSNode* (*Create$parameters{'namespace'}ElementWrapperFunction)(ExecState*, JSDOMGlobalObject*, PassRefPtr<$parameters{'namespace'}Element>);
END
;
@@ -927,9 +940,9 @@ END
printWrapperFunctions($F);
print F <<END
-JSNode* createJS$parameters{namespace}Wrapper(ExecState* exec, JSDOMGlobalObject* globalObject, PassRefPtr<$parameters{namespace}Element> element)
+JSNode* createJS$parameters{'namespace'}Wrapper(ExecState* exec, JSDOMGlobalObject* globalObject, PassRefPtr<$parameters{'namespace'}Element> element)
{
- typedef HashMap<WebCore::AtomicStringImpl*, Create$parameters{namespace}ElementWrapperFunction> FunctionMap;
+ typedef HashMap<WebCore::AtomicStringImpl*, Create$parameters{'namespace'}ElementWrapperFunction> FunctionMap;
DEFINE_STATIC_LOCAL(FunctionMap, map, ());
if (map.isEmpty()) {
END
@@ -939,13 +952,13 @@ END
# Do not add the name to the map if it does not have a JS wrapper constructor or uses the default wrapper.
next if usesDefaultJSWrapper($tag, \%tags);
- my $conditional = $tags{$tag}{conditional};
+ my $conditional = $tags{$tag}{"conditional"};
if ($conditional) {
my $conditionalString = "ENABLE(" . join(") && ENABLE(", split(/&/, $conditional)) . ")";
print F "#if ${conditionalString}\n";
}
- my $ucTag = $tags{$tag}{JSInterfaceName};
+ my $ucTag = $tags{$tag}{"JSInterfaceName"};
print F " map.set(${tag}Tag.localName().impl(), create${ucTag}Wrapper);\n";
if ($conditional) {
@@ -955,10 +968,10 @@ END
print F <<END
}
- Create$parameters{namespace}ElementWrapperFunction createWrapperFunction = map.get(element->localName().impl());
+ Create$parameters{'namespace'}ElementWrapperFunction createWrapperFunction = map.get(element->localName().impl());
if (createWrapperFunction)
return createWrapperFunction(exec, globalObject, element);
- return CREATE_DOM_NODE_WRAPPER(exec, globalObject, $parameters{namespace}Element, element.get());
+ return CREATE_DOM_NODE_WRAPPER(exec, globalObject, $parameters{'namespace'}Element, element.get());
}
}
@@ -966,7 +979,7 @@ END
END
;
- print F "#endif\n" if $parameters{guardFactoryWith};
+ print F "#endif\n" if $parameters{'guardFactoryWith'};
close F;
}
@@ -979,10 +992,10 @@ sub printWrapperFactoryHeaderFile
printLicenseHeader($F);
- print F "#ifndef JS$parameters{namespace}ElementWrapperFactory_h\n";
- print F "#define JS$parameters{namespace}ElementWrapperFactory_h\n\n";
+ print F "#ifndef JS$parameters{'namespace'}ElementWrapperFactory_h\n";
+ print F "#define JS$parameters{'namespace'}ElementWrapperFactory_h\n\n";
- print F "#if $parameters{guardFactoryWith}\n" if $parameters{guardFactoryWith};
+ print F "#if $parameters{'guardFactoryWith'}\n" if $parameters{'guardFactoryWith'};
print F <<END
#include <wtf/Forward.h>
@@ -995,18 +1008,18 @@ namespace WebCore {
class JSNode;
class JSDOMGlobalObject;
- class $parameters{namespace}Element;
+ class $parameters{'namespace'}Element;
- JSNode* createJS$parameters{namespace}Wrapper(JSC::ExecState*, JSDOMGlobalObject*, PassRefPtr<$parameters{namespace}Element>);
+ JSNode* createJS$parameters{'namespace'}Wrapper(JSC::ExecState*, JSDOMGlobalObject*, PassRefPtr<$parameters{'namespace'}Element>);
}
END
;
- print F "#endif // $parameters{guardFactoryWith}\n\n" if $parameters{guardFactoryWith};
+ print F "#endif // $parameters{'guardFactoryWith'}\n\n" if $parameters{'guardFactoryWith'};
- print F "#endif // JS$parameters{namespace}ElementWrapperFactory_h\n";
+ print F "#endif // JS$parameters{'namespace'}ElementWrapperFactory_h\n";
close F;
}
diff --git a/WebCore/editing/CompositeEditCommand.cpp b/WebCore/editing/CompositeEditCommand.cpp
index aa658b9..25f167c 100644
--- a/WebCore/editing/CompositeEditCommand.cpp
+++ b/WebCore/editing/CompositeEditCommand.cpp
@@ -519,7 +519,7 @@ void CompositeEditCommand::deleteInsignificantText(PassRefPtr<Text> textNode, un
gapStart = max(gapStart, start);
gapEnd = min(gapEnd, end);
if (str.isNull())
- str = textNode->data().substring(start, end - start);
+ str = textNode->string()->substring(start, end - start);
// remove text in the gap
str.remove(gapStart - start - removed, gapLen);
removed += gapLen;
diff --git a/WebCore/editing/CreateLinkCommand.cpp b/WebCore/editing/CreateLinkCommand.cpp
index 98d6c6d..263feab 100644
--- a/WebCore/editing/CreateLinkCommand.cpp
+++ b/WebCore/editing/CreateLinkCommand.cpp
@@ -51,7 +51,7 @@ void CreateLinkCommand::doApply()
applyStyledElement(anchorElement.get());
} else {
insertNodeAt(anchorElement.get(), endingSelection().start());
- RefPtr<Text> textNode = Text::create(document(), m_url);
+ RefPtr<Text> textNode = new Text(document(), m_url);
appendNode(textNode.get(), anchorElement.get());
setEndingSelection(VisibleSelection(positionBeforeNode(anchorElement.get()), positionAfterNode(anchorElement.get()), DOWNSTREAM));
}
diff --git a/WebCore/editing/DeleteButtonController.cpp b/WebCore/editing/DeleteButtonController.cpp
index c472552..725c01d 100644
--- a/WebCore/editing/DeleteButtonController.cpp
+++ b/WebCore/editing/DeleteButtonController.cpp
@@ -187,7 +187,7 @@ void DeleteButtonController::respondToChangedSelection(const VisibleSelection& o
void DeleteButtonController::createDeletionUI()
{
RefPtr<HTMLDivElement> container = new HTMLDivElement(divTag, m_target->document());
- container->setAttribute(idAttr, containerElementIdentifier);
+ container->setId(containerElementIdentifier);
CSSMutableStyleDeclaration* style = container->getInlineStyleDecl();
style->setProperty(CSSPropertyWebkitUserDrag, CSSValueNone);
@@ -202,7 +202,7 @@ void DeleteButtonController::createDeletionUI()
style->setProperty(CSSPropertyLeft, "0");
RefPtr<HTMLDivElement> outline = new HTMLDivElement(divTag, m_target->document());
- outline->setAttribute(idAttr, outlineElementIdentifier);
+ outline->setId(outlineElementIdentifier);
const int borderWidth = 4;
const int borderRadius = 6;
@@ -225,7 +225,7 @@ void DeleteButtonController::createDeletionUI()
return;
RefPtr<DeleteButton> button = new DeleteButton(m_target->document());
- button->setAttribute(idAttr, buttonElementIdentifier);
+ button->setId(buttonElementIdentifier);
const int buttonWidth = 30;
const int buttonHeight = 30;
diff --git a/WebCore/editing/EditorCommand.cpp b/WebCore/editing/EditorCommand.cpp
index 90070dd..55750ff 100644
--- a/WebCore/editing/EditorCommand.cpp
+++ b/WebCore/editing/EditorCommand.cpp
@@ -40,7 +40,6 @@
#include "FormatBlockCommand.h"
#include "Frame.h"
#include "HTMLFontElement.h"
-#include "HTMLHRElement.h"
#include "HTMLImageElement.h"
#include "IndentOutdentCommand.h"
#include "InsertListCommand.h"
@@ -199,7 +198,7 @@ static bool executeInsertFragment(Frame* frame, PassRefPtr<DocumentFragment> fra
static bool executeInsertNode(Frame* frame, PassRefPtr<Node> content)
{
- RefPtr<DocumentFragment> fragment = DocumentFragment::create(frame->document());
+ RefPtr<DocumentFragment> fragment = new DocumentFragment(frame->document());
ExceptionCode ec = 0;
fragment->appendChild(content, ec);
if (ec)
@@ -468,9 +467,9 @@ static bool executeInsertBacktab(Frame* frame, Event* event, EditorCommandSource
static bool executeInsertHorizontalRule(Frame* frame, Event*, EditorCommandSource, const String& value)
{
- RefPtr<HTMLHRElement> hr = new HTMLHRElement(hrTag, frame->document());
+ RefPtr<HTMLElement> hr = new HTMLElement(hrTag, frame->document());
if (!value.isEmpty())
- hr->setAttribute(idAttr, value);
+ hr->setId(value);
return executeInsertNode(frame, hr.release());
}
diff --git a/WebCore/editing/SplitTextNodeCommand.cpp b/WebCore/editing/SplitTextNodeCommand.cpp
index 3b04e01..07a54e3 100644
--- a/WebCore/editing/SplitTextNodeCommand.cpp
+++ b/WebCore/editing/SplitTextNodeCommand.cpp
@@ -55,7 +55,7 @@ void SplitTextNodeCommand::doApply()
if (prefixText.isEmpty())
return;
- RefPtr<Text> prefixTextNode = Text::create(document(), prefixText);
+ RefPtr<Text> prefixTextNode = new Text(document(), prefixText);
ASSERT(prefixTextNode);
document()->copyMarkers(m_text2.get(), 0, m_offset, prefixTextNode.get(), 0);
diff --git a/WebCore/editing/haiku/EditorHaiku.cpp b/WebCore/editing/haiku/EditorHaiku.cpp
index 723d4ff..17fde1f 100644
--- a/WebCore/editing/haiku/EditorHaiku.cpp
+++ b/WebCore/editing/haiku/EditorHaiku.cpp
@@ -28,8 +28,9 @@
#include "config.h"
#include "Editor.h"
-#include "Clipboard.h"
#include "ClipboardAccessPolicy.h"
+#include "Clipboard.h"
+
#include "ClipboardHaiku.h"
@@ -37,7 +38,7 @@ namespace WebCore {
PassRefPtr<Clipboard> Editor::newGeneralClipboard(ClipboardAccessPolicy policy)
{
- return ClipboardHaiku::create(policy, false);
+ return new ClipboardHaiku(policy, false);
}
} // namespace WebCore
diff --git a/WebCore/editing/markup.cpp b/WebCore/editing/markup.cpp
index 2b963ef..14ce7f6 100644
--- a/WebCore/editing/markup.cpp
+++ b/WebCore/editing/markup.cpp
@@ -420,7 +420,7 @@ static void appendStartMarkup(Vector<UChar>& result, const Node* node, const Ran
case Node::COMMENT_NODE:
// FIXME: Comment content is not escaped, but XMLSerializer (and possibly other callers) should raise an exception if it includes "-->".
append(result, "<!--");
- append(result, static_cast<const Comment*>(node)->data());
+ append(result, static_cast<const Comment*>(node)->nodeValue());
append(result, "-->");
break;
case Node::DOCUMENT_NODE:
diff --git a/WebCore/html/CollectionType.h b/WebCore/html/CollectionType.h
index 9d7bb54..e5973a3 100644
--- a/WebCore/html/CollectionType.h
+++ b/WebCore/html/CollectionType.h
@@ -51,7 +51,6 @@ enum CollectionType {
TSectionRows, // all row elements in this table section
TRCells, // all cells in this row
SelectOptions,
- DataListOptions,
MapAreas,
OtherCollection
diff --git a/WebCore/html/HTMLAreaElement.cpp b/WebCore/html/HTMLAreaElement.cpp
index b2e4129..b878a1a 100644
--- a/WebCore/html/HTMLAreaElement.cpp
+++ b/WebCore/html/HTMLAreaElement.cpp
@@ -36,6 +36,7 @@ using namespace HTMLNames;
HTMLAreaElement::HTMLAreaElement(const QualifiedName& tagName, Document* document)
: HTMLAnchorElement(tagName, document)
+ , m_coords(0)
, m_coordsLen(0)
, m_lastSize(-1, -1)
, m_shape(Unknown)
@@ -45,6 +46,7 @@ HTMLAreaElement::HTMLAreaElement(const QualifiedName& tagName, Document* documen
HTMLAreaElement::~HTMLAreaElement()
{
+ delete [] m_coords;
}
void HTMLAreaElement::parseMappedAttribute(MappedAttribute* attr)
@@ -59,7 +61,8 @@ void HTMLAreaElement::parseMappedAttribute(MappedAttribute* attr)
else if (equalIgnoringCase(attr->value(), "rect"))
m_shape = Rect;
} else if (attr->name() == coordsAttr) {
- m_coords.set(newCoordsArray(attr->value().string(), m_coordsLen));
+ delete [] m_coords;
+ m_coords = newCoordsArray(attr->value().string(), m_coordsLen);
} else if (attr->name() == altAttr || attr->name() == accesskeyAttr) {
// Do nothing.
} else
diff --git a/WebCore/html/HTMLAreaElement.h b/WebCore/html/HTMLAreaElement.h
index fd308b6..fffd45e 100644
--- a/WebCore/html/HTMLAreaElement.h
+++ b/WebCore/html/HTMLAreaElement.h
@@ -25,7 +25,6 @@
#include "HTMLAnchorElement.h"
#include "IntSize.h"
-#include <wtf/OwnArrayPtr.h>
namespace WebCore {
@@ -59,7 +58,7 @@ private:
Path getRegion(const IntSize&) const;
OwnPtr<Path> m_region;
- OwnArrayPtr<Length> m_coords;
+ Length* m_coords;
int m_coordsLen;
IntSize m_lastSize;
Shape m_shape;
diff --git a/WebCore/html/HTMLBodyElement.cpp b/WebCore/html/HTMLBodyElement.cpp
index df26d93..be6663f 100644
--- a/WebCore/html/HTMLBodyElement.cpp
+++ b/WebCore/html/HTMLBodyElement.cpp
@@ -338,7 +338,7 @@ EventListener* HTMLBodyElement::onblur() const
void HTMLBodyElement::setOnblur(PassRefPtr<EventListener> eventListener)
{
- document()->setWindowAttributeEventListener(eventNames().blurEvent, eventListener);
+ document()->setAttributeEventListener(eventNames().blurEvent, eventListener);
}
EventListener* HTMLBodyElement::onerror() const
@@ -348,7 +348,7 @@ EventListener* HTMLBodyElement::onerror() const
void HTMLBodyElement::setOnerror(PassRefPtr<EventListener> eventListener)
{
- document()->setWindowAttributeEventListener(eventNames().errorEvent, eventListener);
+ document()->setAttributeEventListener(eventNames().errorEvent, eventListener);
}
EventListener* HTMLBodyElement::onfocus() const
@@ -358,7 +358,7 @@ EventListener* HTMLBodyElement::onfocus() const
void HTMLBodyElement::setOnfocus(PassRefPtr<EventListener> eventListener)
{
- document()->setWindowAttributeEventListener(eventNames().focusEvent, eventListener);
+ document()->setAttributeEventListener(eventNames().focusEvent, eventListener);
}
EventListener* HTMLBodyElement::onload() const
@@ -368,7 +368,7 @@ EventListener* HTMLBodyElement::onload() const
void HTMLBodyElement::setOnload(PassRefPtr<EventListener> eventListener)
{
- document()->setWindowAttributeEventListener(eventNames().loadEvent, eventListener);
+ document()->setAttributeEventListener(eventNames().loadEvent, eventListener);
}
EventListener* HTMLBodyElement::onbeforeunload() const
@@ -378,19 +378,9 @@ EventListener* HTMLBodyElement::onbeforeunload() const
void HTMLBodyElement::setOnbeforeunload(PassRefPtr<EventListener> eventListener)
{
- document()->setWindowAttributeEventListener(eventNames().beforeunloadEvent, eventListener);
+ document()->setAttributeEventListener(eventNames().beforeunloadEvent, eventListener);
}
-EventListener* HTMLBodyElement::onhashchange() const
-{
- return document()->getWindowAttributeEventListener(eventNames().hashchangeEvent);
-}
-
-void HTMLBodyElement::setOnhashchange(PassRefPtr<EventListener> eventListener)
-{
- document()->setWindowAttributeEventListener(eventNames().hashchangeEvent, eventListener);
-}
-
EventListener* HTMLBodyElement::onmessage() const
{
return document()->getWindowAttributeEventListener(eventNames().messageEvent);
@@ -398,7 +388,7 @@ EventListener* HTMLBodyElement::onmessage() const
void HTMLBodyElement::setOnmessage(PassRefPtr<EventListener> eventListener)
{
- document()->setWindowAttributeEventListener(eventNames().messageEvent, eventListener);
+ document()->setAttributeEventListener(eventNames().messageEvent, eventListener);
}
EventListener* HTMLBodyElement::onoffline() const
@@ -408,7 +398,7 @@ EventListener* HTMLBodyElement::onoffline() const
void HTMLBodyElement::setOnoffline(PassRefPtr<EventListener> eventListener)
{
- document()->setWindowAttributeEventListener(eventNames().offlineEvent, eventListener);
+ document()->setAttributeEventListener(eventNames().offlineEvent, eventListener);
}
EventListener* HTMLBodyElement::ononline() const
@@ -418,7 +408,7 @@ EventListener* HTMLBodyElement::ononline() const
void HTMLBodyElement::setOnonline(PassRefPtr<EventListener> eventListener)
{
- document()->setWindowAttributeEventListener(eventNames().onlineEvent, eventListener);
+ document()->setAttributeEventListener(eventNames().onlineEvent, eventListener);
}
EventListener* HTMLBodyElement::onresize() const
@@ -428,7 +418,7 @@ EventListener* HTMLBodyElement::onresize() const
void HTMLBodyElement::setOnresize(PassRefPtr<EventListener> eventListener)
{
- document()->setWindowAttributeEventListener(eventNames().resizeEvent, eventListener);
+ document()->setAttributeEventListener(eventNames().resizeEvent, eventListener);
}
EventListener* HTMLBodyElement::onstorage() const
@@ -438,7 +428,7 @@ EventListener* HTMLBodyElement::onstorage() const
void HTMLBodyElement::setOnstorage(PassRefPtr<EventListener> eventListener)
{
- document()->setWindowAttributeEventListener(eventNames().storageEvent, eventListener);
+ document()->setAttributeEventListener(eventNames().storageEvent, eventListener);
}
EventListener* HTMLBodyElement::onunload() const
@@ -448,7 +438,7 @@ EventListener* HTMLBodyElement::onunload() const
void HTMLBodyElement::setOnunload(PassRefPtr<EventListener> eventListener)
{
- document()->setWindowAttributeEventListener(eventNames().unloadEvent, eventListener);
+ document()->setAttributeEventListener(eventNames().unloadEvent, eventListener);
}
} // namespace WebCore
diff --git a/WebCore/html/HTMLBodyElement.h b/WebCore/html/HTMLBodyElement.h
index d5efab3..575d562 100644
--- a/WebCore/html/HTMLBodyElement.h
+++ b/WebCore/html/HTMLBodyElement.h
@@ -57,8 +57,6 @@ public:
void setOnbeforeunload(PassRefPtr<EventListener>);
EventListener* onmessage() const;
void setOnmessage(PassRefPtr<EventListener>);
- EventListener* onhashchange() const;
- void setOnhashchange(PassRefPtr<EventListener>);
EventListener* onoffline() const;
void setOnoffline(PassRefPtr<EventListener>);
EventListener* ononline() const;
diff --git a/WebCore/html/HTMLBodyElement.idl b/WebCore/html/HTMLBodyElement.idl
index 7be6803..097b4ac 100644
--- a/WebCore/html/HTMLBodyElement.idl
+++ b/WebCore/html/HTMLBodyElement.idl
@@ -36,7 +36,6 @@ module html {
#if !defined(LANGUAGE_COM) || !LANGUAGE_COM
// Event handler attributes
attribute [DontEnum] EventListener onbeforeunload;
- attribute [DontEnum] EventListener onhashchange;
attribute [DontEnum] EventListener onmessage;
attribute [DontEnum] EventListener onoffline;
attribute [DontEnum] EventListener ononline;
@@ -44,15 +43,10 @@ module html {
attribute [DontEnum] EventListener onstorage;
attribute [DontEnum] EventListener onunload;
- // Overrides of Element attributes (left in for completeness).
- // attribute [DontEnum] EventListener onblur;
- // attribute [DontEnum] EventListener onerror;
- // attribute [DontEnum] EventListener onfocus;
- // attribute [DontEnum] EventListener onload;
-
// Not implemented yet.
// attribute [DontEnum] EventListener onafterprint;
// attribute [DontEnum] EventListener onbeforeprint;
+ // attribute [DontEnum] EventListener onhashchange;
// attribute [DontEnum] EventListener onpopstate;
// attribute [DontEnum] EventListener onredo;
// attribute [DontEnum] EventListener onundo;
diff --git a/WebCore/html/HTMLCanvasElement.h b/WebCore/html/HTMLCanvasElement.h
index 6961957..bba1f2d 100644
--- a/WebCore/html/HTMLCanvasElement.h
+++ b/WebCore/html/HTMLCanvasElement.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2004, 2006, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2004, 2006 Apple Computer, Inc. All rights reserved.
* Copyright (C) 2007 Alp Toker <alp@atoker.com>
*
* Redistribution and use in source and binary forms, with or without
@@ -35,6 +35,7 @@
namespace WebCore {
class CanvasRenderingContext2D;
+typedef CanvasRenderingContext2D CanvasRenderingContext;
class FloatPoint;
class FloatRect;
class FloatSize;
@@ -44,11 +45,9 @@ class ImageBuffer;
class IntPoint;
class IntSize;
-typedef CanvasRenderingContext2D CanvasRenderingContext;
-
class CanvasObserver {
public:
- virtual ~CanvasObserver() { }
+ virtual ~CanvasObserver() {};
virtual void canvasChanged(HTMLCanvasElement*, const FloatRect& changedRect) = 0;
virtual void canvasResized(HTMLCanvasElement*) = 0;
@@ -60,6 +59,11 @@ public:
HTMLCanvasElement(const QualifiedName&, Document*);
virtual ~HTMLCanvasElement();
+#if ENABLE(DASHBOARD_SUPPORT)
+ virtual HTMLTagStatus endTagRequirement() const;
+ virtual int tagPriority() const;
+#endif
+
int width() const { return m_size.width(); }
int height() const { return m_size.height(); }
void setWidth(int);
@@ -69,7 +73,10 @@ public:
CanvasRenderingContext* getContext(const String&);
- const IntSize& size() const { return m_size; }
+ virtual void parseMappedAttribute(MappedAttribute*);
+ virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
+
+ IntSize size() const { return m_size; }
void setSize(const IntSize& size)
{
if (size == m_size)
@@ -96,26 +103,15 @@ public:
void setOriginTainted() { m_originClean = false; }
bool originClean() const { return m_originClean; }
- void setObserver(CanvasObserver* observer) { m_observer = observer; }
-
- TransformationMatrix baseTransform() const;
+ static const float MaxCanvasArea;
- CanvasRenderingContext2D* renderingContext2D() { return m_2DContext.get(); }
+ void setObserver(CanvasObserver* o) { m_observer = o; }
+ TransformationMatrix baseTransform() const;
private:
-#if ENABLE(DASHBOARD_SUPPORT)
- virtual HTMLTagStatus endTagRequirement() const;
- virtual int tagPriority() const;
-#endif
-
- virtual void parseMappedAttribute(MappedAttribute*);
- virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
-
void createImageBuffer() const;
void reset();
- static const float MaxCanvasArea;
-
bool m_rendererIsCanvas;
OwnPtr<CanvasRenderingContext2D> m_2DContext;
diff --git a/WebCore/html/HTMLCanvasElement.idl b/WebCore/html/HTMLCanvasElement.idl
index 4b1b057..13fc623 100644
--- a/WebCore/html/HTMLCanvasElement.idl
+++ b/WebCore/html/HTMLCanvasElement.idl
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2006, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2006, 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
@@ -26,7 +26,6 @@
module html {
interface [
- CustomMarkFunction,
GenerateConstructor,
InterfaceUUID=a14d88c8-c6af-4e34-ad17-659700c77a10,
ImplementationUUID=7ae731bc-c264-4ee3-a4b4-5d4540af26c3
diff --git a/WebCore/html/HTMLCollection.cpp b/WebCore/html/HTMLCollection.cpp
index 76de60a..de4c424 100644
--- a/WebCore/html/HTMLCollection.cpp
+++ b/WebCore/html/HTMLCollection.cpp
@@ -27,7 +27,6 @@
#include "HTMLElement.h"
#include "HTMLNames.h"
#include "HTMLObjectElement.h"
-#include "HTMLOptionElement.h"
#include "NodeList.h"
#include <utility>
@@ -105,7 +104,6 @@ Element* HTMLCollection::itemAfter(Element* previous) const
case MapAreas:
case OtherCollection:
case SelectOptions:
- case DataListOptions:
case WindowNamedItems:
break;
case NodeChildren:
@@ -155,13 +153,6 @@ Element* HTMLCollection::itemAfter(Element* previous) const
if (e->hasLocalName(optionTag))
return e;
break;
- case DataListOptions:
- if (e->hasLocalName(optionTag)) {
- HTMLOptionElement* option = static_cast<HTMLOptionElement*>(e);
- if (!option->disabled() && !option->value().isEmpty())
- return e;
- }
- break;
case MapAreas:
if (e->hasLocalName(areaTag))
return e;
diff --git a/WebCore/html/HTMLDataListElement.cpp b/WebCore/html/HTMLDataListElement.cpp
deleted file mode 100644
index a6ca525..0000000
--- a/WebCore/html/HTMLDataListElement.cpp
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * 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
- * "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 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 "config.h"
-#if ENABLE(DATALIST)
-#include "HTMLDataListElement.h"
-
-#include "HTMLNames.h"
-
-namespace WebCore {
-
-HTMLDataListElement::HTMLDataListElement(const QualifiedName& tagName, Document *doc)
- : HTMLElement(tagName, doc)
-{
-}
-
-HTMLDataListElement::~HTMLDataListElement()
-{
-}
-
-bool HTMLDataListElement::checkDTD(const Node* newChild)
-{
- return newChild->hasTagName(HTMLNames::optionTag) || HTMLElement::inInlineTagList(newChild);
-}
-
-PassRefPtr<HTMLCollection> HTMLDataListElement::options()
-{
- return HTMLCollection::create(this, DataListOptions);
-}
-
-} // namespace WebCore
-
-#endif // ENABLE(DATALIST)
diff --git a/WebCore/html/HTMLDataListElement.h b/WebCore/html/HTMLDataListElement.h
deleted file mode 100644
index 8c4cfbc..0000000
--- a/WebCore/html/HTMLDataListElement.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * 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
- * "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 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 HTMLDataListElement_h
-#define HTMLDataListElement_h
-
-#if ENABLE(DATALIST)
-
-#include "HTMLCollection.h"
-#include "HTMLElement.h"
-
-namespace WebCore {
-
- class HTMLDataListElement : public HTMLElement {
- public:
- HTMLDataListElement(const QualifiedName&, Document*);
- virtual ~HTMLDataListElement();
- PassRefPtr<HTMLCollection> options();
-
- private:
- virtual bool checkDTD(const Node*);
- };
-
-} // namespace WebCore
-
-#endif // ENABLE(DATALIST)
-
-#endif // HTMLDataListElement_h
diff --git a/WebCore/html/HTMLDataListElement.idl b/WebCore/html/HTMLDataListElement.idl
deleted file mode 100644
index 916c0a1..0000000
--- a/WebCore/html/HTMLDataListElement.idl
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * 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
- * "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 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.
- */
-
-module html {
- interface [
- GenerateConstructor,
- Conditional=DATALIST
- ] HTMLDataListElement : HTMLElement {
- readonly attribute HTMLCollection options;
- };
-}
diff --git a/WebCore/html/HTMLDocument.cpp b/WebCore/html/HTMLDocument.cpp
index c995bbb..2457c4f 100644
--- a/WebCore/html/HTMLDocument.cpp
+++ b/WebCore/html/HTMLDocument.cpp
@@ -114,14 +114,14 @@ String HTMLDocument::dir()
HTMLElement* b = body();
if (!b)
return String();
- return b->getAttribute(dirAttr);
+ return b->dir();
}
void HTMLDocument::setDir(const String& value)
{
HTMLElement* b = body();
if (b)
- b->setAttribute(dirAttr, value);
+ b->setDir(value);
}
String HTMLDocument::designMode() const
diff --git a/WebCore/html/HTMLDocument.h b/WebCore/html/HTMLDocument.h
index 4b14d0c..eda7593 100644
--- a/WebCore/html/HTMLDocument.h
+++ b/WebCore/html/HTMLDocument.h
@@ -37,7 +37,7 @@ class HTMLDocument : public Document, public CachedResourceClient {
public:
static PassRefPtr<HTMLDocument> create(Frame* frame)
{
- return adoptRef(new HTMLDocument(frame));
+ return new HTMLDocument(frame);
}
virtual ~HTMLDocument();
@@ -71,6 +71,10 @@ public:
void captureEvents();
void releaseEvents();
+ virtual bool childAllowed(Node*);
+
+ virtual PassRefPtr<Element> createElement(const AtomicString& tagName, ExceptionCode&);
+
void addNamedItem(const AtomicString& name);
void removeNamedItem(const AtomicString& name);
bool hasNamedItem(AtomicStringImpl* name);
@@ -83,10 +87,6 @@ protected:
HTMLDocument(Frame*);
private:
- virtual bool childAllowed(Node*);
-
- virtual PassRefPtr<Element> createElement(const AtomicString& tagName, ExceptionCode&);
-
virtual bool isHTMLDocument() const { return true; }
virtual bool isFrameSet() const;
virtual Tokenizer* createTokenizer();
diff --git a/WebCore/html/HTMLElement.cpp b/WebCore/html/HTMLElement.cpp
index 7a23d94..b310cad 100644
--- a/WebCore/html/HTMLElement.cpp
+++ b/WebCore/html/HTMLElement.cpp
@@ -257,7 +257,7 @@ PassRefPtr<DocumentFragment> HTMLElement::createContextualFragment(const String
hasLocalName(headTag) || hasLocalName(styleTag) || hasLocalName(titleTag))
return 0;
- RefPtr<DocumentFragment> fragment = DocumentFragment::create(document());
+ RefPtr<DocumentFragment> fragment = new DocumentFragment(document());
if (document()->isHTMLDocument())
parseHTMLDocumentFragment(html, fragment.get());
@@ -319,7 +319,7 @@ static void replaceChildrenWithFragment(HTMLElement* element, PassRefPtr<Documen
}
if (hasOneTextChild(element) && hasOneTextChild(fragment.get())) {
- static_cast<Text*>(element->firstChild())->setData(static_cast<Text*>(fragment->firstChild())->data(), ec);
+ static_cast<Text*>(element->firstChild())->setData(static_cast<Text*>(fragment->firstChild())->string(), ec);
return;
}
@@ -339,7 +339,7 @@ static void replaceChildrenWithText(HTMLElement* element, const String& text, Ex
return;
}
- RefPtr<Text> textNode = Text::create(element->document(), text);
+ RefPtr<Text> textNode = new Text(element->document(), text);
if (hasOneChild(element)) {
element->replaceChild(textNode.release(), element->firstChild(), ec);
@@ -425,7 +425,7 @@ void HTMLElement::setInnerText(const String& text, ExceptionCode& ec)
// Add text nodes and <br> elements.
ec = 0;
- RefPtr<DocumentFragment> fragment = DocumentFragment::create(document());
+ RefPtr<DocumentFragment> fragment = new DocumentFragment(document());
int lineStart = 0;
UChar prev = 0;
int length = text.length();
@@ -433,7 +433,7 @@ void HTMLElement::setInnerText(const String& text, ExceptionCode& ec)
UChar c = text[i];
if (c == '\n' || c == '\r') {
if (i > lineStart) {
- fragment->appendChild(Text::create(document(), text.substring(lineStart, i - lineStart)), ec);
+ fragment->appendChild(new Text(document(), text.substring(lineStart, i - lineStart)), ec);
if (ec)
return;
}
@@ -447,7 +447,7 @@ void HTMLElement::setInnerText(const String& text, ExceptionCode& ec)
prev = c;
}
if (length > lineStart)
- fragment->appendChild(Text::create(document(), text.substring(lineStart, length - lineStart)), ec);
+ fragment->appendChild(new Text(document(), text.substring(lineStart, length - lineStart)), ec);
replaceChildrenWithFragment(this, fragment.release(), ec);
}
@@ -475,7 +475,7 @@ void HTMLElement::setOuterText(const String &text, ExceptionCode& ec)
// FIXME: This creates a new text node even when the text is empty.
// FIXME: This creates a single text node even when the text has CR and LF
// characters in it. Instead it should create <br> elements.
- RefPtr<Text> t = Text::create(document(), text);
+ RefPtr<Text> t = new Text(document(), text);
ec = 0;
parent->replaceChild(t, this, ec);
if (ec)
@@ -737,11 +737,56 @@ void HTMLElement::accessKeyAction(bool sendToAnyElement)
dispatchSimulatedClick(0, true);
}
+String HTMLElement::id() const
+{
+ return getAttribute(idAttr);
+}
+
+void HTMLElement::setId(const String& value)
+{
+ setAttribute(idAttr, value);
+}
+
String HTMLElement::title() const
{
return getAttribute(titleAttr);
}
+void HTMLElement::setTitle(const String& value)
+{
+ setAttribute(titleAttr, value);
+}
+
+String HTMLElement::lang() const
+{
+ return getAttribute(langAttr);
+}
+
+void HTMLElement::setLang(const String& value)
+{
+ setAttribute(langAttr, value);
+}
+
+String HTMLElement::dir() const
+{
+ return getAttribute(dirAttr);
+}
+
+void HTMLElement::setDir(const String &value)
+{
+ setAttribute(dirAttr, value);
+}
+
+String HTMLElement::className() const
+{
+ return getAttribute(classAttr);
+}
+
+void HTMLElement::setClassName(const String &value)
+{
+ setAttribute(classAttr, value);
+}
+
short HTMLElement::tabIndex() const
{
if (supportsFocus())
@@ -849,7 +894,6 @@ static HashSet<AtomicStringImpl*>* inlineTagList()
tagList.add(textareaTag.localName().impl());
tagList.add(labelTag.localName().impl());
tagList.add(buttonTag.localName().impl());
- tagList.add(datalistTag.localName().impl());
tagList.add(insTag.localName().impl());
tagList.add(delTag.localName().impl());
tagList.add(nobrTag.localName().impl());
diff --git a/WebCore/html/HTMLElement.h b/WebCore/html/HTMLElement.h
index d7485e8..21b3bb5 100644
--- a/WebCore/html/HTMLElement.h
+++ b/WebCore/html/HTMLElement.h
@@ -47,7 +47,16 @@ public:
PassRefPtr<HTMLCollection> children();
+ String id() const;
+ void setId(const String&);
virtual String title() const;
+ void setTitle(const String&);
+ String lang() const;
+ void setLang(const String&);
+ String dir() const;
+ void setDir(const String&);
+ String className() const;
+ void setClassName(const String&);
virtual short tabIndex() const;
void setTabIndex(int);
diff --git a/WebCore/html/HTMLEmbedElement.idl b/WebCore/html/HTMLEmbedElement.idl
index 05c10db..a38402c 100644
--- a/WebCore/html/HTMLEmbedElement.idl
+++ b/WebCore/html/HTMLEmbedElement.idl
@@ -29,17 +29,17 @@ module html {
InterfaceUUID=18f9bd58-6bb3-4b5c-aa30-6da13adfc91e,
ImplementationUUID=93e0407a-8380-4ff0-978d-f773f2dee6a3
] HTMLEmbedElement : HTMLElement {
- attribute [ConvertNullToNullString, Reflect] DOMString align;
+ attribute [ConvertNullToNullString] DOMString align;
#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
- attribute [ConvertNullToNullString, Reflect] DOMString height;
+ attribute [ConvertNullToNullString] DOMString height;
#else
attribute [ConvertFromString] long height;
#endif
- attribute [ConvertNullToNullString, Reflect] DOMString name;
- attribute [ConvertNullToNullString, Reflect] DOMString src;
- attribute [ConvertNullToNullString, Reflect] DOMString type;
+ attribute [ConvertNullToNullString] DOMString name;
+ attribute [ConvertNullToNullString] DOMString src;
+ attribute [ConvertNullToNullString] DOMString type;
#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
- attribute [ConvertNullToNullString, Reflect] DOMString width;
+ attribute [ConvertNullToNullString] DOMString width;
#else
attribute [ConvertFromString] long width;
#endif
diff --git a/WebCore/html/HTMLFormControlElement.cpp b/WebCore/html/HTMLFormControlElement.cpp
index 3d8bc78..09d91df 100644
--- a/WebCore/html/HTMLFormControlElement.cpp
+++ b/WebCore/html/HTMLFormControlElement.cpp
@@ -294,11 +294,6 @@ HTMLFormElement* HTMLFormControlElement::virtualForm() const
return m_form;
}
-bool HTMLFormControlElement::isDefaultButtonForForm() const
-{
- return isSuccessfulSubmitButton() && m_form && m_form->defaultButton() == this;
-}
-
void HTMLFormControlElement::removeFromForm()
{
if (!m_form)
diff --git a/WebCore/html/HTMLFormControlElement.h b/WebCore/html/HTMLFormControlElement.h
index 902bbf3..a30f46c 100644
--- a/WebCore/html/HTMLFormControlElement.h
+++ b/WebCore/html/HTMLFormControlElement.h
@@ -117,7 +117,6 @@ protected:
private:
virtual HTMLFormElement* virtualForm() const;
- virtual bool isDefaultButtonForForm() const;
HTMLFormElement* m_form;
RefPtr<ValidityState> m_validityState;
diff --git a/WebCore/html/HTMLFormElement.cpp b/WebCore/html/HTMLFormElement.cpp
index 51fb35f..54986b0 100644
--- a/WebCore/html/HTMLFormElement.cpp
+++ b/WebCore/html/HTMLFormElement.cpp
@@ -577,17 +577,6 @@ void HTMLFormElement::setTarget(const String &value)
setAttribute(targetAttr, value);
}
-HTMLFormControlElement* HTMLFormElement::defaultButton() const
-{
- for (unsigned i = 0; i < formElements.size(); ++i) {
- HTMLFormControlElement* control = formElements[i];
- if (control->isSuccessfulSubmitButton())
- return control;
- }
-
- return 0;
-}
-
PassRefPtr<HTMLFormControlElement> HTMLFormElement::elementForAlias(const AtomicString& alias)
{
if (alias.isEmpty() || !m_elementAliases)
diff --git a/WebCore/html/HTMLFormElement.h b/WebCore/html/HTMLFormElement.h
index afe1ff0..6b7812a 100644
--- a/WebCore/html/HTMLFormElement.h
+++ b/WebCore/html/HTMLFormElement.h
@@ -107,8 +107,6 @@ public:
virtual String target() const;
void setTarget(const String&);
-
- HTMLFormControlElement* defaultButton() const;
PassRefPtr<HTMLFormControlElement> elementForAlias(const AtomicString&);
void addElementAlias(HTMLFormControlElement*, const AtomicString& alias);
diff --git a/WebCore/html/HTMLFrameElement.cpp b/WebCore/html/HTMLFrameElement.cpp
index d87386f..adc3ff1 100644
--- a/WebCore/html/HTMLFrameElement.cpp
+++ b/WebCore/html/HTMLFrameElement.cpp
@@ -1,9 +1,9 @@
-/*
+/**
* Copyright (C) 1999 Lars Knoll (knoll@kde.org)
* (C) 1999 Antti Koivisto (koivisto@kde.org)
* (C) 2000 Simon Hausmann (hausmann@kde.org)
* (C) 2001 Dirk Mueller (mueller@kde.org)
- * Copyright (C) 2004, 2006, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2004, 2006 Apple Computer, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -38,7 +38,6 @@ HTMLFrameElement::HTMLFrameElement(const QualifiedName& tagName, Document* docum
: HTMLFrameElementBase(tagName, document)
, m_frameBorder(true)
, m_frameBorderSet(false)
- , m_noResize(false)
{
ASSERT(hasTagName(frameTag));
}
@@ -46,7 +45,7 @@ HTMLFrameElement::HTMLFrameElement(const QualifiedName& tagName, Document* docum
bool HTMLFrameElement::rendererIsNeeded(RenderStyle*)
{
// For compatibility, frames render even when display: none is set.
- return isURLAllowed();
+ return isURLAllowed(m_URL);
}
RenderObject* HTMLFrameElement::createRenderer(RenderArena* arena, RenderStyle*)
@@ -80,20 +79,8 @@ void HTMLFrameElement::parseMappedAttribute(MappedAttribute *attr)
m_frameBorder = attr->value().toInt();
m_frameBorderSet = !attr->isNull();
// FIXME: If we are already attached, this has no effect.
- } else if (attr->name() == noresizeAttr) {
- m_noResize = true;
- // FIXME: If we are already attached, this has no effect.
- // FIXME: Since this does not check attr->isNull(), it can
- // never reset m_noResize to false if the attribute is removed.
- // FIXME: There seems to be no code that looks at this
- // value and prevents resizing.
} else
HTMLFrameElementBase::parseMappedAttribute(attr);
}
-void HTMLFrameElement::setNoResize(bool noResize)
-{
- setAttribute(noresizeAttr, noResize ? "" : 0);
-}
-
} // namespace WebCore
diff --git a/WebCore/html/HTMLFrameElement.h b/WebCore/html/HTMLFrameElement.h
index 23b5acb..ab602ee 100644
--- a/WebCore/html/HTMLFrameElement.h
+++ b/WebCore/html/HTMLFrameElement.h
@@ -2,7 +2,7 @@
* Copyright (C) 1999 Lars Knoll (knoll@kde.org)
* (C) 1999 Antti Koivisto (koivisto@kde.org)
* (C) 2000 Simon Hausmann <hausmann@kde.org>
- * Copyright (C) 2004, 2006, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2004, 2006 Apple Computer, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -49,14 +49,9 @@ public:
bool hasFrameBorder() const { return m_frameBorder; }
- bool noResize() const { return m_noResize; }
- void setNoResize(bool);
-
private:
bool m_frameBorder;
bool m_frameBorderSet;
-
- bool m_noResize;
};
} // namespace WebCore
diff --git a/WebCore/html/HTMLFrameElement.idl b/WebCore/html/HTMLFrameElement.idl
index d0076eb..106e57e 100644
--- a/WebCore/html/HTMLFrameElement.idl
+++ b/WebCore/html/HTMLFrameElement.idl
@@ -26,14 +26,14 @@ module html {
ImplementationUUID=38c9e3c8-3384-40b6-a484-cb845c48b67d
] HTMLFrameElement : HTMLElement {
- attribute [ConvertNullToNullString, Reflect=frameborder] DOMString frameBorder;
- attribute [ConvertNullToNullString, Reflect=longdesc] DOMString longDesc;
- attribute [ConvertNullToNullString, Reflect=marginheight] DOMString marginHeight;
- attribute [ConvertNullToNullString, Reflect=marginwidth] DOMString marginWidth;
- attribute [ConvertNullToNullString, Reflect] DOMString name;
+ attribute [ConvertNullToNullString] DOMString frameBorder;
+ attribute [ConvertNullToNullString] DOMString longDesc;
+ attribute [ConvertNullToNullString] DOMString marginHeight;
+ attribute [ConvertNullToNullString] DOMString marginWidth;
+ attribute [ConvertNullToNullString] DOMString name;
attribute boolean noResize;
- attribute [ConvertNullToNullString, Reflect] DOMString scrolling;
- attribute [ConvertNullToNullString, CustomSetter, ReflectURL] DOMString src;
+ attribute [ConvertNullToNullString] DOMString scrolling;
+ attribute [ConvertNullToNullString, CustomSetter] DOMString src;
// Introduced in DOM Level 2:
readonly attribute [CheckFrameSecurity] Document contentDocument;
diff --git a/WebCore/html/HTMLFrameElementBase.cpp b/WebCore/html/HTMLFrameElementBase.cpp
index 282dee3..a4f0a5e 100644
--- a/WebCore/html/HTMLFrameElementBase.cpp
+++ b/WebCore/html/HTMLFrameElementBase.cpp
@@ -50,17 +50,18 @@ HTMLFrameElementBase::HTMLFrameElementBase(const QualifiedName& tagName, Documen
, m_scrolling(ScrollbarAuto)
, m_marginWidth(-1)
, m_marginHeight(-1)
+ , m_noResize(false)
, m_viewSource(false)
, m_shouldOpenURLAfterAttach(false)
{
}
-bool HTMLFrameElementBase::isURLAllowed() const
+bool HTMLFrameElementBase::isURLAllowed(const AtomicString& URLString) const
{
- if (m_URL.isEmpty())
+ if (URLString.isEmpty())
return true;
- const KURL& completeURL = document()->completeURL(m_URL);
+ const KURL& completeURL = document()->completeURL(URLString);
// Don't allow more than 200 total frames in a set. This seems
// like a reasonable upper bound, and otherwise mutually recursive
@@ -92,7 +93,7 @@ void HTMLFrameElementBase::openURL()
{
ASSERT(!m_frameName.isEmpty());
- if (!isURLAllowed())
+ if (!isURLAllowed(m_URL))
return;
if (m_URL.isEmpty())
@@ -126,6 +127,9 @@ void HTMLFrameElementBase::parseMappedAttribute(MappedAttribute *attr)
} else if (attr->name() == marginheightAttr) {
m_marginHeight = attr->value().toInt();
// FIXME: If we are already attached, this has no effect.
+ } else if (attr->name() == noresizeAttr) {
+ m_noResize = true;
+ // FIXME: If we are already attached, this has no effect.
} else if (attr->name() == scrollingAttr) {
// Auto and yes both simply mean "allow scrolling." No means "don't allow scrolling."
if (equalIgnoringCase(attr->value(), "auto") || equalIgnoringCase(attr->value(), "yes"))
@@ -279,6 +283,11 @@ void HTMLFrameElementBase::setName(const String &value)
setAttribute(nameAttr, value);
}
+void HTMLFrameElementBase::setNoResize(bool noResize)
+{
+ setAttribute(noresizeAttr, noResize ? "" : 0);
+}
+
String HTMLFrameElementBase::scrolling() const
{
return getAttribute(scrollingAttr);
diff --git a/WebCore/html/HTMLFrameElementBase.h b/WebCore/html/HTMLFrameElementBase.h
index ad55ee1..4a24451 100644
--- a/WebCore/html/HTMLFrameElementBase.h
+++ b/WebCore/html/HTMLFrameElementBase.h
@@ -2,7 +2,7 @@
* Copyright (C) 1999 Lars Knoll (knoll@kde.org)
* (C) 1999 Antti Koivisto (koivisto@kde.org)
* (C) 2000 Simon Hausmann <hausmann@kde.org>
- * Copyright (C) 2004, 2006, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2004, 2006, 2008 Apple Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -67,6 +67,9 @@ public:
String name() const;
void setName(const String&);
+ bool noResize() const { return m_noResize; }
+ void setNoResize(bool);
+
String scrolling() const;
void setScrolling(const String&);
@@ -81,7 +84,7 @@ public:
protected:
HTMLFrameElementBase(const QualifiedName&, Document*);
- bool isURLAllowed() const;
+ bool isURLAllowed(const AtomicString&) const;
void setNameAndOpenURL();
void openURL();
@@ -95,6 +98,7 @@ protected:
int m_marginWidth;
int m_marginHeight;
+ bool m_noResize;
bool m_viewSource;
bool m_shouldOpenURLAfterAttach;
diff --git a/WebCore/html/HTMLFrameSetElement.cpp b/WebCore/html/HTMLFrameSetElement.cpp
index 235bb9f..a8f544b 100644
--- a/WebCore/html/HTMLFrameSetElement.cpp
+++ b/WebCore/html/HTMLFrameSetElement.cpp
@@ -240,7 +240,7 @@ EventListener* HTMLFrameSetElement::onblur() const
void HTMLFrameSetElement::setOnblur(PassRefPtr<EventListener> eventListener)
{
- document()->setWindowAttributeEventListener(eventNames().blurEvent, eventListener);
+ document()->setAttributeEventListener(eventNames().blurEvent, eventListener);
}
EventListener* HTMLFrameSetElement::onerror() const
@@ -250,7 +250,7 @@ EventListener* HTMLFrameSetElement::onerror() const
void HTMLFrameSetElement::setOnerror(PassRefPtr<EventListener> eventListener)
{
- document()->setWindowAttributeEventListener(eventNames().errorEvent, eventListener);
+ document()->setAttributeEventListener(eventNames().errorEvent, eventListener);
}
EventListener* HTMLFrameSetElement::onfocus() const
@@ -260,19 +260,9 @@ EventListener* HTMLFrameSetElement::onfocus() const
void HTMLFrameSetElement::setOnfocus(PassRefPtr<EventListener> eventListener)
{
- document()->setWindowAttributeEventListener(eventNames().focusEvent, eventListener);
+ document()->setAttributeEventListener(eventNames().focusEvent, eventListener);
}
-EventListener* HTMLFrameSetElement::onhashchange() const
-{
- return document()->getWindowAttributeEventListener(eventNames().hashchangeEvent);
-}
-
-void HTMLFrameSetElement::setOnhashchange(PassRefPtr<EventListener> eventListener)
-{
- document()->setWindowAttributeEventListener(eventNames().hashchangeEvent, eventListener);
-}
-
EventListener* HTMLFrameSetElement::onload() const
{
return document()->getWindowAttributeEventListener(eventNames().loadEvent);
@@ -280,7 +270,7 @@ EventListener* HTMLFrameSetElement::onload() const
void HTMLFrameSetElement::setOnload(PassRefPtr<EventListener> eventListener)
{
- document()->setWindowAttributeEventListener(eventNames().loadEvent, eventListener);
+ document()->setAttributeEventListener(eventNames().loadEvent, eventListener);
}
EventListener* HTMLFrameSetElement::onbeforeunload() const
@@ -290,7 +280,7 @@ EventListener* HTMLFrameSetElement::onbeforeunload() const
void HTMLFrameSetElement::setOnbeforeunload(PassRefPtr<EventListener> eventListener)
{
- document()->setWindowAttributeEventListener(eventNames().beforeunloadEvent, eventListener);
+ document()->setAttributeEventListener(eventNames().beforeunloadEvent, eventListener);
}
EventListener* HTMLFrameSetElement::onmessage() const
@@ -300,7 +290,7 @@ EventListener* HTMLFrameSetElement::onmessage() const
void HTMLFrameSetElement::setOnmessage(PassRefPtr<EventListener> eventListener)
{
- document()->setWindowAttributeEventListener(eventNames().messageEvent, eventListener);
+ document()->setAttributeEventListener(eventNames().messageEvent, eventListener);
}
EventListener* HTMLFrameSetElement::onoffline() const
@@ -310,7 +300,7 @@ EventListener* HTMLFrameSetElement::onoffline() const
void HTMLFrameSetElement::setOnoffline(PassRefPtr<EventListener> eventListener)
{
- document()->setWindowAttributeEventListener(eventNames().offlineEvent, eventListener);
+ document()->setAttributeEventListener(eventNames().offlineEvent, eventListener);
}
EventListener* HTMLFrameSetElement::ononline() const
@@ -320,7 +310,7 @@ EventListener* HTMLFrameSetElement::ononline() const
void HTMLFrameSetElement::setOnonline(PassRefPtr<EventListener> eventListener)
{
- document()->setWindowAttributeEventListener(eventNames().onlineEvent, eventListener);
+ document()->setAttributeEventListener(eventNames().onlineEvent, eventListener);
}
EventListener* HTMLFrameSetElement::onresize() const
@@ -330,7 +320,7 @@ EventListener* HTMLFrameSetElement::onresize() const
void HTMLFrameSetElement::setOnresize(PassRefPtr<EventListener> eventListener)
{
- document()->setWindowAttributeEventListener(eventNames().resizeEvent, eventListener);
+ document()->setAttributeEventListener(eventNames().resizeEvent, eventListener);
}
EventListener* HTMLFrameSetElement::onstorage() const
@@ -340,7 +330,7 @@ EventListener* HTMLFrameSetElement::onstorage() const
void HTMLFrameSetElement::setOnstorage(PassRefPtr<EventListener> eventListener)
{
- document()->setWindowAttributeEventListener(eventNames().storageEvent, eventListener);
+ document()->setAttributeEventListener(eventNames().storageEvent, eventListener);
}
EventListener* HTMLFrameSetElement::onunload() const
@@ -350,7 +340,7 @@ EventListener* HTMLFrameSetElement::onunload() const
void HTMLFrameSetElement::setOnunload(PassRefPtr<EventListener> eventListener)
{
- document()->setWindowAttributeEventListener(eventNames().unloadEvent, eventListener);
+ document()->setAttributeEventListener(eventNames().unloadEvent, eventListener);
}
} // namespace WebCore
diff --git a/WebCore/html/HTMLFrameSetElement.h b/WebCore/html/HTMLFrameSetElement.h
index b51e702..4319c7a 100644
--- a/WebCore/html/HTMLFrameSetElement.h
+++ b/WebCore/html/HTMLFrameSetElement.h
@@ -79,8 +79,6 @@ public:
EventListener* onbeforeunload() const;
void setOnbeforeunload(PassRefPtr<EventListener>);
- EventListener* onhashchange() const;
- void setOnhashchange(PassRefPtr<EventListener>);
EventListener* onmessage() const;
void setOnmessage(PassRefPtr<EventListener>);
EventListener* onoffline() const;
diff --git a/WebCore/html/HTMLFrameSetElement.idl b/WebCore/html/HTMLFrameSetElement.idl
index 0375c0a..4050f2c 100644
--- a/WebCore/html/HTMLFrameSetElement.idl
+++ b/WebCore/html/HTMLFrameSetElement.idl
@@ -33,7 +33,6 @@ module html {
#if !defined(LANGUAGE_COM) || !LANGUAGE_COM
// Event handler attributes
attribute [DontEnum] EventListener onbeforeunload;
- attribute [DontEnum] EventListener onhashchange;
attribute [DontEnum] EventListener onmessage;
attribute [DontEnum] EventListener onoffline;
attribute [DontEnum] EventListener ononline;
@@ -41,7 +40,7 @@ module html {
attribute [DontEnum] EventListener onstorage;
attribute [DontEnum] EventListener onunload;
- // Overrides of Element attributes (left in for completeness).
+ // Overrides of Element attributes.
// attribute [DontEnum] EventListener onblur;
// attribute [DontEnum] EventListener onerror;
// attribute [DontEnum] EventListener onfocus;
@@ -50,6 +49,7 @@ module html {
// Not implemented yet.
// attribute [DontEnum] EventListener onafterprint;
// attribute [DontEnum] EventListener onbeforeprint;
+ // attribute [DontEnum] EventListener onhashchange;
// attribute [DontEnum] EventListener onpopstate;
// attribute [DontEnum] EventListener onredo;
// attribute [DontEnum] EventListener onundo;
diff --git a/WebCore/html/HTMLIFrameElement.cpp b/WebCore/html/HTMLIFrameElement.cpp
index 123b134..478925a 100644
--- a/WebCore/html/HTMLIFrameElement.cpp
+++ b/WebCore/html/HTMLIFrameElement.cpp
@@ -3,7 +3,7 @@
* (C) 1999 Antti Koivisto (koivisto@kde.org)
* (C) 2000 Simon Hausmann (hausmann@kde.org)
* (C) 2001 Dirk Mueller (mueller@kde.org)
- * Copyright (C) 2004, 2006, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2004, 2006, 2008 Apple Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -89,7 +89,7 @@ void HTMLIFrameElement::parseMappedAttribute(MappedAttribute* attr)
bool HTMLIFrameElement::rendererIsNeeded(RenderStyle* style)
{
- return isURLAllowed() && style->display() != NONE;
+ return isURLAllowed(m_URL) && style->display() != NONE;
}
RenderObject* HTMLIFrameElement::createRenderer(RenderArena* arena, RenderStyle*)
diff --git a/WebCore/html/HTMLIFrameElement.idl b/WebCore/html/HTMLIFrameElement.idl
index e288b54..b5684ca 100644
--- a/WebCore/html/HTMLIFrameElement.idl
+++ b/WebCore/html/HTMLIFrameElement.idl
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2006, 2007, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
* Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
*
* This library is free software; you can redistribute it and/or
@@ -26,16 +26,16 @@ module html {
ImplementationUUID=370c6318-f804-49f9-bc8a-46b99cd87399
] HTMLIFrameElement : HTMLElement {
- attribute [ConvertNullToNullString, Reflect] DOMString align;
- attribute [ConvertNullToNullString, Reflect=frameborder] DOMString frameBorder;
- attribute [ConvertNullToNullString, Reflect] DOMString height;
- attribute [ConvertNullToNullString, Reflect=longdesc] DOMString longDesc;
- attribute [ConvertNullToNullString, Reflect=marginheight] DOMString marginHeight;
- attribute [ConvertNullToNullString, Reflect=marginwidth] DOMString marginWidth;
- attribute [ConvertNullToNullString, Reflect] DOMString name;
- attribute [ConvertNullToNullString, Reflect] DOMString scrolling;
- attribute [ConvertNullToNullString, CustomSetter, Reflect] DOMString src;
- attribute [ConvertNullToNullString, Reflect] DOMString width;
+ attribute [ConvertNullToNullString] DOMString align;
+ attribute [ConvertNullToNullString] DOMString frameBorder;
+ attribute [ConvertNullToNullString] DOMString height;
+ attribute [ConvertNullToNullString] DOMString longDesc;
+ attribute [ConvertNullToNullString] DOMString marginHeight;
+ attribute [ConvertNullToNullString] DOMString marginWidth;
+ attribute [ConvertNullToNullString] DOMString name;
+ attribute [ConvertNullToNullString] DOMString scrolling;
+ attribute [ConvertNullToNullString, CustomSetter] DOMString src;
+ attribute [ConvertNullToNullString] DOMString width;
// Introduced in DOM Level 2:
readonly attribute [CheckFrameSecurity] Document contentDocument;
diff --git a/WebCore/html/HTMLImageElement.cpp b/WebCore/html/HTMLImageElement.cpp
index 932e718..5173964 100644
--- a/WebCore/html/HTMLImageElement.cpp
+++ b/WebCore/html/HTMLImageElement.cpp
@@ -279,11 +279,46 @@ bool HTMLImageElement::isURLAttribute(Attribute* attr) const
|| (attr->name() == usemapAttr && attr->value().string()[0] != '#');
}
-const AtomicString& HTMLImageElement::alt() const
+String HTMLImageElement::name() const
+{
+ return getAttribute(nameAttr);
+}
+
+void HTMLImageElement::setName(const String& value)
+{
+ setAttribute(nameAttr, value);
+}
+
+String HTMLImageElement::align() const
+{
+ return getAttribute(alignAttr);
+}
+
+void HTMLImageElement::setAlign(const String& value)
+{
+ setAttribute(alignAttr, value);
+}
+
+String HTMLImageElement::alt() const
{
return getAttribute(altAttr);
}
+void HTMLImageElement::setAlt(const String& value)
+{
+ setAttribute(altAttr, value);
+}
+
+String HTMLImageElement::border() const
+{
+ return getAttribute(borderAttr);
+}
+
+void HTMLImageElement::setBorder(const String& value)
+{
+ setAttribute(borderAttr, value);
+}
+
bool HTMLImageElement::draggable() const
{
// Image elements are draggable by default.
@@ -346,6 +381,16 @@ void HTMLImageElement::setSrc(const String& value)
setAttribute(srcAttr, value);
}
+String HTMLImageElement::useMap() const
+{
+ return getAttribute(usemapAttr);
+}
+
+void HTMLImageElement::setUseMap(const String& value)
+{
+ setAttribute(usemapAttr, value);
+}
+
int HTMLImageElement::vspace() const
{
// ### return actual vspace
@@ -394,8 +439,7 @@ void HTMLImageElement::addSubresourceAttributeURLs(ListHashSet<KURL>& urls) cons
HTMLElement::addSubresourceAttributeURLs(urls);
addSubresourceURL(urls, src());
- // FIXME: What about when the usemap attribute begins with "#"?
- addSubresourceURL(urls, document()->completeURL(getAttribute(usemapAttr)));
+ addSubresourceURL(urls, document()->completeURL(useMap()));
}
}
diff --git a/WebCore/html/HTMLImageElement.h b/WebCore/html/HTMLImageElement.h
index f58574d..5e82186 100644
--- a/WebCore/html/HTMLImageElement.h
+++ b/WebCore/html/HTMLImageElement.h
@@ -69,7 +69,17 @@ public:
void setLoadManually(bool loadManually) { m_imageLoader.setLoadManually(loadManually); }
- const AtomicString& alt() const;
+ String name() const;
+ void setName(const String&);
+
+ String align() const;
+ void setAlign(const String&);
+
+ String alt() const;
+ void setAlt(const String&);
+
+ String border() const;
+ void setBorder(const String&);
virtual bool draggable() const;
@@ -90,6 +100,9 @@ public:
KURL src() const;
void setSrc(const String&);
+ String useMap() const;
+ void setUseMap(const String&);
+
int vspace() const;
void setVspace(int);
diff --git a/WebCore/html/HTMLKeygenElement.cpp b/WebCore/html/HTMLKeygenElement.cpp
index 6af088f..b1b6238 100644
--- a/WebCore/html/HTMLKeygenElement.cpp
+++ b/WebCore/html/HTMLKeygenElement.cpp
@@ -51,7 +51,7 @@ HTMLKeygenElement::HTMLKeygenElement(const QualifiedName& tagName, Document* doc
for (Vector<String>::const_iterator it = keys.begin(); it != end; ++it) {
HTMLOptionElement* o = new HTMLOptionElement(optionTag, doc, form());
addChild(o);
- o->addChild(Text::create(doc, *it));
+ o->addChild(new Text(doc, *it));
}
}
diff --git a/WebCore/html/HTMLObjectElement.idl b/WebCore/html/HTMLObjectElement.idl
index d3fb5c0..1880836 100644
--- a/WebCore/html/HTMLObjectElement.idl
+++ b/WebCore/html/HTMLObjectElement.idl
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2006, 2007, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
* Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
*
* This library is free software; you can redistribute it and/or
@@ -30,22 +30,22 @@ module html {
ImplementationUUID=2dd24554-6784-4ef9-9713-179f3d37b2f9
] HTMLObjectElement : HTMLElement {
readonly attribute HTMLFormElement form;
- attribute [ConvertNullToNullString, Reflect] DOMString code;
- attribute [ConvertNullToNullString, Reflect] DOMString align;
- attribute [ConvertNullToNullString, Reflect] DOMString archive;
- attribute [ConvertNullToNullString, Reflect] DOMString border;
- attribute [ConvertNullToNullString, Reflect=codebase] DOMString codeBase;
- attribute [ConvertNullToNullString, Reflect=codetype] DOMString codeType;
- attribute [ConvertNullToNullString, ReflectURL] DOMString data;
+ attribute [ConvertNullToNullString] DOMString code;
+ attribute [ConvertNullToNullString] DOMString align;
+ attribute [ConvertNullToNullString] DOMString archive;
+ attribute [ConvertNullToNullString] DOMString border;
+ attribute [ConvertNullToNullString] DOMString codeBase;
+ attribute [ConvertNullToNullString] DOMString codeType;
+ attribute [ConvertNullToNullString] DOMString data;
attribute boolean declare;
- attribute [ConvertNullToNullString, Reflect] DOMString height;
+ attribute [ConvertNullToNullString] DOMString height;
attribute long hspace;
- attribute [ConvertNullToNullString, Reflect] DOMString name;
- attribute [ConvertNullToNullString, Reflect] DOMString standby;
- attribute [ConvertNullToNullString, Reflect] DOMString type;
- attribute [ConvertNullToNullString, Reflect=usemap] DOMString useMap;
+ attribute [ConvertNullToNullString] DOMString name;
+ attribute [ConvertNullToNullString] DOMString standby;
+ attribute [ConvertNullToNullString] DOMString type;
+ attribute [ConvertNullToNullString] DOMString useMap;
attribute long vspace;
- attribute [ConvertNullToNullString, Reflect] DOMString width;
+ attribute [ConvertNullToNullString] DOMString width;
// Introduced in DOM Level 2:
readonly attribute [CheckFrameSecurity] Document contentDocument;
diff --git a/WebCore/html/HTMLOptionElement.cpp b/WebCore/html/HTMLOptionElement.cpp
index 091b1a5..009db47 100644
--- a/WebCore/html/HTMLOptionElement.cpp
+++ b/WebCore/html/HTMLOptionElement.cpp
@@ -92,7 +92,7 @@ void HTMLOptionElement::setText(const String &text, ExceptionCode& ec)
}
removeChildren();
- appendChild(Text::create(document(), text), ec);
+ appendChild(new Text(document(), text), ec);
}
void HTMLOptionElement::accessKeyAction(bool)
diff --git a/WebCore/html/HTMLParser.cpp b/WebCore/html/HTMLParser.cpp
index b12c09b..722f4e2 100644
--- a/WebCore/html/HTMLParser.cpp
+++ b/WebCore/html/HTMLParser.cpp
@@ -692,13 +692,13 @@ typedef HashMap<AtomicStringImpl*, CreateErrorCheckFunc> FunctionMap;
bool HTMLParser::textCreateErrorCheck(Token* t, RefPtr<Node>& result)
{
- result = Text::create(m_document, t->text.get());
+ result = new Text(m_document, t->text.get());
return false;
}
bool HTMLParser::commentCreateErrorCheck(Token* t, RefPtr<Node>& result)
{
- result = Comment::create(m_document, t->text.get());
+ result = new Comment(m_document, t->text.get());
return false;
}
@@ -1093,7 +1093,6 @@ bool HTMLParser::isAffectedByResidualStyle(const AtomicString& tagName)
unaffectedTags.add(selectTag.localName().impl());
unaffectedTags.add(objectTag.localName().impl());
unaffectedTags.add(datagridTag.localName().impl());
- unaffectedTags.add(datalistTag.localName().impl());
}
return !unaffectedTags.contains(tagName.impl());
@@ -1599,7 +1598,7 @@ PassRefPtr<Node> HTMLParser::handleIsindex(Token* t)
}
n->addChild(new HTMLHRElement(hrTag, m_document));
- n->addChild(Text::create(m_document, text));
+ n->addChild(new Text(m_document, text));
n->addChild(isIndex.release());
n->addChild(new HTMLHRElement(hrTag, m_document));
diff --git a/WebCore/html/HTMLTagNames.in b/WebCore/html/HTMLTagNames.in
index ed75652..c066e3c 100644
--- a/WebCore/html/HTMLTagNames.in
+++ b/WebCore/html/HTMLTagNames.in
@@ -26,7 +26,6 @@ code interfaceName=HTMLElement
col interfaceName=HTMLTableColElement
colgroup interfaceName=HTMLTableColElement
datagrid interfaceName=HTMLDataGridElement,conditional=DATAGRID
-datalist interfaceName=HTMLDataListElement,conditional=DATALIST
dcell interfaceName=HTMLDataGridCellElement,conditional=DATAGRID
dcol interfaceName=HTMLDataGridColElement,conditional=DATAGRID
drow interfaceName=HTMLDataGridRowElement,conditional=DATAGRID
diff --git a/WebCore/html/HTMLViewSourceDocument.cpp b/WebCore/html/HTMLViewSourceDocument.cpp
index 55c6df7..13404cc 100644
--- a/WebCore/html/HTMLViewSourceDocument.cpp
+++ b/WebCore/html/HTMLViewSourceDocument.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2006, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2006, 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
@@ -47,6 +47,9 @@ using namespace HTMLNames;
HTMLViewSourceDocument::HTMLViewSourceDocument(Frame* frame, const String& mimeType)
: HTMLDocument(frame)
, m_type(mimeType)
+ , m_current(0)
+ , m_tbody(0)
+ , m_td(0)
{
setUsesBeforeAfterRules(true);
}
@@ -67,23 +70,23 @@ Tokenizer* HTMLViewSourceDocument::createTokenizer()
void HTMLViewSourceDocument::createContainingTable()
{
- RefPtr<HTMLHtmlElement> html = new HTMLHtmlElement(htmlTag, this);
+ RefPtr<Element> html = new HTMLHtmlElement(htmlTag, this);
addChild(html);
html->attach();
- RefPtr<HTMLBodyElement> body = new HTMLBodyElement(bodyTag, this);
+ RefPtr<Element> body = new HTMLBodyElement(bodyTag, this);
html->addChild(body);
body->attach();
// Create a line gutter div that can be used to make sure the gutter extends down the height of the whole
// document.
- RefPtr<HTMLDivElement> div = new HTMLDivElement(divTag, this);
+ RefPtr<Element> div = new HTMLDivElement(divTag, this);
RefPtr<NamedMappedAttrMap> attrs = NamedMappedAttrMap::create();
attrs->addAttribute(MappedAttribute::create(classAttr, "webkit-line-gutter-backdrop"));
div->setAttributeMap(attrs.release());
body->addChild(div);
div->attach();
- RefPtr<HTMLTableElement> table = new HTMLTableElement(tableTag, this);
+ RefPtr<Element> table = new HTMLTableElement(tableTag, this);
body->addChild(table);
table->attach();
m_tbody = new HTMLTableSectionElement(tbodyTag, this);
@@ -202,31 +205,31 @@ void HTMLViewSourceDocument::addViewSourceDoctypeToken(DoctypeToken* doctypeToke
addText(text, "webkit-html-doctype");
}
-PassRefPtr<Element> HTMLViewSourceDocument::addSpanWithClassName(const String& className)
+Element* HTMLViewSourceDocument::addSpanWithClassName(const String& className)
{
if (m_current == m_tbody) {
addLine(className);
return m_current;
}
- RefPtr<HTMLElement> span = new HTMLElement(spanTag, this);
+ Element* span = new HTMLElement(spanTag, this);
RefPtr<NamedMappedAttrMap> attrs = NamedMappedAttrMap::create();
attrs->addAttribute(MappedAttribute::create(classAttr, className));
span->setAttributeMap(attrs.release());
m_current->addChild(span);
span->attach();
- return span.release();
+ return span;
}
void HTMLViewSourceDocument::addLine(const String& className)
{
// Create a table row.
- RefPtr<HTMLTableRowElement> trow = new HTMLTableRowElement(trTag, this);
+ RefPtr<Element> trow = new HTMLTableRowElement(trTag, this);
m_tbody->addChild(trow);
trow->attach();
// Create a cell that will hold the line number (it is generated in the stylesheet using counters).
- RefPtr<HTMLTableCellElement> td = new HTMLTableCellElement(tdTag, this);
+ Element* td = new HTMLTableCellElement(tdTag, this);
RefPtr<NamedMappedAttrMap> attrs = NamedMappedAttrMap::create();
attrs->addAttribute(MappedAttribute::create(classAttr, "webkit-line-number"));
td->setAttributeMap(attrs.release());
@@ -243,7 +246,7 @@ void HTMLViewSourceDocument::addLine(const String& className)
m_current = m_td = td;
#ifdef DEBUG_LINE_NUMBERS
- RefPtr<Text> lineNumberText = Text::create(this, String::number(tokenizer()->lineNumber() + 1) + " ");
+ RefPtr<Text> lineNumberText = new Text(this, String::number(tokenizer()->lineNumber() + 1) + " ");
td->addChild(lineNumberText);
lineNumberText->attach();
#endif
@@ -274,7 +277,7 @@ void HTMLViewSourceDocument::addText(const String& text, const String& className
}
if (m_current == m_tbody)
addLine(className);
- RefPtr<Text> t = Text::create(this, substring);
+ RefPtr<Text> t = new Text(this, substring);
m_current->addChild(t);
t->attach();
if (i < size - 1)
@@ -286,13 +289,13 @@ void HTMLViewSourceDocument::addText(const String& text, const String& className
m_current = m_tbody;
}
-PassRefPtr<Element> HTMLViewSourceDocument::addLink(const String& url, bool isAnchor)
+Element* HTMLViewSourceDocument::addLink(const String& url, bool isAnchor)
{
if (m_current == m_tbody)
addLine("webkit-html-tag");
// Now create a link for the attribute value instead of a span.
- RefPtr<HTMLAnchorElement> anchor = new HTMLAnchorElement(this);
+ Element* anchor = new HTMLAnchorElement(aTag, this);
RefPtr<NamedMappedAttrMap> attrs = NamedMappedAttrMap::create();
const char* classValue;
if (isAnchor)
@@ -305,7 +308,7 @@ PassRefPtr<Element> HTMLViewSourceDocument::addLink(const String& url, bool isAn
anchor->setAttributeMap(attrs.release());
m_current->addChild(anchor);
anchor->attach();
- return anchor.release();
+ return anchor;
}
}
diff --git a/WebCore/html/HTMLViewSourceDocument.h b/WebCore/html/HTMLViewSourceDocument.h
index e4eadb0..57a8f21 100644
--- a/WebCore/html/HTMLViewSourceDocument.h
+++ b/WebCore/html/HTMLViewSourceDocument.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2006, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2006, 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
@@ -30,18 +30,18 @@
namespace WebCore {
class DoctypeToken;
-class HTMLTableCellElement;
-class HTMLTableSectionElement;
-
struct Token;
class HTMLViewSourceDocument : public HTMLDocument {
public:
static PassRefPtr<HTMLViewSourceDocument> create(Frame* frame, const String& mimeType)
{
- return adoptRef(new HTMLViewSourceDocument(frame, mimeType));
+ return new HTMLViewSourceDocument(frame, mimeType);
}
+ // Returns HTMLTokenizer or TextTokenizer based on m_type.
+ virtual Tokenizer* createTokenizer();
+
void addViewSourceToken(Token*); // Used by the HTML tokenizer.
void addViewSourceText(const String&); // Used by the plaintext tokenizer.
void addViewSourceDoctypeToken(DoctypeToken*);
@@ -49,19 +49,16 @@ public:
private:
HTMLViewSourceDocument(Frame*, const String& mimeType);
- // Returns HTMLTokenizer or TextTokenizer based on m_type.
- virtual Tokenizer* createTokenizer();
-
void createContainingTable();
- PassRefPtr<Element> addSpanWithClassName(const String&);
+ Element* addSpanWithClassName(const String&);
void addLine(const String& className);
void addText(const String& text, const String& className);
- PassRefPtr<Element> addLink(const String& url, bool isAnchor);
+ Element* addLink(const String& url, bool isAnchor);
String m_type;
- RefPtr<Element> m_current;
- RefPtr<HTMLTableSectionElement> m_tbody;
- RefPtr<HTMLTableCellElement> m_td;
+ Element* m_current;
+ Element* m_tbody;
+ Element* m_td;
};
}
diff --git a/WebCore/html/canvas/CanvasRenderingContext2D.cpp b/WebCore/html/canvas/CanvasRenderingContext2D.cpp
index 7203e12..20718e9 100644
--- a/WebCore/html/canvas/CanvasRenderingContext2D.cpp
+++ b/WebCore/html/canvas/CanvasRenderingContext2D.cpp
@@ -1278,13 +1278,8 @@ static PassRefPtr<ImageData> createEmptyImageData(const IntSize& size)
return data.get();
}
-PassRefPtr<ImageData> CanvasRenderingContext2D::createImageData(float sw, float sh, ExceptionCode& ec) const
+PassRefPtr<ImageData> CanvasRenderingContext2D::createImageData(float sw, float sh) const
{
- ec = 0;
- if (!isfinite(sw) || !isfinite(sh)) {
- ec = NOT_SUPPORTED_ERR;
- return 0;
- }
FloatSize unscaledSize(sw, sh);
IntSize scaledSize = m_canvas->convertLogicalToDevice(unscaledSize);
if (scaledSize.width() < 1)
@@ -1311,7 +1306,7 @@ PassRefPtr<ImageData> CanvasRenderingContext2D::getImageData(float sx, float sy,
ImageBuffer* buffer = m_canvas ? m_canvas->buffer() : 0;
if (!buffer)
return createEmptyImageData(scaledRect.size());
- return buffer->getUnmultipliedImageData(scaledRect);
+ return buffer->getImageData(scaledRect);
}
void CanvasRenderingContext2D::putImageData(ImageData* data, float dx, float dy, ExceptionCode& ec)
@@ -1362,7 +1357,7 @@ void CanvasRenderingContext2D::putImageData(ImageData* data, float dx, float dy,
sourceRect.move(-destOffset);
IntPoint destPoint(destOffset.width(), destOffset.height());
- buffer->putUnmultipliedImageData(data, sourceRect, destPoint);
+ buffer->putImageData(data, sourceRect, destPoint);
}
String CanvasRenderingContext2D::font() const
diff --git a/WebCore/html/canvas/CanvasRenderingContext2D.h b/WebCore/html/canvas/CanvasRenderingContext2D.h
index 7c47e55..9648ffc 100644
--- a/WebCore/html/canvas/CanvasRenderingContext2D.h
+++ b/WebCore/html/canvas/CanvasRenderingContext2D.h
@@ -178,7 +178,7 @@ namespace WebCore {
PassRefPtr<CanvasPattern> createPattern(HTMLImageElement*, const String& repetitionType, ExceptionCode&);
PassRefPtr<CanvasPattern> createPattern(HTMLCanvasElement*, const String& repetitionType, ExceptionCode&);
- PassRefPtr<ImageData> createImageData(float width, float height, ExceptionCode&) const;
+ PassRefPtr<ImageData> createImageData(float width, float height) const;
PassRefPtr<ImageData> getImageData(float sx, float sy, float sw, float sh, ExceptionCode&) const;
void putImageData(ImageData*, float dx, float dy, ExceptionCode&);
void putImageData(ImageData*, float dx, float dy, float dirtyX, float dirtyY, float dirtyWidth, float dirtyHeight, ExceptionCode&);
diff --git a/WebCore/html/canvas/CanvasRenderingContext2D.idl b/WebCore/html/canvas/CanvasRenderingContext2D.idl
index 0428054..a86b47d 100644
--- a/WebCore/html/canvas/CanvasRenderingContext2D.idl
+++ b/WebCore/html/canvas/CanvasRenderingContext2D.idl
@@ -113,8 +113,7 @@ module html {
attribute [Custom] custom fillStyle;
// pixel manipulation
- ImageData createImageData(in float sw, in float sh)
- raises (DOMException);
+ ImageData createImageData(in float sw, in float sh);
ImageData getImageData(in float sx, in float sy, in float sw, in float sh)
raises(DOMException);
[Custom] void putImageData(/* in ImageData imagedata, in float dx, in float dy [, in float dirtyX, in float dirtyY, in float dirtyWidth, in float dirtyHeight] */);
diff --git a/WebCore/inspector/InspectorBackend.cpp b/WebCore/inspector/InspectorBackend.cpp
index ae2596a..1eb10e8 100644
--- a/WebCore/inspector/InspectorBackend.cpp
+++ b/WebCore/inspector/InspectorBackend.cpp
@@ -30,10 +30,6 @@
#include "config.h"
#include "InspectorBackend.h"
-#if ENABLE(DATABASE)
-#include "Database.h"
-#endif
-
#include "Element.h"
#include "Frame.h"
#include "FrameLoader.h"
@@ -41,13 +37,8 @@
#include "InspectorClient.h"
#include "InspectorController.h"
#include "InspectorDOMAgent.h"
-#include "InspectorFrontend.h"
#include "InspectorResource.h"
-#if ENABLE(DOM_STORAGE)
-#include "Storage.h"
-#endif
-
#if ENABLE(JAVASCRIPT_DEBUGGER)
#include "JavaScriptCallFrame.h"
#include "JavaScriptDebugServer.h"
@@ -148,10 +139,10 @@ bool InspectorBackend::addSourceToFrame(const String& mimeType, const String& so
return true;
}
-void InspectorBackend::clearMessages(bool clearUI)
+void InspectorBackend::clearMessages()
{
if (m_inspectorController)
- m_inspectorController->clearConsoleMessages(clearUI);
+ m_inspectorController->clearConsoleMessages();
}
void InspectorBackend::toggleNodeSearch()
@@ -191,10 +182,10 @@ bool InspectorBackend::searchingForNode()
return false;
}
-void InspectorBackend::loaded()
+void InspectorBackend::loaded(bool enableDOMAgent)
{
if (m_inspectorController)
- m_inspectorController->scriptObjectReady();
+ m_inspectorController->scriptObjectReady(enableDOMAgent);
}
void InspectorBackend::enableResourceTracking(bool always)
@@ -364,10 +355,10 @@ void InspectorBackend::stepOutOfFunctionInDebugger()
#endif
-void InspectorBackend::getChildNodes(long callId, long nodeId)
+void InspectorBackend::getChildNodes(long callId, long elementId)
{
if (m_inspectorController)
- m_inspectorController->domAgent()->getChildNodes(callId, nodeId);
+ m_inspectorController->domAgent()->getChildNodes(callId, elementId);
}
void InspectorBackend::setAttribute(long callId, long elementId, const String& name, const String& value)
@@ -382,87 +373,16 @@ void InspectorBackend::removeAttribute(long callId, long elementId, const String
m_inspectorController->domAgent()->removeAttribute(callId, elementId, name);
}
-void InspectorBackend::setTextNodeValue(long callId, long nodeId, const String& value)
+void InspectorBackend::setTextNodeValue(long callId, long elementId, const String& value)
{
if (m_inspectorController)
- m_inspectorController->domAgent()->setTextNodeValue(callId, nodeId, value);
+ m_inspectorController->domAgent()->setTextNodeValue(callId, elementId, value);
}
-void InspectorBackend::highlight(long nodeId)
-{
- if (m_inspectorController) {
- Node* node = m_inspectorController->domAgent()->nodeForId(nodeId);
- if (node)
- m_inspectorController->highlight(node);
- }
-}
-
-Node* InspectorBackend::nodeForId(long nodeId)
+void InspectorBackend::highlight(Node* node)
{
if (m_inspectorController)
- return m_inspectorController->domAgent()->nodeForId(nodeId);
- return 0;
+ m_inspectorController->highlight(node);
}
-long InspectorBackend::idForNode(Node* node)
-{
- if (m_inspectorController)
- return m_inspectorController->domAgent()->idForNode(node);
- return -1;
-}
-
-ScriptValue InspectorBackend::wrapObject(const ScriptValue& object)
-{
- if (m_inspectorController)
- return m_inspectorController->wrapObject(object);
- return ScriptValue();
-}
-
-ScriptValue InspectorBackend::unwrapObject(const String& objectId)
-{
- if (m_inspectorController)
- return m_inspectorController->unwrapObject(objectId);
- return ScriptValue();
-}
-
-long InspectorBackend::pushNodePathToFrontend(Node* node, bool selectInUI)
-{
- if (!m_inspectorController)
- return 0;
- if (!m_inspectorController->m_domAgent || !m_inspectorController->m_frontend)
- return 0;
- long id = m_inspectorController->m_domAgent->pushNodePathToFrontend(node);
- if (selectInUI)
- m_inspectorController->m_frontend->updateFocusedNode(id);
- return id;
-}
-
-void InspectorBackend::addNodesToSearchResult(const String& nodeIds)
-{
- if (m_inspectorController && m_inspectorController->m_frontend)
- m_inspectorController->m_frontend->addNodesToSearchResult(nodeIds);
-}
-
-#if ENABLE(DATABASE)
-void InspectorBackend::selectDatabase(Database* database)
-{
- if (!m_inspectorController)
- return;
- if (!m_inspectorController->m_frontend)
- return;
- m_inspectorController->m_frontend->selectDatabase(database);
-}
-#endif
-
-#if ENABLE(DOM_STORAGE)
-void InspectorBackend::selectDOMStorage(Storage* storage)
-{
- if (!m_inspectorController)
- return;
- if (!m_inspectorController->m_frontend)
- return;
- m_inspectorController->m_frontend->selectDOMStorage(storage);
-}
-#endif
-
} // namespace WebCore
diff --git a/WebCore/inspector/InspectorBackend.h b/WebCore/inspector/InspectorBackend.h
index c40e1b9..daa16b4 100644
--- a/WebCore/inspector/InspectorBackend.h
+++ b/WebCore/inspector/InspectorBackend.h
@@ -38,12 +38,10 @@
namespace WebCore {
class CachedResource;
-class Database;
class InspectorClient;
class InspectorDOMAgent;
class JavaScriptCallFrame;
class Node;
-class Storage;
class InspectorBackend : public RefCounted<InspectorBackend>
{
@@ -71,7 +69,7 @@ public:
void addResourceSourceToFrame(long identifier, Node* frame);
bool addSourceToFrame(const String& mimeType, const String& source, Node* frame);
- void clearMessages(bool clearUI);
+ void clearMessages();
void toggleNodeSearch();
@@ -84,7 +82,7 @@ public:
bool searchingForNode();
- void loaded();
+ void loaded(bool enableDOMAgent);
void enableResourceTracking(bool always);
void disableResourceTracking(bool always);
@@ -125,25 +123,13 @@ public:
void stepOutOfFunctionInDebugger();
#endif
- void getChildNodes(long callId, long nodeId);
+ void getChildNodes(long callId, long elementId);
void setAttribute(long callId, long elementId, const String& name, const String& value);
void removeAttribute(long callId, long elementId, const String& name);
- void setTextNodeValue(long callId, long nodeId, const String& value);
+ void setTextNodeValue(long callId, long elementId, const String& value);
// Generic code called from custom implementations.
- void highlight(long nodeId);
- Node* nodeForId(long nodeId);
- long idForNode(Node* node);
- ScriptValue wrapObject(const ScriptValue& object);
- ScriptValue unwrapObject(const String& objectId);
- long pushNodePathToFrontend(Node* node, bool selectInUI);
- void addNodesToSearchResult(const String& nodeIds);
-#if ENABLE(DATABASE)
- void selectDatabase(Database* database);
-#endif
-#if ENABLE(DOM_STORAGE)
- void selectDOMStorage(Storage* storage);
-#endif
+ void highlight(Node* node);
private:
InspectorBackend(InspectorController* inspectorController, InspectorClient* client);
diff --git a/WebCore/inspector/InspectorBackend.idl b/WebCore/inspector/InspectorBackend.idl
index 942819e..bae1f26 100644
--- a/WebCore/inspector/InspectorBackend.idl
+++ b/WebCore/inspector/InspectorBackend.idl
@@ -35,14 +35,14 @@ module core {
GenerateConstructor
] InspectorBackend {
void hideDOMNodeHighlight();
- [Custom] void highlightDOMNode(in long nodeId);
- void loaded();
+ [Custom] void highlightDOMNode(in Node node);
+ void loaded(in boolean enableDOMAgent);
void windowUnloading();
void attach();
void detach();
void closeWindow();
- void clearMessages(in boolean clearUI);
+ void clearMessages();
void toggleNodeSearch();
boolean isWindowVisible();
@@ -68,9 +68,6 @@ module core {
void disableResourceTracking(in boolean always);
void storeLastActivePanel(in DOMString panelName);
- [Custom] Array cookies();
- [Custom] void deleteCookie(in DOMString cookieName);
-
#if defined(ENABLE_JAVASCRIPT_DEBUGGER) && ENABLE_JAVASCRIPT_DEBUGGER
boolean debuggerEnabled();
void enableDebugger(in boolean always);
@@ -100,23 +97,9 @@ module core {
[Custom] Array profiles();
#endif
- void getChildNodes(in long callId, in long nodeId);
+ void getChildNodes(in long callId, in long elementId);
void setAttribute(in long callId, in long elementId, in DOMString name, in DOMString value);
void removeAttribute(in long callId, in long elementId, in DOMString name);
- void setTextNodeValue(in long callId, in long nodeId, in DOMString value);
-
- // Called from InjectedScript.
- [Custom] DOMObject nodeForId(in long nodeId);
- [Custom] long idForNode(in DOMObject node);
- [Custom] long wrapObject(in DOMObject object);
- [Custom] DOMObject unwrapObject(in long objectId);
- [Custom] int pushNodePathToFrontend(in DOMObject node, in boolean selectInUI);
- void addNodesToSearchResult(in DOMString nodeIds);
-#if defined(ENABLE_DATABASE) && ENABLE_DATABASE
- [Custom] void selectDatabase(in DOMObject database);
-#endif
-#if defined(ENABLE_DOM_STORAGE) && ENABLE_DOM_STORAGE
- [Custom] void selectDOMStorage(in DOMObject storage);
-#endif
+ void setTextNodeValue(in long callId, in long elementId, in DOMString value);
};
-}
+ }
diff --git a/WebCore/inspector/InspectorController.cpp b/WebCore/inspector/InspectorController.cpp
index 3035d4e..c3351e5 100644
--- a/WebCore/inspector/InspectorController.cpp
+++ b/WebCore/inspector/InspectorController.cpp
@@ -61,9 +61,7 @@
#include "ResourceRequest.h"
#include "ResourceResponse.h"
#include "ScriptCallStack.h"
-#include "ScriptFunctionCall.h"
#include "ScriptObject.h"
-#include "ScriptObjectQuarantine.h"
#include "ScriptString.h"
#include "SecurityOrigin.h"
#include "Settings.h"
@@ -127,7 +125,6 @@ InspectorController::InspectorController(Page* page, InspectorClient* client)
, m_resourceTrackingEnabled(false)
, m_resourceTrackingSettingsLoaded(false)
, m_inspectorBackend(InspectorBackend::create(this, client))
- , m_lastBoundObjectId(1)
#if ENABLE(JAVASCRIPT_DEBUGGER)
, m_debuggerEnabled(false)
, m_attachDebuggerWhenShown(false)
@@ -273,8 +270,7 @@ void InspectorController::focusNode()
ASSERT(m_frontend);
ASSERT(m_nodeToFocus);
- long id = m_domAgent->pushNodePathToFrontend(m_nodeToFocus.get());
- m_frontend->updateFocusedNode(id);
+ m_frontend->updateFocusedNode(m_nodeToFocus.get());
m_nodeToFocus = 0;
}
@@ -382,15 +378,12 @@ void InspectorController::addConsoleMessage(ScriptState* scriptState, ConsoleMes
m_previousMessage->addToConsole(m_frontend.get());
}
-void InspectorController::clearConsoleMessages(bool clearUI)
+void InspectorController::clearConsoleMessages()
{
deleteAllValues(m_consoleMessages);
m_consoleMessages.clear();
m_previousMessage = 0;
m_groupLevel = 0;
- m_idToConsoleObject.clear();
- if (clearUI && m_frontend)
- m_frontend->clearConsoleMessages();
}
void InspectorController::startGroup(MessageSource source, ScriptCallStack* callStack)
@@ -499,6 +492,14 @@ void InspectorController::handleMousePressOnNode(Node* node)
inspect(node);
}
+void InspectorController::inspectedWindowScriptObjectCleared(Frame* frame)
+{
+ if (!enabled() || !m_frontend)
+ return;
+
+ m_frontend->inspectedWindowScriptObjectCleared(frame);
+}
+
void InspectorController::windowScriptObjectAvailable()
{
if (!m_page || !enabled())
@@ -510,7 +511,7 @@ void InspectorController::windowScriptObjectAvailable()
ScriptGlobalObject::set(m_scriptState, "InspectorController", m_inspectorBackend.get());
}
-void InspectorController::scriptObjectReady()
+void InspectorController::scriptObjectReady(bool enableDOMAgent)
{
ASSERT(m_scriptState);
if (!m_scriptState)
@@ -519,10 +520,9 @@ void InspectorController::scriptObjectReady()
ScriptObject webInspectorObj;
if (!ScriptGlobalObject::get(m_scriptState, "WebInspector", webInspectorObj))
return;
- ScriptObject injectedScriptObj;
- if (!ScriptGlobalObject::get(m_scriptState, "InjectedScript", injectedScriptObj))
- return;
- setFrontendProxyObject(m_scriptState, webInspectorObj, injectedScriptObj);
+ setFrontendProxyObject(m_scriptState, webInspectorObj);
+ if (enableDOMAgent)
+ m_domAgent = new InspectorDOMAgent(m_frontend.get());
#if ENABLE(JAVASCRIPT_DEBUGGER)
Setting debuggerEnabled = setting(debuggerEnabledSettingName);
@@ -539,12 +539,9 @@ void InspectorController::scriptObjectReady()
m_client->inspectorWindowObjectCleared();
}
-void InspectorController::setFrontendProxyObject(ScriptState* scriptState, ScriptObject webInspectorObj, ScriptObject injectedScriptObj)
+void InspectorController::setFrontendProxyObject(ScriptState* scriptState, ScriptObject webInspectorObj)
{
- m_scriptState = scriptState;
- m_injectedScriptObj = injectedScriptObj;
- m_frontend.set(new InspectorFrontend(this, scriptState, webInspectorObj));
- m_domAgent = new InspectorDOMAgent(m_frontend.get());
+ m_frontend.set(new InspectorFrontend(scriptState, webInspectorObj));
}
void InspectorController::show()
@@ -598,8 +595,10 @@ void InspectorController::close()
closeWindow();
m_frontend.set(0);
- m_injectedScriptObj = ScriptObject();
- m_domAgent = 0;
+ if (m_domAgent) {
+ m_domAgent->setDocument(0);
+ m_domAgent = 0;
+ }
m_scriptState = 0;
}
@@ -650,8 +649,8 @@ void InspectorController::populateScriptObjects()
(*it)->bind(m_frontend.get());
#endif
- if (m_domAgent->setDocument(m_inspectedPage->mainFrame()->document()))
- resetInjectedScript();
+ if (m_domAgent)
+ m_domAgent->setDocument(m_inspectedPage->mainFrame()->document());
m_frontend->populateInterface();
}
@@ -707,7 +706,7 @@ void InspectorController::didCommitLoad(DocumentLoader* loader)
if (loader->frame() == m_inspectedPage->mainFrame()) {
m_client->inspectedURLChanged(loader->url().string());
- clearConsoleMessages(false);
+ clearConsoleMessages();
m_times.clear();
m_counts.clear();
@@ -726,7 +725,7 @@ void InspectorController::didCommitLoad(DocumentLoader* loader)
if (windowVisible()) {
resetScriptObjects();
- if (!loader->frameLoader()->isLoadingFromCachedPage()) {
+ if (!loader->isLoadingFromCachedPage()) {
ASSERT(m_mainResource && m_mainResource->isSameLoader(loader));
// We don't add the main resource until its load is committed. This is
// needed to keep the load for a user-entered URL from showing up in the
@@ -741,8 +740,8 @@ void InspectorController::didCommitLoad(DocumentLoader* loader)
}
}
- if (m_domAgent && m_domAgent->setDocument(m_inspectedPage->mainFrame()->document()))
- resetInjectedScript();
+ if (m_domAgent)
+ m_domAgent->setDocument(m_inspectedPage->mainFrame()->document());
}
for (Frame* frame = loader->frame(); frame; frame = frame->tree()->traverseNext(loader->frame()))
@@ -860,7 +859,7 @@ void InspectorController::identifierForInitialRequest(unsigned long identifier,
addResource(resource.get());
- if (windowVisible() && loader->frameLoader()->isLoadingFromCachedPage() && resource == m_mainResource)
+ if (windowVisible() && loader->isLoadingFromCachedPage() && resource == m_mainResource)
resource->createScriptObject(m_frontend.get());
}
@@ -1479,34 +1478,4 @@ InspectorController::SpecialPanels InspectorController::specialPanelForJSName(co
return ElementsPanel;
}
-ScriptValue InspectorController::wrapObject(const ScriptValue& quarantinedObject)
-{
- if (quarantinedObject.isObject()) {
- long id = m_lastBoundObjectId++;
- String objectId = String::format("object#%ld", id);
- m_idToConsoleObject.set(objectId, quarantinedObject);
-
- ScriptFunctionCall function(m_scriptState, m_injectedScriptObj, "createProxyObject");
- function.appendArgument(quarantinedObject);
- function.appendArgument(objectId);
- ScriptValue wrapper = function.call();
- return wrapper;
- }
- return quarantinedObject;
-}
-
-ScriptValue InspectorController::unwrapObject(const String& objectId)
-{
- HashMap<String, ScriptValue>::iterator it = m_idToConsoleObject.find(objectId);
- if (it != m_idToConsoleObject.end())
- return it->second;
- return ScriptValue();
-}
-
-void InspectorController::resetInjectedScript()
-{
- ScriptFunctionCall function(m_scriptState, m_injectedScriptObj, "reset");
- function.call();
-}
-
} // namespace WebCore
diff --git a/WebCore/inspector/InspectorController.h b/WebCore/inspector/InspectorController.h
index 6a31deb..632b0ce 100644
--- a/WebCore/inspector/InspectorController.h
+++ b/WebCore/inspector/InspectorController.h
@@ -31,9 +31,7 @@
#include "Console.h"
#include "PlatformString.h"
-#include "ScriptObject.h"
#include "ScriptState.h"
-#include "ScriptValue.h"
#include "StringHash.h"
#include "Timer.h"
@@ -62,6 +60,7 @@ class HitTestResult;
class InspectorClient;
class InspectorDOMAgent;
class JavaScriptCallFrame;
+class StorageArea;
class KURL;
class Node;
class Page;
@@ -69,9 +68,9 @@ struct ResourceRequest;
class ResourceResponse;
class ResourceError;
class ScriptCallStack;
+class ScriptObject;
class ScriptString;
class SharedBuffer;
-class StorageArea;
class ConsoleMessage;
class InspectorDatabaseResource;
@@ -188,7 +187,7 @@ public:
void addMessageToConsole(MessageSource, MessageType, MessageLevel, ScriptCallStack*);
void addMessageToConsole(MessageSource, MessageType, MessageLevel, const String& message, unsigned lineNumber, const String& sourceID);
- void clearConsoleMessages(bool clearUI);
+ void clearConsoleMessages();
const Vector<ConsoleMessage*>& consoleMessages() const { return m_consoleMessages; }
void attachWindow();
@@ -199,9 +198,10 @@ public:
void mouseDidMoveOverElement(const HitTestResult&, unsigned modifierFlags);
void handleMousePressOnNode(Node*);
+ void inspectedWindowScriptObjectCleared(Frame*);
void windowScriptObjectAvailable();
- void setFrontendProxyObject(ScriptState* state, ScriptObject webInspectorObj, ScriptObject injectedScriptObj = ScriptObject());
+ void setFrontendProxyObject(ScriptState* state, ScriptObject object);
void populateScriptObjects();
void resetScriptObjects();
@@ -279,7 +279,7 @@ private:
#endif
// Following are used from InspectorBackend and internally.
- void scriptObjectReady();
+ void scriptObjectReady(bool enableDOMAgent);
void moveWindowBy(float x, float y) const;
void setAttachedWindow(bool);
void setAttachedWindowHeight(unsigned height);
@@ -287,15 +287,6 @@ private:
void closeWindow();
InspectorDOMAgent* domAgent() { return m_domAgent.get(); }
- friend class InspectorFrontend;
- // Following are used from InspectorFrontend only. We don't want to expose them to the
- // rest of the InspectorController clients.
- // TODO: extract these into a separate interface.
- ScriptValue wrapObject(const ScriptValue& object);
- ScriptValue unwrapObject(const String& objectId);
-
- void resetInjectedScript();
-
#if ENABLE(JAVASCRIPT_DEBUGGER)
void startUserInitiatedProfilingSoon();
void toggleRecordButton(bool);
@@ -323,7 +314,6 @@ private:
InspectorClient* m_client;
RefPtr<InspectorDOMAgent> m_domAgent;
- ScriptObject m_injectedScriptObj;
Page* m_page;
RefPtr<Node> m_nodeToFocus;
RefPtr<InspectorResource> m_mainResource;
@@ -353,8 +343,6 @@ private:
OwnPtr<InspectorFrontend> m_frontend;
RefPtr<InspectorBackend> m_inspectorBackend;
#endif
- HashMap<String, ScriptValue> m_idToConsoleObject;
- long m_lastBoundObjectId;
#if ENABLE(JAVASCRIPT_DEBUGGER)
bool m_debuggerEnabled;
bool m_attachDebuggerWhenShown;
diff --git a/WebCore/inspector/InspectorDOMAgent.cpp b/WebCore/inspector/InspectorDOMAgent.cpp
index 8a081f7..f222239 100644
--- a/WebCore/inspector/InspectorDOMAgent.cpp
+++ b/WebCore/inspector/InspectorDOMAgent.cpp
@@ -31,7 +31,6 @@
#include "InspectorDOMAgent.h"
#include "AtomicString.h"
-#include "ContainerNode.h"
#include "DOMWindow.h"
#include "Document.h"
#include "Event.h"
@@ -64,11 +63,10 @@ InspectorDOMAgent::~InspectorDOMAgent()
setDocument(0);
}
-bool InspectorDOMAgent::setDocument(Document* doc)
+void InspectorDOMAgent::setDocument(Document* doc)
{
if (doc == mainFrameDocument())
- return false;
- discardBindings();
+ return;
ListHashSet<RefPtr<Document> > copy = m_documents;
for (ListHashSet<RefPtr<Document> >::iterator it = copy.begin(); it != copy.end(); ++it)
@@ -79,10 +77,11 @@ bool InspectorDOMAgent::setDocument(Document* doc)
if (doc) {
startListening(doc);
if (doc->documentElement()) {
- pushDocumentToFrontend();
+ pushDocumentElementToFrontend();
}
+ } else {
+ discardBindings();
}
- return true;
}
void InspectorDOMAgent::startListening(Document* doc)
@@ -95,7 +94,6 @@ void InspectorDOMAgent::startListening(Document* doc)
doc->addEventListener(eventNames().DOMNodeRemovedEvent, this, false);
doc->addEventListener(eventNames().DOMNodeRemovedFromDocumentEvent, this, true);
doc->addEventListener(eventNames().DOMAttrModifiedEvent, this, false);
- doc->addEventListener(eventNames().loadEvent, this, true);
m_documents.add(doc);
}
@@ -109,7 +107,6 @@ void InspectorDOMAgent::stopListening(Document* doc)
doc->removeEventListener(eventNames().DOMNodeRemovedEvent, this, false);
doc->removeEventListener(eventNames().DOMNodeRemovedFromDocumentEvent, this, true);
doc->removeEventListener(eventNames().DOMAttrModifiedEvent, this, false);
- doc->removeEventListener(eventNames().loadEvent, this, true);
m_documents.remove(doc);
}
@@ -172,25 +169,7 @@ void InspectorDOMAgent::handleEvent(Event* event, bool)
} else if (type == eventNames().DOMContentLoadedEvent) {
// Re-push document once it is loaded.
discardBindings();
- pushDocumentToFrontend();
- } else if (type == eventNames().loadEvent) {
- long frameOwnerId = idForNode(node);
- if (!frameOwnerId)
- return;
-
- if (!m_childrenRequested.contains(frameOwnerId)) {
- // No children are mapped yet -> only notify on changes of hasChildren.
- m_frontend->hasChildrenUpdated(frameOwnerId, true);
- } else {
- // Re-add frame owner element together with its new children.
- long parentId = idForNode(innerParentNode(node));
- m_frontend->childNodeRemoved(parentId, frameOwnerId);
- long prevId = idForNode(innerPreviousSibling(node));
- ScriptObject value = buildObjectForNode(node, 0);
- m_frontend->childNodeInserted(parentId, prevId, value);
- // Invalidate children requested flag for the element.
- m_childrenRequested.remove(m_childrenRequested.find(frameOwnerId));
- }
+ pushDocumentElementToFrontend();
}
}
@@ -220,24 +199,25 @@ void InspectorDOMAgent::unbind(Node* node)
}
}
-void InspectorDOMAgent::pushDocumentToFrontend()
+void InspectorDOMAgent::pushDocumentElementToFrontend()
{
- Document* document = mainFrameDocument();
- if (!m_nodeToId.contains(document))
- m_frontend->setDocument(buildObjectForNode(document, 2));
+ Element* docElem = mainFrameDocument()->documentElement();
+ if (!m_nodeToId.contains(docElem))
+ m_frontend->setDocumentElement(buildObjectForNode(docElem, 0));
}
-void InspectorDOMAgent::pushChildNodesToFrontend(long nodeId)
+void InspectorDOMAgent::pushChildNodesToFrontend(long elementId)
{
- Node* node = nodeForId(nodeId);
- if (!node || (node->nodeType() != Node::ELEMENT_NODE && node->nodeType() != Node::DOCUMENT_NODE))
+ Node* node = nodeForId(elementId);
+ if (!node || (node->nodeType() != Node::ELEMENT_NODE))
return;
- if (m_childrenRequested.contains(nodeId))
+ if (m_childrenRequested.contains(elementId))
return;
- ScriptArray children = buildArrayForContainerChildren(node, 1);
- m_childrenRequested.add(nodeId);
- m_frontend->setChildNodes(nodeId, children);
+ Element* element = static_cast<Element*>(node);
+ ScriptArray children = buildArrayForElementChildren(element, 1);
+ m_childrenRequested.add(elementId);
+ m_frontend->setChildNodes(elementId, children);
}
void InspectorDOMAgent::discardBindings()
@@ -249,9 +229,6 @@ void InspectorDOMAgent::discardBindings()
Node* InspectorDOMAgent::nodeForId(long id)
{
- if (!id)
- return 0;
-
HashMap<long, Node*>::iterator it = m_idToNode.find(id);
if (it != m_idToNode.end())
return it->second;
@@ -268,9 +245,9 @@ long InspectorDOMAgent::idForNode(Node* node)
return 0;
}
-void InspectorDOMAgent::getChildNodes(long callId, long nodeId)
+void InspectorDOMAgent::getChildNodes(long callId, long elementId)
{
- pushChildNodesToFrontend(nodeId);
+ pushChildNodesToFrontend(elementId);
m_frontend->didGetChildNodes(callId);
}
@@ -279,25 +256,25 @@ long InspectorDOMAgent::pushNodePathToFrontend(Node* nodeToPush)
ASSERT(nodeToPush); // Invalid input
// If we are sending information to the client that is currently being created. Send root node first.
- pushDocumentToFrontend();
+ pushDocumentElementToFrontend();
// Return id in case the node is known.
long result = idForNode(nodeToPush);
if (result)
return result;
- Node* node = innerParentNode(nodeToPush);
- ASSERT(node); // Node is detached or is a document itself
+ Element* element = innerParentElement(nodeToPush);
+ ASSERT(element); // Node is detached or is a document itself
- Vector<Node*> path;
- while (node && !idForNode(node)) {
- path.append(node);
- node = innerParentNode(node);
+ Vector<Element*> path;
+ while (element && !idForNode(element)) {
+ path.append(element);
+ element = innerParentElement(element);
}
// element is known to the client
- ASSERT(node);
- path.append(node);
+ ASSERT(element);
+ path.append(element);
for (int i = path.size() - 1; i >= 0; --i) {
long nodeId = idForNode(path.at(i));
ASSERT(nodeId);
@@ -332,9 +309,9 @@ void InspectorDOMAgent::removeAttribute(long callId, long elementId, const Strin
}
}
-void InspectorDOMAgent::setTextNodeValue(long callId, long nodeId, const String& value)
+void InspectorDOMAgent::setTextNodeValue(long callId, long elementId, const String& value)
{
- Node* node = nodeForId(nodeId);
+ Node* node = nodeForId(elementId);
if (node && (node->nodeType() == Node::TEXT_NODE)) {
Text* text_node = static_cast<Text*>(node);
ExceptionCode ec = 0;
@@ -359,9 +336,9 @@ ScriptObject InspectorDOMAgent::buildObjectForNode(Node* node, int depth)
nodeValue = node->nodeValue();
break;
case Node::ATTRIBUTE_NODE:
+ case Node::DOCUMENT_NODE:
case Node::DOCUMENT_FRAGMENT_NODE:
break;
- case Node::DOCUMENT_NODE:
case Node::ELEMENT_NODE:
default:
nodeName = node->nodeName();
@@ -376,11 +353,10 @@ ScriptObject InspectorDOMAgent::buildObjectForNode(Node* node, int depth)
if (node->nodeType() == Node::ELEMENT_NODE) {
Element* element = static_cast<Element*>(node);
value.set("attributes", buildArrayForElementAttributes(element));
- }
- if (node->nodeType() == Node::ELEMENT_NODE || node->nodeType() == Node::DOCUMENT_NODE) {
- int nodeCount = innerChildNodeCount(node);
+ int nodeCount = innerChildNodeCount(element);
value.set("childNodeCount", nodeCount);
- ScriptArray children = buildArrayForContainerChildren(node, depth);
+
+ ScriptArray children = buildArrayForElementChildren(element, depth);
if (children.length() > 0)
value.set("children", children);
}
@@ -405,14 +381,14 @@ ScriptArray InspectorDOMAgent::buildArrayForElementAttributes(Element* element)
return attributesValue;
}
-ScriptArray InspectorDOMAgent::buildArrayForContainerChildren(Node* container, int depth)
+ScriptArray InspectorDOMAgent::buildArrayForElementChildren(Element* element, int depth)
{
ScriptArray children = m_frontend->newScriptArray();
if (depth == 0) {
int index = 0;
// Special case the_only text child.
- if (innerChildNodeCount(container) == 1) {
- Node *child = innerFirstChild(container);
+ if (innerChildNodeCount(element) == 1) {
+ Node *child = innerFirstChild(element);
if (child->nodeType() == Node::TEXT_NODE)
children.set(index++, buildObjectForNode(child, 0));
}
@@ -422,7 +398,7 @@ ScriptArray InspectorDOMAgent::buildArrayForContainerChildren(Node* container, i
}
int index = 0;
- for (Node *child = innerFirstChild(container); child; child = innerNextSibling(child))
+ for (Node *child = innerFirstChild(element); child; child = innerNextSibling(child))
children.set(index++, buildObjectForNode(child, depth));
return children;
}
@@ -470,12 +446,12 @@ int InspectorDOMAgent::innerChildNodeCount(Node* node)
return count;
}
-Node* InspectorDOMAgent::innerParentNode(Node* node)
+Element* InspectorDOMAgent::innerParentElement(Node* node)
{
- Node* parent = node->parentNode();
- if (parent && parent->nodeType() == Node::DOCUMENT_NODE)
- return static_cast<Document*>(parent)->ownerElement();
- return parent;
+ Element* element = node->parentElement();
+ if (!element)
+ return node->ownerDocument()->ownerElement();
+ return element;
}
bool InspectorDOMAgent::isWhitespace(Node* node)
diff --git a/WebCore/inspector/InspectorDOMAgent.h b/WebCore/inspector/InspectorDOMAgent.h
index 67b2be8..28c3a22 100644
--- a/WebCore/inspector/InspectorDOMAgent.h
+++ b/WebCore/inspector/InspectorDOMAgent.h
@@ -42,7 +42,6 @@
#include <wtf/RefPtr.h>
namespace WebCore {
- class ContainerNode;
class Element;
class Event;
class Document;
@@ -57,13 +56,13 @@ namespace WebCore {
~InspectorDOMAgent();
// Methods called from the frontend.
- void getChildNodes(long callId, long nodeId);
+ void getChildNodes(long callId, long elementId);
void setAttribute(long callId, long elementId, const String& name, const String& value);
void removeAttribute(long callId, long elementId, const String& name);
- void setTextNodeValue(long callId, long nodeId, const String& value);
+ void setTextNodeValue(long callId, long elementId, const String& value);
// Methods called from the InspectorController.
- bool setDocument(Document* document);
+ void setDocument(Document* document);
Node* nodeForId(long nodeId);
long idForNode(Node* node);
@@ -78,12 +77,12 @@ namespace WebCore {
long bind(Node* node);
void unbind(Node* node);
- void pushDocumentToFrontend();
- void pushChildNodesToFrontend(long nodeId);
+ void pushDocumentElementToFrontend();
+ void pushChildNodesToFrontend(long elementId);
ScriptObject buildObjectForNode(Node* node, int depth);
- ScriptArray buildArrayForElementAttributes(Element* element);
- ScriptArray buildArrayForContainerChildren(Node* container, int depth);
+ ScriptArray buildArrayForElementAttributes(Element* elemen);
+ ScriptArray buildArrayForElementChildren(Element* element, int depth);
// We represent embedded doms as a part of the same hierarchy. Hence we treat children of frame owners differently.
// We also skip whitespace text nodes conditionally. Following methods encapsulate these specifics.
@@ -91,7 +90,7 @@ namespace WebCore {
Node* innerNextSibling(Node* node);
Node* innerPreviousSibling(Node* node);
int innerChildNodeCount(Node* node);
- Node* innerParentNode(Node* node);
+ Element* innerParentElement(Node* node);
bool isWhitespace(Node* node);
Document* mainFrameDocument();
diff --git a/WebCore/inspector/InspectorDOMStorageResource.cpp b/WebCore/inspector/InspectorDOMStorageResource.cpp
index 1e56742..03db649 100644
--- a/WebCore/inspector/InspectorDOMStorageResource.cpp
+++ b/WebCore/inspector/InspectorDOMStorageResource.cpp
@@ -64,7 +64,7 @@ void InspectorDOMStorageResource::bind(InspectorFrontend* frontend)
ScriptObject jsonObject = frontend->newScriptObject();
ScriptObject domStorage;
- if (!getQuarantinedScriptObject(m_domStorage.get(), domStorage))
+ if (!getQuarantinedScriptObject(m_frame.get(), m_domStorage.get(), domStorage))
return;
jsonObject.set("domStorage", domStorage);
jsonObject.set("host", m_frame->document()->securityOrigin()->host());
diff --git a/WebCore/inspector/InspectorFrontend.cpp b/WebCore/inspector/InspectorFrontend.cpp
index f745ae3..af65fb4 100644
--- a/WebCore/inspector/InspectorFrontend.cpp
+++ b/WebCore/inspector/InspectorFrontend.cpp
@@ -32,7 +32,7 @@
#include "ConsoleMessage.h"
#include "Frame.h"
-#include "InspectorController.h"
+#include "InspectorController.h" // TODO(pfeldman): Extract SpecialPanels to remove include.
#include "Node.h"
#include "ScriptFunctionCall.h"
#include "ScriptObject.h"
@@ -49,9 +49,8 @@
namespace WebCore {
-InspectorFrontend::InspectorFrontend(InspectorController* inspectorController, ScriptState* scriptState, ScriptObject webInspector)
- : m_inspectorController(inspectorController)
- , m_scriptState(scriptState)
+InspectorFrontend::InspectorFrontend(ScriptState* scriptState, ScriptObject webInspector)
+ : m_scriptState(scriptState)
, m_webInspector(webInspector)
{
}
@@ -80,17 +79,12 @@ void InspectorFrontend::addMessageToConsole(const ScriptObject& messageObj, cons
function->appendArgument(frames[i]);
} else if (!wrappedArguments.isEmpty()) {
for (unsigned i = 0; i < wrappedArguments.size(); ++i)
- function->appendArgument(m_inspectorController->wrapObject(wrappedArguments[i]));
+ function->appendArgument(wrappedArguments[i]);
} else
function->appendArgument(message);
function->call();
}
-void InspectorFrontend::clearConsoleMessages()
-{
- callSimpleFunction("clearConsoleMessages");
-}
-
bool InspectorFrontend::addResource(long long identifier, const ScriptObject& resourceObj)
{
OwnPtr<ScriptFunctionCall> function(newFunctionCall("addResource"));
@@ -118,10 +112,14 @@ void InspectorFrontend::removeResource(long long identifier)
function->call();
}
-void InspectorFrontend::updateFocusedNode(long long nodeId)
+void InspectorFrontend::updateFocusedNode(Node* node)
{
+ ScriptObject quarantinedNode;
+ if (!getQuarantinedScriptObject(node, quarantinedNode))
+ return;
+
OwnPtr<ScriptFunctionCall> function(newFunctionCall("updateFocusedNode"));
- function->appendArgument(nodeId);
+ function->appendArgument(quarantinedNode);
function->call();
}
@@ -132,6 +130,17 @@ void InspectorFrontend::setAttachedWindow(bool attached)
function->call();
}
+void InspectorFrontend::inspectedWindowScriptObjectCleared(Frame* frame)
+{
+ ScriptObject domWindow;
+ if (!getQuarantinedScriptObject(frame->domWindow(), domWindow))
+ return;
+
+ OwnPtr<ScriptFunctionCall> function(newFunctionCall("inspectedWindowCleared"));
+ function->appendArgument(domWindow);
+ function->call();
+}
+
void InspectorFrontend::showPanel(int panel)
{
const char* showFunctionName;
@@ -277,9 +286,9 @@ bool InspectorFrontend::addDOMStorage(const ScriptObject& domStorageObj)
}
#endif
-void InspectorFrontend::setDocument(const ScriptObject& root)
+void InspectorFrontend::setDocumentElement(const ScriptObject& root)
{
- OwnPtr<ScriptFunctionCall> function(newFunctionCall("setDocument"));
+ OwnPtr<ScriptFunctionCall> function(newFunctionCall("setDocumentElement"));
function->appendArgument(root);
function->call();
}
@@ -340,37 +349,6 @@ void InspectorFrontend::didApplyDomChange(int callId, bool success)
function->call();
}
-#if ENABLE(DATABASE)
-void InspectorFrontend::selectDatabase(Database* database)
-{
- OwnPtr<ScriptFunctionCall> function(newFunctionCall("selectDatabase"));
- ScriptObject quarantinedObject;
- if (!getQuarantinedScriptObject(database, quarantinedObject))
- return;
- function->appendArgument(quarantinedObject);
- function->call();
-}
-#endif
-
-#if ENABLE(DOM_STORAGE)
-void InspectorFrontend::selectDOMStorage(Storage* storage)
-{
- OwnPtr<ScriptFunctionCall> function(newFunctionCall("selectDOMStorage"));
- ScriptObject quarantinedObject;
- if (!getQuarantinedScriptObject(storage, quarantinedObject))
- return;
- function->appendArgument(quarantinedObject);
- function->call();
-}
-#endif
-
-void InspectorFrontend::addNodesToSearchResult(const String& nodeIds)
-{
- OwnPtr<ScriptFunctionCall> function(newFunctionCall("addNodesToSearchResult"));
- function->appendArgument(nodeIds);
- function->call();
-}
-
PassOwnPtr<ScriptFunctionCall> InspectorFrontend::newFunctionCall(const String& functionName)
{
ScriptFunctionCall* function = new ScriptFunctionCall(m_scriptState, m_webInspector, "dispatch");
diff --git a/WebCore/inspector/InspectorFrontend.h b/WebCore/inspector/InspectorFrontend.h
index 600f50a..7a48b62 100644
--- a/WebCore/inspector/InspectorFrontend.h
+++ b/WebCore/inspector/InspectorFrontend.h
@@ -45,32 +45,28 @@ namespace JSC {
namespace WebCore {
class ConsoleMessage;
- class Database;
- class Frame;
- class InspectorController;
class InspectorResource;
class Node;
class ScriptFunctionCall;
class ScriptString;
- class Storage;
class InspectorFrontend {
public:
- InspectorFrontend(InspectorController* inspectorController, ScriptState*, ScriptObject webInspector);
+ InspectorFrontend(ScriptState*, ScriptObject webInspector);
~InspectorFrontend();
ScriptArray newScriptArray();
ScriptObject newScriptObject();
void addMessageToConsole(const ScriptObject& messageObj, const Vector<ScriptString>& frames, const Vector<ScriptValue> wrappedArguments, const String& message);
- void clearConsoleMessages();
-
+
bool addResource(long long identifier, const ScriptObject& resourceObj);
bool updateResource(long long identifier, const ScriptObject& resourceObj);
void removeResource(long long identifier);
- void updateFocusedNode(long long nodeId);
+ void updateFocusedNode(Node* node);
void setAttachedWindow(bool attached);
+ void inspectedWindowScriptObjectCleared(Frame* frame);
void showPanel(int panel);
void populateInterface();
void reset();
@@ -94,15 +90,13 @@ namespace WebCore {
#if ENABLE(DATABASE)
bool addDatabase(const ScriptObject& dbObj);
- void selectDatabase(Database* database);
#endif
#if ENABLE(DOM_STORAGE)
bool addDOMStorage(const ScriptObject& domStorageObj);
- void selectDOMStorage(Storage* storage);
#endif
- void setDocument(const ScriptObject& root);
+ void setDocumentElement(const ScriptObject& root);
void setChildNodes(int parentId, const ScriptArray& nodes);
void hasChildrenUpdated(int id, bool newValue);
void childNodeInserted(int parentId, int prevId, const ScriptObject& node);
@@ -111,12 +105,9 @@ namespace WebCore {
void didGetChildNodes(int callId);
void didApplyDomChange(int callId, bool success);
- void addNodesToSearchResult(const String& nodeIds);
-
private:
PassOwnPtr<ScriptFunctionCall> newFunctionCall(const String& functionName);
void callSimpleFunction(const String& functionName);
- InspectorController* m_inspectorController;
ScriptState* m_scriptState;
ScriptObject m_webInspector;
};
diff --git a/WebCore/inspector/JavaScriptDebugServer.cpp b/WebCore/inspector/JavaScriptDebugServer.cpp
index 008ddd3..10eff26 100644
--- a/WebCore/inspector/JavaScriptDebugServer.cpp
+++ b/WebCore/inspector/JavaScriptDebugServer.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 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
@@ -45,8 +45,10 @@
#include "ScrollView.h"
#include "Widget.h"
#include "ScriptController.h"
+#include <runtime/CollectorHeapIterator.h>
#include <debugger/DebuggerCallFrame.h>
#include <runtime/JSLock.h>
+#include <parser/Parser.h>
#include <wtf/MainThread.h>
#include <wtf/StdLibExtras.h>
#include <wtf/UnusedParam.h>
@@ -297,6 +299,8 @@ void JavaScriptDebugServer::sourceParsed(ExecState* exec, const SourceCode& sour
m_callingListeners = true;
+ ASSERT(hasListeners());
+
bool isError = errorLine != -1;
if (hasGlobalListeners()) {
@@ -551,7 +555,60 @@ void JavaScriptDebugServer::recompileAllJSFunctionsSoon()
void JavaScriptDebugServer::recompileAllJSFunctions(Timer<JavaScriptDebugServer>*)
{
JSLock lock(SilenceAssertionsOnly);
- Debugger::recompileAllJSFunctions(JSDOMWindow::commonJSGlobalData());
+ JSGlobalData* globalData = JSDOMWindow::commonJSGlobalData();
+
+ // If JavaScript is running, it's not safe to recompile, since we'll end
+ // up throwing away code that is live on the stack.
+ ASSERT(!globalData->dynamicGlobalObject);
+ if (globalData->dynamicGlobalObject)
+ return;
+
+ Vector<ProtectedPtr<JSFunction> > functions;
+ Heap::iterator heapEnd = globalData->heap.primaryHeapEnd();
+ for (Heap::iterator it = globalData->heap.primaryHeapBegin(); it != heapEnd; ++it) {
+ if ((*it)->isObject(&JSFunction::info)) {
+ JSFunction* function = static_cast<JSFunction*>(*it);
+ if (!function->isHostFunction())
+ functions.append(function);
+ }
+ }
+
+ typedef HashMap<RefPtr<FunctionBodyNode>, RefPtr<FunctionBodyNode> > FunctionBodyMap;
+ typedef HashMap<SourceProvider*, ExecState*> SourceProviderMap;
+
+ FunctionBodyMap functionBodies;
+ SourceProviderMap sourceProviders;
+
+ size_t size = functions.size();
+ for (size_t i = 0; i < size; ++i) {
+ JSFunction* function = functions[i];
+
+ FunctionBodyNode* oldBody = function->body();
+ pair<FunctionBodyMap::iterator, bool> result = functionBodies.add(oldBody, 0);
+ if (!result.second) {
+ function->setBody(result.first->second.get());
+ continue;
+ }
+
+ ExecState* exec = function->scope().globalObject()->JSGlobalObject::globalExec();
+ const SourceCode& sourceCode = oldBody->source();
+
+ RefPtr<FunctionBodyNode> newBody = globalData->parser->parse<FunctionBodyNode>(exec, 0, sourceCode);
+ ASSERT(newBody);
+ newBody->finishParsing(oldBody->copyParameters(), oldBody->parameterCount());
+
+ result.first->second = newBody;
+ function->setBody(newBody.release());
+
+ if (hasListeners() && function->scope().globalObject()->debugger() == this)
+ sourceProviders.add(sourceCode.provider(), exec);
+ }
+
+ // Call sourceParsed() after reparsing all functions because it will execute
+ // JavaScript in the inspector.
+ SourceProviderMap::const_iterator end = sourceProviders.end();
+ for (SourceProviderMap::const_iterator iter = sourceProviders.begin(); iter != end; ++iter)
+ sourceParsed((*iter).second, SourceCode((*iter).first), -1, 0);
}
void JavaScriptDebugServer::didAddListener(Page* page)
diff --git a/WebCore/inspector/front-end/ConsoleView.js b/WebCore/inspector/front-end/ConsoleView.js
index d4693b7..6851eea 100644
--- a/WebCore/inspector/front-end/ConsoleView.js
+++ b/WebCore/inspector/front-end/ConsoleView.js
@@ -175,7 +175,7 @@ WebInspector.ConsoleView.prototype = {
clearMessages: function(clearInspectorController)
{
if (clearInspectorController)
- InspectorController.clearMessages(false);
+ InspectorController.clearMessages();
if (WebInspector.panels.resources)
WebInspector.panels.resources.clearMessages();
@@ -212,42 +212,10 @@ WebInspector.ConsoleView.prototype = {
return;
var reportCompletions = this._reportCompletions.bind(this, bestMatchOnly, completionsReadyCallback, dotNotation, bracketNotation, prefix);
- // Collect comma separated object properties for the completion.
-
- if (!expressionString) {
- if (WebInspector.panels.scripts && WebInspector.panels.scripts.paused) {
- // Evaluate into properties in scope of the selected call frame.
- reportCompletions(WebInspector.panels.scripts.variablesInSelectedCallFrame());
- return;
- } else {
- expressionString = "this";
- }
- }
-
- function parsingCallback(result, isException)
- {
- if (!isException)
- result = JSON.parse(result);
- reportCompletions(result, isException);
- }
-
- this._evalInInspectedWindow(
- "(function() {" +
- "var props = {};" +
- "for (var prop in (" + expressionString + ")) props[prop] = true;" +
- ((!dotNotation && !bracketNotation) ?
- "for (var prop in window._inspectorCommandLineAPI)" +
- "if (prop.charAt(0) !== '_') props[prop] = true;"
- : "") +
- "return JSON.stringify(props);" +
- "})()",
- parsingCallback);
+ this._evalInInspectedWindow(expressionString, reportCompletions);
},
- _reportCompletions: function(bestMatchOnly, completionsReadyCallback, dotNotation, bracketNotation, prefix, result, isException) {
- if (isException)
- return;
-
+ _reportCompletions: function(bestMatchOnly, completionsReadyCallback, dotNotation, bracketNotation, prefix, result) {
if (bracketNotation) {
if (prefix.length && prefix[0] === "'")
var quoteUsed = "'";
@@ -256,7 +224,16 @@ WebInspector.ConsoleView.prototype = {
}
var results = [];
- var properties = Object.sortedProperties(result);
+ var properties = Object.properties(result);
+ if (!dotNotation && !bracketNotation && result._inspectorCommandLineAPI) {
+ var commandLineAPI = Object.properties(result._inspectorCommandLineAPI);
+ for (var i = 0; i < commandLineAPI.length; ++i) {
+ var property = commandLineAPI[i];
+ if (property.charAt(0) !== "_")
+ properties.push(property);
+ }
+ }
+ properties.sort();
for (var i = 0; i < properties.length; ++i) {
var property = properties[i];
@@ -311,7 +288,7 @@ WebInspector.ConsoleView.prototype = {
if (!link || !link.representedNode)
return;
- WebInspector.updateFocusedNode(link.representedNode.id);
+ WebInspector.updateFocusedNode(link.representedNode);
event.stopPropagation();
event.preventDefault();
},
@@ -336,6 +313,74 @@ WebInspector.ConsoleView.prototype = {
this.doEvalInWindow(expression, callback);
},
+ _ensureCommandLineAPIInstalled: function(inspectedWindow)
+ {
+ if (!inspectedWindow._inspectorCommandLineAPI) {
+ inspectedWindow.eval("window._inspectorCommandLineAPI = { \
+ $: function() { return document.getElementById.apply(document, arguments) }, \
+ $$: function() { return document.querySelectorAll.apply(document, arguments) }, \
+ $x: function(xpath, context) { \
+ var nodes = []; \
+ try { \
+ var doc = context || document; \
+ var results = doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null); \
+ var node; \
+ while (node = results.iterateNext()) nodes.push(node); \
+ } catch (e) {} \
+ return nodes; \
+ }, \
+ dir: function() { return console.dir.apply(console, arguments) }, \
+ dirxml: function() { return console.dirxml.apply(console, arguments) }, \
+ keys: function(o) { var a = []; for (var k in o) a.push(k); return a; }, \
+ values: function(o) { var a = []; for (var k in o) a.push(o[k]); return a; }, \
+ profile: function() { return console.profile.apply(console, arguments) }, \
+ profileEnd: function() { return console.profileEnd.apply(console, arguments) }, \
+ _inspectedNodes: [], \
+ get $0() { return _inspectorCommandLineAPI._inspectedNodes[0] }, \
+ get $1() { return _inspectorCommandLineAPI._inspectedNodes[1] }, \
+ get $2() { return _inspectorCommandLineAPI._inspectedNodes[2] }, \
+ get $3() { return _inspectorCommandLineAPI._inspectedNodes[3] }, \
+ get $4() { return _inspectorCommandLineAPI._inspectedNodes[4] } \
+ };");
+
+ inspectedWindow._inspectorCommandLineAPI.clear = InspectorController.wrapCallback(this.clearMessages.bind(this));
+ inspectedWindow._inspectorCommandLineAPI.inspect = InspectorController.wrapCallback(inspectObject.bind(this));
+
+ function inspectObject(o)
+ {
+ if (arguments.length === 0)
+ return;
+
+ InspectorController.inspectedWindow().console.log(o);
+ if (Object.type(o, InspectorController.inspectedWindow()) === "node") {
+ WebInspector.showElementsPanel();
+ WebInspector.panels.elements.treeOutline.revealAndSelectNode(o);
+ } else {
+ switch (Object.describe(o)) {
+ case "Database":
+ WebInspector.showDatabasesPanel();
+ WebInspector.panels.databases.selectDatabase(o);
+ break;
+ case "Storage":
+ WebInspector.showDatabasesPanel();
+ WebInspector.panels.databases.selectDOMStorage(o);
+ break;
+ }
+ }
+ }
+ }
+ },
+
+ addInspectedNode: function(node)
+ {
+ var inspectedWindow = InspectorController.inspectedWindow();
+ this._ensureCommandLineAPIInstalled(inspectedWindow);
+ var inspectedNodes = inspectedWindow._inspectorCommandLineAPI._inspectedNodes;
+ inspectedNodes.unshift(node);
+ if (inspectedNodes.length >= 5)
+ inspectedNodes.pop();
+ },
+
doEvalInWindow: function(expression, callback)
{
if (!expression) {
@@ -343,15 +388,22 @@ WebInspector.ConsoleView.prototype = {
expression = "this";
}
+ // Surround the expression in with statements to inject our command line API so that
+ // the window object properties still take more precedent than our API functions.
+ expression = "with (window._inspectorCommandLineAPI) { with (window) { " + expression + " } }";
+
var self = this;
- function evalCallback(result)
+ function delayedEvaluation()
{
- if (result.exception)
- callback(result.exception, true);
- else
- callback(result.value, false);
- };
- InspectorController.evaluate(expression, evalCallback);
+ var inspectedWindow = InspectorController.inspectedWindow();
+ self._ensureCommandLineAPIInstalled(inspectedWindow);
+ try {
+ callback(inspectedWindow.eval(expression));
+ } catch (e) {
+ callback(e, true);
+ }
+ }
+ setTimeout(delayedEvaluation, 0);
},
_enterKeyPressed: function(event)
@@ -384,10 +436,13 @@ WebInspector.ConsoleView.prototype = {
_format: function(output, forceObjectFormat)
{
+ var inspectedWindow = InspectorController.inspectedWindow();
if (forceObjectFormat)
var type = "object";
+ else if (output instanceof inspectedWindow.NodeList)
+ var type = "array";
else
- var type = Object.proxyType(output);
+ var type = Object.type(output, inspectedWindow);
// We don't perform any special formatting on these types, so we just
// pass them through the simple _formatvalue function.
@@ -396,6 +451,8 @@ WebInspector.ConsoleView.prototype = {
"null": 1,
"boolean": 1,
"number": 1,
+ "date": 1,
+ "function": 1,
};
var formatter;
@@ -422,16 +479,6 @@ WebInspector.ConsoleView.prototype = {
elem.appendChild(document.createTextNode(val));
},
- _formatfunction: function(func, elem)
- {
- elem.appendChild(document.createTextNode(func.description));
- },
-
- _formatdate: function(date, elem)
- {
- elem.appendChild(document.createTextNode(date.description));
- },
-
_formatstring: function(str, elem)
{
elem.appendChild(document.createTextNode("\"" + str + "\""));
@@ -439,7 +486,7 @@ WebInspector.ConsoleView.prototype = {
_formatregexp: function(re, elem)
{
- var formatted = String(re.description).replace(/([\\\/])/g, "\\$1").replace(/\\(\/[gim]*)$/, "$1").substring(1);
+ var formatted = String(re).replace(/([\\\/])/g, "\\$1").replace(/\\(\/[gim]*)$/, "$1").substring(1);
elem.appendChild(document.createTextNode(formatted));
},
@@ -454,10 +501,10 @@ WebInspector.ConsoleView.prototype = {
elem.appendChild(document.createTextNode("]"));
},
- _formatnode: function(object, elem)
+ _formatnode: function(node, elem)
{
var treeOutline = new WebInspector.ElementsTreeOutline();
- treeOutline.rootDOMNode = WebInspector.domAgent.nodeForId(object.nodeId);
+ treeOutline.rootDOMNode = node;
treeOutline.element.addStyleClass("outline-disclosure");
if (!treeOutline.children[0].hasChildren)
treeOutline.element.addStyleClass("single-node");
@@ -466,7 +513,7 @@ WebInspector.ConsoleView.prototype = {
_formatobject: function(obj, elem)
{
- elem.appendChild(new WebInspector.ObjectPropertiesSection(obj, obj.description, null, true).element);
+ elem.appendChild(new WebInspector.ObjectPropertiesSection(new WebInspector.ObjectProxy(obj), Object.describe(obj, true), null, null, true).element);
},
_formaterror: function(obj, elem)
diff --git a/WebCore/inspector/front-end/CookieItemsView.js b/WebCore/inspector/front-end/CookieItemsView.js
deleted file mode 100644
index 2d69e7d..0000000
--- a/WebCore/inspector/front-end/CookieItemsView.js
+++ /dev/null
@@ -1,329 +0,0 @@
-/*
- * Copyright (C) 2009 Apple Inc. All rights reserved.
- * Copyright (C) 2009 Joseph Pecoraro
- *
- * 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. ("Apple") 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 "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 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.CookieItemsView = function()
-{
- WebInspector.View.call(this);
-
- // Some Platforms have not yet implemented access to raw cookies
- // Those platforms will return undefined instead of an Array
- // For these platforms we:
- // - resort to document.cookie
- // - do not show the delete cookie status bar button
- this._useFallback = typeof InspectorController.cookies() === "undefined";
-
- this.element.addStyleClass("storage-view");
- this.element.addStyleClass("table");
-
- this.deleteButton = new WebInspector.StatusBarButton(WebInspector.UIString("Delete"), "delete-storage-status-bar-item");
- this.deleteButton.visible = false;
- this.deleteButton.addEventListener("click", this._deleteButtonClicked.bind(this), false);
-
- this.refreshButton = new WebInspector.StatusBarButton(WebInspector.UIString("Refresh"), "refresh-storage-status-bar-item");
- this.refreshButton.addEventListener("click", this._refreshButtonClicked.bind(this), false);
-}
-
-WebInspector.CookieItemsView.prototype = {
- get statusBarItems()
- {
- if (this._useFallback)
- return [this.refreshButton.element];
- else
- return [this.refreshButton.element, this.deleteButton.element];
- },
-
- show: function(parentElement)
- {
- WebInspector.View.prototype.show.call(this, parentElement);
- this.update();
- },
-
- hide: function()
- {
- WebInspector.View.prototype.hide.call(this);
- this.deleteButton.visible = false;
- },
-
- update: function()
- {
- if (this._useFallback) {
- this.fallbackUpdate();
- return;
- }
-
- this.element.removeChildren();
- var dataGrid = this.dataGridForCookies();
- if (dataGrid) {
- this._dataGrid = dataGrid;
- this.element.appendChild(dataGrid.element);
- this.deleteButton.visible = true;
- } else {
- var emptyMsgElement = document.createElement("div");
- emptyMsgElement.className = "storage-table-empty";
- emptyMsgElement.textContent = WebInspector.UIString("This site has no cookies.");
- this.element.appendChild(emptyMsgElement);
- this._dataGrid = null;
- this.deleteButton.visible = false;
- }
- },
-
- buildCookies: function()
- {
- var rawCookies = InspectorController.cookies();
- var cookies = [];
- for (var i = 0; i < rawCookies.length; ++i) {
- var cookie = rawCookies[i];
- cookie.expires = new Date(cookie.expires);
- cookies.push(cookie);
- }
-
- return cookies;
- },
-
- dataGridForCookies: function()
- {
- var cookies = this.buildCookies();
- if (!cookies.length)
- return null;
-
- var columns = { 0: {}, 1: {}, 2: {}, 3: {}, 4: {}, 5: {}, 6: {}, 7: {} };
- columns[0].title = WebInspector.UIString("Name");
- columns[0].width = columns[0].title.length;
- columns[1].title = WebInspector.UIString("Value");
- columns[1].width = columns[1].title.length;
- columns[2].title = WebInspector.UIString("Domain");
- columns[2].width = columns[2].title.length;
- columns[3].title = WebInspector.UIString("Path");
- columns[3].width = columns[3].title.length;
- columns[4].title = WebInspector.UIString("Expires");
- columns[4].width = columns[4].title.length;
- columns[5].title = WebInspector.UIString("Size");
- columns[5].width = columns[5].title.length;
- columns[5].aligned = "right";
- columns[6].title = WebInspector.UIString("HTTP");
- columns[6].width = columns[6].title.length;
- columns[6].aligned = "centered";
- columns[7].title = WebInspector.UIString("Secure");
- columns[7].width = columns[7].title.length;
- columns[7].aligned = "centered";
-
- function updateDataAndColumn(index, value) {
- data[index] = value;
- if (value.length > columns[index].width)
- columns[index].width = value.length;
- }
-
- var data;
- var nodes = [];
- for (var i = 0; i < cookies.length; ++i) {
- var cookie = cookies[i];
- data = {};
-
- updateDataAndColumn(0, cookie.name);
- updateDataAndColumn(1, cookie.value);
- updateDataAndColumn(2, cookie.domain);
- updateDataAndColumn(3, cookie.path);
- updateDataAndColumn(4, (cookie.session ? "Session" : cookie.expires.toGMTString()));
- updateDataAndColumn(5, Number.bytesToString(cookie.size, WebInspector.UIString));
- updateDataAndColumn(6, (cookie.httpOnly ? "\u2713" : "")); // Checkmark
- updateDataAndColumn(7, (cookie.secure ? "\u2713" : "")); // Checkmark
-
- var node = new WebInspector.DataGridNode(data, false);
- node.cookie = cookie;
- node.selectable = true;
- nodes.push(node);
- }
-
- var totalColumnWidths = 0;
- for (var columnIdentifier in columns)
- totalColumnWidths += columns[columnIdentifier].width;
-
- // Enforce the Value column (the 2nd column) to be a max of 33%
- // tweaking the raw total width because may massively outshadow the others
- var valueColumnWidth = columns[1].width;
- if (valueColumnWidth / totalColumnWidths > 0.33) {
- totalColumnWidths -= valueColumnWidth;
- totalColumnWidths *= 1.33;
- columns[1].width = totalColumnWidths * 0.33;
- }
-
- // Calculate the percentage width for the columns.
- const minimumPrecent = 6;
- var recoupPercent = 0;
- for (var columnIdentifier in columns) {
- var width = columns[columnIdentifier].width;
- width = Math.round((width / totalColumnWidths) * 100);
- if (width < minimumPrecent) {
- recoupPercent += (minimumPrecent - width);
- width = minimumPrecent;
- }
- columns[columnIdentifier].width = width;
- }
-
- // Enforce the minimum percentage width. (need to narrow total percentage due to earlier additions)
- while (recoupPercent > 0) {
- for (var columnIdentifier in columns) {
- if (columns[columnIdentifier].width > minimumPrecent) {
- --columns[columnIdentifier].width;
- --recoupPercent;
- if (!recoupPercent)
- break;
- }
- }
- }
-
- for (var columnIdentifier in columns)
- columns[columnIdentifier].width += "%";
-
- var dataGrid = new WebInspector.DataGrid(columns);
- var length = nodes.length;
- for (var i = 0; i < length; ++i)
- dataGrid.appendChild(nodes[i]);
- if (length > 0)
- nodes[0].selected = true;
-
- return dataGrid;
- },
-
- fallbackUpdate: function()
- {
- this.element.removeChildren();
-
- var self = this;
- function callback(rawCookieString) {
- var cookies = self.fallbackBuildCookiesFromString(rawCookieString);
- var dataGrid = self.fallbackDataGridForCookies(cookies);
- if (dataGrid) {
- self._dataGrid = dataGrid;
- self.element.appendChild(dataGrid.element);
- self.deleteButton.visible = true;
- } else {
- var emptyMsgElement = document.createElement("div");
- emptyMsgElement.className = "storage-table-empty";
- emptyMsgElement.textContent = WebInspector.UIString("This site has no cookies.");
- self.element.appendChild(emptyMsgElement);
- self._dataGrid = null;
- self.deleteButton.visible = false;
- }
- }
-
- InspectorController.getCookies(callback);
- },
-
- fallbackBuildCookiesFromString: function(rawCookieString)
- {
- var rawCookies = rawCookieString.split(/;\s*/);
- var cookies = [];
-
- if (!(/^\s*$/.test(rawCookieString))) {
- for (var i = 0; i < rawCookies.length; ++i) {
- var cookie = rawCookies[i];
- var delimIndex = cookie.indexOf("=");
- var name = cookie.substring(0, delimIndex);
- var value = cookie.substring(delimIndex + 1);
- var size = name.length + value.length;
- cookies.push({ name: name, value: value, size: size });
- }
- }
-
- return cookies;
- },
-
- fallbackDataGridForCookies: function(cookies)
- {
- if (!cookies.length)
- return null;
-
- var columns = {};
- columns[0] = {};
- columns[1] = {};
- columns[0].title = WebInspector.UIString("Name");
- columns[0].width = columns[0].title.length;
- columns[1].title = WebInspector.UIString("Value");
- columns[1].width = columns[1].title.length;
-
- var nodes = [];
- for (var i = 0; i < cookies.length; ++i) {
- var cookie = cookies[i];
- var data = {};
-
- var name = cookie.name;
- data[0] = name;
- if (name.length > columns[0].width)
- columns[0].width = name.length;
-
- var value = cookie.value;
- data[1] = value;
- if (value.length > columns[1].width)
- columns[1].width = value.length;
-
- var node = new WebInspector.DataGridNode(data, false);
- node.selectable = true;
- nodes.push(node);
- }
-
- var totalColumnWidths = columns[0].width + columns[1].width;
- var width = Math.round((columns[0].width * 100) / totalColumnWidths);
- const minimumPrecent = 20;
- if (width < minimumPrecent)
- width = minimumPrecent;
- if (width > 100 - minimumPrecent)
- width = 100 - minimumPrecent;
- columns[0].width = width;
- columns[1].width = 100 - width;
- columns[0].width += "%";
- columns[1].width += "%";
-
- var dataGrid = new WebInspector.DataGrid(columns);
- var length = nodes.length;
- for (var i = 0; i < length; ++i)
- dataGrid.appendChild(nodes[i]);
- if (length > 0)
- nodes[0].selected = true;
-
- return dataGrid;
- },
-
- _deleteButtonClicked: function(event)
- {
- if (!this._dataGrid || this._useFallback)
- return;
-
- var cookie = this._dataGrid.selectedNode.cookie;
- InspectorController.deleteCookie(cookie.name);
- this.update();
- },
-
- _refreshButtonClicked: function(event)
- {
- this.update();
- }
-}
-
-WebInspector.CookieItemsView.prototype.__proto__ = WebInspector.View.prototype;
diff --git a/WebCore/inspector/front-end/DOMAgent.js b/WebCore/inspector/front-end/DOMAgent.js
index 7942f0a..5aacd41 100644
--- a/WebCore/inspector/front-end/DOMAgent.js
+++ b/WebCore/inspector/front-end/DOMAgent.js
@@ -31,7 +31,7 @@
WebInspector.DOMNode = function(doc, payload) {
this.ownerDocument = doc;
- this.id = payload.id;
+ this._id = payload.id;
this.nodeType = payload.nodeType;
this.nodeName = payload.nodeName;
this._nodeValue = payload.nodeValue;
@@ -48,22 +48,14 @@ WebInspector.DOMNode = function(doc, payload) {
this.nextSibling = null;
this.prevSibling = null;
this.firstChild = null;
- this.lastChild = null;
this.parentNode = null;
- if (payload.children)
- this._setChildrenPayload(payload.children);
+ if (payload.childNodes)
+ this._setChildrenPayload(payload.childNodes);
this._computedStyle = null;
this.style = null;
this._matchedCSSRules = [];
-
- if (this.nodeType == Node.ELEMENT_NODE) {
- if (this.nodeName == "HTML")
- this.ownerDocument.documentElement = this;
- if (this.nodeName == "BODY")
- this.ownerDocument.body = this;
- }
}
WebInspector.DOMNode.prototype = {
@@ -169,11 +161,9 @@ WebInspector.DOMNode.prototype = {
this._childNodeCount = this.children.length;
if (this._childNodeCount == 0) {
this.firstChild = null;
- this.lastChild = null;
return;
}
this.firstChild = this.children[0];
- this.lastChild = this.children[this._childNodeCount - 1];
for (var i = 0; i < this._childNodeCount; ++i) {
var child = this.children[i];
child.nextSibling = i + 1 < this._childNodeCount ? this.children[i + 1] : null;
@@ -218,9 +208,17 @@ WebInspector.DOMNode.prototype = {
}
}
-WebInspector.DOMDocument = function(domAgent, defaultView, payload)
+WebInspector.DOMDocument = function(domAgent, defaultView)
{
- WebInspector.DOMNode.call(this, this, payload);
+ WebInspector.DOMNode.call(this, null,
+ {
+ id: 0,
+ nodeType: Node.DOCUMENT_NODE,
+ nodeName: "",
+ nodeValue: "",
+ attributes: [],
+ childNodeCount: 0
+ });
this._listeners = {};
this._domAgent = domAgent;
this.defaultView = defaultView;
@@ -228,7 +226,7 @@ WebInspector.DOMDocument = function(domAgent, defaultView, payload)
WebInspector.DOMDocument.prototype = {
- addEventListener: function(name, callback)
+ addEventListener: function(name, callback, useCapture)
{
var listeners = this._listeners[name];
if (!listeners) {
@@ -238,7 +236,7 @@ WebInspector.DOMDocument.prototype = {
listeners.push(callback);
},
- removeEventListener: function(name, callback)
+ removeEventListener: function(name, callback, useCapture)
{
var listeners = this._listeners[name];
if (!listeners)
@@ -253,12 +251,10 @@ WebInspector.DOMDocument.prototype = {
{
var listeners = this._listeners[name];
if (!listeners)
- return;
+ return;
- for (var i = 0; i < listeners.length; ++i) {
- var listener = listeners[i];
- listener.call(this, event);
- }
+ for (var i = 0; i < listeners.length; ++i)
+ listeners[i](event);
}
}
@@ -306,8 +302,23 @@ WebInspector.DOMAgent = function() {
this._idToDOMNode = null;
this.document = null;
- // TODO: update ElementsPanel to not track embedded iframes - it is already being handled
+ // Install onpopulate handler. This is a temporary measure.
+ // TODO: add this code into the original updateChildren once domAgent
+ // becomes primary source of DOM information.
+ // TODO2: update ElementsPanel to not track embedded iframes - it is already being handled
// in the agent backend.
+ var domAgent = this;
+ var originalUpdateChildren = WebInspector.ElementsTreeElement.prototype.updateChildren;
+ WebInspector.ElementsTreeElement.prototype.updateChildren = function()
+ {
+ domAgent.getChildNodesAsync(this.representedObject, originalUpdateChildren.bind(this));
+ };
+
+ // Mute console handle to avoid crash on selection change.
+ // TODO: Re-implement inspectorConsoleAPI to work in a serialized way and remove this workaround.
+ WebInspector.Console.prototype.addInspectedNode = function()
+ {
+ };
// Whitespace is ignored in InspectorDOMAgent already -> no need to filter.
// TODO: Either remove all of its usages or push value into the agent backend.
@@ -320,36 +331,38 @@ WebInspector.DOMAgent.prototype = {
return this._window;
},
- getChildNodesAsync: function(parent, callback)
+ getChildNodesAsync: function(parent, opt_callback)
{
var children = parent.children;
- if (children) {
- callback(children);
- return;
- }
- function mycallback() {
- callback(parent.children);
+ if (children && opt_callback) {
+ opt_callback(children);
+ return;
}
+ var mycallback = function() {
+ if (opt_callback) {
+ opt_callback(parent.children);
+ }
+ };
var callId = WebInspector.Callback.wrap(mycallback);
- InspectorController.getChildNodes(callId, parent.id);
+ InspectorController.getChildNodes(callId, parent._id);
},
setAttributeAsync: function(node, name, value, callback)
{
var mycallback = this._didApplyDomChange.bind(this, node, callback);
- InspectorController.setAttribute(WebInspector.Callback.wrap(mycallback), node.id, name, value);
+ InspectorController.setAttribute(WebInspector.Callback.wrap(mycallback), node._id, name, value);
},
removeAttributeAsync: function(node, name, callback)
{
var mycallback = this._didApplyDomChange.bind(this, node, callback);
- InspectorController.removeAttribute(WebInspector.Callback.wrap(mycallback), node.id, name);
+ InspectorController.removeAttribute(WebInspector.Callback.wrap(mycallback), node._id, name);
},
setTextNodeValueAsync: function(node, text, callback)
{
var mycallback = this._didApplyDomChange.bind(this, node, callback);
- InspectorController.setTextNodeValue(WebInspector.Callback.wrap(mycallback), node.id, text);
+ InspectorController.setTextNodeValue(WebInspector.Callback.wrap(mycallback), node._id, text);
},
_didApplyDomChange: function(node, callback, success)
@@ -370,22 +383,26 @@ WebInspector.DOMAgent.prototype = {
node._setAttributesPayload(attrsArray);
},
- nodeForId: function(nodeId) {
+ getNodeForId: function(nodeId) {
return this._idToDOMNode[nodeId];
},
- _setDocument: function(payload)
+ _setDocumentElement: function(payload)
{
- this.document = new WebInspector.DOMDocument(this, this._window, payload);
- this._idToDOMNode = {};
- this._idToDOMNode[payload.id] = this.document;
- this._bindNodes(this.document.children);
+ this.document = new WebInspector.DOMDocument(this, this._window);
+ this._idToDOMNode = { 0 : this.document };
+ this._setChildNodes(0, [payload]);
+ this.document.documentElement = this.document.firstChild;
+ this.document.documentElement.ownerDocument = this.document;
WebInspector.panels.elements.reset();
},
_setChildNodes: function(parentId, payloads)
{
var parent = this._idToDOMNode[parentId];
+ if (parent.children) {
+ return;
+ }
parent._setChildrenPayload(payloads);
this._bindNodes(parent.children);
},
@@ -394,7 +411,7 @@ WebInspector.DOMAgent.prototype = {
{
for (var i = 0; i < children.length; ++i) {
var child = children[i];
- this._idToDOMNode[child.id] = child;
+ this._idToDOMNode[child._id] = child;
if (child.children)
this._bindNodes(child.children);
}
@@ -416,7 +433,7 @@ WebInspector.DOMAgent.prototype = {
var parent = this._idToDOMNode[parentId];
var prev = this._idToDOMNode[prevId];
var node = parent._insertChild(prev, payload);
- this._idToDOMNode[node.id] = node;
+ this._idToDOMNode[node._id] = node;
var event = { target : node, relatedNode : parent };
this.document._fireDomEvent("DOMNodeInserted", event);
},
@@ -433,7 +450,7 @@ WebInspector.DOMAgent.prototype = {
}
WebInspector.CSSStyleDeclaration = function(payload) {
- this.id = payload.id;
+ this._id = payload.id;
this.width = payload.width;
this.height = payload.height;
this.__disabledProperties = payload.__disabledProperties;
@@ -475,13 +492,12 @@ WebInspector.CSSStyleDeclaration.parseStyle = function(payload)
WebInspector.CSSStyleDeclaration.parseRule = function(payload)
{
var rule = {};
- rule.id = payload.id;
+ rule._id = payload.id;
rule.selectorText = payload.selectorText;
rule.style = new WebInspector.CSSStyleDeclaration(payload.style);
rule.style.parentRule = rule;
rule.isUserAgent = payload.isUserAgent;
rule.isUser = payload.isUser;
- rule.isViaInspector = payload.isViaInspector;
if (payload.parentStyleSheet)
rule.parentStyleSheet = { href: payload.parentStyleSheet.href };
@@ -570,9 +586,9 @@ WebInspector.attributesUpdated = function()
this.domAgent._attributesUpdated.apply(this.domAgent, arguments);
}
-WebInspector.setDocument = function()
+WebInspector.setDocumentElement = function()
{
- this.domAgent._setDocument.apply(this.domAgent, arguments);
+ this.domAgent._setDocumentElement.apply(this.domAgent, arguments);
}
WebInspector.setChildNodes = function()
@@ -588,11 +604,13 @@ WebInspector.hasChildrenUpdated = function()
WebInspector.childNodeInserted = function()
{
this.domAgent._childNodeInserted.apply(this.domAgent, arguments);
+ this._childNodeInserted.bind(this);
}
WebInspector.childNodeRemoved = function()
{
this.domAgent._childNodeRemoved.apply(this.domAgent, arguments);
+ this._childNodeRemoved.bind(this);
}
WebInspector.didGetChildNodes = WebInspector.Callback.processCallback;
@@ -601,122 +619,106 @@ WebInspector.didApplyDomChange = WebInspector.Callback.processCallback;
WebInspector.didRemoveAttribute = WebInspector.Callback.processCallback;
WebInspector.didSetTextNodeValue = WebInspector.Callback.processCallback;
+// Temporary methods for DOMAgent migration.
+WebInspector.wrapNodeWithStyles = function(node, styles)
+{
+ var windowStub = new WebInspector.DOMWindow(null);
+ var docStub = new WebInspector.DOMDocument(null, windowStub);
+ var payload = {};
+ payload.nodeType = node.nodeType;
+ payload.nodeName = node.nodeName;
+ payload.nodeValue = node.nodeValue;
+ payload.attributes = [];
+ payload.childNodeCount = 0;
+
+ for (var i = 0; i < node.attributes.length; ++i) {
+ var attr = node.attributes[i];
+ payload.attributes.push(attr.name);
+ payload.attributes.push(attr.value);
+ }
+ var nodeStub = new WebInspector.DOMNode(docStub, payload);
+ nodeStub._setStyles(styles.computedStyle, styles.inlineStyle, styles.styleAttributes, styles.matchedCSSRules);
+ return nodeStub;
+}
+
// Temporary methods that will be dispatched via InspectorController into the injected context.
InspectorController.getStyles = function(nodeId, authorOnly, callback)
{
setTimeout(function() {
callback(InjectedScript.getStyles(nodeId, authorOnly));
- }, 0);
+ }, 0)
}
InspectorController.getComputedStyle = function(nodeId, callback)
{
setTimeout(function() {
callback(InjectedScript.getComputedStyle(nodeId));
- }, 0);
+ }, 0)
}
InspectorController.getInlineStyle = function(nodeId, callback)
{
setTimeout(function() {
callback(InjectedScript.getInlineStyle(nodeId));
- }, 0);
+ }, 0)
}
InspectorController.applyStyleText = function(styleId, styleText, propertyName, callback)
{
setTimeout(function() {
callback(InjectedScript.applyStyleText(styleId, styleText, propertyName));
- }, 0);
+ }, 0)
}
InspectorController.setStyleText = function(style, cssText, callback)
{
setTimeout(function() {
callback(InjectedScript.setStyleText(style, cssText));
- }, 0);
+ }, 0)
}
InspectorController.toggleStyleEnabled = function(styleId, propertyName, disabled, callback)
{
setTimeout(function() {
callback(InjectedScript.toggleStyleEnabled(styleId, propertyName, disabled));
- }, 0);
+ }, 0)
}
-InspectorController.applyStyleRuleText = function(ruleId, newContent, selectedNodeId, callback)
+InspectorController.applyStyleRuleText = function(ruleId, newContent, selectedNode, callback)
{
setTimeout(function() {
- callback(InjectedScript.applyStyleRuleText(ruleId, newContent, selectedNodeId));
- }, 0);
+ callback(InjectedScript.applyStyleRuleText(ruleId, newContent, selectedNode));
+ }, 0)
}
-InspectorController.addStyleSelector = function(newContent, selectedNodeId, callback)
+InspectorController.addStyleSelector = function(newContent, callback)
{
setTimeout(function() {
- callback(InjectedScript.addStyleSelector(newContent, selectedNodeId));
- }, 0);
+ callback(InjectedScript.addStyleSelector(newContent));
+ }, 0)
}
-InspectorController.setStyleProperty = function(styleId, name, value, callback)
-{
+InspectorController.setStyleProperty = function(styleId, name, value, callback) {
setTimeout(function() {
callback(InjectedScript.setStyleProperty(styleId, name, value));
- }, 0);
+ }, 0)
}
-InspectorController.getPrototypes = function(nodeId, callback)
-{
+InspectorController.getPrototypes = function(objectProxy, callback) {
setTimeout(function() {
- callback(InjectedScript.getPrototypes(nodeId));
- }, 0);
+ callback(InjectedScript.getPrototypes(objectProxy));
+ }, 0)
}
-InspectorController.getProperties = function(objectProxy, ignoreHasOwnProperty, callback)
-{
+InspectorController.getProperties = function(objectProxy, ignoreHasOwnProperty, callback) {
setTimeout(function() {
callback(InjectedScript.getProperties(objectProxy, ignoreHasOwnProperty));
- }, 0);
+ }, 0)
}
-InspectorController.setPropertyValue = function(objectProxy, propertyName, expression, callback)
-{
+InspectorController.setPropertyValue = function(objectProxy, propertyName, expression, callback) {
setTimeout(function() {
callback(InjectedScript.setPropertyValue(objectProxy, propertyName, expression));
- }, 0);
-}
-
-InspectorController.evaluate = function(expression, callback)
-{
- setTimeout(function() {
- callback(InjectedScript.evaluate(expression));
- }, 0);
-}
-
-InspectorController.addInspectedNode = function(nodeId, callback)
-{
- setTimeout(function() {
- callback(InjectedScript.addInspectedNode(nodeId));
- }, 0);
-}
-
-InspectorController.performSearch = function(whitespaceTrimmedQuery, callback)
-{
- setTimeout(function() {
- callback(InjectedScript.performSearch(whitespaceTrimmedQuery));
- }, 0);
-}
-
-InspectorController.searchCanceled = function(callback)
-{
- setTimeout(function() {
- callback(InjectedScript.searchCanceled());
- }, 0);
+ }, 0)
}
-InspectorController.getCookies = function(callback)
-{
- setTimeout(function() {
- callback(InjectedScript.getCookies());
- }, 0);
-}
diff --git a/WebCore/inspector/front-end/DOMStorageItemsView.js b/WebCore/inspector/front-end/DOMStorageItemsView.js
index 514883f..fad6e3c 100644
--- a/WebCore/inspector/front-end/DOMStorageItemsView.js
+++ b/WebCore/inspector/front-end/DOMStorageItemsView.js
@@ -32,18 +32,21 @@ WebInspector.DOMStorageItemsView = function(domStorage)
this.element.addStyleClass("storage-view");
this.element.addStyleClass("table");
- this.deleteButton = new WebInspector.StatusBarButton(WebInspector.UIString("Delete"), "delete-storage-status-bar-item");
- this.deleteButton.visible = false;
+ this.deleteButton = document.createElement("button");
+ this.deleteButton.title = WebInspector.UIString("Delete");
+ this.deleteButton.className = "delete-storage-status-bar-item status-bar-item hidden";
this.deleteButton.addEventListener("click", this._deleteButtonClicked.bind(this), false);
- this.refreshButton = new WebInspector.StatusBarButton(WebInspector.UIString("Refresh"), "refresh-storage-status-bar-item");
+ this.refreshButton = document.createElement("button");
+ this.refreshButton.title = WebInspector.UIString("Refresh");
+ this.refreshButton.className = "refresh-storage-status-bar-item status-bar-item";
this.refreshButton.addEventListener("click", this._refreshButtonClicked.bind(this), false);
}
WebInspector.DOMStorageItemsView.prototype = {
get statusBarItems()
{
- return [this.refreshButton.element, this.deleteButton.element];
+ return [this.refreshButton, this.deleteButton];
},
show: function(parentElement)
@@ -55,7 +58,7 @@ WebInspector.DOMStorageItemsView.prototype = {
hide: function()
{
WebInspector.View.prototype.hide.call(this);
- this.deleteButton.visible = false;
+ this.deleteButton.addStyleClass("hidden");
},
update: function()
@@ -73,7 +76,7 @@ WebInspector.DOMStorageItemsView.prototype = {
this._dataGrid = dataGrid;
this.element.appendChild(dataGrid.element);
this._dataGrid.updateWidths();
- this.deleteButton.visible = true;
+ this.deleteButton.removeStyleClass("hidden");
}
}
@@ -84,7 +87,7 @@ WebInspector.DOMStorageItemsView.prototype = {
emptyMsgElement.textContent = WebInspector.UIString("This storage is empty.");
this.element.appendChild(emptyMsgElement);
this._dataGrid = null;
- this.deleteButton.visible = false;
+ this.deleteButton.addStyleClass("hidden");
}
},
diff --git a/WebCore/inspector/front-end/DataGrid.js b/WebCore/inspector/front-end/DataGrid.js
index ce61548..42e001c 100644
--- a/WebCore/inspector/front-end/DataGrid.js
+++ b/WebCore/inspector/front-end/DataGrid.js
@@ -39,8 +39,6 @@ WebInspector.DataGrid = function(columns)
this._dataTable.addEventListener("mousedown", this._mouseDownInDataTable.bind(this), true);
this._dataTable.addEventListener("click", this._clickInDataTable.bind(this), true);
- this.aligned = {};
-
var scrollContainer = document.createElement("div");
scrollContainer.className = "data-container";
scrollContainer.appendChild(this._dataTable);
@@ -80,11 +78,6 @@ WebInspector.DataGrid = function(columns)
cell.addStyleClass("sortable");
}
- if (column.aligned) {
- cell.addStyleClass(column.aligned);
- this.aligned[columnIdentifier] = column.aligned;
- }
-
headerRow.appendChild(cell);
++columnCount;
@@ -759,10 +752,6 @@ WebInspector.DataGridNode.prototype = {
var cell = document.createElement("td");
cell.className = columnIdentifier + "-column";
- var alignment = this.dataGrid.aligned[columnIdentifier];
- if (alignment)
- cell.addStyleClass(alignment);
-
var div = document.createElement("div");
div.textContent = this.data[columnIdentifier];
cell.appendChild(div);
diff --git a/WebCore/inspector/front-end/DatabasesPanel.js b/WebCore/inspector/front-end/DatabasesPanel.js
index acbbe28..a31e3ff 100644
--- a/WebCore/inspector/front-end/DatabasesPanel.js
+++ b/WebCore/inspector/front-end/DatabasesPanel.js
@@ -59,10 +59,6 @@ WebInspector.DatabasesPanel = function(database)
this.sidebarTree.appendChild(this.sessionStorageListTreeElement);
this.sessionStorageListTreeElement.expand();
- this.cookieListTreeElement = new WebInspector.SidebarSectionTreeElement(WebInspector.UIString("COOKIES"), {}, true);
- this.sidebarTree.appendChild(this.cookieListTreeElement);
- this.cookieListTreeElement.expand();
-
this.storageViews = document.createElement("div");
this.storageViews.id = "storage-views";
this.element.appendChild(this.storageViews);
@@ -91,12 +87,6 @@ WebInspector.DatabasesPanel.prototype = {
WebInspector.Panel.prototype.show.call(this);
this._updateSidebarWidth();
this._registerStorageEventListener();
- this.populateInterface();
- },
-
- populateInterface: function()
- {
- this.addCookies();
},
reset: function()
@@ -126,15 +116,11 @@ WebInspector.DatabasesPanel.prototype = {
this._domStorage = [];
- delete this.cookieTreeElement;
- delete this._cookieView;
-
this.databasesListTreeElement.removeChildren();
this.localStorageListTreeElement.removeChildren();
this.sessionStorageListTreeElement.removeChildren();
- this.cookieListTreeElement.removeChildren();
- this.storageViews.removeChildren();
-
+ this.storageViews.removeChildren();
+
this.storageViewStatusBarItemsContainer.removeChildren();
},
@@ -163,14 +149,6 @@ WebInspector.DatabasesPanel.prototype = {
this.sessionStorageListTreeElement.appendChild(domStorageTreeElement);
},
- addCookies: function()
- {
- if (!this.cookieTreeElement) {
- this.cookieTreeElement = new WebInspector.CookieSidebarTreeElement();
- this.cookieListTreeElement.appendChild(this.cookieTreeElement);
- }
- },
-
selectDatabase: function(db)
{
var database;
@@ -257,27 +235,6 @@ WebInspector.DatabasesPanel.prototype = {
this.storageViewStatusBarItemsContainer.appendChild(statusBarItems[i]);
},
- showCookies: function()
- {
- if (this.visibleView)
- this.visibleView.hide();
-
- var view = this._cookieView;
- if (!view) {
- view = new WebInspector.CookieItemsView();
- this._cookieView = view;
- }
-
- view.show(this.storageViews);
-
- this.visibleView = view;
-
- this.storageViewStatusBarItemsContainer.removeChildren();
- var statusBarItems = view.statusBarItems;
- for (var i = 0; i < statusBarItems.length; ++i)
- this.storageViewStatusBarItemsContainer.appendChild(statusBarItems[i]);
- },
-
closeVisibleView: function()
{
if (this.visibleView)
@@ -400,7 +357,7 @@ WebInspector.DatabasesPanel.prototype = {
columns[0].title = WebInspector.UIString("Key");
columns[0].width = columns[0].title.length;
columns[1].title = WebInspector.UIString("Value");
- columns[1].width = columns[1].title.length;
+ columns[1].width = columns[0].title.length;
var nodes = [];
@@ -423,7 +380,7 @@ WebInspector.DatabasesPanel.prototype = {
}
var totalColumnWidths = columns[0].width + columns[1].width;
- var width = Math.round((columns[0].width * 100) / totalColumnWidths);
+ width = Math.round((columns[0].width * 100) / totalColumnWidths);
const minimumPrecent = 10;
if (width < minimumPrecent)
width = minimumPrecent;
@@ -443,7 +400,7 @@ WebInspector.DatabasesPanel.prototype = {
nodes[0].selected = true;
return dataGrid;
},
-
+
resize: function()
{
var visibleView = this.visibleView;
@@ -649,39 +606,3 @@ WebInspector.DOMStorageSidebarTreeElement.prototype = {
}
WebInspector.DOMStorageSidebarTreeElement.prototype.__proto__ = WebInspector.SidebarTreeElement.prototype;
-
-WebInspector.CookieSidebarTreeElement = function()
-{
- WebInspector.SidebarTreeElement.call(this, "cookie-sidebar-tree-item", null, "", null, false);
-
- this.refreshTitles();
-}
-
-WebInspector.CookieSidebarTreeElement.prototype = {
- onselect: function()
- {
- WebInspector.panels.databases.showCookies();
- },
-
- get mainTitle()
- {
- return WebInspector.UIString("Cookies");
- },
-
- set mainTitle(x)
- {
- // Do nothing.
- },
-
- get subtitle()
- {
- return "";
- },
-
- set subtitle(x)
- {
- // Do nothing.
- }
-}
-
-WebInspector.CookieSidebarTreeElement.prototype.__proto__ = WebInspector.SidebarTreeElement.prototype;
diff --git a/WebCore/inspector/front-end/Drawer.js b/WebCore/inspector/front-end/Drawer.js
index 1b50f91..23dc483 100644
--- a/WebCore/inspector/front-end/Drawer.js
+++ b/WebCore/inspector/front-end/Drawer.js
@@ -64,12 +64,6 @@ WebInspector.Drawer.prototype = {
}
},
- showView: function(view)
- {
- if (!this.visible || this.visibleView !== view)
- this.visibleView = view;
- },
-
show: function()
{
if (this._animating || this.visible)
diff --git a/WebCore/inspector/front-end/ElementsPanel.js b/WebCore/inspector/front-end/ElementsPanel.js
index 1748159..ffa0000 100644
--- a/WebCore/inspector/front-end/ElementsPanel.js
+++ b/WebCore/inspector/front-end/ElementsPanel.js
@@ -61,8 +61,7 @@ WebInspector.ElementsPanel = function()
InspectorController.toggleNodeSearch();
this.panel.nodeSearchButton.removeStyleClass("toggled-on");
}
- if (this._focusedDOMNode)
- InspectorController.addInspectedNode(this._focusedDOMNode.id, function() {});
+ WebInspector.console.addInspectedNode(this._focusedDOMNode);
};
this.contentElement.appendChild(this.treeOutline.element);
@@ -98,7 +97,10 @@ WebInspector.ElementsPanel = function()
this.sidebarResizeElement.className = "sidebar-resizer-vertical";
this.sidebarResizeElement.addEventListener("mousedown", this.rightSidebarResizerDragStart.bind(this), false);
- this.nodeSearchButton = new WebInspector.StatusBarButton(WebInspector.UIString("Select an element in the page to inspect it."), "node-search-status-bar-item");
+ this.nodeSearchButton = this.createStatusBarButton();
+ this.nodeSearchButton.title = WebInspector.UIString("Select an element in the page to inspect it.");
+ this.nodeSearchButton.id = "node-search-status-bar-item";
+ this.nodeSearchButton.className = "status-bar-item";
this.nodeSearchButton.addEventListener("click", this._nodeSearchButtonClicked.bind(this), false);
this.searchingForNode = false;
@@ -107,7 +109,13 @@ WebInspector.ElementsPanel = function()
this.element.appendChild(this.sidebarElement);
this.element.appendChild(this.sidebarResizeElement);
- this._changedStyles = {};
+ this._mutationMonitoredWindows = [];
+ this._nodeInsertedEventListener = InspectorController.wrapCallback(this._nodeInserted.bind(this));
+ this._nodeRemovedEventListener = InspectorController.wrapCallback(this._nodeRemoved.bind(this));
+ this._contentLoadedEventListener = InspectorController.wrapCallback(this._contentLoaded.bind(this));
+
+ this.stylesheet = null;
+ this.styles = {};
this.reset();
}
@@ -122,7 +130,7 @@ WebInspector.ElementsPanel.prototype = {
get statusBarItems()
{
- return [this.nodeSearchButton.element, this.crumbsElement];
+ return [this.nodeSearchButton, this.crumbsElement];
},
updateStatusBarItems: function()
@@ -148,7 +156,7 @@ WebInspector.ElementsPanel.prototype = {
if (InspectorController.searchingForNode()) {
InspectorController.toggleNodeSearch();
- this.nodeSearchButton.toggled = false;
+ this.nodeSearchButton.removeStyleClass("toggled-on");
}
},
@@ -167,27 +175,40 @@ WebInspector.ElementsPanel.prototype = {
if (InspectorController.searchingForNode()) {
InspectorController.toggleNodeSearch();
- this.nodeSearchButton.toggled = false;
+ this.nodeSearchButton.removeStyleClass("toggled-on");
}
this.recentlyModifiedNodes = [];
+ this.unregisterAllMutationEventListeners();
delete this.currentQuery;
this.searchCanceled();
- var inspectedWindow = WebInspector.domAgent.inspectedWindow;
- if (!inspectedWindow || !inspectedWindow.document || !inspectedWindow.document.firstChild)
+ var inspectedWindow = Preferences.useDOMAgent ? WebInspector.domAgent.inspectedWindow : InspectorController.inspectedWindow();
+ if (!inspectedWindow || !inspectedWindow.document)
return;
+ if (!inspectedWindow.document.firstChild) {
+ function contentLoaded()
+ {
+ inspectedWindow.document.removeEventListener("DOMContentLoaded", contentLoadedCallback, false);
+
+ this.reset();
+ }
+
+ var contentLoadedCallback = InspectorController.wrapCallback(contentLoaded.bind(this));
+ inspectedWindow.document.addEventListener("DOMContentLoaded", contentLoadedCallback, false);
+ return;
+ }
+
// If the window isn't visible, return early so the DOM tree isn't built
// and mutation event listeners are not added.
if (!InspectorController.isWindowVisible())
return;
- var inspectedRootDocument = inspectedWindow.document;
- inspectedRootDocument.addEventListener("DOMNodeInserted", this._nodeInserted.bind(this));
- inspectedRootDocument.addEventListener("DOMNodeRemoved", this._nodeRemoved.bind(this));
+ this.registerMutationEventListeners(inspectedWindow);
+ var inspectedRootDocument = inspectedWindow.document;
this.rootDOMNode = inspectedRootDocument;
var canidateFocusNode = inspectedRootDocument.body || inspectedRootDocument.documentElement;
@@ -201,11 +222,19 @@ WebInspector.ElementsPanel.prototype = {
}
},
+ includedInSearchResultsPropertyName: "__includedInInspectorSearchResults",
+
searchCanceled: function()
{
if (this._searchResults) {
+ const searchResultsProperty = this.includedInSearchResultsPropertyName;
for (var i = 0; i < this._searchResults.length; ++i) {
- var treeElement = this.treeOutline.findTreeElement(this._searchResults[i]);
+ var node = this._searchResults[i];
+
+ // Remove the searchResultsProperty since there might be an unfinished search.
+ delete node[searchResultsProperty];
+
+ var treeElement = this.treeOutline.findTreeElement(node);
if (treeElement)
treeElement.highlighted = false;
}
@@ -213,9 +242,13 @@ WebInspector.ElementsPanel.prototype = {
WebInspector.updateSearchMatchesCount(0, this);
+ if (this._currentSearchChunkIntervalIdentifier) {
+ clearInterval(this._currentSearchChunkIntervalIdentifier);
+ delete this._currentSearchChunkIntervalIdentifier;
+ }
+
this._currentSearchResultIndex = 0;
this._searchResults = [];
- InspectorController.searchCanceled(function() {});
},
performSearch: function(query)
@@ -227,56 +260,241 @@ WebInspector.ElementsPanel.prototype = {
if (!whitespaceTrimmedQuery.length)
return;
- this._updatedMatchCountOnce = false;
- this._matchesCountUpdateTimeout = null;
+ var tagNameQuery = whitespaceTrimmedQuery;
+ var attributeNameQuery = whitespaceTrimmedQuery;
+ var startTagFound = (tagNameQuery.indexOf("<") === 0);
+ var endTagFound = (tagNameQuery.lastIndexOf(">") === (tagNameQuery.length - 1));
- InspectorController.performSearch(whitespaceTrimmedQuery, function() {});
- },
+ if (startTagFound || endTagFound) {
+ var tagNameQueryLength = tagNameQuery.length;
+ tagNameQuery = tagNameQuery.substring((startTagFound ? 1 : 0), (endTagFound ? (tagNameQueryLength - 1) : tagNameQueryLength));
+ }
- _updateMatchesCount: function()
- {
- WebInspector.updateSearchMatchesCount(this._searchResults.length, this);
- this._matchesCountUpdateTimeout = null;
- this._updatedMatchCountOnce = true;
- },
+ // Check the tagNameQuery is it is a possibly valid tag name.
+ if (!/^[a-zA-Z0-9\-_:]+$/.test(tagNameQuery))
+ tagNameQuery = null;
- _updateMatchesCountSoon: function()
- {
- if (!this._updatedMatchCountOnce)
- return this._updateMatchesCount();
- if (this._matchesCountUpdateTimeout)
- return;
- // Update the matches count every half-second so it doesn't feel twitchy.
- this._matchesCountUpdateTimeout = setTimeout(this._updateMatchesCount.bind(this), 500);
- },
+ // Check the attributeNameQuery is it is a possibly valid tag name.
+ if (!/^[a-zA-Z0-9\-_:]+$/.test(attributeNameQuery))
+ attributeNameQuery = null;
- addNodesToSearchResult: function(nodeIds)
- {
- if (!nodeIds)
- return;
+ const escapedQuery = query.escapeCharacters("'");
+ const escapedTagNameQuery = (tagNameQuery ? tagNameQuery.escapeCharacters("'") : null);
+ const escapedWhitespaceTrimmedQuery = whitespaceTrimmedQuery.escapeCharacters("'");
+ const searchResultsProperty = this.includedInSearchResultsPropertyName;
- var nodeIdsArray = nodeIds.split(",");
- for (var i = 0; i < nodeIdsArray.length; ++i) {
- var nodeId = nodeIdsArray[i];
- var node = WebInspector.domAgent.nodeForId(nodeId);
- if (!node)
- continue;
+ var updatedMatchCountOnce = false;
+ var matchesCountUpdateTimeout = null;
- if (!this._searchResults.length) {
- this._currentSearchResultIndex = 0;
- this.focusedDOMNode = node;
+ function updateMatchesCount()
+ {
+ WebInspector.updateSearchMatchesCount(this._searchResults.length, this);
+ matchesCountUpdateTimeout = null;
+ updatedMatchCountOnce = true;
+ }
+
+ function updateMatchesCountSoon()
+ {
+ if (!updatedMatchCountOnce)
+ return updateMatchesCount.call(this);
+ if (matchesCountUpdateTimeout)
+ return;
+ // Update the matches count every half-second so it doesn't feel twitchy.
+ matchesCountUpdateTimeout = setTimeout(updateMatchesCount.bind(this), 500);
+ }
+
+ function addNodesToResults(nodes, length, getItem)
+ {
+ if (!length)
+ return;
+
+ for (var i = 0; i < length; ++i) {
+ var node = getItem.call(nodes, i);
+ // Skip this node if it already has the property.
+ if (searchResultsProperty in node)
+ continue;
+
+ if (!this._searchResults.length) {
+ this._currentSearchResultIndex = 0;
+ this.focusedDOMNode = node;
+ }
+
+ node[searchResultsProperty] = true;
+ this._searchResults.push(node);
+
+ // Highlight the tree element to show it matched the search.
+ // FIXME: highlight the substrings in text nodes and attributes.
+ var treeElement = this.treeOutline.findTreeElement(node);
+ if (treeElement)
+ treeElement.highlighted = true;
}
- this._searchResults.push(node);
+ updateMatchesCountSoon.call(this);
+ }
+
+ function matchExactItems(doc)
+ {
+ matchExactId.call(this, doc);
+ matchExactClassNames.call(this, doc);
+ matchExactTagNames.call(this, doc);
+ matchExactAttributeNames.call(this, doc);
+ }
+
+ function matchExactId(doc)
+ {
+ const result = doc.__proto__.getElementById.call(doc, whitespaceTrimmedQuery);
+ addNodesToResults.call(this, result, (result ? 1 : 0), function() { return this });
+ }
+
+ function matchExactClassNames(doc)
+ {
+ const result = doc.__proto__.getElementsByClassName.call(doc, whitespaceTrimmedQuery);
+ addNodesToResults.call(this, result, result.length, result.item);
+ }
+
+ function matchExactTagNames(doc)
+ {
+ if (!tagNameQuery)
+ return;
+ const result = doc.__proto__.getElementsByTagName.call(doc, tagNameQuery);
+ addNodesToResults.call(this, result, result.length, result.item);
+ }
+
+ function matchExactAttributeNames(doc)
+ {
+ if (!attributeNameQuery)
+ return;
+ const result = doc.__proto__.querySelectorAll.call(doc, "[" + attributeNameQuery + "]");
+ addNodesToResults.call(this, result, result.length, result.item);
+ }
+
+ function matchPartialTagNames(doc)
+ {
+ if (!tagNameQuery)
+ return;
+ const result = doc.__proto__.evaluate.call(doc, "//*[contains(name(), '" + escapedTagNameQuery + "')]", doc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE);
+ addNodesToResults.call(this, result, result.snapshotLength, result.snapshotItem);
+ }
- // Highlight the tree element to show it matched the search.
- // FIXME: highlight the substrings in text nodes and attributes.
- var treeElement = this.treeOutline.findTreeElement(node);
- if (treeElement)
- treeElement.highlighted = true;
+ function matchStartOfTagNames(doc)
+ {
+ if (!tagNameQuery)
+ return;
+ const result = doc.__proto__.evaluate.call(doc, "//*[starts-with(name(), '" + escapedTagNameQuery + "')]", doc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE);
+ addNodesToResults.call(this, result, result.snapshotLength, result.snapshotItem);
}
- this._updateMatchesCountSoon();
+ function matchPartialTagNamesAndAttributeValues(doc)
+ {
+ if (!tagNameQuery) {
+ matchPartialAttributeValues.call(this, doc);
+ return;
+ }
+
+ const result = doc.__proto__.evaluate.call(doc, "//*[contains(name(), '" + escapedTagNameQuery + "') or contains(@*, '" + escapedQuery + "')]", doc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE);
+ addNodesToResults.call(this, result, result.snapshotLength, result.snapshotItem);
+ }
+
+ function matchPartialAttributeValues(doc)
+ {
+ const result = doc.__proto__.evaluate.call(doc, "//*[contains(@*, '" + escapedQuery + "')]", doc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE);
+ addNodesToResults.call(this, result, result.snapshotLength, result.snapshotItem);
+ }
+
+ function matchStyleSelector(doc)
+ {
+ const result = doc.__proto__.querySelectorAll.call(doc, whitespaceTrimmedQuery);
+ addNodesToResults.call(this, result, result.length, result.item);
+ }
+
+ function matchPlainText(doc)
+ {
+ const result = doc.__proto__.evaluate.call(doc, "//text()[contains(., '" + escapedQuery + "')] | //comment()[contains(., '" + escapedQuery + "')]", doc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE);
+ addNodesToResults.call(this, result, result.snapshotLength, result.snapshotItem);
+ }
+
+ function matchXPathQuery(doc)
+ {
+ const result = doc.__proto__.evaluate.call(doc, whitespaceTrimmedQuery, doc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE);
+ addNodesToResults.call(this, result, result.snapshotLength, result.snapshotItem);
+ }
+
+ function finishedSearching()
+ {
+ // Remove the searchResultsProperty now that the search is finished.
+ for (var i = 0; i < this._searchResults.length; ++i)
+ delete this._searchResults[i][searchResultsProperty];
+ }
+
+ const mainFrameDocument = InspectorController.inspectedWindow().document;
+ const searchDocuments = [mainFrameDocument];
+
+ if (tagNameQuery && startTagFound && endTagFound)
+ const searchFunctions = [matchExactTagNames, matchPlainText];
+ else if (tagNameQuery && startTagFound)
+ const searchFunctions = [matchStartOfTagNames, matchPlainText];
+ else if (tagNameQuery && endTagFound) {
+ // FIXME: we should have a matchEndOfTagNames search function if endTagFound is true but not startTagFound.
+ // This requires ends-with() support in XPath, WebKit only supports starts-with() and contains().
+ const searchFunctions = [matchPartialTagNames, matchPlainText];
+ } else if (whitespaceTrimmedQuery === "//*" || whitespaceTrimmedQuery === "*") {
+ // These queries will match every node. Matching everything isn't useful and can be slow for large pages,
+ // so limit the search functions list to plain text and attribute matching.
+ const searchFunctions = [matchPartialAttributeValues, matchPlainText];
+ } else
+ const searchFunctions = [matchExactItems, matchStyleSelector, matchPartialTagNamesAndAttributeValues, matchPlainText, matchXPathQuery];
+
+ // Find all frames, iframes and object elements to search their documents.
+ const querySelectorAllFunction = InspectorController.inspectedWindow().Document.prototype.querySelectorAll;
+ const subdocumentResult = querySelectorAllFunction.call(mainFrameDocument, "iframe, frame, object");
+
+ for (var i = 0; i < subdocumentResult.length; ++i) {
+ var element = subdocumentResult.item(i);
+ if (element.contentDocument)
+ searchDocuments.push(element.contentDocument);
+ }
+
+ const panel = this;
+ var documentIndex = 0;
+ var searchFunctionIndex = 0;
+ var chunkIntervalIdentifier = null;
+
+ // Split up the work into chunks so we don't block the UI thread while processing.
+
+ function processChunk()
+ {
+ var searchDocument = searchDocuments[documentIndex];
+ var searchFunction = searchFunctions[searchFunctionIndex];
+
+ if (++searchFunctionIndex > searchFunctions.length) {
+ searchFunction = searchFunctions[0];
+ searchFunctionIndex = 0;
+
+ if (++documentIndex > searchDocuments.length) {
+ if (panel._currentSearchChunkIntervalIdentifier === chunkIntervalIdentifier)
+ delete panel._currentSearchChunkIntervalIdentifier;
+ clearInterval(chunkIntervalIdentifier);
+ finishedSearching.call(panel);
+ return;
+ }
+
+ searchDocument = searchDocuments[documentIndex];
+ }
+
+ if (!searchDocument || !searchFunction)
+ return;
+
+ try {
+ searchFunction.call(panel, searchDocument);
+ } catch(err) {
+ // ignore any exceptions. the query might be malformed, but we allow that.
+ }
+ }
+
+ processChunk();
+
+ chunkIntervalIdentifier = setInterval(processChunk, 25);
+ this._currentSearchChunkIntervalIdentifier = chunkIntervalIdentifier;
},
jumpToNextSearchResult: function()
@@ -297,6 +515,12 @@ WebInspector.ElementsPanel.prototype = {
this.focusedDOMNode = this._searchResults[this._currentSearchResultIndex];
},
+ inspectedWindowCleared: function(window)
+ {
+ if (InspectorController.isWindowVisible())
+ this.updateMutationEventListeners(window);
+ },
+
renameSelector: function(oldIdentifier, newIdentifier, oldSelector, newSelector)
{
// TODO: Implement Shifting the oldSelector, and its contents to a newSelector
@@ -308,16 +532,16 @@ WebInspector.ElementsPanel.prototype = {
return;
var selector = style.parentRule.selectorText;
- if (!this._changedStyles[identifier])
- this._changedStyles[identifier] = {};
+ if (!this.styles[identifier])
+ this.styles[identifier] = {};
- if (!this._changedStyles[identifier][selector])
- this._changedStyles[identifier][selector] = {};
+ if (!this.styles[identifier][selector])
+ this.styles[identifier][selector] = {};
- if (!this._changedStyles[identifier][selector][property])
+ if (!this.styles[identifier][selector][property])
WebInspector.styleChanges += 1;
- this._changedStyles[identifier][selector][property] = style.getPropertyValue(property);
+ this.styles[identifier][selector][property] = style.getPropertyValue(property);
},
removeStyleChange: function(identifier, style, property)
@@ -326,11 +550,11 @@ WebInspector.ElementsPanel.prototype = {
return;
var selector = style.parentRule.selectorText;
- if (!this._changedStyles[identifier] || !this._changedStyles[identifier][selector])
+ if (!this.styles[identifier] || !this.styles[identifier][selector])
return;
- if (this._changedStyles[identifier][selector][property]) {
- delete this._changedStyles[identifier][selector][property];
+ if (this.styles[identifier][selector][property]) {
+ delete this.styles[identifier][selector][property];
WebInspector.styleChanges -= 1;
}
},
@@ -342,20 +566,20 @@ WebInspector.ElementsPanel.prototype = {
// Merge Down to Just Selectors
var mergedSelectors = {};
- for (var identifier in this._changedStyles) {
- for (var selector in this._changedStyles[identifier]) {
+ for (var identifier in this.styles) {
+ for (var selector in this.styles[identifier]) {
if (!mergedSelectors[selector])
- mergedSelectors[selector] = this._changedStyles[identifier][selector];
+ mergedSelectors[selector] = this.styles[identifier][selector];
else { // merge on selector
var merge = {};
for (var property in mergedSelectors[selector])
merge[property] = mergedSelectors[selector][property];
- for (var property in this._changedStyles[identifier][selector]) {
+ for (var property in this.styles[identifier][selector]) {
if (!merge[property])
- merge[property] = this._changedStyles[identifier][selector][property];
+ merge[property] = this.styles[identifier][selector][property];
else { // merge on property within a selector, include comment to notify user
var value1 = merge[property];
- var value2 = this._changedStyles[identifier][selector][property];
+ var value2 = this.styles[identifier][selector][property];
if (value1 === value2)
merge[property] = [value1];
@@ -412,6 +636,53 @@ WebInspector.ElementsPanel.prototype = {
InspectorController.inspectedWindow().console.log(result);
},
+ _addMutationEventListeners: function(monitoredWindow)
+ {
+ monitoredWindow.document.addEventListener("DOMNodeInserted", this._nodeInsertedEventListener, true);
+ monitoredWindow.document.addEventListener("DOMNodeRemoved", this._nodeRemovedEventListener, true);
+ if (monitoredWindow.frameElement)
+ monitoredWindow.addEventListener("DOMContentLoaded", this._contentLoadedEventListener, true);
+ },
+
+ _removeMutationEventListeners: function(monitoredWindow)
+ {
+ if (monitoredWindow.frameElement)
+ monitoredWindow.removeEventListener("DOMContentLoaded", this._contentLoadedEventListener, true);
+ if (!monitoredWindow.document)
+ return;
+ monitoredWindow.document.removeEventListener("DOMNodeInserted", this._nodeInsertedEventListener, true);
+ monitoredWindow.document.removeEventListener("DOMNodeRemoved", this._nodeRemovedEventListener, true);
+ },
+
+ updateMutationEventListeners: function(monitoredWindow)
+ {
+ this._addMutationEventListeners(monitoredWindow);
+ },
+
+ registerMutationEventListeners: function(monitoredWindow)
+ {
+ if (!monitoredWindow || this._mutationMonitoredWindows.indexOf(monitoredWindow) !== -1)
+ return;
+ this._mutationMonitoredWindows.push(monitoredWindow);
+ if (InspectorController.isWindowVisible())
+ this._addMutationEventListeners(monitoredWindow);
+ },
+
+ unregisterMutationEventListeners: function(monitoredWindow)
+ {
+ if (!monitoredWindow || this._mutationMonitoredWindows.indexOf(monitoredWindow) === -1)
+ return;
+ this._mutationMonitoredWindows.remove(monitoredWindow);
+ this._removeMutationEventListeners(monitoredWindow);
+ },
+
+ unregisterAllMutationEventListeners: function()
+ {
+ for (var i = 0; i < this._mutationMonitoredWindows.length; ++i)
+ this._removeMutationEventListeners(this._mutationMonitoredWindows[i]);
+ this._mutationMonitoredWindows = [];
+ },
+
get rootDOMNode()
{
return this.treeOutline.rootDOMNode;
@@ -432,6 +703,13 @@ WebInspector.ElementsPanel.prototype = {
this.treeOutline.focusedDOMNode = x;
},
+ _contentLoaded: function(event)
+ {
+ this.recentlyModifiedNodes.push({node: event.target, parent: event.target.defaultView.frameElement, replaced: true});
+ if (this.visible)
+ this._updateModifiedNodesSoon();
+ },
+
_nodeInserted: function(event)
{
this.recentlyModifiedNodes.push({node: event.target, parent: event.relatedNode, inserted: true});
@@ -469,14 +747,14 @@ WebInspector.ElementsPanel.prototype = {
if (!parent)
continue;
- var parentNodeItem = this.treeOutline.findTreeElement(parent);
+ var parentNodeItem = this.treeOutline.findTreeElement(parent, null, null, objectsAreSame);
if (parentNodeItem && !parentNodeItem.alreadyUpdatedChildren) {
parentNodeItem.updateChildren(replaced);
parentNodeItem.alreadyUpdatedChildren = true;
updatedParentTreeElements.push(parentNodeItem);
}
- if (!updateBreadcrumbs && (this.focusedDOMNode === parent || isAncestorIncludingParentFrames(this.focusedDOMNode, parent)))
+ if (!updateBreadcrumbs && (objectsAreSame(this.focusedDOMNode, parent) || isAncestorIncludingParentFrames(this.focusedDOMNode, parent)))
updateBreadcrumbs = true;
}
@@ -536,7 +814,7 @@ WebInspector.ElementsPanel.prototype = {
var foundRoot = false;
var crumb = crumbs.firstChild;
while (crumb) {
- if (crumb.representedObject === this.rootDOMNode)
+ if (objectsAreSame(crumb.representedObject, this.rootDOMNode))
foundRoot = true;
if (foundRoot)
@@ -544,7 +822,7 @@ WebInspector.ElementsPanel.prototype = {
else
crumb.removeStyleClass("dimmed");
- if (crumb.representedObject === this.focusedDOMNode) {
+ if (objectsAreSame(crumb.representedObject, this.focusedDOMNode)) {
crumb.addStyleClass("selected");
handled = true;
} else {
@@ -601,7 +879,7 @@ WebInspector.ElementsPanel.prototype = {
if (current.nodeType === Node.DOCUMENT_NODE)
continue;
- if (current === this.rootDOMNode)
+ if (objectsAreSame(current, this.rootDOMNode))
foundRoot = true;
var crumb = document.createElement("span");
@@ -684,7 +962,7 @@ WebInspector.ElementsPanel.prototype = {
if (foundRoot)
crumb.addStyleClass("dimmed");
- if (current === this.focusedDOMNode)
+ if (objectsAreSame(current, this.focusedDOMNode))
crumb.addStyleClass("selected");
if (!crumbs.childNodes.length)
crumb.addStyleClass("end");
@@ -991,8 +1269,7 @@ WebInspector.ElementsPanel.prototype = {
switch (this.focusedDOMNode.nodeType) {
case Node.ELEMENT_NODE:
- // TODO: Introduce InspectorController.copyEvent that pushes appropriate markup into the clipboard.
- var data = null;
+ var data = this.focusedDOMNode.outerHTML;
break;
case Node.COMMENT_NODE:
@@ -1039,7 +1316,10 @@ WebInspector.ElementsPanel.prototype = {
{
InspectorController.toggleNodeSearch();
- this.nodeSearchButton.toggled = InspectorController.searchingForNode();
+ if (InspectorController.searchingForNode())
+ this.nodeSearchButton.addStyleClass("toggled-on");
+ else
+ this.nodeSearchButton.removeStyleClass("toggled-on");
}
}
diff --git a/WebCore/inspector/front-end/ElementsTreeOutline.js b/WebCore/inspector/front-end/ElementsTreeOutline.js
index 345a084..ef53209 100644
--- a/WebCore/inspector/front-end/ElementsTreeOutline.js
+++ b/WebCore/inspector/front-end/ElementsTreeOutline.js
@@ -51,7 +51,7 @@ WebInspector.ElementsTreeOutline.prototype = {
set rootDOMNode(x)
{
- if (this._rootDOMNode === x)
+ if (objectsAreSame(this._rootDOMNode, x))
return;
this._rootDOMNode = x;
@@ -66,7 +66,7 @@ WebInspector.ElementsTreeOutline.prototype = {
set focusedDOMNode(x)
{
- if (this._focusedDOMNode === x) {
+ if (objectsAreSame(this._focusedDOMNode, x)) {
this.revealAndSelectNode(x);
return;
}
@@ -79,11 +79,11 @@ WebInspector.ElementsTreeOutline.prototype = {
// and the select() call would change the focusedDOMNode and reenter this setter. So to
// avoid calling focusedNodeChanged() twice, first check if _focusedDOMNode is the same
// node as the one passed in.
- if (this._focusedDOMNode === x) {
+ if (objectsAreSame(this._focusedDOMNode, x)) {
this.focusedNodeChanged();
if (x && !this.suppressSelectHighlight) {
- InspectorController.highlightDOMNode(x.id);
+ InspectorController.highlightDOMNode(x);
if ("_restorePreviousHighlightNodeTimeout" in this)
clearTimeout(this._restorePreviousHighlightNodeTimeout);
@@ -92,7 +92,7 @@ WebInspector.ElementsTreeOutline.prototype = {
{
var hoveredNode = WebInspector.hoveredDOMNode;
if (hoveredNode)
- InspectorController.highlightDOMNode(hoveredNode.id);
+ InspectorController.highlightDOMNode(hoveredNode);
else
InspectorController.hideDOMNodeHighlight();
}
@@ -138,17 +138,19 @@ WebInspector.ElementsTreeOutline.prototype = {
focusedNodeChanged: function(forceUpdate) {},
- findTreeElement: function(node, isAncestor, getParent)
+ findTreeElement: function(node, isAncestor, getParent, equal)
{
if (typeof isAncestor === "undefined")
isAncestor = isAncestorIncludingParentFrames;
if (typeof getParent === "undefined")
getParent = parentNodeOrFrameElement;
+ if (typeof equal === "undefined")
+ equal = objectsAreSame;
- var treeElement = TreeOutline.prototype.findTreeElement.call(this, node, isAncestor, getParent);
+ var treeElement = TreeOutline.prototype.findTreeElement.call(this, node, isAncestor, getParent, equal);
if (!treeElement && node.nodeType === Node.TEXT_NODE) {
// The text node might have been inlined if it was short, so try to find the parent element.
- treeElement = TreeOutline.prototype.findTreeElement.call(this, node.parentNode, isAncestor, getParent);
+ treeElement = TreeOutline.prototype.findTreeElement.call(this, node.parentNode, isAncestor, getParent, equal);
}
return treeElement;
@@ -246,7 +248,7 @@ WebInspector.ElementsTreeOutline.prototype.__proto__ = TreeOutline.prototype;
WebInspector.ElementsTreeElement = function(node)
{
- var hasChildren = Preferences.ignoreWhitespace ? (firstChildSkippingWhitespace.call(node) ? true : false) : node.hasChildNodes();
+ var hasChildren = node.contentDocument || (Preferences.ignoreWhitespace ? (firstChildSkippingWhitespace.call(node) ? true : false) : node.hasChildNodes());
var titleInfo = nodeTitleInfo.call(node, hasChildren, WebInspector.linkifyURL);
if (titleInfo.hasChildren)
@@ -385,13 +387,8 @@ WebInspector.ElementsTreeElement.prototype = {
this.updateChildren();
},
-
- updateChildren: function(fullRefresh)
- {
- WebInspector.domAgent.getChildNodesAsync(this.representedObject, this._updateChildren.bind(this, fullRefresh));
- },
- _updateChildren: function(fullRefresh)
+ updateChildren: function(fullRefresh)
{
if (fullRefresh) {
var selectedTreeElement = this.treeOutline.selectedTreeElement;
@@ -409,11 +406,11 @@ WebInspector.ElementsTreeElement.prototype = {
var child = (Preferences.ignoreWhitespace ? firstChildSkippingWhitespace.call(node) : node.firstChild);
while (child) {
var currentTreeElement = treeElement.children[treeChildIndex];
- if (!currentTreeElement || currentTreeElement.representedObject !== child) {
+ if (!currentTreeElement || !objectsAreSame(currentTreeElement.representedObject, child)) {
// Find any existing element that is later in the children list.
var existingTreeElement = null;
for (var i = (treeChildIndex + 1); i < treeElement.children.length; ++i) {
- if (treeElement.children[i].representedObject === child) {
+ if (objectsAreSame(treeElement.children[i].representedObject, child)) {
existingTreeElement = treeElement.children[i];
break;
}
@@ -448,7 +445,9 @@ WebInspector.ElementsTreeElement.prototype = {
var currentNode = currentChild.representedObject;
var currentParentNode = currentNode.parentNode;
- if (currentParentNode === this.representedObject)
+ if (objectsAreSame(currentParentNode, this.representedObject))
+ continue;
+ if (this.representedObject.contentDocument && objectsAreSame(currentParentNode, this.representedObject.contentDocument))
continue;
var selectedTreeElement = this.treeOutline.selectedTreeElement;
@@ -456,8 +455,13 @@ WebInspector.ElementsTreeElement.prototype = {
this.select();
this.removeChildAtIndex(i);
+
+ if (this.treeOutline.panel && currentNode.contentDocument)
+ this.treeOutline.panel.unregisterMutationEventListeners(currentNode.contentDocument.defaultView);
}
+ if (this.representedObject.contentDocument)
+ updateChildrenOfNode(this.representedObject.contentDocument);
updateChildrenOfNode(this.representedObject);
var lastChild = this.children[this.children.length - 1];
@@ -473,6 +477,9 @@ WebInspector.ElementsTreeElement.prototype = {
onexpand: function()
{
this.treeOutline.updateSelection();
+
+ if (this.treeOutline.panel && this.representedObject.contentDocument)
+ this.treeOutline.panel.registerMutationEventListeners(this.representedObject.contentDocument.defaultView);
},
oncollapse: function()
@@ -686,7 +693,7 @@ WebInspector.ElementsTreeElement.prototype = {
}
if (!parseElement.hasAttributes()) {
- this.representedObject.removeAttribute(attributeName);
+ InspectorController.inspectedWindow().Element.prototype.removeAttribute.call(this.representedObject, attributeName);
this._updateTitle();
moveToNextAttributeIfNeeded.call(this);
return;
@@ -697,12 +704,12 @@ WebInspector.ElementsTreeElement.prototype = {
var attr = parseElement.attributes[i];
foundOriginalAttribute = foundOriginalAttribute || attr.name === attributeName;
try {
- this.representedObject.setAttribute(attr.name, attr.value);
+ InspectorController.inspectedWindow().Element.prototype.setAttribute.call(this.representedObject, attr.name, attr.value);
} catch(e) {} // ignore invalid attribute (innerHTML doesn't throw errors, but this can)
}
if (!foundOriginalAttribute)
- this.representedObject.removeAttribute(attributeName);
+ InspectorController.inspectedWindow().Element.prototype.removeAttribute.call(this.representedObject, attributeName);
this._updateTitle();
diff --git a/WebCore/inspector/front-end/Images/cookie.png b/WebCore/inspector/front-end/Images/cookie.png
deleted file mode 100644
index 386d52b..0000000
--- a/WebCore/inspector/front-end/Images/cookie.png
+++ /dev/null
Binary files differ
diff --git a/WebCore/inspector/front-end/InjectedScript.js b/WebCore/inspector/front-end/InjectedScript.js
index 4144826..4611b48 100644
--- a/WebCore/inspector/front-end/InjectedScript.js
+++ b/WebCore/inspector/front-end/InjectedScript.js
@@ -27,20 +27,12 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-var InjectedScript = {};
-
-// Called from within InspectorController on the 'inspected page' side.
-InjectedScript.reset = function()
-{
- InjectedScript._styles = {};
- InjectedScript._styleRules = {};
- InjectedScript._lastStyleId = 0;
- InjectedScript._lastStyleRuleId = 0;
- InjectedScript._searchResults = [];
- InjectedScript._includedInSearchResultsPropertyName = "__includedInInspectorSearchResults";
-}
-
-InjectedScript.reset();
+var InjectedScript = {
+ _styles: {},
+ _styleRules: {},
+ _lastStyleId: 0,
+ _lastStyleRuleId: 0
+};
InjectedScript.getStyles = function(nodeId, authorOnly)
{
@@ -182,14 +174,12 @@ InjectedScript.toggleStyleEnabled = function(styleId, propertyName, disabled)
return InjectedScript._serializeStyle(style, true);
}
-InjectedScript.applyStyleRuleText = function(ruleId, newContent, selectedNodeId)
+InjectedScript.applyStyleRuleText = function(ruleId, newContent, selectedNode)
{
var rule = InjectedScript._styleRules[ruleId];
if (!rule)
return false;
- var selectedNode = InjectedScript._nodeForId(selectedNodeId);
-
try {
var stylesheet = rule.parentStyleSheet;
stylesheet.addRule(newContent);
@@ -204,14 +194,20 @@ InjectedScript.applyStyleRuleText = function(ruleId, newContent, selectedNodeId)
}
}
- return [InjectedScript._serializeRule(newRule), InjectedScript._doesSelectorAffectNode(newContent, selectedNode)];
+ var nodes = selectedNode.ownerDocument.querySelectorAll(newContent);
+ for (var i = 0; i < nodes.length; ++i) {
+ if (nodes[i] === selectedNode) {
+ return [InjectedScript._serializeRule(newRule), true];
+ }
+ }
+ return [InjectedScript._serializeRule(newRule), false];
} catch(e) {
// Report invalid syntax.
return false;
}
}
-InjectedScript.addStyleSelector = function(newContent, selectedNodeId)
+InjectedScript.addStyleSelector = function(newContent)
{
var stylesheet = InjectedScript.stylesheet;
if (!stylesheet) {
@@ -231,28 +227,10 @@ InjectedScript.addStyleSelector = function(newContent, selectedNodeId)
return false;
}
- var selectedNode = InjectedScript._nodeForId(selectedNodeId);
- var rule = stylesheet.cssRules[stylesheet.cssRules.length - 1];
- rule.__isViaInspector = true;
-
- return [ InjectedScript._serializeRule(rule), InjectedScript._doesSelectorAffectNode(newContent, selectedNode) ];
-}
-
-InjectedScript._doesSelectorAffectNode = function(selectorText, node)
-{
- if (!node)
- return false;
- var nodes = node.ownerDocument.querySelectorAll(selectorText);
- for (var i = 0; i < nodes.length; ++i) {
- if (nodes[i] === node) {
- return true;
- }
- }
- return false;
+ return InjectedScript._serializeRule(stylesheet.cssRules[stylesheet.cssRules.length - 1]);
}
-InjectedScript.setStyleProperty = function(styleId, name, value)
-{
+InjectedScript.setStyleProperty = function(styleId, name, value) {
var style = InjectedScript._styles[styleId];
if (!style)
return false;
@@ -273,18 +251,17 @@ InjectedScript._serializeRule = function(rule)
}
ruleValue.isUserAgent = parentStyleSheet && !parentStyleSheet.ownerNode && !parentStyleSheet.href;
ruleValue.isUser = parentStyleSheet && parentStyleSheet.ownerNode && parentStyleSheet.ownerNode.nodeName == "#document";
- ruleValue.isViaInspector = !!rule.__isViaInspector;
// Bind editable scripts only.
var doBind = !ruleValue.isUserAgent && !ruleValue.isUser;
ruleValue.style = InjectedScript._serializeStyle(rule.style, doBind);
if (doBind) {
- if (!rule.id) {
- rule.id = InjectedScript._lastStyleRuleId++;
- InjectedScript._styleRules[rule.id] = rule;
+ if (!rule._id) {
+ rule._id = InjectedScript._lastStyleRuleId++;
+ InjectedScript._styleRules[rule._id] = rule;
}
- ruleValue.id = rule.id;
+ ruleValue.id = rule._id;
}
return ruleValue;
}
@@ -318,11 +295,11 @@ InjectedScript._serializeStyle = function(style, doBind)
result.uniqueStyleProperties = InjectedScript._getUniqueStyleProperties(style);
if (doBind) {
- if (!style.id) {
- style.id = InjectedScript._lastStyleId++;
- InjectedScript._styles[style.id] = style;
+ if (!style._id) {
+ style._id = InjectedScript._lastStyleId++;
+ InjectedScript._styles[style._id] = style;
}
- result.id = style.id;
+ result.id = style._id;
}
return result;
}
@@ -428,7 +405,6 @@ InjectedScript.getProperties = function(objectProxy, ignoreHasOwnProperty)
return false;
var properties = [];
-
// Go over properties, prepare results.
for (var propertyName in object) {
if (!ignoreHasOwnProperty && "hasOwnProperty" in object && !object.hasOwnProperty(propertyName))
@@ -439,31 +415,29 @@ InjectedScript.getProperties = function(objectProxy, ignoreHasOwnProperty)
continue;
var property = {};
property.name = propertyName;
- property.parentObjectProxy = objectProxy;
var isGetter = object["__lookupGetter__"] && object.__lookupGetter__(propertyName);
if (!property.isGetter) {
var childObject = object[propertyName];
- var childObjectProxy = {};
- childObjectProxy.objectId = objectProxy.objectId;
- childObjectProxy.path = objectProxy.path ? objectProxy.path.slice() : [];
- childObjectProxy.path.push(propertyName);
-
- childObjectProxy.protoDepth = objectProxy.protoDepth || 0;
- childObjectProxy.description = Object.describe(childObject, true);
- property.value = childObjectProxy;
-
- var type = typeof childObject;
- if (type === "object" || type === "function") {
+ property.type = typeof childObject;
+ property.textContent = Object.describe(childObject, true);
+ property.parentObjectProxy = objectProxy;
+ var parentPath = objectProxy.path.slice();
+ property.childObjectProxy = {
+ objectId : objectProxy.objectId,
+ path : parentPath.splice(parentPath.length, 0, propertyName),
+ protoDepth : objectProxy.protoDepth
+ };
+ if (childObject && (property.type === "object" || property.type === "function")) {
for (var subPropertyName in childObject) {
if (propertyName === "__treeElementIdentifier")
continue;
- childObjectProxy.hasChildren = true;
+ property.hasChildren = true;
break;
}
}
} else {
// FIXME: this should show something like "getter" (bug 16734).
- property.value = { description: "\u2014" }; // em dash
+ property.textContent = "\u2014"; // em dash
property.isGetter = true;
}
properties.push(property);
@@ -505,338 +479,6 @@ InjectedScript.setPropertyValue = function(objectProxy, propertyName, expression
}
}
-InjectedScript.evaluate = function(expression)
-{
- InjectedScript._ensureCommandLineAPIInstalled();
- // Surround the expression in with statements to inject our command line API so that
- // the window object properties still take more precedent than our API functions.
- expression = "with (window._inspectorCommandLineAPI) { with (window) { " + expression + " } }";
-
- var result = {};
- try {
- var value = InjectedScript._window().eval(expression);
- var wrapper = InspectorController.wrapObject(value);
- if (typeof wrapper === "object" && wrapper.exception)
- result.exception = wrapper.exception;
- else
- result.value = wrapper;
- } catch (e) {
- result.exception = e.toString();
- }
- return result;
-}
-
-InjectedScript.addInspectedNode = function(nodeId)
-{
- var node = InjectedScript._nodeForId(nodeId);
- if (!node)
- return false;
-
- InjectedScript._ensureCommandLineAPIInstalled();
- var inspectedNodes = InjectedScript._window()._inspectorCommandLineAPI._inspectedNodes;
- inspectedNodes.unshift(node);
- if (inspectedNodes.length >= 5)
- inspectedNodes.pop();
- return true;
-}
-
-InjectedScript.performSearch = function(whitespaceTrimmedQuery, searchResultsProperty)
-{
- var tagNameQuery = whitespaceTrimmedQuery;
- var attributeNameQuery = whitespaceTrimmedQuery;
- var startTagFound = (tagNameQuery.indexOf("<") === 0);
- var endTagFound = (tagNameQuery.lastIndexOf(">") === (tagNameQuery.length - 1));
-
- if (startTagFound || endTagFound) {
- var tagNameQueryLength = tagNameQuery.length;
- tagNameQuery = tagNameQuery.substring((startTagFound ? 1 : 0), (endTagFound ? (tagNameQueryLength - 1) : tagNameQueryLength));
- }
-
- // Check the tagNameQuery is it is a possibly valid tag name.
- if (!/^[a-zA-Z0-9\-_:]+$/.test(tagNameQuery))
- tagNameQuery = null;
-
- // Check the attributeNameQuery is it is a possibly valid tag name.
- if (!/^[a-zA-Z0-9\-_:]+$/.test(attributeNameQuery))
- attributeNameQuery = null;
-
- const escapedQuery = whitespaceTrimmedQuery.escapeCharacters("'");
- const escapedTagNameQuery = (tagNameQuery ? tagNameQuery.escapeCharacters("'") : null);
- const escapedWhitespaceTrimmedQuery = whitespaceTrimmedQuery.escapeCharacters("'");
- const searchResultsProperty = InjectedScript._includedInSearchResultsPropertyName;
-
- function addNodesToResults(nodes, length, getItem)
- {
- if (!length)
- return;
-
- var nodeIds = [];
- for (var i = 0; i < length; ++i) {
- var node = getItem.call(nodes, i);
- // Skip this node if it already has the property.
- if (searchResultsProperty in node)
- continue;
-
- if (!InjectedScript._searchResults.length) {
- InjectedScript._currentSearchResultIndex = 0;
- }
-
- node[searchResultsProperty] = true;
- InjectedScript._searchResults.push(node);
- var nodeId = InspectorController.pushNodePathToFrontend(node, false);
- nodeIds.push(nodeId);
- }
- InspectorController.addNodesToSearchResult(nodeIds.join(","));
- }
-
- function matchExactItems(doc)
- {
- matchExactId.call(this, doc);
- matchExactClassNames.call(this, doc);
- matchExactTagNames.call(this, doc);
- matchExactAttributeNames.call(this, doc);
- }
-
- function matchExactId(doc)
- {
- const result = doc.__proto__.getElementById.call(doc, whitespaceTrimmedQuery);
- addNodesToResults.call(this, result, (result ? 1 : 0), function() { return this });
- }
-
- function matchExactClassNames(doc)
- {
- const result = doc.__proto__.getElementsByClassName.call(doc, whitespaceTrimmedQuery);
- addNodesToResults.call(this, result, result.length, result.item);
- }
-
- function matchExactTagNames(doc)
- {
- if (!tagNameQuery)
- return;
- const result = doc.__proto__.getElementsByTagName.call(doc, tagNameQuery);
- addNodesToResults.call(this, result, result.length, result.item);
- }
-
- function matchExactAttributeNames(doc)
- {
- if (!attributeNameQuery)
- return;
- const result = doc.__proto__.querySelectorAll.call(doc, "[" + attributeNameQuery + "]");
- addNodesToResults.call(this, result, result.length, result.item);
- }
-
- function matchPartialTagNames(doc)
- {
- if (!tagNameQuery)
- return;
- const result = doc.__proto__.evaluate.call(doc, "//*[contains(name(), '" + escapedTagNameQuery + "')]", doc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE);
- addNodesToResults.call(this, result, result.snapshotLength, result.snapshotItem);
- }
-
- function matchStartOfTagNames(doc)
- {
- if (!tagNameQuery)
- return;
- const result = doc.__proto__.evaluate.call(doc, "//*[starts-with(name(), '" + escapedTagNameQuery + "')]", doc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE);
- addNodesToResults.call(this, result, result.snapshotLength, result.snapshotItem);
- }
-
- function matchPartialTagNamesAndAttributeValues(doc)
- {
- if (!tagNameQuery) {
- matchPartialAttributeValues.call(this, doc);
- return;
- }
-
- const result = doc.__proto__.evaluate.call(doc, "//*[contains(name(), '" + escapedTagNameQuery + "') or contains(@*, '" + escapedQuery + "')]", doc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE);
- addNodesToResults.call(this, result, result.snapshotLength, result.snapshotItem);
- }
-
- function matchPartialAttributeValues(doc)
- {
- const result = doc.__proto__.evaluate.call(doc, "//*[contains(@*, '" + escapedQuery + "')]", doc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE);
- addNodesToResults.call(this, result, result.snapshotLength, result.snapshotItem);
- }
-
- function matchStyleSelector(doc)
- {
- const result = doc.__proto__.querySelectorAll.call(doc, whitespaceTrimmedQuery);
- addNodesToResults.call(this, result, result.length, result.item);
- }
-
- function matchPlainText(doc)
- {
- const result = doc.__proto__.evaluate.call(doc, "//text()[contains(., '" + escapedQuery + "')] | //comment()[contains(., '" + escapedQuery + "')]", doc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE);
- addNodesToResults.call(this, result, result.snapshotLength, result.snapshotItem);
- }
-
- function matchXPathQuery(doc)
- {
- const result = doc.__proto__.evaluate.call(doc, whitespaceTrimmedQuery, doc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE);
- addNodesToResults.call(this, result, result.snapshotLength, result.snapshotItem);
- }
-
- function finishedSearching()
- {
- // Remove the searchResultsProperty now that the search is finished.
- for (var i = 0; i < InjectedScript._searchResults.length; ++i)
- delete InjectedScript._searchResults[i][searchResultsProperty];
- }
-
- const mainFrameDocument = InjectedScript._window().document;
- const searchDocuments = [mainFrameDocument];
- var searchFunctions;
- if (tagNameQuery && startTagFound && endTagFound)
- searchFunctions = [matchExactTagNames, matchPlainText];
- else if (tagNameQuery && startTagFound)
- searchFunctions = [matchStartOfTagNames, matchPlainText];
- else if (tagNameQuery && endTagFound) {
- // FIXME: we should have a matchEndOfTagNames search function if endTagFound is true but not startTagFound.
- // This requires ends-with() support in XPath, WebKit only supports starts-with() and contains().
- searchFunctions = [matchPartialTagNames, matchPlainText];
- } else if (whitespaceTrimmedQuery === "//*" || whitespaceTrimmedQuery === "*") {
- // These queries will match every node. Matching everything isn't useful and can be slow for large pages,
- // so limit the search functions list to plain text and attribute matching.
- searchFunctions = [matchPartialAttributeValues, matchPlainText];
- } else
- searchFunctions = [matchExactItems, matchStyleSelector, matchPartialTagNamesAndAttributeValues, matchPlainText, matchXPathQuery];
-
- // Find all frames, iframes and object elements to search their documents.
- const querySelectorAllFunction = InjectedScript._window().Document.prototype.querySelectorAll;
- const subdocumentResult = querySelectorAllFunction.call(mainFrameDocument, "iframe, frame, object");
-
- for (var i = 0; i < subdocumentResult.length; ++i) {
- var element = subdocumentResult.item(i);
- if (element.contentDocument)
- searchDocuments.push(element.contentDocument);
- }
-
- const panel = InjectedScript;
- var documentIndex = 0;
- var searchFunctionIndex = 0;
- var chunkIntervalIdentifier = null;
-
- // Split up the work into chunks so we don't block the UI thread while processing.
-
- function processChunk()
- {
- var searchDocument = searchDocuments[documentIndex];
- var searchFunction = searchFunctions[searchFunctionIndex];
-
- if (++searchFunctionIndex > searchFunctions.length) {
- searchFunction = searchFunctions[0];
- searchFunctionIndex = 0;
-
- if (++documentIndex > searchDocuments.length) {
- if (panel._currentSearchChunkIntervalIdentifier === chunkIntervalIdentifier)
- delete panel._currentSearchChunkIntervalIdentifier;
- clearInterval(chunkIntervalIdentifier);
- finishedSearching.call(panel);
- return;
- }
-
- searchDocument = searchDocuments[documentIndex];
- }
-
- if (!searchDocument || !searchFunction)
- return;
-
- try {
- searchFunction.call(panel, searchDocument);
- } catch(err) {
- // ignore any exceptions. the query might be malformed, but we allow that.
- }
- }
-
- processChunk();
-
- chunkIntervalIdentifier = setInterval(processChunk, 25);
- InjectedScript._currentSearchChunkIntervalIdentifier = chunkIntervalIdentifier;
- return true;
-}
-
-InjectedScript.searchCanceled = function()
-{
- if (InjectedScript._searchResults) {
- const searchResultsProperty = InjectedScript._includedInSearchResultsPropertyName;
- for (var i = 0; i < this._searchResults.length; ++i) {
- var node = this._searchResults[i];
-
- // Remove the searchResultsProperty since there might be an unfinished search.
- delete node[searchResultsProperty];
- }
- }
-
- if (InjectedScript._currentSearchChunkIntervalIdentifier) {
- clearInterval(InjectedScript._currentSearchChunkIntervalIdentifier);
- delete InjectedScript._currentSearchChunkIntervalIdentifier;
- }
- InjectedScript._searchResults = [];
- return true;
-}
-
-InjectedScript.getCookies = function()
-{
- return InjectedScript._window().document.cookie;
-}
-
-InjectedScript._ensureCommandLineAPIInstalled = function(inspectedWindow)
-{
- var inspectedWindow = InjectedScript._window();
- if (inspectedWindow._inspectorCommandLineAPI)
- return;
-
- inspectedWindow.eval("window._inspectorCommandLineAPI = { \
- $: function() { return document.getElementById.apply(document, arguments) }, \
- $$: function() { return document.querySelectorAll.apply(document, arguments) }, \
- $x: function(xpath, context) { \
- var nodes = []; \
- try { \
- var doc = context || document; \
- var results = doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null); \
- var node; \
- while (node = results.iterateNext()) nodes.push(node); \
- } catch (e) {} \
- return nodes; \
- }, \
- dir: function() { return console.dir.apply(console, arguments) }, \
- dirxml: function() { return console.dirxml.apply(console, arguments) }, \
- keys: function(o) { var a = []; for (var k in o) a.push(k); return a; }, \
- values: function(o) { var a = []; for (var k in o) a.push(o[k]); return a; }, \
- profile: function() { return console.profile.apply(console, arguments) }, \
- profileEnd: function() { return console.profileEnd.apply(console, arguments) }, \
- _inspectedNodes: [], \
- get $0() { return _inspectorCommandLineAPI._inspectedNodes[0] }, \
- get $1() { return _inspectorCommandLineAPI._inspectedNodes[1] }, \
- get $2() { return _inspectorCommandLineAPI._inspectedNodes[2] }, \
- get $3() { return _inspectorCommandLineAPI._inspectedNodes[3] }, \
- get $4() { return _inspectorCommandLineAPI._inspectedNodes[4] } \
- };");
-
- inspectedWindow._inspectorCommandLineAPI.clear = InspectorController.wrapCallback(InspectorController.clearMessages.bind(InspectorController, true));
- inspectedWindow._inspectorCommandLineAPI.inspect = InspectorController.wrapCallback(inspectObject.bind(this));
-
- function inspectObject(o)
- {
- if (arguments.length === 0)
- return;
-
- inspectedWindow.console.log(o);
- if (Object.type(o, inspectedWindow) === "node") {
- InspectorController.pushNodePathToFrontend(o, true);
- } else {
- switch (Object.describe(o)) {
- case "Database":
- InspectorController.selectDatabase(o);
- break;
- case "Storage":
- InspectorController.selectDOMStorage(o);
- break;
- }
- }
- }
-}
-
InjectedScript._resolveObject = function(objectProxy)
{
var object = InjectedScript._objectForId(objectProxy.objectId);
@@ -844,11 +486,11 @@ InjectedScript._resolveObject = function(objectProxy)
var protoDepth = objectProxy.protoDepth;
// Follow the property path.
- for (var i = 0; object && path && i < path.length; ++i)
+ for (var i = 0; object && i < path.length; ++i)
object = object[path[i]];
// Get to the necessary proto layer.
- for (var i = 0; object && protoDepth && i < protoDepth; ++i)
+ for (var i = 0; object && i < protoDepth; ++i)
object = object.__proto__;
return object;
@@ -863,34 +505,12 @@ InjectedScript._window = function()
InjectedScript._nodeForId = function(nodeId)
{
- if (!nodeId)
- return null;
- return InspectorController.nodeForId(nodeId);
+ // TODO: replace with node lookup in the InspectorDOMAgent once DOMAgent nodes are used.
+ return nodeId;
}
InjectedScript._objectForId = function(objectId)
{
- if (typeof objectId === "number")
- return InjectedScript._nodeForId(objectId);
- else if (typeof objectId === "string")
- return InspectorController.unwrapObject(objectId);
-
- // TODO: move scope chain objects to proxy-based schema.
+ // TODO: replace with node lookups for node ids and evaluation result lookups for the rest of ids.
return objectId;
}
-
-// Called from within InspectorController on the 'inspected page' side.
-InjectedScript.createProxyObject = function(object, objectId)
-{
- var result = {};
- result.objectId = objectId;
- result.type = Object.type(object, InjectedScript._window());
- if (result.type === "node")
- result.nodeId = InspectorController.pushNodePathToFrontend(object, false);
- try {
- result.description = Object.describe(object, true, InjectedScript._window());
- } catch (e) {
- result.exception = e.toString();
- }
- return result;
-}
diff --git a/WebCore/inspector/front-end/ObjectPropertiesSection.js b/WebCore/inspector/front-end/ObjectPropertiesSection.js
index f0b877d..9b03940 100644
--- a/WebCore/inspector/front-end/ObjectPropertiesSection.js
+++ b/WebCore/inspector/front-end/ObjectPropertiesSection.js
@@ -124,6 +124,13 @@ WebInspector.ObjectPropertyTreeElement = function(property)
}
WebInspector.ObjectPropertyTreeElement.prototype = {
+ safePropertyValue: function(object, propertyName)
+ {
+ if (object["__lookupGetter__"] && object.__lookupGetter__(propertyName))
+ return;
+ return object[propertyName];
+ },
+
onpopulate: function()
{
if (this.children.length && !this.shouldRefreshChildren)
@@ -140,7 +147,7 @@ WebInspector.ObjectPropertyTreeElement.prototype = {
self.appendChild(new self.treeOutline.section.treeElementConstructor(properties[i]));
}
};
- InspectorController.getProperties(this.property.value, false, callback);
+ InspectorController.getProperties(this.property.childObjectProxy, false, callback);
},
ondblclick: function(element, event)
@@ -161,7 +168,7 @@ WebInspector.ObjectPropertyTreeElement.prototype = {
this.valueElement = document.createElement("span");
this.valueElement.className = "value";
- this.valueElement.textContent = this.property.value.description;
+ this.valueElement.textContent = this.property.textContent;
if (this.property.isGetter)
this.valueElement.addStyleClass("dimmed");
@@ -170,7 +177,7 @@ WebInspector.ObjectPropertyTreeElement.prototype = {
this.listItemElement.appendChild(nameElement);
this.listItemElement.appendChild(document.createTextNode(": "));
this.listItemElement.appendChild(this.valueElement);
- this.hasChildren = this.property.value.hasChildren;
+ this.hasChildren = this.property.hasChildren;
},
updateSiblings: function()
diff --git a/WebCore/inspector/front-end/ObjectProxy.js b/WebCore/inspector/front-end/ObjectProxy.js
index dbb9e48..fa7816e 100644
--- a/WebCore/inspector/front-end/ObjectProxy.js
+++ b/WebCore/inspector/front-end/ObjectProxy.js
@@ -28,17 +28,18 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-WebInspector.ObjectProxy = function(objectId, path, protoDepth, description, hasChildren)
+WebInspector.ObjectProxy = function(objectId, path, protoDepth)
{
this.objectId = objectId;
this.path = path || [];
this.protoDepth = protoDepth || 0;
- this.description = description;
- this.hasChildren = hasChildren;
}
WebInspector.ObjectPropertyProxy = function(name, object)
{
this.name = name;
- this.value = new WebInspector.ObjectProxy(object, [], 0, Object.describe(object, true), true);
+ this.type = "object";
+ this.hasChildren = true;
+ this.textContent = Object.describe(object, true);
+ this.childObjectProxy = new WebInspector.ObjectProxy(object);
}
diff --git a/WebCore/inspector/front-end/Panel.js b/WebCore/inspector/front-end/Panel.js
index 5046f6b..3e2212c 100644
--- a/WebCore/inspector/front-end/Panel.js
+++ b/WebCore/inspector/front-end/Panel.js
@@ -66,6 +66,18 @@ WebInspector.Panel.prototype = {
return this._toolbarItem;
},
+ createStatusBarButton: function()
+ {
+ var button = document.createElement("button");
+ var glyph = document.createElement("div");
+ glyph.className = "glyph";
+ button.appendChild(glyph);
+ var glyphShadow = document.createElement("div");
+ glyphShadow.className = "glyph shadow";
+ button.appendChild(glyphShadow);
+ return button;
+ },
+
show: function()
{
WebInspector.View.prototype.show.call(this);
diff --git a/WebCore/inspector/front-end/ProfileView.js b/WebCore/inspector/front-end/ProfileView.js
index 5c9fcda..2517bd2 100644
--- a/WebCore/inspector/front-end/ProfileView.js
+++ b/WebCore/inspector/front-end/ProfileView.js
@@ -56,19 +56,25 @@ WebInspector.ProfileView = function(profile)
this.viewSelectElement.appendChild(heavyViewOption);
this.viewSelectElement.appendChild(treeViewOption);
- this.percentButton = new WebInspector.StatusBarButton("", "percent-time-status-bar-item");
+ this.percentButton = document.createElement("button");
+ this.percentButton.className = "percent-time-status-bar-item status-bar-item";
this.percentButton.addEventListener("click", this._percentClicked.bind(this), false);
- this.focusButton = new WebInspector.StatusBarButton(WebInspector.UIString("Focus selected function."), "focus-profile-node-status-bar-item");
+ this.focusButton = document.createElement("button");
+ this.focusButton.title = WebInspector.UIString("Focus selected function.");
+ this.focusButton.className = "focus-profile-node-status-bar-item status-bar-item";
this.focusButton.disabled = true;
this.focusButton.addEventListener("click", this._focusClicked.bind(this), false);
- this.excludeButton = new WebInspector.StatusBarButton(WebInspector.UIString("Exclude selected function."), "exclude-profile-node-status-bar-item");
+ this.excludeButton = document.createElement("button");
+ this.excludeButton.title = WebInspector.UIString("Exclude selected function.");
+ this.excludeButton.className = "exclude-profile-node-status-bar-item status-bar-item";
this.excludeButton.disabled = true;
this.excludeButton.addEventListener("click", this._excludeClicked.bind(this), false);
- this.resetButton = new WebInspector.StatusBarButton(WebInspector.UIString("Restore all functions."), "reset-profile-status-bar-item");
- this.resetButton.visible = false;
+ this.resetButton = document.createElement("button");
+ this.resetButton.title = WebInspector.UIString("Restore all functions.");
+ this.resetButton.className = "reset-profile-status-bar-item status-bar-item hidden";
this.resetButton.addEventListener("click", this._resetClicked.bind(this), false);
this.profile = profile;
@@ -84,7 +90,7 @@ WebInspector.ProfileView = function(profile)
WebInspector.ProfileView.prototype = {
get statusBarItems()
{
- return [this.viewSelectElement, this.percentButton.element, this.focusButton.element, this.excludeButton.element, this.resetButton.element];
+ return [this.viewSelectElement, this.percentButton, this.focusButton, this.excludeButton, this.resetButton];
},
get profile()
@@ -433,10 +439,10 @@ WebInspector.ProfileView.prototype = {
{
if (this.showSelfTimeAsPercent && this.showTotalTimeAsPercent && this.showAverageTimeAsPercent) {
this.percentButton.title = WebInspector.UIString("Show absolute total and self times.");
- this.percentButton.toggled = true;
+ this.percentButton.addStyleClass("toggled-on");
} else {
this.percentButton.title = WebInspector.UIString("Show total and self times as percentages.");
- this.percentButton.toggled = false;
+ this.percentButton.removeStyleClass("toggled-on");
}
},
@@ -445,7 +451,7 @@ WebInspector.ProfileView.prototype = {
if (!this.dataGrid.selectedNode)
return;
- this.resetButton.visible = true;
+ this.resetButton.removeStyleClass("hidden");
this.profileDataGridTree.focus(this.dataGrid.selectedNode);
this.refresh();
this.refreshVisibleData();
@@ -460,7 +466,7 @@ WebInspector.ProfileView.prototype = {
selectedNode.deselect();
- this.resetButton.visible = true;
+ this.resetButton.removeStyleClass("hidden");
this.profileDataGridTree.exclude(selectedNode);
this.refresh();
this.refreshVisibleData();
@@ -468,7 +474,7 @@ WebInspector.ProfileView.prototype = {
_resetClicked: function(event)
{
- this.resetButton.visible = false;
+ this.resetButton.addStyleClass("hidden");
this.profileDataGridTree.restore();
this.refresh();
this.refreshVisibleData();
diff --git a/WebCore/inspector/front-end/ProfilesPanel.js b/WebCore/inspector/front-end/ProfilesPanel.js
index e7ee064..c8b948a 100644
--- a/WebCore/inspector/front-end/ProfilesPanel.js
+++ b/WebCore/inspector/front-end/ProfilesPanel.js
@@ -59,10 +59,14 @@ WebInspector.ProfilesPanel = function()
this.profileViews.id = "profile-views";
this.element.appendChild(this.profileViews);
- this.enableToggleButton = new WebInspector.StatusBarButton("", "enable-toggle-status-bar-item");
+ this.enableToggleButton = this.createStatusBarButton();
+ this.enableToggleButton.className = "enable-toggle-status-bar-item status-bar-item";
this.enableToggleButton.addEventListener("click", this._toggleProfiling.bind(this), false);
- this.recordButton = new WebInspector.StatusBarButton(WebInspector.UIString("Start profiling."), "record-profile-status-bar-item");
+ this.recordButton = this.createStatusBarButton();
+ this.recordButton.title = WebInspector.UIString("Start profiling.");
+ this.recordButton.id = "record-profile-status-bar-item";
+ this.recordButton.className = "status-bar-item";
this.recordButton.addEventListener("click", this._recordClicked.bind(this), false);
this.recording = false;
@@ -83,7 +87,7 @@ WebInspector.ProfilesPanel.prototype = {
get statusBarItems()
{
- return [this.enableToggleButton.element, this.recordButton.element, this.profileViewStatusBarItemsContainer];
+ return [this.enableToggleButton, this.recordButton, this.profileViewStatusBarItemsContainer];
},
show: function()
@@ -313,10 +317,10 @@ WebInspector.ProfilesPanel.prototype = {
this.recording = isProfiling;
if (isProfiling) {
- this.recordButton.toggled = true;
+ this.recordButton.addStyleClass("toggled-on");
this.recordButton.title = WebInspector.UIString("Stop profiling.");
} else {
- this.recordButton.toggled = false;
+ this.recordButton.removeStyleClass("toggled-on");
this.recordButton.title = WebInspector.UIString("Start profiling.");
}
},
@@ -332,14 +336,14 @@ WebInspector.ProfilesPanel.prototype = {
{
if (InspectorController.profilerEnabled()) {
this.enableToggleButton.title = WebInspector.UIString("Profiling enabled. Click to disable.");
- this.enableToggleButton.toggled = true;
- this.recordButton.visible = true;
+ this.enableToggleButton.addStyleClass("toggled-on");
+ this.recordButton.removeStyleClass("hidden");
this.profileViewStatusBarItemsContainer.removeStyleClass("hidden");
this.panelEnablerView.visible = false;
} else {
this.enableToggleButton.title = WebInspector.UIString("Profiling disabled. Click to enable.");
- this.enableToggleButton.toggled = false;
- this.recordButton.visible = false;
+ this.enableToggleButton.removeStyleClass("toggled-on");
+ this.recordButton.addStyleClass("hidden");
this.profileViewStatusBarItemsContainer.addStyleClass("hidden");
this.panelEnablerView.visible = true;
}
diff --git a/WebCore/inspector/front-end/PropertiesSidebarPane.js b/WebCore/inspector/front-end/PropertiesSidebarPane.js
index 4e55761..2d32137 100644
--- a/WebCore/inspector/front-end/PropertiesSidebarPane.js
+++ b/WebCore/inspector/front-end/PropertiesSidebarPane.js
@@ -32,7 +32,7 @@ WebInspector.PropertiesSidebarPane = function()
}
WebInspector.PropertiesSidebarPane.prototype = {
- update: function(node)
+ update: function(object)
{
var body = this.bodyElement;
@@ -40,7 +40,7 @@ WebInspector.PropertiesSidebarPane.prototype = {
this.sections = [];
- if (!node)
+ if (!object)
return;
var self = this;
@@ -51,13 +51,13 @@ WebInspector.PropertiesSidebarPane.prototype = {
// Get array of prototype user-friendly names.
for (var i = 0; i < prototypes.length; ++i) {
- var prototype = new WebInspector.ObjectProxy(node.id, [], i);
+ var prototype = new WebInspector.ObjectProxy(object, [], i);
var section = new WebInspector.ObjectPropertiesSection(prototype, prototypes[i], WebInspector.UIString("Prototype"));
self.sections.push(section);
body.appendChild(section.element);
}
};
- InspectorController.getPrototypes(node.id, callback);
+ InspectorController.getPrototypes(object, callback);
}
}
diff --git a/WebCore/inspector/front-end/ResourcesPanel.js b/WebCore/inspector/front-end/ResourcesPanel.js
index bb7faa6..fb43551 100644
--- a/WebCore/inspector/front-end/ResourcesPanel.js
+++ b/WebCore/inspector/front-end/ResourcesPanel.js
@@ -139,11 +139,14 @@ WebInspector.ResourcesPanel = function()
this.element.appendChild(this.panelEnablerView.element);
- this.enableToggleButton = new WebInspector.StatusBarButton("", "enable-toggle-status-bar-item");
+ this.enableToggleButton = this.createStatusBarButton();
+ this.enableToggleButton.className = "enable-toggle-status-bar-item status-bar-item";
this.enableToggleButton.addEventListener("click", this._toggleResourceTracking.bind(this), false);
- this.largerResourcesButton = new WebInspector.StatusBarButton(WebInspector.UIString("Use small resource rows."), "resources-larger-resources-status-bar-item");
- this.largerResourcesButton.toggled = true;
+ this.largerResourcesButton = this.createStatusBarButton();
+ this.largerResourcesButton.id = "resources-larger-resources-status-bar-item";
+ this.largerResourcesButton.className = "status-bar-item toggled-on";
+ this.largerResourcesButton.title = WebInspector.UIString("Use small resource rows.");
this.largerResourcesButton.addEventListener("click", this._toggleLargerResources.bind(this), false);
this.sortingSelectElement = document.createElement("select");
@@ -208,7 +211,7 @@ WebInspector.ResourcesPanel.prototype = {
get statusBarItems()
{
- return [this.enableToggleButton.element, this.largerResourcesButton.element, this.sortingSelectElement];
+ return [this.enableToggleButton, this.largerResourcesButton, this.sortingSelectElement];
},
show: function()
@@ -464,14 +467,14 @@ WebInspector.ResourcesPanel.prototype = {
if (InspectorController.resourceTrackingEnabled()) {
this.enableToggleButton.title = WebInspector.UIString("Resource tracking enabled. Click to disable.");
- this.enableToggleButton.toggled = true;
- this.largerResourcesButton.visible = true;
+ this.enableToggleButton.addStyleClass("toggled-on");
+ this.largerResourcesButton.removeStyleClass("hidden");
this.sortingSelectElement.removeStyleClass("hidden");
this.panelEnablerView.visible = false;
} else {
this.enableToggleButton.title = WebInspector.UIString("Resource tracking disabled. Click to enable.");
- this.enableToggleButton.toggled = false;
- this.largerResourcesButton.visible = false;
+ this.enableToggleButton.removeStyleClass("toggled-on");
+ this.largerResourcesButton.addStyleClass("hidden");
this.sortingSelectElement.addStyleClass("hidden");
this.panelEnablerView.visible = true;
}
@@ -1073,12 +1076,12 @@ WebInspector.ResourcesPanel.prototype = {
if (this.resourcesTreeElement.smallChildren) {
this.resourcesGraphsElement.addStyleClass("small");
this.largerResourcesButton.title = WebInspector.UIString("Use large resource rows.");
- this.largerResourcesButton.toggled = false;
+ this.largerResourcesButton.removeStyleClass("toggled-on");
this._adjustScrollPosition();
} else {
this.resourcesGraphsElement.removeStyleClass("small");
this.largerResourcesButton.title = WebInspector.UIString("Use small resource rows.");
- this.largerResourcesButton.toggled = true;
+ this.largerResourcesButton.addStyleClass("toggled-on");
}
},
@@ -1543,11 +1546,6 @@ WebInspector.ResourceSidebarTreeElement.prototype = {
// Do nothing.
},
- get selectable()
- {
- return WebInspector.panels.resources._filterCategory == "all" || WebInspector.panels.resources._filterCategory == this.resource.category.name;
- },
-
createIconElement: function()
{
var previousIconElement = this.iconElement;
diff --git a/WebCore/inspector/front-end/ScriptsPanel.js b/WebCore/inspector/front-end/ScriptsPanel.js
index a97d5cf..0058374 100644
--- a/WebCore/inspector/front-end/ScriptsPanel.js
+++ b/WebCore/inspector/front-end/ScriptsPanel.js
@@ -151,10 +151,13 @@ WebInspector.ScriptsPanel = function()
this.element.appendChild(this.sidebarElement);
this.element.appendChild(this.sidebarResizeElement);
- this.enableToggleButton = new WebInspector.StatusBarButton("", "enable-toggle-status-bar-item");
+ this.enableToggleButton = this.createStatusBarButton();
+ this.enableToggleButton.className = "enable-toggle-status-bar-item status-bar-item";
this.enableToggleButton.addEventListener("click", this._toggleDebugging.bind(this), false);
- this.pauseOnExceptionButton = new WebInspector.StatusBarButton("", "scripts-pause-on-exceptions-status-bar-item");
+ this.pauseOnExceptionButton = this.createStatusBarButton();
+ this.pauseOnExceptionButton.id = "scripts-pause-on-exceptions-status-bar-item";
+ this.pauseOnExceptionButton.className = "status-bar-item";
this.pauseOnExceptionButton.addEventListener("click", this._togglePauseOnExceptions.bind(this), false);
this._breakpointsURLMap = {};
@@ -205,7 +208,7 @@ WebInspector.ScriptsPanel.prototype = {
get statusBarItems()
{
- return [this.enableToggleButton.element, this.pauseOnExceptionButton.element];
+ return [this.enableToggleButton, this.pauseOnExceptionButton];
},
get paused()
@@ -374,8 +377,13 @@ WebInspector.ScriptsPanel.prototype = {
var panel = this;
function delayedEvaluation()
{
+ if (!code) {
+ // Evaluate into properties in scope of the selected call frame.
+ callback(panel._variablesInScope(callFrame));
+ return;
+ }
try {
- callback(InspectorController.wrapObject(callFrame.evaluate(code)));
+ callback(callFrame.evaluate(code));
} catch (e) {
callback(e, true);
}
@@ -383,14 +391,10 @@ WebInspector.ScriptsPanel.prototype = {
setTimeout(delayedEvaluation, 0);
},
- variablesInSelectedCallFrame: function()
+ _variablesInScope: function(callFrame)
{
- var selectedCallFrame = this.sidebarPanes.callstack.selectedCallFrame;
- if (!this._paused || !selectedCallFrame)
- return {};
-
var result = {};
- var scopeChain = selectedCallFrame.scopeChain;
+ var scopeChain = callFrame.scopeChain;
for (var i = 0; i < scopeChain.length; ++i) {
var scopeObject = scopeChain[i];
for (var property in scopeObject)
@@ -760,10 +764,10 @@ WebInspector.ScriptsPanel.prototype = {
{
if (InspectorController.pauseOnExceptions()) {
this.pauseOnExceptionButton.title = WebInspector.UIString("Don't pause on exceptions.");
- this.pauseOnExceptionButton.toggled = true;
+ this.pauseOnExceptionButton.addStyleClass("toggled-on");
} else {
this.pauseOnExceptionButton.title = WebInspector.UIString("Pause on exceptions.");
- this.pauseOnExceptionButton.toggled = false;
+ this.pauseOnExceptionButton.removeStyleClass("toggled-on");
}
},
@@ -771,13 +775,13 @@ WebInspector.ScriptsPanel.prototype = {
{
if (InspectorController.debuggerEnabled()) {
this.enableToggleButton.title = WebInspector.UIString("Debugging enabled. Click to disable.");
- this.enableToggleButton.toggled = true;
- this.pauseOnExceptionButton.visible = true;
+ this.enableToggleButton.addStyleClass("toggled-on");
+ this.pauseOnExceptionButton.removeStyleClass("hidden");
this.panelEnablerView.visible = false;
} else {
this.enableToggleButton.title = WebInspector.UIString("Debugging disabled. Click to enable.");
- this.enableToggleButton.toggled = false;
- this.pauseOnExceptionButton.visible = false;
+ this.enableToggleButton.removeStyleClass("toggled-on");
+ this.pauseOnExceptionButton.addStyleClass("hidden");
this.panelEnablerView.visible = true;
}
diff --git a/WebCore/inspector/front-end/SourceFrame.js b/WebCore/inspector/front-end/SourceFrame.js
index 9c0f7e0..930eb16 100644
--- a/WebCore/inspector/front-end/SourceFrame.js
+++ b/WebCore/inspector/front-end/SourceFrame.js
@@ -289,10 +289,8 @@ WebInspector.SourceFrame.prototype = {
return;
var sourceRow = event.target.enclosingNodeOrSelfWithNodeName("tr");
- if (sourceRow._breakpointObject && sourceRow._breakpointObject.enabled)
- sourceRow._breakpointObject.enabled = false;
- else if (sourceRow._breakpointObject)
- WebInspector.panels.scripts.removeBreakpoint(sourceRow._breakpointObject);
+ if (sourceRow._breakpointObject)
+ sourceRow._breakpointObject.enabled = !sourceRow._breakpointObject.enabled;
else if (this.addBreakpointDelegate)
this.addBreakpointDelegate(this.lineNumberForSourceRow(sourceRow));
},
diff --git a/WebCore/inspector/front-end/StatusBarButton.js b/WebCore/inspector/front-end/StatusBarButton.js
deleted file mode 100644
index 5c69ed5..0000000
--- a/WebCore/inspector/front-end/StatusBarButton.js
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * 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
- * "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 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.
- */
-
-WebInspector.StatusBarButton = function(title, className)
-{
- this.element = document.createElement("button");
- this.element.className = className + " status-bar-item";
- this.element.addEventListener("click", this._clicked.bind(this), false);
-
- this.glyph = document.createElement("div");
- this.glyph.className = "glyph";
- this.element.appendChild(this.glyph);
-
- this.glyphShadow = document.createElement("div");
- this.glyphShadow.className = "glyph shadow";
- this.element.appendChild(this.glyphShadow);
-
- this.title = title;
- this.disabled = false;
- this._toggled = false;
- this._visible = true;
-}
-
-WebInspector.StatusBarButton.prototype = {
- _clicked: function()
- {
- this.dispatchEventToListeners("click");
- },
-
- get disabled()
- {
- return this._disabled;
- },
-
- set disabled(x)
- {
- if (this._disabled === x)
- return;
- this._disabled = x;
- this.element.disabled = x;
- },
-
- get title()
- {
- return this._title;
- },
-
- set title(x)
- {
- if (this._title === x)
- return;
- this._title = x;
- this.element.title = x;
- },
-
- get toggled()
- {
- return this._toggled;
- },
-
- set toggled(x)
- {
- if (this._toggled === x)
- return;
-
- if (x)
- this.element.addStyleClass("toggled-on");
- else
- this.element.removeStyleClass("toggled-on");
- this._toggled = x;
- },
-
- get visible()
- {
- return this._visible;
- },
-
- set visible(x)
- {
- if (this._visible === x)
- return;
-
- if (x)
- this.element.removeStyleClass("hidden");
- else
- this.element.addStyleClass("hidden");
- this._visible = x;
- }
-}
-
-WebInspector.StatusBarButton.prototype.__proto__ = WebInspector.Object.prototype;
diff --git a/WebCore/inspector/front-end/StylesSidebarPane.js b/WebCore/inspector/front-end/StylesSidebarPane.js
index db585e0..8a3a67f 100644
--- a/WebCore/inspector/front-end/StylesSidebarPane.js
+++ b/WebCore/inspector/front-end/StylesSidebarPane.js
@@ -67,10 +67,10 @@ WebInspector.StylesSidebarPane.prototype = {
var callback = function(styles) {
if (!styles)
return;
- node._setStyles(styles.computedStyle, styles.inlineStyle, styles.styleAttributes, styles.matchedCSSRules);
- self._update(refresh, body, node, editedSection, forceUpdate);
+ var nodeWrapper = WebInspector.wrapNodeWithStyles(node, styles);
+ self._update(refresh, body, nodeWrapper, editedSection, forceUpdate);
};
- InspectorController.getStyles(node.id, !Preferences.showUserAgentStyles, callback);
+ InspectorController.getStyles(node, !Preferences.showUserAgentStyles, callback);
},
_update: function(refresh, body, node, editedSection, forceUpdate)
@@ -322,9 +322,8 @@ WebInspector.StylePropertiesSection = function(styleRule, subtitle, computedStyl
this.editable = (editable && !computedStyle);
// Prevent editing the user agent and user rules.
- var isUserAgent = this.rule && this.rule.isUserAgent;
- var isUser = this.rule && this.rule.isUser;
- var isViaInspector = this.rule && this.rule.isViaInspector;
+ var isUserAgent = this.styleRule.isUserAgent;
+ var isUser = this.styleRule.isUser;
if (isUserAgent || isUser)
this.editable = false;
@@ -367,7 +366,7 @@ WebInspector.StylePropertiesSection = function(styleRule, subtitle, computedStyl
subtitle = WebInspector.UIString("user agent stylesheet");
else if (isUser)
subtitle = WebInspector.UIString("user stylesheet");
- else if (isViaInspector)
+ else if (this.styleRule.parentStyleSheet === WebInspector.panels.elements.stylesheet)
subtitle = WebInspector.UIString("via inspector");
else
subtitle = WebInspector.UIString("inline stylesheet");
@@ -612,12 +611,24 @@ WebInspector.StylePropertiesSection.prototype = {
moveToNextIfNeeded.call(self);
};
- InspectorController.applyStyleRuleText(this.rule.id, newContent, this.pane.node.id, callback);
+ InspectorController.applyStyleRuleText(this.rule._id, newContent, this.pane.node, callback);
},
editingSelectorCancelled: function(element, context)
{
element.textContent = context;
+ },
+
+ _doesSelectorAffectSelectedNode: function(selector)
+ {
+ var selectedNode = this.pane.node;
+ var nodes = selectedNode.ownerDocument.querySelectorAll(selector);
+ for (var i = 0; i < nodes.length; ++i) {
+ if (nodes[i] === selectedNode)
+ return true;
+ }
+
+ return false;
}
}
@@ -662,17 +673,15 @@ WebInspector.BlankStylePropertiesSection.prototype = {
editingCommitted: function(element, newContent, oldContent, context)
{
var self = this;
- var callback = function(result) {
- if (!result) {
+ var callback = function(styleRule) {
+ if (!styleRule) {
// Invalid Syntax for a Selector
self.editingCancelled();
return;
}
- var styleRule = result[0];
- var doesSelectorAffectSelectedNode = result[1];
self.makeNormal(WebInspector.CSSStyleDeclaration.parseRule(styleRule));
- if (!doesSelectorAffectSelectedNode) {
+ if (!self._doesSelectorAffectSelectedNode(newContent)) {
self.noAffect = true;
self.element.addStyleClass("no-affect");
}
@@ -683,7 +692,7 @@ WebInspector.BlankStylePropertiesSection.prototype = {
self.pane.addBlankSection();
self.addNewBlankProperty().startEditing();
};
- InspectorController.addStyleSelector(newContent, this.pane.node.id, callback);
+ InspectorController.addStyleSelector(newContent, callback);
},
makeNormal: function(styleRule)
@@ -887,70 +896,63 @@ WebInspector.StylePropertyTreeElement.prototype = {
// Simple: rgb -> hsl -> nickname? -> shorthex? -> hex -> ...
// Advanced: rgba -> hsla -> nickname? -> ...
if (colors && colors.length === 1) {
- try {
- var color = new WebInspector.Color(htmlValue);
- } catch(e) {
- var color = null;
- }
-
- if (color) {
- swatch.addEventListener("click", changeColorDisplay, false);
- swatch.addEventListener("dblclick", function(event) {
- event.stopPropagation();
- }, false);
+ var color = new WebInspector.Color(htmlValue);
+ swatch.addEventListener("click", changeColorDisplay, false);
+ swatch.addEventListener("dblclick", function(event) {
+ event.stopPropagation();
+ }, false);
+
+ var mode = color.mode;
+ var valueElement = this.valueElement;
+ function changeColorDisplay(event) {
+
+ function changeTo(newMode, content) {
+ mode = newMode;
+ valueElement.textContent = content;
+ }
- var mode = color.mode;
- var valueElement = this.valueElement;
- function changeColorDisplay(event) {
+ switch (mode) {
+ case "rgb":
+ changeTo("hsl", color.toHsl());
+ break;
- function changeTo(newMode, content) {
- mode = newMode;
- valueElement.textContent = content;
- }
+ case "shorthex":
+ changeTo("hex", color.toHex());
+ break;
- switch (mode) {
- case "rgb":
- changeTo("hsl", color.toHsl());
- break;
+ case "hex":
+ changeTo("rgb", color.toRgb());
+ break;
- case "shorthex":
- changeTo("hex", color.toHex());
- break;
-
- case "hex":
- changeTo("rgb", color.toRgb());
- break;
-
- case "nickname":
- if (color.simple) {
- if (color.hasShortHex())
- changeTo("shorthex", color.toShortHex());
- else
- changeTo("hex", color.toHex());
- } else
- changeTo("rgba", color.toRgba());
- break;
-
- case "hsl":
- if (color.nickname)
- changeTo("nickname", color.toNickname());
- else if (color.hasShortHex())
+ case "nickname":
+ if (color.simple) {
+ if (color.hasShortHex())
changeTo("shorthex", color.toShortHex());
else
changeTo("hex", color.toHex());
- break;
-
- case "rgba":
- changeTo("hsla", color.toHsla());
- break;
-
- case "hsla":
- if (color.nickname)
- changeTo("nickname", color.toNickname());
- else
- changeTo("rgba", color.toRgba());
- break;
- }
+ } else
+ changeTo("rgba", color.toRgba());
+ break;
+
+ case "hsl":
+ if (color.nickname)
+ changeTo("nickname", color.toNickname());
+ else if (color.hasShortHex())
+ changeTo("shorthex", color.toShortHex());
+ else
+ changeTo("hex", color.toHex());
+ break;
+
+ case "rgba":
+ changeTo("hsla", color.toHsla());
+ break;
+
+ case "hsla":
+ if (color.nickname)
+ changeTo("nickname", color.toNickname());
+ else
+ changeTo("rgba", color.toRgba());
+ break;
}
}
}
@@ -990,7 +992,7 @@ WebInspector.StylePropertyTreeElement.prototype = {
self.updateAll(true);
};
- InspectorController.toggleStyleEnabled(this.style.id, this.name, disabled, callback);
+ InspectorController.toggleStyleEnabled(this.style._id, this.name, disabled, callback);
},
updateState: function()
@@ -1153,7 +1155,7 @@ WebInspector.StylePropertyTreeElement.prototype = {
} else {
// Restore the original CSS text before applying user changes. This is needed to prevent
// new properties from sticking around if the user adds one, then removes it.
- InspectorController.setStyleText(this.style.id, this.originalCSSText);
+ InspectorController.setStyleText(this.style, this.originalCSSText);
}
this.applyStyleText(this.listItemElement.textContent);
@@ -1173,7 +1175,7 @@ WebInspector.StylePropertyTreeElement.prototype = {
if (this._newProperty)
this.treeOutline.removeChild(this);
else if (this.originalCSSText) {
- InspectorController.setStyleText(this.style.id, this.originalCSSText);
+ InspectorController.setStyleText(this.style, this.originalCSSText);
if (this.treeOutline.section && this.treeOutline.section.pane)
this.treeOutline.section.pane.dispatchEventToListeners("style edited");
@@ -1292,7 +1294,7 @@ WebInspector.StylePropertyTreeElement.prototype = {
if (!self.rule)
WebInspector.panels.elements.treeOutline.update();
};
- InspectorController.applyStyleText(this.style.id, styleText.trimWhitespace(), this.name, callback);
+ InspectorController.applyStyleText(this.style._id, styleText.trimWhitespace(), this.name, callback);
}
}
diff --git a/WebCore/inspector/front-end/WebKit.qrc b/WebCore/inspector/front-end/WebKit.qrc
index c82de61..c39c95b 100644
--- a/WebCore/inspector/front-end/WebKit.qrc
+++ b/WebCore/inspector/front-end/WebKit.qrc
@@ -9,7 +9,6 @@
<file>ChangesView.js</file>
<file>Color.js</file>
<file>ConsoleView.js</file>
- <file>CookieItemsView.js</file>
<file>Database.js</file>
<file>DatabaseQueryView.js</file>
<file>DatabasesPanel.js</file>
@@ -51,7 +50,6 @@
<file>SidebarTreeElement.js</file>
<file>SourceFrame.js</file>
<file>SourceView.js</file>
- <file>StatusBarButton.js</file>
<file>StylesSidebarPane.js</file>
<file>TextPrompt.js</file>
<file>TopDownProfileDataGridTree.js</file>
@@ -64,7 +62,6 @@
<file>Images/clearConsoleButtonGlyph.png</file>
<file>Images/closeButtons.png</file>
<file>Images/consoleButtonGlyph.png</file>
- <file>Images/cookie.png</file>
<file>Images/database.png</file>
<file>Images/databasesIcon.png</file>
<file>Images/databaseTable.png</file>
diff --git a/WebCore/inspector/front-end/inspector.css b/WebCore/inspector/front-end/inspector.css
index 3292d8d..51d626a 100644
--- a/WebCore/inspector/front-end/inspector.css
+++ b/WebCore/inspector/front-end/inspector.css
@@ -1626,10 +1626,6 @@ body.inactive .sidebar {
content: url(Images/domStorage.png);
}
-.cookie-sidebar-tree-item .icon {
- content: url(Images/cookie.png);
-}
-
#storage-views {
position: absolute;
top: 0;
@@ -1789,14 +1785,6 @@ body.inactive .sidebar {
overflow: hidden;
}
-.data-grid .centered div {
- text-align: center;
-}
-
-.data-grid .right div {
- text-align: right;
-}
-
.data-grid th.sortable div {
position: relative;
}
@@ -2103,7 +2091,7 @@ button.enable-toggle-status-bar-item.toggled-on .glyph {
-webkit-mask-image: url(Images/enableSolidButtonGlyph.png);
}
-.scripts-pause-on-exceptions-status-bar-item .glyph {
+#scripts-pause-on-exceptions-status-bar-item .glyph {
-webkit-mask-image: url(Images/pauseOnExceptionButtonGlyph.png);
}
@@ -2221,7 +2209,7 @@ button.enable-toggle-status-bar-item.toggled-on .glyph {
overflow: auto;
}
-.resources-larger-resources-status-bar-item .glyph {
+#resources-larger-resources-status-bar-item .glyph {
-webkit-mask-image: url(Images/largerResourcesButtonGlyph.png);
}
@@ -3105,16 +3093,16 @@ body.inactive .sidebar-tree-item.selected .bubble.search-matches {
button.enable-toggle-status-bar-item .glyph {
}
-.record-profile-status-bar-item .glyph {
+#record-profile-status-bar-item .glyph {
-webkit-mask-image: url(Images/recordButtonGlyph.png);
}
-.record-profile-status-bar-item.toggled-on .glyph {
+#record-profile-status-bar-item.toggled-on .glyph {
-webkit-mask-image: url(Images/recordToggledButtonGlyph.png);
- background-color: rgb(216, 0, 0) !important;
+ background-color: rgb(216, 0, 0);
}
-.node-search-status-bar-item .glyph {
+#node-search-status-bar-item .glyph {
-webkit-mask-image: url(Images/nodeSearchButtonGlyph.png);
}
@@ -3148,8 +3136,12 @@ button.enable-toggle-status-bar-item .glyph {
margin-left: -1px;
}
-.refresh-storage-status-bar-item .glyph {
- -webkit-mask-image: url(Images/reloadButtonGlyph.png);
+.refresh-storage-status-bar-item {
+ background-image: url(Images/reloadButtons.png) !important;
+}
+
+.refresh-storage-status-bar-item:active {
+ background-position: 32px 0;
}
#storage-view-status-bar-items {
diff --git a/WebCore/inspector/front-end/inspector.html b/WebCore/inspector/front-end/inspector.html
index 4857c7a..a3dc407 100644
--- a/WebCore/inspector/front-end/inspector.html
+++ b/WebCore/inspector/front-end/inspector.html
@@ -49,7 +49,6 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<script type="text/javascript" src="DOMStorageItemsView.js"></script>
<script type="text/javascript" src="DataGrid.js"></script>
<script type="text/javascript" src="DOMStorageDataGrid.js"></script>
- <script type="text/javascript" src="CookieItemsView.js"></script>
<script type="text/javascript" src="Script.js"></script>
<script type="text/javascript" src="Breakpoint.js"></script>
<script type="text/javascript" src="SidebarPane.js"></script>
@@ -67,7 +66,6 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<script type="text/javascript" src="StylesSidebarPane.js"></script>
<script type="text/javascript" src="Panel.js"></script>
<script type="text/javascript" src="PanelEnablerView.js"></script>
- <script type="text/javascript" src="StatusBarButton.js"></script>
<script type="text/javascript" src="ElementsPanel.js"></script>
<script type="text/javascript" src="ResourcesPanel.js"></script>
<script type="text/javascript" src="ScriptsPanel.js"></script>
diff --git a/WebCore/inspector/front-end/inspector.js b/WebCore/inspector/front-end/inspector.js
index f6377c2..aa21a86 100644
--- a/WebCore/inspector/front-end/inspector.js
+++ b/WebCore/inspector/front-end/inspector.js
@@ -39,6 +39,7 @@ var Preferences = {
showInheritedComputedStyleProperties: false,
styleRulesExpandedState: {},
showMissingLocalizedStrings: false,
+ useDOMAgent: false
}
var WebInspector = {
@@ -306,7 +307,7 @@ var WebInspector = {
set hoveredDOMNode(x)
{
- if (this._hoveredDOMNode === x)
+ if (objectsAreSame(this._hoveredDOMNode, x))
return;
this._hoveredDOMNode = x;
@@ -332,7 +333,7 @@ var WebInspector = {
}
if (this._hoveredDOMNode) {
- InspectorController.highlightDOMNode(this._hoveredDOMNode.id);
+ InspectorController.highlightDOMNode(this._hoveredDOMNode);
this.showingDOMNodeHighlight = true;
} else {
InspectorController.hideDOMNodeHighlight();
@@ -352,7 +353,9 @@ WebInspector.loaded = function()
// this.changes = new WebInspector.ChangesView(this.drawer);
// TODO: Remove class="hidden" from inspector.html on button#changes-status-bar-item
this.drawer.visibleView = this.console;
- this.domAgent = new WebInspector.DOMAgent();
+
+ if (Preferences.useDOMAgent)
+ this.domAgent = new WebInspector.DOMAgent();
this.resourceCategories = {
documents: new WebInspector.ResourceCategory(WebInspector.UIString("Documents"), "documents"),
@@ -438,7 +441,7 @@ WebInspector.loaded = function()
document.getElementById("toolbar").addEventListener("mousedown", this.toolbarDragStart, true);
document.getElementById("close-button").addEventListener("click", this.close, true);
- InspectorController.loaded();
+ InspectorController.loaded(Preferences.useDOMAgent);
}
var windowLoaded = function()
@@ -850,12 +853,12 @@ WebInspector.elementDragEnd = function(event)
WebInspector.showConsole = function()
{
- this.drawer.showView(this.console);
+ this.drawer.visibleView = this.console;
}
WebInspector.showChanges = function()
{
- this.drawer.showView(this.changes);
+ this.drawer.visibleView = this.changes;
}
WebInspector.showElementsPanel = function()
@@ -906,23 +909,6 @@ WebInspector.addResource = function(identifier, payload)
this.panels.resources.addResource(resource);
}
-WebInspector.clearConsoleMessages = function()
-{
- WebInspector.console.clearMessages(false);
-}
-
-WebInspector.selectDatabase = function(o)
-{
- WebInspector.showDatabasesPanel();
- WebInspector.panels.databases.selectDatabase(o);
-}
-
-WebInspector.selectDOMStorage = function(o)
-{
- WebInspector.showDatabasesPanel();
- WebInspector.panels.databases.selectDOMStorage(o);
-}
-
WebInspector.updateResource = function(identifier, payload)
{
var resource = this.resources[identifier];
@@ -1087,6 +1073,11 @@ WebInspector.reset = function()
this.console.clearMessages();
}
+WebInspector.inspectedWindowCleared = function(inspectedWindow)
+{
+ this.panels.elements.inspectedWindowCleared(inspectedWindow);
+}
+
WebInspector.resourceURLChanged = function(resource, oldURL)
{
delete this.resourceURLMap[oldURL];
@@ -1147,9 +1138,8 @@ WebInspector.drawLoadingPieChart = function(canvas, percent) {
g.fill();
}
-WebInspector.updateFocusedNode = function(nodeId)
+WebInspector.updateFocusedNode = function(node)
{
- var node = WebInspector.domAgent.nodeForId(nodeId);
if (!node)
// FIXME: Should we deselect if null is passed in?
return;
@@ -1339,11 +1329,6 @@ WebInspector.performSearch = function(event)
this.currentPanel.performSearch(query);
}
-WebInspector.addNodesToSearchResult = function(nodeIds)
-{
- WebInspector.panels.elements.addNodesToSearchResult(nodeIds);
-}
-
WebInspector.updateSearchMatchesCount = function(matches, panel)
{
if (!panel)
diff --git a/WebCore/inspector/front-end/treeoutline.js b/WebCore/inspector/front-end/treeoutline.js
index 67f35c2..579e7fb 100644
--- a/WebCore/inspector/front-end/treeoutline.js
+++ b/WebCore/inspector/front-end/treeoutline.js
@@ -249,18 +249,21 @@ TreeOutline.prototype._forgetChildrenRecursive = function(parentElement)
}
}
-TreeOutline.prototype.findTreeElement = function(representedObject, isAncestor, getParent)
+TreeOutline.prototype.findTreeElement = function(representedObject, isAncestor, getParent, equal)
{
if (!representedObject)
return null;
+ if (!equal)
+ equal = function(a, b) { return a === b };
+
if ("__treeElementIdentifier" in representedObject) {
// If this representedObject has a tree element identifier, and it is a known TreeElement
// in our tree we can just return that tree element.
var elements = this._knownTreeElements[representedObject.__treeElementIdentifier];
if (elements) {
for (var i = 0; i < elements.length; ++i)
- if (elements[i].representedObject === representedObject)
+ if (equal(elements[i].representedObject, representedObject))
return elements[i];
}
}
@@ -274,7 +277,7 @@ TreeOutline.prototype.findTreeElement = function(representedObject, isAncestor,
var found = false;
for (var i = 0; i < this.children.length; ++i) {
item = this.children[i];
- if (item.representedObject === representedObject || isAncestor(item.representedObject, representedObject)) {
+ if (equal(item.representedObject, representedObject) || isAncestor(item.representedObject, representedObject)) {
found = true;
break;
}
@@ -289,7 +292,7 @@ TreeOutline.prototype.findTreeElement = function(representedObject, isAncestor,
var currentObject = representedObject;
while (currentObject) {
ancestors.unshift(currentObject);
- if (currentObject === item.representedObject)
+ if (equal(currentObject, item.representedObject))
break;
currentObject = getParent(currentObject);
}
@@ -298,18 +301,18 @@ TreeOutline.prototype.findTreeElement = function(representedObject, isAncestor,
for (var i = 0; i < ancestors.length; ++i) {
// Make sure we don't call findTreeElement with the same representedObject
// again, to prevent infinite recursion.
- if (ancestors[i] === representedObject)
+ if (equal(ancestors[i], representedObject))
continue;
// FIXME: we could do something faster than findTreeElement since we will know the next
// ancestor exists in the tree.
- item = this.findTreeElement(ancestors[i], isAncestor, getParent);
+ item = this.findTreeElement(ancestors[i], isAncestor, getParent, equal);
if (item && item.onpopulate)
item.onpopulate(item);
}
// Now that all the ancestors are populated, try to find the representedObject again. This time
// without the isAncestor and getParent functions to prevent an infinite recursion if it isn't found.
- return this.findTreeElement(representedObject);
+ return this.findTreeElement(representedObject, null, null, equal);
}
TreeOutline.prototype.treeElementFromPoint = function(x, y)
diff --git a/WebCore/inspector/front-end/utilities.js b/WebCore/inspector/front-end/utilities.js
index e60af42..eec0b87 100644
--- a/WebCore/inspector/front-end/utilities.js
+++ b/WebCore/inspector/front-end/utilities.js
@@ -56,18 +56,6 @@ Object.type = function(obj, win)
return type;
}
-Object.proxyType = function(objectProxy)
-{
- if (objectProxy === null)
- return "null";
-
- var type = typeof objectProxy;
- if (type !== "object" && type !== "function")
- return type;
-
- return objectProxy.type;
-}
-
Object.hasProperties = function(obj)
{
if (typeof obj === "undefined" || typeof obj === "null")
@@ -77,9 +65,9 @@ Object.hasProperties = function(obj)
return false;
}
-Object.describe = function(obj, abbreviated, win)
+Object.describe = function(obj, abbreviated)
{
- var type1 = Object.type(obj, win);
+ var type1 = Object.type(obj);
var type2 = Object.prototype.toString.call(obj).replace(/^\[object (.*)\]$/i, "$1");
switch (type1) {
@@ -250,7 +238,7 @@ Element.prototype.hasStyleClass = function(className)
Node.prototype.enclosingNodeOrSelfWithNodeNameInArray = function(nameArray)
{
- for (var node = this; node && node !== this.ownerDocument; node = node.parentNode)
+ for (var node = this; node && !objectsAreSame(node, this.ownerDocument); node = node.parentNode)
for (var i = 0; i < nameArray.length; ++i)
if (node.nodeName.toLowerCase() === nameArray[i].toLowerCase())
return node;
@@ -264,7 +252,7 @@ Node.prototype.enclosingNodeOrSelfWithNodeName = function(nodeName)
Node.prototype.enclosingNodeOrSelfWithClass = function(className)
{
- for (var node = this; node && node !== this.ownerDocument; node = node.parentNode)
+ for (var node = this; node && !objectsAreSame(node, this.ownerDocument); node = node.parentNode)
if (node.nodeType === Node.ELEMENT_NODE && node.hasStyleClass(className))
return node;
return null;
@@ -530,6 +518,21 @@ function nodeContentPreview()
return preview.collapseWhitespace();
}
+function objectsAreSame(a, b)
+{
+ // FIXME: Make this more generic so is works with any wrapped object, not just nodes.
+ // This function is used to compare nodes that might be JSInspectedObjectWrappers, since
+ // JavaScript equality is not true for JSInspectedObjectWrappers of the same node wrapped
+ // with different global ExecStates, we use isSameNode to compare them.
+ if (a === b)
+ return true;
+ if (!a || !b)
+ return false;
+ if (a.isSameNode && b.isSameNode)
+ return a.isSameNode(b);
+ return false;
+}
+
function isAncestorNode(ancestor)
{
if (!this || !ancestor)
@@ -537,7 +540,7 @@ function isAncestorNode(ancestor)
var currentNode = ancestor.parentNode;
while (currentNode) {
- if (this === currentNode)
+ if (objectsAreSame(this, currentNode))
return true;
currentNode = currentNode.parentNode;
}
@@ -558,13 +561,13 @@ function firstCommonNodeAncestor(node)
var node1 = this.parentNode;
var node2 = node.parentNode;
- if ((!node1 || !node2) || node1 !== node2)
+ if ((!node1 || !node2) || !objectsAreSame(node1, node2))
return null;
while (node1 && node2) {
if (!node1.parentNode || !node2.parentNode)
break;
- if (node1 !== node2)
+ if (!objectsAreSame(node1, node2))
break;
node1 = node1.parentNode;
@@ -623,7 +626,7 @@ function traverseNextNode(skipWhitespace, stayWithin)
if (node)
return node;
- if (stayWithin && this === stayWithin)
+ if (stayWithin && objectsAreSame(this, stayWithin))
return null;
node = skipWhitespace ? nextSiblingSkippingWhitespace.call(this) : this.nextSibling;
@@ -631,7 +634,7 @@ function traverseNextNode(skipWhitespace, stayWithin)
return node;
node = this;
- while (node && !(skipWhitespace ? nextSiblingSkippingWhitespace.call(node) : node.nextSibling) && (!stayWithin || !node.parentNode || node.parentNode !== stayWithin))
+ while (node && !(skipWhitespace ? nextSiblingSkippingWhitespace.call(node) : node.nextSibling) && (!stayWithin || !node.parentNode || !objectsAreSame(node.parentNode, stayWithin)))
node = node.parentNode;
if (!node)
return null;
@@ -643,7 +646,7 @@ function traversePreviousNode(skipWhitespace, stayWithin)
{
if (!this)
return;
- if (stayWithin && this === stayWithin)
+ if (stayWithin && objectsAreSame(this, stayWithin))
return null;
var node = skipWhitespace ? previousSiblingSkippingWhitespace.call(this) : this.previousSibling;
while (node && (skipWhitespace ? lastChildSkippingWhitespace.call(node) : node.lastChild) )
@@ -753,10 +756,10 @@ function parentNodeOrFrameElement(node) {
}
function isAncestorIncludingParentFrames(a, b) {
- if (a === b)
+ if (objectsAreSame(a, b))
return false;
for (var node = b; node; node = getDocumentForNode(node).defaultView.frameElement)
- if (a === node || isAncestorNode.call(a, node))
+ if (objectsAreSame(a, node) || isAncestorNode.call(a, node))
return true;
return false;
}
@@ -787,27 +790,20 @@ Number.secondsToString = function(seconds, formatterFunction, higherResolution)
return formatterFunction("%.1f days", days);
}
-Number.bytesToString = function(bytes, formatterFunction, higherResolution)
+Number.bytesToString = function(bytes, formatterFunction)
{
if (!formatterFunction)
formatterFunction = String.sprintf;
- if (typeof higherResolution === "undefined")
- higherResolution = true;
if (bytes < 1024)
return formatterFunction("%.0fB", bytes);
var kilobytes = bytes / 1024;
- if (higherResolution && kilobytes < 1024)
+ if (kilobytes < 1024)
return formatterFunction("%.2fKB", kilobytes);
- else if (kilobytes < 1024)
- return formatterFunction("%.0fKB", kilobytes);
var megabytes = kilobytes / 1024;
- if (higherResolution)
- return formatterFunction("%.3fMB", megabytes);
- else
- return formatterFunction("%.0fMB", megabytes);
+ return formatterFunction("%.3fMB", megabytes);
}
Number.constrain = function(num, min, max)
diff --git a/WebCore/loader/CachedFont.cpp b/WebCore/loader/CachedFont.cpp
index 8da746c..dfb9dd8 100644
--- a/WebCore/loader/CachedFont.cpp
+++ b/WebCore/loader/CachedFont.cpp
@@ -31,7 +31,7 @@
#include "CachedResourceClientWalker.h"
#include "DOMImplementation.h"
#include "FontPlatformData.h"
-#if PLATFORM(CG) || PLATFORM(QT) || PLATFORM(GTK) || (PLATFORM(CHROMIUM) && (PLATFORM(WIN_OS) || PLATFORM(LINUX))) || PLATFORM(HAIKU)
+#if PLATFORM(CG) || PLATFORM(QT) || PLATFORM(GTK) || (PLATFORM(CHROMIUM) && (PLATFORM(WIN_OS) || PLATFORM(LINUX)))
#include "FontCustomPlatformData.h"
#endif
#include "TextResourceDecoder.h"
@@ -60,7 +60,7 @@ CachedFont::CachedFont(const String &url)
CachedFont::~CachedFont()
{
-#if PLATFORM(CG) || PLATFORM(QT) || PLATFORM(GTK) || (PLATFORM(CHROMIUM) && (PLATFORM(WIN_OS) || PLATFORM(LINUX))) || PLATFORM(HAIKU)
+#if PLATFORM(CG) || PLATFORM(QT) || PLATFORM(GTK) || (PLATFORM(CHROMIUM) && (PLATFORM(WIN_OS) || PLATFORM(LINUX)))
delete m_fontData;
#endif
}
@@ -98,7 +98,7 @@ void CachedFont::beginLoadIfNeeded(DocLoader* dl)
bool CachedFont::ensureCustomFontData()
{
-#if PLATFORM(CG) || PLATFORM(QT) || PLATFORM(GTK) || (PLATFORM(CHROMIUM) && (PLATFORM(WIN_OS) || PLATFORM(LINUX))) || PLATFORM(HAIKU)
+#if PLATFORM(CG) || PLATFORM(QT) || PLATFORM(GTK) || (PLATFORM(CHROMIUM) && (PLATFORM(WIN_OS) || PLATFORM(LINUX)))
#if ENABLE(SVG_FONTS)
ASSERT(!m_isSVGFont);
#endif
@@ -117,7 +117,7 @@ FontPlatformData CachedFont::platformDataFromCustomData(float size, bool bold, b
if (m_externalSVGDocument)
return FontPlatformData(size, bold, italic);
#endif
-#if PLATFORM(CG) || PLATFORM(QT) || PLATFORM(GTK) || (PLATFORM(CHROMIUM) && (PLATFORM(WIN_OS) || PLATFORM(LINUX))) || PLATFORM(HAIKU)
+#if PLATFORM(CG) || PLATFORM(QT) || PLATFORM(GTK) || (PLATFORM(CHROMIUM) && (PLATFORM(WIN_OS) || PLATFORM(LINUX)))
ASSERT(m_fontData);
return m_fontData->fontPlatformData(static_cast<int>(size), bold, italic, renderingMode);
#else
@@ -173,7 +173,7 @@ SVGFontElement* CachedFont::getSVGFontById(const String& fontName) const
void CachedFont::allClientsRemoved()
{
-#if PLATFORM(CG) || PLATFORM(QT) || PLATFORM(GTK) || (PLATFORM(CHROMIUM) && (PLATFORM(WIN_OS) || PLATFORM(LINUX))) || PLATFORM(HAIKU)
+#if PLATFORM(CG) || PLATFORM(QT) || PLATFORM(GTK) || (PLATFORM(CHROMIUM) && (PLATFORM(WIN_OS) || PLATFORM(LINUX)))
if (m_fontData) {
delete m_fontData;
m_fontData = 0;
diff --git a/WebCore/loader/DocumentLoader.cpp b/WebCore/loader/DocumentLoader.cpp
index 2c170d0..4ec69a7 100644
--- a/WebCore/loader/DocumentLoader.cpp
+++ b/WebCore/loader/DocumentLoader.cpp
@@ -148,6 +148,7 @@ DocumentLoader::DocumentLoader(const ResourceRequest& req, const SubstituteData&
, m_gotFirstByte(false)
, m_primaryLoadComplete(false)
, m_isClientRedirect(false)
+ , m_loadingFromCachedPage(false)
, m_stopRecordingResponses(false)
, m_substituteResourceDeliveryTimer(this, &DocumentLoader::substituteResourceDeliveryTimerFired)
, m_didCreateGlobalHistoryEntry(false)
@@ -696,6 +697,16 @@ bool DocumentLoader::urlForHistoryReflectsFailure() const
return m_substituteData.isValid() || m_response.httpStatusCode() >= 400;
}
+void DocumentLoader::loadFromCachedPage(PassRefPtr<CachedPage> cachedPage)
+{
+ LOG(PageCache, "WebCorePageCache: DocumentLoader %p loading from cached page %p", this, cachedPage.get());
+
+ prepareForLoadStart();
+ setLoadingFromCachedPage(true);
+ setCommitted(true);
+ frameLoader()->commitProvisionalLoad(cachedPage);
+}
+
const KURL& DocumentLoader::originalURL() const
{
return m_originalRequestCopy.url();
diff --git a/WebCore/loader/DocumentLoader.h b/WebCore/loader/DocumentLoader.h
index cd28e06..134d954 100644
--- a/WebCore/loader/DocumentLoader.h
+++ b/WebCore/loader/DocumentLoader.h
@@ -174,6 +174,10 @@ namespace WebCore {
bool didCreateGlobalHistoryEntry() const { return m_didCreateGlobalHistoryEntry; }
void setDidCreateGlobalHistoryEntry(bool didCreateGlobalHistoryEntry) { m_didCreateGlobalHistoryEntry = didCreateGlobalHistoryEntry; }
+ void loadFromCachedPage(PassRefPtr<CachedPage>);
+ void setLoadingFromCachedPage(bool loading) { m_loadingFromCachedPage = loading; }
+ bool isLoadingFromCachedPage() const { return m_loadingFromCachedPage; }
+
void setDefersLoading(bool);
bool startLoadingMainResource(unsigned long identifier);
@@ -260,6 +264,7 @@ namespace WebCore {
bool m_gotFirstByte;
bool m_primaryLoadComplete;
bool m_isClientRedirect;
+ bool m_loadingFromCachedPage;
String m_pageTitle;
diff --git a/WebCore/loader/DocumentThreadableLoader.cpp b/WebCore/loader/DocumentThreadableLoader.cpp
index 0d8dc18..dd5ca76 100644
--- a/WebCore/loader/DocumentThreadableLoader.cpp
+++ b/WebCore/loader/DocumentThreadableLoader.cpp
@@ -32,9 +32,8 @@
#include "DocumentThreadableLoader.h"
#include "AuthenticationChallenge.h"
-#include "CrossOriginAccessControl.h"
-#include "CrossOriginPreflightResultCache.h"
#include "Document.h"
+#include "DocumentThreadableLoader.h"
#include "Frame.h"
#include "FrameLoader.h"
#include "ResourceRequest.h"
@@ -44,107 +43,61 @@
namespace WebCore {
-void DocumentThreadableLoader::loadResourceSynchronously(Document* document, const ResourceRequest& request, ThreadableLoaderClient& client, const ThreadableLoaderOptions& options)
+void DocumentThreadableLoader::loadResourceSynchronously(Document* document, const ResourceRequest& request, ThreadableLoaderClient& client, StoredCredentials storedCredentials)
{
- // The loader will be deleted as soon as this function exits.
- RefPtr<DocumentThreadableLoader> loader = adoptRef(new DocumentThreadableLoader(document, &client, LoadSynchronously, request, options));
- ASSERT(loader->hasOneRef());
-}
+ bool sameOriginRequest = document->securityOrigin()->canRequest(request.url());
-PassRefPtr<DocumentThreadableLoader> DocumentThreadableLoader::create(Document* document, ThreadableLoaderClient* client, const ResourceRequest& request, const ThreadableLoaderOptions& options)
-{
- RefPtr<DocumentThreadableLoader> loader = adoptRef(new DocumentThreadableLoader(document, client, LoadAsynchronously, request, options));
- if (!loader->m_loader)
- loader = 0;
- return loader.release();
-}
-
-DocumentThreadableLoader::DocumentThreadableLoader(Document* document, ThreadableLoaderClient* client, BlockingBehavior blockingBehavior, const ResourceRequest& request, const ThreadableLoaderOptions& options)
- : m_client(client)
- , m_document(document)
- , m_options(options)
- , m_sameOriginRequest(document->securityOrigin()->canRequest(request.url()))
- , m_async(blockingBehavior == LoadAsynchronously)
-{
- ASSERT(document);
- ASSERT(client);
+ Vector<char> data;
+ ResourceError error;
+ ResourceResponse response;
+ unsigned long identifier = std::numeric_limits<unsigned long>::max();
+ if (document->frame())
+ identifier = document->frame()->loader()->loadResourceSynchronously(request, storedCredentials, error, response, data);
- if (m_sameOriginRequest || m_options.crossOriginRequestPolicy == AllowCrossOriginRequests) {
- bool skipCanLoadCheck = false;
- loadRequest(request, skipCanLoadCheck);
+ // No exception for file:/// resources, see <rdar://problem/4962298>.
+ // Also, if we have an HTTP response, then it wasn't a network error in fact.
+ if (!error.isNull() && !request.url().isLocalFile() && response.httpStatusCode() <= 0) {
+ client.didFail(error);
return;
}
- if (m_options.crossOriginRequestPolicy == DenyCrossOriginRequests) {
- m_client->didFail(ResourceError());
+ // FIXME: This check along with the one in willSendRequest is specific to xhr and
+ // should be made more generic.
+ if (sameOriginRequest && !document->securityOrigin()->canRequest(response.url())) {
+ client.didFailRedirectCheck();
return;
}
-
- ASSERT(m_options.crossOriginRequestPolicy == UseAccessControl);
-
- if (!m_options.forcePreflight && isSimpleCrossOriginAccessRequest(request.httpMethod(), request.httpHeaderFields()))
- makeSimpleCrossOriginAccessRequest(request);
- else {
- m_actualRequest.set(new ResourceRequest(request));
- m_actualRequest->setAllowHTTPCookies(m_options.allowCredentials);
-
- if (CrossOriginPreflightResultCache::shared().canSkipPreflight(document->securityOrigin()->toString(), request.url(), m_options.allowCredentials, request.httpMethod(), request.httpHeaderFields()))
- preflightSuccess();
- else
- makeCrossOriginAccessRequestWithPreflight(request);
- }
-}
-void DocumentThreadableLoader::makeSimpleCrossOriginAccessRequest(const ResourceRequest& request)
-{
- ASSERT(isSimpleCrossOriginAccessRequest(request.httpMethod(), request.httpHeaderFields()));
-
- // Cross-origin requests are only defined for HTTP. We would catch this when checking response headers later, but there is no reason to send a request that's guaranteed to be denied.
- if (!request.url().protocolInHTTPFamily()) {
- m_client->didFail(ResourceError());
- return;
- }
+ client.didReceiveResponse(response);
- // Make a copy of the passed request so that we can modify some details.
- ResourceRequest crossOriginRequest(request);
- crossOriginRequest.removeCredentials();
- crossOriginRequest.setAllowHTTPCookies(m_options.allowCredentials);
- crossOriginRequest.setHTTPOrigin(m_document->securityOrigin()->toString());
+ const char* bytes = static_cast<const char*>(data.data());
+ int len = static_cast<int>(data.size());
+ client.didReceiveData(bytes, len);
- bool skipCanLoadCheck = false;
- loadRequest(crossOriginRequest, skipCanLoadCheck);
+ client.didFinishLoading(identifier);
}
-void DocumentThreadableLoader::makeCrossOriginAccessRequestWithPreflight(const ResourceRequest& request)
+PassRefPtr<DocumentThreadableLoader> DocumentThreadableLoader::create(Document* document, ThreadableLoaderClient* client, const ResourceRequest& request, LoadCallbacks callbacksSetting, ContentSniff contentSniff, StoredCredentials storedCredentials, CrossOriginRedirectPolicy crossOriginRedirectPolicy)
{
- ResourceRequest preflightRequest(request.url());
- preflightRequest.removeCredentials();
- preflightRequest.setHTTPOrigin(m_document->securityOrigin()->toString());
- preflightRequest.setAllowHTTPCookies(m_options.allowCredentials);
- preflightRequest.setHTTPMethod("OPTIONS");
- preflightRequest.setHTTPHeaderField("Access-Control-Request-Method", request.httpMethod());
-
- const HTTPHeaderMap& requestHeaderFields = request.httpHeaderFields();
-
- if (requestHeaderFields.size() > 0) {
- Vector<UChar> headerBuffer;
- HTTPHeaderMap::const_iterator it = requestHeaderFields.begin();
- append(headerBuffer, it->first);
- ++it;
-
- HTTPHeaderMap::const_iterator end = requestHeaderFields.end();
- for (; it != end; ++it) {
- headerBuffer.append(',');
- headerBuffer.append(' ');
- append(headerBuffer, it->first);
- }
-
- preflightRequest.setHTTPHeaderField("Access-Control-Request-Headers", String::adopt(headerBuffer));
- preflightRequest.addHTTPHeaderFields(requestHeaderFields);
- }
+ ASSERT(document);
+ RefPtr<DocumentThreadableLoader> loader = adoptRef(new DocumentThreadableLoader(document, client, request, callbacksSetting, contentSniff, storedCredentials, crossOriginRedirectPolicy));
+ if (!loader->m_loader)
+ loader = 0;
+ return loader.release();
+}
- bool skipCanLoadCheck = false;
- loadRequest(preflightRequest, skipCanLoadCheck);
+DocumentThreadableLoader::DocumentThreadableLoader(Document* document, ThreadableLoaderClient* client, const ResourceRequest& request, LoadCallbacks callbacksSetting, ContentSniff contentSniff, StoredCredentials storedCredentials, CrossOriginRedirectPolicy crossOriginRedirectPolicy)
+ : m_client(client)
+ , m_document(document)
+ , m_allowStoredCredentials(storedCredentials == AllowStoredCredentials)
+ , m_sameOriginRequest(document->securityOrigin()->canRequest(request.url()))
+ , m_denyCrossOriginRedirect(crossOriginRedirectPolicy == DenyCrossOriginRedirect)
+{
+ ASSERT(document);
+ ASSERT(client);
+ ASSERT(storedCredentials == AllowStoredCredentials || storedCredentials == DoNotAllowStoredCredentials);
+ ASSERT(crossOriginRedirectPolicy == DenyCrossOriginRedirect || crossOriginRedirectPolicy == AllowCrossOriginRedirect);
+ m_loader = SubresourceLoader::create(document->frame(), this, request, false, callbacksSetting == SendLoadCallbacks, contentSniff == SniffContent);
}
DocumentThreadableLoader::~DocumentThreadableLoader()
@@ -169,7 +122,8 @@ void DocumentThreadableLoader::willSendRequest(SubresourceLoader* loader, Resour
ASSERT(m_client);
ASSERT_UNUSED(loader, loader == m_loader);
- if (!isAllowedRedirect(request.url())) {
+ // FIXME: This needs to be fixed to follow the redirect correctly even for cross-domain requests.
+ if (m_denyCrossOriginRedirect && !m_document->securityOrigin()->canRequest(request.url())) {
RefPtr<DocumentThreadableLoader> protect(this);
m_client->didFailRedirectCheck();
request = ResourceRequest();
@@ -189,31 +143,7 @@ void DocumentThreadableLoader::didReceiveResponse(SubresourceLoader* loader, con
ASSERT(m_client);
ASSERT_UNUSED(loader, loader == m_loader);
- if (m_actualRequest) {
- if (!passesAccessControlCheck(response, m_options.allowCredentials, m_document->securityOrigin())) {
- preflightFailure();
- return;
- }
-
- OwnPtr<CrossOriginPreflightResultCacheItem> preflightResult(new CrossOriginPreflightResultCacheItem(m_options.allowCredentials));
- if (!preflightResult->parse(response)
- || !preflightResult->allowsCrossOriginMethod(m_actualRequest->httpMethod())
- || !preflightResult->allowsCrossOriginHeaders(m_actualRequest->httpHeaderFields())) {
- preflightFailure();
- return;
- }
-
- CrossOriginPreflightResultCache::shared().appendEntry(m_document->securityOrigin()->toString(), m_actualRequest->url(), preflightResult.release());
- } else {
- if (!m_sameOriginRequest && m_options.crossOriginRequestPolicy == UseAccessControl) {
- if (!passesAccessControlCheck(response, m_options.allowCredentials, m_document->securityOrigin())) {
- m_client->didFail(ResourceError());
- return;
- }
- }
-
- m_client->didReceiveResponse(response);
- }
+ m_client->didReceiveResponse(response);
}
void DocumentThreadableLoader::didReceiveData(SubresourceLoader* loader, const char* data, int lengthReceived)
@@ -228,17 +158,7 @@ void DocumentThreadableLoader::didFinishLoading(SubresourceLoader* loader)
{
ASSERT(loader == m_loader);
ASSERT(m_client);
- didFinishLoading(loader->identifier());
-}
-
-void DocumentThreadableLoader::didFinishLoading(unsigned long identifier)
-{
- if (m_actualRequest) {
- ASSERT(!m_sameOriginRequest);
- ASSERT(m_options.crossOriginRequestPolicy == UseAccessControl);
- preflightSuccess();
- } else
- m_client->didFinishLoading(identifier);
+ m_client->didFinishLoading(loader->identifier());
}
void DocumentThreadableLoader::didFail(SubresourceLoader* loader, const ResourceError& error)
@@ -254,7 +174,7 @@ bool DocumentThreadableLoader::getShouldUseCredentialStorage(SubresourceLoader*
{
ASSERT_UNUSED(loader, loader == m_loader);
- if (!m_options.allowCredentials) {
+ if (!m_allowStoredCredentials) {
shouldUseCredentialStorage = false;
return true;
}
@@ -280,73 +200,4 @@ void DocumentThreadableLoader::receivedCancellation(SubresourceLoader* loader, c
m_client->didReceiveAuthenticationCancellation(challenge.failureResponse());
}
-void DocumentThreadableLoader::preflightSuccess()
-{
- OwnPtr<ResourceRequest> actualRequest;
- actualRequest.swap(m_actualRequest);
-
- bool skipCanLoadCheck = true; // ok to skip load check since we already asked about the preflight request
- loadRequest(*actualRequest, skipCanLoadCheck);
-}
-
-void DocumentThreadableLoader::preflightFailure()
-{
- m_client->didFail(ResourceError());
-}
-
-void DocumentThreadableLoader::loadRequest(const ResourceRequest& request, bool skipCanLoadCheck)
-{
- if (m_async) {
- // Don't sniff content or send load callbacks for the preflight request.
- bool sendLoadCallbacks = m_options.sendLoadCallbacks && !m_actualRequest;
- bool sniffContent = m_options.sniffContent && !m_actualRequest;
- m_loader = SubresourceLoader::create(m_document->frame(), this, request, skipCanLoadCheck, sendLoadCallbacks, sniffContent);
- return;
- }
-
- // FIXME: ThreadableLoaderOptions.sniffContent is not supported for synchronous requests.
- StoredCredentials storedCredentials = m_options.allowCredentials ? AllowStoredCredentials : DoNotAllowStoredCredentials;
-
- Vector<char> data;
- ResourceError error;
- ResourceResponse response;
- unsigned long identifier = std::numeric_limits<unsigned long>::max();
- if (m_document->frame())
- identifier = m_document->frame()->loader()->loadResourceSynchronously(request, storedCredentials, error, response, data);
-
- // No exception for file:/// resources, see <rdar://problem/4962298>.
- // Also, if we have an HTTP response, then it wasn't a network error in fact.
- if (!error.isNull() && !request.url().isLocalFile() && response.httpStatusCode() <= 0) {
- m_client->didFail(error);
- return;
- }
-
- // FIXME: FrameLoader::loadSynchronously() does not tell us whether a redirect happened or not, so we guess by comparing the
- // request and response URLs. This isn't a perfect test though, since a server can serve a redirect to the same URL that was
- // requested.
- if (request.url() != response.url() && !isAllowedRedirect(response.url())) {
- m_client->didFailRedirectCheck();
- return;
- }
-
- didReceiveResponse(0, response);
-
- const char* bytes = static_cast<const char*>(data.data());
- int len = static_cast<int>(data.size());
- didReceiveData(0, bytes, len);
-
- didFinishLoading(identifier);
-}
-
-bool DocumentThreadableLoader::isAllowedRedirect(const KURL& url)
-{
- if (m_options.crossOriginRequestPolicy == AllowCrossOriginRequests)
- return true;
-
- // FIXME: We need to implement access control for each redirect. This will require some refactoring though, because the code
- // that processes redirects doesn't know about access control and expects a synchronous answer from its client about whether
- // a redirect should proceed.
- return m_sameOriginRequest && m_document->securityOrigin()->canRequest(url);
-}
-
} // namespace WebCore
diff --git a/WebCore/loader/DocumentThreadableLoader.h b/WebCore/loader/DocumentThreadableLoader.h
index 64b1a22..465475f 100644
--- a/WebCore/loader/DocumentThreadableLoader.h
+++ b/WebCore/loader/DocumentThreadableLoader.h
@@ -33,21 +33,19 @@
#include "SubresourceLoaderClient.h"
#include "ThreadableLoader.h"
-#include <wtf/OwnPtr.h>
#include <wtf/PassRefPtr.h>
#include <wtf/RefCounted.h>
#include <wtf/RefPtr.h>
namespace WebCore {
class Document;
- class KURL;
struct ResourceRequest;
class ThreadableLoaderClient;
class DocumentThreadableLoader : public RefCounted<DocumentThreadableLoader>, public ThreadableLoader, private SubresourceLoaderClient {
public:
- static void loadResourceSynchronously(Document*, const ResourceRequest&, ThreadableLoaderClient&, const ThreadableLoaderOptions&);
- static PassRefPtr<DocumentThreadableLoader> create(Document*, ThreadableLoaderClient*, const ResourceRequest&, const ThreadableLoaderOptions&);
+ static void loadResourceSynchronously(Document*, const ResourceRequest&, ThreadableLoaderClient&, StoredCredentials);
+ static PassRefPtr<DocumentThreadableLoader> create(Document*, ThreadableLoaderClient*, const ResourceRequest&, LoadCallbacks, ContentSniff, StoredCredentials, CrossOriginRedirectPolicy);
virtual ~DocumentThreadableLoader();
virtual void cancel();
@@ -60,13 +58,7 @@ namespace WebCore {
virtual void derefThreadableLoader() { deref(); }
private:
- enum BlockingBehavior {
- LoadSynchronously,
- LoadAsynchronously
- };
-
- DocumentThreadableLoader(Document*, ThreadableLoaderClient*, BlockingBehavior blockingBehavior, const ResourceRequest&, const ThreadableLoaderOptions& options);
-
+ DocumentThreadableLoader(Document*, ThreadableLoaderClient*, const ResourceRequest&, LoadCallbacks, ContentSniff, StoredCredentials, CrossOriginRedirectPolicy);
virtual void willSendRequest(SubresourceLoader*, ResourceRequest&, const ResourceResponse& redirectResponse);
virtual void didSendData(SubresourceLoader*, unsigned long long bytesSent, unsigned long long totalBytesToBeSent);
@@ -79,22 +71,12 @@ namespace WebCore {
virtual void didReceiveAuthenticationChallenge(SubresourceLoader*, const AuthenticationChallenge&);
virtual void receivedCancellation(SubresourceLoader*, const AuthenticationChallenge&);
- void didFinishLoading(unsigned long identifier);
- void makeSimpleCrossOriginAccessRequest(const ResourceRequest& request);
- void makeCrossOriginAccessRequestWithPreflight(const ResourceRequest& request);
- void preflightSuccess();
- void preflightFailure();
-
- void loadRequest(const ResourceRequest&, bool skipCanLoadCheck);
- bool isAllowedRedirect(const KURL&);
-
RefPtr<SubresourceLoader> m_loader;
ThreadableLoaderClient* m_client;
Document* m_document;
- ThreadableLoaderOptions m_options;
+ bool m_allowStoredCredentials;
bool m_sameOriginRequest;
- bool m_async;
- OwnPtr<ResourceRequest> m_actualRequest; // non-null during Access Control preflight checks
+ bool m_denyCrossOriginRedirect;
};
} // namespace WebCore
diff --git a/WebCore/loader/EmptyClients.h b/WebCore/loader/EmptyClients.h
index 8d748a7..3f70c43 100644
--- a/WebCore/loader/EmptyClients.h
+++ b/WebCore/loader/EmptyClients.h
@@ -137,10 +137,6 @@ public:
virtual void reachedMaxAppCacheSize(int64_t) { }
#endif
-#if ENABLE(NOTIFICATIONS)
- virtual NotificationPresenter* notificationPresenter() const { return 0; }
-#endif
-
virtual void runOpenPanel(Frame*, PassRefPtr<FileChooser>) { }
virtual void formStateDidChange(const Node*) { }
diff --git a/WebCore/loader/FTPDirectoryDocument.cpp b/WebCore/loader/FTPDirectoryDocument.cpp
index ee0f4ca..ace4cfe 100644
--- a/WebCore/loader/FTPDirectoryDocument.cpp
+++ b/WebCore/loader/FTPDirectoryDocument.cpp
@@ -118,7 +118,7 @@ void FTPDirectoryTokenizer::appendEntry(const String& filename, const String& si
rowElement->setAttribute("class", "ftpDirectoryEntryRow", ec);
RefPtr<Element> element = m_doc->createElement(tdTag, false);
- element->appendChild(Text::create(m_doc, String(&noBreakSpace, 1)), ec);
+ element->appendChild(new Text(m_doc, String(&noBreakSpace, 1)), ec);
if (isDirectory)
element->setAttribute("class", "ftpDirectoryIcon ftpDirectoryTypeDirectory", ec);
else
@@ -130,12 +130,12 @@ void FTPDirectoryTokenizer::appendEntry(const String& filename, const String& si
rowElement->appendChild(element, ec);
element = m_doc->createElement(tdTag, false);
- element->appendChild(Text::create(m_doc, date), ec);
+ element->appendChild(new Text(m_doc, date), ec);
element->setAttribute("class", "ftpDirectoryFileDate", ec);
rowElement->appendChild(element, ec);
element = m_doc->createElement(tdTag, false);
- element->appendChild(Text::create(m_doc, size), ec);
+ element->appendChild(new Text(m_doc, size), ec);
element->setAttribute("class", "ftpDirectoryFileSize", ec);
rowElement->appendChild(element, ec);
}
@@ -152,7 +152,7 @@ PassRefPtr<Element> FTPDirectoryTokenizer::createTDForFilename(const String& fil
RefPtr<Element> anchorElement = m_doc->createElement(aTag, false);
anchorElement->setAttribute("href", fullURL, ec);
- anchorElement->appendChild(Text::create(m_doc, filename), ec);
+ anchorElement->appendChild(new Text(m_doc, filename), ec);
RefPtr<Element> tdElement = m_doc->createElement(tdTag, false);
tdElement->appendChild(anchorElement, ec);
diff --git a/WebCore/loader/FTPDirectoryDocument.h b/WebCore/loader/FTPDirectoryDocument.h
index b208c4e..ecc6f73 100644
--- a/WebCore/loader/FTPDirectoryDocument.h
+++ b/WebCore/loader/FTPDirectoryDocument.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2007, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 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
@@ -35,7 +35,7 @@ class FTPDirectoryDocument : public HTMLDocument {
public:
static PassRefPtr<FTPDirectoryDocument> create(Frame* frame)
{
- return adoptRef(new FTPDirectoryDocument(frame));
+ return new FTPDirectoryDocument(frame);
}
private:
diff --git a/WebCore/loader/FrameLoader.cpp b/WebCore/loader/FrameLoader.cpp
index dd584ca..256c82d 100644
--- a/WebCore/loader/FrameLoader.cpp
+++ b/WebCore/loader/FrameLoader.cpp
@@ -89,7 +89,6 @@
#include "SecurityOrigin.h"
#include "SegmentedString.h"
#include "Settings.h"
-#include "SharedWorkerRepository.h"
#include "TextResourceDecoder.h"
#include "WindowFeatures.h"
#include "XMLHttpRequest.h"
@@ -278,7 +277,6 @@ FrameLoader::FrameLoader(Frame* frame, FrameLoaderClient* client)
, m_isDisplayingInitialEmptyDocument(false)
, m_committedFirstRealDocumentLoad(false)
, m_didPerformFirstNavigation(false)
- , m_loadingFromCachedPage(false)
#ifndef NDEBUG
, m_didDispatchDidCommitLoad(false)
#endif
@@ -931,6 +929,9 @@ void FrameLoader::begin(const KURL& url, bool dispatch, SecurityOrigin* origin)
m_frame->setDocument(document);
+ if (dispatch)
+ dispatchWindowObjectAvailable();
+
document->setURL(m_URL);
if (m_decoder)
document->setDecoder(m_decoder.get());
@@ -940,9 +941,6 @@ void FrameLoader::begin(const KURL& url, bool dispatch, SecurityOrigin* origin)
m_frame->domWindow()->setURL(document->url());
m_frame->domWindow()->setSecurityOrigin(document->securityOrigin());
- if (dispatch)
- dispatchWindowObjectAvailable();
-
updateFirstPartyForCookies();
Settings* settings = document->settings();
@@ -1845,9 +1843,6 @@ bool FrameLoader::canCachePageContainingThisFrame()
#if ENABLE(DATABASE)
&& !m_frame->document()->hasOpenDatabases()
#endif
-#if ENABLE(SHARED_WORKERS)
- && !SharedWorkerRepository::hasSharedWorkers(m_frame->document())
-#endif
&& !m_frame->document()->usingGeolocation()
&& m_currentHistoryItem
&& !m_quickRedirectComing
@@ -1994,10 +1989,6 @@ bool FrameLoader::logCanCacheFrameDecision(int indentLevel)
if (m_frame->document()->hasOpenDatabases())
{ PCLOG(" -Frame has open database handles"); cannotCache = true; }
#endif
-#if ENABLE(SHARED_WORKERS)
- if (SharedWorkerRepository::hasSharedWorkers(m_frame->document()))
- { PCLOG(" -Frame has associated SharedWorkers"); cannotCache = true; }
-#endif
if (m_frame->document()->usingGeolocation())
{ PCLOG(" -Frame uses Geolocation"); cannotCache = true; }
if (!m_currentHistoryItem)
@@ -2842,8 +2833,7 @@ void FrameLoader::commitProvisionalLoad(PassRefPtr<CachedPage> prpCachedPage)
RefPtr<CachedPage> cachedPage = prpCachedPage;
RefPtr<DocumentLoader> pdl = m_provisionalDocumentLoader;
- LOG(PageCache, "WebCoreLoading %s: About to commit provisional load from previous URL '%s' to new URL '%s'", m_frame->tree()->name().string().utf8().data(), m_URL.string().utf8().data(),
- pdl ? pdl->url().string().utf8().data() : "<no provisional DocumentLoader>");
+ LOG(Loading, "WebCoreLoading %s: About to commit provisional load from previous URL %s", m_frame->tree()->name().string().utf8().data(), m_URL.string().utf8().data());
// Check to see if we need to cache the page we are navigating away from into the back/forward cache.
// We are doing this here because we know for sure that a new page is about to be loaded.
@@ -2884,7 +2874,7 @@ void FrameLoader::commitProvisionalLoad(PassRefPtr<CachedPage> prpCachedPage)
if (m_loadType == FrameLoadTypeStandard && m_documentLoader->isClientRedirect())
updateHistoryForClientRedirect();
- if (m_loadingFromCachedPage) {
+ if (m_documentLoader->isLoadingFromCachedPage()) {
m_frame->document()->documentDidBecomeActive();
// Force a layout to update view size and thereby update scrollbars.
@@ -3461,7 +3451,7 @@ void FrameLoader::continueLoadAfterWillSubmitForm(PolicyAction)
if (activeDocLoader && activeDocLoader->isLoadingMainResource())
return;
- m_loadingFromCachedPage = false;
+ m_provisionalDocumentLoader->setLoadingFromCachedPage(false);
unsigned long identifier = 0;
@@ -4246,17 +4236,7 @@ bool FrameLoader::loadProvisionalItemFromCachedPage()
RefPtr<CachedPage> cachedPage = pageCache()->get(m_provisionalHistoryItem.get());
if (!cachedPage || !cachedPage->document())
return false;
-
- DocumentLoader *provisionalLoader = provisionalDocumentLoader();
- LOG(PageCache, "WebCorePageCache: FrameLoader %p loading provisional DocumentLoader %p with URL '%s' from CachedPage %p", this, provisionalLoader, provisionalLoader->url().string().utf8().data(), cachedPage.get());
-
- provisionalLoader->prepareForLoadStart();
-
- m_loadingFromCachedPage = true;
-
- provisionalLoader->setCommitted(true);
- commitProvisionalLoad(cachedPage);
-
+ provisionalDocumentLoader()->loadFromCachedPage(cachedPage.release());
return true;
}
@@ -5131,6 +5111,8 @@ void FrameLoader::dispatchWindowObjectAvailable()
m_client->windowObjectCleared();
if (Page* page = m_frame->page()) {
+ if (InspectorController* inspector = page->inspectorController())
+ inspector->inspectedWindowScriptObjectCleared(m_frame);
if (InspectorController* inspector = page->parentInspectorController())
inspector->windowScriptObjectAvailable();
}
diff --git a/WebCore/loader/FrameLoader.h b/WebCore/loader/FrameLoader.h
index 17013b5..5a8ee91 100644
--- a/WebCore/loader/FrameLoader.h
+++ b/WebCore/loader/FrameLoader.h
@@ -350,7 +350,6 @@ namespace WebCore {
void setTitle(const String&);
void commitProvisionalLoad(PassRefPtr<CachedPage>);
- bool isLoadingFromCachedPage() const { return m_loadingFromCachedPage; }
void goToItem(HistoryItem*, FrameLoadType);
void saveDocumentAndScrollState();
@@ -623,7 +622,6 @@ namespace WebCore {
RefPtr<HistoryItem> m_provisionalHistoryItem;
bool m_didPerformFirstNavigation;
- bool m_loadingFromCachedPage;
#ifndef NDEBUG
bool m_didDispatchDidCommitLoad;
diff --git a/WebCore/loader/ImageDocument.h b/WebCore/loader/ImageDocument.h
index 080b250..1bc5245 100644
--- a/WebCore/loader/ImageDocument.h
+++ b/WebCore/loader/ImageDocument.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 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
@@ -35,7 +35,7 @@ class ImageDocument : public HTMLDocument {
public:
static PassRefPtr<ImageDocument> create(Frame* frame)
{
- return adoptRef(new ImageDocument(frame));
+ return new ImageDocument(frame);
}
CachedImage* cachedImage();
diff --git a/WebCore/loader/MediaDocument.h b/WebCore/loader/MediaDocument.h
index aa751ab..ac286f0 100644
--- a/WebCore/loader/MediaDocument.h
+++ b/WebCore/loader/MediaDocument.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008,2009 Apple Inc. All Rights Reserved.
+ * Copyright (C) 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
@@ -36,23 +36,22 @@ class MediaDocument : public HTMLDocument {
public:
static PassRefPtr<MediaDocument> create(Frame* frame)
{
- return adoptRef(new MediaDocument(frame));
+ return new MediaDocument(frame);
}
- virtual ~MediaDocument();
+
+ virtual void defaultEventHandler(Event*);
void mediaElementSawUnsupportedTracks();
private:
MediaDocument(Frame*);
+ virtual ~MediaDocument();
+ Timer<MediaDocument> m_replaceMediaElementTimer;
virtual bool isMediaDocument() const { return true; }
virtual Tokenizer* createTokenizer();
- virtual void defaultEventHandler(Event*);
-
void replaceMediaElementTimerFired(Timer<MediaDocument>*);
-
- Timer<MediaDocument> m_replaceMediaElementTimer;
};
}
diff --git a/WebCore/loader/PlaceholderDocument.h b/WebCore/loader/PlaceholderDocument.h
index a759266..c542370 100644
--- a/WebCore/loader/PlaceholderDocument.h
+++ b/WebCore/loader/PlaceholderDocument.h
@@ -34,7 +34,7 @@ class PlaceholderDocument : public Document {
public:
static PassRefPtr<PlaceholderDocument> create(Frame* frame)
{
- return adoptRef(new PlaceholderDocument(frame));
+ return new PlaceholderDocument(frame);
}
virtual void attach();
diff --git a/WebCore/loader/PluginDocument.h b/WebCore/loader/PluginDocument.h
index 1d5c964..35e4038 100644
--- a/WebCore/loader/PluginDocument.h
+++ b/WebCore/loader/PluginDocument.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2006, 2008, 2009Apple Inc. All rights reserved.
+ * Copyright (C) 2006, 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
@@ -33,7 +33,7 @@ class PluginDocument : public HTMLDocument {
public:
static PassRefPtr<PluginDocument> create(Frame* frame)
{
- return adoptRef(new PluginDocument(frame));
+ return new PluginDocument(frame);
}
private:
diff --git a/WebCore/loader/TextDocument.h b/WebCore/loader/TextDocument.h
index 53e3074..c67fea5 100644
--- a/WebCore/loader/TextDocument.h
+++ b/WebCore/loader/TextDocument.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2006, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2006, 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
@@ -35,7 +35,7 @@ class TextDocument : public HTMLDocument {
public:
static PassRefPtr<TextDocument> create(Frame* frame)
{
- return adoptRef(new TextDocument(frame));
+ return new TextDocument(frame);
}
private:
diff --git a/WebCore/loader/ThreadableLoader.cpp b/WebCore/loader/ThreadableLoader.cpp
index 720ba4e..b174af7 100644
--- a/WebCore/loader/ThreadableLoader.cpp
+++ b/WebCore/loader/ThreadableLoader.cpp
@@ -40,33 +40,33 @@
namespace WebCore {
-PassRefPtr<ThreadableLoader> ThreadableLoader::create(ScriptExecutionContext* context, ThreadableLoaderClient* client, const ResourceRequest& request, const ThreadableLoaderOptions& options)
+PassRefPtr<ThreadableLoader> ThreadableLoader::create(ScriptExecutionContext* context, ThreadableLoaderClient* client, const ResourceRequest& request, LoadCallbacks callbacksSetting, ContentSniff contentSniff, StoredCredentials storedCredentials, CrossOriginRedirectPolicy crossOriginRedirectPolicy)
{
ASSERT(client);
ASSERT(context);
#if ENABLE(WORKERS)
if (context->isWorkerContext())
- return WorkerThreadableLoader::create(static_cast<WorkerContext*>(context), client, WorkerRunLoop::defaultMode(), request, options);
+ return WorkerThreadableLoader::create(static_cast<WorkerContext*>(context), client, WorkerRunLoop::defaultMode(), request, callbacksSetting, contentSniff, storedCredentials, crossOriginRedirectPolicy);
#endif // ENABLE(WORKERS)
ASSERT(context->isDocument());
- return DocumentThreadableLoader::create(static_cast<Document*>(context), client, request, options);
+ return DocumentThreadableLoader::create(static_cast<Document*>(context), client, request, callbacksSetting, contentSniff, storedCredentials, crossOriginRedirectPolicy);
}
-void ThreadableLoader::loadResourceSynchronously(ScriptExecutionContext* context, const ResourceRequest& request, ThreadableLoaderClient& client, const ThreadableLoaderOptions& options)
+void ThreadableLoader::loadResourceSynchronously(ScriptExecutionContext* context, const ResourceRequest& request, ThreadableLoaderClient& client, StoredCredentials storedCredentials)
{
ASSERT(context);
#if ENABLE(WORKERS)
if (context->isWorkerContext()) {
- WorkerThreadableLoader::loadResourceSynchronously(static_cast<WorkerContext*>(context), request, client, options);
+ WorkerThreadableLoader::loadResourceSynchronously(static_cast<WorkerContext*>(context), request, client, storedCredentials, DenyCrossOriginRedirect);
return;
}
#endif // ENABLE(WORKERS)
ASSERT(context->isDocument());
- DocumentThreadableLoader::loadResourceSynchronously(static_cast<Document*>(context), request, client, options);
+ DocumentThreadableLoader::loadResourceSynchronously(static_cast<Document*>(context), request, client, storedCredentials);
}
} // namespace WebCore
diff --git a/WebCore/loader/ThreadableLoader.h b/WebCore/loader/ThreadableLoader.h
index a52bfad..1ac12cb 100644
--- a/WebCore/loader/ThreadableLoader.h
+++ b/WebCore/loader/ThreadableLoader.h
@@ -43,32 +43,32 @@ namespace WebCore {
class ScriptExecutionContext;
class ThreadableLoaderClient;
+ enum LoadCallbacks {
+ SendLoadCallbacks,
+ DoNotSendLoadCallbacks
+ };
+
+ enum ContentSniff {
+ SniffContent,
+ DoNotSniffContent
+ };
+
enum StoredCredentials {
AllowStoredCredentials,
DoNotAllowStoredCredentials
};
-
- enum CrossOriginRequestPolicy {
- DenyCrossOriginRequests,
- UseAccessControl,
- AllowCrossOriginRequests
- };
-
- struct ThreadableLoaderOptions {
- ThreadableLoaderOptions() : sendLoadCallbacks(false), sniffContent(false), allowCredentials(false), forcePreflight(false), crossOriginRequestPolicy(DenyCrossOriginRequests) { }
- bool sendLoadCallbacks;
- bool sniffContent;
- bool allowCredentials; // Whether HTTP credentials and cookies are sent with the request.
- bool forcePreflight; // If AccessControl is used, whether to force a preflight.
- CrossOriginRequestPolicy crossOriginRequestPolicy;
+
+ enum CrossOriginRedirectPolicy {
+ DenyCrossOriginRedirect,
+ AllowCrossOriginRedirect
};
// Useful for doing loader operations from any thread (not threadsafe,
// just able to run on threads other than the main thread).
class ThreadableLoader : public Noncopyable {
public:
- static void loadResourceSynchronously(ScriptExecutionContext*, const ResourceRequest&, ThreadableLoaderClient&, const ThreadableLoaderOptions&);
- static PassRefPtr<ThreadableLoader> create(ScriptExecutionContext*, ThreadableLoaderClient*, const ResourceRequest&, const ThreadableLoaderOptions&);
+ static void loadResourceSynchronously(ScriptExecutionContext*, const ResourceRequest&, ThreadableLoaderClient&, StoredCredentials);
+ static PassRefPtr<ThreadableLoader> create(ScriptExecutionContext*, ThreadableLoaderClient*, const ResourceRequest&, LoadCallbacks, ContentSniff, StoredCredentials, CrossOriginRedirectPolicy);
virtual void cancel() = 0;
void ref() { refThreadableLoader(); }
diff --git a/WebCore/loader/WorkerThreadableLoader.cpp b/WebCore/loader/WorkerThreadableLoader.cpp
index 6819759..4d12b8d 100644
--- a/WebCore/loader/WorkerThreadableLoader.cpp
+++ b/WebCore/loader/WorkerThreadableLoader.cpp
@@ -53,10 +53,11 @@ namespace WebCore {
static const char loadResourceSynchronouslyMode[] = "loadResourceSynchronouslyMode";
-WorkerThreadableLoader::WorkerThreadableLoader(WorkerContext* workerContext, ThreadableLoaderClient* client, const String& taskMode, const ResourceRequest& request, const ThreadableLoaderOptions& options)
+WorkerThreadableLoader::WorkerThreadableLoader(WorkerContext* workerContext, ThreadableLoaderClient* client, const String& taskMode, const ResourceRequest& request, LoadCallbacks callbacksSetting,
+ ContentSniff contentSniff, StoredCredentials storedCredentials, CrossOriginRedirectPolicy crossOriginRedirectPolicy)
: m_workerContext(workerContext)
, m_workerClientWrapper(ThreadableLoaderClientWrapper::create(client))
- , m_bridge(*(new MainThreadBridge(m_workerClientWrapper, m_workerContext->thread()->workerLoaderProxy(), taskMode, request, options)))
+ , m_bridge(*(new MainThreadBridge(m_workerClientWrapper, m_workerContext->thread()->workerLoaderProxy(), taskMode, request, callbacksSetting, contentSniff, storedCredentials, crossOriginRedirectPolicy)))
{
}
@@ -65,7 +66,7 @@ WorkerThreadableLoader::~WorkerThreadableLoader()
m_bridge.destroy();
}
-void WorkerThreadableLoader::loadResourceSynchronously(WorkerContext* workerContext, const ResourceRequest& request, ThreadableLoaderClient& client, const ThreadableLoaderOptions& options)
+void WorkerThreadableLoader::loadResourceSynchronously(WorkerContext* workerContext, const ResourceRequest& request, ThreadableLoaderClient& client, StoredCredentials storedCredentials, CrossOriginRedirectPolicy crossOriginRedirectPolicy)
{
WorkerRunLoop& runLoop = workerContext->thread()->runLoop();
@@ -73,7 +74,9 @@ void WorkerThreadableLoader::loadResourceSynchronously(WorkerContext* workerCont
String mode = loadResourceSynchronouslyMode;
mode.append(String::number(runLoop.createUniqueId()));
- RefPtr<WorkerThreadableLoader> loader = WorkerThreadableLoader::create(workerContext, &client, mode, request, options);
+ ContentSniff contentSniff = request.url().isLocalFile() ? SniffContent : DoNotSniffContent;
+ RefPtr<WorkerThreadableLoader> loader = WorkerThreadableLoader::create(workerContext, &client, mode, request, DoNotSendLoadCallbacks, contentSniff, storedCredentials, crossOriginRedirectPolicy);
+
MessageQueueWaitResult result = MessageQueueMessageReceived;
while (!loader->done() && result != MessageQueueTerminated)
result = runLoop.runInMode(workerContext, mode);
@@ -88,20 +91,21 @@ void WorkerThreadableLoader::cancel()
}
WorkerThreadableLoader::MainThreadBridge::MainThreadBridge(PassRefPtr<ThreadableLoaderClientWrapper> workerClientWrapper, WorkerLoaderProxy& loaderProxy, const String& taskMode,
- const ResourceRequest& request, const ThreadableLoaderOptions& options)
+ const ResourceRequest& request, LoadCallbacks callbacksSetting, ContentSniff contentSniff, StoredCredentials storedCredentials,
+ CrossOriginRedirectPolicy crossOriginRedirectPolicy)
: m_workerClientWrapper(workerClientWrapper)
, m_loaderProxy(loaderProxy)
, m_taskMode(taskMode.copy())
{
ASSERT(m_workerClientWrapper.get());
- m_loaderProxy.postTaskToLoader(createCallbackTask(&MainThreadBridge::mainThreadCreateLoader, this, request, options));
+ m_loaderProxy.postTaskToLoader(createCallbackTask(&MainThreadBridge::mainThreadCreateLoader, this, request, callbacksSetting, contentSniff, storedCredentials, crossOriginRedirectPolicy));
}
WorkerThreadableLoader::MainThreadBridge::~MainThreadBridge()
{
}
-void WorkerThreadableLoader::MainThreadBridge::mainThreadCreateLoader(ScriptExecutionContext* context, MainThreadBridge* thisPtr, auto_ptr<CrossThreadResourceRequestData> requestData, ThreadableLoaderOptions options)
+void WorkerThreadableLoader::MainThreadBridge::mainThreadCreateLoader(ScriptExecutionContext* context, MainThreadBridge* thisPtr, auto_ptr<CrossThreadResourceRequestData> requestData, LoadCallbacks callbacksSetting, ContentSniff contentSniff, StoredCredentials storedCredentials, CrossOriginRedirectPolicy crossOriginRedirectPolicy)
{
ASSERT(isMainThread());
ASSERT(context->isDocument());
@@ -113,7 +117,7 @@ void WorkerThreadableLoader::MainThreadBridge::mainThreadCreateLoader(ScriptExec
// FIXME: If the a site requests a local resource, then this will return a non-zero value but the sync path
// will return a 0 value. Either this should return 0 or the other code path should do a callback with
// a failure.
- thisPtr->m_mainThreadLoader = ThreadableLoader::create(context, thisPtr, *request, options);
+ thisPtr->m_mainThreadLoader = ThreadableLoader::create(context, thisPtr, *request, callbacksSetting, contentSniff, storedCredentials, crossOriginRedirectPolicy);
ASSERT(thisPtr->m_mainThreadLoader);
}
diff --git a/WebCore/loader/WorkerThreadableLoader.h b/WebCore/loader/WorkerThreadableLoader.h
index 230c77d..8b11b70 100644
--- a/WebCore/loader/WorkerThreadableLoader.h
+++ b/WebCore/loader/WorkerThreadableLoader.h
@@ -55,10 +55,10 @@ namespace WebCore {
class WorkerThreadableLoader : public RefCounted<WorkerThreadableLoader>, public ThreadableLoader {
public:
- static void loadResourceSynchronously(WorkerContext*, const ResourceRequest&, ThreadableLoaderClient&, const ThreadableLoaderOptions&);
- static PassRefPtr<WorkerThreadableLoader> create(WorkerContext* workerContext, ThreadableLoaderClient* client, const String& taskMode, const ResourceRequest& request, const ThreadableLoaderOptions& options)
+ static void loadResourceSynchronously(WorkerContext*, const ResourceRequest&, ThreadableLoaderClient&, StoredCredentials, CrossOriginRedirectPolicy);
+ static PassRefPtr<WorkerThreadableLoader> create(WorkerContext* workerContext, ThreadableLoaderClient* client, const String& taskMode, const ResourceRequest& request, LoadCallbacks callbacksSetting, ContentSniff contentSniff, StoredCredentials storedCredentials, CrossOriginRedirectPolicy crossOriginRedirectPolicy)
{
- return adoptRef(new WorkerThreadableLoader(workerContext, client, taskMode, request, options));
+ return adoptRef(new WorkerThreadableLoader(workerContext, client, taskMode, request, callbacksSetting, contentSniff, storedCredentials, crossOriginRedirectPolicy));
}
~WorkerThreadableLoader();
@@ -97,7 +97,7 @@ namespace WebCore {
class MainThreadBridge : ThreadableLoaderClient {
public:
// All executed on the worker context's thread.
- MainThreadBridge(PassRefPtr<ThreadableLoaderClientWrapper>, WorkerLoaderProxy&, const String& taskMode, const ResourceRequest&, const ThreadableLoaderOptions&);
+ MainThreadBridge(PassRefPtr<ThreadableLoaderClientWrapper>, WorkerLoaderProxy&, const String& taskMode, const ResourceRequest&, LoadCallbacks, ContentSniff, StoredCredentials, CrossOriginRedirectPolicy);
void cancel();
void destroy();
@@ -109,7 +109,7 @@ namespace WebCore {
static void mainThreadDestroy(ScriptExecutionContext*, MainThreadBridge*);
~MainThreadBridge();
- static void mainThreadCreateLoader(ScriptExecutionContext*, MainThreadBridge*, std::auto_ptr<CrossThreadResourceRequestData>, ThreadableLoaderOptions);
+ static void mainThreadCreateLoader(ScriptExecutionContext*, MainThreadBridge*, std::auto_ptr<CrossThreadResourceRequestData>, LoadCallbacks, ContentSniff, StoredCredentials, CrossOriginRedirectPolicy);
static void mainThreadCancel(ScriptExecutionContext*, MainThreadBridge*);
virtual void didSendData(unsigned long long bytesSent, unsigned long long totalBytesToBeSent);
virtual void didReceiveResponse(const ResourceResponse&);
@@ -133,7 +133,7 @@ namespace WebCore {
String m_taskMode;
};
- WorkerThreadableLoader(WorkerContext*, ThreadableLoaderClient*, const String& taskMode, const ResourceRequest&, const ThreadableLoaderOptions&);
+ WorkerThreadableLoader(WorkerContext*, ThreadableLoaderClient*, const String& taskMode, const ResourceRequest&, LoadCallbacks, ContentSniff, StoredCredentials, CrossOriginRedirectPolicy);
RefPtr<WorkerContext> m_workerContext;
RefPtr<ThreadableLoaderClientWrapper> m_workerClientWrapper;
diff --git a/WebCore/loader/loader.cpp b/WebCore/loader/loader.cpp
index 4ab4f34..65d15a5 100644
--- a/WebCore/loader/loader.cpp
+++ b/WebCore/loader/loader.cpp
@@ -355,7 +355,7 @@ void Loader::Host::didFinishLoading(SubresourceLoader* loader)
DocLoader* docLoader = request->docLoader();
// Prevent the document from being destroyed before we are done with
// the docLoader that it will delete when the document gets deleted.
- RefPtr<Document> protector(docLoader->doc());
+ DocPtr<Document> protector(docLoader->doc());
if (!request->isMultipart())
docLoader->decrementRequestCount();
@@ -403,7 +403,7 @@ void Loader::Host::didFail(SubresourceLoader* loader, bool cancelled)
DocLoader* docLoader = request->docLoader();
// Prevent the document from being destroyed before we are done with
// the docLoader that it will delete when the document gets deleted.
- RefPtr<Document> protector(docLoader->doc());
+ DocPtr<Document> protector(docLoader->doc());
if (!request->isMultipart())
docLoader->decrementRequestCount();
diff --git a/WebCore/manual-tests/gtk/copy-htmltext.html b/WebCore/manual-tests/gtk/copy-htmltext.html
deleted file mode 100644
index 0b811f6..0000000
--- a/WebCore/manual-tests/gtk/copy-htmltext.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Copy HTML content</title>
- </head>
- <body>
- <h1>Copy HTML content from currently editable area</h1>
- <div title="EditableArea" contentEditable="true"
- style="display: block; border: 2px solid black; margin: 5px; padding: 15px;">
- Here is a Editable Area,<br />
- <img title="It's the test image" src="http://webkit.org/images/icon-gold.png" /><br /><br />
- <b>STEPS TO TEST:</b><br />
- <ol>
- <li>Select all that text or picture in this editable area (type <b>Ctrl-A</b> / Option-A)</li>
- <li><b>Copy</b> them use <b>Ctrl-C</b> / Option-C</li>
- <li>Move the cursor to a blank line below</li>
- <li>Paste them use <b>Ctrl-V</b> / Option-V</li>
- </ol>
- <p><b>Ensure</b> that text and image has been pasted with formats and no garbled.</p>
- <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br />
- </div>
- </body>
-</html>
diff --git a/WebCore/manual-tests/keyboard_select_elements_with_same_beginning.html b/WebCore/manual-tests/keyboard_select_elements_with_same_beginning.html
deleted file mode 100644
index 8e3c102..0000000
--- a/WebCore/manual-tests/keyboard_select_elements_with_same_beginning.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=UTF-8">
-<title>
-Test select on elements with same beginning letter
-</title>
-</head>
-<body>
-See bug:<a href="https://bugs.webkit.org/show_bug.cgi?id=28205">28205</a>.
-<p>
-Click the drop-down to show selections (not navigate to the selection box).
-Type the first letter 'A' to go to the elements start with 'A'.
-It should select the first item starts with 'A'.
-In windows, Continue typing 'A', it should continue to select the next item starts with 'A'.
-<p>
-<select name="selOrigin">
- <option value="">Select Station</option>
- <option value="37169_NJCL">Aberdeen Matawan</option>
- <option value="2_ATLC">Absecon</option>
- <option value="3_MNBN">Allendale</option>
- <option value="4_NJCL">Allenhurst</option>
- <option value="12_MNE">Basking Ridge</option>
- <option value="13_NJCL">Bay Head</option>
- <option value="14_BNTN">Bay Street</option>
- <option value="15_NJCL">Belmar</option>
-</select>
-</body>
-</html>
diff --git a/WebCore/manual-tests/wml/select-onpick-event-crash.wml b/WebCore/manual-tests/wml/select-onpick-event-crash.wml
deleted file mode 100644
index 07d0262..0000000
--- a/WebCore/manual-tests/wml/select-onpick-event-crash.wml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
-<wml>
- <card>
- <select name="result" dmultiple="true">
- <option onpick="#card2" value="foo">Foo</option>
- <option onpick="#card2" value="bar">Bar</option>
- </select>
- </card>
-
- <card id="card2">Test pass, if it didn't crash.</card>
-</wml>
diff --git a/WebCore/notifications/Notification.cpp b/WebCore/notifications/Notification.cpp
deleted file mode 100644
index 266392b..0000000
--- a/WebCore/notifications/Notification.cpp
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
- * 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
- * "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 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 "config.h"
-
-#if ENABLE(NOTIFICATIONS)
-
-#include "Notification.h"
-#include "NotificationContents.h"
-
-#include "Document.h"
-#include "EventNames.h"
-#include "WorkerContext.h"
-
-namespace WebCore {
-
-Notification::Notification(const String& url, ScriptExecutionContext* context, ExceptionCode& ec, NotificationPresenter* provider)
- : ActiveDOMObject(context, this)
- , m_isHTML(true)
- , m_isShowing(false)
- , m_presenter(provider)
-{
- if (m_presenter->checkPermission(context->securityOrigin()) != NotificationPresenter::PERMISSION_ALLOWED) {
- ec = SECURITY_ERR;
- return;
- }
-
- m_notificationURL = context->completeURL(url);
- if (url.isEmpty() || !m_notificationURL.isValid()) {
- ec = SYNTAX_ERR;
- return;
- }
-}
-
-Notification::Notification(const NotificationContents& contents, ScriptExecutionContext* context, ExceptionCode& ec, NotificationPresenter* provider)
- : ActiveDOMObject(context, this)
- , m_isHTML(false)
- , m_contents(contents)
- , m_isShowing(false)
- , m_presenter(provider)
-{
- if (m_presenter->checkPermission(context->securityOrigin()) != NotificationPresenter::PERMISSION_ALLOWED) {
- ec = SECURITY_ERR;
- return;
- }
-
- KURL icon = context->completeURL(contents.icon());
- if (!icon.isEmpty() && !icon.isValid()) {
- ec = SYNTAX_ERR;
- return;
- }
-}
-
-Notification::~Notification()
-{
- m_presenter->notificationObjectDestroyed(this);
-}
-
-void Notification::show()
-{
- // prevent double-showing
- if (!m_isShowing)
- m_isShowing = m_presenter->show(this);
-}
-
-void Notification::cancel()
-{
- if (m_isShowing)
- m_presenter->cancel(this);
-}
-
-EventListener* Notification::ondisplay() const
-{
- return getAttributeEventListener("display");
-}
-
-void Notification::setOndisplay(PassRefPtr<EventListener> eventListener)
-{
- setAttributeEventListener("display", eventListener);
-}
-
-EventListener* Notification::onerror() const
-{
- return getAttributeEventListener(eventNames().errorEvent);
-}
-
-void Notification::setOnerror(PassRefPtr<EventListener> eventListener)
-{
- setAttributeEventListener(eventNames().errorEvent, eventListener);
-}
-
-EventListener* Notification::onclose() const
-{
- return getAttributeEventListener(eventNames().closeEvent);
-}
-
-void Notification::setOnclose(PassRefPtr<EventListener> eventListener)
-{
- setAttributeEventListener(eventNames().closeEvent, eventListener);
-}
-
-EventListener* Notification::getAttributeEventListener(const AtomicString& eventType) const
-{
- const RegisteredEventListenerVector& listeners = m_eventListeners;
- size_t size = listeners.size();
- for (size_t i = 0; i < size; ++i) {
- const RegisteredEventListener& r = *listeners[i];
- if (r.eventType() == eventType && r.listener()->isAttribute())
- return r.listener();
- }
- return 0;
-}
-
-void Notification::setAttributeEventListener(const AtomicString& eventType, PassRefPtr<EventListener> listener)
-{
- clearAttributeEventListener(eventType);
- if (listener)
- addEventListener(eventType, listener, false);
-}
-
-void Notification::clearAttributeEventListener(const AtomicString& eventType)
-{
- RegisteredEventListenerVector* listeners = &m_eventListeners;
- size_t size = listeners->size();
- for (size_t i = 0; i < size; ++i) {
- RegisteredEventListener& r = *listeners->at(i);
- if (r.eventType() != eventType || !r.listener()->isAttribute())
- continue;
-
- r.setRemoved(true);
- listeners->remove(i);
- return;
- }
-}
-
-void Notification::dispatchDisplayEvent()
-{
- RefPtr<Event> event = Event::create("display", false, true);
- ExceptionCode ec = 0;
- dispatchEvent(event.release(), ec);
- ASSERT(!ec);
-}
-
-void Notification::dispatchErrorEvent()
-{
- RefPtr<Event> event = Event::create(eventNames().errorEvent, false, true);
- ExceptionCode ec = 0;
- dispatchEvent(event.release(), ec);
- ASSERT(!ec);
-}
-
-void Notification::dispatchCloseEvent()
-{
- RefPtr<Event> event = Event::create(eventNames().closeEvent, false, true);
- ExceptionCode ec = 0;
- dispatchEvent(event.release(), ec);
- ASSERT(!ec);
-}
-
-void Notification::addEventListener(const AtomicString& eventType, PassRefPtr<EventListener> listener, bool useCapture)
-{
- RefPtr<RegisteredEventListener> registeredListener = RegisteredEventListener::create(eventType, listener, useCapture);
- m_eventListeners.append(registeredListener);
-}
-
-void Notification::removeEventListener(const AtomicString& eventType, EventListener* listener, bool useCapture)
-{
- size_t size = m_eventListeners.size();
- for (size_t i = 0; i < size; ++i) {
- RegisteredEventListener& r = *m_eventListeners[i];
- if (r.eventType() == eventType && r.listener() == listener && r.useCapture() == useCapture) {
- r.setRemoved(true);
- m_eventListeners.remove(i);
- return;
- }
- }
-}
-
-void Notification::handleEvent(PassRefPtr<Event> event, bool useCapture)
-{
- RegisteredEventListenerVector listenersCopy = m_eventListeners;
- size_t size = listenersCopy.size();
- for (size_t i = 0; i < size; ++i) {
- RegisteredEventListener& r = *listenersCopy[i];
- if (r.eventType() == event->type() && r.useCapture() == useCapture && !r.removed())
- r.listener()->handleEvent(event.get());
- }
-}
-
-bool Notification::dispatchEvent(PassRefPtr<Event> inEvent, ExceptionCode&)
-{
- RefPtr<Event> event(inEvent);
-
- event->setEventPhase(Event::AT_TARGET);
- event->setCurrentTarget(this);
-
- handleEvent(event.get(), true);
- if (!event->propagationStopped()) {
- handleEvent(event.get(), false);
- }
-
- return !event->defaultPrevented();
-}
-
-} // namespace WebCore
-
-#endif // ENABLE(NOTIFICATIONS)
diff --git a/WebCore/notifications/Notification.h b/WebCore/notifications/Notification.h
deleted file mode 100644
index 9286c55..0000000
--- a/WebCore/notifications/Notification.h
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * 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
- * "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 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 Notification_h
-#define Notification_h
-
-#include "ActiveDOMObject.h"
-#include "AtomicStringHash.h"
-#include "Event.h"
-#include "EventListener.h"
-#include "EventTarget.h"
-#include "ExceptionCode.h"
-#include "KURL.h"
-#include "NotificationPresenter.h"
-#include "NotificationContents.h"
-#include "RegisteredEventListener.h"
-#include <wtf/OwnPtr.h>
-#include <wtf/PassRefPtr.h>
-#include <wtf/RefCounted.h>
-#include <wtf/RefPtr.h>
-
-#if ENABLE(NOTIFICATIONS)
-namespace WebCore {
-
- class WorkerContext;
-
- class Notification : public RefCounted<Notification>, public ActiveDOMObject, public EventTarget {
- public:
- static Notification* create(const String& url, ScriptExecutionContext* context, ExceptionCode& ec, NotificationPresenter* provider) { return new Notification(url, context, ec, provider); }
- static Notification* create(const NotificationContents& contents, ScriptExecutionContext* context, ExceptionCode& ec, NotificationPresenter* provider) { return new Notification(contents, context, ec, provider); }
-
- virtual ~Notification();
-
- void show();
- void cancel();
-
- bool isHTML() { return m_isHTML; }
- KURL url() { return m_notificationURL; }
- NotificationContents& contents() { return m_contents; }
-
- EventListener* ondisplay() const;
- void setOndisplay(PassRefPtr<EventListener> eventListener);
- EventListener* onerror() const;
- void setOnerror(PassRefPtr<EventListener> eventListener);
- EventListener* onclose() const;
- void setOnclose(PassRefPtr<EventListener> eventListener);
-
- using RefCounted<Notification>::ref;
- using RefCounted<Notification>::deref;
-
- // Dispatching of events on the notification. The presenter should call these when events occur.
- void dispatchDisplayEvent();
- void dispatchErrorEvent();
- void dispatchCloseEvent();
-
- // EventTarget interface
- virtual ScriptExecutionContext* scriptExecutionContext() const { return ActiveDOMObject::scriptExecutionContext(); }
- virtual void addEventListener(const AtomicString&, PassRefPtr<EventListener>, bool);
- virtual void removeEventListener(const AtomicString&, EventListener*, bool);
- virtual bool dispatchEvent(PassRefPtr<Event>, ExceptionCode&);
- virtual Notification* toNotification() { return this; }
-
- private:
- Notification(const String& url, ScriptExecutionContext* context, ExceptionCode& ec, NotificationPresenter* provider);
- Notification(const NotificationContents& fields, ScriptExecutionContext* context, ExceptionCode& ec, NotificationPresenter* provider);
-
- // EventTarget interface
- virtual void refEventTarget() { ref(); }
- virtual void derefEventTarget() { deref(); }
-
- void handleEvent(PassRefPtr<Event> event, bool useCapture);
- EventListener* getAttributeEventListener(const AtomicString&) const;
- void setAttributeEventListener(const AtomicString&, PassRefPtr<EventListener>);
- void clearAttributeEventListener(const AtomicString&);
-
- bool m_isHTML;
- KURL m_notificationURL;
- NotificationContents m_contents;
-
- bool m_isShowing;
-
- RegisteredEventListenerVector m_eventListeners;
-
- NotificationPresenter* m_presenter;
- };
-
-} // namespace WebCore
-
-#endif // ENABLE(NOTIFICATIONS)
-
-#endif // Notifications_h
diff --git a/WebCore/notifications/Notification.idl b/WebCore/notifications/Notification.idl
deleted file mode 100644
index eca2eb4..0000000
--- a/WebCore/notifications/Notification.idl
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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
- * "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 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.
- */
-
-module threads {
-
- interface [
- Conditional=NOTIFICATIONS
- ] Notification {
- void show();
- void cancel();
-
- attribute EventListener ondisplay;
- attribute EventListener onerror;
- attribute EventListener onclose;
-
- // EventTarget interface
- [Custom] void addEventListener(in DOMString type,
- in EventListener listener,
- in boolean useCapture);
- [Custom] void removeEventListener(in DOMString type,
- in EventListener listener,
- in boolean useCapture);
- boolean dispatchEvent(in Event evt)
- raises(EventException);
- };
-
-}
diff --git a/WebCore/notifications/NotificationCenter.cpp b/WebCore/notifications/NotificationCenter.cpp
deleted file mode 100644
index 94976a2..0000000
--- a/WebCore/notifications/NotificationCenter.cpp
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * 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
- * "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 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 "config.h"
-
-#if ENABLE(NOTIFICATIONS)
-
-#include "NotificationCenter.h"
-
-#include "Document.h"
-#include "VoidCallback.h"
-#include "WorkerContext.h"
-
-namespace WebCore {
-
-NotificationCenter::NotificationCenter(ScriptExecutionContext* context, NotificationPresenter* presenter)
- : ActiveDOMObject(context, this)
- , m_scriptExecutionContext(context)
- , m_notificationPresenter(presenter) {}
-
-int NotificationCenter::checkPermission()
-{
- return m_notificationPresenter->checkPermission(m_scriptExecutionContext->securityOrigin());
-}
-
-void NotificationCenter::requestPermission(PassRefPtr<VoidCallback> callback)
-{
- m_notificationPresenter->requestPermission(m_scriptExecutionContext->securityOrigin(), callback);
-}
-
-} // namespace WebCore
-
-#endif // ENABLE(NOTIFICATIONS)
diff --git a/WebCore/notifications/NotificationCenter.h b/WebCore/notifications/NotificationCenter.h
deleted file mode 100644
index c40693f..0000000
--- a/WebCore/notifications/NotificationCenter.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * 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
- * "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 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 NotificationCenter_h
-#define NotificationCenter_h
-
-#include "Notification.h"
-#include "NotificationContents.h"
-#include "WorkerThread.h"
-#include <wtf/OwnPtr.h>
-#include <wtf/PassRefPtr.h>
-#include <wtf/RefCounted.h>
-#include <wtf/RefPtr.h>
-
-#if ENABLE(NOTIFICATIONS)
-
-namespace WebCore {
-
- class ScriptExecutionContext;
-
- class NotificationCenter : public RefCounted<NotificationCenter>, public ActiveDOMObject {
- public:
- static PassRefPtr<NotificationCenter> create(ScriptExecutionContext* context, NotificationPresenter* presenter) { return adoptRef(new NotificationCenter(context, presenter)); }
-
- Notification* createHTMLNotification(const String& URI, ExceptionCode& ec)
- {
- return Notification::create(KURL(URI), context(), ec, presenter());
- }
-
- Notification* createNotification(const String& iconURI, const String& title, const String& body, ExceptionCode& ec)
- {
- NotificationContents contents(iconURI, title, body);
- return Notification::create(contents, context(), ec, presenter());
- }
-
- ScriptExecutionContext* context() const { return m_scriptExecutionContext; }
- NotificationPresenter* presenter() const { return m_notificationPresenter; }
-
- int checkPermission();
- void requestPermission(PassRefPtr<VoidCallback> callback);
-
- private:
- NotificationCenter(ScriptExecutionContext*, NotificationPresenter*);
-
- ScriptExecutionContext* m_scriptExecutionContext;
- NotificationPresenter* m_notificationPresenter;
- };
-
-} // namespace WebCore
-
-#endif // ENABLE(NOTIFICATIONS)
-
-#endif // NotificationCenter_h
diff --git a/WebCore/notifications/NotificationCenter.idl b/WebCore/notifications/NotificationCenter.idl
deleted file mode 100644
index 9918b15..0000000
--- a/WebCore/notifications/NotificationCenter.idl
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * 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
- * "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 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.
- */
-
-module threads {
-
- interface [
- Conditional=NOTIFICATIONS
- ] NotificationCenter {
- Notification createHTMLNotification(in DOMString url) raises(Exception);
- Notification createNotification(in DOMString iconUrl, in DOMString title, in DOMString body) raises(Exception);
-
- int checkPermission();
- [Custom] void requestPermission(in VoidCallback callback);
- };
-
-}
diff --git a/WebCore/notifications/NotificationContents.h b/WebCore/notifications/NotificationContents.h
deleted file mode 100644
index ebdc514..0000000
--- a/WebCore/notifications/NotificationContents.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * 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
- * "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 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 NotificationContents_h
-#define NotificationContents_h
-
-#if ENABLE(NOTIFICATIONS)
-
-namespace WebCore {
-
- class NotificationContents {
- public:
- NotificationContents() {}
- NotificationContents(const String& iconUrl, const String& title, const String& body)
- : m_icon(iconUrl)
- , m_title(title)
- , m_body(body) {}
-
- String icon() const { return m_icon; }
- String title() const { return m_title; }
- String body() const { return m_body; }
-
- private:
- String m_icon;
- String m_title;
- String m_body;
- };
-
-} // namespace WebCore
-
-#endif // ENABLE(NOTIFICATIONS)
-
-#endif // NotificationContents_h
diff --git a/WebCore/notifications/NotificationPresenter.h b/WebCore/notifications/NotificationPresenter.h
deleted file mode 100644
index 90d6c4c..0000000
--- a/WebCore/notifications/NotificationPresenter.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * 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
- * "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 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 NotificationPresenter_h
-#define NotificationPresenter_h
-
-#include <wtf/PassRefPtr.h>
-#include "VoidCallback.h"
-
-#if ENABLE(NOTIFICATIONS)
-
-namespace WebCore {
-
- class Notification;
- class SecurityOrigin;
- class String;
-
- class NotificationPresenter {
-
- public:
- enum Permission {
- PERMISSION_ALLOWED, // User has allowed notifications
- PERMISSION_NOT_ALLOWED, // User has not yet allowed
- PERMISSION_DENIED // User has explictly denied permission
- };
-
- virtual ~NotificationPresenter() {}
-
- // Requests that a notification be shown.
- virtual bool show(Notification* object) = 0;
-
- // Requests that a notification that has already been shown be canceled.
- virtual void cancel(Notification* object) = 0;
-
- // Informs the presenter that a Notification object has been destroyed
- // (such as by a page transition). The presenter may continue showing
- // the notification, but must not attempt to call the event handlers.
- virtual void notificationObjectDestroyed(Notification* object) = 0;
-
- // Requests user permission to show desktop notifications from a particular
- // origin. The callback parameter should be run when the user has
- // made a decision.
- virtual void requestPermission(SecurityOrigin* origin, PassRefPtr<VoidCallback> callback) = 0;
-
- // Checks the current level of permission.
- virtual Permission checkPermission(SecurityOrigin* origin) = 0;
- };
-
-} // namespace WebCore
-
-#endif // ENABLE(NOTIFICATIONS)
-
-#endif // NotificationPresenter_h
diff --git a/WebCore/page/Chrome.cpp b/WebCore/page/Chrome.cpp
index bcfef79..5a5670e 100644
--- a/WebCore/page/Chrome.cpp
+++ b/WebCore/page/Chrome.cpp
@@ -403,13 +403,6 @@ bool Chrome::setCursor(PlatformCursorHandle cursor)
return m_client->setCursor(cursor);
}
-#if ENABLE(NOTIFICATIONS)
-NotificationPresenter* Chrome::notificationPresenter() const
-{
- return m_client->notificationPresenter();
-}
-#endif
-
// --------
#if ENABLE(DASHBOARD_SUPPORT)
diff --git a/WebCore/page/Chrome.h b/WebCore/page/Chrome.h
index e28661c..c26e450 100644
--- a/WebCore/page/Chrome.h
+++ b/WebCore/page/Chrome.h
@@ -44,9 +44,6 @@ namespace WebCore {
class IntRect;
class Page;
class String;
-#if ENABLE(NOTIFICATIONS)
- class NotificationPresenter;
-#endif
struct FrameLoadRequest;
struct WindowFeatures;
@@ -131,10 +128,6 @@ namespace WebCore {
void focusNSView(NSView*);
#endif
-#if ENABLE(NOTIFICATIONS)
- NotificationPresenter* notificationPresenter() const;
-#endif
-
private:
Page* m_page;
ChromeClient* m_client;
diff --git a/WebCore/page/ChromeClient.h b/WebCore/page/ChromeClient.h
index 1010273..409a492 100644
--- a/WebCore/page/ChromeClient.h
+++ b/WebCore/page/ChromeClient.h
@@ -62,10 +62,6 @@ namespace WebCore {
class GraphicsLayer;
#endif
-#if ENABLE(NOTIFICATIONS)
- class NotificationPresenter;
-#endif
-
class ChromeClient {
public:
virtual void chromeDestroyed() = 0;
@@ -156,10 +152,6 @@ namespace WebCore {
virtual void dashboardRegionsChanged();
#endif
-#if ENABLE(NOTIFICATIONS)
- virtual NotificationPresenter* notificationPresenter() const = 0;
-#endif
-
virtual void populateVisitedLinks();
virtual FloatRect customHighlightRect(Node*, const AtomicString& type, const FloatRect& lineRect);
diff --git a/WebCore/page/DOMWindow.cpp b/WebCore/page/DOMWindow.cpp
index 0cc3e5f..e50b488 100644
--- a/WebCore/page/DOMWindow.cpp
+++ b/WebCore/page/DOMWindow.cpp
@@ -80,10 +80,6 @@
#include "DOMApplicationCache.h"
#endif
-#if ENABLE(NOTIFICATIONS)
-#include "NotificationCenter.h"
-#endif
-
using std::min;
using std::max;
@@ -458,10 +454,6 @@ void DOMWindow::clear()
m_applicationCache->disconnectFrame();
m_applicationCache = 0;
#endif
-
-#if ENABLE(NOTIFICATIONS)
- m_notifications = 0;
-#endif
}
Screen* DOMWindow::screen() const
@@ -601,28 +593,6 @@ Storage* DOMWindow::localStorage() const
}
#endif
-#if ENABLE(NOTIFICATIONS)
-NotificationCenter* DOMWindow::webkitNotifications() const
-{
- if (m_notifications)
- return m_notifications.get();
-
- Document* document = this->document();
- if (!document)
- return 0;
-
- Page* page = document->page();
- if (!page)
- return 0;
-
- NotificationPresenter* provider = page->chrome()->notificationPresenter();
- if (provider)
- m_notifications = NotificationCenter::create(document, provider);
-
- return m_notifications.get();
-}
-#endif
-
void DOMWindow::postMessage(const String& message, MessagePort* messagePort, const String& targetOrigin, DOMWindow* source, ExceptionCode& ec)
{
if (!m_frame)
@@ -1562,16 +1532,6 @@ void DOMWindow::setOnfocus(PassRefPtr<EventListener> eventListener)
setAttributeEventListener(eventNames().focusEvent, eventListener);
}
-EventListener* DOMWindow::onhashchange() const
-{
- return getAttributeEventListener(eventNames().hashchangeEvent);
-}
-
-void DOMWindow::setOnhashchange(PassRefPtr<EventListener> eventListener)
-{
- setAttributeEventListener(eventNames().hashchangeEvent, eventListener);
-}
-
EventListener* DOMWindow::onkeydown() const
{
return getAttributeEventListener(eventNames().keydownEvent);
diff --git a/WebCore/page/DOMWindow.h b/WebCore/page/DOMWindow.h
index ffe4ef5..12caf7e 100644
--- a/WebCore/page/DOMWindow.h
+++ b/WebCore/page/DOMWindow.h
@@ -56,7 +56,6 @@ namespace WebCore {
class MessagePort;
class Navigator;
class Node;
- class NotificationCenter;
class PostMessageTimer;
class ScheduledAction;
class Screen;
@@ -206,10 +205,6 @@ namespace WebCore {
DOMApplicationCache* applicationCache() const;
#endif
-#if ENABLE(NOTIFICATIONS)
- NotificationCenter* webkitNotifications() const;
-#endif
-
void postMessage(const String& message, MessagePort*, const String& targetOrigin, DOMWindow* source, ExceptionCode&);
void postMessageTimerFired(PostMessageTimer*);
@@ -279,8 +274,6 @@ namespace WebCore {
void setOnerror(PassRefPtr<EventListener>);
EventListener* onfocus() const;
void setOnfocus(PassRefPtr<EventListener>);
- EventListener* onhashchange() const;
- void setOnhashchange(PassRefPtr<EventListener>);
EventListener* onkeydown() const;
void setOnkeydown(PassRefPtr<EventListener>);
EventListener* onkeypress() const;
@@ -448,9 +441,6 @@ namespace WebCore {
#if ENABLE(OFFLINE_WEB_APPLICATIONS)
mutable RefPtr<DOMApplicationCache> m_applicationCache;
#endif
-#if ENABLE(NOTIFICATIONS)
- mutable RefPtr<NotificationCenter> m_notifications;
-#endif
RegisteredEventListenerVector m_eventListeners;
};
diff --git a/WebCore/page/DOMWindow.idl b/WebCore/page/DOMWindow.idl
index 4e7835e..aba92f0 100644
--- a/WebCore/page/DOMWindow.idl
+++ b/WebCore/page/DOMWindow.idl
@@ -55,7 +55,7 @@ module window {
attribute [Replaceable] Navigator clientInformation;
attribute [DoNotCheckDomainSecurity, JSCCustom, V8CustomSetter, V8DisallowShadowing] Location location;
- attribute [Replaceable, CustomGetter, V8CustomSetter] Event event;
+ attribute [Replaceable, CustomGetter] Event event;
readonly attribute [Custom] Crypto crypto;
@@ -169,9 +169,6 @@ module window {
readonly attribute Storage sessionStorage;
readonly attribute Storage localStorage;
#endif
-#if defined(ENABLE_NOTIFICATIONS) && ENABLE_NOTIFICATIONS
- readonly attribute NotificationCenter webkitNotifications;
-#endif
attribute [Replaceable] Console console;
@@ -224,7 +221,6 @@ module window {
attribute EventListener onended;
attribute EventListener onerror;
attribute EventListener onfocus;
- attribute EventListener onhashchange;
attribute EventListener oninput;
attribute EventListener onkeydown;
attribute EventListener onkeypress;
@@ -458,10 +454,6 @@ module window {
attribute RangeConstructor Range;
attribute RangeExceptionConstructor RangeException;
-#if ENABLE_EVENTSOURCE
- attribute [JSCCustomGetter] EventSourceConstructor EventSource; // Usable with new the operator
-#endif
-
// Mozilla has a separate XMLDocument object for XML documents.
// We just use Document for this.
attribute DocumentConstructor XMLDocument;
diff --git a/WebCore/page/EventHandler.cpp b/WebCore/page/EventHandler.cpp
index 99ecce0..41e859f 100644
--- a/WebCore/page/EventHandler.cpp
+++ b/WebCore/page/EventHandler.cpp
@@ -442,7 +442,7 @@ bool EventHandler::handleMouseDraggedEvent(const MouseEventWithHitTestResults& e
// If the selection is contained in a layer that can scroll, that layer should handle the autoscroll
// Otherwise, let the bridge handle it so the view can scroll itself.
RenderObject* renderer = targetNode->renderer();
- while (renderer && (!renderer->isBox() || !toRenderBox(renderer)->canBeScrolledAndHasScrollableArea())) {
+ while (renderer && (!renderer->isBox() || !toRenderBox(renderer)->canBeProgramaticallyScrolled(false))) {
if (!renderer->parent() && renderer->node() == renderer->document() && renderer->document()->ownerElement())
renderer = renderer->document()->ownerElement()->renderer();
else
@@ -732,7 +732,7 @@ void EventHandler::updateAutoscrollRenderer()
if (Node* nodeAtPoint = hitTest.innerNode())
m_autoscrollRenderer = nodeAtPoint->renderer();
- while (m_autoscrollRenderer && (!m_autoscrollRenderer->isBox() || !toRenderBox(m_autoscrollRenderer)->canBeScrolledAndHasScrollableArea()))
+ while (m_autoscrollRenderer && (!m_autoscrollRenderer->isBox() || !toRenderBox(m_autoscrollRenderer)->canBeProgramaticallyScrolled(false)))
m_autoscrollRenderer = m_autoscrollRenderer->parent();
}
@@ -1172,7 +1172,7 @@ bool EventHandler::handleMousePressEvent(const PlatformMouseEvent& mouseEvent)
if (mouseEvent.button() == MiddleButton && !mev.isOverLink()) {
RenderObject* renderer = mev.targetNode()->renderer();
- while (renderer && (!renderer->isBox() || !toRenderBox(renderer)->canBeScrolledAndHasScrollableArea())) {
+ while (renderer && (!renderer->isBox() || !toRenderBox(renderer)->canBeProgramaticallyScrolled(false))) {
if (!renderer->parent() && renderer->node() == renderer->document() && renderer->document()->ownerElement())
renderer = renderer->document()->ownerElement()->renderer();
else
@@ -2339,7 +2339,7 @@ bool EventHandler::handleTextInputEvent(const String& text, Event* underlyingEve
}
-#if !PLATFORM(MAC) && !PLATFORM(QT) && !PLATFORM(HAIKU)
+#if !PLATFORM(MAC) && !PLATFORM(QT)
bool EventHandler::invertSenseOfTabsToLinks(KeyboardEvent*) const
{
return false;
diff --git a/WebCore/page/EventSource.cpp b/WebCore/page/EventSource.cpp
deleted file mode 100644
index 47243d9..0000000
--- a/WebCore/page/EventSource.cpp
+++ /dev/null
@@ -1,372 +0,0 @@
-/*
- * Copyright (C) 2009 Ericsson AB
- * 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 Ericsson 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
- * "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 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 "config.h"
-
-#if ENABLE(EVENTSOURCE)
-
-#include "EventSource.h"
-
-#include "Cache.h"
-#include "DOMWindow.h"
-#include "Event.h"
-#include "EventException.h"
-#include "PlatformString.h"
-#include "MessageEvent.h"
-#include "ResourceError.h"
-#include "ResourceRequest.h"
-#include "ResourceResponse.h"
-#include "ScriptExecutionContext.h"
-#include "TextResourceDecoder.h"
-#include "ThreadableLoader.h"
-
-namespace WebCore {
-
-const unsigned long long EventSource::defaultReconnectDelay = 3000;
-
-EventSource::EventSource(const String& url, ScriptExecutionContext* context, ExceptionCode& ec)
- : ActiveDOMObject(context, this)
- , m_state(CONNECTING)
- , m_reconnectTimer(this, &EventSource::reconnectTimerFired)
- , m_failSilently(false)
- , m_requestInFlight(false)
- , m_reconnectDelay(defaultReconnectDelay)
-{
- if (url.isEmpty() || !(m_url = context->completeURL(url)).isValid()) {
- ec = SYNTAX_ERR;
- return;
- }
- // FIXME: should support cross-origin requests
- if (!scriptExecutionContext()->securityOrigin()->canRequest(m_url)) {
- ec = SECURITY_ERR;
- return;
- }
-
- m_origin = scriptExecutionContext()->securityOrigin()->toString();
- m_decoder = TextResourceDecoder::create("text/plain", "UTF-8");
-
- setPendingActivity(this);
- connect();
-}
-
-EventSource::~EventSource()
-{
-}
-
-void EventSource::connect()
-{
- ResourceRequest request(m_url);
- request.setHTTPMethod("GET");
- request.setHTTPHeaderField("Accept", "text/event-stream");
- request.setHTTPHeaderField("Cache-Control", "no-cache");
- if (!m_lastEventId.isEmpty())
- request.setHTTPHeaderField("Last-Event-ID", m_lastEventId);
-
- ThreadableLoaderOptions options;
- options.sendLoadCallbacks = true;
- options.sniffContent = false;
- options.allowCredentials = true;
-
- m_loader = ThreadableLoader::create(scriptExecutionContext(), this, request, options);
-
- m_requestInFlight = true;
-
- if (!scriptExecutionContext()->isWorkerContext())
- cache()->loader()->nonCacheRequestInFlight(m_url);
-}
-
-void EventSource::endRequest()
-{
- m_requestInFlight = false;
-
- if (!m_failSilently)
- dispatchGenericEvent(eventNames().errorEvent);
-
- if (!scriptExecutionContext()->isWorkerContext())
- cache()->loader()->nonCacheRequestComplete(m_url);
-
- if (m_state != CLOSED)
- scheduleReconnect();
- else
- unsetPendingActivity(this);
-}
-
-void EventSource::scheduleReconnect()
-{
- m_state = CONNECTING;
- m_reconnectTimer.startOneShot(m_reconnectDelay / 1000);
-}
-
-void EventSource::reconnectTimerFired(Timer<EventSource>*)
-{
- connect();
-}
-
-String EventSource::url() const
-{
- return m_url.string();
-}
-
-EventSource::State EventSource::readyState() const
-{
- return m_state;
-}
-
-void EventSource::close()
-{
- if (m_state == CLOSED)
- return;
-
- if (m_reconnectTimer.isActive()) {
- m_reconnectTimer.stop();
- unsetPendingActivity(this);
- }
-
- m_state = CLOSED;
- m_failSilently = true;
-
- if (m_requestInFlight)
- m_loader->cancel();
-}
-
-ScriptExecutionContext* EventSource::scriptExecutionContext() const
-{
- return ActiveDOMObject::scriptExecutionContext();
-}
-
-void EventSource::addEventListener(const AtomicString& eventType, PassRefPtr<EventListener> eventListener, bool)
-{
- EventListenersMap::iterator iter = m_eventListeners.find(eventType);
- if (iter == m_eventListeners.end()) {
- ListenerVector listeners;
- listeners.append(eventListener);
- m_eventListeners.add(eventType, listeners);
- } else {
- ListenerVector& listeners = iter->second;
- for (ListenerVector::iterator listenerIter = listeners.begin(); listenerIter != listeners.end(); ++listenerIter) {
- if (*listenerIter == eventListener)
- return;
- }
-
- listeners.append(eventListener);
- m_eventListeners.add(eventType, listeners);
- }
-}
-
-void EventSource::removeEventListener(const AtomicString& eventType, EventListener* eventListener, bool)
-{
- EventListenersMap::iterator iter = m_eventListeners.find(eventType);
- if (iter == m_eventListeners.end())
- return;
-
- ListenerVector& listeners = iter->second;
- for (ListenerVector::const_iterator listenerIter = listeners.begin(); listenerIter != listeners.end(); ++listenerIter) {
- if (*listenerIter == eventListener) {
- listeners.remove(listenerIter - listeners.begin());
- return;
- }
- }
-}
-
-bool EventSource::dispatchEvent(PassRefPtr<Event> event, ExceptionCode& ec)
-{
- if (!event || event->type().isEmpty()) {
- ec = EventException::UNSPECIFIED_EVENT_TYPE_ERR;
- return true;
- }
-
- EventListener* attributeListener = m_attributeListeners.get(event->type()).get();
- if (attributeListener) {
- event->setTarget(this);
- event->setCurrentTarget(this);
- attributeListener->handleEvent(event.get(), false);
- }
-
- ListenerVector listenersCopy = m_eventListeners.get(event->type());
- for (ListenerVector::const_iterator listenerIter = listenersCopy.begin(); listenerIter != listenersCopy.end(); ++listenerIter) {
- event->setTarget(this);
- event->setCurrentTarget(this);
- listenerIter->get()->handleEvent(event.get(), false);
- }
-
- return !event->defaultPrevented();
-}
-
-void EventSource::didReceiveResponse(const ResourceResponse& response)
-{
- int statusCode = response.httpStatusCode();
- if (statusCode == 200 && response.httpHeaderField("Content-Type") == "text/event-stream") {
- m_state = OPEN;
- dispatchGenericEvent(eventNames().openEvent);
- } else {
- if (statusCode <= 200 || statusCode > 299)
- m_state = CLOSED;
- m_loader->cancel();
- }
-}
-
-void EventSource::didReceiveData(const char* data, int length)
-{
- append(m_receiveBuf, m_decoder->decode(data, length));
- parseEventStream();
-}
-
-void EventSource::didFinishLoading(unsigned long)
-{
- if (m_receiveBuf.size() > 0 || m_data.size() > 0) {
- append(m_receiveBuf, "\n\n");
- parseEventStream();
- }
- m_state = CONNECTING;
- endRequest();
-}
-
-void EventSource::didFail(const ResourceError& error)
-{
- int canceled = error.isCancellation();
- if (((m_state == CONNECTING) && !canceled) || ((m_state == OPEN) && canceled))
- m_state = CLOSED;
- endRequest();
-}
-
-void EventSource::didFailRedirectCheck()
-{
- m_state = CLOSED;
- m_loader->cancel();
-}
-
-void EventSource::parseEventStream()
-{
- unsigned int bufPos = 0;
- unsigned int bufSize = m_receiveBuf.size();
- for (;;) {
- int lineLength = -1;
- int fieldLength = -1;
- int carriageReturn = 0;
- for (unsigned int i = bufPos; lineLength < 0 && i < bufSize; i++) {
- switch (m_receiveBuf[i]) {
- case ':':
- if (fieldLength < 0)
- fieldLength = i - bufPos;
- break;
- case '\n':
- if (i > bufPos && m_receiveBuf[i - 1] == '\r') {
- carriageReturn++;
- i--;
- }
- lineLength = i - bufPos;
- break;
- }
- }
-
- if (lineLength < 0)
- break;
-
- parseEventStreamLine(bufPos, fieldLength, lineLength);
- bufPos += lineLength + carriageReturn + 1;
- }
-
- if (bufPos == bufSize)
- m_receiveBuf.clear();
- else if (bufPos)
- m_receiveBuf.remove(0, bufPos);
-}
-
-void EventSource::parseEventStreamLine(unsigned int bufPos, int fieldLength, int lineLength)
-{
- if (!lineLength) {
- if (!m_data.isEmpty())
- dispatchMessageEvent();
- if (!m_eventName.isEmpty())
- m_eventName = "";
- } else if (fieldLength) {
- bool noValue = fieldLength < 0;
-
- String field(&m_receiveBuf[bufPos], noValue ? lineLength : fieldLength);
- int step;
- if (noValue)
- step = lineLength;
- else if (m_receiveBuf[bufPos + fieldLength + 1] != ' ')
- step = fieldLength + 1;
- else
- step = fieldLength + 2;
- bufPos += step;
- int valueLength = lineLength - step;
-
- if (field == "data") {
- if (m_data.size() > 0)
- m_data.append('\n');
- if (valueLength)
- m_data.append(&m_receiveBuf[bufPos], valueLength);
- } else if (field == "event")
- m_eventName = valueLength ? String(&m_receiveBuf[bufPos], valueLength) : "";
- else if (field == "id")
- m_lastEventId = valueLength ? String(&m_receiveBuf[bufPos], valueLength) : "";
- else if (field == "retry") {
- if (!valueLength)
- m_reconnectDelay = defaultReconnectDelay;
- else {
- String value(&m_receiveBuf[bufPos], valueLength);
- bool ok;
- unsigned long long retry = value.toUInt64(&ok);
- if (ok)
- m_reconnectDelay = retry;
- }
- }
- }
-}
-
-void EventSource::dispatchGenericEvent(const AtomicString& type)
-{
- RefPtr<Event> evt = Event::create(type, false, false);
- ExceptionCode ec = 0;
- dispatchEvent(evt.release(), ec);
- ASSERT(!ec);
-}
-
-void EventSource::dispatchMessageEvent()
-{
- RefPtr<MessageEvent> evt = MessageEvent::create();
- String eventName = m_eventName.isEmpty() ? eventNames().messageEvent.string() : m_eventName;
- evt->initMessageEvent(eventName, false, false, String::adopt(m_data), m_origin, m_lastEventId, 0, 0);
- ExceptionCode ec = 0;
- dispatchEvent(evt.release(), ec);
- ASSERT(!ec);
-}
-
-void EventSource::stop()
-{
- close();
-}
-
-} // namespace WebCore
-
-#endif // ENABLE(EVENTSOURCE)
diff --git a/WebCore/page/EventSource.h b/WebCore/page/EventSource.h
deleted file mode 100644
index df55694..0000000
--- a/WebCore/page/EventSource.h
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * Copyright (C) 2009 Ericsson AB
- * 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 Ericsson 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
- * "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 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 EventSource_h
-#define EventSource_h
-
-#if ENABLE(EVENTSOURCE)
-
-#include "ActiveDOMObject.h"
-#include "AtomicStringHash.h"
-#include "EventListener.h"
-#include "EventNames.h"
-#include "EventTarget.h"
-#include "KURL.h"
-#include "ThreadableLoaderClient.h"
-#include "Timer.h"
-
-#include <wtf/HashMap.h>
-#include <wtf/PassRefPtr.h>
-#include <wtf/RefPtr.h>
-#include <wtf/Vector.h>
-
-namespace WebCore {
-
- class ResourceResponse;
- class TextResourceDecoder;
- class ThreadableLoader;
-
- class EventSource : public RefCounted<EventSource>, public EventTarget, private ThreadableLoaderClient, public ActiveDOMObject {
- public:
- static PassRefPtr<EventSource> create(const String& url, ScriptExecutionContext* context, ExceptionCode& ec) { return adoptRef(new EventSource(url, context, ec)); }
- virtual ~EventSource();
-
- static const unsigned long long defaultReconnectDelay;
-
- String url() const;
-
- enum State {
- CONNECTING = 0,
- OPEN = 1,
- CLOSED = 2,
- };
-
- State readyState() const;
-
- void setOnopen(PassRefPtr<EventListener> eventListener) { m_attributeListeners.set(eventNames().openEvent, eventListener); }
- EventListener* onopen() const { return m_attributeListeners.get(eventNames().openEvent).get(); }
-
- void setOnmessage(PassRefPtr<EventListener> eventListener) { m_attributeListeners.set(eventNames().messageEvent, eventListener); }
- EventListener* onmessage() const { return m_attributeListeners.get(eventNames().messageEvent).get(); }
-
- void setOnerror(PassRefPtr<EventListener> eventListener) { m_attributeListeners.set(eventNames().errorEvent, eventListener); }
- EventListener* onerror() const { return m_attributeListeners.get(eventNames().errorEvent).get(); }
-
- void close();
-
- using RefCounted<EventSource>::ref;
- using RefCounted<EventSource>::deref;
-
- virtual EventSource* toEventSource() { return this; }
- virtual ScriptExecutionContext* scriptExecutionContext() const;
-
- typedef Vector<RefPtr<EventListener> > ListenerVector;
- typedef HashMap<AtomicString, ListenerVector> EventListenersMap;
-
- virtual void addEventListener(const AtomicString& eventType, PassRefPtr<EventListener>, bool useCapture);
- virtual void removeEventListener(const AtomicString& eventType, EventListener*, bool useCapture);
- virtual bool dispatchEvent(PassRefPtr<Event>, ExceptionCode&);
- EventListenersMap& eventListeners() { return m_eventListeners; }
-
- virtual void stop();
-
- private:
- EventSource(const String& url, ScriptExecutionContext* context, ExceptionCode& ec);
-
- virtual void refEventTarget() { ref(); }
- virtual void derefEventTarget() { deref(); }
-
- virtual void didReceiveResponse(const ResourceResponse& response);
- virtual void didReceiveData(const char* data, int length);
- virtual void didFinishLoading(unsigned long);
- virtual void didFail(const ResourceError& error);
- virtual void didFailRedirectCheck();
-
- void connect();
- void endRequest();
- void scheduleReconnect();
- void reconnectTimerFired(Timer<EventSource>*);
- void parseEventStream();
- void parseEventStreamLine(unsigned int pos, int fieldLength, int lineLength);
- void dispatchGenericEvent(const AtomicString& type);
- void dispatchMessageEvent();
-
- KURL m_url;
- State m_state;
-
- HashMap<AtomicString, RefPtr<EventListener> > m_attributeListeners;
- EventListenersMap m_eventListeners;
-
- RefPtr<TextResourceDecoder> m_decoder;
- RefPtr<ThreadableLoader> m_loader;
- Timer<EventSource> m_reconnectTimer;
- Vector<UChar> m_receiveBuf;
- bool m_failSilently;
- bool m_requestInFlight;
-
- String m_eventName;
- Vector<UChar> m_data;
- String m_lastEventId;
- unsigned long long m_reconnectDelay;
- String m_origin;
- };
-
-} // namespace WebCore
-
-#endif // ENABLE(EVENTSOURCE)
-
-#endif // EventSource_h
diff --git a/WebCore/page/EventSource.idl b/WebCore/page/EventSource.idl
deleted file mode 100644
index c438e68..0000000
--- a/WebCore/page/EventSource.idl
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (C) 2009 Ericsson AB
- * 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 Ericsson 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
- * "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 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.
- */
-
-module window {
-
- interface [
- Conditional=EVENTSOURCE,
- CustomMarkFunction,
- NoStaticTables
- ] EventSource {
-
- readonly attribute DOMString URL;
-
- // ready state
- const unsigned short CONNECTING = 0;
- const unsigned short OPEN = 1;
- const unsigned short CLOSED = 2;
- readonly attribute unsigned short readyState;
-
- // networking
- attribute EventListener onopen;
- attribute EventListener onmessage;
- attribute EventListener onerror;
- void close();
-
- // EventTarget interface
- [Custom] void addEventListener(in DOMString type,
- in EventListener listener,
- in boolean useCapture);
- [Custom] void removeEventListener(in DOMString type,
- in EventListener listener,
- in boolean useCapture);
- boolean dispatchEvent(in Event evt)
- raises(EventException);
-
- };
-}
diff --git a/WebCore/page/Geolocation.cpp b/WebCore/page/Geolocation.cpp
index f8cc111..e57a8b5 100644
--- a/WebCore/page/Geolocation.cpp
+++ b/WebCore/page/Geolocation.cpp
@@ -334,7 +334,6 @@ void Geolocation::requestPermission()
void Geolocation::geolocationServicePositionChanged(GeolocationService*)
{
- ASSERT_UNUSED(service, service == m_service);
ASSERT(m_service->lastPosition());
// Stop all currently running timers.
diff --git a/WebCore/page/Navigator.cpp b/WebCore/page/Navigator.cpp
index 4922860..3603b86 100644
--- a/WebCore/page/Navigator.cpp
+++ b/WebCore/page/Navigator.cpp
@@ -31,13 +31,11 @@
#include "Language.h"
#include "MimeTypeArray.h"
#include "Page.h"
-#include "PageGroup.h"
#include "PlatformString.h"
#include "PluginArray.h"
#include "PluginData.h"
#include "ScriptController.h"
#include "Settings.h"
-#include "StorageNamespace.h"
namespace WebCore {
@@ -152,21 +150,5 @@ Geolocation* Navigator::geolocation() const
m_geolocation = Geolocation::create(m_frame);
return m_geolocation.get();
}
-
-#if ENABLE(DOM_STORAGE)
-void Navigator::getStorageUpdates()
-{
- if (!m_frame)
- return;
-
- Page* page = m_frame->page();
- if (!page)
- return;
-
- StorageNamespace* localStorage = page->group().localStorage();
- if (localStorage)
- localStorage->unlock();
-}
-#endif
-
+
} // namespace WebCore
diff --git a/WebCore/page/Navigator.h b/WebCore/page/Navigator.h
index 4adebe1..d50721e 100644
--- a/WebCore/page/Navigator.h
+++ b/WebCore/page/Navigator.h
@@ -55,11 +55,6 @@ namespace WebCore {
// This is used for GC marking.
Geolocation* optionalGeolocation() const { return m_geolocation.get(); }
-#if ENABLE(DOM_STORAGE)
- // Relinquishes the storage lock, if one exists.
- void getStorageUpdates();
-#endif
-
private:
Navigator(Frame*);
Frame* m_frame;
diff --git a/WebCore/page/Navigator.idl b/WebCore/page/Navigator.idl
index 80ef4fb..8048ff3 100644
--- a/WebCore/page/Navigator.idl
+++ b/WebCore/page/Navigator.idl
@@ -42,10 +42,6 @@ module window {
#if defined(ENABLE_GEOLOCATION) && ENABLE_GEOLOCATION
readonly attribute Geolocation geolocation;
#endif
-
-#if defined(ENABLE_DOM_STORAGE) && ENABLE_DOM_STORAGE
- void getStorageUpdates();
-#endif
};
}
diff --git a/WebCore/page/Page.h b/WebCore/page/Page.h
index fb212a4..9d9af86 100644
--- a/WebCore/page/Page.h
+++ b/WebCore/page/Page.h
@@ -71,9 +71,6 @@ namespace WebCore {
#if ENABLE(WML)
class WMLPageState;
#endif
-#if ENABLE(NOTIFICATIONS)
- class NotificationPresenter;
-#endif
enum FindDirection { FindDirectionForward, FindDirectionBackward };
@@ -275,10 +272,6 @@ namespace WebCore {
#if ENABLE(WML)
OwnPtr<WMLPageState> m_wmlPageState;
#endif
-
-#if ENABLE(NOTIFICATIONS)
- NotificationPresenter* m_notificationPresenter;
-#endif
};
} // namespace WebCore
diff --git a/WebCore/page/PositionOptions.h b/WebCore/page/PositionOptions.h
index ed7074b..ee8530a 100644
--- a/WebCore/page/PositionOptions.h
+++ b/WebCore/page/PositionOptions.h
@@ -33,7 +33,7 @@ namespace WebCore {
class PositionOptions : public RefCounted<PositionOptions> {
public:
- static PassRefPtr<PositionOptions> create() { return adoptRef(new PositionOptions()); }
+ static PassRefPtr<PositionOptions> create() { return adoptRef(new PositionOptions); }
bool enableHighAccuracy() const { return m_highAccuracy; }
void setEnableHighAccuracy(bool enable) { m_highAccuracy = enable; }
diff --git a/WebCore/page/SecurityOrigin.cpp b/WebCore/page/SecurityOrigin.cpp
index 8274e0e..14a1b59 100644
--- a/WebCore/page/SecurityOrigin.cpp
+++ b/WebCore/page/SecurityOrigin.cpp
@@ -32,10 +32,15 @@
#include "CString.h"
#include "FrameLoader.h"
#include "KURL.h"
+#include "PlatformString.h"
+#include "StringHash.h"
+#include <wtf/HashSet.h>
#include <wtf/StdLibExtras.h>
namespace WebCore {
+typedef HashSet<String, CaseFoldingHash> URLSchemesMap;
+
static URLSchemesMap& localSchemes()
{
DEFINE_STATIC_LOCAL(URLSchemesMap, localSchemes, ());
@@ -341,28 +346,6 @@ void SecurityOrigin::registerURLSchemeAsLocal(const String& scheme)
}
// static
-void SecurityOrigin::removeURLSchemeRegisteredAsLocal(const String& scheme)
-{
- if (scheme == "file")
- return;
-#if PLATFORM(MAC)
- if (scheme == "applewebdata")
- return;
-#endif
-#if PLATFORM(QT)
- if (scheme == "qrc")
- return;
-#endif
- localSchemes().remove(scheme);
-}
-
-// static
-const URLSchemesMap& SecurityOrigin::localURLSchemes()
-{
- return localSchemes();
-}
-
-// static
bool SecurityOrigin::shouldTreatURLAsLocal(const String& url)
{
// This avoids an allocation of another String and the HashSet contains()
diff --git a/WebCore/page/SecurityOrigin.h b/WebCore/page/SecurityOrigin.h
index 335ed28..ab92683 100644
--- a/WebCore/page/SecurityOrigin.h
+++ b/WebCore/page/SecurityOrigin.h
@@ -29,18 +29,14 @@
#ifndef SecurityOrigin_h
#define SecurityOrigin_h
-#include <wtf/HashSet.h>
#include <wtf/RefCounted.h>
#include <wtf/PassRefPtr.h>
#include <wtf/Threading.h>
#include "PlatformString.h"
-#include "StringHash.h"
namespace WebCore {
- typedef HashSet<String, CaseFoldingHash> URLSchemesMap;
-
class KURL;
class SecurityOrigin : public ThreadSafeShared<SecurityOrigin> {
@@ -133,8 +129,6 @@ namespace WebCore {
bool isSameSchemeHostPort(const SecurityOrigin*) const;
static void registerURLSchemeAsLocal(const String&);
- static void removeURLSchemeRegisteredAsLocal(const String&);
- static const URLSchemesMap& localURLSchemes();
static bool shouldTreatURLAsLocal(const String&);
static bool shouldTreatURLSchemeAsLocal(const String&);
diff --git a/WebCore/page/animation/AnimationBase.cpp b/WebCore/page/animation/AnimationBase.cpp
index f85d8e4..7503f0a 100644
--- a/WebCore/page/animation/AnimationBase.cpp
+++ b/WebCore/page/animation/AnimationBase.cpp
@@ -302,21 +302,11 @@ public:
{
ShadowData* shadowA = (a->*m_getter)();
ShadowData* shadowB = (b->*m_getter)();
-
- while (true) {
- if (!shadowA && !shadowB) // end of both lists
- return true;
-
- if (!shadowA || !shadowB) // end of just one of the lists
- return false;
-
- if (*shadowA != *shadowB)
- return false;
-
- shadowA = shadowA->next;
- shadowB = shadowB->next;
- }
+ if ((!shadowA && shadowB) || (shadowA && !shadowB))
+ return false;
+ if (shadowA && shadowB && (*shadowA != *shadowB))
+ return false;
return true;
}
@@ -326,22 +316,12 @@ public:
ShadowData* shadowB = (b->*m_getter)();
ShadowData defaultShadowData(0, 0, 0, 0, Normal, Color::transparent);
- ShadowData* newShadowData = 0;
-
- while (shadowA || shadowB) {
- ShadowData* srcShadow = shadowA ? shadowA : &defaultShadowData;
- ShadowData* dstShadow = shadowB ? shadowB : &defaultShadowData;
-
- if (!newShadowData)
- newShadowData = blendFunc(anim, srcShadow, dstShadow, progress);
- else
- newShadowData->next = blendFunc(anim, srcShadow, dstShadow, progress);
+ if (!shadowA)
+ shadowA = &defaultShadowData;
+ if (!shadowB)
+ shadowB = &defaultShadowData;
- shadowA = shadowA ? shadowA->next : 0;
- shadowB = shadowB ? shadowB->next : 0;
- }
-
- (dst->*m_setter)(newShadowData, false);
+ (dst->*m_setter)(blendFunc(anim, shadowA, shadowB, progress), false);
}
private:
@@ -385,124 +365,6 @@ private:
void (RenderStyle::*m_setter)(const Color&);
};
-// Wrapper base class for an animatable property in a FillLayer
-class FillLayerPropertyWrapperBase {
-public:
- FillLayerPropertyWrapperBase()
- {
- }
-
- virtual ~FillLayerPropertyWrapperBase() { }
-
- virtual bool equals(const FillLayer* a, const FillLayer* b) const = 0;
- virtual void blend(const AnimationBase* anim, FillLayer* dst, const FillLayer* a, const FillLayer* b, double progress) const = 0;
-};
-
-template <typename T>
-class FillLayerPropertyWrapperGetter : public FillLayerPropertyWrapperBase {
-public:
- FillLayerPropertyWrapperGetter(T (FillLayer::*getter)() const)
- : m_getter(getter)
- {
- }
-
- virtual bool equals(const FillLayer* a, const FillLayer* b) const
- {
- // If the style pointers are the same, don't bother doing the test.
- // If either is null, return false. If both are null, return true.
- if ((!a && !b) || a == b)
- return true;
- if (!a || !b)
- return false;
- return (a->*m_getter)() == (b->*m_getter)();
- }
-
-protected:
- T (FillLayer::*m_getter)() const;
-};
-
-template <typename T>
-class FillLayerPropertyWrapper : public FillLayerPropertyWrapperGetter<T> {
-public:
- FillLayerPropertyWrapper(T (FillLayer::*getter)() const, void (FillLayer::*setter)(T))
- : FillLayerPropertyWrapperGetter<T>(getter)
- , m_setter(setter)
- {
- }
-
- virtual void blend(const AnimationBase* anim, FillLayer* dst, const FillLayer* a, const FillLayer* b, double progress) const
- {
- (dst->*m_setter)(blendFunc(anim, (a->*FillLayerPropertyWrapperGetter<T>::m_getter)(), (b->*FillLayerPropertyWrapperGetter<T>::m_getter)(), progress));
- }
-
-protected:
- void (FillLayer::*m_setter)(T);
-};
-
-
-class FillLayersPropertyWrapper : public PropertyWrapperBase {
-public:
- typedef const FillLayer* (RenderStyle::*LayersGetter)() const;
- typedef FillLayer* (RenderStyle::*LayersAccessor)();
-
- FillLayersPropertyWrapper(int prop, LayersGetter getter, LayersAccessor accessor)
- : PropertyWrapperBase(prop)
- , m_layersGetter(getter)
- , m_layersAccessor(accessor)
- {
- switch (prop) {
- case CSSPropertyBackgroundPositionX:
- case CSSPropertyWebkitMaskPositionX:
- m_fillLayerPropertyWrapper = new FillLayerPropertyWrapper<Length>(&FillLayer::xPosition, &FillLayer::setXPosition);
- break;
- case CSSPropertyBackgroundPositionY:
- case CSSPropertyWebkitMaskPositionY:
- m_fillLayerPropertyWrapper = new FillLayerPropertyWrapper<Length>(&FillLayer::yPosition, &FillLayer::setYPosition);
- break;
- case CSSPropertyWebkitBackgroundSize:
- case CSSPropertyWebkitMaskSize:
- m_fillLayerPropertyWrapper = new FillLayerPropertyWrapper<LengthSize>(&FillLayer::size, &FillLayer::setSize);
- break;
- }
- }
-
- virtual bool equals(const RenderStyle* a, const RenderStyle* b) const
- {
- const FillLayer* fromLayer = (a->*m_layersGetter)();
- const FillLayer* toLayer = (b->*m_layersGetter)();
-
- while (fromLayer && toLayer) {
- if (!m_fillLayerPropertyWrapper->equals(fromLayer, toLayer))
- return false;
-
- fromLayer = fromLayer->next();
- toLayer = toLayer->next();
- }
-
- return true;
- }
-
- virtual void blend(const AnimationBase* anim, RenderStyle* dst, const RenderStyle* a, const RenderStyle* b, double progress) const
- {
- const FillLayer* aLayer = (a->*m_layersGetter)();
- const FillLayer* bLayer = (b->*m_layersGetter)();
- FillLayer* dstLayer = (dst->*m_layersAccessor)();
-
- while (aLayer && bLayer && dstLayer) {
- m_fillLayerPropertyWrapper->blend(anim, dstLayer, aLayer, bLayer, progress);
- aLayer = aLayer->next();
- bLayer = bLayer->next();
- dstLayer = dstLayer->next();
- }
- }
-
-private:
- FillLayerPropertyWrapperBase* m_fillLayerPropertyWrapper;
-
- LayersGetter m_layersGetter;
- LayersAccessor m_layersAccessor;
-};
-
class ShorthandPropertyWrapper : public PropertyWrapperBase {
public:
ShorthandPropertyWrapper(int property, const CSSPropertyLonghand& longhand)
@@ -580,14 +442,13 @@ static void ensurePropertyMap()
gPropertyWrappers->append(new PropertyWrapper<const Color&>(CSSPropertyColor, &RenderStyle::color, &RenderStyle::setColor));
gPropertyWrappers->append(new PropertyWrapper<const Color&>(CSSPropertyBackgroundColor, &RenderStyle::backgroundColor, &RenderStyle::setBackgroundColor));
+ gPropertyWrappers->append(new PropertyWrapper<Length>(CSSPropertyBackgroundPositionX, &RenderStyle::backgroundXPosition, &RenderStyle::setBackgroundXPosition));
+ gPropertyWrappers->append(new PropertyWrapper<Length>(CSSPropertyBackgroundPositionY, &RenderStyle::backgroundYPosition, &RenderStyle::setBackgroundYPosition));
+ gPropertyWrappers->append(new PropertyWrapper<LengthSize>(CSSPropertyWebkitBackgroundSize, &RenderStyle::backgroundSize, &RenderStyle::setBackgroundSize));
- gPropertyWrappers->append(new FillLayersPropertyWrapper(CSSPropertyBackgroundPositionX, &RenderStyle::backgroundLayers, &RenderStyle::accessBackgroundLayers));
- gPropertyWrappers->append(new FillLayersPropertyWrapper(CSSPropertyBackgroundPositionY, &RenderStyle::backgroundLayers, &RenderStyle::accessBackgroundLayers));
- gPropertyWrappers->append(new FillLayersPropertyWrapper(CSSPropertyWebkitBackgroundSize, &RenderStyle::backgroundLayers, &RenderStyle::accessBackgroundLayers));
-
- gPropertyWrappers->append(new FillLayersPropertyWrapper(CSSPropertyWebkitMaskPositionX, &RenderStyle::maskLayers, &RenderStyle::accessMaskLayers));
- gPropertyWrappers->append(new FillLayersPropertyWrapper(CSSPropertyWebkitMaskPositionY, &RenderStyle::maskLayers, &RenderStyle::accessMaskLayers));
- gPropertyWrappers->append(new FillLayersPropertyWrapper(CSSPropertyWebkitMaskSize, &RenderStyle::maskLayers, &RenderStyle::accessMaskLayers));
+ gPropertyWrappers->append(new PropertyWrapper<Length>(CSSPropertyWebkitMaskPositionX, &RenderStyle::maskXPosition, &RenderStyle::setMaskXPosition));
+ gPropertyWrappers->append(new PropertyWrapper<Length>(CSSPropertyWebkitMaskPositionY, &RenderStyle::maskYPosition, &RenderStyle::setMaskYPosition));
+ gPropertyWrappers->append(new PropertyWrapper<LengthSize>(CSSPropertyWebkitMaskSize, &RenderStyle::maskSize, &RenderStyle::setMaskSize));
gPropertyWrappers->append(new PropertyWrapper<int>(CSSPropertyFontSize, &RenderStyle::fontSize, &RenderStyle::setBlendedFontSize));
gPropertyWrappers->append(new PropertyWrapper<unsigned short>(CSSPropertyWebkitColumnRuleWidth, &RenderStyle::columnRuleWidth, &RenderStyle::setColumnRuleWidth));
diff --git a/WebCore/page/haiku/DragControllerHaiku.cpp b/WebCore/page/haiku/DragControllerHaiku.cpp
index ef08ac2..0b95558 100644
--- a/WebCore/page/haiku/DragControllerHaiku.cpp
+++ b/WebCore/page/haiku/DragControllerHaiku.cpp
@@ -32,9 +32,10 @@
#include <InterfaceDefs.h>
-namespace WebCore {
+namespace WebCore
+{
-// FIXME: These values are straight out of DragControllerMac, so probably have
+// FIXME: These values are straight out of DragControllerMac, so probably have
// little correlation with Haiku standards...
const int DragController::LinkDragBorderInset = 2;
const int DragController::MaxOriginalImageArea = 1500 * 1500;
diff --git a/WebCore/page/haiku/EventHandlerHaiku.cpp b/WebCore/page/haiku/EventHandlerHaiku.cpp
index 203344e..64b8519 100644
--- a/WebCore/page/haiku/EventHandlerHaiku.cpp
+++ b/WebCore/page/haiku/EventHandlerHaiku.cpp
@@ -36,13 +36,14 @@
#include "HitTestResult.h"
#include "KeyboardEvent.h"
#include "MouseEventWithHitTestResults.h"
-#include "NotImplemented.h"
#include "Page.h"
#include "PlatformKeyboardEvent.h"
#include "PlatformScrollBar.h"
#include "PlatformWheelEvent.h"
#include "RenderWidget.h"
+#include "NotImplemented.h"
+
#include <interface/View.h>
@@ -116,15 +117,13 @@ bool EventHandler::passSubframeEventToSubframe(MouseEventWithHitTestResults& eve
bool EventHandler::passWheelEventToWidget(PlatformWheelEvent& event, Widget* widget)
{
- if (!widget->isFrameView())
- return false;
-
- return static_cast<FrameView*>(widget)->frame()->eventHandler()->handleWheelEvent(event);
+ notImplemented();
+ return false;
}
PassRefPtr<Clipboard> EventHandler::createDraggingClipboard() const
{
- return ClipboardHaiku::create(ClipboardWritable, true);
+ return new ClipboardHaiku(ClipboardWritable, true);
}
bool EventHandler::passMousePressEventToSubframe(MouseEventWithHitTestResults& mev, Frame* subframe)
diff --git a/WebCore/platform/ContextMenuItem.h b/WebCore/platform/ContextMenuItem.h
index d6ab519..3a4cdfa 100644
--- a/WebCore/platform/ContextMenuItem.h
+++ b/WebCore/platform/ContextMenuItem.h
@@ -46,8 +46,6 @@ typedef struct _GtkMenuItem GtkMenuItem;
#include <QAction>
#elif PLATFORM(WX)
class wxMenuItem;
-#elif PLATFORM(HAIKU)
-class BMenuItem;
#endif
namespace WebCore {
@@ -206,8 +204,6 @@ namespace WebCore {
bool checked;
bool enabled;
};
-#elif PLATFORM(HAIKU)
- typedef BMenuItem* PlatformMenuItemDescription;
#else
typedef void* PlatformMenuItemDescription;
#endif
diff --git a/WebCore/platform/Cookie.h b/WebCore/platform/Cookie.h
deleted file mode 100644
index f646d3a..0000000
--- a/WebCore/platform/Cookie.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2009 Joseph Pecoraro. 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 Cookie_h
-#define Cookie_h
-
-#include "PlatformString.h"
-
-namespace WebCore {
-
- struct Cookie {
- Cookie(const String& name, const String& value, const String& domain,
- const String& path, double expires, bool httpOnly, bool secure,
- bool session)
- : name(name)
- , value(value)
- , domain(domain)
- , path(path)
- , expires(expires)
- , httpOnly(httpOnly)
- , secure(secure)
- , session(session)
- {
- }
-
- String name;
- String value;
- String domain;
- String path;
- double expires;
- bool httpOnly;
- bool secure;
- bool session;
- };
-
-}
-
-#endif
diff --git a/WebCore/platform/CookieJar.h b/WebCore/platform/CookieJar.h
index 987543e..6159386 100644
--- a/WebCore/platform/CookieJar.h
+++ b/WebCore/platform/CookieJar.h
@@ -26,21 +26,15 @@
#ifndef CookieJar_h
#define CookieJar_h
-#include <wtf/Vector.h>
-
namespace WebCore {
- class Document;
class KURL;
class String;
-
- struct Cookie;
+ class Document;
String cookies(const Document*, const KURL&);
void setCookies(Document*, const KURL&, const String&);
bool cookiesEnabled(const Document*);
- bool getRawCookies(const Document*, const KURL&, Vector<Cookie>&);
- void deleteCookie(const Document*, const KURL&, const String&);
}
diff --git a/WebCore/platform/CrossThreadCopier.h b/WebCore/platform/CrossThreadCopier.h
index 178e056..d12d72d 100644
--- a/WebCore/platform/CrossThreadCopier.h
+++ b/WebCore/platform/CrossThreadCopier.h
@@ -46,7 +46,6 @@ namespace WebCore {
class String;
struct CrossThreadResourceResponseData;
struct CrossThreadResourceRequestData;
- struct ThreadableLoaderOptions;
template<typename T> struct CrossThreadCopierPassThrough {
typedef T Type;
@@ -66,9 +65,6 @@ namespace WebCore {
template<typename T> struct CrossThreadCopierBase<false, T*> : public CrossThreadCopierPassThrough<T*> {
};
- template<> struct CrossThreadCopierBase<false, ThreadableLoaderOptions> : public CrossThreadCopierPassThrough<ThreadableLoaderOptions> {
- };
-
// Custom copy methods.
template<typename T> struct CrossThreadCopierBase<false, RefPtr<ThreadSafeShared<T> > > {
typedef PassRefPtr<T> Type;
diff --git a/WebCore/platform/Cursor.h b/WebCore/platform/Cursor.h
index 2d041d2..ea75191 100644
--- a/WebCore/platform/Cursor.h
+++ b/WebCore/platform/Cursor.h
@@ -40,8 +40,6 @@ typedef struct _GdkCursor GdkCursor;
#include <QCursor>
#elif PLATFORM(CHROMIUM)
#include "PlatformCursor.h"
-#elif PLATFORM(HAIKU)
-#include <app/Cursor.h>
#endif
#if PLATFORM(MAC)
@@ -88,9 +86,6 @@ namespace WebCore {
#elif PLATFORM(CHROMIUM)
// See PlatformCursor.h
typedef void* PlatformCursorHandle;
-#elif PLATFORM(HAIKU)
- typedef BCursor* PlatformCursor;
- typedef BCursor* PlatformCursorHandle;
#else
typedef void* PlatformCursor;
typedef void* PlatformCursorHandle;
diff --git a/WebCore/platform/DragData.h b/WebCore/platform/DragData.h
index 116ffdd..a1555e3 100644
--- a/WebCore/platform/DragData.h
+++ b/WebCore/platform/DragData.h
@@ -58,9 +58,6 @@ typedef void* DragDataRef;
typedef void* DragDataRef;
#elif PLATFORM(CHROMIUM)
#include "DragDataRef.h"
-#elif PLATFORM(HAIKU)
-class BMessage;
-typedef class BMessage* DragDataRef;
#endif
diff --git a/WebCore/platform/DragImage.h b/WebCore/platform/DragImage.h
index 611eb8a..0196971 100644
--- a/WebCore/platform/DragImage.h
+++ b/WebCore/platform/DragImage.h
@@ -48,8 +48,6 @@ class wxDragImage;
#include "DragImageRef.h"
#elif PLATFORM(GTK)
typedef struct _GdkPixbuf GdkPixbuf;
-#elif PLATFORM(HAIKU)
-class BBitmap;
#endif
//We need to #define YOffset as it needs to be shared with WebKit
@@ -74,8 +72,6 @@ namespace WebCore {
typedef wxDragImage* DragImageRef;
#elif PLATFORM(GTK)
typedef GdkPixBuf* DragImageRef;
-#elif PLATFORM(HAIKU)
- typedef BBitmap* DragImageRef;
#elif PLATFORM(ANDROID)
typedef void* DragImageRef;
#endif
diff --git a/WebCore/platform/Pasteboard.h b/WebCore/platform/Pasteboard.h
index 5d63254..883364a 100644
--- a/WebCore/platform/Pasteboard.h
+++ b/WebCore/platform/Pasteboard.h
@@ -102,7 +102,6 @@ public:
#if PLATFORM(GTK)
void setHelper(PasteboardHelper*);
- PasteboardHelper* m_helper;
#endif
private:
@@ -118,6 +117,10 @@ private:
HWND m_owner;
#endif
+#if PLATFORM(GTK)
+ PasteboardHelper* m_helper;
+#endif
+
#if PLATFORM(QT)
bool m_selectionMode;
#endif
diff --git a/WebCore/platform/PlatformKeyboardEvent.h b/WebCore/platform/PlatformKeyboardEvent.h
index b5c2e95..1499ac5 100644
--- a/WebCore/platform/PlatformKeyboardEvent.h
+++ b/WebCore/platform/PlatformKeyboardEvent.h
@@ -59,10 +59,6 @@ QT_END_NAMESPACE
class wxKeyEvent;
#endif
-#if PLATFORM(HAIKU)
-class BMessage;
-#endif
-
namespace WebCore {
class PlatformKeyboardEvent {
@@ -159,10 +155,6 @@ namespace WebCore {
PlatformKeyboardEvent(wxKeyEvent&);
#endif
-#if PLATFORM(HAIKU)
- PlatformKeyboardEvent(BMessage*);
-#endif
-
#if PLATFORM(WIN) || PLATFORM(CHROMIUM)
bool isSystemKey() const { return m_isSystemKey; }
#endif
diff --git a/WebCore/platform/PlatformMenuDescription.h b/WebCore/platform/PlatformMenuDescription.h
index c986207..ab71710 100644
--- a/WebCore/platform/PlatformMenuDescription.h
+++ b/WebCore/platform/PlatformMenuDescription.h
@@ -40,8 +40,6 @@ typedef struct HMENU__* HMENU;
typedef struct _GtkMenu GtkMenu;
#elif PLATFORM(WX)
class wxMenu;
-#elif PLATFORM(HAIKU)
-class BMenu;
#endif
namespace WebCore {
@@ -60,8 +58,6 @@ namespace WebCore {
typedef void* PlatformMenuDescription;
#elif PLATFORM(WX)
typedef wxMenu* PlatformMenuDescription;
-#elif PLATFORM(HAIKU)
- typedef BMenu* PlatformMenuDescription;
#else
typedef void* PlatformMenuDescription;
#endif
diff --git a/WebCore/platform/PlatformMouseEvent.h b/WebCore/platform/PlatformMouseEvent.h
index d01636e..2543d40 100644
--- a/WebCore/platform/PlatformMouseEvent.h
+++ b/WebCore/platform/PlatformMouseEvent.h
@@ -50,10 +50,6 @@ typedef long LPARAM;
class wxMouseEvent;
#endif
-#if PLATFORM(HAIKU)
-class BMessage;
-#endif
-
namespace WebCore {
// These button numbers match the ones used in the DOM API, 0 through 2, except for NoButton which isn't specified.
@@ -132,10 +128,6 @@ namespace WebCore {
PlatformMouseEvent(const wxMouseEvent&, const wxPoint& globalPoint, int clickCount);
#endif
-#if PLATFORM(HAIKU)
- PlatformMouseEvent(const BMessage*);
-#endif
-
protected:
IntPoint m_position;
IntPoint m_globalPosition;
diff --git a/WebCore/platform/PlatformWheelEvent.h b/WebCore/platform/PlatformWheelEvent.h
index 1978438..ae8df4e 100644
--- a/WebCore/platform/PlatformWheelEvent.h
+++ b/WebCore/platform/PlatformWheelEvent.h
@@ -49,10 +49,6 @@ class wxMouseEvent;
class wxPoint;
#endif
-#if PLATFORM(HAIKU)
-class BMessage;
-#endif
-
namespace WebCore {
class FloatPoint;
@@ -113,10 +109,6 @@ namespace WebCore {
PlatformWheelEvent(const wxMouseEvent&, const wxPoint&);
#endif
-#if PLATFORM(HAIKU)
- PlatformWheelEvent(BMessage*);
-#endif
-
protected:
IntPoint m_position;
IntPoint m_globalPosition;
diff --git a/WebCore/platform/PopupMenu.h b/WebCore/platform/PopupMenu.h
index 04b5a68..fc85d60 100644
--- a/WebCore/platform/PopupMenu.h
+++ b/WebCore/platform/PopupMenu.h
@@ -59,8 +59,6 @@ class wxMenu;
#include <wx/event.h>
#elif PLATFORM(CHROMIUM)
#include "PopupMenuPrivate.h"
-#elif PLATFORM(HAIKU)
-class BMenu;
#endif
namespace WebCore {
@@ -94,8 +92,6 @@ public:
#if PLATFORM(WIN)
Scrollbar* scrollbar() const { return m_scrollbar.get(); }
- static LPCTSTR popupClassName();
-
bool up(unsigned lines = 1);
bool down(unsigned lines = 1);
@@ -181,8 +177,6 @@ private:
void OnMenuItemSelected(wxCommandEvent&);
#elif PLATFORM(CHROMIUM)
PopupMenuPrivate p;
-#elif PLATFORM(HAIKU)
- BMenu* m_menu;
#endif
};
diff --git a/WebCore/platform/TreeShared.h b/WebCore/platform/TreeShared.h
index 02728ff..1ac1b33 100644
--- a/WebCore/platform/TreeShared.h
+++ b/WebCore/platform/TreeShared.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2006, 2007, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -28,8 +28,17 @@ namespace WebCore {
template<class T> class TreeShared : public Noncopyable {
public:
- TreeShared(int initialRefCount = 1)
- : m_refCount(initialRefCount)
+ TreeShared()
+ : m_refCount(0)
+ , m_parent(0)
+ {
+#ifndef NDEBUG
+ m_deletionHasBegun = false;
+ m_inRemovedLastRefFunction = false;
+#endif
+ }
+ TreeShared(T* parent)
+ : m_refCount(0)
, m_parent(0)
{
#ifndef NDEBUG
diff --git a/WebCore/platform/Widget.h b/WebCore/platform/Widget.h
index 798ab9e..4534d58 100644
--- a/WebCore/platform/Widget.h
+++ b/WebCore/platform/Widget.h
@@ -70,11 +70,6 @@ class wxWindow;
typedef wxWindow* PlatformWidget;
#endif
-#if PLATFORM(HAIKU)
-class BView;
-typedef BView* PlatformWidget;
-#endif
-
#if PLATFORM(CHROMIUM)
#include "PlatformWidget.h"
#endif
diff --git a/WebCore/platform/chromium/PopupMenuChromium.cpp b/WebCore/platform/chromium/PopupMenuChromium.cpp
index 20e0901..51ed6ce 100644
--- a/WebCore/platform/chromium/PopupMenuChromium.cpp
+++ b/WebCore/platform/chromium/PopupMenuChromium.cpp
@@ -601,22 +601,6 @@ bool PopupListBox::isInterestedInEventForKey(int keyCode)
}
}
-static bool isCharacterTypeEvent(const PlatformKeyboardEvent& event)
-{
- // Check whether the event is a character-typed event or not.
- // In Windows, PlatformKeyboardEvent::Char (not RawKeyDown) type event
- // is considered as character type event. In Mac OS, KeyDown (not
- // KeyUp) is considered as character type event.
-#if PLATFORM(WIN_OS)
- if (event.type() == PlatformKeyboardEvent::Char)
- return true;
-#else
- if (event.type() == PlatformKeyboardEvent::KeyDown)
- return true;
-#endif
- return false;
-}
-
bool PopupListBox::handleKeyEvent(const PlatformKeyboardEvent& event)
{
if (event.type() == PlatformKeyboardEvent::KeyUp)
@@ -657,8 +641,7 @@ bool PopupListBox::handleKeyEvent(const PlatformKeyboardEvent& event)
break;
default:
if (!event.ctrlKey() && !event.altKey() && !event.metaKey()
- && isPrintableChar(event.windowsVirtualKeyCode())
- && isCharacterTypeEvent(event))
+ && isPrintableChar(event.windowsVirtualKeyCode()))
typeAheadFind(event);
break;
}
@@ -707,6 +690,21 @@ static String stripLeadingWhiteSpace(const String& string)
return string.substring(i, length - i);
}
+static bool isCharacterTypeEvent(const PlatformKeyboardEvent& event) {
+ // Check whether the event is a character-typed event or not.
+ // In Windows, PlatformKeyboardEvent::Char (not RawKeyDown) type event
+ // is considered as character type event. In Mac OS, KeyDown (not
+ // KeyUp) is considered as character type event.
+#if PLATFORM(WIN_OS)
+ if (event.type() == PlatformKeyboardEvent::Char)
+ return true;
+#else
+ if (event.type() == PlatformKeyboardEvent::KeyDown)
+ return true;
+#endif
+ return false;
+}
+
// From HTMLSelectElement.cpp, with modifications
void PopupListBox::typeAheadFind(const PlatformKeyboardEvent& event)
{
@@ -716,7 +714,8 @@ void PopupListBox::typeAheadFind(const PlatformKeyboardEvent& event)
// Reset the time when user types in a character. The time gap between
// last character and the current character is used to indicate whether
// user typed in a string or just a character as the search prefix.
- m_lastCharTime = now;
+ if (isCharacterTypeEvent(event))
+ m_lastCharTime = now;
UChar c = event.windowsVirtualKeyCode();
diff --git a/WebCore/platform/graphics/BitmapImage.h b/WebCore/platform/graphics/BitmapImage.h
index 6a7c02c..807c11b 100644
--- a/WebCore/platform/graphics/BitmapImage.h
+++ b/WebCore/platform/graphics/BitmapImage.h
@@ -45,10 +45,6 @@ class NSImage;
typedef struct HBITMAP__ *HBITMAP;
#endif
-#if PLATFORM(HAIKU)
-class BBitmap;
-#endif
-
namespace WebCore {
struct FrameData;
}
@@ -169,16 +165,10 @@ protected:
virtual void drawFrameMatchingSourceSize(GraphicsContext*, const FloatRect& dstRect, const IntSize& srcSize, CompositeOperator);
#endif
virtual void draw(GraphicsContext*, const FloatRect& dstRect, const FloatRect& srcRect, CompositeOperator);
-
#if PLATFORM(WX) || PLATFORM(WINCE)
virtual void drawPattern(GraphicsContext*, const FloatRect& srcRect, const TransformationMatrix& patternTransform,
const FloatPoint& phase, CompositeOperator, const FloatRect& destRect);
-#endif
-
-#if PLATFORM(HAIKU)
- virtual BBitmap* getBBitmap() const;
-#endif
-
+#endif
size_t currentFrame() const { return m_currentFrame; }
size_t frameCount();
NativeImagePtr frameAtIndex(size_t);
diff --git a/WebCore/platform/graphics/Color.h b/WebCore/platform/graphics/Color.h
index 8e51b95..5baa56e 100644
--- a/WebCore/platform/graphics/Color.h
+++ b/WebCore/platform/graphics/Color.h
@@ -47,10 +47,6 @@ typedef struct _GdkColor GdkColor;
class wxColour;
#endif
-#if PLATFORM(HAIKU)
-struct rgb_color;
-#endif
-
namespace WebCore {
class String;
@@ -125,11 +121,6 @@ public:
Color(CGColorRef);
#endif
-#if PLATFORM(HAIKU)
- Color(const rgb_color&);
- operator rgb_color() const;
-#endif
-
static bool parseHexColor(const String& name, RGBA32& rgb);
static const RGBA32 black = 0xFF000000;
diff --git a/WebCore/platform/graphics/FloatPoint.h b/WebCore/platform/graphics/FloatPoint.h
index a239173..0c97c49 100644
--- a/WebCore/platform/graphics/FloatPoint.h
+++ b/WebCore/platform/graphics/FloatPoint.h
@@ -51,10 +51,6 @@ class QPointF;
QT_END_NAMESPACE
#endif
-#if PLATFORM(HAIKU)
-class BPoint;
-#endif
-
#if PLATFORM(SKIA)
struct SkPoint;
#endif
@@ -94,11 +90,6 @@ public:
operator QPointF() const;
#endif
-#if PLATFORM(HAIKU)
- FloatPoint(const BPoint&);
- operator BPoint() const;
-#endif
-
#if (PLATFORM(SKIA) || PLATFORM(SGL))
operator SkPoint() const;
FloatPoint(const SkPoint&);
diff --git a/WebCore/platform/graphics/FloatRect.h b/WebCore/platform/graphics/FloatRect.h
index 7c7d32a..e906812 100644
--- a/WebCore/platform/graphics/FloatRect.h
+++ b/WebCore/platform/graphics/FloatRect.h
@@ -51,10 +51,6 @@ QT_END_NAMESPACE
class wxRect2DDouble;
#endif
-#if PLATFORM(HAIKU)
-class BRect;
-#endif
-
#if (PLATFORM(SKIA) || PLATFORM(SGL))
struct SkRect;
#endif
@@ -142,11 +138,6 @@ public:
operator wxRect2DDouble() const;
#endif
-#if PLATFORM(HAIKU)
- FloatRect(const BRect&);
- operator BRect() const;
-#endif
-
#if (PLATFORM(SKIA) || PLATFORM(SGL))
FloatRect(const SkRect&);
operator SkRect() const;
diff --git a/WebCore/platform/graphics/FontDescription.h b/WebCore/platform/graphics/FontDescription.h
index e5c52bf..c893b8a 100644
--- a/WebCore/platform/graphics/FontDescription.h
+++ b/WebCore/platform/graphics/FontDescription.h
@@ -80,8 +80,6 @@ public:
FontWeight bolderWeight() const;
GenericFamilyType genericFamily() const { return static_cast<GenericFamilyType>(m_genericFamily); }
bool usePrinterFont() const { return m_usePrinterFont; }
- // only use fixed default size when there is only one font family, and that family is "monospace"
- bool useFixedDefaultSize() const { return genericFamily() == MonospaceFamily && !family().next() && family().family() == "-webkit-monospace"; }
FontRenderingMode renderingMode() const { return static_cast<FontRenderingMode>(m_renderingMode); }
unsigned keywordSize() const { return m_keywordSize; }
diff --git a/WebCore/platform/graphics/GraphicsContext.cpp b/WebCore/platform/graphics/GraphicsContext.cpp
index ccdce08..a4e8408 100644
--- a/WebCore/platform/graphics/GraphicsContext.cpp
+++ b/WebCore/platform/graphics/GraphicsContext.cpp
@@ -27,9 +27,9 @@
#include "GraphicsContext.h"
#include "BidiResolver.h"
-#include "Font.h"
#include "Generator.h"
#include "GraphicsContextPrivate.h"
+#include "Font.h"
using namespace std;
@@ -89,7 +89,7 @@ void GraphicsContext::save()
return;
m_common->stack.append(m_common->state);
-
+
savePlatformState();
}
@@ -104,7 +104,7 @@ void GraphicsContext::restore()
}
m_common->state = m_common->stack.last();
m_common->stack.removeLast();
-
+
restorePlatformState();
}
@@ -305,7 +305,7 @@ bool GraphicsContext::paintingDisabled() const
}
void GraphicsContext::drawImage(Image* image, const IntPoint& p, CompositeOperator op)
-{
+{
drawImage(image, p, IntRect(0, 0, -1, -1), op);
}
@@ -329,7 +329,7 @@ void GraphicsContext::drawText(const Font& font, const TextRun& run, const IntPo
{
if (paintingDisabled())
return;
-
+
font.drawText(this, run, point, from, to);
}
#endif
@@ -383,7 +383,7 @@ void GraphicsContext::initFocusRing(int width, int offset)
if (paintingDisabled())
return;
clearFocusRing();
-
+
m_common->m_focusRingWidth = width;
m_common->m_focusRingOffset = offset;
}
@@ -396,12 +396,12 @@ void GraphicsContext::clearFocusRing()
IntRect GraphicsContext::focusRingBoundingRect()
{
IntRect result = IntRect(0, 0, 0, 0);
-
+
const Vector<IntRect>& rects = focusRingRects();
unsigned rectCount = rects.size();
for (unsigned i = 0; i < rectCount; i++)
result.unite(rects[i]);
-
+
return result;
}
@@ -436,7 +436,7 @@ void GraphicsContext::drawImage(Image* image, const FloatRect& dest, const Float
float tsh = src.height();
float tw = dest.width();
float th = dest.height();
-
+
if (tsw == -1)
tsw = image->width();
if (tsh == -1)
@@ -540,39 +540,10 @@ void GraphicsContext::setPlatformTextDrawingMode(int mode)
}
#endif
-#if !PLATFORM(QT) && !PLATFORM(CAIRO) && !PLATFORM(SKIA) && !PLATFORM(HAIKU)
+#if !PLATFORM(QT) && !PLATFORM(CAIRO) && !PLATFORM(SKIA)
void GraphicsContext::setPlatformStrokeStyle(const StrokeStyle&)
{
}
#endif
-void GraphicsContext::adjustLineToPixelBoundaries(FloatPoint& p1, FloatPoint& p2, float strokeWidth, const StrokeStyle& penStyle)
-{
- // For odd widths, we add in 0.5 to the appropriate x/y so that the float arithmetic
- // works out. For example, with a border width of 3, WebKit will pass us (y1+y2)/2, e.g.,
- // (50+53)/2 = 103/2 = 51 when we want 51.5. It is always true that an even width gave
- // us a perfect position, but an odd width gave us a position that is off by exactly 0.5.
- if (penStyle == DottedStroke || penStyle == DashedStroke) {
- if (p1.x() == p2.x()) {
- p1.setY(p1.y() + strokeWidth);
- p2.setY(p2.y() - strokeWidth);
- } else {
- p1.setX(p1.x() + strokeWidth);
- p2.setX(p2.x() - strokeWidth);
- }
- }
-
- if (static_cast<int>(strokeWidth) % 2) { //odd
- if (p1.x() == p2.x()) {
- // We're a vertical line. Adjust our x.
- p1.setX(p1.x() + 0.5f);
- p2.setX(p2.x() + 0.5f);
- } else {
- // We're a horizontal line. Adjust our y.
- p1.setY(p1.y() + 0.5f);
- p2.setY(p2.y() + 0.5f);
- }
- }
-}
-
}
diff --git a/WebCore/platform/graphics/GraphicsContext.h b/WebCore/platform/graphics/GraphicsContext.h
index 02914b0..b52344d 100644
--- a/WebCore/platform/graphics/GraphicsContext.h
+++ b/WebCore/platform/graphics/GraphicsContext.h
@@ -55,8 +55,8 @@ struct SkPoint;
class wxGCDC;
class wxWindowDC;
-// wxGraphicsContext allows us to support Path, etc.
-// but on some platforms, e.g. Linux, it requires fairly
+// wxGraphicsContext allows us to support Path, etc.
+// but on some platforms, e.g. Linux, it requires fairly
// new software.
#if USE(WXGC)
// On OS X, wxGCDC is just a typedef for wxDC, so use wxDC explicitly to make
@@ -72,10 +72,6 @@ class wxWindowDC;
#endif
#elif PLATFORM(SKIA)
typedef class PlatformContextSkia PlatformGraphicsContext;
-#elif PLATFORM(HAIKU)
-class BView;
-typedef BView PlatformGraphicsContext;
-struct pattern;
#elif PLATFORM(WINCE)
typedef struct HDC__ PlatformGraphicsContext;
#else
@@ -128,7 +124,7 @@ namespace WebCore {
const int cTextFill = 1;
const int cTextStroke = 2;
const int cTextClip = 4;
-
+
enum StrokeStyle {
NoStroke,
SolidStroke,
@@ -136,12 +132,12 @@ namespace WebCore {
DashedStroke
};
- // FIXME: This is a place-holder until we decide to add
- // real color space support to WebCore. At that time, ColorSpace will be a
- // class and instances will be held off of Colors. There will be
- // special singleton Gradient and Pattern color spaces to mark when
- // a fill or stroke is using a gradient or pattern instead of a solid color.
- // https://bugs.webkit.org/show_bug.cgi?id=20558
+// FIXME: This is a place-holder until we decide to add
+// real color space support to WebCore. At that time, ColorSpace will be a
+// class and instances will be held off of Colors. There will be
+// special singleton Gradient and Pattern color spaces to mark when
+// a fill or stroke is using a gradient or pattern instead of a solid color.
+// https://bugs.webkit.org/show_bug.cgi?id=20558
enum ColorSpace {
SolidColorSpace,
PatternColorSpace,
@@ -160,11 +156,11 @@ namespace WebCore {
public:
GraphicsContext(PlatformGraphicsContext*);
~GraphicsContext();
-
+
#if !PLATFORM(WINCE) || PLATFORM(QT)
PlatformGraphicsContext* platformContext() const;
#endif
-
+
float strokeThickness() const;
void setStrokeThickness(float);
StrokeStyle strokeStyle() const;
@@ -269,7 +265,7 @@ namespace WebCore {
CompositeOperator = CompositeSourceOver, bool useLowQualityScale = false);
void drawTiledImage(Image*, const IntRect& destRect, const IntPoint& srcPoint, const IntSize& tileSize,
CompositeOperator = CompositeSourceOver);
- void drawTiledImage(Image*, const IntRect& destRect, const IntRect& srcRect,
+ void drawTiledImage(Image*, const IntRect& destRect, const IntRect& srcRect,
Image::TileRule hRule = Image::StretchTile, Image::TileRule vRule = Image::StretchTile,
CompositeOperator = CompositeSourceOver);
@@ -293,13 +289,13 @@ namespace WebCore {
void drawHighlightForText(const Font&, const TextRun&, const IntPoint&, int h, const Color& backgroundColor, int from = 0, int to = -1);
FloatRect roundToDevicePixels(const FloatRect&);
-
+
void drawLineForText(const IntPoint&, int width, bool printing);
void drawLineForMisspellingOrBadGrammar(const IntPoint&, int width, bool grammar);
-
+
bool paintingDisabled() const;
void setPaintingDisabled(bool);
-
+
bool updatingControlTints() const;
void setUpdatingControlTints(bool);
@@ -338,7 +334,7 @@ namespace WebCore {
void rotate(float angleInRadians);
void translate(float x, float y);
IntPoint origin();
-
+
void setURLForRect(const KURL&, const IntRect&);
void concatCTM(const TransformationMatrix&);
@@ -420,10 +416,6 @@ namespace WebCore {
GdkEventExpose* gdkExposeEvent() const;
#endif
-#if PLATFORM(HAIKU)
- pattern getHaikuStrokeStyle();
-#endif
-
private:
void savePlatformState();
void restorePlatformState();
@@ -446,8 +438,6 @@ namespace WebCore {
void setPlatformShadow(const IntSize&, int blur, const Color&);
void clearPlatformShadow();
- static void adjustLineToPixelBoundaries(FloatPoint& p1, FloatPoint& p2, float strokeWidth, const StrokeStyle&);
-
int focusRingWidth() const;
int focusRingOffset() const;
const Vector<IntRect>& focusRingRects() const;
diff --git a/WebCore/platform/graphics/GraphicsLayer.cpp b/WebCore/platform/graphics/GraphicsLayer.cpp
index b375bd3..7d43832 100644
--- a/WebCore/platform/graphics/GraphicsLayer.cpp
+++ b/WebCore/platform/graphics/GraphicsLayer.cpp
@@ -69,11 +69,10 @@ GraphicsLayer::GraphicsLayer(GraphicsLayerClient* client)
, m_usingTiledLayer(false)
, m_masksToBounds(false)
, m_drawsContent(false)
- , m_paintingPhase(GraphicsLayerPaintAll)
+ , m_paintingPhase(GraphicsLayerPaintAllMask)
, m_geometryOrientation(CompositingCoordinatesTopDown)
, m_contentsOrientation(CompositingCoordinatesTopDown)
, m_parent(0)
- , m_maskLayer(0)
#ifndef NDEBUG
, m_repaintCount(0)
#endif
diff --git a/WebCore/platform/graphics/GraphicsLayer.h b/WebCore/platform/graphics/GraphicsLayer.h
index d3e5fb1..4d7668a 100644
--- a/WebCore/platform/graphics/GraphicsLayer.h
+++ b/WebCore/platform/graphics/GraphicsLayer.h
@@ -38,7 +38,6 @@
#include "TransformationMatrix.h"
#include "TransformOperations.h"
#include <wtf/OwnPtr.h>
-#include <wtf/PassOwnPtr.h>
#if PLATFORM(MAC)
#ifdef __OBJC__
@@ -153,7 +152,7 @@ protected:
class GraphicsLayer {
public:
- static PassOwnPtr<GraphicsLayer> create(GraphicsLayerClient*);
+ static GraphicsLayer* createGraphicsLayer(GraphicsLayerClient*);
virtual ~GraphicsLayer();
@@ -181,9 +180,6 @@ public:
void removeAllChildren();
virtual void removeFromParent();
- GraphicsLayer* maskLayer() const { return m_maskLayer; }
- virtual void setMaskLayer(GraphicsLayer* layer) { m_maskLayer = layer; }
-
// Offset is origin of the renderer minus origin of the graphics layer (so either zero or negative).
IntSize offsetFromRenderer() const { return m_offsetFromRenderer; }
void setOffsetFromRenderer(const IntSize& offset) { m_offsetFromRenderer = offset; }
@@ -233,8 +229,8 @@ public:
virtual void setOpacity(float opacity) { m_opacity = opacity; }
// Some GraphicsLayers paint only the foreground or the background content
- GraphicsLayerPaintingPhase paintingPhase() const { return m_paintingPhase; }
- void setPaintingPhase(GraphicsLayerPaintingPhase phase) { m_paintingPhase = phase; }
+ GraphicsLayerPaintingPhase drawingPhase() const { return m_paintingPhase; }
+ void setDrawingPhase(GraphicsLayerPaintingPhase phase) { m_paintingPhase = phase; }
virtual void setNeedsDisplay() = 0;
// mark the given rect (in layer coords) as needing dispay. Never goes deep.
@@ -351,8 +347,6 @@ protected:
Vector<GraphicsLayer*> m_children;
GraphicsLayer* m_parent;
- GraphicsLayer* m_maskLayer; // Reference to mask layer. We don't own this.
-
IntRect m_contentsRect;
#ifndef NDEBUG
diff --git a/WebCore/platform/graphics/GraphicsLayerClient.h b/WebCore/platform/graphics/GraphicsLayerClient.h
index 5facc94..8c0b7ed 100644
--- a/WebCore/platform/graphics/GraphicsLayerClient.h
+++ b/WebCore/platform/graphics/GraphicsLayerClient.h
@@ -37,10 +37,9 @@ class IntRect;
class FloatPoint;
enum GraphicsLayerPaintingPhase {
- GraphicsLayerPaintBackground = (1 << 0),
- GraphicsLayerPaintForeground = (1 << 1),
- GraphicsLayerPaintMask = (1 << 2),
- GraphicsLayerPaintAll = (GraphicsLayerPaintBackground | GraphicsLayerPaintForeground | GraphicsLayerPaintMask)
+ GraphicsLayerPaintBackgroundMask = (1 << 0),
+ GraphicsLayerPaintForegroundMask = (1 << 1),
+ GraphicsLayerPaintAllMask = (GraphicsLayerPaintBackgroundMask | GraphicsLayerPaintForegroundMask)
};
enum AnimatedPropertyID {
diff --git a/WebCore/platform/graphics/Icon.h b/WebCore/platform/graphics/Icon.h
index 8650130..444c67c 100644
--- a/WebCore/platform/graphics/Icon.h
+++ b/WebCore/platform/graphics/Icon.h
@@ -78,8 +78,6 @@ private:
#elif PLATFORM(CHROMIUM)
Icon(const PlatformIcon&);
PlatformIcon m_icon;
-#elif PLATFORM(HAIKU)
- Icon();
#endif
};
diff --git a/WebCore/platform/graphics/ImageBuffer.h b/WebCore/platform/graphics/ImageBuffer.h
index 9432058..2a96d3b 100644
--- a/WebCore/platform/graphics/ImageBuffer.h
+++ b/WebCore/platform/graphics/ImageBuffer.h
@@ -50,11 +50,6 @@ namespace WebCore {
LinearRGB
};
- enum Multiply {
- Premultiplied,
- Unmultiplied
- };
-
class ImageBuffer : public Noncopyable {
public:
// Will return a null pointer on allocation failure.
@@ -76,11 +71,8 @@ namespace WebCore {
void clearImage() { m_image.clear(); }
- PassRefPtr<ImageData> getUnmultipliedImageData(const IntRect&) const;
- PassRefPtr<ImageData> getPremultipliedImageData(const IntRect&) const;
-
- void putUnmultipliedImageData(ImageData*, const IntRect& sourceRect, const IntPoint& destPoint);
- void putPremultipliedImageData(ImageData*, const IntRect& sourceRect, const IntPoint& destPoint);
+ PassRefPtr<ImageData> getImageData(const IntRect& rect) const;
+ void putImageData(ImageData* source, const IntRect& sourceRect, const IntPoint& destPoint);
String toDataURL(const String& mimeType) const;
#if !PLATFORM(CG)
diff --git a/WebCore/platform/graphics/ImageSource.h b/WebCore/platform/graphics/ImageSource.h
index dee3eda..173d50b 100644
--- a/WebCore/platform/graphics/ImageSource.h
+++ b/WebCore/platform/graphics/ImageSource.h
@@ -51,8 +51,6 @@ class SkBitmapRef;
class PrivateAndroidImageSourceRec;
#elif PLATFORM(SKIA)
class NativeImageSkia;
-#elif PLATFORM(HAIKU)
-class BBitmap;
#elif PLATFORM(WINCE)
#include "SharedBitmap.h"
#endif
@@ -107,10 +105,6 @@ typedef cairo_surface_t* NativeImagePtr;
class ImageDecoder;
typedef ImageDecoder* NativeImageSourcePtr;
typedef NativeImageSkia* NativeImagePtr;
-#elif PLATFORM(HAIKU)
-class ImageDecoder;
-typedef ImageDecoder* NativeImageSourcePtr;
-typedef BBitmap* NativeImagePtr;
#elif PLATFORM(WINCE)
class ImageDecoder;
typedef ImageDecoder* NativeImageSourcePtr;
diff --git a/WebCore/platform/graphics/IntPoint.h b/WebCore/platform/graphics/IntPoint.h
index afbfb46..e6d4816 100644
--- a/WebCore/platform/graphics/IntPoint.h
+++ b/WebCore/platform/graphics/IntPoint.h
@@ -55,8 +55,6 @@ class QPoint;
QT_END_NAMESPACE
#elif PLATFORM(GTK)
typedef struct _GdkPoint GdkPoint;
-#elif PLATFORM(HAIKU)
-class BPoint;
#endif
#if PLATFORM(WX)
@@ -123,9 +121,6 @@ public:
#elif PLATFORM(GTK)
IntPoint(const GdkPoint&);
operator GdkPoint() const;
-#elif PLATFORM(HAIKU)
- explicit IntPoint(const BPoint&);
- operator BPoint() const;
#endif
#if PLATFORM(WX)
diff --git a/WebCore/platform/graphics/IntRect.h b/WebCore/platform/graphics/IntRect.h
index c5a12cb..0b607f5 100644
--- a/WebCore/platform/graphics/IntRect.h
+++ b/WebCore/platform/graphics/IntRect.h
@@ -49,8 +49,6 @@ class QRect;
QT_END_NAMESPACE
#elif PLATFORM(GTK)
typedef struct _GdkRectangle GdkRectangle;
-#elif PLATFORM(HAIKU)
-class BRect;
#endif
#if PLATFORM(WX)
@@ -146,9 +144,6 @@ public:
#elif PLATFORM(GTK)
IntRect(const GdkRectangle&);
operator GdkRectangle() const;
-#elif PLATFORM(HAIKU)
- explicit IntRect(const BRect&);
- operator BRect() const;
#endif
#if PLATFORM(CG)
diff --git a/WebCore/platform/graphics/IntSize.h b/WebCore/platform/graphics/IntSize.h
index e80b0fa..dc7a85d 100644
--- a/WebCore/platform/graphics/IntSize.h
+++ b/WebCore/platform/graphics/IntSize.h
@@ -47,8 +47,6 @@ typedef struct tagSIZE SIZE;
QT_BEGIN_NAMESPACE
class QSize;
QT_END_NAMESPACE
-#elif PLATFORM(HAIKU)
-class BSize;
#endif
namespace WebCore {
@@ -115,11 +113,6 @@ public:
operator QSize() const;
#endif
-#if PLATFORM(HAIKU)
- explicit IntSize(const BSize&);
- operator BSize() const;
-#endif
-
private:
int m_width, m_height;
diff --git a/WebCore/platform/graphics/Path.h b/WebCore/platform/graphics/Path.h
index 6b617a0..da324bc 100644
--- a/WebCore/platform/graphics/Path.h
+++ b/WebCore/platform/graphics/Path.h
@@ -52,9 +52,6 @@ typedef WebCore::CairoPath PlatformPath;
#elif PLATFORM(SKIA)
class SkPath;
typedef SkPath PlatformPath;
-#elif PLATFORM(HAIKU)
-class BRegion;
-typedef BRegion PlatformPath;
#elif PLATFORM(WINCE)
namespace WebCore {
class PlatformPath;
diff --git a/WebCore/platform/graphics/Pattern.h b/WebCore/platform/graphics/Pattern.h
index 2f1192c..02ad3ec 100644
--- a/WebCore/platform/graphics/Pattern.h
+++ b/WebCore/platform/graphics/Pattern.h
@@ -53,9 +53,6 @@ typedef wxGraphicsBrush* PlatformPatternPtr;
class wxBrush;
typedef wxBrush* PlatformPatternPtr;
#endif // USE(WXGC)
-#elif PLATFORM(HAIKU)
-#include <interface/GraphicsDefs.h>
-typedef pattern* PlatformPatternPtr;
#elif PLATFORM(WINCE)
typedef void* PlatformPatternPtr;
#endif
diff --git a/WebCore/platform/graphics/SimpleFontData.h b/WebCore/platform/graphics/SimpleFontData.h
index 8cb8268..cb472b0 100644
--- a/WebCore/platform/graphics/SimpleFontData.h
+++ b/WebCore/platform/graphics/SimpleFontData.h
@@ -45,10 +45,6 @@ typedef struct OpaqueATSUStyle* ATSUStyle;
#include <QFont>
#endif
-#if PLATFORM(HAIKU)
-#include <Font.h>
-#endif
-
namespace WebCore {
class FontDescription;
diff --git a/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp b/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp
index de8afb3..5765546 100644
--- a/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp
+++ b/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp
@@ -31,6 +31,7 @@
#if PLATFORM(CAIRO)
+#include "TransformationMatrix.h"
#include "CairoPath.h"
#include "FloatRect.h"
#include "Font.h"
@@ -40,7 +41,6 @@
#include "Path.h"
#include "Pattern.h"
#include "SimpleFontData.h"
-#include "TransformationMatrix.h"
#include <cairo.h>
#include <math.h>
@@ -53,8 +53,8 @@
#elif PLATFORM(WIN)
#include <cairo-win32.h>
#endif
-#include "GraphicsContextPlatformPrivateCairo.h"
#include "GraphicsContextPrivate.h"
+#include "GraphicsContextPlatformPrivateCairo.h"
#ifndef M_PI
#define M_PI 3.14159265358979323846
@@ -142,6 +142,38 @@ void GraphicsContext::drawRect(const IntRect& rect)
cairo_restore(cr);
}
+// FIXME: Now that this is refactored, it should be shared by all contexts.
+static void adjustLineToPixelBoundaries(FloatPoint& p1, FloatPoint& p2, float strokeWidth, StrokeStyle style)
+{
+ // For odd widths, we add in 0.5 to the appropriate x/y so that the float arithmetic
+ // works out. For example, with a border width of 3, KHTML will pass us (y1+y2)/2, e.g.,
+ // (50+53)/2 = 103/2 = 51 when we want 51.5. It is always true that an even width gave
+ // us a perfect position, but an odd width gave us a position that is off by exactly 0.5.
+ if (style == DottedStroke || style == DashedStroke) {
+ if (p1.x() == p2.x()) {
+ p1.setY(p1.y() + strokeWidth);
+ p2.setY(p2.y() - strokeWidth);
+ }
+ else {
+ p1.setX(p1.x() + strokeWidth);
+ p2.setX(p2.x() - strokeWidth);
+ }
+ }
+
+ if (static_cast<int>(strokeWidth) % 2) {
+ if (p1.x() == p2.x()) {
+ // We're a vertical line. Adjust our x.
+ p1.setX(p1.x() + 0.5);
+ p2.setX(p2.x() + 0.5);
+ }
+ else {
+ // We're a horizontal line. Adjust our y.
+ p1.setY(p1.y() + 0.5);
+ p2.setY(p2.y() + 0.5);
+ }
+ }
+}
+
// This is only used to draw borders.
void GraphicsContext::drawLine(const IntPoint& point1, const IntPoint& point2)
{
@@ -207,18 +239,20 @@ void GraphicsContext::drawLine(const IntPoint& point1, const IntPoint& point2)
if (patWidth == 1)
patternOffset = 1.0;
else {
- bool evenNumberOfSegments = !(numSegments % 2);
+ bool evenNumberOfSegments = numSegments%2 == 0;
if (remainder)
evenNumberOfSegments = !evenNumberOfSegments;
if (evenNumberOfSegments) {
if (remainder) {
patternOffset += patWidth - remainder;
- patternOffset += remainder / 2;
- } else
- patternOffset = patWidth / 2;
- } else if (!evenNumberOfSegments) {
+ patternOffset += remainder/2;
+ }
+ else
+ patternOffset = patWidth/2;
+ }
+ else if (!evenNumberOfSegments) {
if (remainder)
- patternOffset = (patWidth - remainder) / 2;
+ patternOffset = (patWidth - remainder)/2;
}
}
@@ -284,7 +318,7 @@ void GraphicsContext::strokeArc(const IntRect& rect, int startAngle, int angleSp
if (w != h)
cairo_scale(cr, 1., scaleFactor);
-
+
cairo_arc_negative(cr, x + hRadius, (y + vRadius) * reverseScaleFactor, hRadius, -fa * M_PI/180, -falen * M_PI/180);
if (w != h)
@@ -292,16 +326,16 @@ void GraphicsContext::strokeArc(const IntRect& rect, int startAngle, int angleSp
float width = strokeThickness();
int patWidth = 0;
-
+
switch (strokeStyle()) {
- case DottedStroke:
- patWidth = static_cast<int>(width / 2);
- break;
- case DashedStroke:
- patWidth = 3 * static_cast<int>(width / 2);
- break;
- default:
- break;
+ case DottedStroke:
+ patWidth = static_cast<int>(width / 2);
+ break;
+ case DashedStroke:
+ patWidth = 3 * static_cast<int>(width / 2);
+ break;
+ default:
+ break;
}
setColor(cr, strokeColor());
@@ -315,7 +349,7 @@ void GraphicsContext::strokeArc(const IntRect& rect, int startAngle, int angleSp
distance = static_cast<int>((M_PI * hRadius) / 2.0);
else // We are elliptical and will have to estimate the distance
distance = static_cast<int>((M_PI * sqrtf((hRadius * hRadius + vRadius * vRadius) / 2.0)) / 2.0);
-
+
int remainder = distance % patWidth;
int coverage = distance - remainder;
int numSegments = coverage / patWidth;
@@ -325,7 +359,7 @@ void GraphicsContext::strokeArc(const IntRect& rect, int startAngle, int angleSp
if (patWidth == 1)
patternOffset = 1.0;
else {
- bool evenNumberOfSegments = !(numSegments % 2);
+ bool evenNumberOfSegments = numSegments % 2 == 0;
if (remainder)
evenNumberOfSegments = !evenNumberOfSegments;
if (evenNumberOfSegments) {
@@ -794,15 +828,15 @@ void GraphicsContext::setLineCap(LineCap lineCap)
cairo_line_cap_t cairoCap = CAIRO_LINE_CAP_BUTT;
switch (lineCap) {
- case ButtCap:
- // no-op
- break;
- case RoundCap:
- cairoCap = CAIRO_LINE_CAP_ROUND;
- break;
- case SquareCap:
- cairoCap = CAIRO_LINE_CAP_SQUARE;
- break;
+ case ButtCap:
+ // no-op
+ break;
+ case RoundCap:
+ cairoCap = CAIRO_LINE_CAP_ROUND;
+ break;
+ case SquareCap:
+ cairoCap = CAIRO_LINE_CAP_SQUARE;
+ break;
}
cairo_set_line_cap(m_data->cr, cairoCap);
}
@@ -819,15 +853,15 @@ void GraphicsContext::setLineJoin(LineJoin lineJoin)
cairo_line_join_t cairoJoin = CAIRO_LINE_JOIN_MITER;
switch (lineJoin) {
- case MiterJoin:
- // no-op
- break;
- case RoundJoin:
- cairoJoin = CAIRO_LINE_JOIN_ROUND;
- break;
- case BevelJoin:
- cairoJoin = CAIRO_LINE_JOIN_BEVEL;
- break;
+ case MiterJoin:
+ // no-op
+ break;
+ case RoundJoin:
+ cairoJoin = CAIRO_LINE_JOIN_ROUND;
+ break;
+ case BevelJoin:
+ cairoJoin = CAIRO_LINE_JOIN_BEVEL;
+ break;
}
cairo_set_line_join(m_data->cr, cairoJoin);
}
@@ -853,37 +887,37 @@ float GraphicsContext::getAlpha()
static inline cairo_operator_t toCairoOperator(CompositeOperator op)
{
switch (op) {
- case CompositeClear:
- return CAIRO_OPERATOR_CLEAR;
- case CompositeCopy:
- return CAIRO_OPERATOR_SOURCE;
- case CompositeSourceOver:
- return CAIRO_OPERATOR_OVER;
- case CompositeSourceIn:
- return CAIRO_OPERATOR_IN;
- case CompositeSourceOut:
- return CAIRO_OPERATOR_OUT;
- case CompositeSourceAtop:
- return CAIRO_OPERATOR_ATOP;
- case CompositeDestinationOver:
- return CAIRO_OPERATOR_DEST_OVER;
- case CompositeDestinationIn:
- return CAIRO_OPERATOR_DEST_IN;
- case CompositeDestinationOut:
- return CAIRO_OPERATOR_DEST_OUT;
- case CompositeDestinationAtop:
- return CAIRO_OPERATOR_DEST_ATOP;
- case CompositeXOR:
- return CAIRO_OPERATOR_XOR;
- case CompositePlusDarker:
- return CAIRO_OPERATOR_SATURATE;
- case CompositeHighlight:
- // There is no Cairo equivalent for CompositeHighlight.
- return CAIRO_OPERATOR_OVER;
- case CompositePlusLighter:
- return CAIRO_OPERATOR_ADD;
- default:
- return CAIRO_OPERATOR_SOURCE;
+ case CompositeClear:
+ return CAIRO_OPERATOR_CLEAR;
+ case CompositeCopy:
+ return CAIRO_OPERATOR_SOURCE;
+ case CompositeSourceOver:
+ return CAIRO_OPERATOR_OVER;
+ case CompositeSourceIn:
+ return CAIRO_OPERATOR_IN;
+ case CompositeSourceOut:
+ return CAIRO_OPERATOR_OUT;
+ case CompositeSourceAtop:
+ return CAIRO_OPERATOR_ATOP;
+ case CompositeDestinationOver:
+ return CAIRO_OPERATOR_DEST_OVER;
+ case CompositeDestinationIn:
+ return CAIRO_OPERATOR_DEST_IN;
+ case CompositeDestinationOut:
+ return CAIRO_OPERATOR_DEST_OUT;
+ case CompositeDestinationAtop:
+ return CAIRO_OPERATOR_DEST_ATOP;
+ case CompositeXOR:
+ return CAIRO_OPERATOR_XOR;
+ case CompositePlusDarker:
+ return CAIRO_OPERATOR_SATURATE;
+ case CompositeHighlight:
+ // There is no Cairo equivalent for CompositeHighlight.
+ return CAIRO_OPERATOR_OVER;
+ case CompositePlusLighter:
+ return CAIRO_OPERATOR_ADD;
+ default:
+ return CAIRO_OPERATOR_SOURCE;
}
}
diff --git a/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp b/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp
index 0213944..c905ee8 100644
--- a/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp
+++ b/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp
@@ -138,17 +138,16 @@ void ImageBuffer::platformTransformColorSpace(const Vector<int>& lookUpTable)
}
}
-template <Multiply multiplied>
-PassRefPtr<ImageData> getImageData(const IntRect& rect, const ImageBufferData& data, const IntSize& size)
+PassRefPtr<ImageData> ImageBuffer::getImageData(const IntRect& rect) const
{
- ASSERT(cairo_surface_get_type(data.m_surface) == CAIRO_SURFACE_TYPE_IMAGE);
+ ASSERT(cairo_surface_get_type(m_data.m_surface) == CAIRO_SURFACE_TYPE_IMAGE);
PassRefPtr<ImageData> result = ImageData::create(rect.width(), rect.height());
- unsigned char* dataSrc = cairo_image_surface_get_data(data.m_surface);
+ unsigned char* dataSrc = cairo_image_surface_get_data(m_data.m_surface);
unsigned char* dataDst = result->data()->data()->data();
- if (rect.x() < 0 || rect.y() < 0 || (rect.x() + rect.width()) > size.width() || (rect.y() + rect.height()) > size.height())
- memset(dataDst, 0, result->data()->length());
+ if (rect.x() < 0 || rect.y() < 0 || (rect.x() + rect.width()) > m_size.width() || (rect.y() + rect.height()) > m_size.height())
+ memset(dataSrc, 0, result->data()->length());
int originx = rect.x();
int destx = 0;
@@ -157,8 +156,8 @@ PassRefPtr<ImageData> getImageData(const IntRect& rect, const ImageBufferData& d
originx = 0;
}
int endx = rect.x() + rect.width();
- if (endx > size.width())
- endx = size.width();
+ if (endx > m_size.width())
+ endx = m_size.width();
int numColumns = endx - originx;
int originy = rect.y();
@@ -168,11 +167,11 @@ PassRefPtr<ImageData> getImageData(const IntRect& rect, const ImageBufferData& d
originy = 0;
}
int endy = rect.y() + rect.height();
- if (endy > size.height())
- endy = size.height();
+ if (endy > m_size.height())
+ endy = m_size.height();
int numRows = endy - originy;
- int stride = cairo_image_surface_get_stride(data.m_surface);
+ int stride = cairo_image_surface_get_stride(m_data.m_surface);
unsigned destBytesPerRow = 4 * rect.width();
unsigned char* destRows = dataDst + desty * destBytesPerRow + destx * 4;
@@ -181,11 +180,7 @@ PassRefPtr<ImageData> getImageData(const IntRect& rect, const ImageBufferData& d
for (int x = 0; x < numColumns; x++) {
int basex = x * 4;
unsigned* pixel = row + x + originx;
- Color pixelColor;
- if (multiplied == Unmultiplied)
- pixelColor = colorFromPremultipliedARGB(*pixel);
- else
- pixelColor = Color(*pixel);
+ Color pixelColor = colorFromPremultipliedARGB(*pixel);
destRows[basex] = pixelColor.red();
destRows[basex + 1] = pixelColor.green();
destRows[basex + 2] = pixelColor.blue();
@@ -197,22 +192,11 @@ PassRefPtr<ImageData> getImageData(const IntRect& rect, const ImageBufferData& d
return result;
}
-PassRefPtr<ImageData> ImageBuffer::getUnmultipliedImageData(const IntRect& rect) const
-{
- return getImageData<Unmultiplied>(rect, m_data, m_size);
-}
-
-PassRefPtr<ImageData> ImageBuffer::getPremultipliedImageData(const IntRect& rect) const
-{
- return getImageData<Premultiplied>(rect, m_data, m_size);
-}
-
-template <Multiply multiplied>
-void putImageData(ImageData*& source, const IntRect& sourceRect, const IntPoint& destPoint, ImageBufferData& data, const IntSize& size)
+void ImageBuffer::putImageData(ImageData* source, const IntRect& sourceRect, const IntPoint& destPoint)
{
- ASSERT(cairo_surface_get_type(data.m_surface) == CAIRO_SURFACE_TYPE_IMAGE);
+ ASSERT(cairo_surface_get_type(m_data.m_surface) == CAIRO_SURFACE_TYPE_IMAGE);
- unsigned char* dataDst = cairo_image_surface_get_data(data.m_surface);
+ unsigned char* dataDst = cairo_image_surface_get_data(m_data.m_surface);
ASSERT(sourceRect.width() > 0);
ASSERT(sourceRect.height() > 0);
@@ -220,28 +204,28 @@ void putImageData(ImageData*& source, const IntRect& sourceRect, const IntPoint&
int originx = sourceRect.x();
int destx = destPoint.x() + sourceRect.x();
ASSERT(destx >= 0);
- ASSERT(destx < size.width());
+ ASSERT(destx < m_size.width());
ASSERT(originx >= 0);
ASSERT(originx <= sourceRect.right());
int endx = destPoint.x() + sourceRect.right();
- ASSERT(endx <= size.width());
+ ASSERT(endx <= m_size.width());
int numColumns = endx - destx;
int originy = sourceRect.y();
int desty = destPoint.y() + sourceRect.y();
ASSERT(desty >= 0);
- ASSERT(desty < size.height());
+ ASSERT(desty < m_size.height());
ASSERT(originy >= 0);
ASSERT(originy <= sourceRect.bottom());
int endy = destPoint.y() + sourceRect.bottom();
- ASSERT(endy <= size.height());
+ ASSERT(endy <= m_size.height());
int numRows = endy - desty;
unsigned srcBytesPerRow = 4 * source->width();
- int stride = cairo_image_surface_get_stride(data.m_surface);
+ int stride = cairo_image_surface_get_stride(m_data.m_surface);
unsigned char* srcRows = source->data()->data()->data() + originy * srcBytesPerRow + originx * 4;
for (int y = 0; y < numRows; ++y) {
@@ -253,25 +237,12 @@ void putImageData(ImageData*& source, const IntRect& sourceRect, const IntPoint&
srcRows[basex + 1],
srcRows[basex + 2],
srcRows[basex + 3]);
- if (multiplied == Unmultiplied)
- *pixel = premultipliedARGBFromColor(pixelColor);
- else
- *pixel = pixelColor.rgb();
+ *pixel = premultipliedARGBFromColor(pixelColor);
}
srcRows += srcBytesPerRow;
}
}
-void ImageBuffer::putUnmultipliedImageData(ImageData* source, const IntRect& sourceRect, const IntPoint& destPoint)
-{
- putImageData<Unmultiplied>(source, sourceRect, destPoint, m_data, m_size);
-}
-
-void ImageBuffer::putPremultipliedImageData(ImageData* source, const IntRect& sourceRect, const IntPoint& destPoint)
-{
- putImageData<Premultiplied>(source, sourceRect, destPoint, m_data, m_size);
-}
-
static cairo_status_t writeFunction(void* closure, const unsigned char* data, unsigned int length)
{
Vector<char>* in = reinterpret_cast<Vector<char>*>(closure);
diff --git a/WebCore/platform/graphics/ImageSource.cpp b/WebCore/platform/graphics/cairo/ImageSourceCairo.cpp
index 3bea57f..df62618 100644
--- a/WebCore/platform/graphics/ImageSource.cpp
+++ b/WebCore/platform/graphics/cairo/ImageSourceCairo.cpp
@@ -1,8 +1,6 @@
/*
* Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
* Copyright (C) 2007 Alp Toker <alp.toker@collabora.co.uk>
- * Copyright (C) 2008, Google Inc. All rights reserved.
- * Copyright (C) 2007-2009 Torch Mobile, Inc
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -29,19 +27,16 @@
#include "config.h"
#include "ImageSource.h"
+#if PLATFORM(CAIRO)
+
#include "BMPImageDecoder.h"
#include "GIFImageDecoder.h"
#include "ICOImageDecoder.h"
#include "JPEGImageDecoder.h"
#include "PNGImageDecoder.h"
-#include "SharedBuffer.h"
#include "XBMImageDecoder.h"
-
-#if ENABLE(IMAGE_DECODER_DOWN_SAMPLING)
-#ifndef IMAGE_DECODER_DOWN_SAMPLING_MAX_NUMBER_OF_PIXELS
-#define IMAGE_DECODER_DOWN_SAMPLING_MAX_NUMBER_OF_PIXELS (1024 * 1024)
-#endif
-#endif
+#include "SharedBuffer.h"
+#include <cairo.h>
namespace WebCore {
@@ -125,21 +120,21 @@ void ImageSource::setData(SharedBuffer* data, bool allDataReceived)
// This method will examine the data and instantiate an instance of the appropriate decoder plugin.
// If insufficient bytes are available to determine the image type, no decoder plugin will be
// made.
- if (!m_decoder) {
+ if (!m_decoder)
m_decoder = createDecoder(data->buffer());
-#if ENABLE(IMAGE_DECODER_DOWN_SAMPLING)
- if (m_decoder)
- m_decoder->setMaxNumPixels(IMAGE_DECODER_DOWN_SAMPLING_MAX_NUMBER_OF_PIXELS);
-#endif
- }
- if (m_decoder)
- m_decoder->setData(data, allDataReceived);
+ if (!m_decoder)
+ return;
+
+ m_decoder->setData(data, allDataReceived);
}
String ImageSource::filenameExtension() const
{
- return m_decoder ? m_decoder->filenameExtension() : String();
+ if (!m_decoder)
+ return String();
+
+ return m_decoder->filenameExtension();
}
bool ImageSource::isSizeAvailable()
@@ -181,6 +176,9 @@ size_t ImageSource::frameCount() const
NativeImagePtr ImageSource::createFrameAtIndex(size_t index)
{
+ if (!initialized())
+ return 0;
+
if (!m_decoder)
return 0;
@@ -188,13 +186,11 @@ NativeImagePtr ImageSource::createFrameAtIndex(size_t index)
if (!buffer || buffer->status() == RGBA32Buffer::FrameEmpty)
return 0;
- // Zero-height images can cause problems for some ports. If we have an
- // empty image dimension, just bail.
- if (size().isEmpty())
+ // Cairo does not like zero height images.
+ // If we have a zero height image, just pretend we don't have enough data yet.
+ if (!size().height())
return 0;
- // Return the buffer contents as a native image. For some ports, the data
- // is already in a native container, and this just increments its refcount.
return buffer->asNewNativeImage();
}
@@ -227,14 +223,17 @@ float ImageSource::frameDurationAtIndex(size_t index)
bool ImageSource::frameHasAlphaAtIndex(size_t index)
{
- // When a frame has not finished decoding, always mark it as having alpha.
- // Ports that check the result of this function to determine their
- // compositing op need this in order to not draw the undecoded portion as
- // black.
- // TODO: Perhaps we should ensure that each individual decoder returns true
- // in this case.
- return frameIsCompleteAtIndex(index) ?
- m_decoder->frameBufferAtIndex(index)->hasAlpha() : true;
+ // When a frame has not finished decoding, always mark it as having alpha,
+ // so we don't get a black background for the undecoded sections.
+ // TODO: A better solution is probably to have the underlying buffer's
+ // hasAlpha() return true in these cases, since it is, in fact, technically
+ // true.
+ if (!frameIsCompleteAtIndex(index))
+ return true;
+
+ return m_decoder->frameBufferAtIndex(index)->hasAlpha();
}
}
+
+#endif // PLATFORM(CAIRO)
diff --git a/WebCore/platform/graphics/cg/GraphicsContextCG.cpp b/WebCore/platform/graphics/cg/GraphicsContextCG.cpp
index f1e6a1f..ab8eb3c 100644
--- a/WebCore/platform/graphics/cg/GraphicsContextCG.cpp
+++ b/WebCore/platform/graphics/cg/GraphicsContextCG.cpp
@@ -28,15 +28,14 @@
#include "config.h"
#include "GraphicsContext.h"
+#include "TransformationMatrix.h"
#include "FloatConversion.h"
-#include "GraphicsContextPlatformPrivateCG.h"
#include "GraphicsContextPrivate.h"
+#include "GraphicsContextPlatformPrivateCG.h"
#include "ImageBuffer.h"
#include "KURL.h"
#include "Path.h"
#include "Pattern.h"
-#include "TransformationMatrix.h"
-
#include <CoreGraphics/CGBitmapContext.h>
#include <CoreGraphics/CGPDFContext.h>
#include <wtf/MathExtras.h>
@@ -179,19 +178,19 @@ void GraphicsContext::drawLine(const IntPoint& point1, const IntPoint& point2)
int patWidth = 0;
switch (strokeStyle()) {
- case NoStroke:
- case SolidStroke:
- break;
- case DottedStroke:
- patWidth = (int)width;
- break;
- case DashedStroke:
- patWidth = 3 * (int)width;
- break;
+ case NoStroke:
+ case SolidStroke:
+ break;
+ case DottedStroke:
+ patWidth = (int)width;
+ break;
+ case DashedStroke:
+ patWidth = 3 * (int)width;
+ break;
}
CGContextRef context = platformContext();
-
+
if (shouldAntialias())
CGContextSetShouldAntialias(context, false);
@@ -222,7 +221,7 @@ void GraphicsContext::drawLine(const IntPoint& point1, const IntPoint& point2)
if (patWidth == 1)
patternOffset = 1.0f;
else {
- bool evenNumberOfSegments = !(numSegments % 2);
+ bool evenNumberOfSegments = numSegments % 2 == 0;
if (remainder)
evenNumberOfSegments = !evenNumberOfSegments;
if (evenNumberOfSegments) {
@@ -236,7 +235,7 @@ void GraphicsContext::drawLine(const IntPoint& point1, const IntPoint& point2)
patternOffset = (patWidth - remainder)/2;
}
}
-
+
const CGFloat dottedLine[2] = { patWidth, patWidth };
CGContextSetLineDash(context, patternOffset, dottedLine, 2);
}
@@ -249,7 +248,7 @@ void GraphicsContext::drawLine(const IntPoint& point1, const IntPoint& point2)
if (patWidth)
CGContextRestoreGState(context);
-
+
if (shouldAntialias())
CGContextSetShouldAntialias(context, true);
}
@@ -264,7 +263,7 @@ void GraphicsContext::drawEllipse(const IntRect& rect)
if (paintingDisabled())
return;
-
+
CGContextRef context = platformContext();
CGContextBeginPath(context);
float r = (float)rect.width() / 2;
@@ -276,25 +275,25 @@ void GraphicsContext::drawEllipse(const IntRect& rect)
void GraphicsContext::strokeArc(const IntRect& rect, int startAngle, int angleSpan)
-{
+{
if (paintingDisabled() || strokeStyle() == NoStroke || strokeThickness() <= 0.0f)
return;
-
+
CGContextRef context = platformContext();
CGContextSaveGState(context);
CGContextBeginPath(context);
CGContextSetShouldAntialias(context, false);
-
+
int x = rect.x();
int y = rect.y();
float w = (float)rect.width();
float h = (float)rect.height();
float scaleFactor = h / w;
float reverseScaleFactor = w / h;
-
+
if (w != h)
scale(FloatSize(1, scaleFactor));
-
+
float hRadius = w / 2;
float vRadius = h / 2;
float fa = startAngle;
@@ -305,21 +304,22 @@ void GraphicsContext::strokeArc(const IntRect& rect, int startAngle, int angleSp
if (w != h)
scale(FloatSize(1, reverseScaleFactor));
-
+
+
float width = strokeThickness();
int patWidth = 0;
-
+
switch (strokeStyle()) {
- case DottedStroke:
- patWidth = (int)(width / 2);
- break;
- case DashedStroke:
- patWidth = 3 * (int)(width / 2);
- break;
- default:
- break;
+ case DottedStroke:
+ patWidth = (int)(width / 2);
+ break;
+ case DashedStroke:
+ patWidth = 3 * (int)(width / 2);
+ break;
+ default:
+ break;
}
-
+
if (patWidth) {
// Example: 80 pixels with a width of 30 pixels.
// Remainder is 20. The maximum pixels of line we could paint
@@ -329,7 +329,7 @@ void GraphicsContext::strokeArc(const IntRect& rect, int startAngle, int angleSp
distance = static_cast<int>((piFloat * hRadius) / 2.0f);
else // We are elliptical and will have to estimate the distance
distance = static_cast<int>((piFloat * sqrtf((hRadius * hRadius + vRadius * vRadius) / 2.0f)) / 2.0f);
-
+
int remainder = distance % patWidth;
int coverage = distance - remainder;
int numSegments = coverage / patWidth;
@@ -339,7 +339,7 @@ void GraphicsContext::strokeArc(const IntRect& rect, int startAngle, int angleSp
if (patWidth == 1)
patternOffset = 1.0f;
else {
- bool evenNumberOfSegments = !(numSegments % 2);
+ bool evenNumberOfSegments = numSegments % 2 == 0;
if (remainder)
evenNumberOfSegments = !evenNumberOfSegments;
if (evenNumberOfSegments) {
@@ -353,13 +353,13 @@ void GraphicsContext::strokeArc(const IntRect& rect, int startAngle, int angleSp
patternOffset = (patWidth - remainder) / 2.0f;
}
}
-
+
const CGFloat dottedLine[2] = { patWidth, patWidth };
CGContextSetLineDash(context, patternOffset, dottedLine, 2);
}
CGContextStrokePath(context);
-
+
CGContextRestoreGState(context);
}
@@ -375,7 +375,7 @@ void GraphicsContext::drawConvexPolygon(size_t npoints, const FloatPoint* points
if (antialiased != shouldAntialias())
CGContextSetShouldAntialias(context, antialiased);
-
+
CGContextBeginPath(context);
CGContextMoveToPoint(context, points[0].x(), points[0].y());
for (size_t i = 1; i < npoints; i++)
@@ -383,7 +383,7 @@ void GraphicsContext::drawConvexPolygon(size_t npoints, const FloatPoint* points
CGContextClosePath(context);
drawPath();
-
+
if (antialiased != shouldAntialias())
CGContextSetShouldAntialias(context, shouldAntialias());
}
@@ -391,7 +391,7 @@ void GraphicsContext::drawConvexPolygon(size_t npoints, const FloatPoint* points
void GraphicsContext::applyStrokePattern()
{
CGContextRef cgContext = platformContext();
-
+
CGPatternRef platformPattern = m_common->state.strokePattern.get()->createPlatformPattern(getCTM());
if (!platformPattern)
return;
@@ -463,7 +463,7 @@ void GraphicsContext::drawPath()
strokePath();
return;
}
-
+
if (state.fillColorSpace == PatternColorSpace)
applyFillPattern();
if (state.strokeColorSpace == PatternColorSpace)
@@ -599,7 +599,7 @@ void GraphicsContext::clipOut(const IntRect& rect)
{
if (paintingDisabled())
return;
-
+
CGRect rects[2] = { CGContextGetClipBoundingBox(platformContext()), rect };
CGContextBeginPath(platformContext());
CGContextAddRects(platformContext(), rects, 2);
@@ -610,7 +610,7 @@ void GraphicsContext::clipOutEllipseInRect(const IntRect& rect)
{
if (paintingDisabled())
return;
-
+
CGContextBeginPath(platformContext());
CGContextAddRect(platformContext(), CGContextGetClipBoundingBox(platformContext()));
CGContextAddEllipseInRect(platformContext(), rect);
@@ -639,13 +639,13 @@ void GraphicsContext::addInnerRoundedRectClip(const IntRect& rect, int thickness
clip(rect);
CGContextRef context = platformContext();
-
+
// Add outer ellipse
CGContextAddEllipseInRect(context, CGRectMake(rect.x(), rect.y(), rect.width(), rect.height()));
// Add inner ellipse.
CGContextAddEllipseInRect(context, CGRectMake(rect.x() + thickness, rect.y() + thickness,
rect.width() - (thickness * 2), rect.height() - (thickness * 2)));
-
+
CGContextEOClip(context);
}
@@ -653,7 +653,7 @@ void GraphicsContext::clipToImageBuffer(const FloatRect& rect, const ImageBuffer
{
if (paintingDisabled())
return;
-
+
CGContextTranslateCTM(platformContext(), rect.x(), rect.y() + rect.height());
CGContextScaleCTM(platformContext(), 1, -1);
CGContextClipToMask(platformContext(), FloatRect(FloatPoint(), rect.size()), imageBuffer->image()->getCGImageRef());
@@ -734,7 +734,7 @@ void GraphicsContext::setPlatformShadow(const IntSize& size, int blur, const Col
CGColorRef colorCG = createCGColor(color);
CGContextSetShadowWithColor(context,
CGSizeMake(width, height),
- blurRadius,
+ blurRadius,
colorCG);
CGColorRelease(colorCG);
}
@@ -799,15 +799,15 @@ void GraphicsContext::setLineCap(LineCap cap)
if (paintingDisabled())
return;
switch (cap) {
- case ButtCap:
- CGContextSetLineCap(platformContext(), kCGLineCapButt);
- break;
- case RoundCap:
- CGContextSetLineCap(platformContext(), kCGLineCapRound);
- break;
- case SquareCap:
- CGContextSetLineCap(platformContext(), kCGLineCapSquare);
- break;
+ case ButtCap:
+ CGContextSetLineCap(platformContext(), kCGLineCapButt);
+ break;
+ case RoundCap:
+ CGContextSetLineCap(platformContext(), kCGLineCapRound);
+ break;
+ case SquareCap:
+ CGContextSetLineCap(platformContext(), kCGLineCapSquare);
+ break;
}
}
@@ -821,15 +821,15 @@ void GraphicsContext::setLineJoin(LineJoin join)
if (paintingDisabled())
return;
switch (join) {
- case MiterJoin:
- CGContextSetLineJoin(platformContext(), kCGLineJoinMiter);
- break;
- case RoundJoin:
- CGContextSetLineJoin(platformContext(), kCGLineJoinRound);
- break;
- case BevelJoin:
- CGContextSetLineJoin(platformContext(), kCGLineJoinBevel);
- break;
+ case MiterJoin:
+ CGContextSetLineJoin(platformContext(), kCGLineJoinMiter);
+ break;
+ case RoundJoin:
+ CGContextSetLineJoin(platformContext(), kCGLineJoinRound);
+ break;
+ case BevelJoin:
+ CGContextSetLineJoin(platformContext(), kCGLineJoinBevel);
+ break;
}
}
@@ -858,7 +858,7 @@ void GraphicsContext::clipOut(const Path& path)
{
if (paintingDisabled())
return;
-
+
CGContextBeginPath(platformContext());
CGContextAddRect(platformContext(), CGContextGetClipBoundingBox(platformContext()));
CGContextAddPath(platformContext(), path.platformPath());
@@ -909,9 +909,9 @@ TransformationMatrix GraphicsContext::getCTM() const
FloatRect GraphicsContext::roundToDevicePixels(const FloatRect& rect)
{
- // It is not enough just to round to pixels in device space. The rotation part of the
+ // It is not enough just to round to pixels in device space. The rotation part of the
// affine transform matrix to device space can mess with this conversion if we have a
- // rotating image like the hands of the world clock widget. We just need the scale, so
+ // rotating image like the hands of the world clock widget. We just need the scale, so
// we get the affine transform matrix and extract the scale.
if (m_data->m_userToDeviceTransformKnownToBeIdentity)
@@ -934,11 +934,11 @@ FloatRect GraphicsContext::roundToDevicePixels(const FloatRect& rect)
deviceOrigin.y = roundf(deviceOrigin.y);
deviceLowerRight.x = roundf(deviceLowerRight.x);
deviceLowerRight.y = roundf(deviceLowerRight.y);
-
+
// Don't let the height or width round to 0 unless either was originally 0
- if (deviceOrigin.y == deviceLowerRight.y && rect.height())
+ if (deviceOrigin.y == deviceLowerRight.y && rect.height() != 0)
deviceLowerRight.y += 1;
- if (deviceOrigin.x == deviceLowerRight.x && rect.width())
+ if (deviceOrigin.x == deviceLowerRight.x && rect.width() != 0)
deviceLowerRight.x += 1;
FloatPoint roundedOrigin = FloatPoint(deviceOrigin.x / deviceScaleX, deviceOrigin.y / deviceScaleY);
@@ -984,13 +984,13 @@ void GraphicsContext::drawLineForText(const IntPoint& point, int width, bool pri
}
}
}
-
+
if (fillColor() != strokeColor())
setCGFillColor(platformContext(), strokeColor());
CGContextFillRect(platformContext(), CGRectMake(x, y, lineLength, thickness));
if (fillColor() != strokeColor())
setCGFillColor(platformContext(), fillColor());
-
+
if (restoreAntialiasMode)
CGContextSetShouldAntialias(platformContext(), true);
}
@@ -999,11 +999,11 @@ void GraphicsContext::setURLForRect(const KURL& link, const IntRect& destRect)
{
if (paintingDisabled())
return;
-
+
CFURLRef urlRef = link.createCFURL();
if (urlRef) {
CGContextRef context = platformContext();
-
+
// Get the bounding box to handle clipping.
CGRect box = CGContextGetClipBoundingBox(context);
@@ -1022,28 +1022,28 @@ void GraphicsContext::setImageInterpolationQuality(InterpolationQuality mode)
{
if (paintingDisabled())
return;
-
+
CGInterpolationQuality quality = kCGInterpolationDefault;
switch (mode) {
- case InterpolationDefault:
- quality = kCGInterpolationDefault;
- break;
- case InterpolationNone:
- quality = kCGInterpolationNone;
- break;
- case InterpolationLow:
- quality = kCGInterpolationLow;
- break;
-
- // Fall through to InterpolationHigh if kCGInterpolationMedium is not available
- case InterpolationMedium:
+ case InterpolationDefault:
+ quality = kCGInterpolationDefault;
+ break;
+ case InterpolationNone:
+ quality = kCGInterpolationNone;
+ break;
+ case InterpolationLow:
+ quality = kCGInterpolationLow;
+ break;
+
+ // Fall through to InterpolationHigh if kCGInterpolationMedium is not available
+ case InterpolationMedium:
#if HAVE(CG_INTERPOLATION_MEDIUM)
- quality = kCGInterpolationMedium;
- break;
+ quality = kCGInterpolationMedium;
+ break;
#endif
- case InterpolationHigh:
- quality = kCGInterpolationHigh;
- break;
+ case InterpolationHigh:
+ quality = kCGInterpolationHigh;
+ break;
}
CGContextSetInterpolationQuality(platformContext(), quality);
}
@@ -1055,18 +1055,18 @@ InterpolationQuality GraphicsContext::imageInterpolationQuality() const
CGInterpolationQuality quality = CGContextGetInterpolationQuality(platformContext());
switch (quality) {
- case kCGInterpolationDefault:
- return InterpolationDefault;
- case kCGInterpolationNone:
- return InterpolationNone;
- case kCGInterpolationLow:
- return InterpolationLow;
+ case kCGInterpolationDefault:
+ return InterpolationDefault;
+ case kCGInterpolationNone:
+ return InterpolationNone;
+ case kCGInterpolationLow:
+ return InterpolationLow;
#if HAVE(CG_INTERPOLATION_MEDIUM)
- case kCGInterpolationMedium:
- return InterpolationMedium;
+ case kCGInterpolationMedium:
+ return InterpolationMedium;
#endif
- case kCGInterpolationHigh:
- return InterpolationHigh;
+ case kCGInterpolationHigh:
+ return InterpolationHigh;
}
return InterpolationDefault;
}
@@ -1079,32 +1079,32 @@ void GraphicsContext::setPlatformTextDrawingMode(int mode)
// Wow, wish CG had used bits here.
CGContextRef context = platformContext();
switch (mode) {
- case cTextInvisible: // Invisible
- CGContextSetTextDrawingMode(context, kCGTextInvisible);
- break;
- case cTextFill: // Fill
- CGContextSetTextDrawingMode(context, kCGTextFill);
- break;
- case cTextStroke: // Stroke
- CGContextSetTextDrawingMode(context, kCGTextStroke);
- break;
- case 3: // Fill | Stroke
- CGContextSetTextDrawingMode(context, kCGTextFillStroke);
- break;
- case cTextClip: // Clip
- CGContextSetTextDrawingMode(context, kCGTextClip);
- break;
- case 5: // Fill | Clip
- CGContextSetTextDrawingMode(context, kCGTextFillClip);
- break;
- case 6: // Stroke | Clip
- CGContextSetTextDrawingMode(context, kCGTextStrokeClip);
- break;
- case 7: // Fill | Stroke | Clip
- CGContextSetTextDrawingMode(context, kCGTextFillStrokeClip);
- break;
- default:
- break;
+ case cTextInvisible: // Invisible
+ CGContextSetTextDrawingMode(context, kCGTextInvisible);
+ break;
+ case cTextFill: // Fill
+ CGContextSetTextDrawingMode(context, kCGTextFill);
+ break;
+ case cTextStroke: // Stroke
+ CGContextSetTextDrawingMode(context, kCGTextStroke);
+ break;
+ case 3: // Fill | Stroke
+ CGContextSetTextDrawingMode(context, kCGTextFillStroke);
+ break;
+ case cTextClip: // Clip
+ CGContextSetTextDrawingMode(context, kCGTextClip);
+ break;
+ case 5: // Fill | Clip
+ CGContextSetTextDrawingMode(context, kCGTextFillClip);
+ break;
+ case 6: // Stroke | Clip
+ CGContextSetTextDrawingMode(context, kCGTextStrokeClip);
+ break;
+ case 7: // Fill | Stroke | Clip
+ CGContextSetTextDrawingMode(context, kCGTextFillStrokeClip);
+ break;
+ default:
+ break;
}
}
@@ -1138,54 +1138,54 @@ void GraphicsContext::setPlatformShouldAntialias(bool enable)
#ifndef BUILDING_ON_TIGER // Tiger's setCompositeOperation() is defined in GraphicsContextMac.mm.
void GraphicsContext::setCompositeOperation(CompositeOperator mode)
-{
+{
if (paintingDisabled())
return;
- CGBlendMode target = kCGBlendModeNormal;
+ CGBlendMode target = kCGBlendModeNormal;
switch (mode) {
- case CompositeClear:
- target = kCGBlendModeClear;
- break;
- case CompositeCopy:
- target = kCGBlendModeCopy;
- break;
- case CompositeSourceOver:
- //kCGBlendModeNormal
- break;
- case CompositeSourceIn:
- target = kCGBlendModeSourceIn;
- break;
- case CompositeSourceOut:
- target = kCGBlendModeSourceOut;
- break;
- case CompositeSourceAtop:
- target = kCGBlendModeSourceAtop;
- break;
- case CompositeDestinationOver:
- target = kCGBlendModeDestinationOver;
- break;
- case CompositeDestinationIn:
- target = kCGBlendModeDestinationIn;
- break;
- case CompositeDestinationOut:
- target = kCGBlendModeDestinationOut;
- break;
- case CompositeDestinationAtop:
- target = kCGBlendModeDestinationAtop;
- break;
- case CompositeXOR:
- target = kCGBlendModeXOR;
- break;
- case CompositePlusDarker:
- target = kCGBlendModePlusDarker;
- break;
- case CompositeHighlight:
- // currently unsupported
- break;
- case CompositePlusLighter:
- target = kCGBlendModePlusLighter;
- break;
+ case CompositeClear:
+ target = kCGBlendModeClear;
+ break;
+ case CompositeCopy:
+ target = kCGBlendModeCopy;
+ break;
+ case CompositeSourceOver:
+ //kCGBlendModeNormal
+ break;
+ case CompositeSourceIn:
+ target = kCGBlendModeSourceIn;
+ break;
+ case CompositeSourceOut:
+ target = kCGBlendModeSourceOut;
+ break;
+ case CompositeSourceAtop:
+ target = kCGBlendModeSourceAtop;
+ break;
+ case CompositeDestinationOver:
+ target = kCGBlendModeDestinationOver;
+ break;
+ case CompositeDestinationIn:
+ target = kCGBlendModeDestinationIn;
+ break;
+ case CompositeDestinationOut:
+ target = kCGBlendModeDestinationOut;
+ break;
+ case CompositeDestinationAtop:
+ target = kCGBlendModeDestinationAtop;
+ break;
+ case CompositeXOR:
+ target = kCGBlendModeXOR;
+ break;
+ case CompositePlusDarker:
+ target = kCGBlendModePlusDarker;
+ break;
+ case CompositeHighlight:
+ // currently unsupported
+ break;
+ case CompositePlusLighter:
+ target = kCGBlendModePlusLighter;
+ break;
}
CGContextSetBlendMode(platformContext(), target);
}
diff --git a/WebCore/platform/graphics/cg/ImageBufferCG.cpp b/WebCore/platform/graphics/cg/ImageBufferCG.cpp
index 97bcba5..6db7e88 100644
--- a/WebCore/platform/graphics/cg/ImageBufferCG.cpp
+++ b/WebCore/platform/graphics/cg/ImageBufferCG.cpp
@@ -65,9 +65,7 @@ ImageBuffer::ImageBuffer(const IntSize& size, ImageColorSpace imageColorSpace, b
bytesPerRow *= 4;
}
- if (!tryFastCalloc(size.height(), bytesPerRow).getValue(m_data.m_data))
- return;
-
+ m_data.m_data = tryFastCalloc(size.height(), bytesPerRow);
ASSERT((reinterpret_cast<size_t>(m_data.m_data) & 2) == 0);
CGColorSpaceRef colorSpace;
@@ -124,13 +122,12 @@ Image* ImageBuffer::image() const
return m_image.get();
}
-template <Multiply multiplied>
-PassRefPtr<ImageData> getImageData(const IntRect& rect, const ImageBufferData& imageData, const IntSize& size)
+PassRefPtr<ImageData> ImageBuffer::getImageData(const IntRect& rect) const
{
PassRefPtr<ImageData> result = ImageData::create(rect.width(), rect.height());
unsigned char* data = result->data()->data()->data();
- if (rect.x() < 0 || rect.y() < 0 || (rect.x() + rect.width()) > size.width() || (rect.y() + rect.height()) > size.height())
+ if (rect.x() < 0 || rect.y() < 0 || (rect.x() + rect.width()) > m_size.width() || (rect.y() + rect.height()) > m_size.height())
memset(data, 0, result->data()->length());
int originx = rect.x();
@@ -140,8 +137,8 @@ PassRefPtr<ImageData> getImageData(const IntRect& rect, const ImageBufferData& i
originx = 0;
}
int endx = rect.x() + rect.width();
- if (endx > size.width())
- endx = size.width();
+ if (endx > m_size.width())
+ endx = m_size.width();
int numColumns = endx - originx;
int originy = rect.y();
@@ -151,21 +148,20 @@ PassRefPtr<ImageData> getImageData(const IntRect& rect, const ImageBufferData& i
originy = 0;
}
int endy = rect.y() + rect.height();
- if (endy > size.height())
- endy = size.height();
+ if (endy > m_size.height())
+ endy = m_size.height();
int numRows = endy - originy;
- unsigned srcBytesPerRow = 4 * size.width();
+ unsigned srcBytesPerRow = 4 * m_size.width();
unsigned destBytesPerRow = 4 * rect.width();
// ::create ensures that all ImageBuffers have valid data, so we don't need to check it here.
- unsigned char* srcRows = reinterpret_cast<unsigned char*>(imageData.m_data) + originy * srcBytesPerRow + originx * 4;
+ unsigned char* srcRows = reinterpret_cast<unsigned char*>(m_data.m_data) + originy * srcBytesPerRow + originx * 4;
unsigned char* destRows = data + desty * destBytesPerRow + destx * 4;
for (int y = 0; y < numRows; ++y) {
for (int x = 0; x < numColumns; x++) {
int basex = x * 4;
- unsigned char alpha = srcRows[basex + 3];
- if (multiplied == Unmultiplied && alpha) {
+ if (unsigned char alpha = srcRows[basex + 3]) {
destRows[basex] = (srcRows[basex] * 255) / alpha;
destRows[basex + 1] = (srcRows[basex + 1] * 255) / alpha;
destRows[basex + 2] = (srcRows[basex + 2] * 255) / alpha;
@@ -179,18 +175,7 @@ PassRefPtr<ImageData> getImageData(const IntRect& rect, const ImageBufferData& i
return result;
}
-PassRefPtr<ImageData> ImageBuffer::getUnmultipliedImageData(const IntRect& rect) const
-{
- return getImageData<Unmultiplied>(rect, m_data, m_size);
-}
-
-PassRefPtr<ImageData> ImageBuffer::getPremultipliedImageData(const IntRect& rect) const
-{
- return getImageData<Premultiplied>(rect, m_data, m_size);
-}
-
-template <Multiply multiplied>
-void putImageData(ImageData*& source, const IntRect& sourceRect, const IntPoint& destPoint, ImageBufferData& imageData, const IntSize& size)
+void ImageBuffer::putImageData(ImageData* source, const IntRect& sourceRect, const IntPoint& destPoint)
{
ASSERT(sourceRect.width() > 0);
ASSERT(sourceRect.height() > 0);
@@ -198,36 +183,36 @@ void putImageData(ImageData*& source, const IntRect& sourceRect, const IntPoint&
int originx = sourceRect.x();
int destx = destPoint.x() + sourceRect.x();
ASSERT(destx >= 0);
- ASSERT(destx < size.width());
+ ASSERT(destx < m_size.width());
ASSERT(originx >= 0);
ASSERT(originx <= sourceRect.right());
int endx = destPoint.x() + sourceRect.right();
- ASSERT(endx <= size.width());
+ ASSERT(endx <= m_size.width());
int numColumns = endx - destx;
int originy = sourceRect.y();
int desty = destPoint.y() + sourceRect.y();
ASSERT(desty >= 0);
- ASSERT(desty < size.height());
+ ASSERT(desty < m_size.height());
ASSERT(originy >= 0);
ASSERT(originy <= sourceRect.bottom());
int endy = destPoint.y() + sourceRect.bottom();
- ASSERT(endy <= size.height());
+ ASSERT(endy <= m_size.height());
int numRows = endy - desty;
unsigned srcBytesPerRow = 4 * source->width();
- unsigned destBytesPerRow = 4 * size.width();
+ unsigned destBytesPerRow = 4 * m_size.width();
unsigned char* srcRows = source->data()->data()->data() + originy * srcBytesPerRow + originx * 4;
- unsigned char* destRows = reinterpret_cast<unsigned char*>(imageData.m_data) + desty * destBytesPerRow + destx * 4;
+ unsigned char* destRows = reinterpret_cast<unsigned char*>(m_data.m_data) + desty * destBytesPerRow + destx * 4;
for (int y = 0; y < numRows; ++y) {
for (int x = 0; x < numColumns; x++) {
int basex = x * 4;
unsigned char alpha = srcRows[basex + 3];
- if (multiplied == Unmultiplied && alpha != 255) {
+ if (alpha != 255) {
destRows[basex] = (srcRows[basex] * alpha + 254) / 255;
destRows[basex + 1] = (srcRows[basex + 1] * alpha + 254) / 255;
destRows[basex + 2] = (srcRows[basex + 2] * alpha + 254) / 255;
@@ -240,16 +225,6 @@ void putImageData(ImageData*& source, const IntRect& sourceRect, const IntPoint&
}
}
-void ImageBuffer::putUnmultipliedImageData(ImageData* source, const IntRect& sourceRect, const IntPoint& destPoint)
-{
- putImageData<Unmultiplied>(source, sourceRect, destPoint, m_data, m_size);
-}
-
-void ImageBuffer::putPremultipliedImageData(ImageData* source, const IntRect& sourceRect, const IntPoint& destPoint)
-{
- putImageData<Premultiplied>(source, sourceRect, destPoint, m_data, m_size);
-}
-
static RetainPtr<CFStringRef> utiFromMIMEType(const String& mimeType)
{
#if PLATFORM(MAC)
diff --git a/WebCore/platform/graphics/filters/FEColorMatrix.cpp b/WebCore/platform/graphics/filters/FEColorMatrix.cpp
index 1e2e552..fb0a194 100644
--- a/WebCore/platform/graphics/filters/FEColorMatrix.cpp
+++ b/WebCore/platform/graphics/filters/FEColorMatrix.cpp
@@ -166,7 +166,7 @@ void FEColorMatrix::apply(Filter* filter)
filterContext->drawImage(m_in->resultImage()->image(), calculateDrawingRect(m_in->subRegion()));
IntRect imageRect(IntPoint(), resultImage()->size());
- PassRefPtr<ImageData> imageData(resultImage()->getUnmultipliedImageData(imageRect));
+ PassRefPtr<ImageData> imageData(resultImage()->getImageData(imageRect));
PassRefPtr<CanvasPixelArray> srcPixelArray(imageData->data());
switch (m_type) {
@@ -186,7 +186,7 @@ void FEColorMatrix::apply(Filter* filter)
break;
}
- resultImage()->putUnmultipliedImageData(imageData.get(), imageRect, IntPoint());
+ resultImage()->putImageData(imageData.get(), imageRect, IntPoint());
}
void FEColorMatrix::dump()
diff --git a/WebCore/platform/graphics/haiku/ColorHaiku.cpp b/WebCore/platform/graphics/haiku/ColorHaiku.cpp
deleted file mode 100644
index a9ac186..0000000
--- a/WebCore/platform/graphics/haiku/ColorHaiku.cpp
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (C) 2007 Ryan Leavengood <leavengood@gmail.com>
- *
- * 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 "config.h"
-#include "Color.h"
-
-#include <InterfaceDefs.h>
-
-
-namespace WebCore {
-
-Color::Color(const rgb_color& color)
- : m_color(makeRGBA(color.red, color.green, color.blue, color.alpha))
- , m_valid(true)
-{
-}
-
-Color::operator rgb_color() const
-{
- return make_color(red(), green(), blue(), alpha());
-}
-
-
-Color focusRingColor()
-{
- return Color(keyboard_navigation_color());
-}
-
-} // namespace WebCore
-
diff --git a/WebCore/platform/graphics/haiku/FloatPointHaiku.cpp b/WebCore/platform/graphics/haiku/FloatPointHaiku.cpp
deleted file mode 100644
index 0f50898..0000000
--- a/WebCore/platform/graphics/haiku/FloatPointHaiku.cpp
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2007 Ryan Leavengood <leavengood@gmail.com>
- *
- * 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 "config.h"
-#include "FloatPoint.h"
-
-#include <Point.h>
-
-
-namespace WebCore {
-
-FloatPoint::FloatPoint(const BPoint& point)
- : m_x(point.x)
- , m_y(point.y)
-{
-}
-
-FloatPoint::operator BPoint() const
-{
- return BPoint(m_x, m_y);
-}
-
-} // namespace WebCore
-
diff --git a/WebCore/platform/graphics/haiku/FloatRectHaiku.cpp b/WebCore/platform/graphics/haiku/FloatRectHaiku.cpp
deleted file mode 100644
index 67af3af..0000000
--- a/WebCore/platform/graphics/haiku/FloatRectHaiku.cpp
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2007 Ryan Leavengood <leavengood@gmail.com>
- *
- * 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 "config.h"
-#include "FloatRect.h"
-
-#include <Rect.h>
-
-
-namespace WebCore {
-
-FloatRect::FloatRect(const BRect& rect)
- : m_location(rect.LeftTop())
- , m_size(rect.Width(), rect.Height())
-{
-}
-
-FloatRect::operator BRect() const
-{
- return BRect(BPoint(x(), y()), BSize(width(), height()));
-}
-
-} // namespace WebCore
-
diff --git a/WebCore/platform/graphics/haiku/GradientHaiku.cpp b/WebCore/platform/graphics/haiku/GradientHaiku.cpp
deleted file mode 100644
index 469a17f..0000000
--- a/WebCore/platform/graphics/haiku/GradientHaiku.cpp
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2008 Kevin Ollivier <kevino@theolliviers.com> All rights reserved.
- * Copyright (C) 2009 Maxime Simon <simon.maxime@theolliviers.com>
- *
- * 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 "config.h"
-#include "Gradient.h"
-
-#include "CSSParser.h"
-#include "NotImplemented.h"
-
-
-namespace WebCore {
-
-void Gradient::platformDestroy()
-{
- notImplemented();
-}
-
-PlatformGradient Gradient::platformGradient()
-{
- notImplemented();
- return 0;
-}
-
-void Gradient::fill(GraphicsContext*, const FloatRect&)
-{
- notImplemented();
-}
-
-} // namespace WebCore
-
diff --git a/WebCore/platform/graphics/haiku/GraphicsContextHaiku.cpp b/WebCore/platform/graphics/haiku/GraphicsContextHaiku.cpp
deleted file mode 100644
index d785ef4..0000000
--- a/WebCore/platform/graphics/haiku/GraphicsContextHaiku.cpp
+++ /dev/null
@@ -1,536 +0,0 @@
-/*
- * Copyright (C) 2007 Ryan Leavengood <leavengood@gmail.com>
- *
- * 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 "config.h"
-#include "GraphicsContext.h"
-
-#include "CString.h"
-#include "Color.h"
-#include "Font.h"
-#include "FontData.h"
-#include "NotImplemented.h"
-#include "Path.h"
-#include "Pen.h"
-#include "TransformationMatrix.h"
-#include <GraphicsDefs.h>
-#include <Region.h>
-#include <View.h>
-#include <Window.h>
-#include <stdio.h>
-
-
-namespace WebCore {
-
-class GraphicsContextPlatformPrivate {
-public:
- GraphicsContextPlatformPrivate(BView* view);
- ~GraphicsContextPlatformPrivate();
-
- BView* m_view;
-};
-
-GraphicsContextPlatformPrivate::GraphicsContextPlatformPrivate(BView* view)
- : m_view(view)
-{
-}
-
-GraphicsContextPlatformPrivate::~GraphicsContextPlatformPrivate()
-{
-}
-
-GraphicsContext::GraphicsContext(PlatformGraphicsContext* context)
- : m_common(createGraphicsContextPrivate())
- , m_data(new GraphicsContextPlatformPrivate(context))
-{
- setPaintingDisabled(!context);
-}
-
-GraphicsContext::~GraphicsContext()
-{
- destroyGraphicsContextPrivate(m_common);
- delete m_data;
-}
-
-PlatformGraphicsContext* GraphicsContext::platformContext() const
-{
- return m_data->m_view;
-}
-
-void GraphicsContext::savePlatformState()
-{
- m_data->m_view->PushState();
-}
-
-void GraphicsContext::restorePlatformState()
-{
- m_data->m_view->PopState();
-}
-
-// Draws a filled rectangle with a stroked border.
-void GraphicsContext::drawRect(const IntRect& rect)
-{
- if (paintingDisabled())
- return;
-
- m_data->m_view->FillRect(rect);
- if (strokeStyle() != NoStroke)
- m_data->m_view->StrokeRect(rect, getHaikuStrokeStyle());
-}
-
-// This is only used to draw borders.
-void GraphicsContext::drawLine(const IntPoint& point1, const IntPoint& point2)
-{
- if (paintingDisabled())
- return;
-
- if (strokeStyle() == NoStroke)
- return;
-
- m_data->m_view->StrokeLine(point1, point2, getHaikuStrokeStyle());
-}
-
-// This method is only used to draw the little circles used in lists.
-void GraphicsContext::drawEllipse(const IntRect& rect)
-{
- if (paintingDisabled())
- return;
-
- m_data->m_view->FillEllipse(rect);
- if (strokeStyle() != NoStroke)
- m_data->m_view->StrokeEllipse(rect, getHaikuStrokeStyle());
-}
-
-void GraphicsContext::strokeArc(const IntRect& rect, int startAngle, int angleSpan)
-{
- if (paintingDisabled())
- return;
-
- m_data->m_view->StrokeArc(rect, startAngle, angleSpan, getHaikuStrokeStyle());
-}
-
-void GraphicsContext::strokePath()
-{
- notImplemented();
-}
-
-void GraphicsContext::drawConvexPolygon(size_t pointsLength, const FloatPoint* points, bool shouldAntialias)
-{
- if (paintingDisabled())
- return;
-
- BPoint bPoints[pointsLength];
- for (size_t i = 0; i < pointsLength; i++)
- bPoints[i] = points[i];
-
- m_data->m_view->FillPolygon(bPoints, pointsLength);
- if (strokeStyle() != NoStroke)
- // Stroke with low color
- m_data->m_view->StrokePolygon(bPoints, pointsLength, true, getHaikuStrokeStyle());
-}
-
-void GraphicsContext::fillRect(const FloatRect& rect, const Color& color)
-{
- if (paintingDisabled())
- return;
-
- rgb_color oldColor = m_data->m_view->HighColor();
- m_data->m_view->SetHighColor(color);
- m_data->m_view->FillRect(rect);
- m_data->m_view->SetHighColor(oldColor);
-}
-
-void GraphicsContext::fillRect(const FloatRect& rect)
-{
- if (paintingDisabled())
- return;
-}
-
-void GraphicsContext::fillRoundedRect(const IntRect& rect, const IntSize& topLeft, const IntSize& topRight, const IntSize& bottomLeft, const IntSize& bottomRight, const Color& color)
-{
- if (paintingDisabled() || !color.alpha())
- return;
-
- notImplemented();
- // FIXME: A simple implementation could just use FillRoundRect if all
- // the sizes are the same, or even if they are not. Otherwise several
- // FillRect and FillArc calls are needed.
-}
-
-void GraphicsContext::fillPath()
-{
- notImplemented();
-}
-
-void GraphicsContext::beginPath()
-{
- notImplemented();
-}
-
-void GraphicsContext::addPath(const Path& path)
-{
- notImplemented();
-}
-
-void GraphicsContext::clip(const FloatRect& rect)
-{
- if (paintingDisabled())
- return;
-
- BRegion region(rect);
- m_data->m_view->ConstrainClippingRegion(&region);
-}
-
-void GraphicsContext::drawFocusRing(const Color& color)
-{
- if (paintingDisabled())
- return;
-
- const Vector<IntRect>& rects = focusRingRects();
- unsigned rectCount = rects.size();
-
- // FIXME: maybe we should implement this with BShape?
-
- if (rects.size() > 1) {
- BRegion region;
- for (int i = 0; i < rectCount; ++i)
- region.Include(BRect(rects[i]));
-
- m_data->m_view->SetHighColor(color);
- m_data->m_view->StrokeRect(region.Frame(), B_MIXED_COLORS);
- }
-}
-
-void GraphicsContext::drawLineForText(const IntPoint& origin, int width, bool printing)
-{
- if (paintingDisabled())
- return;
-
- IntPoint endPoint = origin + IntSize(width, 0);
- drawLine(origin, endPoint);
-}
-
-void GraphicsContext::drawLineForMisspellingOrBadGrammar(const IntPoint&, int width, bool grammar)
-{
- if (paintingDisabled())
- return;
-
- notImplemented();
-}
-
-FloatRect GraphicsContext::roundToDevicePixels(const FloatRect& rect)
-{
- notImplemented();
- return rect;
-}
-
-void GraphicsContext::beginTransparencyLayer(float opacity)
-{
- if (paintingDisabled())
- return;
-
- notImplemented();
-}
-
-void GraphicsContext::endTransparencyLayer()
-{
- if (paintingDisabled())
- return;
-
- notImplemented();
-}
-
-void GraphicsContext::clearRect(const FloatRect& rect)
-{
- if (paintingDisabled())
- return;
-
- notImplemented();
-}
-
-void GraphicsContext::strokeRect(const FloatRect& rect, float width)
-{
- if (paintingDisabled())
- return;
-
- float oldSize = m_data->m_view->PenSize();
- m_data->m_view->SetPenSize(width);
- m_data->m_view->StrokeRect(rect, getHaikuStrokeStyle());
- m_data->m_view->SetPenSize(oldSize);
-}
-
-void GraphicsContext::setLineCap(LineCap lineCap)
-{
- if (paintingDisabled())
- return;
-
- cap_mode mode = B_BUTT_CAP;
- switch (lineCap) {
- case RoundCap:
- mode = B_ROUND_CAP;
- break;
- case SquareCap:
- mode = B_SQUARE_CAP;
- break;
- case ButtCap:
- default:
- break;
- }
-
- m_data->m_view->SetLineMode(mode, m_data->m_view->LineJoinMode(), m_data->m_view->LineMiterLimit());
-}
-
-void GraphicsContext::setLineJoin(LineJoin lineJoin)
-{
- if (paintingDisabled())
- return;
-
- join_mode mode = B_MITER_JOIN;
- switch (lineJoin) {
- case RoundJoin:
- mode = B_ROUND_JOIN;
- break;
- case BevelJoin:
- mode = B_BEVEL_JOIN;
- break;
- case MiterJoin:
- default:
- break;
- }
-
- m_data->m_view->SetLineMode(m_data->m_view->LineCapMode(), mode, m_data->m_view->LineMiterLimit());
-}
-
-void GraphicsContext::setMiterLimit(float limit)
-{
- if (paintingDisabled())
- return;
-
- m_data->m_view->SetLineMode(m_data->m_view->LineCapMode(), m_data->m_view->LineJoinMode(), limit);
-}
-
-void GraphicsContext::setAlpha(float opacity)
-{
- if (paintingDisabled())
- return;
-
- notImplemented();
-}
-
-void GraphicsContext::setCompositeOperation(CompositeOperator op)
-{
- if (paintingDisabled())
- return;
-
- drawing_mode mode = B_OP_COPY;
- switch (op) {
- case CompositeClear:
- case CompositeCopy:
- // Use the default above
- break;
- case CompositeSourceOver:
- mode = B_OP_OVER;
- break;
- default:
- printf("GraphicsContext::setCompositeOperation: Unsupported composite operation %s\n",
- compositeOperatorName(op).utf8().data());
- }
- m_data->m_view->SetDrawingMode(mode);
-}
-
-void GraphicsContext::clip(const Path& path)
-{
- if (paintingDisabled())
- return;
-
- m_data->m_view->ConstrainClippingRegion(path.platformPath());
-}
-
-void GraphicsContext::clipOut(const Path& path)
-{
- if (paintingDisabled())
- return;
-
- notImplemented();
-}
-
-void GraphicsContext::clipToImageBuffer(const FloatRect&, const ImageBuffer*)
-{
- notImplemented();
-}
-
-TransformationMatrix GraphicsContext::getCTM() const
-{
- notImplemented();
- return TransformationMatrix();
-}
-
-void GraphicsContext::translate(float x, float y)
-{
- if (paintingDisabled())
- return;
-
- notImplemented();
-}
-
-IntPoint GraphicsContext::origin()
-{
- notImplemented();
- return IntPoint(0, 0);
-}
-
-void GraphicsContext::rotate(float radians)
-{
- if (paintingDisabled())
- return;
-
- notImplemented();
-}
-
-void GraphicsContext::scale(const FloatSize& size)
-{
- if (paintingDisabled())
- return;
-
- notImplemented();
-}
-
-void GraphicsContext::clipOut(const IntRect& rect)
-{
- if (paintingDisabled())
- return;
-
- notImplemented();
-}
-
-void GraphicsContext::clipOutEllipseInRect(const IntRect& rect)
-{
- if (paintingDisabled())
- return;
-
- notImplemented();
-}
-
-void GraphicsContext::addInnerRoundedRectClip(const IntRect& rect, int thickness)
-{
- if (paintingDisabled())
- return;
-
- notImplemented();
-}
-
-void GraphicsContext::concatCTM(const TransformationMatrix& transform)
-{
- if (paintingDisabled())
- return;
-
- notImplemented();
-}
-
-void GraphicsContext::setPlatformShouldAntialias(bool enable)
-{
- if (paintingDisabled())
- return;
-
- notImplemented();
-}
-
-void GraphicsContext::setImageInterpolationQuality(InterpolationQuality)
-{
-}
-
-void GraphicsContext::setURLForRect(const KURL& link, const IntRect& destRect)
-{
- notImplemented();
-}
-
-void GraphicsContext::setPlatformFont(const Font& font)
-{
- m_data->m_view->SetFont(font.primaryFont()->platformData().font());
-}
-
-void GraphicsContext::setPlatformStrokeColor(const Color& color)
-{
- if (paintingDisabled())
- return;
-
- m_data->m_view->SetHighColor(color);
-}
-
-pattern GraphicsContext::getHaikuStrokeStyle()
-{
- switch (strokeStyle()) {
- case SolidStroke:
- return B_SOLID_HIGH;
- break;
- case DottedStroke:
- return B_MIXED_COLORS;
- break;
- case DashedStroke:
- // FIXME: use a better dashed stroke!
- notImplemented();
- return B_MIXED_COLORS;
- break;
- default:
- return B_SOLID_LOW;
- break;
- }
-}
-
-void GraphicsContext::setPlatformStrokeStyle(const StrokeStyle& strokeStyle)
-{
- // FIXME: see getHaikuStrokeStyle.
- notImplemented();
-}
-
-void GraphicsContext::setPlatformStrokeThickness(float thickness)
-{
- if (paintingDisabled())
- return;
-
- m_data->m_view->SetPenSize(thickness);
-}
-
-void GraphicsContext::setPlatformFillColor(const Color& color)
-{
- if (paintingDisabled())
- return;
-
- m_data->m_view->SetHighColor(color);
-}
-
-void GraphicsContext::clearPlatformShadow()
-{
- notImplemented();
-}
-
-void GraphicsContext::setPlatformShadow(IntSize const&, int, Color const&)
-{
- notImplemented();
-}
-
-} // namespace WebCore
-
diff --git a/WebCore/platform/graphics/haiku/IntPointHaiku.cpp b/WebCore/platform/graphics/haiku/IntPointHaiku.cpp
deleted file mode 100644
index 327e503..0000000
--- a/WebCore/platform/graphics/haiku/IntPointHaiku.cpp
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2007 Ryan Leavengood <leavengood@gmail.com>
- *
- * 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 "config.h"
-#include "IntPoint.h"
-
-#include <Point.h>
-
-
-namespace WebCore {
-
-IntPoint::IntPoint(const BPoint& point)
- : m_x(static_cast<int>(point.x))
- , m_y(static_cast<int>(point.y))
-{
-}
-
-IntPoint::operator BPoint() const
-{
- return BPoint(m_x, m_y);
-}
-
-} // namespace WebCore
-
diff --git a/WebCore/platform/graphics/haiku/IntRectHaiku.cpp b/WebCore/platform/graphics/haiku/IntRectHaiku.cpp
deleted file mode 100644
index 74a0b9d..0000000
--- a/WebCore/platform/graphics/haiku/IntRectHaiku.cpp
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2007 Ryan Leavengood <leavengood@gmail.com>
- *
- * 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 "config.h"
-#include "IntRect.h"
-
-#include <Rect.h>
-
-
-namespace WebCore {
-
-IntRect::IntRect(const BRect& rect)
- : m_location(rect.LeftTop())
- , m_size(rect.IntegerWidth(), rect.IntegerHeight())
-{
-}
-
-IntRect::operator BRect() const
-{
- return BRect(BPoint(x(), y()), BSize(width(), height()));
-}
-
-} // namespace WebCore
-
diff --git a/WebCore/platform/graphics/haiku/IntSizeHaiku.cpp b/WebCore/platform/graphics/haiku/IntSizeHaiku.cpp
deleted file mode 100644
index 08c3a9d..0000000
--- a/WebCore/platform/graphics/haiku/IntSizeHaiku.cpp
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2007 Ryan Leavengood <leavengood@gmail.com>
- *
- * 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 "config.h"
-#include "IntSize.h"
-
-#include <Size.h>
-
-
-namespace WebCore {
-
-IntSize::IntSize(const BSize& size)
- : m_width(size.IntegerWidth())
- , m_height(size.IntegerHeight())
-{
-}
-
-IntSize::operator BSize() const
-{
- return BSize(width(), height());
-}
-
-} // namespace WebCore
-
diff --git a/WebCore/platform/graphics/haiku/PathHaiku.cpp b/WebCore/platform/graphics/haiku/PathHaiku.cpp
deleted file mode 100644
index d0da025..0000000
--- a/WebCore/platform/graphics/haiku/PathHaiku.cpp
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * Copyright (C) 2007 Ryan Leavengood <leavengood@gmail.com>
- *
- * 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 "config.h"
-#include "Path.h"
-
-#include "FloatRect.h"
-#include "NotImplemented.h"
-#include "PlatformString.h"
-#include <Region.h>
-
-
-namespace WebCore {
-
-Path::Path()
- : m_path(new BRegion())
-{
-}
-
-Path::~Path()
-{
- delete m_path;
-}
-
-Path::Path(const Path& other)
- : m_path(new BRegion(*other.platformPath()))
-{
-}
-
-Path& Path::operator=(const Path& other)
-{
- if (&other != this)
- m_path = other.platformPath();
-
- return *this;
-}
-
-bool Path::hasCurrentPoint() const
-{
- return !isEmpty();
-}
-
-bool Path::contains(const FloatPoint& point, WindRule rule) const
-{
- return m_path->Contains(point);
-}
-
-void Path::translate(const FloatSize& size)
-{
- notImplemented();
-}
-
-FloatRect Path::boundingRect() const
-{
- return m_path->Frame();
-}
-
-void Path::moveTo(const FloatPoint& point)
-{
- // FIXME: Use OffsetBy?
- notImplemented();
-}
-
-void Path::addLineTo(const FloatPoint& p)
-{
- notImplemented();
-}
-
-void Path::addQuadCurveTo(const FloatPoint& cp, const FloatPoint& p)
-{
- notImplemented();
-}
-
-void Path::addBezierCurveTo(const FloatPoint& cp1, const FloatPoint& cp2, const FloatPoint& p)
-{
- notImplemented();
-}
-
-void Path::addArcTo(const FloatPoint& p1, const FloatPoint& p2, float radius)
-{
- notImplemented();
-}
-
-void Path::closeSubpath()
-{
- notImplemented();
-}
-
-void Path::addArc(const FloatPoint& p, float r, float sar, float ear, bool anticlockwise)
-{
- notImplemented();
-}
-
-void Path::addRect(const FloatRect& r)
-{
- m_path->Include(r);
-}
-
-void Path::addEllipse(const FloatRect& r)
-{
- notImplemented();
-}
-
-void Path::clear()
-{
- m_path->MakeEmpty();
-}
-
-bool Path::isEmpty() const
-{
- return !m_path->Frame().IsValid();
-}
-
-String Path::debugString() const
-{
- notImplemented();
- return String();
-}
-
-void Path::apply(void* info, PathApplierFunction function) const
-{
- notImplemented();
-}
-
-void Path::transform(const TransformationMatrix& transform)
-{
- notImplemented();
-}
-
-FloatRect Path::strokeBoundingRect(StrokeStyleApplier* applier)
-{
- notImplemented();
- return FloatRect();
-}
-
-} // namespace WebCore
-
diff --git a/WebCore/platform/graphics/mac/FontMacATSUI.mm b/WebCore/platform/graphics/mac/FontMacATSUI.mm
index 35c40bf..051abb7 100644
--- a/WebCore/platform/graphics/mac/FontMacATSUI.mm
+++ b/WebCore/platform/graphics/mac/FontMacATSUI.mm
@@ -504,8 +504,8 @@ FloatRect Font::selectionRectForComplexText(const TextRun& run, const IntPoint&
firstGlyphBounds = zeroTrapezoid;
}
- float beforeWidth = min(FixedToFloat(firstGlyphBounds.lowerLeft.x), FixedToFloat(firstGlyphBounds.upperLeft.x));
- float afterWidth = max(FixedToFloat(firstGlyphBounds.lowerRight.x), FixedToFloat(firstGlyphBounds.upperRight.x));
+ float beforeWidth = MIN(FixedToFloat(firstGlyphBounds.lowerLeft.x), FixedToFloat(firstGlyphBounds.upperLeft.x));
+ float afterWidth = MAX(FixedToFloat(firstGlyphBounds.lowerRight.x), FixedToFloat(firstGlyphBounds.upperRight.x));
FloatRect rect(point.x() + floorf(beforeWidth), point.y(), roundf(afterWidth) - floorf(beforeWidth), h);
@@ -591,8 +591,8 @@ float Font::floatWidthForComplexText(const TextRun& run, HashSet<const SimpleFon
if (actualNumBounds != 1)
LOG_ERROR("unexpected result from ATSUGetGlyphBounds(): actualNumBounds(%d) != 1", actualNumBounds);
- return max(FixedToFloat(firstGlyphBounds.upperRight.x), FixedToFloat(firstGlyphBounds.lowerRight.x)) -
- min(FixedToFloat(firstGlyphBounds.upperLeft.x), FixedToFloat(firstGlyphBounds.lowerLeft.x));
+ return MAX(FixedToFloat(firstGlyphBounds.upperRight.x), FixedToFloat(firstGlyphBounds.lowerRight.x)) -
+ MIN(FixedToFloat(firstGlyphBounds.upperLeft.x), FixedToFloat(firstGlyphBounds.lowerLeft.x));
}
int Font::offsetForPositionForComplexText(const TextRun& run, int x, bool /*includePartialGlyphs*/) const
diff --git a/WebCore/platform/graphics/mac/GraphicsLayerCA.h b/WebCore/platform/graphics/mac/GraphicsLayerCA.h
index d1bdb7e..ebdc6ac 100644
--- a/WebCore/platform/graphics/mac/GraphicsLayerCA.h
+++ b/WebCore/platform/graphics/mac/GraphicsLayerCA.h
@@ -62,8 +62,6 @@ public:
virtual void removeFromParent();
- virtual void setMaskLayer(GraphicsLayer*);
-
virtual void setPosition(const FloatPoint&);
virtual void setAnchorPoint(const FloatPoint3D&);
virtual void setSize(const FloatSize&);
@@ -174,7 +172,6 @@ private:
void updateContentsVideo();
void updateContentsRect();
void updateGeometryOrientation();
- void updateMaskLayer();
void updateLayerAnimations();
@@ -203,8 +200,7 @@ private:
ContentsImageChanged = 1 << 17,
ContentsVideoChanged = 1 << 18,
ContentsRectChanged = 1 << 19,
- GeometryOrientationChanged = 1 << 20,
- MaskLayerChanged = 1 << 21
+ GeometryOrientationChanged = 1 << 20
};
typedef unsigned LayerChangeFlags;
void noteLayerPropertyChanged(LayerChangeFlags flags);
diff --git a/WebCore/platform/graphics/mac/GraphicsLayerCA.mm b/WebCore/platform/graphics/mac/GraphicsLayerCA.mm
index abb310a..e5b9035 100644
--- a/WebCore/platform/graphics/mac/GraphicsLayerCA.mm
+++ b/WebCore/platform/graphics/mac/GraphicsLayerCA.mm
@@ -331,7 +331,7 @@ static NSDictionary* nullActionsDictionary()
return actions;
}
-PassOwnPtr<GraphicsLayer> GraphicsLayer::create(GraphicsLayerClient* client)
+GraphicsLayer* GraphicsLayer::createGraphicsLayer(GraphicsLayerClient* client)
{
return new GraphicsLayerCA(client);
}
@@ -432,15 +432,6 @@ void GraphicsLayerCA::removeFromParent()
GraphicsLayer::removeFromParent();
}
-void GraphicsLayerCA::setMaskLayer(GraphicsLayer* layer)
-{
- if (layer == m_maskLayer)
- return;
-
- GraphicsLayer::setMaskLayer(layer);
- noteLayerPropertyChanged(MaskLayerChanged);
-}
-
void GraphicsLayerCA::setPosition(const FloatPoint& point)
{
if (point == m_position)
@@ -742,9 +733,6 @@ void GraphicsLayerCA::recursiveCommitChanges()
{
commitLayerChanges();
- if (m_maskLayer)
- static_cast<GraphicsLayerCA*>(m_maskLayer)->commitLayerChanges();
-
const Vector<GraphicsLayer*>& childLayers = children();
size_t numChildren = childLayers.size();
for (size_t i = 0; i < numChildren; ++i) {
@@ -824,9 +812,6 @@ void GraphicsLayerCA::commitLayerChanges()
if (m_uncommittedChanges & GeometryOrientationChanged)
updateGeometryOrientation();
- if (m_uncommittedChanges & MaskLayerChanged)
- updateMaskLayer();
-
m_uncommittedChanges = NoChange;
END_BLOCK_OBJC_EXCEPTIONS
}
@@ -836,12 +821,10 @@ void GraphicsLayerCA::updateSublayerList()
NSMutableArray* newSublayers = nil;
if (m_transformLayer) {
- // Add the primary layer first. Even if we have negative z-order children, the primary layer always comes behind.
+ // FIXME: add the primary layer in the correct order with negative z-order children.
newSublayers = [[NSMutableArray alloc] initWithObjects:m_layer.get(), nil];
} else if (m_contentsLayer) {
// FIXME: add the contents layer in the correct order with negative z-order children.
- // This does not cause visible rendering issues because currently contents layers are only used
- // for replaced elements that don't have children.
newSublayers = [[NSMutableArray alloc] initWithObjects:m_contentsLayer.get(), nil];
}
@@ -1111,12 +1094,6 @@ void GraphicsLayerCA::updateGeometryOrientation()
#endif
}
-void GraphicsLayerCA::updateMaskLayer()
-{
- CALayer* maskCALayer = m_maskLayer ? m_maskLayer->platformLayer() : 0;
- [m_layer.get() setMask:maskCALayer];
-}
-
void GraphicsLayerCA::updateLayerAnimations()
{
if (m_transitionPropertiesToRemove.size()) {
diff --git a/WebCore/platform/graphics/mac/SimpleFontDataMac.mm b/WebCore/platform/graphics/mac/SimpleFontDataMac.mm
index acb97a7..cdde7cf 100644
--- a/WebCore/platform/graphics/mac/SimpleFontDataMac.mm
+++ b/WebCore/platform/graphics/mac/SimpleFontDataMac.mm
@@ -50,8 +50,6 @@
- (BOOL)_isFakeFixedPitch;
@end
-using namespace std;
-
namespace WebCore {
const float smallCapsFontSizeMultiplier = 0.7f;
@@ -271,7 +269,7 @@ void SimpleFontData::platformInit()
// and web pages that foolishly use this metric for width will be laid out
// poorly if we return an accurate height. Classic case is Times 13 point,
// which has an "x" that is 7x6 pixels.
- m_xHeight = max(NSMaxX(xBox), NSMaxY(xBox));
+ m_xHeight = MAX(NSMaxX(xBox), NSMaxY(xBox));
} else
m_xHeight = [m_platformData.font() xHeight];
}
diff --git a/WebCore/platform/graphics/qt/GraphicsContextQt.cpp b/WebCore/platform/graphics/qt/GraphicsContextQt.cpp
index 5e04b85..e259a4e 100644
--- a/WebCore/platform/graphics/qt/GraphicsContextQt.cpp
+++ b/WebCore/platform/graphics/qt/GraphicsContextQt.cpp
@@ -34,29 +34,29 @@
*/
#include "config.h"
-#include "GraphicsContext.h"
#ifdef Q_WS_WIN
#include <windows.h>
#endif
+#include "TransformationMatrix.h"
#include "Color.h"
#include "FloatConversion.h"
#include "Font.h"
+#include "GraphicsContext.h"
#include "GraphicsContextPrivate.h"
#include "ImageBuffer.h"
-#include "NotImplemented.h"
#include "Path.h"
#include "Pattern.h"
#include "Pen.h"
-#include "TransformationMatrix.h"
+#include "NotImplemented.h"
#include <QBrush>
#include <QDebug>
#include <QGradient>
+#include <QPainter>
#include <QPaintDevice>
#include <QPaintEngine>
-#include <QPainter>
#include <QPainterPath>
#include <QPixmap>
#include <QPolygonF>
@@ -72,35 +72,35 @@ namespace WebCore {
static inline QPainter::CompositionMode toQtCompositionMode(CompositeOperator op)
{
switch (op) {
- case CompositeClear:
- return QPainter::CompositionMode_Clear;
- case CompositeCopy:
- return QPainter::CompositionMode_Source;
- case CompositeSourceOver:
- return QPainter::CompositionMode_SourceOver;
- case CompositeSourceIn:
- return QPainter::CompositionMode_SourceIn;
- case CompositeSourceOut:
- return QPainter::CompositionMode_SourceOut;
- case CompositeSourceAtop:
- return QPainter::CompositionMode_SourceAtop;
- case CompositeDestinationOver:
- return QPainter::CompositionMode_DestinationOver;
- case CompositeDestinationIn:
- return QPainter::CompositionMode_DestinationIn;
- case CompositeDestinationOut:
- return QPainter::CompositionMode_DestinationOut;
- case CompositeDestinationAtop:
- return QPainter::CompositionMode_DestinationAtop;
- case CompositeXOR:
- return QPainter::CompositionMode_Xor;
- case CompositePlusDarker:
- // there is no exact match, but this is the closest
- return QPainter::CompositionMode_Darken;
- case CompositeHighlight:
- return QPainter::CompositionMode_SourceOver;
- case CompositePlusLighter:
- return QPainter::CompositionMode_Plus;
+ case CompositeClear:
+ return QPainter::CompositionMode_Clear;
+ case CompositeCopy:
+ return QPainter::CompositionMode_Source;
+ case CompositeSourceOver:
+ return QPainter::CompositionMode_SourceOver;
+ case CompositeSourceIn:
+ return QPainter::CompositionMode_SourceIn;
+ case CompositeSourceOut:
+ return QPainter::CompositionMode_SourceOut;
+ case CompositeSourceAtop:
+ return QPainter::CompositionMode_SourceAtop;
+ case CompositeDestinationOver:
+ return QPainter::CompositionMode_DestinationOver;
+ case CompositeDestinationIn:
+ return QPainter::CompositionMode_DestinationIn;
+ case CompositeDestinationOut:
+ return QPainter::CompositionMode_DestinationOut;
+ case CompositeDestinationAtop:
+ return QPainter::CompositionMode_DestinationAtop;
+ case CompositeXOR:
+ return QPainter::CompositionMode_Xor;
+ case CompositePlusDarker:
+ // there is no exact match, but this is the closest
+ return QPainter::CompositionMode_Darken;
+ case CompositeHighlight:
+ return QPainter::CompositionMode_SourceOver;
+ case CompositePlusLighter:
+ return QPainter::CompositionMode_Plus;
}
return QPainter::CompositionMode_SourceOver;
@@ -109,12 +109,12 @@ static inline QPainter::CompositionMode toQtCompositionMode(CompositeOperator op
static inline Qt::PenCapStyle toQtLineCap(LineCap lc)
{
switch (lc) {
- case ButtCap:
- return Qt::FlatCap;
- case RoundCap:
- return Qt::RoundCap;
- case SquareCap:
- return Qt::SquareCap;
+ case ButtCap:
+ return Qt::FlatCap;
+ case RoundCap:
+ return Qt::RoundCap;
+ case SquareCap:
+ return Qt::SquareCap;
}
return Qt::FlatCap;
@@ -123,12 +123,12 @@ static inline Qt::PenCapStyle toQtLineCap(LineCap lc)
static inline Qt::PenJoinStyle toQtLineJoin(LineJoin lj)
{
switch (lj) {
- case MiterJoin:
- return Qt::SvgMiterJoin;
- case RoundJoin:
- return Qt::RoundJoin;
- case BevelJoin:
- return Qt::BevelJoin;
+ case MiterJoin:
+ return Qt::SvgMiterJoin;
+ case RoundJoin:
+ return Qt::RoundJoin;
+ case BevelJoin:
+ return Qt::BevelJoin;
}
return Qt::MiterJoin;
@@ -210,8 +210,8 @@ public:
return redirect;
return painter;
- }
- return &layers.top()->painter;
+ } else
+ return &layers.top()->painter;
}
bool antiAliasingForRectsAndLines;
@@ -411,25 +411,46 @@ void GraphicsContext::drawRect(const IntRect& rect)
if (paintingDisabled())
return;
- QPainter* p = m_data->p();
+ QPainter *p = m_data->p();
const bool antiAlias = p->testRenderHint(QPainter::Antialiasing);
p->setRenderHint(QPainter::Antialiasing, m_data->antiAliasingForRectsAndLines);
- IntSize shadowSize;
- int shadowBlur;
- Color shadowColor;
- if (textDrawingMode() == cTextFill && getShadow(shadowSize, shadowBlur, shadowColor)) {
- IntRect shadowRect = rect;
- shadowRect.move(shadowSize.width(), shadowSize.height());
- shadowRect.inflate(p->pen().widthF());
- p->fillRect(shadowRect, QColor(shadowColor));
- }
-
p->drawRect(rect);
p->setRenderHint(QPainter::Antialiasing, antiAlias);
}
+// FIXME: Now that this is refactored, it should be shared by all contexts.
+static void adjustLineToPixelBoundaries(FloatPoint& p1, FloatPoint& p2, float strokeWidth,
+ const StrokeStyle& penStyle)
+{
+ // For odd widths, we add in 0.5 to the appropriate x/y so that the float arithmetic
+ // works out. For example, with a border width of 3, KHTML will pass us (y1+y2)/2, e.g.,
+ // (50+53)/2 = 103/2 = 51 when we want 51.5. It is always true that an even width gave
+ // us a perfect position, but an odd width gave us a position that is off by exactly 0.5.
+ if (penStyle == DottedStroke || penStyle == DashedStroke) {
+ if (p1.x() == p2.x()) {
+ p1.setY(p1.y() + strokeWidth);
+ p2.setY(p2.y() - strokeWidth);
+ } else {
+ p1.setX(p1.x() + strokeWidth);
+ p2.setX(p2.x() - strokeWidth);
+ }
+ }
+
+ if (((int) strokeWidth) % 2) {
+ if (p1.x() == p2.x()) {
+ // We're a vertical line. Adjust our x.
+ p1.setX(p1.x() + 0.5);
+ p2.setX(p2.x() + 0.5);
+ } else {
+ // We're a horizontal line. Adjust our y.
+ p1.setY(p1.y() + 0.5);
+ p2.setY(p2.y() + 0.5);
+ }
+ }
+}
+
// This is only used to draw borders.
void GraphicsContext::drawLine(const IntPoint& point1, const IntPoint& point2)
{
@@ -447,7 +468,7 @@ void GraphicsContext::drawLine(const IntPoint& point1, const IntPoint& point2)
FloatPoint p2 = point2;
bool isVerticalLine = (p1.x() == p2.x());
- QPainter* p = m_data->p();
+ QPainter *p = m_data->p();
const bool antiAlias = p->testRenderHint(QPainter::Antialiasing);
p->setRenderHint(QPainter::Antialiasing, m_data->antiAliasingForRectsAndLines);
adjustLineToPixelBoundaries(p1, p2, width, style);
@@ -465,15 +486,15 @@ void GraphicsContext::drawLine(const IntPoint& point1, const IntPoint& point2)
int patWidth = 0;
switch (style) {
- case NoStroke:
- case SolidStroke:
- break;
- case DottedStroke:
- patWidth = static_cast<int>(width);
- break;
- case DashedStroke:
- patWidth = 3 * static_cast<int>(width);
- break;
+ case NoStroke:
+ case SolidStroke:
+ break;
+ case DottedStroke:
+ patWidth = (int)width;
+ break;
+ case DashedStroke:
+ patWidth = 3 * (int)width;
+ break;
}
if (patWidth) {
@@ -502,7 +523,7 @@ void GraphicsContext::drawLine(const IntPoint& point1, const IntPoint& point2)
if (patWidth == 1)
patternOffset = 1.0f;
else {
- bool evenNumberOfSegments = !(numSegments % 2);
+ bool evenNumberOfSegments = numSegments % 2 == 0;
if (remainder)
evenNumberOfSegments = !evenNumberOfSegments;
if (evenNumberOfSegments) {
@@ -550,7 +571,7 @@ void GraphicsContext::strokeArc(const IntRect& rect, int startAngle, int angleSp
if (paintingDisabled() || strokeStyle() == NoStroke || strokeThickness() <= 0.0f || !strokeColor().alpha())
return;
- QPainter* p = m_data->p();
+ QPainter *p = m_data->p();
const bool antiAlias = p->testRenderHint(QPainter::Antialiasing);
p->setRenderHint(QPainter::Antialiasing, true);
@@ -572,7 +593,7 @@ void GraphicsContext::drawConvexPolygon(size_t npoints, const FloatPoint* points
for (size_t i = 0; i < npoints; i++)
polygon[i] = points[i];
- QPainter* p = m_data->p();
+ QPainter *p = m_data->p();
p->save();
p->setRenderHint(QPainter::Antialiasing, shouldAntialias);
p->drawConvexPolygon(polygon);
@@ -584,7 +605,7 @@ QPen GraphicsContext::pen()
if (paintingDisabled())
return QPen();
- QPainter* p = m_data->p();
+ QPainter *p = m_data->p();
return p->pen();
}
@@ -593,7 +614,7 @@ void GraphicsContext::fillPath()
if (paintingDisabled())
return;
- QPainter* p = m_data->p();
+ QPainter *p = m_data->p();
QPainterPath path = m_data->currentPath;
path.setFillRule(toQtFillRule(fillRule()));
@@ -621,7 +642,7 @@ void GraphicsContext::strokePath()
if (paintingDisabled())
return;
- QPainter* p = m_data->p();
+ QPainter *p = m_data->p();
QPen pen = p->pen();
QPainterPath path = m_data->currentPath;
path.setFillRule(toQtFillRule(fillRule()));
@@ -655,16 +676,7 @@ void GraphicsContext::fillRect(const FloatRect& rect)
if (paintingDisabled())
return;
- QPainter* p = m_data->p();
-
- IntSize shadowSize;
- int shadowBlur;
- Color shadowColor;
- if (getShadow(shadowSize, shadowBlur, shadowColor)) {
- FloatRect shadowRect = rect;
- shadowRect.move(shadowSize.width(), shadowSize.height());
- p->fillRect(shadowRect, QColor(shadowColor));
- }
+ QPainter *p = m_data->p();
switch (m_common->state.fillColorSpace) {
case SolidColorSpace:
@@ -691,17 +703,7 @@ void GraphicsContext::fillRect(const FloatRect& rect, const Color& c)
return;
m_data->solidColor.setColor(QColor(c));
- IntSize shadowSize;
- int shadowBlur;
- Color shadowColor;
- QPainter* p = m_data->p();
- if (textDrawingMode() == cTextFill && getShadow(shadowSize, shadowBlur, shadowColor)) {
- FloatRect shadowRect = rect;
- shadowRect.move(shadowSize.width(), shadowSize.height());
- shadowRect.inflate(p->pen().widthF());
- p->fillRect(shadowRect, QColor(shadowColor));
- }
- p->fillRect(rect, m_data->solidColor);
+ m_data->p()->fillRect(rect, m_data->solidColor);
}
void GraphicsContext::fillRoundedRect(const IntRect& rect, const IntSize& topLeft, const IntSize& topRight, const IntSize& bottomLeft, const IntSize& bottomRight, const Color& color)
@@ -748,7 +750,7 @@ void GraphicsContext::clipPath(WindRule clipRule)
if (paintingDisabled())
return;
- QPainter* p = m_data->p();
+ QPainter *p = m_data->p();
QPainterPath newPath = m_data->currentPath;
newPath.setFillRule(clipRule == RULE_EVENODD ? Qt::OddEvenFill : Qt::WindingFill);
p->setClipPath(newPath);
@@ -767,10 +769,10 @@ void GraphicsContext::drawFocusRing(const Color& color)
const Vector<IntRect>& rects = focusRingRects();
unsigned rectCount = rects.size();
- if (!rects.size())
+ if (rects.size() == 0)
return;
- QPainter* p = m_data->p();
+ QPainter *p = m_data->p();
const bool antiAlias = p->testRenderHint(QPainter::Antialiasing);
p->setRenderHint(QPainter::Antialiasing, m_data->antiAliasingForRectsAndLines);
@@ -827,16 +829,10 @@ FloatRect GraphicsContext::roundToDevicePixels(const FloatRect& frect)
return FloatRect(QRectF(result));
}
-void GraphicsContext::setPlatformShadow(const IntSize& size, int blur, const Color &color)
+void GraphicsContext::setPlatformShadow(const IntSize& pos, int blur, const Color &color)
{
// Qt doesn't support shadows natively, they are drawn manually in the draw*
// functions
-
- if (m_common->state.shadowsIgnoreTransforms) {
- // Meaning that this graphics context is associated with a CanvasRenderingContext
- // We flip the height since CG and HTML5 Canvas have opposite Y axis
- m_common->state.shadowSize = IntSize(size.width(), -size.height());
- }
}
void GraphicsContext::clearPlatformShadow()
@@ -852,8 +848,8 @@ void GraphicsContext::beginTransparencyLayer(float opacity)
int x, y, w, h;
x = y = 0;
- QPainter* p = m_data->p();
- const QPaintDevice* device = p->device();
+ QPainter *p = m_data->p();
+ const QPaintDevice *device = p->device();
w = device->width();
h = device->height();
@@ -875,10 +871,10 @@ void GraphicsContext::endTransparencyLayer()
if (paintingDisabled())
return;
- TransparencyLayer* layer = m_data->layers.pop();
+ TransparencyLayer *layer = m_data->layers.pop();
layer->painter.end();
- QPainter* p = m_data->p();
+ QPainter *p = m_data->p();
p->save();
p->resetTransform();
p->setOpacity(layer->opacity);
@@ -893,7 +889,7 @@ void GraphicsContext::clearRect(const FloatRect& rect)
if (paintingDisabled())
return;
- QPainter* p = m_data->p();
+ QPainter *p = m_data->p();
QPainter::CompositionMode currentCompositionMode = p->compositionMode();
if (p->paintEngine()->hasFeature(QPaintEngine::PorterDuff))
p->setCompositionMode(QPainter::CompositionMode_Source);
@@ -920,7 +916,7 @@ void GraphicsContext::setLineCap(LineCap lc)
if (paintingDisabled())
return;
- QPainter* p = m_data->p();
+ QPainter *p = m_data->p();
QPen nPen = p->pen();
nPen.setCapStyle(toQtLineCap(lc));
p->setPen(nPen);
@@ -952,7 +948,7 @@ void GraphicsContext::setLineJoin(LineJoin lj)
if (paintingDisabled())
return;
- QPainter* p = m_data->p();
+ QPainter *p = m_data->p();
QPen nPen = p->pen();
nPen.setJoinStyle(toQtLineJoin(lj));
p->setPen(nPen);
@@ -963,7 +959,7 @@ void GraphicsContext::setMiterLimit(float limit)
if (paintingDisabled())
return;
- QPainter* p = m_data->p();
+ QPainter *p = m_data->p();
QPen nPen = p->pen();
nPen.setMiterLimit(limit);
p->setPen(nPen);
@@ -973,7 +969,7 @@ void GraphicsContext::setAlpha(float opacity)
{
if (paintingDisabled())
return;
- QPainter* p = m_data->p();
+ QPainter *p = m_data->p();
p->setOpacity(opacity);
}
@@ -999,7 +995,7 @@ void GraphicsContext::clipOut(const Path& path)
if (paintingDisabled())
return;
- QPainter* p = m_data->p();
+ QPainter *p = m_data->p();
QRectF clipBounds = p->clipPath().boundingRect();
QPainterPath clippedOut = *path.platformPath();
QPainterPath newClip;
@@ -1065,7 +1061,7 @@ void GraphicsContext::clipOut(const IntRect& rect)
if (paintingDisabled())
return;
- QPainter* p = m_data->p();
+ QPainter *p = m_data->p();
QRectF clipBounds = p->clipPath().boundingRect();
QPainterPath newClip;
newClip.setFillRule(Qt::OddEvenFill);
@@ -1080,7 +1076,7 @@ void GraphicsContext::clipOutEllipseInRect(const IntRect& rect)
if (paintingDisabled())
return;
- QPainter* p = m_data->p();
+ QPainter *p = m_data->p();
QRectF clipBounds = p->clipPath().boundingRect();
QPainterPath newClip;
newClip.setFillRule(Qt::OddEvenFill);
@@ -1113,7 +1109,7 @@ void GraphicsContext::addInnerRoundedRectClip(const IntRect& rect,
path.setFillRule(Qt::OddEvenFill);
- QPainter* p = m_data->p();
+ QPainter *p = m_data->p();
const bool antiAlias = p->testRenderHint(QPainter::Antialiasing);
p->setRenderHint(QPainter::Antialiasing, true);
@@ -1147,7 +1143,7 @@ void GraphicsContext::setPlatformStrokeColor(const Color& color)
{
if (paintingDisabled())
return;
- QPainter* p = m_data->p();
+ QPainter *p = m_data->p();
QPen newPen(p->pen());
newPen.setColor(color);
p->setPen(newPen);
@@ -1157,7 +1153,7 @@ void GraphicsContext::setPlatformStrokeStyle(const StrokeStyle& strokeStyle)
{
if (paintingDisabled())
return;
- QPainter* p = m_data->p();
+ QPainter *p = m_data->p();
QPen newPen(p->pen());
newPen.setStyle(toQPenStyle(strokeStyle));
p->setPen(newPen);
@@ -1167,7 +1163,7 @@ void GraphicsContext::setPlatformStrokeThickness(float thickness)
{
if (paintingDisabled())
return;
- QPainter* p = m_data->p();
+ QPainter *p = m_data->p();
QPen newPen(p->pen());
newPen.setWidthF(thickness);
p->setPen(newPen);
@@ -1188,6 +1184,7 @@ void GraphicsContext::setPlatformShouldAntialias(bool enable)
}
#ifdef Q_WS_WIN
+#include <windows.h>
HDC GraphicsContext::getWindowsContext(const IntRect& dstRect, bool supportAlphaBlend, bool mayCreateBitmap)
{
diff --git a/WebCore/platform/graphics/qt/ImageBufferQt.cpp b/WebCore/platform/graphics/qt/ImageBufferQt.cpp
index 6637092..22a5a43 100644
--- a/WebCore/platform/graphics/qt/ImageBufferQt.cpp
+++ b/WebCore/platform/graphics/qt/ImageBufferQt.cpp
@@ -125,13 +125,12 @@ void ImageBuffer::platformTransformColorSpace(const Vector<int>& lookUpTable)
m_data.m_painter->begin(&m_data.m_pixmap);
}
-template <Multiply multiplied>
-PassRefPtr<ImageData> getImageData(const IntRect& rect, const ImageBufferData& imageData, const IntSize& size)
+PassRefPtr<ImageData> ImageBuffer::getImageData(const IntRect& rect) const
{
PassRefPtr<ImageData> result = ImageData::create(rect.width(), rect.height());
unsigned char* data = result->data()->data()->data();
- if (rect.x() < 0 || rect.y() < 0 || (rect.x() + rect.width()) > size.width() || (rect.y() + rect.height()) > size.height())
+ if (rect.x() < 0 || rect.y() < 0 || (rect.x() + rect.width()) > m_size.width() || (rect.y() + rect.height()) > m_size.height())
memset(data, 0, result->data()->length());
int originx = rect.x();
@@ -141,8 +140,8 @@ PassRefPtr<ImageData> getImageData(const IntRect& rect, const ImageBufferData& i
originx = 0;
}
int endx = rect.x() + rect.width();
- if (endx > size.width())
- endx = size.width();
+ if (endx > m_size.width())
+ endx = m_size.width();
int numColumns = endx - originx;
int originy = rect.y();
@@ -152,16 +151,11 @@ PassRefPtr<ImageData> getImageData(const IntRect& rect, const ImageBufferData& i
originy = 0;
}
int endy = rect.y() + rect.height();
- if (endy > size.height())
- endy = size.height();
+ if (endy > m_size.height())
+ endy = m_size.height();
int numRows = endy - originy;
- QImage image = imageData.m_pixmap.toImage();
- if (multiplied == Unmultiplied)
- image = image.convertToFormat(QImage::Format_ARGB32);
- else
- image = image.convertToFormat(QImage::Format_ARGB32_Premultiplied);
-
+ QImage image = m_data.m_pixmap.toImage().convertToFormat(QImage::Format_ARGB32);
ASSERT(!image.isNull());
unsigned destBytesPerRow = 4 * rect.width();
@@ -182,18 +176,7 @@ PassRefPtr<ImageData> getImageData(const IntRect& rect, const ImageBufferData& i
return result;
}
-PassRefPtr<ImageData> ImageBuffer::getUnmultipliedImageData(const IntRect& rect) const
-{
- return getImageData<Unmultiplied>(rect, m_data, m_size);
-}
-
-PassRefPtr<ImageData> ImageBuffer::getPremultipliedImageData(const IntRect& rect) const
-{
- return getImageData<Premultiplied>(rect, m_data, m_size);
-}
-
-template <Multiply multiplied>
-void putImageData(ImageData*& source, const IntRect& sourceRect, const IntPoint& destPoint, ImageBufferData& data, const IntSize& size)
+void ImageBuffer::putImageData(ImageData* source, const IntRect& sourceRect, const IntPoint& destPoint)
{
ASSERT(sourceRect.width() > 0);
ASSERT(sourceRect.height() > 0);
@@ -201,37 +184,33 @@ void putImageData(ImageData*& source, const IntRect& sourceRect, const IntPoint&
int originx = sourceRect.x();
int destx = destPoint.x() + sourceRect.x();
ASSERT(destx >= 0);
- ASSERT(destx < size.width());
+ ASSERT(destx < m_size.width());
ASSERT(originx >= 0);
ASSERT(originx <= sourceRect.right());
int endx = destPoint.x() + sourceRect.right();
- ASSERT(endx <= size.width());
+ ASSERT(endx <= m_size.width());
int numColumns = endx - destx;
int originy = sourceRect.y();
int desty = destPoint.y() + sourceRect.y();
ASSERT(desty >= 0);
- ASSERT(desty < size.height());
+ ASSERT(desty < m_size.height());
ASSERT(originy >= 0);
ASSERT(originy <= sourceRect.bottom());
int endy = destPoint.y() + sourceRect.bottom();
- ASSERT(endy <= size.height());
+ ASSERT(endy <= m_size.height());
int numRows = endy - desty;
unsigned srcBytesPerRow = 4 * source->width();
- bool isPainting = data.m_painter->isActive();
+ bool isPainting = m_data.m_painter->isActive();
if (isPainting)
- data.m_painter->end();
+ m_data.m_painter->end();
- QImage image = data.m_pixmap.toImage();
- if (multiplied == Unmultiplied)
- image = image.convertToFormat(QImage::Format_ARGB32);
- else
- image = image.convertToFormat(QImage::Format_ARGB32_Premultiplied);
+ QImage image = m_data.m_pixmap.toImage().convertToFormat(QImage::Format_ARGB32);
unsigned char* srcRows = source->data()->data()->data() + originy * srcBytesPerRow + originx * 4;
for (int y = 0; y < numRows; ++y) {
@@ -244,20 +223,10 @@ void putImageData(ImageData*& source, const IntRect& sourceRect, const IntPoint&
srcRows += srcBytesPerRow;
}
- data.m_pixmap = QPixmap::fromImage(image);
+ m_data.m_pixmap = QPixmap::fromImage(image);
if (isPainting)
- data.m_painter->begin(&data.m_pixmap);
-}
-
-void ImageBuffer::putUnmultipliedImageData(ImageData* source, const IntRect& sourceRect, const IntPoint& destPoint)
-{
- putImageData<Unmultiplied>(source, sourceRect, destPoint, m_data, m_size);
-}
-
-void ImageBuffer::putPremultipliedImageData(ImageData* source, const IntRect& sourceRect, const IntPoint& destPoint)
-{
- putImageData<Premultiplied>(source, sourceRect, destPoint, m_data, m_size);
+ m_data.m_painter->begin(&m_data.m_pixmap);
}
// We get a mimeType here but QImageWriter does not support mimetypes but
diff --git a/WebCore/platform/graphics/skia/ImageBufferSkia.cpp b/WebCore/platform/graphics/skia/ImageBufferSkia.cpp
index c429bcf..7935ff1 100644
--- a/WebCore/platform/graphics/skia/ImageBufferSkia.cpp
+++ b/WebCore/platform/graphics/skia/ImageBufferSkia.cpp
@@ -118,16 +118,16 @@ void ImageBuffer::platformTransformColorSpace(const Vector<int>& lookUpTable)
}
}
-template <Multiply multiplied>
-PassRefPtr<ImageData> getImageData(const IntRect& rect, const SkBitmap& bitmap,
- const IntSize& size)
+PassRefPtr<ImageData> ImageBuffer::getImageData(const IntRect& rect) const
{
+ ASSERT(context());
+
RefPtr<ImageData> result = ImageData::create(rect.width(), rect.height());
unsigned char* data = result->data()->data()->data();
if (rect.x() < 0 || rect.y() < 0 ||
- (rect.x() + rect.width()) > size.width() ||
- (rect.y() + rect.height()) > size.height())
+ (rect.x() + rect.width()) > m_size.width() ||
+ (rect.y() + rect.height()) > m_size.height())
memset(data, 0, result->data()->length());
int originX = rect.x();
@@ -137,8 +137,8 @@ PassRefPtr<ImageData> getImageData(const IntRect& rect, const SkBitmap& bitmap,
originX = 0;
}
int endX = rect.x() + rect.width();
- if (endX > size.width())
- endX = size.width();
+ if (endX > m_size.width())
+ endX = m_size.width();
int numColumns = endX - originX;
int originY = rect.y();
@@ -148,10 +148,11 @@ PassRefPtr<ImageData> getImageData(const IntRect& rect, const SkBitmap& bitmap,
originY = 0;
}
int endY = rect.y() + rect.height();
- if (endY > size.height())
- endY = size.height();
+ if (endY > m_size.height())
+ endY = m_size.height();
int numRows = endY - originY;
+ const SkBitmap& bitmap = *context()->platformContext()->bitmap();
ASSERT(bitmap.config() == SkBitmap::kARGB_8888_Config);
SkAutoLockPixels bitmapLock(bitmap);
@@ -161,7 +162,6 @@ PassRefPtr<ImageData> getImageData(const IntRect& rect, const SkBitmap& bitmap,
for (int y = 0; y < numRows; ++y) {
uint32_t* srcRow = bitmap.getAddr32(originX, originY + y);
for (int x = 0; x < numColumns; ++x) {
- // TODO: Support for premultiplied colors
SkColor color = SkPMColorToColor(srcRow[x]);
unsigned char* destPixel = &destRow[x * 4];
destPixel[0] = SkColorGetR(color);
@@ -175,19 +175,8 @@ PassRefPtr<ImageData> getImageData(const IntRect& rect, const SkBitmap& bitmap,
return result;
}
-PassRefPtr<ImageData> ImageBuffer::getUnmultipliedImageData(const IntRect& rect) const
-{
- return getImageData<Unmultiplied>(rect, *context()->platformContext()->bitmap(), m_size);
-}
-
-PassRefPtr<ImageData> ImageBuffer::getPremultipliedImageData(const IntRect& rect) const
-{
- return getImageData<Premultiplied>(rect, *context()->platformContext()->bitmap(), m_size);
-}
-
-template <Multiply multiplied>
-void putImageData(ImageData*& source, const IntRect& sourceRect, const IntPoint& destPoint,
- const SkBitmap& bitmap, const IntSize& size)
+void ImageBuffer::putImageData(ImageData* source, const IntRect& sourceRect,
+ const IntPoint& destPoint)
{
ASSERT(sourceRect.width() > 0);
ASSERT(sourceRect.height() > 0);
@@ -195,26 +184,27 @@ void putImageData(ImageData*& source, const IntRect& sourceRect, const IntPoint&
int originX = sourceRect.x();
int destX = destPoint.x() + sourceRect.x();
ASSERT(destX >= 0);
- ASSERT(destX < size.width());
+ ASSERT(destX < m_size.width());
ASSERT(originX >= 0);
ASSERT(originX < sourceRect.right());
int endX = destPoint.x() + sourceRect.right();
- ASSERT(endX <= size.width());
+ ASSERT(endX <= m_size.width());
int numColumns = endX - destX;
int originY = sourceRect.y();
int destY = destPoint.y() + sourceRect.y();
ASSERT(destY >= 0);
- ASSERT(destY < size.height());
+ ASSERT(destY < m_size.height());
ASSERT(originY >= 0);
ASSERT(originY < sourceRect.bottom());
int endY = destPoint.y() + sourceRect.bottom();
- ASSERT(endY <= size.height());
+ ASSERT(endY <= m_size.height());
int numRows = endY - destY;
+ const SkBitmap& bitmap = *context()->platformContext()->bitmap();
ASSERT(bitmap.config() == SkBitmap::kARGB_8888_Config);
SkAutoLockPixels bitmapLock(bitmap);
@@ -225,7 +215,6 @@ void putImageData(ImageData*& source, const IntRect& sourceRect, const IntPoint&
for (int y = 0; y < numRows; ++y) {
uint32_t* destRow = bitmap.getAddr32(destX, destY + y);
for (int x = 0; x < numColumns; ++x) {
- // TODO: Support for premultiplied colors
const unsigned char* srcPixel = &srcRow[x * 4];
destRow[x] = SkPreMultiplyARGB(srcPixel[3], srcPixel[0],
srcPixel[1], srcPixel[2]);
@@ -234,16 +223,6 @@ void putImageData(ImageData*& source, const IntRect& sourceRect, const IntPoint&
}
}
-void ImageBuffer::putUnmultipliedImageData(ImageData* source, const IntRect& sourceRect, const IntPoint& destPoint)
-{
- putImageData<Unmultiplied>(source, sourceRect, destPoint, *context()->platformContext()->bitmap(), m_size);
-}
-
-void ImageBuffer::putPremultipliedImageData(ImageData* source, const IntRect& sourceRect, const IntPoint& destPoint)
-{
- putImageData<Premultiplied>(source, sourceRect, destPoint, *context()->platformContext()->bitmap(), m_size);
-}
-
String ImageBuffer::toDataURL(const String&) const
{
// Encode the image into a vector.
diff --git a/WebCore/platform/graphics/skia/ImageSourceSkia.cpp b/WebCore/platform/graphics/skia/ImageSourceSkia.cpp
new file mode 100644
index 0000000..1647b86
--- /dev/null
+++ b/WebCore/platform/graphics/skia/ImageSourceSkia.cpp
@@ -0,0 +1,238 @@
+/*
+ * Copyright (c) 2008, 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
+ * "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 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 "config.h"
+#include "ImageSource.h"
+#include "SharedBuffer.h"
+
+#include "GIFImageDecoder.h"
+#include "ICOImageDecoder.h"
+#include "JPEGImageDecoder.h"
+#include "PNGImageDecoder.h"
+#include "BMPImageDecoder.h"
+#include "XBMImageDecoder.h"
+
+#include "SkBitmap.h"
+
+namespace WebCore {
+
+ImageDecoder* createDecoder(const Vector<char>& data)
+{
+ // We need at least 4 bytes to figure out what kind of image we're dealing with.
+ int length = data.size();
+ if (length < 4)
+ return 0;
+
+ const unsigned char* uContents = (const unsigned char*)data.data();
+ const char* contents = data.data();
+
+ // GIFs begin with GIF8(7 or 9).
+ if (strncmp(contents, "GIF8", 4) == 0)
+ return new GIFImageDecoder();
+
+ // Test for PNG.
+ if (uContents[0]==0x89 &&
+ uContents[1]==0x50 &&
+ uContents[2]==0x4E &&
+ uContents[3]==0x47)
+ return new PNGImageDecoder();
+
+ // JPEG
+ if (uContents[0]==0xFF &&
+ uContents[1]==0xD8 &&
+ uContents[2]==0xFF)
+ return new JPEGImageDecoder();
+
+ // BMP
+ if (strncmp(contents, "BM", 2) == 0)
+ return new BMPImageDecoder();
+
+ // ICOs always begin with a 2-byte 0 followed by a 2-byte 1.
+ // CURs begin with 2-byte 0 followed by 2-byte 2.
+ if (!memcmp(contents, "\000\000\001\000", 4) ||
+ !memcmp(contents, "\000\000\002\000", 4))
+ return new ICOImageDecoder();
+
+ // XBMs require 8 bytes of info.
+ if (length >= 8 && strncmp(contents, "#define ", 8) == 0)
+ return new XBMImageDecoder();
+
+ // Give up. We don't know what the heck this is.
+ return 0;
+}
+
+ImageSource::ImageSource()
+ : m_decoder(0)
+{}
+
+ImageSource::~ImageSource()
+{
+ clear(true);
+}
+
+void ImageSource::clear(bool destroyAll, size_t clearBeforeFrame, SharedBuffer* data, bool allDataReceived)
+{
+ if (!destroyAll) {
+ if (m_decoder)
+ m_decoder->clearFrameBufferCache(clearBeforeFrame);
+ return;
+ }
+
+ delete m_decoder;
+ m_decoder = 0;
+ if (data)
+ setData(data, allDataReceived);
+}
+
+bool ImageSource::initialized() const
+{
+ return m_decoder;
+}
+
+void ImageSource::setData(SharedBuffer* data, bool allDataReceived)
+{
+ // Make the decoder by sniffing the bytes.
+ // This method will examine the data and instantiate an instance of the appropriate decoder plugin.
+ // If insufficient bytes are available to determine the image type, no decoder plugin will be
+ // made.
+ if (!m_decoder)
+ m_decoder = createDecoder(data->buffer());
+
+ // CreateDecoder will return NULL if the decoder could not be created. Plus,
+ // we should not send more data to a decoder which has already decided it
+ // has failed.
+ if (!m_decoder || m_decoder->failed())
+ return;
+ m_decoder->setData(data, allDataReceived);
+}
+
+bool ImageSource::isSizeAvailable()
+{
+ if (!m_decoder)
+ return false;
+
+ return m_decoder->isSizeAvailable();
+}
+
+IntSize ImageSource::size() const
+{
+ if (!m_decoder)
+ return IntSize();
+
+ return m_decoder->size();
+}
+
+IntSize ImageSource::frameSizeAtIndex(size_t index) const
+{
+ if (!m_decoder)
+ return IntSize();
+
+ return m_decoder->frameSizeAtIndex(index);
+}
+
+int ImageSource::repetitionCount()
+{
+ if (!m_decoder)
+ return cAnimationNone;
+
+ return m_decoder->repetitionCount();
+}
+
+size_t ImageSource::frameCount() const
+{
+ if (!m_decoder)
+ return 0;
+ return m_decoder->failed() ? 0 : m_decoder->frameCount();
+}
+
+NativeImagePtr ImageSource::createFrameAtIndex(size_t index)
+{
+ if (!m_decoder)
+ return 0;
+
+ // Note that the buffer can have NULL bytes even when it is marked as
+ // non-empty. It seems "FrameEmpty" is only set before the frame has been
+ // initialized. If it is decoded and it happens to be empty, it will be
+ // marked as "FrameComplete" but will still have NULL bytes.
+ RGBA32Buffer* buffer = m_decoder->frameBufferAtIndex(index);
+ if (!buffer || buffer->status() == RGBA32Buffer::FrameEmpty)
+ return 0;
+
+ // Copy the bitmap. The pixel data is refcounted internally by SkBitmap, so
+ // this doesn't cost much.
+ return buffer->asNewNativeImage();
+}
+
+bool ImageSource::frameIsCompleteAtIndex(size_t index)
+{
+ if (!m_decoder)
+ return false;
+
+ RGBA32Buffer* buffer = m_decoder->frameBufferAtIndex(index);
+ return buffer && buffer->status() == RGBA32Buffer::FrameComplete;
+}
+
+float ImageSource::frameDurationAtIndex(size_t index)
+{
+ if (!m_decoder)
+ return 0;
+
+ RGBA32Buffer* buffer = m_decoder->frameBufferAtIndex(index);
+ if (!buffer || buffer->status() == RGBA32Buffer::FrameEmpty)
+ return 0;
+
+ // Many annoying ads specify a 0 duration to make an image flash as quickly
+ // as possible. We follow WinIE's behavior and use a duration of 100 ms
+ // for any frames that specify a duration of <= 50 ms. See
+ // <http://bugs.webkit.org/show_bug.cgi?id=14413> or Radar 4051389 for
+ // more.
+ const float duration = buffer->duration() / 1000.0f;
+ return (duration < 0.051f) ? 0.100f : duration;
+}
+
+bool ImageSource::frameHasAlphaAtIndex(size_t index)
+{
+ if (!m_decoder || !m_decoder->supportsAlpha())
+ return false;
+
+ RGBA32Buffer* buffer = m_decoder->frameBufferAtIndex(index);
+ if (!buffer || buffer->status() == RGBA32Buffer::FrameEmpty)
+ return false;
+
+ return buffer->hasAlpha();
+}
+
+String ImageSource::filenameExtension() const
+{
+ return m_decoder ? m_decoder->filenameExtension() : String();
+}
+
+}
diff --git a/WebCore/platform/graphics/skia/PlatformContextSkia.cpp b/WebCore/platform/graphics/skia/PlatformContextSkia.cpp
index bf6bae2..e0a292c 100644
--- a/WebCore/platform/graphics/skia/PlatformContextSkia.cpp
+++ b/WebCore/platform/graphics/skia/PlatformContextSkia.cpp
@@ -295,7 +295,7 @@ void PlatformContextSkia::drawRect(SkRect rect)
void PlatformContextSkia::setupPaintCommon(SkPaint* paint) const
{
-#ifdef SK_DEBUG
+#ifdef SK_DEBUGx
{
SkPaint defaultPaint;
SkASSERT(*paint == defaultPaint);
diff --git a/WebCore/platform/graphics/wince/ColorWince.cpp b/WebCore/platform/graphics/wince/ColorWince.cpp
deleted file mode 100644
index 820b9d2..0000000
--- a/WebCore/platform/graphics/wince/ColorWince.cpp
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2007-2008 Torch Mobile, Inc.
- *
- * 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 "config.h"
-#include "Color.h"
-
-#include "NotImplemented.h"
-
-namespace WebCore {
-
-Color focusRingColor()
-{
- return Color(0, 0, 0);
-}
-
-void setFocusRingColorChangeFunction(void (*)())
-{
- notImplemented();
-}
-
-} // namespace WebCore
diff --git a/WebCore/platform/graphics/wince/GradientWince.cpp b/WebCore/platform/graphics/wince/GradientWince.cpp
deleted file mode 100644
index 49fa970..0000000
--- a/WebCore/platform/graphics/wince/GradientWince.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2009 Torch Mobile, Inc. All rights reserved.
- *
- * 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 "config.h"
-#include "Gradient.h"
-
-#include "GraphicsContext.h"
-
-namespace WebCore {
-
-void Gradient::platformDestroy()
-{
-}
-
-static inline bool compareStops(const Gradient::ColorStop& a, const Gradient::ColorStop& b)
-{
- return a.stop < b.stop;
-}
-
-const Vector<Gradient::ColorStop>& Gradient::getStops() const
-{
- if (!m_stopsSorted) {
- if (m_stops.size())
- std::stable_sort(m_stops.begin(), m_stops.end(), compareStops);
- m_stopsSorted = true;
- }
- return m_stops;
-}
-
-void Gradient::fill(GraphicsContext* c, const FloatRect& r)
-{
- c->fillRect(r, this);
-}
-
-}
diff --git a/WebCore/platform/graphics/wince/MediaPlayerPrivateWince.h b/WebCore/platform/graphics/wince/MediaPlayerPrivateWince.h
deleted file mode 100644
index ff38ada..0000000
--- a/WebCore/platform/graphics/wince/MediaPlayerPrivateWince.h
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright (C) 2007, 2008, 2009 Apple Inc. All rights reserved.
- * Copyright (C) 2009 Torch Mobile 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 MediaPlayerPrivateWince_h
-#define MediaPlayerPrivateWince_h
-
-#if ENABLE(VIDEO)
-
-#include "MediaPlayerPrivate.h"
-#include "Timer.h"
-#include <wtf/OwnPtr.h>
-
-namespace WebCore {
-
- class GraphicsContext;
- class IntSize;
- class IntRect;
- class String;
-
- class MediaPlayerPrivate : public MediaPlayerPrivateInterface {
- public:
- static void registerMediaEngine(MediaEngineRegistrar);
-
- ~MediaPlayerPrivate();
-
- IntSize naturalSize() const;
- bool hasVideo() const;
-
- void load(const String& url);
- void cancelLoad();
-
- void play();
- void pause();
-
- bool paused() const;
- bool seeking() const;
-
- float duration() const;
- float currentTime() const;
- void seek(float time);
- void setEndTime(float);
-
- void setRate(float);
- void setVolume(float);
-
- int dataRate() const;
-
- MediaPlayer::NetworkState networkState() const { return m_networkState; }
- MediaPlayer::ReadyState readyState() const { return m_readyState; }
-
- float maxTimeBuffered() const;
- float maxTimeSeekable() const;
- unsigned bytesLoaded() const;
- bool totalBytesKnown() const;
- unsigned totalBytes() const;
-
- void setVisible(bool);
- void setSize(const IntSize&);
-
- void loadStateChanged();
- void didEnd();
-
- void paint(GraphicsContext*, const IntRect&);
-
- private:
- MediaPlayerPrivate(MediaPlayer*);
-
- void updateStates();
- void doSeek();
- void cancelSeek();
- void seekTimerFired(Timer<MediaPlayerPrivate>*);
- float maxTimeLoaded() const;
- void sawUnsupportedTracks();
-#if ENABLE(PLUGIN_PROXY_FOR_VIDEO)
- void setMediaPlayerProxy(WebMediaPlayerProxy*);
- void setPoster(const String& url);
- void deliverNotification(MediaPlayerProxyNotificationType);
-#endif
-
- // engine support
- static MediaPlayerPrivateInterface* create(MediaPlayer*);
- static void getSupportedTypes(HashSet<String>& types);
- static MediaPlayer::SupportsType supportsType(const String& type, const String& codecs);
- static bool isAvailable();
-
- MediaPlayer* m_player;
- float m_seekTo;
- float m_endTime;
- Timer<MediaPlayerPrivate> m_seekTimer;
- MediaPlayer::NetworkState m_networkState;
- MediaPlayer::ReadyState m_readyState;
- unsigned m_enabledTrackCount;
- unsigned m_totalTrackCount;
- bool m_hasUnsupportedTracks;
- bool m_startedPlaying;
- bool m_isStreaming;
-#if ENABLE(PLUGIN_PROXY_FOR_VIDEO)
- WebMediaPlayerProxy* m_proxy;
-#endif
- };
-
-}
-
-#endif
-
-#endif
diff --git a/WebCore/platform/graphics/wince/MediaPlayerProxy.cpp b/WebCore/platform/graphics/wince/MediaPlayerProxy.cpp
deleted file mode 100644
index 9673d18..0000000
--- a/WebCore/platform/graphics/wince/MediaPlayerProxy.cpp
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Copyright (C) 2009 Torch Mobile, Inc. All rights reserved.
- *
- * 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.
- */
-
-#if ENABLE(VIDEO)
-
-#include "config.h"
-#include "MediaPlayerProxy.h"
-
-#include "c_class.h"
-#include "c_instance.h"
-#include "c_runtime.h"
-#include "DocumentLoader.h"
-#include "HTMLPlugInElement.h"
-#include "HTMLVideoElement.h"
-#include "JSDOMBinding.h"
-#include "JSPluginElementFunctions.h"
-#include "MediaPlayer.h"
-#include "Node.h"
-#include "npruntime_impl.h"
-#include "PlatformString.h"
-#include "PluginView.h"
-#include "RenderPartObject.h"
-#include "RenderWidget.h"
-#include "runtime.h"
-#include <runtime/Identifier.h>
-#include "Widget.h"
-
-using namespace JSC;
-
-namespace WebCore {
-
-using namespace Bindings;
-using namespace HTMLNames;
-
-WebMediaPlayerProxy::WebMediaPlayerProxy(MediaPlayer* player)
- : m_mediaPlayer(player)
- , m_init(false)
- , m_hasSentResponseToPlugin(false)
-{
- if (!m_init)
- initEngine();
-}
-
-WebMediaPlayerProxy::~WebMediaPlayerProxy()
-{
- m_instance.release();
-}
-
-ScriptInstance WebMediaPlayerProxy::pluginInstance()
-{
- if (!m_instance) {
- RenderObject* r = element()->renderer();
- if (!r || !r->isWidget())
- return 0;
-
- Frame* frame = element()->document()->frame();
-
- RenderWidget* renderWidget = static_cast<RenderWidget*>(element()->renderer());
- if (renderWidget && renderWidget->widget())
- m_instance = frame->script()->createScriptInstanceForWidget(renderWidget->widget());
- }
-
- return m_instance;
-}
-
-void WebMediaPlayerProxy::load(const String& url)
-{
- if (!m_init)
- initEngine();
- if (m_init)
- invokeMethod("play");
-}
-
-void WebMediaPlayerProxy::initEngine()
-{
- HTMLMediaElement* element = static_cast<HTMLMediaElement*>(m_mediaPlayer->mediaPlayerClient());
- String url = element->initialURL();
-
- if (url.isEmpty())
- return;
-
- Frame* frame = element->document()->frame();
- Vector<String> paramNames;
- Vector<String> paramValues;
- String serviceType;
-
- // add all attributes set on the embed object
- if (NamedNodeMap* attributes = element->attributes()) {
- for (unsigned i = 0; i < attributes->length(); ++i) {
- Attribute* it = attributes->attributeItem(i);
- paramNames.append(it->name().localName().string());
- paramValues.append(it->value().string());
- }
- }
- serviceType = "application/x-mplayer2";
- frame->loader()->requestObject(static_cast<RenderPartObject*>(element->renderer()), url, nullAtom, serviceType, paramNames, paramValues);
- m_init = true;
-
-}
-
-HTMLMediaElement* WebMediaPlayerProxy::element()
-{
- return static_cast<HTMLMediaElement*>(m_mediaPlayer->mediaPlayerClient());
-
-}
-
-void WebMediaPlayerProxy::invokeMethod(const String& methodName)
-{
- Frame* frame = element()->document()->frame();
- RootObject *root = frame->script()->bindingRootObject();
- if (!root)
- return;
- ExecState *exec = root->globalObject()->globalExec();
- Instance* instance = pluginInstance().get();
- if (!instance)
- return;
-
- instance->begin();
- Class *aClass = instance->getClass();
- Identifier iden(exec, methodName);
- MethodList methodList = aClass->methodsNamed(iden, instance);
- ArgList args;
- instance->invokeMethod(exec, methodList , args);
- instance->end();
-}
-
-}
-
-#endif
diff --git a/WebCore/platform/graphics/wince/MediaPlayerProxy.h b/WebCore/platform/graphics/wince/MediaPlayerProxy.h
deleted file mode 100644
index 05f9b21..0000000
--- a/WebCore/platform/graphics/wince/MediaPlayerProxy.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (C) 2009 Torch Mobile, Inc. All rights reserved.
- *
- * 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 MediaPlayerProxy_h
-#define MediaPlayerProxy_h
-
-#if ENABLE(VIDEO)
-
-#include "ScriptInstance.h"
-
-namespace WebCore {
-
- class IntRect;
- class IntSize;
- class String;
- class MediaPlayer;
- class PluginView;
- class HTMLMediaElement;
-
- enum MediaPlayerProxyNotificationType {
- MediaPlayerNotificationPlayPauseButtonPressed,
- Idle,
- Loading,
- Loaded,
- FormatError,
- NetworkError,
- DecodeError
- };
-
- class WebMediaPlayerProxy {
- public:
- WebMediaPlayerProxy(MediaPlayer* player);
- ~WebMediaPlayerProxy();
-
- MediaPlayer* mediaPlayer() {return m_mediaPlayer;}
- void initEngine();
- void load(const String& url);
- HTMLMediaElement* element();
- void invokeMethod(const String& methodName);
- ScriptInstance pluginInstance();
-
- private:
- MediaPlayer* m_mediaPlayer;
- bool m_init;
- WebCore::PluginView* m_pluginView;
- bool m_hasSentResponseToPlugin;
- ScriptInstance m_instance;
- };
-
-}
-#endif // ENABLE(VIDEO)
-
-#endif
diff --git a/WebCore/platform/graphics/wince/PathWince.cpp b/WebCore/platform/graphics/wince/PathWince.cpp
deleted file mode 100644
index 7589ccb..0000000
--- a/WebCore/platform/graphics/wince/PathWince.cpp
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * Copyright (C) 2007-2009 Torch Mobile, Inc.
- *
- * 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 "config.h"
-#include "Path.h"
-
-#include "FloatRect.h"
-#include "NotImplemented.h"
-#include "PlatformPathWince.h"
-#include "PlatformString.h"
-#include "TransformationMatrix.h"
-#include <wtf/OwnPtr.h>
-
-namespace WebCore {
-
-Path::Path()
- : m_path(new PlatformPath())
-{
-}
-
-Path::Path(const Path& other)
- : m_path(new PlatformPath(*other.m_path))
-{
-}
-
-Path::~Path()
-{
- delete m_path;
-}
-
-Path& Path::operator=(const Path& other)
-{
- if (&other != this) {
- delete m_path;
- m_path = new PlatformPath(*other.m_path);
- }
- return *this;
-}
-
-bool Path::contains(const FloatPoint& point, WindRule rule) const
-{
- return m_path->contains(point, rule);
-}
-
-void Path::translate(const FloatSize& size)
-{
- m_path->translate(size);
-}
-
-FloatRect Path::boundingRect() const
-{
- return m_path->boundingRect();
-}
-
-void Path::moveTo(const FloatPoint& point)
-{
- m_path->moveTo(point);
-}
-
-void Path::addLineTo(const FloatPoint& point)
-{
- m_path->addLineTo(point);
-}
-
-void Path::addQuadCurveTo(const FloatPoint& cp, const FloatPoint& p)
-{
- m_path->addQuadCurveTo(cp, p);
-}
-
-void Path::addBezierCurveTo(const FloatPoint& cp1, const FloatPoint& cp2, const FloatPoint& p)
-{
- m_path->addBezierCurveTo(cp1, cp2, p);
-}
-
-void Path::addArcTo(const FloatPoint& p1, const FloatPoint& p2, float radius)
-{
- m_path->addArcTo(p1, p2, radius);
-}
-
-void Path::closeSubpath()
-{
- m_path->closeSubpath();
-}
-
-void Path::addArc(const FloatPoint& p, float r, float sar, float ear, bool anticlockwise)
-{
- m_path->addEllipse(p, r, r, sar, ear, anticlockwise);
-}
-
-void Path::addRect(const FloatRect& r)
-{
- m_path->addRect(r);
-}
-
-void Path::addEllipse(const FloatRect& r)
-{
- m_path->addEllipse(r);
-}
-
-void Path::clear()
-{
- m_path->clear();
-}
-
-bool Path::isEmpty() const
-{
- return m_path->isEmpty();
-}
-
-String Path::debugString() const
-{
- return m_path->debugString();
-}
-
-void Path::apply(void* info, PathApplierFunction function) const
-{
- m_path->apply(info, function);
-}
-
-void Path::transform(const TransformationMatrix& t)
-{
- m_path->transform(t);
-}
-
-FloatRect Path::strokeBoundingRect(StrokeStyleApplier *)
-{
- notImplemented();
- return FloatRect();
-}
-
-bool Path::strokeContains(StrokeStyleApplier*, const FloatPoint&) const
-{
- notImplemented();
- return false;
-}
-
-bool Path::hasCurrentPoint() const
-{
- // Not sure if this is correct. At the meantime, we do what other ports
- // do.
- // See https://bugs.webkit.org/show_bug.cgi?id=27266,
- // https://bugs.webkit.org/show_bug.cgi?id=27187, and
- // http://trac.webkit.org/changeset/45873
- return !isEmpty();
-}
-
-}
diff --git a/WebCore/platform/graphics/wince/PlatformPathWince.cpp b/WebCore/platform/graphics/wince/PlatformPathWince.cpp
deleted file mode 100644
index 66fad50..0000000
--- a/WebCore/platform/graphics/wince/PlatformPathWince.cpp
+++ /dev/null
@@ -1,810 +0,0 @@
-/*
- * Copyright (C) 2007-2009 Torch Mobile, Inc.
- *
- * 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 "config.h"
-#include "PlatformPathWince.h"
-
-#include "FloatRect.h"
-#include "GraphicsContext.h"
-#include "Path.h"
-#include "PlatformString.h"
-#include "TransformationMatrix.h"
-#include "WinceGraphicsExtras.h"
-#include <wtf/MathExtras.h>
-#include <wtf/OwnPtr.h>
-
-#include <windows.h>
-
-namespace WebCore {
-
-// Implemented in GraphicsContextWince.cpp
-void getEllipsePointByAngle(double angle, double a, double b, float& x, float& y);
-
-static void quadCurve(int segments, Vector<PathPoint>& pts, const PathPoint* control)
-{
- const float step = 1.0 / segments;
- register float tA = 0.0;
- register float tB = 1.0;
-
- float c1x = control[0].x();
- float c1y = control[0].y();
- float c2x = control[1].x();
- float c2y = control[1].y();
- float c3x = control[2].x();
- float c3y = control[2].y();
-
- const int offset = pts.size();
- pts.resize(offset + segments);
- PathPoint pp;
- pp.m_x = c1x;
- pp.m_y = c1y;
-
- for (int i = 1; i < segments; ++i) {
- tA += step;
- tB -= step;
-
- const float a = tB * tB;
- const float b = 2.0 * tA * tB;
- const float c = tA * tA;
-
- pp.m_x = c1x * a + c2x * b + c3x * c;
- pp.m_y = c1y * a + c2y * b + c3y * c;
-
- pts[offset + i - 1] = pp;
- }
-
- pp.m_x = c3x;
- pp.m_y = c3y;
- pts[offset + segments - 1] = pp;
-}
-
-static inline void bezier(int segments, Vector<PathPoint>& pts, const PathPoint* control)
-{
- const float step = 1.0 / segments;
- register float tA = 0.0;
- register float tB = 1.0;
-
- float c1x = control[0].x();
- float c1y = control[0].y();
- float c2x = control[1].x();
- float c2y = control[1].y();
- float c3x = control[2].x();
- float c3y = control[2].y();
- float c4x = control[3].x();
- float c4y = control[3].y();
-
- const int offset = pts.size();
- pts.resize(offset + segments);
- PathPoint pp;
- pp.m_x = c1x;
- pp.m_y = c1y;
-
- for (int i = 1; i < segments; ++i) {
- tA += step;
- tB -= step;
- const float tAsq = tA * tA;
- const float tBsq = tB * tB;
-
- const float a = tBsq * tB;
- const float b = 3.0 * tA * tBsq;
- const float c = 3.0 * tB * tAsq;
- const float d = tAsq * tA;
-
- pp.m_x = c1x * a + c2x * b + c3x * c + c4x * d;
- pp.m_y = c1y * a + c2y * b + c3y * c + c4y * d;
-
- pts[offset + i - 1] = pp;
- }
-
- pp.m_x = c4x;
- pp.m_y = c4y;
- pts[offset + segments - 1] = pp;
-}
-
-static bool containsPoint(const FloatRect& r, const FloatPoint& p)
-{
- return p.x() >= r.x() && p.y() >= r.y() && p.x() < r.right() && p.y() < r.bottom();
-}
-
-static void normalizeAngle(float& angle)
-{
- angle = fmod(angle, 2 * piFloat);
- if (angle < 0)
- angle += 2 * piFloat;
- if (angle < 0.00001f)
- angle = 0;
-}
-
-static void transformArcPoint(float& x, float& y, const FloatPoint& c)
-{
- x += c.x();
- y += c.y();
-}
-
-static void inflateRectToContainPoint(FloatRect& r, float x, float y)
-{
- if (r.isEmpty()) {
- r.setX(x);
- r.setY(y);
- r.setSize(FloatSize(1, 1));
- return;
- }
- if (x < r.x()) {
- r.setWidth(r.right() - x);
- r.setX(x);
- } else {
- float w = x - r.x() + 1;
- if (w > r.width())
- r.setWidth(w);
- }
- if (y < r.y()) {
- r.setHeight(r.bottom() - y);
- r.setY(y);
- } else {
- float h = y - r.y() + 1;
- if (h > r.height())
- r.setHeight(h);
- }
-}
-
-// return 0-based value: 0 - first Quadrant ( 0 - 90 degree)
-static inline int quadrant(const PathPoint& point, const PathPoint& origin)
-{
- return point.m_x < origin.m_x ?
- (point.m_y < origin.m_y ? 2 : 1)
- : (point.m_y < origin.m_y ? 3 : 0);
-}
-
-static inline bool isQuadrantOnLeft(int q) { return q == 1 || q == 2; }
-static inline bool isQuadrantOnRight(int q) { return q == 0 || q == 3; }
-static inline bool isQuadrantOnTop(int q) { return q == 2 || q == 3; }
-static inline bool isQuadrantOnBottom(int q) { return q == 0 || q == 1; }
-
-static inline int nextQuadrant(int q) { return q == 3 ? 0 : q + 1; }
-static inline int quadrantDiff(int q1, int q2)
-{
- int d = q1 - q2;
- while (d < 0)
- d += 4;
- return d;
-}
-
-struct PathVector {
- float m_x;
- float m_y;
-
- PathVector() : m_x(0), m_y(0) {}
- PathVector(float x, float y) : m_x(x), m_y(y) {}
- double angle() const { return atan2(m_y, m_x); }
- operator double () const { return angle(); }
- double length() const { return _hypot(m_x, m_y); }
-};
-
-PathVector operator-(const PathPoint& p1, const PathPoint& p2)
-{
- return PathVector(p1.m_x - p2.m_x, p1.m_y - p2.m_y);
-}
-
-static void addArcPoint(PathPolygon& poly, const PathPoint& center, const PathPoint& radius, double angle)
-{
- PathPoint p;
- getEllipsePointByAngle(angle, radius.m_x, radius.m_y, p.m_x, p.m_y);
- transformArcPoint(p.m_x, p.m_y, center);
- if (poly.isEmpty() || poly.last() != p)
- poly.append(p);
-}
-
-static void addArcPoints(PathPolygon& poly, const PlatformPathElement::ArcTo& data)
-{
- const PathPoint& startPoint = poly.last();
- double curAngle = startPoint - data.m_center;
- double endAngle = data.m_end - data.m_center;
- double angleStep = 2. / std::max(data.m_radius.m_x, data.m_radius.m_y);
- if (data.m_clockwise) {
- if (endAngle <= curAngle || startPoint == data.m_end)
- endAngle += 2 * piDouble;
- } else {
- angleStep = -angleStep;
- if (endAngle >= curAngle || startPoint == data.m_end)
- endAngle -= 2 * piDouble;
- }
-
- for (curAngle += angleStep; data.m_clockwise ? curAngle < endAngle : curAngle > endAngle; curAngle += angleStep)
- addArcPoint(poly, data.m_center, data.m_radius, curAngle);
-
- if (poly.isEmpty() || poly.last() != data.m_end)
- poly.append(data.m_end);
-}
-
-static void drawPolygons(HDC dc, const Vector<PathPolygon>& polygons, bool fill, const TransformationMatrix* transformation)
-{
- MemoryAllocationCanFail canFail;
- for (Vector<PathPolygon>::const_iterator i = polygons.begin(); i != polygons.end(); ++i) {
- int npoints = i->size();
- if (!npoints)
- continue;
-
- POINT* winPoints = 0;
- if (fill) {
- if (npoints > 2)
- winPoints = new POINT[npoints + 1];
- } else
- winPoints = new POINT[npoints];
-
- if (winPoints) {
- if (transformation) {
- for (int i2 = 0; i2 < npoints; ++i2) {
- FloatPoint trPoint = transformation->mapPoint(i->at(i2));
- winPoints[i2].x = stableRound(trPoint.x());
- winPoints[i2].y = stableRound(trPoint.y());
- }
- } else {
- for (int i2 = 0; i2 < npoints; ++i2) {
- winPoints[i2].x = stableRound(i->at(i2).x());
- winPoints[i2].y = stableRound(i->at(i2).y());
- }
- }
-
- if (fill && winPoints[npoints - 1] != winPoints[0]) {
- winPoints[npoints].x = winPoints[0].x;
- winPoints[npoints].y = winPoints[0].y;
- ++npoints;
- }
-
- if (fill)
- ::Polygon(dc, winPoints, npoints);
- else
- ::Polyline(dc, winPoints, npoints);
- delete[] winPoints;
- }
- }
-}
-
-
-int PlatformPathElement::numControlPoints() const
-{
- switch (m_type) {
- case PathMoveTo:
- case PathLineTo:
- return 1;
- case PathQuadCurveTo:
- case PathArcTo:
- return 2;
- case PathBezierCurveTo:
- return 3;
- default:
- ASSERT(m_type == PathCloseSubpath);
- return 0;
- }
-}
-
-int PlatformPathElement::numPoints() const
-{
- switch (m_type) {
- case PathMoveTo:
- case PathLineTo:
- case PathArcTo:
- return 1;
- case PathQuadCurveTo:
- return 2;
- case PathBezierCurveTo:
- return 3;
- default:
- ASSERT(m_type == PathCloseSubpath);
- return 0;
- }
-}
-
-void PathPolygon::move(const FloatSize& offset)
-{
- for (Vector<PathPoint>::iterator i = begin(); i < end(); ++i)
- i->move(offset);
-}
-
-void PathPolygon::transform(const TransformationMatrix& t)
-{
- for (Vector<PathPoint>::iterator i = begin(); i < end(); ++i)
- *i = t.mapPoint(*i);
-}
-
-bool PathPolygon::contains(const FloatPoint& point) const
-{
- if (size() < 3)
- return false;
-
- // Test intersections between the polygon and the vertical line: x = point.x()
-
- int intersected = 0;
- const PathPoint* point1 = &last();
- Vector<PathPoint>::const_iterator last = end();
- // wasNegative: -1 means unknown, 0 means false, 1 means true.
- int wasNegative = -1;
- for (Vector<PathPoint>::const_iterator i = begin(); i != last; ++i) {
- const PathPoint& point2 = *i;
- if (point1->x() != point.x()) {
- if (point2.x() == point.x()) {
- // We are getting on the vertical line
- wasNegative = point1->x() < point.x() ? 1 : 0;
- } else if (point2.x() < point.x() != point1->x() < point.x()) {
- float y = (point2.y() - point1->y()) / (point2.x() - point1->x()) * (point.x() - point1->x()) + point1->y();
- if (y >= point.y())
- ++intersected;
- }
- } else {
- // We were on the vertical line
-
- // handle special case
- if (point1->y() == point.y())
- return true;
-
- if (point1->y() > point.y()) {
- if (point2.x() == point.x()) {
- // see if the point is on this segment
- if (point2.y() <= point.y())
- return true;
-
- // We are still on the line
- } else {
- // We are leaving the line now.
- // We have to get back to see which side we come from. If we come from
- // the same side we are leaving, no intersection should be counted
- if (wasNegative < 0) {
- Vector<PathPoint>::const_iterator jLast = i;
- Vector<PathPoint>::const_iterator j = i;
- do {
- if (j == begin())
- j = last;
- else
- --j;
- if (j->x() != point.x()) {
- if (j->x() > point.x())
- wasNegative = 0;
- else
- wasNegative = 1;
- break;
- }
- } while (j != jLast);
-
- if (wasNegative < 0)
- return false;
- }
- if (wasNegative ? point2.x() > point.x() : point2.x() < point.x())
- ++intersected;
- }
- } else if (point2.x() == point.x() && point2.y() >= point.y())
- return true;
- }
- point1 = &point2;
- }
-
- return intersected & 1;
-}
-
-void PlatformPathElement::move(const FloatSize& offset)
-{
- int n = numControlPoints();
- for (int i = 0; i < n; ++i)
- m_data.m_points[i].move(offset);
-}
-
-void PlatformPathElement::transform(const TransformationMatrix& t)
-{
- int n = numControlPoints();
- for (int i = 0; i < n; ++i) {
- FloatPoint p = t.mapPoint(m_data.m_points[i]);
- m_data.m_points[i].set(p.x(), p.y());
- }
-}
-
-void PlatformPathElement::inflateRectToContainMe(FloatRect& r, const FloatPoint& lastPoint) const
-{
- if (m_type == PathArcTo) {
- const ArcTo& data = m_data.m_arcToData;
- PathPoint startPoint;
- startPoint = lastPoint;
- PathPoint endPoint = data.m_end;
- if (!data.m_clockwise)
- std::swap(startPoint, endPoint);
-
- int q0 = quadrant(startPoint, data.m_center);
- int q1 = quadrant(endPoint, data.m_center);
- bool containsExtremes[4] = { false }; // bottom, left, top, right
- static const PathPoint extremeVectors[4] = { { 0, 1 }, { -1, 0 }, { 0, -1 }, { 1, 0 } };
- if (q0 == q1) {
- if (startPoint.m_x == endPoint.m_x || isQuadrantOnBottom(q0) != startPoint.m_x > endPoint.m_x) {
- for (int i = 0; i < 4; ++i)
- containsExtremes[i] = true;
- }
- } else {
- int extreme = q0;
- int diff = quadrantDiff(q1, q0);
- for (int i = 0; i < diff; ++i) {
- containsExtremes[extreme] = true;
- extreme = nextQuadrant(extreme);
- }
- }
-
- inflateRectToContainPoint(r, startPoint.m_x, startPoint.m_y);
- inflateRectToContainPoint(r, endPoint.m_x, endPoint.m_y);
- for (int i = 0; i < 4; ++i) {
- if (containsExtremes[i])
- inflateRectToContainPoint(r, data.m_center.m_x + data.m_radius.m_x * extremeVectors[i].m_x, data.m_center.m_y + data.m_radius.m_y * extremeVectors[i].m_y);
- }
- } else {
- int n = numPoints();
- for (int i = 0; i < n; ++i)
- inflateRectToContainPoint(r, m_data.m_points[i].m_x, m_data.m_points[i].m_y);
- }
-}
-
-PathElementType PlatformPathElement::type() const
-{
- switch (m_type) {
- case PathMoveTo:
- return PathElementMoveToPoint;
- case PathLineTo:
- return PathElementAddLineToPoint;
- case PathArcTo:
- // FIXME: there's no arcTo type for PathElement
- return PathElementAddLineToPoint;
- // return PathElementAddQuadCurveToPoint;
- case PathQuadCurveTo:
- return PathElementAddQuadCurveToPoint;
- case PathBezierCurveTo:
- return PathElementAddCurveToPoint;
- default:
- ASSERT(m_type == PathCloseSubpath);
- return PathElementCloseSubpath;
- }
-}
-
-PlatformPath::PlatformPath()
- : m_penLifted(true)
-{
- m_currentPoint.clear();
-}
-
-void PlatformPath::ensureSubpath()
-{
- if (m_penLifted) {
- m_penLifted = false;
- m_subpaths.append(PathPolygon());
- m_subpaths.last().append(m_currentPoint);
- } else
- ASSERT(!m_subpaths.isEmpty());
-}
-
-void PlatformPath::addToSubpath(const PlatformPathElement& e)
-{
- if (e.platformType() == PlatformPathElement::PathMoveTo) {
- m_penLifted = true;
- m_currentPoint = e.pointAt(0);
- } else if (e.platformType() == PlatformPathElement::PathCloseSubpath) {
- m_penLifted = true;
- if (!m_subpaths.isEmpty()) {
- if (m_currentPoint != m_subpaths.last()[0]) {
- // According to W3C, we have to draw a line from current point to the initial point
- m_subpaths.last().append(m_subpaths.last()[0]);
- m_currentPoint = m_subpaths.last()[0];
- }
- } else
- m_currentPoint.clear();
- } else {
- ensureSubpath();
- switch (e.platformType()) {
- case PlatformPathElement::PathLineTo:
- m_subpaths.last().append(e.pointAt(0));
- break;
- case PlatformPathElement::PathArcTo:
- addArcPoints(m_subpaths.last(), e.arcTo());
- break;
- case PlatformPathElement::PathQuadCurveTo:
- {
- PathPoint control[] = {
- m_currentPoint,
- e.pointAt(0),
- e.pointAt(1),
- };
- // FIXME: magic number?
- quadCurve(50, m_subpaths.last(), control);
- }
- break;
- case PlatformPathElement::PathBezierCurveTo:
- {
- PathPoint control[] = {
- m_currentPoint,
- e.pointAt(0),
- e.pointAt(1),
- e.pointAt(2),
- };
- // FIXME: magic number?
- bezier(100, m_subpaths.last(), control);
- }
- break;
- default:
- ASSERT_NOT_REACHED();
- break;
- }
- m_currentPoint = m_subpaths.last().last();
- }
-}
-
-void PlatformPath::append(const PlatformPathElement& e)
-{
- e.inflateRectToContainMe(m_boundingRect, lastPoint());
- addToSubpath(e);
- m_elements.append(e);
-}
-
-void PlatformPath::append(const PlatformPath& p)
-{
- const PlatformPathElements& e = p.elements();
- for (PlatformPathElements::const_iterator it(e.begin()); it != e.end(); ++it) {
- addToSubpath(*it);
- it->inflateRectToContainMe(m_boundingRect, lastPoint());
- m_elements.append(*it);
- }
-}
-
-void PlatformPath::clear()
-{
- m_elements.clear();
- m_boundingRect = FloatRect();
- m_subpaths.clear();
- m_currentPoint.clear();
- m_penLifted = true;
-}
-
-void PlatformPath::strokePath(HDC dc, const TransformationMatrix* transformation) const
-{
- drawPolygons(dc, m_subpaths, false, transformation);
-}
-
-void PlatformPath::fillPath(HDC dc, const TransformationMatrix* transformation) const
-{
- HGDIOBJ oldPen = SelectObject(dc, GetStockObject(NULL_PEN));
- drawPolygons(dc, m_subpaths, true, transformation);
- SelectObject(dc, oldPen);
-}
-
-void PlatformPath::translate(const FloatSize& size)
-{
- for (PlatformPathElements::iterator it(m_elements.begin()); it != m_elements.end(); ++it)
- it->move(size);
-
- m_boundingRect.move(size);
- for (Vector<PathPolygon>::iterator it = m_subpaths.begin(); it != m_subpaths.end(); ++it)
- it->move(size);
-}
-
-void PlatformPath::transform(const TransformationMatrix& t)
-{
- for (PlatformPathElements::iterator it(m_elements.begin()); it != m_elements.end(); ++it)
- it->transform(t);
-
- m_boundingRect = t.mapRect(m_boundingRect);
- for (Vector<PathPolygon>::iterator it = m_subpaths.begin(); it != m_subpaths.end(); ++it)
- it->transform(t);
-}
-
-bool PlatformPath::contains(const FloatPoint& point, WindRule rule) const
-{
- // optimization: check the bounding rect first
- if (!containsPoint(m_boundingRect, point))
- return false;
-
- for (Vector<PathPolygon>::const_iterator i = m_subpaths.begin(); i != m_subpaths.end(); ++i) {
- if (i->contains(point))
- return true;
- }
-
- return false;
-}
-
-void PlatformPath::moveTo(const FloatPoint& point)
-{
- PlatformPathElement::MoveTo data = { { point.x(), point.y() } };
- PlatformPathElement pe(data);
- append(pe);
-}
-
-void PlatformPath::addLineTo(const FloatPoint& point)
-{
- PlatformPathElement::LineTo data = { { point.x(), point.y() } };
- PlatformPathElement pe(data);
- append(pe);
-}
-
-void PlatformPath::addQuadCurveTo(const FloatPoint& cp, const FloatPoint& p)
-{
- PlatformPathElement::QuadCurveTo data = { { cp.x(), cp.y() }, { p.x(), p.y() } };
- PlatformPathElement pe(data);
- append(pe);
-}
-
-void PlatformPath::addBezierCurveTo(const FloatPoint& cp1, const FloatPoint& cp2, const FloatPoint& p)
-{
- PlatformPathElement::BezierCurveTo data = { { cp1.x(), cp1.y() }, { cp2.x(), cp2.y() }, { p.x(), p.y() } };
- PlatformPathElement pe(data);
- append(pe);
-}
-
-void PlatformPath::addArcTo(const FloatPoint& fp1, const FloatPoint& fp2, float radius)
-{
- const PathPoint& p0 = m_currentPoint;
- PathPoint p1;
- p1 = fp1;
- PathPoint p2;
- p2 = fp2;
- if (!radius || p0 == p1 || p1 == p2) {
- addLineTo(p1);
- return;
- }
-
- PathVector v01 = p0 - p1;
- PathVector v21 = p2 - p1;
-
- // sin(A - B) = sin(A) * cos(B) - sin(B) * cos(A)
- double cross = v01.m_x * v21.m_y - v01.m_y * v21.m_x;
-
- if (fabs(cross) < 1E-10) {
- // on one line
- addLineTo(p1);
- return;
- }
-
- double d01 = v01.length();
- double d21 = v21.length();
- double angle = (piDouble - abs(asin(cross / (d01 * d21)))) * 0.5;
- double span = radius * tan(angle);
- double rate = span / d01;
- PathPoint startPoint;
- startPoint.m_x = p1.m_x + v01.m_x * rate;
- startPoint.m_y = p1.m_y + v01.m_y * rate;
-
- addLineTo(startPoint);
-
- PathPoint endPoint;
- rate = span / d21;
- endPoint.m_x = p1.m_x + v21.m_x * rate;
- endPoint.m_y = p1.m_y + v21.m_y * rate;
-
- PathPoint midPoint;
- midPoint.m_x = (startPoint.m_x + endPoint.m_x) * 0.5;
- midPoint.m_y = (startPoint.m_y + endPoint.m_y) * 0.5;
-
- PathVector vm1 = midPoint - p1;
- double dm1 = vm1.length();
- double d = _hypot(radius, span);
-
- PathPoint centerPoint;
- rate = d / dm1;
- centerPoint.m_x = p1.m_x + vm1.m_x * rate;
- centerPoint.m_y = p1.m_y + vm1.m_y * rate;
-
- PlatformPathElement::ArcTo data = {
- endPoint,
- centerPoint,
- { radius, radius },
- cross < 0
- };
- PlatformPathElement pe(data);
- append(pe);
-}
-
-void PlatformPath::closeSubpath()
-{
- PlatformPathElement pe;
- append(pe);
-}
-
-// add a circular arc centred at p with radius r from start angle sar (radians) to end angle ear
-void PlatformPath::addEllipse(const FloatPoint& p, float a, float b, float sar, float ear, bool anticlockwise)
-{
- float startX, startY, endX, endY;
-
- normalizeAngle(sar);
- normalizeAngle(ear);
-
- getEllipsePointByAngle(sar, a, b, startX, startY);
- getEllipsePointByAngle(ear, a, b, endX, endY);
-
- transformArcPoint(startX, startY, p);
- transformArcPoint(endX, endY, p);
-
- FloatPoint start(startX, startY);
- moveTo(start);
-
- PlatformPathElement::ArcTo data = { { endX, endY }, { p.x(), p.y() }, { a, b }, !anticlockwise };
- PlatformPathElement pe(data);
- append(pe);
-}
-
-
-void PlatformPath::addRect(const FloatRect& r)
-{
- moveTo(r.location());
-
- float right = r.right() - 1;
- float bottom = r.bottom() - 1;
- addLineTo(FloatPoint(right, r.y()));
- addLineTo(FloatPoint(right, bottom));
- addLineTo(FloatPoint(r.x(), bottom));
- addLineTo(r.location());
-}
-
-void PlatformPath::addEllipse(const FloatRect& r)
-{
- FloatSize radius(r.width() * 0.5, r.height() * 0.5);
- addEllipse(r.location() + radius, radius.width(), radius.height(), 0, 0, true);
-}
-
-String PlatformPath::debugString() const
-{
- String ret;
- for (PlatformPathElements::const_iterator i(m_elements.begin()); i != m_elements.end(); ++i) {
- switch (i->platformType()) {
- case PlatformPathElement::PathMoveTo:
- case PlatformPathElement::PathLineTo:
- ret += String::format("M %f %f\n", i->pointAt(0).m_x, i->pointAt(0).m_y);
- break;
- case PlatformPathElement::PathArcTo:
- ret += String::format("A %f %f %f %f %f %f %c\n"
- , i->arcTo().m_end.m_x, i->arcTo().m_end.m_y
- , i->arcTo().m_center.m_x, i->arcTo().m_center.m_y
- , i->arcTo().m_radius.m_x, i->arcTo().m_radius.m_y
- , i->arcTo().m_clockwise? 'Y' : 'N');
- break;
- case PlatformPathElement::PathQuadCurveTo:
- ret += String::format("Q %f %f %f %f\n"
- , i->pointAt(0).m_x, i->pointAt(0).m_y
- , i->pointAt(1).m_x, i->pointAt(1).m_y);
- break;
- case PlatformPathElement::PathBezierCurveTo:
- ret += String::format("B %f %f %f %f %f %f\n"
- , i->pointAt(0).m_x, i->pointAt(0).m_y
- , i->pointAt(1).m_x, i->pointAt(1).m_y
- , i->pointAt(2).m_x, i->pointAt(2).m_y);
- break;
- default:
- ASSERT(i->platformType() == PlatformPathElement::PathCloseSubpath);
- ret += "S\n";
- break;
- }
- }
-
- return ret;
-}
-
-void PlatformPath::apply(void* info, PathApplierFunction function) const
-{
- PathElement pelement;
- FloatPoint points[3];
- pelement.points = points;
-
- for (PlatformPathElements::const_iterator it(m_elements.begin()); it != m_elements.end(); ++it) {
- pelement.type = it->type();
- int n = it->numPoints();
- for (int i = 0; i < n; ++i)
- points[i] = it->pointAt(i);
- function(info, &pelement);
- }
-}
-
-} // namespace Webcore
diff --git a/WebCore/platform/graphics/wince/PlatformPathWince.h b/WebCore/platform/graphics/wince/PlatformPathWince.h
deleted file mode 100644
index fca00a7..0000000
--- a/WebCore/platform/graphics/wince/PlatformPathWince.h
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * Copyright (C) 2007-2009 Torch Mobile, Inc.
- *
- * 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 PlatformPathWince_h
-#define PlatformPathWince_h
-
-namespace WebCore {
-
- class GraphicsContext;
-
- struct PathPoint {
- float m_x;
- float m_y;
- const float& x() const { return m_x; }
- const float& y() const { return m_y; }
- void set(float x, float y)
- {
- m_x = x;
- m_y = y;
- };
- operator FloatPoint() const { return FloatPoint(m_x, m_y); }
- void move(const FloatSize& offset)
- {
- m_x += offset.width();
- m_y += offset.height();
- }
- PathPoint& operator=(const FloatPoint& p)
- {
- m_x = p.x();
- m_y = p.y();
- return *this;
- }
- void clear() { m_x = m_y = 0; }
- };
-
- struct PathPolygon: public Vector<PathPoint> {
- void move(const FloatSize& offset);
- void transform(const TransformationMatrix& t);
- bool contains(const FloatPoint& point) const;
- };
-
- class PlatformPathElement {
- public:
- enum PlaformPathElementType {
- PathMoveTo,
- PathLineTo,
- PathArcTo,
- PathQuadCurveTo,
- PathBezierCurveTo,
- PathCloseSubpath,
- };
-
- struct MoveTo {
- PathPoint m_end;
- };
-
- struct LineTo {
- PathPoint m_end;
- };
-
- struct ArcTo {
- PathPoint m_end;
- PathPoint m_center;
- PathPoint m_radius;
- bool m_clockwise;
- };
-
- struct QuadCurveTo {
- PathPoint m_point0;
- PathPoint m_point1;
- };
-
- struct BezierCurveTo {
- PathPoint m_point0;
- PathPoint m_point1;
- PathPoint m_point2;
- };
-
- PlatformPathElement(): m_type(PathCloseSubpath) { m_data.m_points[0].set(0, 0); }
- PlatformPathElement(const MoveTo& data): m_type(PathMoveTo) { m_data.m_moveToData = data; }
- PlatformPathElement(const LineTo& data): m_type(PathLineTo) { m_data.m_lineToData = data; }
- PlatformPathElement(const ArcTo& data): m_type(PathArcTo) { m_data.m_arcToData = data; }
- PlatformPathElement(const QuadCurveTo& data): m_type(PathQuadCurveTo) { m_data.m_quadCurveToData = data; }
- PlatformPathElement(const BezierCurveTo& data): m_type(PathBezierCurveTo) { m_data.m_bezierCurveToData = data; }
-
- const MoveTo& moveTo() const { return m_data.m_moveToData; }
- const LineTo& lineTo() const { return m_data.m_lineToData; }
- const ArcTo& arcTo() const { return m_data.m_arcToData; }
- const QuadCurveTo& quadCurveTo() const { return m_data.m_quadCurveToData; }
- const BezierCurveTo& bezierCurveTo() const { return m_data.m_bezierCurveToData; }
- const PathPoint& lastPoint() const
- {
- int n = numPoints();
- return n > 1 ? m_data.m_points[n - 1] : m_data.m_points[0];
- }
- const PathPoint& pointAt(int index) const { return m_data.m_points[index]; }
- int numPoints() const;
- int numControlPoints() const;
- void move(const FloatSize& offset);
- void transform(const TransformationMatrix& t);
- PathElementType type() const;
- PlaformPathElementType platformType() const { return m_type; }
- void inflateRectToContainMe(FloatRect& r, const FloatPoint& lastPoint) const;
-
- private:
- PlaformPathElementType m_type;
- union {
- MoveTo m_moveToData;
- LineTo m_lineToData;
- ArcTo m_arcToData;
- QuadCurveTo m_quadCurveToData;
- BezierCurveTo m_bezierCurveToData;
- PathPoint m_points[4];
- } m_data;
- };
-
- typedef Vector<PlatformPathElement> PlatformPathElements;
-
- class PlatformPath {
- public:
- PlatformPath();
- const PlatformPathElements& elements() const { return m_elements; }
- void append(const PlatformPathElement& e);
- void append(const PlatformPath& p);
- void clear();
- bool isEmpty() const { return m_elements.isEmpty(); }
-
- void strokePath(HDC, const TransformationMatrix* tr) const;
- void fillPath(HDC, const TransformationMatrix* tr) const;
- FloatPoint lastPoint() const { return m_elements.isEmpty() ? FloatPoint(0, 0) : m_elements.last().lastPoint(); }
-
- const FloatRect& boundingRect() const { return m_boundingRect; }
- bool contains(const FloatPoint& point, WindRule rule) const;
- void translate(const FloatSize& size);
- void transform(const TransformationMatrix& t);
-
- void moveTo(const FloatPoint&);
- void addLineTo(const FloatPoint&);
- void addQuadCurveTo(const FloatPoint& controlPoint, const FloatPoint& point);
- void addBezierCurveTo(const FloatPoint& controlPoint1, const FloatPoint& controlPoint2, const FloatPoint&);
- void addArcTo(const FloatPoint&, const FloatPoint&, float radius);
- void closeSubpath();
- void addEllipse(const FloatPoint& p, float a, float b, float sar, float ear, bool anticlockwise);
- void addRect(const FloatRect& r);
- void addEllipse(const FloatRect& r);
- String debugString() const;
- void apply(void* info, PathApplierFunction function) const;
-
- private:
- void ensureSubpath();
- void addToSubpath(const PlatformPathElement& e);
-
- PlatformPathElements m_elements;
- FloatRect m_boundingRect;
- Vector<PathPolygon> m_subpaths;
- PathPoint m_currentPoint;
- bool m_penLifted;
- };
-
-}
-
-#endif // PlatformPathWince_h
diff --git a/WebCore/platform/graphics/wince/WinceGraphicsExtras.h b/WebCore/platform/graphics/wince/WinceGraphicsExtras.h
deleted file mode 100644
index 2a6fae1..0000000
--- a/WebCore/platform/graphics/wince/WinceGraphicsExtras.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2007-2009 Torch Mobile, Inc.
- *
- * 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 WinceGraphicsExtras_h
-#define WinceGraphicsExtras_h
-
-// This file is used to contain small utilities used by WINCE graphics code.
-
-namespace WebCore {
- // Always round to same direction. 0.5 is rounded to 1,
- // and -0.5 (0.5 - 1) is rounded to 0 (1 - 1), so that it
- // is consistent when transformation shifts.
- static inline int stableRound(double d)
- {
- if (d > 0)
- return static_cast<int>(d + 0.5);
-
- int i = static_cast<int>(d);
- return i - d > 0.5 ? i - 1 : i;
- }
-}
-
-#endif WinceGraphicsExtras_h
diff --git a/WebCore/platform/graphics/wx/ImageBufferWx.cpp b/WebCore/platform/graphics/wx/ImageBufferWx.cpp
index 49f3f3b..e71dbde 100644
--- a/WebCore/platform/graphics/wx/ImageBufferWx.cpp
+++ b/WebCore/platform/graphics/wx/ImageBufferWx.cpp
@@ -53,24 +53,13 @@ GraphicsContext* ImageBuffer::context() const
return 0;
}
-PassRefPtr<ImageData> ImageBuffer::getUnmultipliedImageData(const IntRect& rect) const
+PassRefPtr<ImageData> ImageBuffer::getImageData(const IntRect&) const
{
notImplemented();
return 0;
}
-PassRefPtr<ImageData> ImageBuffer::getPremultipliedImageData(const IntRect& rect) const
-{
- notImplemented();
- return 0;
-}
-
-void ImageBuffer::putUnmultipliedImageData(ImageData* source, const IntRect& sourceRect, const IntPoint& destPoint)
-{
- notImplemented();
-}
-
-void ImageBuffer::putPremultipliedImageData(ImageData* source, const IntRect& sourceRect, const IntPoint& destPoint)
+void ImageBuffer::putImageData(ImageData*, const IntRect&, const IntPoint&)
{
notImplemented();
}
diff --git a/WebCore/platform/graphics/wx/ImageSourceWx.cpp b/WebCore/platform/graphics/wx/ImageSourceWx.cpp
new file mode 100644
index 0000000..06c165d
--- /dev/null
+++ b/WebCore/platform/graphics/wx/ImageSourceWx.cpp
@@ -0,0 +1,226 @@
+/*
+ * Copyright (C) 2006, 2007 Apple Computer, Kevin Ollivier. 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 "config.h"
+#include "ImageSource.h"
+
+#include "BMPImageDecoder.h"
+#include "GIFImageDecoder.h"
+#include "ICOImageDecoder.h"
+#include "JPEGImageDecoder.h"
+#include "NotImplemented.h"
+#include "PNGImageDecoder.h"
+#include "SharedBuffer.h"
+#include "XBMImageDecoder.h"
+
+#include <wx/defs.h>
+#include <wx/bitmap.h>
+#if USE(WXGC)
+#include <wx/graphics.h>
+#endif
+#include <wx/image.h>
+#include <wx/rawbmp.h>
+
+namespace WebCore {
+
+ImageDecoder* createDecoder(const SharedBuffer& data)
+{
+ // We need at least 4 bytes to figure out what kind of image we're dealing with.
+ int length = data.size();
+ if (length < 4)
+ return 0;
+
+ const unsigned char* uContents = (const unsigned char*)data.data();
+ const char* contents = data.data();
+
+ // GIFs begin with GIF8(7 or 9).
+ if (strncmp(contents, "GIF8", 4) == 0)
+ return new GIFImageDecoder();
+
+ // Test for PNG.
+ if (uContents[0]==0x89 &&
+ uContents[1]==0x50 &&
+ uContents[2]==0x4E &&
+ uContents[3]==0x47)
+ return new PNGImageDecoder();
+
+ // JPEG
+ if (uContents[0]==0xFF &&
+ uContents[1]==0xD8 &&
+ uContents[2]==0xFF)
+ return new JPEGImageDecoder();
+
+ // BMP
+ if (strncmp(contents, "BM", 2) == 0)
+ return new BMPImageDecoder();
+
+ // ICOs always begin with a 2-byte 0 followed by a 2-byte 1.
+ // CURs begin with 2-byte 0 followed by 2-byte 2.
+ if (!memcmp(contents, "\000\000\001\000", 4) ||
+ !memcmp(contents, "\000\000\002\000", 4))
+ return new ICOImageDecoder();
+
+ // XBMs require 8 bytes of info.
+ if (length >= 8 && strncmp(contents, "#define ", 8) == 0)
+ return new XBMImageDecoder();
+
+ // Give up. We don't know what the heck this is.
+ return 0;
+}
+
+ImageSource::ImageSource()
+ : m_decoder(0)
+{}
+
+ImageSource::~ImageSource()
+{
+ clear(true);
+}
+
+bool ImageSource::initialized() const
+{
+ return m_decoder;
+}
+
+void ImageSource::setData(SharedBuffer* data, bool allDataReceived)
+{
+ // Make the decoder by sniffing the bytes.
+ // This method will examine the data and instantiate an instance of the appropriate decoder plugin.
+ // If insufficient bytes are available to determine the image type, no decoder plugin will be
+ // made.
+ if (m_decoder)
+ delete m_decoder;
+ m_decoder = createDecoder(*data);
+ if (!m_decoder)
+ return;
+ m_decoder->setData(data, allDataReceived);
+}
+
+bool ImageSource::isSizeAvailable()
+{
+ if (!m_decoder)
+ return false;
+
+ return m_decoder->isSizeAvailable();
+}
+
+IntSize ImageSource::size() const
+{
+ if (!m_decoder)
+ return IntSize();
+
+ return m_decoder->size();
+}
+
+IntSize ImageSource::frameSizeAtIndex(size_t index) const
+{
+ if (!m_decoder)
+ return IntSize();
+
+ return m_decoder->frameSizeAtIndex(index);
+}
+
+int ImageSource::repetitionCount()
+{
+ if (!m_decoder)
+ return cAnimationNone;
+
+ return m_decoder->repetitionCount();
+}
+
+String ImageSource::filenameExtension() const
+{
+ notImplemented();
+ return String();
+}
+
+size_t ImageSource::frameCount() const
+{
+ return m_decoder ? m_decoder->frameCount() : 0;
+}
+
+bool ImageSource::frameIsCompleteAtIndex(size_t index)
+{
+ // FIXME: should we be testing the RGBA32Buffer's status as well?
+ return (m_decoder && m_decoder->frameBufferAtIndex(index) != 0);
+}
+
+void ImageSource::clear(bool destroyAll, size_t clearBeforeFrame, SharedBuffer* data, bool allDataReceived)
+{
+ if (!destroyAll) {
+ if (m_decoder)
+ m_decoder->clearFrameBufferCache(clearBeforeFrame);
+ return;
+ }
+
+ delete m_decoder;
+ m_decoder = 0;
+ if (data)
+ setData(data, allDataReceived);
+}
+
+NativeImagePtr ImageSource::createFrameAtIndex(size_t index)
+{
+ if (!m_decoder)
+ return 0;
+
+ RGBA32Buffer* buffer = m_decoder->frameBufferAtIndex(index);
+ if (!buffer || buffer->status() == RGBA32Buffer::FrameEmpty)
+ return 0;
+
+ return buffer->asNewNativeImage();
+}
+
+float ImageSource::frameDurationAtIndex(size_t index)
+{
+ if (!m_decoder)
+ return 0;
+
+ RGBA32Buffer* buffer = m_decoder->frameBufferAtIndex(index);
+ if (!buffer || buffer->status() == RGBA32Buffer::FrameEmpty)
+ return 0;
+
+ float duration = buffer->duration() / 1000.0f;
+
+ // Follow other ports (and WinIE's) behavior to slow annoying ads that
+ // specify a 0 duration.
+ if (duration < 0.051f)
+ return 0.100f;
+ return duration;
+}
+
+bool ImageSource::frameHasAlphaAtIndex(size_t index)
+{
+ if (!m_decoder || !m_decoder->supportsAlpha())
+ return false;
+
+ RGBA32Buffer* buffer = m_decoder->frameBufferAtIndex(index);
+ if (!buffer || buffer->status() == RGBA32Buffer::FrameEmpty)
+ return false;
+
+ return buffer->hasAlpha();
+}
+
+}
diff --git a/WebCore/platform/gtk/ClipboardGtk.cpp b/WebCore/platform/gtk/ClipboardGtk.cpp
index 450966e..8cbf590 100644
--- a/WebCore/platform/gtk/ClipboardGtk.cpp
+++ b/WebCore/platform/gtk/ClipboardGtk.cpp
@@ -17,18 +17,11 @@
#include "config.h"
#include "ClipboardGtk.h"
-#include "CachedImage.h"
-#include "CString.h"
-#include "Editor.h"
-#include "Element.h"
#include "FileList.h"
-#include "Frame.h"
-#include "markup.h"
#include "NotImplemented.h"
-#include "RenderImage.h"
#include "StringHash.h"
-#include <gtk/gtk.h>
+#include "Editor.h"
namespace WebCore {
@@ -40,10 +33,12 @@ PassRefPtr<Clipboard> Editor::newGeneralClipboard(ClipboardAccessPolicy policy)
ClipboardGtk::ClipboardGtk(ClipboardAccessPolicy policy, bool forDragging)
: Clipboard(policy, forDragging)
{
+ notImplemented();
}
ClipboardGtk::~ClipboardGtk()
{
+ notImplemented();
}
void ClipboardGtk::clearData(const String&)
@@ -115,65 +110,19 @@ DragImageRef ClipboardGtk::createDragImage(IntPoint&) const
return 0;
}
-static CachedImage* getCachedImage(Element* element)
+void ClipboardGtk::declareAndWriteDragImage(Element*, const KURL&, const String&, Frame*)
{
- // Attempt to pull CachedImage from element
- ASSERT(element);
- RenderObject* renderer = element->renderer();
- if (!renderer || !renderer->isImage())
- return 0;
-
- RenderImage* image = static_cast<RenderImage*>(renderer);
- if (image->cachedImage() && !image->cachedImage()->errorOccurred())
- return image->cachedImage();
-
- return 0;
-}
-
-void ClipboardGtk::declareAndWriteDragImage(Element* element, const KURL& url, const String& label, Frame*)
-{
- CachedImage* cachedImage = getCachedImage(element);
- if (!cachedImage || !cachedImage->isLoaded())
- return;
-
- GdkPixbuf* pixbuf = cachedImage->image()->getGdkPixbuf();
- if (!pixbuf)
- return;
-
- GtkClipboard* imageClipboard = gtk_clipboard_get(gdk_atom_intern_static_string("WebKitClipboardImage"));
- gtk_clipboard_clear(imageClipboard);
-
- gtk_clipboard_set_image(imageClipboard, pixbuf);
- g_object_unref(pixbuf);
-
- writeURL(url, label, 0);
+ notImplemented();
}
-void ClipboardGtk::writeURL(const KURL& url, const String& label, Frame*)
+void ClipboardGtk::writeURL(const KURL&, const String&, Frame*)
{
- GtkClipboard* textClipboard = gtk_clipboard_get(gdk_atom_intern_static_string("WebKitClipboardText"));
- GtkClipboard* urlClipboard = gtk_clipboard_get(gdk_atom_intern_static_string("WebKitClipboardUrl"));
- GtkClipboard* urlLabelClipboard = gtk_clipboard_get(gdk_atom_intern_static_string("WebKitClipboardUrlLabel"));
-
- gtk_clipboard_clear(textClipboard);
- gtk_clipboard_clear(urlClipboard);
- gtk_clipboard_clear(urlLabelClipboard);
-
- gtk_clipboard_set_text(textClipboard, url.string().utf8().data(), -1);
- gtk_clipboard_set_text(urlClipboard, url.string().utf8().data(), -1);
- gtk_clipboard_set_text(urlLabelClipboard, label.utf8().data(), -1);
+ notImplemented();
}
-void ClipboardGtk::writeRange(Range* range, Frame* frame)
+void ClipboardGtk::writeRange(Range*, Frame*)
{
- GtkClipboard* textClipboard = gtk_clipboard_get(gdk_atom_intern_static_string("WebKitClipboardText"));
- GtkClipboard* htmlClipboard = gtk_clipboard_get(gdk_atom_intern_static_string("WebKitClipboardHtml"));
-
- gtk_clipboard_clear(textClipboard);
- gtk_clipboard_clear(htmlClipboard);
-
- gtk_clipboard_set_text(textClipboard, frame->selectedText().utf8().data(), -1);
- gtk_clipboard_set_text(htmlClipboard, createMarkup(range, 0, AnnotateForInterchange).utf8().data(), -1);
+ notImplemented();
}
bool ClipboardGtk::hasData()
diff --git a/WebCore/platform/gtk/ClipboardGtk.h b/WebCore/platform/gtk/ClipboardGtk.h
index bb21d92..7314ae4 100644
--- a/WebCore/platform/gtk/ClipboardGtk.h
+++ b/WebCore/platform/gtk/ClipboardGtk.h
@@ -24,8 +24,8 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef ClipboardGtk_h
-#define ClipboardGtk_h
+#ifndef ClipboardGdk_h
+#define ClipboardGdk_h
#include "Clipboard.h"
diff --git a/WebCore/platform/gtk/PasteboardGtk.cpp b/WebCore/platform/gtk/PasteboardGtk.cpp
index 6949b0a..9f72923 100644
--- a/WebCore/platform/gtk/PasteboardGtk.cpp
+++ b/WebCore/platform/gtk/PasteboardGtk.cpp
@@ -35,6 +35,13 @@
namespace WebCore {
+/* FIXME: we must get rid of this and use the enum in webkitwebview.h someway */
+typedef enum
+{
+ WEBKIT_WEB_VIEW_TARGET_INFO_HTML = - 1,
+ WEBKIT_WEB_VIEW_TARGET_INFO_TEXT = - 2
+} WebKitWebViewTargetInfo;
+
class PasteboardSelectionData {
public:
PasteboardSelectionData(gchar* text, gchar* markup)
@@ -58,11 +65,11 @@ static void clipboard_get_contents_cb(GtkClipboard *clipboard, GtkSelectionData
guint info, gpointer data) {
PasteboardSelectionData* clipboardData = reinterpret_cast<PasteboardSelectionData*>(data);
ASSERT(clipboardData);
- if ((gint)info == Pasteboard::generalPasteboard()->m_helper->getWebViewTargetInfoHtml())
+ if ((gint)info == WEBKIT_WEB_VIEW_TARGET_INFO_HTML) {
gtk_selection_data_set(selection_data, selection_data->target, 8,
reinterpret_cast<const guchar*>(clipboardData->markup()),
g_utf8_strlen(clipboardData->markup(), -1));
- else
+ } else
gtk_selection_data_set_text(selection_data, clipboardData->text(), -1);
}
diff --git a/WebCore/platform/gtk/PasteboardHelper.h b/WebCore/platform/gtk/PasteboardHelper.h
index 8e67127..9943a2d 100644
--- a/WebCore/platform/gtk/PasteboardHelper.h
+++ b/WebCore/platform/gtk/PasteboardHelper.h
@@ -43,7 +43,6 @@ public:
virtual GtkClipboard* getPrimary(Frame*) const = 0;
virtual GtkTargetList* getCopyTargetList(Frame*) const = 0;
virtual GtkTargetList* getPasteTargetList(Frame*) const = 0;
- virtual gint getWebViewTargetInfoHtml() const = 0;
};
}
diff --git a/WebCore/platform/haiku/ClipboardHaiku.cpp b/WebCore/platform/haiku/ClipboardHaiku.cpp
index a62c30c..845c08c 100644
--- a/WebCore/platform/haiku/ClipboardHaiku.cpp
+++ b/WebCore/platform/haiku/ClipboardHaiku.cpp
@@ -27,8 +27,8 @@
#include "config.h"
#include "ClipboardHaiku.h"
-#include "FileList.h"
#include "IntPoint.h"
+#include "FileList.h"
#include "NotImplemented.h"
#include "PlatformString.h"
#include "StringHash.h"
@@ -42,7 +42,7 @@
namespace WebCore {
-ClipboardHaiku::ClipboardHaiku(ClipboardAccessPolicy policy, bool forDragging)
+ClipboardHaiku::ClipboardHaiku(ClipboardAccessPolicy policy, bool forDragging)
: Clipboard(policy, forDragging)
{
}
@@ -61,7 +61,7 @@ void ClipboardHaiku::clearData(const String& type)
}
}
-void ClipboardHaiku::clearAllData()
+void ClipboardHaiku::clearAllData()
{
if (be_clipboard->Lock()) {
be_clipboard->Clear();
@@ -70,7 +70,7 @@ void ClipboardHaiku::clearAllData()
}
}
-String ClipboardHaiku::getData(const String& type, bool& success) const
+String ClipboardHaiku::getData(const String& type, bool& success) const
{
BString result;
success = false;
@@ -88,7 +88,7 @@ String ClipboardHaiku::getData(const String& type, bool& success) const
return result;
}
-bool ClipboardHaiku::setData(const String& type, const String& data)
+bool ClipboardHaiku::setData(const String& type, const String& data)
{
bool result = false;
@@ -110,7 +110,7 @@ bool ClipboardHaiku::setData(const String& type, const String& data)
}
// Extensions beyond IE's API.
-HashSet<String> ClipboardHaiku::types() const
+HashSet<String> ClipboardHaiku::types() const
{
HashSet<String> result;
@@ -138,27 +138,27 @@ PassRefPtr<FileList> ClipboardHaiku::files() const
return 0;
}
-IntPoint ClipboardHaiku::dragLocation() const
-{
+IntPoint ClipboardHaiku::dragLocation() const
+{
notImplemented();
return IntPoint(0, 0);
}
-CachedImage* ClipboardHaiku::dragImage() const
+CachedImage* ClipboardHaiku::dragImage() const
{
notImplemented();
- return 0;
+ return 0;
}
-void ClipboardHaiku::setDragImage(CachedImage*, const IntPoint&)
+void ClipboardHaiku::setDragImage(CachedImage*, const IntPoint&)
{
notImplemented();
}
-Node* ClipboardHaiku::dragImageElement()
+Node* ClipboardHaiku::dragImageElement()
{
notImplemented();
- return 0;
+ return 0;
}
void ClipboardHaiku::setDragImageElement(Node*, const IntPoint&)
@@ -167,27 +167,27 @@ void ClipboardHaiku::setDragImageElement(Node*, const IntPoint&)
}
DragImageRef ClipboardHaiku::createDragImage(IntPoint& dragLocation) const
-{
+{
notImplemented();
return 0;
}
-void ClipboardHaiku::declareAndWriteDragImage(Element*, const KURL&, const String&, Frame*)
+void ClipboardHaiku::declareAndWriteDragImage(Element*, const KURL&, const String&, Frame*)
{
notImplemented();
}
-void ClipboardHaiku::writeURL(const KURL&, const String&, Frame*)
+void ClipboardHaiku::writeURL(const KURL&, const String&, Frame*)
{
notImplemented();
}
-void ClipboardHaiku::writeRange(Range*, Frame*)
+void ClipboardHaiku::writeRange(Range*, Frame*)
{
notImplemented();
}
-bool ClipboardHaiku::hasData()
+bool ClipboardHaiku::hasData()
{
bool result = false;
diff --git a/WebCore/platform/haiku/ContextMenuHaiku.cpp b/WebCore/platform/haiku/ContextMenuHaiku.cpp
index b978433..03b8978 100644
--- a/WebCore/platform/haiku/ContextMenuHaiku.cpp
+++ b/WebCore/platform/haiku/ContextMenuHaiku.cpp
@@ -27,27 +27,30 @@
#include "config.h"
#include "ContextMenu.h"
-#include "ContextMenuController.h"
#include "ContextMenuItem.h"
-#include "Document.h"
+#include "ContextMenuController.h"
#include "Frame.h"
#include "FrameView.h"
+#include "Document.h"
+
+#include <wtf/Assertions.h>
+
#include <Looper.h>
#include <Menu.h>
#include <Message.h>
-#include <wtf/Assertions.h>
namespace WebCore {
// FIXME: This class isn't used yet
-class ContextMenuReceiver : public BLooper {
+class ContextMenuReceiver : public BLooper
+{
public:
ContextMenuReceiver(ContextMenu* menu)
: BLooper("context_menu_receiver")
, m_menu(menu)
- , m_result(-1)
{
+ m_result = -1;
}
void HandleMessage(BMessage* msg)
@@ -77,8 +80,21 @@ private:
ContextMenu::ContextMenu(const HitTestResult& result)
: m_hitTestResult(result)
- , m_platformDescription(new BMenu("context_menu"))
+ , m_platformDescription(NULL)
{
+ /* Get position */
+ if (result.innerNode() && result.innerNode()->document()) {
+ BView* view = result.innerNode()->document()->frame()->view()->platformWidget();
+ int child = 0;
+ while (view->ChildAt(child)) {
+ if (view->ChildAt(child)->Name() == "scroll_view_canvas") {
+ m_point = view->ChildAt(child)->ConvertToScreen(BPoint(result.point().x(), result.point().y()));
+ break;
+ }
+ child++;
+ }
+ }
+ m_platformDescription = new BMenu("context_menu");
}
ContextMenu::~ContextMenu()
@@ -90,9 +106,9 @@ void ContextMenu::appendItem(ContextMenuItem& item)
{
checkOrEnableIfNeeded(item);
- BMenuItem* menuItem = item.releasePlatformDescription();
- if (menuItem)
- m_platformDescription->AddItem(menuItem);
+ BMenuItem* bItem = item.releasePlatformDescription();
+ if (bItem)
+ m_platformDescription->AddItem(bItem);
}
unsigned ContextMenu::itemCount() const
@@ -104,9 +120,9 @@ void ContextMenu::insertItem(unsigned position, ContextMenuItem& item)
{
checkOrEnableIfNeeded(item);
- BMenuItem* menuItem = item.releasePlatformDescription();
- if (menuItem)
- m_platformDescription->AddItem(menuItem, position);
+ BMenuItem* bItem = item.releasePlatformDescription();
+ if (bItem)
+ m_platformDescription->AddItem(bItem, position);
}
PlatformMenuDescription ContextMenu::platformDescription() const
diff --git a/WebCore/platform/haiku/CookieJarHaiku.cpp b/WebCore/platform/haiku/CookieJarHaiku.cpp
index 831b379..73519d7 100644
--- a/WebCore/platform/haiku/CookieJarHaiku.cpp
+++ b/WebCore/platform/haiku/CookieJarHaiku.cpp
@@ -29,7 +29,6 @@
#include "config.h"
#include "CookieJar.h"
-#include "Cookie.h"
#include "KURL.h"
#include "PlatformString.h"
#include "StringHash.h"
@@ -42,33 +41,21 @@ namespace WebCore {
// FIXME: Shouldn't this be saved to and restored from disk too?
static HashMap<String, String> cookieJar;
-void setCookies(Document*, const KURL& url, const String& value)
+void setCookies(const KURL& url, const KURL& /*policyURL*/, const String& value)
{
cookieJar.set(url.string(), value);
}
-String cookies(const Document*, const KURL& url)
+String cookies(const KURL& url)
{
return cookieJar.get(url.string());
}
-bool cookiesEnabled(const Document*)
+bool cookiesEnabled()
{
// FIXME: This should probably be a setting
return true;
}
-bool getRawCookies(const Document*, const KURL&, Vector<Cookie>& rawCookies)
-{
- // FIXME: Not yet implemented
- rawCookies.clear();
- return false; // return true when implemented
-}
-
-void deleteCookie(const Document*, const KURL&, const String&)
-{
- // FIXME: Not yet implemented
-}
-
} // namespace WebCore
diff --git a/WebCore/platform/haiku/DragDataHaiku.cpp b/WebCore/platform/haiku/DragDataHaiku.cpp
index 4a20147..b42b311 100644
--- a/WebCore/platform/haiku/DragDataHaiku.cpp
+++ b/WebCore/platform/haiku/DragDataHaiku.cpp
@@ -27,9 +27,10 @@
#include "config.h"
#include "DragData.h"
-#include "ClipboardHaiku.h"
#include "Document.h"
#include "DocumentFragment.h"
+#include "ClipboardHaiku.h"
+
#include "NotImplemented.h"
@@ -78,7 +79,7 @@ Color DragData::asColor() const
WTF::PassRefPtr<Clipboard> DragData::createClipboard(ClipboardAccessPolicy policy) const
{
- return ClipboardHaiku::create(policy, true);
+ return new ClipboardHaiku(policy, true);
}
bool DragData::containsCompatibleContent() const
@@ -103,6 +104,6 @@ PassRefPtr<DocumentFragment> DragData::asFragment(Document*) const
notImplemented();
return 0;
}
-
+
} // namespace WebCore
diff --git a/WebCore/platform/haiku/LocalizedStringsHaiku.cpp b/WebCore/platform/haiku/LocalizedStringsHaiku.cpp
deleted file mode 100644
index a37ffcc..0000000
--- a/WebCore/platform/haiku/LocalizedStringsHaiku.cpp
+++ /dev/null
@@ -1,346 +0,0 @@
-/*
- * Copyright (C) 2009 Maxime Simon <simon.maxime@gmail.com>
- *
- * 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 "config.h"
-#include "LocalizedStrings.h"
-
-#include "PlatformString.h"
-
-
-namespace WebCore {
-String submitButtonDefaultLabel()
-{
- return "Submit";
-}
-
-String inputElementAltText()
-{
- return String();
-}
-
-String resetButtonDefaultLabel()
-{
- return "Reset";
-}
-
-String defaultLanguage()
-{
- return "en";
-}
-
-String searchableIndexIntroduction()
-{
- return "Searchable Index";
-}
-
-String fileButtonChooseFileLabel()
-{
- return "Choose File";
-}
-
-String fileButtonNoFileSelectedLabel()
-{
- return "No file selected";
-}
-
-String contextMenuItemTagOpenLinkInNewWindow()
-{
- return "Open in new tab";
-}
-
-String contextMenuItemTagDownloadLinkToDisk()
-{
- return "Download link to disk";
-}
-
-String contextMenuItemTagCopyLinkToClipboard()
-{
- return "Copy link to clipboard";
-}
-
-String contextMenuItemTagOpenImageInNewWindow()
-{
- return "Open image in new window";
-}
-
-String contextMenuItemTagDownloadImageToDisk()
-{
- return "Download image to disk";
-}
-
-String contextMenuItemTagCopyImageToClipboard()
-{
- return "Copy image to clipboard";
-}
-
-String contextMenuItemTagOpenFrameInNewWindow()
-{
- return "Open frame in new window";
-}
-
-String contextMenuItemTagCopy()
-{
- return "Copy";
-}
-
-String contextMenuItemTagGoBack()
-{
- return "Go back";
-}
-
-String contextMenuItemTagGoForward()
-{
- return "Go forward";
-}
-
-String contextMenuItemTagStop()
-{
- return "Stop";
-}
-
-String contextMenuItemTagReload()
-{
- return "Reload";
-}
-
-String contextMenuItemTagCut()
-{
- return "Cut";
-}
-
-String contextMenuItemTagPaste()
-{
- return "Paste";
-}
-
-String contextMenuItemTagNoGuessesFound()
-{
- return "No guesses found";
-}
-
-String contextMenuItemTagIgnoreSpelling()
-{
- return "Ignore spelling";
-}
-
-String contextMenuItemTagLearnSpelling()
-{
- return "Learn spelling";
-}
-
-String contextMenuItemTagSearchWeb()
-{
- return "Search web";
-}
-
-String contextMenuItemTagLookUpInDictionary()
-{
- return "Lookup in dictionary";
-}
-
-String contextMenuItemTagOpenLink()
-{
- return "Open link";
-}
-
-String contextMenuItemTagIgnoreGrammar()
-{
- return "Ignore grammar";
-}
-
-String contextMenuItemTagSpellingMenu()
-{
- return "Spelling menu";
-}
-
-String contextMenuItemTagShowSpellingPanel(bool show)
-{
- return "Show spelling panel";
-}
-
-String contextMenuItemTagCheckSpelling()
-{
- return "Check spelling";
-}
-
-String contextMenuItemTagCheckSpellingWhileTyping()
-{
- return "Check spelling while typing";
-}
-
-String contextMenuItemTagCheckGrammarWithSpelling()
-{
- return "Check for grammar with spelling";
-}
-
-String contextMenuItemTagFontMenu()
-{
- return "Font menu";
-}
-
-String contextMenuItemTagBold()
-{
- return "Bold";
-}
-
-String contextMenuItemTagItalic()
-{
- return "Italic";
-}
-
-String contextMenuItemTagUnderline()
-{
- return "Underline";
-}
-
-String contextMenuItemTagOutline()
-{
- return "Outline";
-}
-
-String contextMenuItemTagWritingDirectionMenu()
-{
- return "Writing direction menu";
-}
-
-String contextMenuItemTagDefaultDirection()
-{
- return "Default direction";
-}
-
-String contextMenuItemTagLeftToRight()
-{
- return "Left to right";
-}
-
-String contextMenuItemTagRightToLeft()
-{
- return "Right to left";
-}
-
-String contextMenuItemTagInspectElement()
-{
- return "Inspect";
-}
-
-String searchMenuNoRecentSearchesText()
-{
- return "No recent text searches";
-}
-
-String searchMenuRecentSearchesText()
-{
- return "Recent text searches";
-}
-
-String searchMenuClearRecentSearchesText()
-{
- return "Clear recent text searches";
-}
-
-String unknownFileSizeText()
-{
- return "Unknown";
-}
-
-String AXWebAreaText()
-{
- return String();
-}
-
-String AXLinkText()
-{
- return String();
-}
-
-String AXListMarkerText()
-{
- return String();
-}
-
-String AXImageMapText()
-{
- return String();
-}
-
-String AXHeadingText()
-{
- return String();
-}
-
-String imageTitle(const String& filename, const IntSize& size)
-{
- return String(filename);
-}
-
-String contextMenuItemTagTextDirectionMenu()
-{
- return String();
-}
-
-String AXButtonActionVerb()
-{
- return String();
-}
-
-String AXTextFieldActionVerb()
-{
- return String();
-}
-
-String AXRadioButtonActionVerb()
-{
- return String();
-}
-
-String AXCheckedCheckBoxActionVerb()
-{
- return String();
-}
-
-String AXUncheckedCheckBoxActionVerb()
-{
- return String();
-}
-
-String AXLinkActionVerb()
-{
- return String();
-}
-
-String AXDefinitionListTermText()
-{
- return String();
-}
-
-String AXDefinitionListDefinitionText()
-{
- return String();
-}
-
-} // namespace WebCore
-
diff --git a/WebCore/platform/haiku/LoggingHaiku.cpp b/WebCore/platform/haiku/LoggingHaiku.cpp
deleted file mode 100644
index f09c483..0000000
--- a/WebCore/platform/haiku/LoggingHaiku.cpp
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2009 Maxime Simon <simon.maxime@gmail.com>
- *
- * 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 "config.h"
-#include "Logging.h"
-
-
-namespace WebCore {
-
-void InitializeLoggingChannelsIfNecessary()
-{
- // FIXME: Should read the logging channels from a file.
- static bool haveInitializedLoggingChannels = false;
- if (haveInitializedLoggingChannels)
- return;
-
- haveInitializedLoggingChannels = true;
-
- LogEvents.state = WTFLogChannelOn;
- LogFrames.state = WTFLogChannelOn;
- LogLoading.state = WTFLogChannelOn;
- LogPlatformLeaks.state = WTFLogChannelOn;
-}
-
-} // namespace WebCore
-
diff --git a/WebCore/platform/haiku/RenderThemeHaiku.cpp b/WebCore/platform/haiku/RenderThemeHaiku.cpp
deleted file mode 100644
index 4327795..0000000
--- a/WebCore/platform/haiku/RenderThemeHaiku.cpp
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * This file is part of the WebKit project.
- *
- * Copyright (C) 2006 Dirk Mueller <mueller@kde.org>
- * 2006 Nikolas Zimmermann <zimmermann@kde.org>
- * Copyright (C) 2007 Ryan Leavengood <leavengood@gmail.com>
- * Copyright (C) 2009 Maxime Simon <simon.maxime@gmail.com>
- *
- * All rights reserved.
- *
- * 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., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- */
-
-#include "config.h"
-#include "RenderThemeHaiku.h"
-
-#include "GraphicsContext.h"
-#include "NotImplemented.h"
-#include <ControlLook.h>
-#include <View.h>
-
-
-namespace WebCore {
-
-PassRefPtr<RenderTheme> RenderThemeHaiku::create()
-{
- return adoptRef(new RenderThemeHaiku());
-}
-
-PassRefPtr<RenderTheme> RenderTheme::themeForPage(Page*)
-{
- static RenderTheme* renderTheme = RenderThemeHaiku::create().releaseRef();
- return renderTheme;
-}
-
-RenderThemeHaiku::RenderThemeHaiku()
-{
-}
-
-RenderThemeHaiku::~RenderThemeHaiku()
-{
-}
-
-static bool supportsFocus(ControlPart appearance)
-{
- switch (appearance) {
- case PushButtonPart:
- case ButtonPart:
- case TextFieldPart:
- case TextAreaPart:
- case SearchFieldPart:
- case MenulistPart:
- case RadioPart:
- case CheckboxPart:
- return true;
- default:
- return false;
- }
-}
-
-bool RenderThemeHaiku::supportsFocusRing(const RenderStyle* style) const
-{
- return supportsFocus(style->appearance());
-}
-
-Color RenderThemeHaiku::platformActiveSelectionBackgroundColor() const
-{
- return Color(ui_color(B_CONTROL_HIGHLIGHT_COLOR));
-}
-
-Color RenderThemeHaiku::platformInactiveSelectionBackgroundColor() const
-{
- return Color(ui_color(B_CONTROL_HIGHLIGHT_COLOR));
-}
-
-Color RenderThemeHaiku::platformActiveSelectionForegroundColor() const
-{
- return Color(ui_color(B_CONTROL_TEXT_COLOR));
-}
-
-Color RenderThemeHaiku::platformInactiveSelectionForegroundColor() const
-{
- return Color(ui_color(B_CONTROL_TEXT_COLOR));
-}
-
-Color RenderThemeHaiku::platformTextSearchHighlightColor() const
-{
- return Color(ui_color(B_MENU_SELECTED_BACKGROUND_COLOR));
-}
-
-void RenderThemeHaiku::systemFont(int propId, FontDescription&) const
-{
- notImplemented();
-}
-
-bool RenderThemeHaiku::paintCheckbox(RenderObject*, const RenderObject::PaintInfo& info, const IntRect& intRect)
-{
- if (info.context->paintingDisabled())
- return false;
-
- rgb_color base = ui_color(B_PANEL_BACKGROUND_COLOR);
- BRect rect = intRect;
- BView* view = info.context->platformContext();
-
- if (!be_control_look)
- return false;
-
- be_control_look->DrawCheckBox(view, rect, rect, base);
- return true;
-}
-
-void RenderThemeHaiku::setCheckboxSize(RenderStyle* style) const
-{
- int size = 10;
-
- // If the width and height are both specified, then we have nothing to do.
- if (!style->width().isIntrinsicOrAuto() && !style->height().isAuto())
- return;
-
- // FIXME: A hard-coded size of 'size' is used. This is wrong but necessary for now.
- if (style->width().isIntrinsicOrAuto())
- style->setWidth(Length(size, Fixed));
-
- if (style->height().isAuto())
- style->setHeight(Length(size, Fixed));
-}
-
-bool RenderThemeHaiku::paintRadio(RenderObject*, const RenderObject::PaintInfo& info, const IntRect& intRect)
-{
- if (info.context->paintingDisabled())
- return false;
-
- rgb_color base = ui_color(B_PANEL_BACKGROUND_COLOR);
- BRect rect = intRect;
- BView* view = info.context->platformContext();
-
- if (!be_control_look)
- return false;
-
- be_control_look->DrawRadioButton(view, rect, rect, base);
- return true;
-}
-
-void RenderThemeHaiku::setRadioSize(RenderStyle* style) const
-{
- // This is the same as checkboxes.
- setCheckboxSize(style);
-}
-
-void RenderThemeHaiku::adjustMenuListStyle(CSSStyleSelector*, RenderStyle* style, Element*) const
-{
- // Leave some space for the arrow.
- style->setPaddingRight(Length(22, Fixed));
- const int minHeight = 20;
- style->setMinHeight(Length(minHeight, Fixed));
-}
-
-bool RenderThemeHaiku::paintMenuList(RenderObject*, const RenderObject::PaintInfo&, const IntRect&)
-{
- notImplemented();
- return false;
-}
-
-} // namespace WebCore
diff --git a/WebCore/platform/haiku/RenderThemeHaiku.h b/WebCore/platform/haiku/RenderThemeHaiku.h
deleted file mode 100644
index 7daebc4..0000000
--- a/WebCore/platform/haiku/RenderThemeHaiku.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * This file is part of the WebKit project.
- *
- * Copyright (C) 2009 Maxime Simon <simon.maxime@gmail.com>
- *
- * All rights reserved.
- *
- * 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., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- */
-
-#ifndef RenderThemeHaiku_h
-#define RenderThemeHaiku_h
-
-#include "RenderTheme.h"
-
-namespace WebCore {
-
- class RenderThemeHaiku : public RenderTheme {
- private:
- RenderThemeHaiku();
- virtual ~RenderThemeHaiku();
-
- public:
- static PassRefPtr<RenderTheme> create();
-
- // A method asking if the theme's controls actually care about redrawing when hovered.
- virtual bool supportsHover(const RenderStyle* style) const { return false; }
-
- // A method asking if the theme is able to draw the focus ring.
- virtual bool supportsFocusRing(const RenderStyle*) const;
-
- // The platform selection color.
- virtual Color platformActiveSelectionBackgroundColor() const;
- virtual Color platformInactiveSelectionBackgroundColor() const;
- virtual Color platformActiveSelectionForegroundColor() const;
- virtual Color platformInactiveSelectionForegroundColor() const;
-
- virtual Color platformTextSearchHighlightColor() const;
-
- // System fonts.
- virtual void systemFont(int propId, FontDescription&) const;
-
- protected:
- virtual bool paintCheckbox(RenderObject*, const RenderObject::PaintInfo&, const IntRect&);
- virtual void setCheckboxSize(RenderStyle*) const;
-
- virtual bool paintRadio(RenderObject*, const RenderObject::PaintInfo&, const IntRect&);
- virtual void setRadioSize(RenderStyle*) const;
-
- virtual void adjustMenuListStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
- virtual bool paintMenuList(RenderObject*, const RenderObject::PaintInfo&, const IntRect&);
- };
-
-} // namespace WebCore
-
-#endif // RenderThemeHaiku_h
diff --git a/WebCore/platform/haiku/ScrollbarThemeHaiku.cpp b/WebCore/platform/haiku/ScrollbarThemeHaiku.cpp
deleted file mode 100644
index 8adab3d..0000000
--- a/WebCore/platform/haiku/ScrollbarThemeHaiku.cpp
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * Copyright (C) 2008 Apple Inc. All Rights Reserved.
- * Copyright 2009 Maxime Simon <simon.maxime@gmail.com> 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 "config.h"
-#include "ScrollbarThemeHaiku.h"
-
-#include "GraphicsContext.h"
-#include "Scrollbar.h"
-#include <ControlLook.h>
-#include <InterfaceDefs.h>
-
-
-int buttonWidth(int scrollbarWidth, int thickness)
-{
- return scrollbarWidth < 2 * thickness ? scrollbarWidth / 2 : thickness;
-}
-
-namespace WebCore {
-
-ScrollbarTheme* ScrollbarTheme::nativeTheme()
-{
- static ScrollbarThemeHaiku theme;
- return &theme;
-}
-
-ScrollbarThemeHaiku::ScrollbarThemeHaiku()
-{
-}
-
-ScrollbarThemeHaiku::~ScrollbarThemeHaiku()
-{
-}
-
-int ScrollbarThemeHaiku::scrollbarThickness(ScrollbarControlSize controlSize)
-{
- // FIXME: Should we make a distinction between a Small and a Regular Scrollbar?
- return 16;
-}
-
-bool ScrollbarThemeHaiku::hasButtons(Scrollbar* scrollbar)
-{
- return scrollbar->enabled();
-}
-
-bool ScrollbarThemeHaiku::hasThumb(Scrollbar* scrollbar)
-{
- return scrollbar->enabled() && thumbLength(scrollbar) > 0;
-}
-
-IntRect ScrollbarThemeHaiku::backButtonRect(Scrollbar* scrollbar, ScrollbarPart part, bool)
-{
- if (part == BackButtonEndPart)
- return IntRect();
-
- int thickness = scrollbarThickness();
- IntPoint buttonOrigin(scrollbar->x(), scrollbar->y());
- IntSize buttonSize = scrollbar->orientation() == HorizontalScrollbar
- ? IntSize(buttonWidth(scrollbar->width(), thickness), thickness)
- : IntSize(thickness, buttonWidth(scrollbar->height(), thickness));
- IntRect buttonRect(buttonOrigin, buttonSize);
-
- return buttonRect;
-}
-
-IntRect ScrollbarThemeHaiku::forwardButtonRect(Scrollbar* scrollbar, ScrollbarPart part, bool)
-{
- if (part == BackButtonStartPart)
- return IntRect();
-
- int thickness = scrollbarThickness();
- if (scrollbar->orientation() == HorizontalScrollbar) {
- int width = buttonWidth(scrollbar->width(), thickness);
- return IntRect(scrollbar->x() + scrollbar->width() - width, scrollbar->y(), width, thickness);
- }
-
- int height = buttonWidth(scrollbar->height(), thickness);
- return IntRect(scrollbar->x(), scrollbar->y() + scrollbar->height() - height, thickness, height);
-}
-
-IntRect ScrollbarThemeHaiku::trackRect(Scrollbar* scrollbar, bool)
-{
- int thickness = scrollbarThickness();
- if (scrollbar->orientation() == HorizontalScrollbar) {
- if (scrollbar->width() < 2 * thickness)
- return IntRect();
- return IntRect(scrollbar->x() + thickness, scrollbar->y(), scrollbar->width() - 2 * thickness, thickness);
- }
- if (scrollbar->height() < 2 * thickness)
- return IntRect();
- return IntRect(scrollbar->x(), scrollbar->y() + thickness, thickness, scrollbar->height() - 2 * thickness);
-}
-
-void ScrollbarThemeHaiku::paintScrollbarBackground(GraphicsContext* context, Scrollbar* scrollbar)
-{
- if (!be_control_look)
- return;
-
- BRect rect = trackRect(scrollbar, false);
- orientation scrollbarOrientation = scrollbar->orientation() == HorizontalScrollbar ? B_HORIZONTAL : B_VERTICAL;
-
- be_control_look->DrawScrollBarBackground(context->platformContext(), rect, rect, ui_color(B_PANEL_BACKGROUND_COLOR), 0, scrollbarOrientation);
-}
-
-void ScrollbarThemeHaiku::paintButton(GraphicsContext* context, Scrollbar* scrollbar, const IntRect& rect, ScrollbarPart part)
-{
- if (!be_control_look)
- return;
-
- BRect drawRect = BRect(rect);
- BView* view = context->platformContext();
- rgb_color panelBgColor = ui_color(B_PANEL_BACKGROUND_COLOR);
- rgb_color buttonBgColor = tint_color(panelBgColor, B_LIGHTEN_1_TINT);
-
- be_control_look->DrawButtonFrame(view, drawRect, drawRect, buttonBgColor, panelBgColor);
- be_control_look->DrawButtonBackground(view, drawRect, drawRect, buttonBgColor);
-
- int arrowDirection;
- if (scrollbar->orientation() == VerticalScrollbar)
- arrowDirection = part == BackButtonStartPart ? BControlLook::B_UP_ARROW : BControlLook::B_DOWN_ARROW;
- else
- arrowDirection = part == BackButtonStartPart ? BControlLook::B_LEFT_ARROW : BControlLook::B_RIGHT_ARROW;
-
- be_control_look->DrawArrowShape(view, drawRect, drawRect, ui_color(B_CONTROL_TEXT_COLOR), arrowDirection);
-}
-
-void ScrollbarThemeHaiku::paintThumb(GraphicsContext* context, Scrollbar*, const IntRect& rect)
-{
- if (!be_control_look)
- return;
-
- BRect drawRect = BRect(rect);
- BView* view = context->platformContext();
- rgb_color panelBgColor = ui_color(B_PANEL_BACKGROUND_COLOR);
- rgb_color buttonBgColor = tint_color(panelBgColor, B_LIGHTEN_1_TINT);
-
- be_control_look->DrawButtonFrame(view, drawRect, drawRect, buttonBgColor, panelBgColor);
- be_control_look->DrawButtonBackground(view, drawRect, drawRect, buttonBgColor);
-}
-
-}
-
diff --git a/WebCore/platform/haiku/ScrollbarThemeHaiku.h b/WebCore/platform/haiku/ScrollbarThemeHaiku.h
deleted file mode 100644
index 18e2cc0..0000000
--- a/WebCore/platform/haiku/ScrollbarThemeHaiku.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2008 Apple Inc. All Rights Reserved.
- * Copyright 2009 Maxime Simon <simon.maxime@gmail.com> 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 ScrollbarThemeHaiku_h
-#define ScrollbarThemeHaiku_h
-
-#include "ScrollbarThemeComposite.h"
-
-namespace WebCore {
- class Scrollbar;
-
- class ScrollbarThemeHaiku : public ScrollbarThemeComposite {
- public:
- ScrollbarThemeHaiku();
- virtual ~ScrollbarThemeHaiku();
-
- virtual int scrollbarThickness(ScrollbarControlSize = RegularScrollbar);
-
- virtual bool hasButtons(Scrollbar*);
- virtual bool hasThumb(Scrollbar*);
-
- virtual IntRect backButtonRect(Scrollbar*, ScrollbarPart, bool painting);
- virtual IntRect forwardButtonRect(Scrollbar*, ScrollbarPart, bool painting);
- virtual IntRect trackRect(Scrollbar*, bool painting);
-
- virtual void paintScrollbarBackground(GraphicsContext*, Scrollbar*);
- virtual void paintButton(GraphicsContext*, Scrollbar*, const IntRect&, ScrollbarPart);
- virtual void paintThumb(GraphicsContext*, Scrollbar*, const IntRect&);
- };
-
-}
-#endif
diff --git a/WebCore/platform/haiku/SharedBufferHaiku.cpp b/WebCore/platform/haiku/SharedBufferHaiku.cpp
deleted file mode 100644
index 113cd2e..0000000
--- a/WebCore/platform/haiku/SharedBufferHaiku.cpp
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2009 Maxime Simon <simon.maxime@gmail.com>
- *
- * 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 "config.h"
-#include "SharedBuffer.h"
-
-#include <File.h>
-#include <String.h>
-
-namespace WebCore {
-
-PassRefPtr<SharedBuffer> SharedBuffer::createWithContentsOfFile(const String& fileName)
-{
- if (fileName.isEmpty())
- return 0;
-
- BFile file(BString(fileName).String(), B_READ_ONLY);
- if (file.InitCheck() != B_OK)
- return 0;
-
- RefPtr<SharedBuffer> result = SharedBuffer::create();
-
- off_t size;
- file.GetSize(&size);
- result->m_buffer.resize(size);
- if (result->m_buffer.size() != size)
- return 0;
-
- file.Read(result->m_buffer.data(), result->m_buffer.size());
- return result.release();
-}
-
-} // namespace WebCore
diff --git a/WebCore/platform/haiku/TemporaryLinkStubs.cpp b/WebCore/platform/haiku/TemporaryLinkStubs.cpp
index aa3d538..48380fc 100644
--- a/WebCore/platform/haiku/TemporaryLinkStubs.cpp
+++ b/WebCore/platform/haiku/TemporaryLinkStubs.cpp
@@ -33,11 +33,40 @@
#include "config.h"
+#include "AXObjectCache.h"
+#include "CachedResource.h"
+#include "CookieJar.h"
+#include "Cursor.h"
+#include "DataGridColumnList.h"
+#include "FileSystem.h"
+#include "Font.h"
+#include "Frame.h"
+#include "FrameView.h"
+#include "GraphicsContext.h"
+#include "History.h"
+#include "IconLoader.h"
+#include "InspectorController.h"
+#include "IntPoint.h"
#include "KURL.h"
+#include "Language.h"
+#include "Node.h"
#include "NotImplemented.h"
-#include "PlatformString.h"
-#include "SSLKeyGenerator.h"
-#include "SystemTime.h"
+#include "Path.h"
+#include "PlatformMouseEvent.h"
+#include "PlatformScrollBar.h"
+#include "PluginInfoStore.h"
+#include "RenderTheme.h"
+#include "Screen.h"
+#include "Scrollbar.h"
+#include "ScrollbarTheme.h"
+#include "SharedBuffer.h"
+#include "TextBoundaries.h"
+#include "Threading.h"
+#include "Widget.h"
+#include "loader.h"
+#include <runtime/JSValue.h>
+#include <stdio.h>
+#include <stdlib.h>
using namespace WebCore;
@@ -49,14 +78,20 @@ Vector<char> loadResourceIntoArray(const char*)
namespace WebCore {
-String signedPublicKeyAndChallengeString(unsigned keySizeIndex, const String &challengeString, const KURL &url)
+bool historyContains(String const&)
{
- return String();
+ return false;
}
-void getSupportedKeySizes(Vector<String>&)
+Vector<String> supportedKeySizes()
{
notImplemented();
+ return Vector<String>();
+}
+
+String signedPublicKeyAndChallengeString(unsigned keySizeIndex, const String &challengeString, const KURL &url)
+{
+ return String();
}
float userIdleTime()
@@ -70,11 +105,22 @@ void callOnMainThread(void (*)())
notImplemented();
}
+PassRefPtr<SharedBuffer> SharedBuffer::createWithContentsOfFile(const String&)
+{
+ notImplemented();
+ return 0;
+}
+
String KURL::fileSystemPath() const
{
notImplemented();
return String();
}
+void getSupportedKeySizes(Vector<String>&)
+{
+ notImplemented();
+}
+
} // namespace WebCore
diff --git a/WebCore/platform/image-decoders/ImageDecoder.cpp b/WebCore/platform/image-decoders/ImageDecoder.cpp
deleted file mode 100644
index 9c723cc..0000000
--- a/WebCore/platform/image-decoders/ImageDecoder.cpp
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright (C) 2008-2009 Torch Mobile, Inc.
- *
- * 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.
- *
- */
-
-#if ENABLE(IMAGE_DECODER_DOWN_SAMPLING)
-
-#include "config.h"
-#include "ImageDecoder.h"
-
-#include <algorithm>
-
-namespace WebCore {
-
-namespace {
-
-enum MatchType {
- Exact,
- UpperBound,
- LowerBound
-};
-
-}
-
-template <MatchType type> static int getScaledValue(const Vector<int>& scaledValues, int valueToMatch, int searchStart)
-{
- const int* dataStart = scaledValues.data();
- const int* dataEnd = dataStart + scaledValues.size();
- const int* matched = std::lower_bound(dataStart + searchStart, dataEnd, valueToMatch);
- switch (type) {
- case Exact:
- return matched != dataEnd && *matched == valueToMatch ? matched - dataStart : -1;
- case LowerBound:
- return matched != dataEnd && *matched == valueToMatch ? matched - dataStart : matched - dataStart - 1;
- case UpperBound:
- default:
- return matched != dataEnd ? matched - dataStart : -1;
- }
-}
-
-int ImageDecoder::upperBoundScaledX(int origX, int searchStart)
-{
- return getScaledValue<UpperBound>(m_scaledColumns, origX, searchStart);
-}
-
-int ImageDecoder::lowerBoundScaledX(int origX, int searchStart)
-{
- return getScaledValue<LowerBound>(m_scaledColumns, origX, searchStart);
-}
-
-int ImageDecoder::scaledY(int origY, int searchStart)
-{
- return getScaledValue<Exact>(m_scaledRows, origY, searchStart);
-}
-
-static inline void fillScaledValues(Vector<int>& scaledValues, double scaleRate, int length)
-{
- double inflateRate = 1. / scaleRate;
- scaledValues.reserveCapacity(static_cast<int>(length * scaleRate + 0.5));
- for (int scaledIndex = 0;;) {
- int index = static_cast<int>(scaledIndex * inflateRate + 0.5);
- if (index < length) {
- scaledValues.append(index);
- ++scaledIndex;
- } else
- break;
- }
-}
-
-void ImageDecoder::prepareScaleDataIfNecessary()
-{
- int width = m_size.width();
- int height = m_size.height();
- int numPixels = height * width;
- if (m_maxNumPixels <= 0 || numPixels <= m_maxNumPixels) {
- m_scaled = false;
- return;
- }
-
- m_scaled = true;
- double scale = sqrt(m_maxNumPixels / (double)numPixels);
- fillScaledValues(m_scaledColumns, scale, width);
- fillScaledValues(m_scaledRows, scale, height);
-}
-
-}
-
-#endif // ENABLE(IMAGE_DECODER_DOWN_SAMPLING)
diff --git a/WebCore/platform/image-decoders/ImageDecoder.h b/WebCore/platform/image-decoders/ImageDecoder.h
index 9256afe..57f8735 100644
--- a/WebCore/platform/image-decoders/ImageDecoder.h
+++ b/WebCore/platform/image-decoders/ImageDecoder.h
@@ -1,6 +1,5 @@
/*
* Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
- * Copyright (C) 2008-2009 Torch Mobile, Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -141,7 +140,7 @@ namespace WebCore {
inline PixelData* getAddr(int x, int y)
{
-#if PLATFORM(CAIRO) || PLATFORM(WX) || PLATFORM(HAIKU)
+#if PLATFORM(CAIRO) || PLATFORM(WX)
return m_bytes.data() + (y * width()) + x;
#elif (PLATFORM(SKIA) || PLATFORM(SGL))
return m_bitmap.getAddr32(x, y);
@@ -167,7 +166,7 @@ namespace WebCore {
}
}
-#if PLATFORM(CAIRO) || PLATFORM(WX) || PLATFORM(HAIKU)
+#if PLATFORM(CAIRO) || PLATFORM(WX)
Vector<PixelData> m_bytes;
IntSize m_size; // The size of the buffer. This should be the
// same as ImageDecoder::m_size.
@@ -189,17 +188,9 @@ namespace WebCore {
// and the base class manages the RGBA32 frame cache.
class ImageDecoder {
public:
- // ENABLE(IMAGE_DECODER_DOWN_SAMPLING) allows image decoders to write directly to
- // scaled output buffers by down sampling. Call setMaxNumPixels() to specify the
- // biggest size that decoded images can have. Image decoders will deflate those
- // images that are bigger than m_maxNumPixels. (Not supported by all image decoders yet)
ImageDecoder()
: m_failed(false)
, m_sizeAvailable(false)
-#if ENABLE(IMAGE_DECODER_DOWN_SAMPLING)
- , m_maxNumPixels(-1)
- , m_scaled(false)
-#endif
{
}
@@ -281,25 +272,8 @@ namespace WebCore {
// since in practice only GIFs will ever use this.
virtual void clearFrameBufferCache(size_t clearBeforeFrame) { }
-#if ENABLE(IMAGE_DECODER_DOWN_SAMPLING)
- void setMaxNumPixels(int m) { m_maxNumPixels = m; }
-#endif
-
protected:
-#if ENABLE(IMAGE_DECODER_DOWN_SAMPLING)
- void prepareScaleDataIfNecessary();
- int upperBoundScaledX(int origX, int searchStart = 0);
- int lowerBoundScaledX(int origX, int searchStart = 0);
- int scaledY(int origY, int searchStart = 0);
-#endif
-
RefPtr<SharedBuffer> m_data; // The encoded data.
-#if ENABLE(IMAGE_DECODER_DOWN_SAMPLING)
- int m_maxNumPixels;
- Vector<int> m_scaledColumns;
- Vector<int> m_scaledRows;
- bool m_scaled;
-#endif
Vector<RGBA32Buffer> m_frameBufferCache;
bool m_failed;
diff --git a/WebCore/platform/image-decoders/ico/ICOImageDecoder.cpp b/WebCore/platform/image-decoders/ico/ICOImageDecoder.cpp
index bc4f357..e9296ad 100644
--- a/WebCore/platform/image-decoders/ico/ICOImageDecoder.cpp
+++ b/WebCore/platform/image-decoders/ico/ICOImageDecoder.cpp
@@ -249,7 +249,7 @@ bool ICOImageDecoder::processDirectory()
ICON = 1,
CURSOR = 2,
};
- if (((fileType != ICON) && (fileType != CURSOR)) || (!idCount)) {
+ if (((fileType != ICON) && (fileType != CURSOR)) || (idCount == 0)) {
setFailed();
return false;
}
@@ -303,10 +303,10 @@ ICOImageDecoder::IconDirectoryEntry ICOImageDecoder::readDirectoryEntry()
// matching uint8_ts) is so we can record dimensions of size 256 (which is
// what a zero byte really means).
int width = static_cast<uint8_t>(m_data->data()[m_decodedOffset]);
- if (!width)
+ if (width == 0)
width = 256;
int height = static_cast<uint8_t>(m_data->data()[m_decodedOffset + 1]);
- if (!height)
+ if (height == 0)
height = 256;
IconDirectoryEntry entry;
entry.m_size = IntSize(width, height);
@@ -318,12 +318,11 @@ ICOImageDecoder::IconDirectoryEntry ICOImageDecoder::readDirectoryEntry()
// this isn't quite what the bitmap info header says later, as we only use
// this value to determine which icon entry is best.
if (!entry.m_bitCount) {
- int colorCount =
- static_cast<uint8_t>(m_data->data()[m_decodedOffset + 2]);
- if (!colorCount)
- colorCount = 256; // Vague in the spec, needed by real-world icons.
- for (--colorCount; colorCount; colorCount >>= 1)
- ++entry.m_bitCount;
+ uint8_t colorCount = m_data->data()[m_decodedOffset + 2];
+ if (colorCount) {
+ for (--colorCount; colorCount; colorCount >>= 1)
+ ++entry.m_bitCount;
+ }
}
m_decodedOffset += sizeOfDirEntry;
diff --git a/WebCore/platform/image-decoders/jpeg/JPEGImageDecoder.cpp b/WebCore/platform/image-decoders/jpeg/JPEGImageDecoder.cpp
index 2565ea6..ae09586 100644
--- a/WebCore/platform/image-decoders/jpeg/JPEGImageDecoder.cpp
+++ b/WebCore/platform/image-decoders/jpeg/JPEGImageDecoder.cpp
@@ -461,27 +461,11 @@ void JPEGImageDecoder::decode(bool sizeOnly)
}
}
-static void convertCMYKToRGBA(RGBA32Buffer& dest, int destY, JSAMPROW src, int srcWidth
-#if ENABLE(IMAGE_DECODER_DOWN_SAMPLING)
- , bool scaled, const Vector<int>& scaledColumns
-#endif
- )
+static void convertCMYKToRGBA(RGBA32Buffer& dest, JSAMPROW src, jpeg_decompress_struct* info)
{
-#if ENABLE(IMAGE_DECODER_DOWN_SAMPLING)
- if (scaled) {
- int numColumns = scaledColumns.size();
- for (int x = 0; x < numColumns; ++x) {
- JSAMPLE* jsample = src + scaledColumns[x] * 3;
- unsigned c = jsample[0];
- unsigned m = jsample[1];
- unsigned y = jsample[2];
- unsigned k = jsample[3];
- dest.setRGBA(x, destY, c * k / 255, m * k / 255, y * k / 255, 0xFF);
- }
- return;
- }
-#endif
- for (unsigned x = 0; x < srcWidth; ++x) {
+ ASSERT(info->out_color_space == JCS_CMYK);
+
+ for (unsigned x = 0; x < info->output_width; ++x) {
unsigned c = *src++;
unsigned m = *src++;
unsigned y = *src++;
@@ -505,31 +489,23 @@ static void convertCMYKToRGBA(RGBA32Buffer& dest, int destY, JSAMPROW src, int s
// G = 1 - M => 1 - (1 - iM*iK) => iM*iK
// B = 1 - Y => 1 - (1 - iY*iK) => iY*iK
- dest.setRGBA(x, destY, c * k / 255, m * k / 255, y * k / 255, 0xFF);
+ // read_scanlines has increased the scanline counter, so we
+ // actually mean the previous one.
+ dest.setRGBA(x, info->output_scanline - 1, c * k / 255, m * k / 255, y * k / 255, 0xFF);
}
}
-static void convertRGBToRGBA(RGBA32Buffer& dest, int destY, JSAMPROW src, int srcWidth
-#if ENABLE(IMAGE_DECODER_DOWN_SAMPLING)
- , bool scaled, const Vector<int>& scaledColumns
-#endif
- )
+static void convertRGBToRGBA(RGBA32Buffer& dest, JSAMPROW src, jpeg_decompress_struct* info)
{
-#if ENABLE(IMAGE_DECODER_DOWN_SAMPLING)
- if (scaled) {
- int numColumns = scaledColumns.size();
- for (int x = 0; x < numColumns; ++x) {
- JSAMPLE* jsample = src + scaledColumns[x] * 3;
- dest.setRGBA(x, destY, jsample[0], jsample[1], jsample[2], 0xFF);
- }
- return;
- }
-#endif
- for (unsigned x = 0; x < srcWidth; ++x) {
+ ASSERT(info->out_color_space == JCS_RGB);
+
+ for (unsigned x = 0; x < info->output_width; ++x) {
unsigned r = *src++;
unsigned g = *src++;
unsigned b = *src++;
- dest.setRGBA(x, destY, r, g, b, 0xFF);
+ // read_scanlines has increased the scanline counter, so we
+ // actually mean the previous one.
+ dest.setRGBA(x, info->output_scanline - 1, r, g, b, 0xFF);
}
}
@@ -541,17 +517,7 @@ bool JPEGImageDecoder::outputScanlines()
// Initialize the framebuffer if needed.
RGBA32Buffer& buffer = m_frameBufferCache[0];
if (buffer.status() == RGBA32Buffer::FrameEmpty) {
- int bufferWidth = size().width();
- int bufferHeight = size().height();
-#if ENABLE(IMAGE_DECODER_DOWN_SAMPLING)
- // Let's resize our buffer now to the correct width/height.
- if (m_scaled) {
- bufferWidth = m_scaledColumns.size();
- bufferHeight = m_scaledRows.size();
- }
-#endif
-
- if (!buffer.setSize(bufferWidth, bufferHeight)) {
+ if (!buffer.setSize(size().width(), size().height())) {
m_failed = true;
return false;
}
@@ -566,34 +532,16 @@ bool JPEGImageDecoder::outputScanlines()
JSAMPARRAY samples = m_reader->samples();
while (info->output_scanline < info->output_height) {
- // jpeg_read_scanlines will increase the scanline counter, so we
- // save the scanline before calling it.
- int sourceY = info->output_scanline;
/* Request one scanline. Returns 0 or 1 scanlines. */
if (jpeg_read_scanlines(info, samples, 1) != 1)
return false;
- int destY = sourceY;
-#if ENABLE(IMAGE_DECODER_DOWN_SAMPLING)
- if (m_scaled) {
- destY = scaledY(sourceY);
- if (destY < 0)
- continue;
- }
if (info->out_color_space == JCS_RGB)
- convertRGBToRGBA(buffer, destY, *samples, info->output_width, m_scaled, m_scaledColumns);
+ convertRGBToRGBA(buffer, *samples, info);
else if (info->out_color_space == JCS_CMYK)
- convertCMYKToRGBA(buffer, destY, *samples, info->output_width, m_scaled, m_scaledColumns);
+ convertCMYKToRGBA(buffer, *samples, info);
else
return false;
-#else
- if (info->out_color_space == JCS_RGB)
- convertRGBToRGBA(buffer, destY, *samples, info->output_width);
- else if (info->out_color_space == JCS_CMYK)
- convertCMYKToRGBA(buffer, destY, *samples, info->output_width);
- else
- return false;
-#endif
}
return true;
diff --git a/WebCore/platform/image-decoders/jpeg/JPEGImageDecoder.h b/WebCore/platform/image-decoders/jpeg/JPEGImageDecoder.h
index 4a822d7..56e007d 100644
--- a/WebCore/platform/image-decoders/jpeg/JPEGImageDecoder.h
+++ b/WebCore/platform/image-decoders/jpeg/JPEGImageDecoder.h
@@ -1,6 +1,5 @@
/*
* Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
- * Copyright (C) 2008-2009 Torch Mobile, Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -58,16 +57,6 @@ namespace WebCore {
bool outputScanlines();
void jpegComplete();
-#if ENABLE(IMAGE_DECODER_DOWN_SAMPLING)
- bool setSize(int width, int height)
- {
- if (!ImageDecoder::setSize(width, height))
- return false;
- prepareScaleDataIfNecessary();
- return true;
- }
-#endif
-
private:
JPEGImageReader* m_reader;
};
diff --git a/WebCore/platform/image-decoders/png/PNGImageDecoder.cpp b/WebCore/platform/image-decoders/png/PNGImageDecoder.cpp
index ad79fc8..d14333f 100644
--- a/WebCore/platform/image-decoders/png/PNGImageDecoder.cpp
+++ b/WebCore/platform/image-decoders/png/PNGImageDecoder.cpp
@@ -1,6 +1,5 @@
/*
* Copyright (C) 2006 Apple Computer, Inc.
- * Copyright (C) 2007-2009 Torch Mobile, Inc.
*
* Portions are Copyright (C) 2001 mozilla.org
*
@@ -243,9 +242,6 @@ void PNGImageDecoder::headerAvailable()
longjmp(png->jmpbuf, 1);
return;
}
-#if ENABLE(IMAGE_DECODER_DOWN_SAMPLING)
- prepareScaleDataIfNecessary();
-#endif
}
int bitDepth, colorType, interlaceType, compressionType, filterType, channels;
@@ -317,14 +313,7 @@ void PNGImageDecoder::rowAvailable(unsigned char* rowBuffer, unsigned rowIndex,
// Initialize the framebuffer if needed.
RGBA32Buffer& buffer = m_frameBufferCache[0];
if (buffer.status() == RGBA32Buffer::FrameEmpty) {
-#if ENABLE(IMAGE_DECODER_DOWN_SAMPLING)
- int width = m_scaled ? m_scaledColumns.size() : size().width();
- int height = m_scaled ? m_scaledRows.size() : size().height();
-#else
- int width = size().width();
- int height = size().height();
-#endif
- if (!buffer.setSize(width, height)) {
+ if (!buffer.setSize(size().width(), size().height())) {
static_cast<PNGImageDecoder*>(png_get_progressive_ptr(reader()->pngPtr()))->decodingFailed();
longjmp(reader()->pngPtr()->jmpbuf, 1);
return;
@@ -369,7 +358,7 @@ void PNGImageDecoder::rowAvailable(unsigned char* rowBuffer, unsigned rowIndex,
* to pass the current row, and the function will combine the
* old row and the new row.
*/
-
+
png_structp png = reader()->pngPtr();
bool hasAlpha = reader()->hasAlpha();
unsigned colorChannels = hasAlpha ? 4 : 3;
@@ -383,27 +372,8 @@ void PNGImageDecoder::rowAvailable(unsigned char* rowBuffer, unsigned rowIndex,
row = rowBuffer;
// Copy the data into our buffer.
-#if ENABLE(IMAGE_DECODER_DOWN_SAMPLING)
- if (m_scaled) {
- int destY = scaledY(rowIndex);
- if (destY < 0)
- return;
- int columns = m_scaledColumns.size();
- bool sawAlpha = buffer.hasAlpha();
- for (int x = 0; x < columns; ++x) {
- png_bytep pixel = row + m_scaledColumns[x] * 4;
- unsigned alpha = pixel[3];
- buffer.setRGBA(x, destY, pixel[0], pixel[1], pixel[2], alpha);
- if (!sawAlpha && alpha < 255) {
- sawAlpha = true;
- buffer.setHasAlpha(true);
- }
- }
- return;
- }
-#endif
int width = size().width();
- bool sawAlpha = buffer.hasAlpha();
+ bool sawAlpha = false;
for (int x = 0; x < width; x++) {
unsigned red = *row++;
unsigned green = *row++;
diff --git a/WebCore/platform/mac/CookieJar.mm b/WebCore/platform/mac/CookieJar.mm
index e1d3e5a..d8df601 100644
--- a/WebCore/platform/mac/CookieJar.mm
+++ b/WebCore/platform/mac/CookieJar.mm
@@ -27,7 +27,6 @@
#import "CookieJar.h"
#import "BlockExceptions.h"
-#import "Cookie.h"
#import "Document.h"
#import "KURL.h"
#import <wtf/RetainPtr.h>
@@ -117,52 +116,4 @@ bool cookiesEnabled(const Document*)
return false;
}
-bool getRawCookies(const Document*, const KURL& url, Vector<Cookie>& rawCookies)
-{
- rawCookies.clear();
- BEGIN_BLOCK_OBJC_EXCEPTIONS;
-
- NSURL *cookieURL = url;
- NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:cookieURL];
-
- NSUInteger count = [cookies count];
- rawCookies.reserveCapacity(count);
- for (NSUInteger i = 0; i < count; ++i) {
- NSHTTPCookie *cookie = (NSHTTPCookie *)[cookies objectAtIndex:i];
- NSString *name = [cookie name];
- NSString *value = [cookie value];
- NSString *domain = [cookie domain];
- NSString *path = [cookie path];
- NSTimeInterval expires = [[cookie expiresDate] timeIntervalSince1970] * 1000;
- bool httpOnly = [cookie isHTTPOnly];
- bool secure = [cookie isSecure];
- bool session = [cookie isSessionOnly];
- rawCookies.uncheckedAppend(Cookie(name, value, domain, path, expires, httpOnly, secure, session));
- }
-
- END_BLOCK_OBJC_EXCEPTIONS;
- return true;
-}
-
-void deleteCookie(const Document*, const KURL& url, const String& cookieName)
-{
- BEGIN_BLOCK_OBJC_EXCEPTIONS;
-
- NSURL *cookieURL = url;
- NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
- NSArray *cookies = [cookieStorage cookiesForURL:cookieURL];
- NSString *cookieNameString = (NSString *) cookieName;
-
- NSUInteger count = [cookies count];
- for (NSUInteger i = 0; i < count; ++i) {
- NSHTTPCookie *cookie = (NSHTTPCookie *)[cookies objectAtIndex:i];
- if ([[cookie name] isEqualToString:cookieNameString]) {
- [cookieStorage deleteCookie:cookie];
- break;
- }
- }
-
- END_BLOCK_OBJC_EXCEPTIONS;
-}
-
}
diff --git a/WebCore/platform/network/cf/DNSCFNet.cpp b/WebCore/platform/network/cf/DNSCFNet.cpp
index 9ae15cb..bf21ab1 100644
--- a/WebCore/platform/network/cf/DNSCFNet.cpp
+++ b/WebCore/platform/network/cf/DNSCFNet.cpp
@@ -1,6 +1,5 @@
/*
* Copyright (C) 2008 Collin Jackson <collinj@webkit.org>
- * 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
@@ -27,33 +26,13 @@
#include "config.h"
#include "DNS.h"
-#include "PlatformString.h"
-#include <wtf/RetainPtr.h>
-
-#ifdef BUILDING_ON_TIGER
-// This function is available on Tiger, but not declared in the CFRunLoop.h header on Tiger.
-extern "C" CFRunLoopRef CFRunLoopGetMain();
-#endif
+#include "NotImplemented.h"
namespace WebCore {
-static void clientCallback(CFHostRef theHost, CFHostInfoType, const CFStreamError*, void*)
-{
- CFRelease(theHost);
-}
-
-void prefetchDNS(const String& hostname)
+void prefetchDNS(const String&)
{
- RetainPtr<CFStringRef> hostnameCF(AdoptCF, hostname.createCFString());
- RetainPtr<CFHostRef> host(AdoptCF, CFHostCreateWithName(0, hostnameCF.get()));
- if (!host)
- return;
- CFHostClientContext context = { 0, 0, 0, 0, 0 };
- Boolean result = CFHostSetClient(host.get(), clientCallback, &context);
- ASSERT_UNUSED(result, result);
- CFHostScheduleWithRunLoop(host.get(), CFRunLoopGetMain(), kCFRunLoopCommonModes);
- CFHostStartInfoResolution(host.get(), kCFHostAddresses, 0);
- host.releaseRef(); // The host will be released from clientCallback().
+ notImplemented();
}
}
diff --git a/WebCore/platform/network/chromium/CookieJarChromium.cpp b/WebCore/platform/network/chromium/CookieJarChromium.cpp
index 7862cc3..65be451 100644
--- a/WebCore/platform/network/chromium/CookieJarChromium.cpp
+++ b/WebCore/platform/network/chromium/CookieJarChromium.cpp
@@ -31,7 +31,6 @@
#include "config.h"
#include "CookieJar.h"
-#include "Cookie.h"
#include "ChromiumBridge.h"
#include "Document.h"
@@ -53,16 +52,4 @@ bool cookiesEnabled(const Document*)
return true;
}
-bool getRawCookies(const Document*, const KURL&, Vector<Cookie>& rawCookies)
-{
- // FIXME: Not yet implemented
- rawCookies.clear();
- return false; // return true when implemented
-}
-
-void deleteCookie(const Document*, const KURL&, const String&)
-{
- // FIXME: Not yet implemented
-}
-
} // namespace WebCore
diff --git a/WebCore/platform/network/curl/CookieJarCurl.cpp b/WebCore/platform/network/curl/CookieJarCurl.cpp
index 3bad4e4..5ac0f9c 100644
--- a/WebCore/platform/network/curl/CookieJarCurl.cpp
+++ b/WebCore/platform/network/curl/CookieJarCurl.cpp
@@ -17,7 +17,6 @@
#include "config.h"
#include "CookieJar.h"
-#include "Cookie.h"
#include "Document.h"
#include "KURL.h"
#include "PlatformString.h"
@@ -44,16 +43,4 @@ bool cookiesEnabled(const Document* /*document*/)
return true;
}
-bool getRawCookies(const Document*, const KURL&, Vector<Cookie>& rawCookies)
-{
- // FIXME: Not yet implemented
- rawCookies.clear();
- return false; // return true when implemented
-}
-
-void deleteCookie(const Document*, const KURL&, const String&)
-{
- // FIXME: Not yet implemented
-}
-
}
diff --git a/WebCore/platform/network/curl/ResourceHandleManager.cpp b/WebCore/platform/network/curl/ResourceHandleManager.cpp
index baca717..2aa286a 100644
--- a/WebCore/platform/network/curl/ResourceHandleManager.cpp
+++ b/WebCore/platform/network/curl/ResourceHandleManager.cpp
@@ -5,8 +5,6 @@
* Copyright (C) 2007 Holger Hans Peter Freyther
* Copyright (C) 2008 Collabora Ltd.
* Copyright (C) 2008 Nuanti Ltd.
- * Copyright (C) 2009 Appcelerator Inc.
- * Copyright (C) 2009 Brent Fulgham <bfulgham@webkit.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -56,29 +54,10 @@ const int maxRunningJobs = 5;
static const bool ignoreSSLErrors = getenv("WEBKIT_IGNORE_SSL_ERRORS");
-static CString certificatePath()
-{
-#if PLATFORM(CF)
- CFBundleRef webKitBundle = CFBundleGetBundleWithIdentifier(CFSTR("com.apple.WebKit"));
- RetainPtr<CFURLRef> certURLRef(AdoptCF, CFBundleCopyResourceURL(webKitBundle, CFSTR("cacert"), CFSTR("pem"), CFSTR("certificates")));
- if (certURLRef) {
- char path[MAX_PATH];
- CFURLGetFileSystemRepresentation(certURLRef.get(), false, reinterpret_cast<UInt8*>(path), MAX_PATH);
- return path;
- }
-#endif
- char* envPath = getenv("CURL_CA_BUNDLE_PATH");
- if (envPath)
- return envPath;
-
- return CString();
-}
-
ResourceHandleManager::ResourceHandleManager()
: m_downloadTimer(this, &ResourceHandleManager::downloadTimerCallback)
, m_cookieJarFileName(0)
, m_runningJobs(0)
- , m_certificatePath (certificatePath())
{
curl_global_init(CURL_GLOBAL_ALL);
m_curlMultiHandle = curl_multi_init();
@@ -109,23 +88,6 @@ ResourceHandleManager* ResourceHandleManager::sharedInstance()
return sharedInstance;
}
-static void handleLocalReceiveResponse (CURL* handle, ResourceHandle* job, ResourceHandleInternal* d)
-{
- // since the code in headerCallback will not have run for local files
- // the code to set the URL and fire didReceiveResponse is never run,
- // which means the ResourceLoader's response does not contain the URL.
- // Run the code here for local files to resolve the issue.
- // TODO: See if there is a better approach for handling this.
- const char* hdr;
- CURLcode err = curl_easy_getinfo(handle, CURLINFO_EFFECTIVE_URL, &hdr);
- ASSERT(CURLE_OK == err);
- d->m_response.setURL(KURL(hdr));
- if (d->client())
- d->client()->didReceiveResponse(job, d->m_response);
- d->m_response.setResponseFired(true);
-}
-
-
// called with data after all headers have been processed via headerCallback
static size_t writeCallback(void* ptr, size_t size, size_t nmemb, void* data)
{
@@ -150,10 +112,18 @@ static size_t writeCallback(void* ptr, size_t size, size_t nmemb, void* data)
if (CURLE_OK == err && httpCode >= 300 && httpCode < 400)
return totalSize;
+ // since the code in headerCallback will not have run for local files
+ // the code to set the URL and fire didReceiveResponse is never run,
+ // which means the ResourceLoader's response does not contain the URL.
+ // Run the code here for local files to resolve the issue.
+ // TODO: See if there is a better approach for handling this.
if (!d->m_response.responseFired()) {
- handleLocalReceiveResponse(h, job, d);
- if (d->m_cancelled)
- return 0;
+ const char* hdr;
+ err = curl_easy_getinfo(h, CURLINFO_EFFECTIVE_URL, &hdr);
+ d->m_response.setURL(KURL(hdr));
+ if (d->client())
+ d->client()->didReceiveResponse(job, d->m_response);
+ d->m_response.setResponseFired(true);
}
if (d->client())
@@ -252,7 +222,6 @@ size_t readCallback(void* ptr, size_t size, size_t nmemb, void* data)
{
ResourceHandle* job = static_cast<ResourceHandle*>(data);
ResourceHandleInternal* d = job->getInternal();
-
if (d->m_cancelled)
return 0;
@@ -342,14 +311,6 @@ void ResourceHandleManager::downloadTimerCallback(Timer<ResourceHandleManager>*
continue;
if (CURLE_OK == msg->data.result) {
- if (!d->m_response.responseFired()) {
- handleLocalReceiveResponse(d->m_handle, job, d);
- if (d->m_cancelled) {
- removeFromCurl(job);
- continue;
- }
- }
-
if (d->client())
d->client()->didFinishLoading(job);
} else {
@@ -668,10 +629,6 @@ void ResourceHandleManager::initializeHandle(ResourceHandle* job)
// and/or reporting SSL errors to the user.
if (ignoreSSLErrors)
curl_easy_setopt(d->m_handle, CURLOPT_SSL_VERIFYPEER, false);
-
- if (!m_certificatePath.isNull())
- curl_easy_setopt(d->m_handle, CURLOPT_CAINFO, m_certificatePath.data());
-
// enable gzip and deflate through Accept-Encoding:
curl_easy_setopt(d->m_handle, CURLOPT_ENCODING, "");
diff --git a/WebCore/platform/network/curl/ResourceHandleManager.h b/WebCore/platform/network/curl/ResourceHandleManager.h
index 89b27d7..d38e577 100644
--- a/WebCore/platform/network/curl/ResourceHandleManager.h
+++ b/WebCore/platform/network/curl/ResourceHandleManager.h
@@ -29,7 +29,6 @@
#define ResourceHandleManager_h
#include "Frame.h"
-#include "CString.h"
#include "Timer.h"
#include "ResourceHandleClient.h"
@@ -72,7 +71,6 @@ private:
char* m_cookieJarFileName;
char m_curlErrorBuffer[CURL_ERROR_SIZE];
Vector<ResourceHandle*> m_resourceHandleList;
- const CString m_certificatePath;
int m_runningJobs;
};
diff --git a/WebCore/platform/network/soup/CookieJarSoup.cpp b/WebCore/platform/network/soup/CookieJarSoup.cpp
index 3eb578a..705fdf2 100644
--- a/WebCore/platform/network/soup/CookieJarSoup.cpp
+++ b/WebCore/platform/network/soup/CookieJarSoup.cpp
@@ -21,7 +21,6 @@
#include "config.h"
#include "CookieJarSoup.h"
-#include "Cookie.h"
#include "CString.h"
#include "Document.h"
#include "KURL.h"
@@ -87,16 +86,4 @@ bool cookiesEnabled(const Document* /*document*/)
return defaultCookieJar();
}
-bool getRawCookies(const Document*, const KURL&, Vector<Cookie>& rawCookies)
-{
- // FIXME: Not yet implemented
- rawCookies.clear();
- return false; // return true when implemented
-}
-
-void deleteCookie(const Document*, const KURL&, const String&)
-{
- // FIXME: Not yet implemented
-}
-
}
diff --git a/WebCore/platform/network/soup/ResourceHandleSoup.cpp b/WebCore/platform/network/soup/ResourceHandleSoup.cpp
index 280fc38..4a22d8a 100644
--- a/WebCore/platform/network/soup/ResourceHandleSoup.cpp
+++ b/WebCore/platform/network/soup/ResourceHandleSoup.cpp
@@ -118,7 +118,7 @@ void WebCoreSynchronousLoader::run()
g_main_loop_run(m_mainLoop);
}
-static void cleanupGioOperation(ResourceHandle* handle, bool isDestroying);
+static void cleanupGioOperation(ResourceHandleInternal* handle);
static bool startData(ResourceHandle* handle, String urlString);
static bool startGio(ResourceHandle* handle, KURL url);
@@ -129,6 +129,8 @@ ResourceHandleInternal::~ResourceHandleInternal()
m_msg = 0;
}
+ cleanupGioOperation(this);
+
if (m_idleHandler) {
g_source_remove(m_idleHandler);
m_idleHandler = 0;
@@ -140,8 +142,6 @@ ResourceHandle::~ResourceHandle()
if (d->m_msg)
g_signal_handlers_disconnect_matched(d->m_msg, G_SIGNAL_MATCH_DATA,
0, 0, 0, 0, this);
-
- cleanupGioOperation(this, true);
}
static void fillResponseFromMessage(SoupMessage* msg, ResourceResponse* response)
@@ -276,7 +276,7 @@ static void gotChunkCallback(SoupMessage* msg, SoupBuffer* chunk, gpointer data)
// Doesn't get called for redirects.
static void finishedCallback(SoupSession *session, SoupMessage* msg, gpointer data)
{
- RefPtr<ResourceHandle> handle = adoptRef(static_cast<ResourceHandle*>(data));
+ RefPtr<ResourceHandle>handle = adoptRef(static_cast<ResourceHandle*>(data));
// TODO: maybe we should run this code even if there's no client?
if (!handle)
return;
@@ -625,10 +625,8 @@ void ResourceHandle::loadResourceSynchronously(const ResourceRequest& request, S
// GIO-based loader
-static void cleanupGioOperation(ResourceHandle* handle, bool isDestroying = false)
+static void cleanupGioOperation(ResourceHandleInternal* d)
{
- ResourceHandleInternal* d = handle->getInternal();
-
if (d->m_gfile) {
g_object_set_data(G_OBJECT(d->m_gfile), "webkit-resource", 0);
g_object_unref(d->m_gfile);
@@ -650,14 +648,11 @@ static void cleanupGioOperation(ResourceHandle* handle, bool isDestroying = fals
g_free(d->m_buffer);
d->m_buffer = 0;
}
-
- if (!isDestroying)
- handle->deref();
}
static void closeCallback(GObject* source, GAsyncResult* res, gpointer)
{
- RefPtr<ResourceHandle> handle = static_cast<ResourceHandle*>(g_object_get_data(source, "webkit-resource"));
+ ResourceHandle* handle = static_cast<ResourceHandle*>(g_object_get_data(source, "webkit-resource"));
if (!handle)
return;
@@ -665,12 +660,13 @@ static void closeCallback(GObject* source, GAsyncResult* res, gpointer)
ResourceHandleClient* client = handle->client();
g_input_stream_close_finish(d->m_inputStream, res, 0);
- cleanupGioOperation(handle.get());
- client->didFinishLoading(handle.get());
+ cleanupGioOperation(d);
+ client->didFinishLoading(handle);
}
static void readCallback(GObject* source, GAsyncResult* res, gpointer)
{
+ // didReceiveData may cancel the load, which may release the last reference.
RefPtr<ResourceHandle> handle = static_cast<ResourceHandle*>(g_object_get_data(source, "webkit-resource"));
if (!handle)
return;
@@ -679,7 +675,7 @@ static void readCallback(GObject* source, GAsyncResult* res, gpointer)
ResourceHandleClient* client = handle->client();
if (d->m_cancelled || !client) {
- cleanupGioOperation(handle.get());
+ cleanupGioOperation(d);
return;
}
@@ -694,7 +690,7 @@ static void readCallback(GObject* source, GAsyncResult* res, gpointer)
error ? String::fromUTF8(error->message) : String());
g_free(uri);
g_error_free(error);
- cleanupGioOperation(handle.get());
+ cleanupGioOperation(d);
client->didFail(handle.get(), resourceError);
return;
}
@@ -708,9 +704,8 @@ static void readCallback(GObject* source, GAsyncResult* res, gpointer)
d->m_total += bytesRead;
client->didReceiveData(handle.get(), d->m_buffer, bytesRead, d->m_total);
- // didReceiveData may cancel the load, which may release the last reference.
if (d->m_cancelled) {
- cleanupGioOperation(handle.get());
+ cleanupGioOperation(d);
return;
}
@@ -721,7 +716,7 @@ static void readCallback(GObject* source, GAsyncResult* res, gpointer)
static void openCallback(GObject* source, GAsyncResult* res, gpointer)
{
- RefPtr<ResourceHandle> handle = static_cast<ResourceHandle*>(g_object_get_data(source, "webkit-resource"));
+ ResourceHandle* handle = static_cast<ResourceHandle*>(g_object_get_data(source, "webkit-resource"));
if (!handle)
return;
@@ -729,7 +724,7 @@ static void openCallback(GObject* source, GAsyncResult* res, gpointer)
ResourceHandleClient* client = handle->client();
if (d->m_cancelled || !client) {
- cleanupGioOperation(handle.get());
+ cleanupGioOperation(d);
return;
}
@@ -743,8 +738,8 @@ static void openCallback(GObject* source, GAsyncResult* res, gpointer)
error ? String::fromUTF8(error->message) : String());
g_free(uri);
g_error_free(error);
- cleanupGioOperation(handle.get());
- client->didFail(handle.get(), resourceError);
+ cleanupGioOperation(d);
+ client->didFail(handle, resourceError);
return;
}
@@ -752,8 +747,7 @@ static void openCallback(GObject* source, GAsyncResult* res, gpointer)
d->m_bufferSize = 8192;
d->m_buffer = static_cast<char*>(g_malloc(d->m_bufferSize));
d->m_total = 0;
-
- g_object_set_data(G_OBJECT(d->m_inputStream), "webkit-resource", handle.get());
+ g_object_set_data(G_OBJECT(d->m_inputStream), "webkit-resource", handle);
g_input_stream_read_async(d->m_inputStream, d->m_buffer, d->m_bufferSize,
G_PRIORITY_DEFAULT, d->m_cancellable,
readCallback, 0);
@@ -761,7 +755,7 @@ static void openCallback(GObject* source, GAsyncResult* res, gpointer)
static void queryInfoCallback(GObject* source, GAsyncResult* res, gpointer)
{
- RefPtr<ResourceHandle> handle = static_cast<ResourceHandle*>(g_object_get_data(source, "webkit-resource"));
+ ResourceHandle* handle = static_cast<ResourceHandle*>(g_object_get_data(source, "webkit-resource"));
if (!handle)
return;
@@ -769,7 +763,7 @@ static void queryInfoCallback(GObject* source, GAsyncResult* res, gpointer)
ResourceHandleClient* client = handle->client();
if (d->m_cancelled) {
- cleanupGioOperation(handle.get());
+ cleanupGioOperation(d);
return;
}
@@ -796,8 +790,8 @@ static void queryInfoCallback(GObject* source, GAsyncResult* res, gpointer)
error ? String::fromUTF8(error->message) : String());
g_free(uri);
g_error_free(error);
- cleanupGioOperation(handle.get());
- client->didFail(handle.get(), resourceError);
+ cleanupGioOperation(d);
+ client->didFail(handle, resourceError);
return;
}
@@ -810,8 +804,8 @@ static void queryInfoCallback(GObject* source, GAsyncResult* res, gpointer)
uri,
String());
g_free(uri);
- cleanupGioOperation(handle.get());
- client->didFail(handle.get(), resourceError);
+ cleanupGioOperation(d);
+ client->didFail(handle, resourceError);
return;
}
@@ -822,12 +816,7 @@ static void queryInfoCallback(GObject* source, GAsyncResult* res, gpointer)
g_file_info_get_modification_time(info, &tv);
response.setLastModifiedDate(tv.tv_sec);
- client->didReceiveResponse(handle.get(), response);
-
- if (d->m_cancelled) {
- cleanupGioOperation(handle.get());
- return;
- }
+ client->didReceiveResponse(handle, response);
g_file_read_async(d->m_gfile, G_PRIORITY_DEFAULT, d->m_cancellable,
openCallback, 0);
@@ -863,10 +852,6 @@ static bool startGio(ResourceHandle* handle, KURL url)
#endif
d->m_gfile = g_file_new_for_uri(url.string().utf8().data());
g_object_set_data(G_OBJECT(d->m_gfile), "webkit-resource", handle);
-
- // balanced by a deref() in cleanupGioOperation, which should always run
- handle->ref();
-
d->m_cancellable = g_cancellable_new();
g_file_query_info_async(d->m_gfile,
G_FILE_ATTRIBUTE_STANDARD_TYPE ","
diff --git a/WebCore/platform/network/win/CookieJarCFNetWin.cpp b/WebCore/platform/network/win/CookieJarCFNetWin.cpp
index 519a1b9..af9e3f3 100644
--- a/WebCore/platform/network/win/CookieJarCFNetWin.cpp
+++ b/WebCore/platform/network/win/CookieJarCFNetWin.cpp
@@ -26,7 +26,6 @@
#include "config.h"
#include "CookieJar.h"
-#include "Cookie.h"
#include "CookieStorageWin.h"
#include "Document.h"
#include "KURL.h"
@@ -114,16 +113,4 @@ bool cookiesEnabled(const Document* /*document*/)
return policy == CFHTTPCookieStorageAcceptPolicyOnlyFromMainDocumentDomain || policy == CFHTTPCookieStorageAcceptPolicyAlways;
}
-bool getRawCookies(const Document*, const KURL&, Vector<Cookie>& rawCookies)
-{
- // FIXME: Not yet implemented
- rawCookies.clear();
- return false; // return true when implemented
-}
-
-void deleteCookie(const Document*, const KURL&, const String&)
-{
- // FIXME: Not yet implemented
-}
-
}
diff --git a/WebCore/platform/network/win/CookieJarWin.cpp b/WebCore/platform/network/win/CookieJarWin.cpp
index 6576e07..41d12d9 100644
--- a/WebCore/platform/network/win/CookieJarWin.cpp
+++ b/WebCore/platform/network/win/CookieJarWin.cpp
@@ -26,7 +26,6 @@
#include "config.h"
#include "CookieJar.h"
-#include "Cookie.h"
#include "KURL.h"
#include "PlatformString.h"
#include "Document.h"
@@ -36,6 +35,7 @@
namespace WebCore {
+
void setCookies(Document* /*document*/, const KURL& url, const String& value)
{
// FIXME: Deal with document->firstPartyForCookies().
@@ -64,16 +64,4 @@ bool cookiesEnabled(const Document* /*document*/)
return true;
}
-bool getRawCookies(const Document*, const KURL&, Vector<Cookie>& rawCookies)
-{
- // FIXME: Not yet implemented
- rawCookies.clear();
- return false; // return true when implemented
-}
-
-void deleteCookie(const Document*, const KURL&, const String&)
-{
- // FIXME: Not yet implemented
-}
-
}
diff --git a/WebCore/platform/qt/CookieJarQt.cpp b/WebCore/platform/qt/CookieJarQt.cpp
index 56d3372..40d9309 100644
--- a/WebCore/platform/qt/CookieJarQt.cpp
+++ b/WebCore/platform/qt/CookieJarQt.cpp
@@ -28,7 +28,6 @@
#include "config.h"
#include "CookieJar.h"
-#include "Cookie.h"
#include "Document.h"
#include "KURL.h"
#include "PlatformString.h"
@@ -129,18 +128,6 @@ bool cookiesEnabled(const Document* document)
#endif
}
-bool getRawCookies(const Document*, const KURL&, Vector<Cookie>& rawCookies)
-{
- // FIXME: Not yet implemented
- rawCookies.clear();
- return false; // return true when implemented
-}
-
-void deleteCookie(const Document*, const KURL&, const String&)
-{
- // FIXME: Not yet implemented
-}
-
}
// vim: ts=4 sw=4 et
diff --git a/WebCore/platform/qt/FileSystemQt.cpp b/WebCore/platform/qt/FileSystemQt.cpp
index 02bc678..28d3ca7 100644
--- a/WebCore/platform/qt/FileSystemQt.cpp
+++ b/WebCore/platform/qt/FileSystemQt.cpp
@@ -81,7 +81,7 @@ bool makeAllDirectories(const String& path)
String pathByAppendingComponent(const String& path, const String& component)
{
- return QDir::toNativeSeparators(QDir(path).filePath(component));
+ return QDir(path).filePath(component);
}
String homeDirectoryPath()
diff --git a/WebCore/platform/text/PlatformString.h b/WebCore/platform/text/PlatformString.h
index 258b28d..6d5384f 100644
--- a/WebCore/platform/text/PlatformString.h
+++ b/WebCore/platform/text/PlatformString.h
@@ -56,10 +56,6 @@ QT_END_NAMESPACE
class wxString;
#endif
-#if PLATFORM(HAIKU)
-class BString;
-#endif
-
namespace WebCore {
class CString;
@@ -233,11 +229,6 @@ public:
operator wxString() const;
#endif
-#if PLATFORM(HAIKU)
- String(const BString&);
- operator BString() const;
-#endif
-
#ifndef NDEBUG
Vector<char> ascii() const;
#endif
diff --git a/WebCore/platform/text/UnicodeRange.h b/WebCore/platform/text/UnicodeRange.h
index 2278a0e..7ecf03f 100644
--- a/WebCore/platform/text/UnicodeRange.h
+++ b/WebCore/platform/text/UnicodeRange.h
@@ -35,10 +35,6 @@
#ifndef UnicodeRange_H
#define UnicodeRange_H
-#if PLATFORM(HAIKU)
-#include "stdint.h"
-#endif
-
#include <wtf/unicode/Unicode.h>
namespace WebCore {
diff --git a/WebCore/platform/text/haiku/TextBreakIteratorInternalICUHaiku.cpp b/WebCore/platform/text/haiku/TextBreakIteratorInternalICUHaiku.cpp
index 8bb8c70..2c732d6 100644
--- a/WebCore/platform/text/haiku/TextBreakIteratorInternalICUHaiku.cpp
+++ b/WebCore/platform/text/haiku/TextBreakIteratorInternalICUHaiku.cpp
@@ -26,12 +26,6 @@
namespace WebCore {
-const char* currentSearchLocaleID()
-{
- notImplemented();
- return "";
-}
-
const char* currentTextBreakLocaleID()
{
notImplemented();
diff --git a/WebCore/platform/text/mac/TextCodecMac.cpp b/WebCore/platform/text/mac/TextCodecMac.cpp
index 1152cc2..93b9da2 100644
--- a/WebCore/platform/text/mac/TextCodecMac.cpp
+++ b/WebCore/platform/text/mac/TextCodecMac.cpp
@@ -36,7 +36,7 @@
#include <wtf/PassOwnPtr.h>
#include <wtf/Threading.h>
-using namespace std;
+using std::min;
namespace WebCore {
@@ -141,7 +141,7 @@ OSStatus TextCodecMac::decode(const unsigned char* inputBuffer, int inputBufferL
// First, fill the partial character buffer with as many bytes as are available.
ASSERT(m_numBufferedBytes < sizeof(m_bufferedBytes));
const int spaceInBuffer = sizeof(m_bufferedBytes) - m_numBufferedBytes;
- const int bytesToPutInBuffer = min(spaceInBuffer, inputBufferLength);
+ const int bytesToPutInBuffer = MIN(spaceInBuffer, inputBufferLength);
ASSERT(bytesToPutInBuffer != 0);
memcpy(m_bufferedBytes + m_numBufferedBytes, inputBuffer, bytesToPutInBuffer);
diff --git a/WebCore/platform/win/PopupMenuWin.cpp b/WebCore/platform/win/PopupMenuWin.cpp
index 216c7c5..e53053f 100644
--- a/WebCore/platform/win/PopupMenuWin.cpp
+++ b/WebCore/platform/win/PopupMenuWin.cpp
@@ -94,11 +94,6 @@ PopupMenu::~PopupMenu()
::DestroyWindow(m_popup);
}
-LPCTSTR PopupMenu::popupClassName()
-{
- return kPopupWindowClassName;
-}
-
void PopupMenu::show(const IntRect& r, FrameView* v, int index)
{
calculatePositionAndSize(r, v);
diff --git a/WebCore/platform/wince/CursorWince.cpp b/WebCore/platform/wince/CursorWince.cpp
deleted file mode 100644
index e35f1f9..0000000
--- a/WebCore/platform/wince/CursorWince.cpp
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright (C) 2008-2009 Torch Mobile Inc.
- *
- * 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 "config.h"
-#include "Cursor.h"
-
-namespace WebCore {
-
-struct AllCursors {
- AllCursors()
- {
- for (int i = 0; i < NumCursorTypes; ++i)
- m_cursors[i] = (CursorType) i;
- }
- Cursor m_cursors[NumCursorTypes];
-};
-
-static const Cursor& getCursor(CursorType type)
-{
- static AllCursors allCursors;
- return allCursors.m_cursors[type];
-}
-
-Cursor::Cursor(const Cursor& other)
-: m_impl(other.m_impl)
-{
-}
-
-Cursor::Cursor(Image* img, const IntPoint& hotspot)
-: m_impl(CursorNone)
-{
-}
-
-Cursor::~Cursor()
-{
-}
-
-Cursor& Cursor::operator=(const Cursor& other)
-{
- m_impl = other.m_impl;
- return *this;
-}
-
-Cursor::Cursor(PlatformCursor c)
-: m_impl(c)
-{
-}
-
-const Cursor& noneCursor() { return getCursor(CursorNone); }
-const Cursor& pointerCursor() { return getCursor(CursorPointer); }
-const Cursor& crossCursor() { return getCursor(CursorCross); }
-const Cursor& handCursor() { return getCursor(CursorHand); }
-const Cursor& iBeamCursor() { return getCursor(CursorBeam); }
-const Cursor& waitCursor() { return getCursor(CursorWait); }
-const Cursor& helpCursor() { return getCursor(CursorHelp); }
-const Cursor& moveCursor() { return getCursor(CursorMove); }
-const Cursor& eastResizeCursor() { return getCursor(CursorEastResize); }
-const Cursor& northResizeCursor() { return getCursor(CursorNorthResize); }
-const Cursor& northEastResizeCursor() { return getCursor(CursorNorthEastResize); }
-const Cursor& northWestResizeCursor() { return getCursor(CursorNorthWestResize); }
-const Cursor& southResizeCursor() { return getCursor(CursorSouthResize); }
-const Cursor& southEastResizeCursor() { return getCursor(CursorSouthEastResize); }
-const Cursor& southWestResizeCursor() { return getCursor(CursorSouthWestResize); }
-const Cursor& westResizeCursor() { return getCursor(CursorWestResize); }
-const Cursor& northSouthResizeCursor() { return getCursor(CursorNorthSouthResize); }
-const Cursor& eastWestResizeCursor() { return getCursor(CursorEastWestResize); }
-const Cursor& northEastSouthWestResizeCursor() { return getCursor(CursorNorthEastSouthWestResize); }
-const Cursor& northWestSouthEastResizeCursor() { return getCursor(CursorNorthWestSouthEastResize); }
-const Cursor& columnResizeCursor() { return getCursor(CursorColumnResize); }
-const Cursor& rowResizeCursor() { return getCursor(CursorRowResize); }
-const Cursor& verticalTextCursor() { return getCursor(CursorVerticalText); }
-const Cursor& cellCursor() { return getCursor(CursorCell); }
-const Cursor& contextMenuCursor() { return getCursor(CursorContextMenu); }
-const Cursor& noDropCursor() { return getCursor(CursorNoDrop); }
-const Cursor& notAllowedCursor() { return getCursor(CursorNotAllowed); }
-const Cursor& progressCursor() { return getCursor(CursorProgress); }
-const Cursor& aliasCursor() { return getCursor(CursorAlias); }
-const Cursor& zoomInCursor() { return getCursor(CursorZoomIn); }
-const Cursor& zoomOutCursor() { return getCursor(CursorZoomOut); }
-const Cursor& copyCursor() { return getCursor(CursorCopy); }
-const Cursor& middlePanningCursor() { return crossCursor(); }
-const Cursor& eastPanningCursor() { return crossCursor(); }
-const Cursor& northPanningCursor() { return crossCursor(); }
-const Cursor& northEastPanningCursor() { return crossCursor(); }
-const Cursor& northWestPanningCursor() { return crossCursor(); }
-const Cursor& southPanningCursor() { return crossCursor(); }
-const Cursor& southEastPanningCursor() { return crossCursor(); }
-const Cursor& southWestPanningCursor() { return crossCursor(); }
-const Cursor& westPanningCursor() { return crossCursor(); }
-const Cursor& grabbingCursor() { return moveCursor(); }
-const Cursor& grabCursor() { return moveCursor(); }
-
-}
diff --git a/WebCore/platform/wince/DragDataWince.cpp b/WebCore/platform/wince/DragDataWince.cpp
deleted file mode 100644
index 881d7d4..0000000
--- a/WebCore/platform/wince/DragDataWince.cpp
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (C) 2007-2008 Torch Mobile, Inc.
- *
- * 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 "config.h"
-#include "DragData.h"
-
-#include "Clipboard.h"
-#include "DocumentFragment.h"
-#include "PlatformString.h"
-
-namespace WebCore {
-
-PassRefPtr<Clipboard> DragData::createClipboard(ClipboardAccessPolicy policy) const
-{
- return 0;
-}
-
-bool DragData::containsURL() const
-{
- return false;
-}
-
-String DragData::asURL(String* title) const
-{
- return String();
-}
-
-bool DragData::containsFiles() const
-{
- return false;
-}
-
-void DragData::asFilenames(Vector<String>&) const
-{
-}
-
-bool DragData::containsPlainText() const
-{
- return false;
-}
-
-String DragData::asPlainText() const
-{
- return String();
-}
-
-bool DragData::containsColor() const
-{
- return false;
-}
-
-bool DragData::canSmartReplace() const
-{
- return false;
-}
-
-bool DragData::containsCompatibleContent() const
-{
- return false;
-}
-
-PassRefPtr<DocumentFragment> DragData::asFragment(Document* doc) const
-{
- return 0;
-}
-
-Color DragData::asColor() const
-{
- return Color();
-}
-
-}
-
diff --git a/WebCore/platform/wince/DragImageWince.cpp b/WebCore/platform/wince/DragImageWince.cpp
deleted file mode 100644
index 4d60f80..0000000
--- a/WebCore/platform/wince/DragImageWince.cpp
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (C) 2007-2008 Torch Mobile, Inc.
- *
- * 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 "config.h"
-#include "DragImage.h"
-
-#include "CachedImage.h"
-#include "GraphicsContext.h"
-#include "Image.h"
-
-#include <windows.h>
-
-namespace WebCore {
-
-IntSize dragImageSize(DragImageRef)
-{
- return IntSize(0, 0);
-}
-
-void deleteDragImage(DragImageRef image)
-{
- if (image)
- ::DeleteObject(image);
-}
-
-DragImageRef scaleDragImage(DragImageRef, FloatSize)
-{
- return 0;
-}
-
-DragImageRef dissolveDragImageToFraction(DragImageRef image, float)
-{
- return image;
-}
-
-DragImageRef createDragImageFromImage(Image*)
-{
- return 0;
-}
-
-DragImageRef createDragImageIconForCachedImage(CachedImage*)
-{
- return 0;
-}
-
-}
diff --git a/WebCore/platform/wince/EditorWince.cpp b/WebCore/platform/wince/EditorWince.cpp
deleted file mode 100644
index 02af780..0000000
--- a/WebCore/platform/wince/EditorWince.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2007-2008 Torch Mobile, Inc.
- *
- * 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 "config.h"
-
-#include "Editor.h"
-
-#include "ClipboardWince.h"
-#include "Document.h"
-#include "EditorClient.h"
-#include "Element.h"
-#include "HtmlEditing.h"
-#include "TextIterator.h"
-#include "visible_units.h"
-
-#include <windows.h>
-#define _SYS_GUID_OPERATORS_
-
-namespace WebCore {
-
-PassRefPtr<Clipboard> Editor::newGeneralClipboard(ClipboardAccessPolicy policy)
-{
- return adoptRef(new ClipboardWince(policy, false));
-}
-
-} // namespace WebCore
diff --git a/WebCore/platform/wince/FileChooserWince.cpp b/WebCore/platform/wince/FileChooserWince.cpp
deleted file mode 100644
index 07c99b1..0000000
--- a/WebCore/platform/wince/FileChooserWince.cpp
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
- * Copyright (C) 2007-2009 Torch Mobile, Inc.
- *
- * 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 "config.h"
-#include "FileChooser.h"
-
-#include "Chrome.h"
-#include "ChromeClient.h"
-#include "Document.h"
-#include "Frame.h"
-#include "Icon.h"
-#include "LocalizedStrings.h"
-#include "Page.h"
-#include "StringTruncator.h"
-
-namespace WebCore {
-
-String pathGetFileName(const String& path);
-
-String FileChooser::basenameForWidth(const Font& font, int width) const
-{
- if (width <= 0)
- return String();
-
- String string;
- if (m_filenames.isEmpty())
- string = fileButtonNoFileSelectedLabel();
- else if (m_filenames.size() == 1) {
- String tmpFilename = m_filenames[0];
- string = pathGetFileName(tmpFilename);
- } else
- return StringTruncator::rightTruncate(String::number(m_filenames.size()) + " files", width, font, false);
-
- return StringTruncator::centerTruncate(string, width, font, false);
-}
-
-}
diff --git a/WebCore/platform/wince/FileSystemWince.cpp b/WebCore/platform/wince/FileSystemWince.cpp
deleted file mode 100644
index 2bb4dd5..0000000
--- a/WebCore/platform/wince/FileSystemWince.cpp
+++ /dev/null
@@ -1,283 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- * Copyright (C) 2008 Collabora, Ltd. All rights reserved.
- * Copyright (C) 2007-2009 Torch Mobile, Inc.
- *
- * 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. ("Apple") 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 "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 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 "config.h"
-#include "FileSystem.h"
-
-#include "CString.h"
-#include "PlatformString.h"
-
-#include <windows.h>
-#include <wincrypt.h>
-
-namespace WebCore {
-
-static bool getFileInfo(const String& path, BY_HANDLE_FILE_INFORMATION& fileInfo)
-{
- String filename = path;
- HANDLE hFile = CreateFile(filename.charactersWithNullTermination(), GENERIC_READ, FILE_SHARE_READ, 0
- , OPEN_EXISTING, FILE_FLAG_NO_BUFFERING, 0);
-
- if (hFile == INVALID_HANDLE_VALUE)
- return false;
-
- bool rtn = GetFileInformationByHandle(hFile, &fileInfo) ? true : false;
-
- CloseHandle(hFile);
- return rtn;
-}
-
-bool getFileSize(const String& path, long long& result)
-{
- BY_HANDLE_FILE_INFORMATION fileInformation;
- if (!getFileInfo(path, fileInformation))
- return false;
-
- ULARGE_INTEGER fileSize;
- fileSize.LowPart = fileInformation.nFileSizeLow;
- fileSize.HighPart = fileInformation.nFileSizeHigh;
-
- result = fileSize.QuadPart;
-
- return true;
-}
-
-bool getFileModificationTime(const String& path, time_t& result)
-{
- BY_HANDLE_FILE_INFORMATION fileInformation;
- if (!getFileInfo(path, fileInformation))
- return false;
-
- ULARGE_INTEGER t;
- memcpy(&t, &fileInformation.ftLastWriteTime, sizeof(t));
-
- result = t.QuadPart * 0.0000001 - 11644473600.0;
-
- return true;
-}
-
-bool fileExists(const String& path)
-{
- String filename = path;
- HANDLE hFile = CreateFile(filename.charactersWithNullTermination(), 0, FILE_SHARE_READ | FILE_SHARE_WRITE
- , 0, OPEN_EXISTING, FILE_FLAG_NO_BUFFERING, 0);
-
- CloseHandle(hFile);
-
- return hFile != INVALID_HANDLE_VALUE;
-}
-
-bool deleteFile(const String& path)
-{
- String filename = path;
- return !!DeleteFileW(filename.charactersWithNullTermination());
-}
-
-
-bool deleteEmptyDirectory(const String& path)
-{
- String filename = path;
- return !!RemoveDirectoryW(filename.charactersWithNullTermination());
-}
-
-String pathByAppendingComponent(const String& path, const String& component)
-{
- if (component.isEmpty())
- return path;
-
- Vector<UChar, MAX_PATH> buffer;
-
- buffer.append(path.characters(), path.length());
-
- if (buffer.last() != L'\\' && buffer.last() != L'/'
- && component[0] != L'\\' && component[0] != L'/')
- buffer.append(L'\\');
-
- buffer.append(component.characters(), component.length());
-
- return String(buffer.data(), buffer.size());
-}
-
-CString fileSystemRepresentation(const String&)
-{
- return "";
-}
-
-bool makeAllDirectories(const String& path)
-{
- int lastDivPos = max(path.reverseFind('/'), path.reverseFind('\\'));
- int endPos = path.length();
- if (lastDivPos == path.length() - 1) {
- endPos -= 1;
- lastDivPos = max(path.reverseFind('/', lastDivPos), path.reverseFind('\\', lastDivPos));
- }
-
- if (lastDivPos > 0) {
- if (!makeAllDirectories(path.substring(0, lastDivPos)))
- return false;
- }
-
- String folder(path.substring(0, endPos));
- CreateDirectory(folder.charactersWithNullTermination(), 0);
-
- DWORD fileAttr = GetFileAttributes(folder.charactersWithNullTermination());
- return fileAttr != 0xFFFFFFFF && (fileAttr & FILE_ATTRIBUTE_DIRECTORY);
-}
-
-String homeDirectoryPath()
-{
- notImplemented();
- return "";
-}
-
-String pathGetFileName(const String& path)
-{
- return path.substring(max(path.reverseFind('/'), path.reverseFind('\\')) + 1);
-}
-
-String directoryName(const String& path)
-{
- notImplemented();
- return String();
-}
-
-CString openTemporaryFile(const char*, PlatformFileHandle& handle)
-{
- handle = INVALID_HANDLE_VALUE;
-
- wchar_t tempPath[MAX_PATH];
- int tempPathLength = ::GetTempPath(_countof(tempPath), tempPath);
- if (tempPathLength <= 0 || tempPathLength > _countof(tempPath))
- return CString();
-
- HCRYPTPROV hCryptProv = 0;
- if (!CryptAcquireContext(&hCryptProv, 0, 0, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT))
- return CString();
-
- String proposedPath;
- while (1) {
-
- wchar_t tempFile[] = L"XXXXXXXX.tmp"; // Use 8.3 style name (more characters aren't helpful due to 8.3 short file names)
- const int randomPartLength = 8;
- if (!CryptGenRandom(hCryptProv, randomPartLength * 2, reinterpret_cast<BYTE*>(tempFile)))
- break;
-
- // Limit to valid filesystem characters, also excluding others that could be problematic, like punctuation.
- // don't include both upper and lowercase since Windows file systems are typically not case sensitive.
- const char validChars[] = "0123456789abcdefghijklmnopqrstuvwxyz";
- for (int i = 0; i < randomPartLength; ++i)
- tempFile[i] = validChars[tempFile[i] % (sizeof(validChars) - 1)];
-
- ASSERT(wcslen(tempFile) * 2 == sizeof(tempFile) - 2);
-
- proposedPath = pathByAppendingComponent(String(tempPath), String(tempFile));
-
- // use CREATE_NEW to avoid overwriting an existing file with the same name
- handle = CreateFile(proposedPath.charactersWithNullTermination(), GENERIC_READ | GENERIC_WRITE, 0, 0, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0);
- if (!isHandleValid(handle) && GetLastError() == ERROR_ALREADY_EXISTS)
- continue;
-
- break;
- }
-
- CryptReleaseContext(hCryptProv, 0);
-
- if (!isHandleValid(handle))
- return CString();
-
- return proposedPath.latin1();
-}
-
-void closeFile(PlatformFileHandle& handle)
-{
- if (isHandleValid(handle)) {
- ::CloseHandle(handle);
- handle = invalidPlatformFileHandle;
- }
-}
-
-int writeToFile(PlatformFileHandle handle, const char* data, int length)
-{
- if (!isHandleValid(handle))
- return -1;
-
- DWORD bytesWritten;
- bool success = WriteFile(handle, data, length, &bytesWritten, 0);
-
- if (!success)
- return -1;
- return static_cast<int>(bytesWritten);
-}
-
-bool unloadModule(PlatformModule module)
-{
- return ::FreeLibrary(module);
-}
-
-String localUserSpecificStorageDirectory()
-{
- return String(L"\\");
-}
-
-String roamingUserSpecificStorageDirectory()
-{
- return String(L"\\");
-}
-
-Vector<String> listDirectory(const String& path, const String& filter)
-{
- Vector<String> entries;
-
- Vector<UChar, 256> pattern;
- pattern.append(path.characters(), path.length());
- if (pattern.last() != L'/' && pattern.last() != L'\\')
- pattern.append(L'\\');
-
- String root(pattern.data(), pattern.size());
- pattern.append(filter.characters(), filter.length());
- pattern.append(0);
-
- WIN32_FIND_DATA findData;
- HANDLE hFind = FindFirstFile(pattern.data(), &findData);
- if (INVALID_HANDLE_VALUE != hFind) {
- do {
- // FIXEME: should we also add the folders? This function
- // is so far only called by PluginDatabase.cpp to list
- // all plugins in a folder, where it's not supposed to list sub-folders.
- if (!(findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
- entries.append(root + findData.cFileName);
- } while (FindNextFile(hFind, &findData));
- FindClose(hFind);
- }
-
- return entries;
-}
-
-}
diff --git a/WebCore/platform/wince/KURLWince.cpp b/WebCore/platform/wince/KURLWince.cpp
deleted file mode 100644
index 5ca1e4b..0000000
--- a/WebCore/platform/wince/KURLWince.cpp
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (C) 2009 Torch Mobile Inc.
- *
- * 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 "config.h"
-#include "KURL.h"
-
-namespace WebCore {
-
-String KURL::fileSystemPath() const
-{
- return path();
-}
-
-}
diff --git a/WebCore/platform/wince/KeygenWince.cpp b/WebCore/platform/wince/KeygenWince.cpp
deleted file mode 100644
index b0f4d63..0000000
--- a/WebCore/platform/wince/KeygenWince.cpp
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright (C) 2008-2009 Torch Mobile Inc.
- *
- * 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 "config.h"
-#include "SSLKeyGenerator.h"
-
-#include "Base64.h"
-#include "CString.h"
-
-#include <windows.h>
-#include <wincrypt.h>
-
-namespace WebCore {
-
-void WebCore::getSupportedKeySizes(Vector<String>& v)
-{
- v.append("High Grade");
- v.append("Medium Grade");
-}
-
-String WebCore::signedPublicKeyAndChallengeString(unsigned index, const String& challenge, const KURL& url)
-{
- String keyString;
-
- HCRYPTPROV hContext = 0;
- HCRYPTKEY hKey = 0;
- PCERT_PUBLIC_KEY_INFO pPubInfo = 0;
-
- // Try to delete it if it exists already
- CryptAcquireContext(&hContext, _T("keygen_container"), MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_DELETEKEYSET);
-
- do {
- if (!CryptAcquireContext(&hContext, _T("keygen_container"), MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_NEWKEYSET))
- break;
-
- DWORD dwPubInfoLength = 0;
- if (!CryptGenKey(hContext, AT_KEYEXCHANGE, 0, &hKey) || !CryptExportPublicKeyInfo(hContext, AT_KEYEXCHANGE, X509_ASN_ENCODING, 0, &dwPubInfoLength))
- break;
-
- // Use malloc instead of new, because malloc guarantees to return a pointer aligned for all data types.
- pPubInfo = reinterpret_cast<PCERT_PUBLIC_KEY_INFO>(fastMalloc(dwPubInfoLength));
-
- if (!CryptExportPublicKeyInfo(hContext, AT_KEYEXCHANGE, X509_ASN_ENCODING, pPubInfo, &dwPubInfoLength))
- break;
-
- CERT_KEYGEN_REQUEST_INFO requestInfo = { 0 };
- requestInfo.dwVersion = CERT_KEYGEN_REQUEST_V1;
- requestInfo.pwszChallengeString = L"";
- requestInfo.SubjectPublicKeyInfo = *pPubInfo;
-
- String localChallenge = challenge;
-
- // Windows API won't write to our buffer, although it's not declared with const.
- requestInfo.pwszChallengeString = const_cast<wchar_t*>(localChallenge.charactersWithNullTermination());
-
- CRYPT_ALGORITHM_IDENTIFIER signAlgo = { 0 };
- signAlgo.pszObjId = szOID_RSA_SHA1RSA;
-
- DWORD dwEncodedLength;
- if (!CryptSignAndEncodeCertificate(hContext, AT_KEYEXCHANGE, X509_ASN_ENCODING, X509_KEYGEN_REQUEST_TO_BE_SIGNED, &requestInfo, &signAlgo, 0, 0, &dwEncodedLength))
- break;
-
- Vector<char> binary(dwEncodedLength);
- if (!CryptSignAndEncodeCertificate(hContext, AT_KEYEXCHANGE, X509_ASN_ENCODING, X509_KEYGEN_REQUEST_TO_BE_SIGNED, &requestInfo, &signAlgo, 0, reinterpret_cast<LPBYTE>(binary.data()), &dwEncodedLength))
- break;
-
- Vector<char> base64;
- base64Encode(binary, base64);
- keyString = String(base64.data(), base64.size());
-
- } while(0);
-
- if (pPubInfo)
- fastFree(pPubInfo);
-
- if (hKey)
- CryptDestroyKey(hKey);
-
- if (hContext)
- CryptReleaseContext(hContext, 0);
-
- return keyString;
-}
-
-} // namespace WebCore
diff --git a/WebCore/platform/wince/MIMETypeRegistryWince.cpp b/WebCore/platform/wince/MIMETypeRegistryWince.cpp
deleted file mode 100644
index 2ecde48..0000000
--- a/WebCore/platform/wince/MIMETypeRegistryWince.cpp
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
- * Copyright (C) 2007-2009 Torch Mobile, Inc.
- *
- * 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 "config.h"
-#include "MIMETypeRegistry.h"
-
-#include <windows.h>
-#include <winreg.h>
-
-namespace WebCore {
-
-static String mimeTypeForExtension(const String& extension)
-{
- String ext = "." + extension;
- WCHAR contentTypeStr[256];
- DWORD contentTypeStrLen = sizeof(contentTypeStr);
- DWORD valueType;
-
- HKEY key;
- String result;
- if (ERROR_SUCCESS != RegOpenKeyEx(HKEY_CLASSES_ROOT, ext.charactersWithNullTermination(), 0, 0, &key))
- return result;
-
- if (ERROR_SUCCESS == RegQueryValueEx(key, L"Content Type", 0, &valueType, (LPBYTE)contentTypeStr, &contentTypeStrLen) && valueType == REG_SZ)
- result = String(contentTypeStr, contentTypeStrLen / sizeof(contentTypeStr[0]) - 1);
-
- RegCloseKey(key);
-
- return result;
-}
-
-static HashMap<String, String> mimetypeMap;
-
-static void initMIMETypeEntensionMap()
-{
- if (mimetypeMap.isEmpty()) {
- //fill with initial values
- mimetypeMap.add("txt", "text/plain");
- mimetypeMap.add("pdf", "application/pdf");
- mimetypeMap.add("ps", "application/postscript");
- mimetypeMap.add("html", "text/html");
- mimetypeMap.add("htm", "text/html");
- mimetypeMap.add("xml", "text/xml");
- mimetypeMap.add("xsl", "text/xsl");
- mimetypeMap.add("js", "application/x-javascript");
- mimetypeMap.add("xhtml", "application/xhtml+xml");
- mimetypeMap.add("rss", "application/rss+xml");
- mimetypeMap.add("webarchive", "application/x-webarchive");
- mimetypeMap.add("svg", "image/svg+xml");
- mimetypeMap.add("svgz", "image/svg+xml");
- mimetypeMap.add("jpg", "image/jpeg");
- mimetypeMap.add("jpeg", "image/jpeg");
- mimetypeMap.add("png", "image/png");
- mimetypeMap.add("tif", "image/tiff");
- mimetypeMap.add("tiff", "image/tiff");
- mimetypeMap.add("ico", "image/ico");
- mimetypeMap.add("cur", "image/ico");
- mimetypeMap.add("bmp", "image/bmp");
- mimetypeMap.add("css", "text/css");
- // FIXME: Custom font works only when MIME is "text/plain"
- mimetypeMap.add("ttf", "text/plain"); // "font/ttf"
- mimetypeMap.add("otf", "text/plain"); // "font/otf"
-#if ENABLE(WML)
- mimetypeMap.add("wml", "text/vnd.wap.wml");
-#endif
-#if ENABLE(WBXML)
- mimetypeMap.add("wbxml", "application/vnd.wap.wmlc");
-#endif
- }
-}
-
-String MIMETypeRegistry::getPreferredExtensionForMIMEType(const String& type)
-{
- if (type.isEmpty())
- return String();
-
- // Avoid conflicts with "ttf" and "otf"
- if (equalIgnoringCase(type, "text/plain"))
- return "txt";
-
- initMIMETypeEntensionMap();
-
- for (HashMap<String, String>::iterator i = mimetypeMap.begin(); i != mimetypeMap.end(); ++i) {
- if (equalIgnoringCase(i->second, type))
- return i->first;
- }
-
-#if ENABLE(XHTMLMP)
- if (equalIgnoringCase("application/vnd.wap.xhtml+xml", type))
- return String("xml");
-#endif
-
- return String();
-}
-
-String MIMETypeRegistry::getMIMETypeForExtension(const String &ext)
-{
- if (ext.isEmpty())
- return String();
-
- initMIMETypeEntensionMap();
-
- String result = mimetypeMap.get(ext.lower());
- if (result.isEmpty()) {
- result = mimeTypeForExtension(ext);
- if (!result.isEmpty())
- mimetypeMap.add(ext, result);
- }
- return result.isEmpty() ? "unknown/unknown" : result;
-}
-
-}
diff --git a/WebCore/platform/wince/PasteboardWince.cpp b/WebCore/platform/wince/PasteboardWince.cpp
deleted file mode 100644
index cba85b8..0000000
--- a/WebCore/platform/wince/PasteboardWince.cpp
+++ /dev/null
@@ -1,315 +0,0 @@
-/*
- * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
- * Copyright (C) 2007-2009 Torch Mobile, Inc.
- *
- * 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 "config.h"
-#include "Pasteboard.h"
-
-#include "CString.h"
-#include "ClipboardUtilitiesWin.h"
-#include "Document.h"
-#include "DocumentFragment.h"
-#include "Element.h"
-#include "Frame.h"
-#include "HitTestResult.h"
-#include "Image.h"
-#include "KURL.h"
-#include "Page.h"
-#include "Range.h"
-#include "RenderImage.h"
-#include "TextEncoding.h"
-#include "markup.h"
-
-namespace WebCore {
-
-static UINT HTMLClipboardFormat = 0;
-static UINT BookmarkClipboardFormat = 0;
-static UINT WebSmartPasteFormat = 0;
-
-extern HDC hScreenDC;
-
-static LRESULT CALLBACK PasteboardOwnerWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
-{
- LRESULT lresult = 0;
- LONG longPtr = GetWindowLong(hWnd, 0);
-
- switch (message) {
- case WM_RENDERFORMAT:
- // This message comes when SetClipboardData was sent a null data handle
- // and now it's come time to put the data on the clipboard.
- break;
- case WM_RENDERALLFORMATS:
- // This message comes when SetClipboardData was sent a null data handle
- // and now this application is about to quit, so it must put data on
- // the clipboard before it exits.
- break;
- case WM_DESTROY:
- break;
- default:
- lresult = DefWindowProc(hWnd, message, wParam, lParam);
- break;
- }
- return lresult;
-}
-
-Pasteboard* Pasteboard::generalPasteboard()
-{
- static Pasteboard* pasteboard = new Pasteboard;
- return pasteboard;
-}
-
-Pasteboard::Pasteboard()
-{
- // make a dummy HWND to be the Windows clipboard's owner
- WNDCLASS wc = {0};
- memset(&wc, 0, sizeof(wc));
- wc.lpfnWndProc = PasteboardOwnerWndProc;
- wc.hInstance = Page::instanceHandle();
- wc.lpszClassName = L"PasteboardOwnerWindowClass";
- ::RegisterClass(&wc);
-
- m_owner = ::CreateWindow(L"PasteboardOwnerWindowClass", L"PasteboardOwnerWindow", 0, 0, 0, 0, 0,
- HWND_MESSAGE, 0, 0, 0);
-
- HTMLClipboardFormat = ::RegisterClipboardFormat(L"HTML Format");
- BookmarkClipboardFormat = ::RegisterClipboardFormat(L"UniformResourceLocatorW");
- WebSmartPasteFormat = ::RegisterClipboardFormat(L"WebKit Smart Paste Format");
-}
-
-void Pasteboard::clear()
-{
- if (::OpenClipboard(m_owner)) {
- ::EmptyClipboard();
- ::CloseClipboard();
- }
-}
-
-void Pasteboard::writeSelection(Range* selectedRange, bool canSmartCopyOrDelete, Frame* frame)
-{
- clear();
-
- // Put CF_HTML format on the pasteboard
- if (::OpenClipboard(m_owner)) {
- ExceptionCode ec = 0;
- Vector<char> data;
- markupToCF_HTML(createMarkup(selectedRange, 0, AnnotateForInterchange), selectedRange->startContainer(ec)->document()->url(), data);
- HGLOBAL cbData = createGlobalData(data);
- if (!::SetClipboardData(HTMLClipboardFormat, cbData))
- ::GlobalFree(cbData);
- ::CloseClipboard();
- }
-
- // Put plain string on the pasteboard. CF_UNICODETEXT covers CF_TEXT as well
- String str = frame->selectedText();
- replaceNewlinesWithWindowsStyleNewlines(str);
- replaceNBSPWithSpace(str);
- if (::OpenClipboard(m_owner)) {
- HGLOBAL cbData = createGlobalData(str);
- if (!::SetClipboardData(CF_UNICODETEXT, cbData))
- ::GlobalFree(cbData);
- ::CloseClipboard();
- }
-
- // enable smart-replacing later on by putting dummy data on the pasteboard
- if (canSmartCopyOrDelete) {
- if (::OpenClipboard(m_owner)) {
- ::SetClipboardData(WebSmartPasteFormat, 0);
- ::CloseClipboard();
- }
- }
-}
-
-void Pasteboard::writeURL(const KURL& url, const String& titleStr, Frame* frame)
-{
- ASSERT(!url.isEmpty());
-
- clear();
-
- String title(titleStr);
- if (title.isEmpty()) {
- title = url.lastPathComponent();
- if (title.isEmpty())
- title = url.host();
- }
-
- // write to clipboard in format com.apple.safari.bookmarkdata to be able to paste into the bookmarks view with appropriate title
- if (::OpenClipboard(m_owner)) {
- HGLOBAL cbData = createGlobalData(url, title);
- if (!::SetClipboardData(BookmarkClipboardFormat, cbData))
- ::GlobalFree(cbData);
- ::CloseClipboard();
- }
-
- // write to clipboard in format CF_HTML to be able to paste into contenteditable areas as a link
- if (::OpenClipboard(m_owner)) {
- Vector<char> data;
- markupToCF_HTML(urlToMarkup(url, title), "", data);
- HGLOBAL cbData = createGlobalData(data);
- if (!::SetClipboardData(HTMLClipboardFormat, cbData))
- ::GlobalFree(cbData);
- ::CloseClipboard();
- }
-
- // bare-bones CF_UNICODETEXT support
- if (::OpenClipboard(m_owner)) {
- HGLOBAL cbData = createGlobalData(url.string());
- if (!::SetClipboardData(CF_UNICODETEXT, cbData))
- ::GlobalFree(cbData);
- ::CloseClipboard();
- }
-}
-
-void Pasteboard::writeImage(Node* node, const KURL&, const String&)
-{
- ASSERT(node && node->renderer() && node->renderer()->isImage());
- RenderImage* renderer = static_cast<RenderImage*>(node->renderer());
- CachedImage* cachedImage = static_cast<CachedImage*>(renderer->cachedImage());
- ASSERT(cachedImage);
- Image* image = cachedImage->image();
- ASSERT(image);
-
- clear();
-
- RefPtr<SharedBitmap> sourceBmp = image->nativeImageForCurrentFrame();
- if (!sourceBmp)
- return;
-
- IntRect rect(0, 0, sourceBmp->width(), sourceBmp->height());
- BitmapInfo bmpInfo;
- void* pixels;
- HBITMAP resultBitmap = sourceBmp->clipBitmap(rect, true, bmpInfo, pixels);
- if (!resultBitmap)
- return;
-
- if (::OpenClipboard(m_owner)) {
- ::SetClipboardData(CF_BITMAP, resultBitmap);
- ::CloseClipboard();
- } else
- DeleteObject(resultBitmap);
-}
-
-bool Pasteboard::canSmartReplace()
-{
- return ::IsClipboardFormatAvailable(WebSmartPasteFormat);
-}
-
-String Pasteboard::plainText(Frame* frame)
-{
- if (::IsClipboardFormatAvailable(CF_UNICODETEXT) && ::OpenClipboard(m_owner)) {
- HANDLE cbData = ::GetClipboardData(CF_UNICODETEXT);
- if (cbData) {
- UChar* buffer = (UChar*)GlobalLock(cbData);
- String fromClipboard(buffer);
- GlobalUnlock(cbData);
- CloseClipboard();
- return fromClipboard;
- } else
- CloseClipboard();
- }
-
- if (::IsClipboardFormatAvailable(CF_TEXT) && ::OpenClipboard(m_owner)) {
- HANDLE cbData = ::GetClipboardData(CF_TEXT);
- if (cbData) {
- char* buffer = (char*)GlobalLock(cbData);
- String fromClipboard(buffer);
- GlobalUnlock(cbData);
- CloseClipboard();
- return fromClipboard;
- } else
- CloseClipboard();
- }
-
- return String();
-}
-
-PassRefPtr<DocumentFragment> Pasteboard::documentFragment(Frame* frame, PassRefPtr<Range> context, bool allowPlainText, bool& chosePlainText)
-{
- chosePlainText = false;
-
- if (::IsClipboardFormatAvailable(HTMLClipboardFormat) && ::OpenClipboard(m_owner)) {
- // get data off of clipboard
- HANDLE cbData = ::GetClipboardData(HTMLClipboardFormat);
- if (cbData) {
- SIZE_T dataSize = ::GlobalSize(cbData);
- String cf_html(UTF8Encoding().decode((char*)GlobalLock(cbData), dataSize));
- GlobalUnlock(cbData);
- CloseClipboard();
-
- PassRefPtr<DocumentFragment> fragment = fragmentFromCF_HTML(frame->document(), cf_html);
- if (fragment)
- return fragment;
- } else
- CloseClipboard();
- }
-
- if (allowPlainText && IsClipboardFormatAvailable(CF_UNICODETEXT)) {
- chosePlainText = true;
- if (OpenClipboard(m_owner)) {
- HANDLE cbData = GetClipboardData(CF_UNICODETEXT);
- if (cbData) {
- UChar* buffer = (UChar*)GlobalLock(cbData);
- String str(buffer);
- GlobalUnlock(cbData);
- CloseClipboard();
- RefPtr<DocumentFragment> fragment = createFragmentFromText(context.get(), str);
- if (fragment)
- return fragment.release();
- } else
- CloseClipboard();
- }
- }
-
- if (allowPlainText && ::IsClipboardFormatAvailable(CF_TEXT)) {
- chosePlainText = true;
- if (::OpenClipboard(m_owner)) {
- HANDLE cbData = ::GetClipboardData(CF_TEXT);
- if (cbData) {
- char* buffer = (char*)GlobalLock(cbData);
- String str(buffer);
- GlobalUnlock(cbData);
- CloseClipboard();
- RefPtr<DocumentFragment> fragment = createFragmentFromText(context.get(), str);
- if (fragment)
- return fragment.release();
- } else
- CloseClipboard();
- }
- }
-
- return 0;
-}
-
-bool Pasteboard::hasData()
-{
- return hasDataInFormat(CF_UNICODETEXT) || hasDataInFormat(CF_TEXT);
-}
-
-bool Pasteboard::hasDataInFormat(unsigned int format)
-{
- return ::IsClipboardFormatAvailable(format);
-}
-
-} // namespace WebCore
diff --git a/WebCore/platform/wince/SearchPopupMenuWince.cpp b/WebCore/platform/wince/SearchPopupMenuWince.cpp
deleted file mode 100644
index ca11292..0000000
--- a/WebCore/platform/wince/SearchPopupMenuWince.cpp
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2009 Torch Mobile Inc.
- *
- * 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 "config.h"
-#include "SearchPopupMenu.h"
-
-#include "AtomicString.h"
-
-namespace WebCore {
-
-SearchPopupMenu::SearchPopupMenu(PopupMenuClient* client)
-: PopupMenu(client)
-{
-}
-
-bool SearchPopupMenu::enabled()
-{
- return false;
-}
-
-void SearchPopupMenu::saveRecentSearches(const AtomicString& name, const Vector<String>& searchItems)
-{
- if (name.isEmpty())
- return;
-
- notImplemented();
-}
-
-void SearchPopupMenu::loadRecentSearches(const AtomicString& name, Vector<String>& searchItems)
-{
- if (name.isEmpty())
- return;
-
- notImplemented();
-}
-
-}
diff --git a/WebCore/platform/wince/SharedTimerWince.cpp b/WebCore/platform/wince/SharedTimerWince.cpp
deleted file mode 100644
index ca2f104..0000000
--- a/WebCore/platform/wince/SharedTimerWince.cpp
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
- * Copyright (C) 2007-2008 Torch Mobile, Inc.
- *
- * 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 "config.h"
-#include "SharedTimer.h"
-
-#include "Page.h"
-#include "SystemTime.h"
-#include "Widget.h"
-#include <wtf/Assertions.h>
-#include <wtf/CurrentTime.h>
-#include <windows.h>
-
-namespace JSC {
-extern void* g_stackBase;
-}
-
-namespace WebCore {
-
-enum {
- TimerIdNone = 0,
- TimerIdAuto,
- TimerIdManual,
-};
-static UINT timerID = TimerIdNone;
-
-static void (*sharedTimerFiredFunction)();
-
-static HWND timerWindowHandle = 0;
-const LPCWSTR kTimerWindowClassName = L"TimerWindowClass";
-
-LRESULT CALLBACK TimerWindowWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
-{
- int dummy;
- JSC::g_stackBase = &dummy;
-
- if (message == WM_TIMER) {
- if (timerID != TimerIdNone)
- sharedTimerFiredFunction();
- } else if (message == WM_USER) {
- if (timerID = TimerIdManual) {
- sharedTimerFiredFunction();
- PostMessage(hWnd, WM_USER, 0, 0);
- }
- } else {
- JSC::g_stackBase = 0;
- return DefWindowProc(hWnd, message, wParam, lParam);
- }
- JSC::g_stackBase = 0;
- return 0;
-}
-
-static void initializeOffScreenTimerWindow()
-{
- if (timerWindowHandle)
- return;
-
- WNDCLASS wcex = {0};
- wcex.lpfnWndProc = TimerWindowWndProc;
- wcex.hInstance = Page::instanceHandle();
- wcex.lpszClassName = kTimerWindowClassName;
- RegisterClass(&wcex);
-
- timerWindowHandle = CreateWindow(kTimerWindowClassName, 0, 0,
- CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, HWND_MESSAGE, 0, Page::instanceHandle(), 0);
-}
-
-void setSharedTimerFiredFunction(void (*f)())
-{
- sharedTimerFiredFunction = f;
-}
-
-#define USER_TIMER_MAXIMUM 0x7FFFFFFF
-#define USER_TIMER_MINIMUM 0x0000000A
-
-void setSharedTimerFireTime(double fireTime)
-{
- ASSERT(sharedTimerFiredFunction);
-
- double interval = (fireTime - currentTime()) * 1000.;
- unsigned intervalInMS = interval < USER_TIMER_MINIMUM
- ? USER_TIMER_MINIMUM
- : interval > USER_TIMER_MAXIMUM
- ? USER_TIMER_MAXIMUM
- : static_cast<unsigned>(interval);
-
- if (timerID == TimerIdAuto) {
- KillTimer(timerWindowHandle, TimerIdAuto);
- timerID = TimerIdNone;
- }
-
- initializeOffScreenTimerWindow();
- if (SetTimer(timerWindowHandle, TimerIdAuto, intervalInMS, 0))
- timerID = TimerIdAuto;
- else if (timerID != TimerIdManual)
- PostMessage(timerWindowHandle, WM_USER, 0, 0);
-}
-
-void stopSharedTimer()
-{
- if (timerID == TimerIdAuto)
- KillTimer(timerWindowHandle, TimerIdAuto);
-
- timerID = TimerIdNone;
-}
-
-}
diff --git a/WebCore/platform/wince/SystemTimeWince.cpp b/WebCore/platform/wince/SystemTimeWince.cpp
deleted file mode 100644
index 70b705b..0000000
--- a/WebCore/platform/wince/SystemTimeWince.cpp
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
- * Copyright (C) 2007-2008 Torch Mobile, Inc.
- *
- * 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 "config.h"
-#include "SystemTime.h"
-
-#include <windows.h>
-
-namespace WebCore {
-
-float userIdleTime()
-{
- return FLT_MAX;
-}
-
-}
diff --git a/WebCore/plugins/win/PaintHooks.asm b/WebCore/plugins/win/PaintHooks.asm
deleted file mode 100644
index 1508813..0000000
--- a/WebCore/plugins/win/PaintHooks.asm
+++ /dev/null
@@ -1,50 +0,0 @@
-;/*
-; Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies)
-;
-; 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.
-;*/
-
-;HDC __stdcall _HBeginPaint(HWND hWnd, LPPAINTSTRUCT lpPaint);
-
-PUBLIC _HBeginPaint
-
-_TEXT SEGMENT
-
-_HBeginPaint PROC
- mov r10,rcx
- mov eax,1017h
- syscall
- ret
-_HBeginPaint ENDP
-
-_TEXT ENDS
-
-;BOOL __stdcall _HEndPaint(HWND hWnd, const PAINTSTRUCT* lpPaint);
-
-PUBLIC _HEndPaint
-
-_TEXT SEGMENT
-
-_HEndPaint PROC
- mov r10,rcx
- mov eax,1019h
- syscall
- ret
-_HEndPaint ENDP
-
-_TEXT ENDS
-
-END
diff --git a/WebCore/plugins/win/PluginViewWin.cpp b/WebCore/plugins/win/PluginViewWin.cpp
index 4e94feb..0da4402 100644
--- a/WebCore/plugins/win/PluginViewWin.cpp
+++ b/WebCore/plugins/win/PluginViewWin.cpp
@@ -115,14 +115,6 @@ static BYTE* beginPaint;
static unsigned endPaintSysCall;
static BYTE* endPaint;
-typedef HDC (WINAPI *PtrBeginPaint)(HWND, PAINTSTRUCT*);
-typedef BOOL (WINAPI *PtrEndPaint)(HWND, const PAINTSTRUCT*);
-
-#if PLATFORM(WIN_OS) && PLATFORM(X86_64) && COMPILER(MSVC)
-extern "C" HDC __stdcall _HBeginPaint(HWND hWnd, LPPAINTSTRUCT lpPaint);
-extern "C" BOOL __stdcall _HEndPaint(HWND hWnd, const PAINTSTRUCT* lpPaint);
-#endif
-
HDC WINAPI PluginView::hookedBeginPaint(HWND hWnd, PAINTSTRUCT* lpPaint)
{
PluginView* pluginView = reinterpret_cast<PluginView*>(GetProp(hWnd, kWebPluginViewProperty));
@@ -145,14 +137,12 @@ HDC WINAPI PluginView::hookedBeginPaint(HWND hWnd, PAINTSTRUCT* lpPaint)
: "memory"
);
return result;
-#elif defined(_M_IX86)
+#else
// Call through to the original BeginPaint.
__asm mov eax, beginPaintSysCall
__asm push lpPaint
__asm push hWnd
__asm call beginPaint
-#else
- return _HBeginPaint(hWnd, lpPaint);
#endif
}
@@ -174,14 +164,12 @@ BOOL WINAPI PluginView::hookedEndPaint(HWND hWnd, const PAINTSTRUCT* lpPaint)
: "a" (endPaintSysCall), "g" (lpPaint), "g" (hWnd), "m" (*endPaint)
);
return result;
-#elif defined (_M_IX86)
+#else
// Call through to the original EndPaint.
__asm mov eax, endPaintSysCall
__asm push lpPaint
__asm push hWnd
__asm call endPaint
-#else
- return _HEndPaint(hWnd, lpPaint);
#endif
}
@@ -194,7 +182,6 @@ static void hook(const char* module, const char* proc, unsigned& sysCallID, BYTE
pProc = reinterpret_cast<BYTE*>(reinterpret_cast<ptrdiff_t>(GetProcAddress(hMod, proc)));
-#if COMPILER(GCC) || defined(_M_IX86)
if (pProc[0] != 0xB8)
return;
@@ -210,35 +197,6 @@ static void hook(const char* module, const char* proc, unsigned& sysCallID, BYTE
*reinterpret_cast<unsigned*>(pProc + 1) = reinterpret_cast<intptr_t>(pNewProc) - reinterpret_cast<intptr_t>(pProc + 5);
pProc += 5;
-#else
- /* Disassembly of BeginPaint()
- 00000000779FC5B0 4C 8B D1 mov r10,rcx
- 00000000779FC5B3 B8 17 10 00 00 mov eax,1017h
- 00000000779FC5B8 0F 05 syscall
- 00000000779FC5BA C3 ret
- 00000000779FC5BB 90 nop
- 00000000779FC5BC 90 nop
- 00000000779FC5BD 90 nop
- 00000000779FC5BE 90 nop
- 00000000779FC5BF 90 nop
- 00000000779FC5C0 90 nop
- 00000000779FC5C1 90 nop
- 00000000779FC5C2 90 nop
- 00000000779FC5C3 90 nop
- */
- // Check for the signature as in the above disassembly
- DWORD guard = 0xB8D18B4C;
- if (*reinterpret_cast<DWORD*>(pProc) != guard)
- return;
-
- DWORD flOldProtect;
- VirtualProtect(pProc, 12, PAGE_EXECUTE_READWRITE, & flOldProtect);
- pProc[0] = 0x48; // mov rax, this
- pProc[1] = 0xb8;
- *(__int64*)(pProc+2) = (__int64)pNewProc;
- pProc[10] = 0xff; // jmp rax
- pProc[11] = 0xe0;
-#endif
}
static void setUpOffscreenPaintingHooks(HDC (WINAPI*hookedBeginPaint)(HWND, PAINTSTRUCT*), BOOL (WINAPI*hookedEndPaint)(HWND, const PAINTSTRUCT*))
diff --git a/WebCore/rendering/HitTestResult.cpp b/WebCore/rendering/HitTestResult.cpp
index 0aaddc9..b7de46b 100644
--- a/WebCore/rendering/HitTestResult.cpp
+++ b/WebCore/rendering/HitTestResult.cpp
@@ -209,7 +209,7 @@ String HitTestResult::altDisplayString() const
if (m_innerNonSharedNode->hasTagName(imgTag)) {
HTMLImageElement* image = static_cast<HTMLImageElement*>(m_innerNonSharedNode.get());
- return displayString(image->getAttribute(altAttr), m_innerNonSharedNode.get());
+ return displayString(image->alt(), m_innerNonSharedNode.get());
}
if (m_innerNonSharedNode->hasTagName(inputTag)) {
diff --git a/WebCore/rendering/InlineFlowBox.cpp b/WebCore/rendering/InlineFlowBox.cpp
index 98c5c43..543c190 100644
--- a/WebCore/rendering/InlineFlowBox.cpp
+++ b/WebCore/rendering/InlineFlowBox.cpp
@@ -29,7 +29,6 @@
#include "RootInlineBox.h"
#include "RenderBlock.h"
#include "RenderInline.h"
-#include "RenderLayer.h"
#include "RenderListMarker.h"
#include "RenderTableCell.h"
#include "RootInlineBox.h"
@@ -775,23 +774,18 @@ void InlineFlowBox::paintMask(RenderObject::PaintInfo& paintInfo, int tx, int ty
int w = width();
int h = height();
- const NinePieceImage& maskNinePieceImage = renderer()->style()->maskBoxImage();
- StyleImage* maskBoxImage = renderer()->style()->maskBoxImage().image();
-
// Figure out if we need to push a transparency layer to render our mask.
bool pushTransparencyLayer = false;
- bool compositedMask = renderer()->hasLayer() && boxModelObject()->layer()->hasCompositedMask();
- CompositeOperator compositeOp = CompositeSourceOver;
- if (!compositedMask) {
- if ((maskBoxImage && renderer()->style()->maskLayers()->hasImage()) || renderer()->style()->maskLayers()->next())
- pushTransparencyLayer = true;
-
- compositeOp = CompositeDestinationIn;
- if (pushTransparencyLayer) {
- paintInfo.context->setCompositeOperation(CompositeDestinationIn);
- paintInfo.context->beginTransparencyLayer(1.0f);
- compositeOp = CompositeSourceOver;
- }
+ const NinePieceImage& maskNinePieceImage = renderer()->style()->maskBoxImage();
+ StyleImage* maskBoxImage = renderer()->style()->maskBoxImage().image();
+ if ((maskBoxImage && renderer()->style()->maskLayers()->hasImage()) || renderer()->style()->maskLayers()->next())
+ pushTransparencyLayer = true;
+
+ CompositeOperator compositeOp = CompositeDestinationIn;
+ if (pushTransparencyLayer) {
+ paintInfo.context->setCompositeOperation(CompositeDestinationIn);
+ paintInfo.context->beginTransparencyLayer(1.0f);
+ compositeOp = CompositeSourceOver;
}
paintFillLayers(paintInfo, Color(), renderer()->style()->maskLayers(), tx, ty, w, h, compositeOp);
diff --git a/WebCore/rendering/MediaControlElements.cpp b/WebCore/rendering/MediaControlElements.cpp
index 6715111..352f270 100644
--- a/WebCore/rendering/MediaControlElements.cpp
+++ b/WebCore/rendering/MediaControlElements.cpp
@@ -32,27 +32,28 @@
#include "MediaControlElements.h"
+#include "LocalizedStrings.h"
#include "EventNames.h"
#include "FloatConversion.h"
#include "Frame.h"
#include "HTMLNames.h"
-#include "LocalizedStrings.h"
#include "MouseEvent.h"
#include "RenderMedia.h"
#include "RenderSlider.h"
#include "RenderTheme.h"
+#include "CString.h"
namespace WebCore {
using namespace HTMLNames;
-// FIXME: These constants may need to be tweaked to better match the seeking in the QuickTime plug-in.
+// FIXME: These constants may need to be tweaked to better match the seeking in the QT plugin
static const float cSeekRepeatDelay = 0.1f;
static const float cStepTime = 0.07f;
static const float cSeekTime = 0.2f;
-MediaControlShadowRootElement::MediaControlShadowRootElement(Document* document, HTMLMediaElement* mediaElement)
- : HTMLDivElement(divTag, document)
+MediaControlShadowRootElement::MediaControlShadowRootElement(Document* doc, HTMLMediaElement* mediaElement)
+ : HTMLDivElement(divTag, doc)
, m_mediaElement(mediaElement)
{
RefPtr<RenderStyle> rootStyle = RenderStyle::create();
@@ -75,9 +76,10 @@ void MediaControlShadowRootElement::updateStyle()
}
// ----------------------------
+
-MediaControlElement::MediaControlElement(Document* document, PseudoId pseudo, HTMLMediaElement* mediaElement)
- : HTMLDivElement(divTag, document)
+MediaControlElement::MediaControlElement(Document* doc, PseudoId pseudo, HTMLMediaElement* mediaElement)
+ : HTMLDivElement(divTag, doc)
, m_mediaElement(mediaElement)
, m_pseudoStyleId(pseudo)
{
@@ -163,8 +165,8 @@ void MediaControlElement::updateStyle()
// ----------------------------
-MediaControlTimelineContainerElement::MediaControlTimelineContainerElement(Document* document, HTMLMediaElement* element)
- : MediaControlElement(document, MEDIA_CONTROLS_TIMELINE_CONTAINER, element)
+MediaControlTimelineContainerElement::MediaControlTimelineContainerElement(Document* doc, HTMLMediaElement* element)
+: MediaControlElement(doc, MEDIA_CONTROLS_TIMELINE_CONTAINER, element)
{
}
@@ -186,9 +188,9 @@ bool MediaControlTimelineContainerElement::rendererIsNeeded(RenderStyle* style)
// ----------------------------
-MediaControlStatusDisplayElement::MediaControlStatusDisplayElement(Document* document, HTMLMediaElement* element)
- : MediaControlElement(document, MEDIA_CONTROLS_STATUS_DISPLAY, element)
- , m_stateBeingDisplayed(Nothing)
+MediaControlStatusDisplayElement::MediaControlStatusDisplayElement(Document* doc, HTMLMediaElement* element)
+: MediaControlElement(doc, MEDIA_CONTROLS_STATUS_DISPLAY, element)
+, m_stateBeingDisplayed(Nothing)
{
}
@@ -233,8 +235,8 @@ bool MediaControlStatusDisplayElement::rendererIsNeeded(RenderStyle* style)
// ----------------------------
-MediaControlInputElement::MediaControlInputElement(Document* document, PseudoId pseudo, const String& type, HTMLMediaElement* mediaElement, MediaControlElementType displayType)
- : HTMLInputElement(inputTag, document)
+MediaControlInputElement::MediaControlInputElement(Document* doc, PseudoId pseudo, const String& type, HTMLMediaElement* mediaElement, MediaControlElementType displayType)
+ : HTMLInputElement(inputTag, doc)
, m_mediaElement(mediaElement)
, m_pseudoStyleId(pseudo)
, m_displayType(displayType)
@@ -328,8 +330,8 @@ void MediaControlInputElement::setDisplayType(MediaControlElementType displayTyp
// ----------------------------
-MediaControlMuteButtonElement::MediaControlMuteButtonElement(Document* document, HTMLMediaElement* element)
- : MediaControlInputElement(document, MEDIA_CONTROLS_MUTE_BUTTON, "button", element, element->muted() ? MediaUnMuteButton : MediaMuteButton)
+MediaControlMuteButtonElement::MediaControlMuteButtonElement(Document* doc, HTMLMediaElement* element)
+ : MediaControlInputElement(doc, MEDIA_CONTROLS_MUTE_BUTTON, "button", element, element->muted() ? MediaUnMuteButton : MediaMuteButton)
{
}
@@ -349,8 +351,8 @@ void MediaControlMuteButtonElement::updateDisplayType()
// ----------------------------
-MediaControlPlayButtonElement::MediaControlPlayButtonElement(Document* document, HTMLMediaElement* element)
- : MediaControlInputElement(document, MEDIA_CONTROLS_PLAY_BUTTON, "button", element, element->canPlay() ? MediaPlayButton : MediaPauseButton)
+MediaControlPlayButtonElement::MediaControlPlayButtonElement(Document* doc, HTMLMediaElement* element)
+ : MediaControlInputElement(doc, MEDIA_CONTROLS_PLAY_BUTTON, "button", element, element->canPlay() ? MediaPlayButton : MediaPauseButton)
{
}
@@ -370,8 +372,8 @@ void MediaControlPlayButtonElement::updateDisplayType()
// ----------------------------
-MediaControlSeekButtonElement::MediaControlSeekButtonElement(Document* document, HTMLMediaElement* element, bool forward)
- : MediaControlInputElement(document, forward ? MEDIA_CONTROLS_SEEK_FORWARD_BUTTON : MEDIA_CONTROLS_SEEK_BACK_BUTTON,
+MediaControlSeekButtonElement::MediaControlSeekButtonElement(Document* doc, HTMLMediaElement* element, bool forward)
+ : MediaControlInputElement(doc, forward ? MEDIA_CONTROLS_SEEK_FORWARD_BUTTON : MEDIA_CONTROLS_SEEK_BACK_BUTTON,
"button", element, forward ? MediaSeekForwardButton : MediaSeekBackButton)
, m_forward(forward)
, m_seeking(false)
@@ -430,8 +432,8 @@ void MediaControlSeekButtonElement::detach()
// ----------------------------
-MediaControlRewindButtonElement::MediaControlRewindButtonElement(Document* document, HTMLMediaElement* element)
- : MediaControlInputElement(document, MEDIA_CONTROLS_REWIND_BUTTON, "button", element, MediaRewindButton)
+MediaControlRewindButtonElement::MediaControlRewindButtonElement(Document* doc, HTMLMediaElement* element)
+: MediaControlInputElement(doc, MEDIA_CONTROLS_REWIND_BUTTON, "button", element, MediaRewindButton)
{
}
@@ -452,8 +454,8 @@ bool MediaControlRewindButtonElement::rendererIsNeeded(RenderStyle* style)
// ----------------------------
-MediaControlReturnToRealtimeButtonElement::MediaControlReturnToRealtimeButtonElement(Document* document, HTMLMediaElement* element)
- : MediaControlInputElement(document, MEDIA_CONTROLS_RETURN_TO_REALTIME_BUTTON, "button", element, MediaReturnToRealtimeButton)
+MediaControlReturnToRealtimeButtonElement::MediaControlReturnToRealtimeButtonElement(Document* doc, HTMLMediaElement* element)
+: MediaControlInputElement(doc, MEDIA_CONTROLS_RETURN_TO_REALTIME_BUTTON, "button", element, MediaReturnToRealtimeButton)
{
}
@@ -480,8 +482,8 @@ MediaControlTimelineElement::MediaControlTimelineElement(Document* document, HTM
void MediaControlTimelineElement::defaultEventHandler(Event* event)
{
- // Left button is 0. Rejects mouse events not from left button.
- if (event->isMouseEvent() && static_cast<MouseEvent*>(event)->button())
+ // Left button is 0. Accepts only if mouse event is from left button.
+ if (!event->isMouseEvent() || static_cast<MouseEvent*>(event)->button())
return;
if (event->type() == eventNames().mousedownEvent)
@@ -518,8 +520,8 @@ void MediaControlTimelineElement::update(bool updateDuration)
// ----------------------------
-MediaControlFullscreenButtonElement::MediaControlFullscreenButtonElement(Document* document, HTMLMediaElement* element)
- : MediaControlInputElement(document, MEDIA_CONTROLS_FULLSCREEN_BUTTON, "button", element, MediaFullscreenButton)
+MediaControlFullscreenButtonElement::MediaControlFullscreenButtonElement(Document* doc, HTMLMediaElement* element)
+ : MediaControlInputElement(doc, MEDIA_CONTROLS_FULLSCREEN_BUTTON, "button", element, MediaFullscreenButton)
{
}
@@ -539,8 +541,8 @@ bool MediaControlFullscreenButtonElement::rendererIsNeeded(RenderStyle* style)
// ----------------------------
-MediaControlTimeDisplayElement::MediaControlTimeDisplayElement(Document* document, PseudoId pseudo, HTMLMediaElement* element)
- : MediaControlElement(document, pseudo, element)
+MediaControlTimeDisplayElement::MediaControlTimeDisplayElement(Document* doc, PseudoId pseudo, HTMLMediaElement* element)
+ : MediaControlElement(doc, pseudo, element)
, m_isVisible(true)
{
}
diff --git a/WebCore/rendering/RenderBlock.cpp b/WebCore/rendering/RenderBlock.cpp
index 03f5781..e10c331 100644
--- a/WebCore/rendering/RenderBlock.cpp
+++ b/WebCore/rendering/RenderBlock.cpp
@@ -33,7 +33,6 @@
#include "HTMLNames.h"
#include "HitTestResult.h"
#include "InlineTextBox.h"
-#include "RenderFlexibleBox.h"
#include "RenderImage.h"
#include "RenderInline.h"
#include "RenderMarquee.h"
@@ -735,31 +734,6 @@ void RenderBlock::updateScrollInfoAfterLayout()
}
}
-void RenderBlock::updateOverflowWithShadowAndReflection()
-{
- if (hasOverflowClip())
- return;
-
- int shadowLeft;
- int shadowRight;
- int shadowTop;
- int shadowBottom;
- style()->getBoxShadowExtent(shadowTop, shadowRight, shadowBottom, shadowLeft);
-
- m_overflowLeft = min(m_overflowLeft, shadowLeft);
- m_overflowWidth = max(m_overflowWidth, width() + shadowRight);
- m_overflowTop = min(m_overflowTop, shadowTop);
- m_overflowHeight = max(m_overflowHeight, height() + shadowBottom);
-
- if (hasReflection()) {
- IntRect reflection(reflectionBox());
- m_overflowLeft = min(m_overflowLeft, reflection.x());
- m_overflowWidth = max(m_overflowWidth, reflection.right());
- m_overflowTop = min(m_overflowTop, reflection.y());
- m_overflowHeight = max(m_overflowHeight, reflection.bottom());
- }
-}
-
void RenderBlock::layout()
{
// Update our first letter info now.
@@ -910,7 +884,26 @@ void RenderBlock::layoutBlock(bool relayoutChildren)
m_overflowWidth = max(m_overflowWidth, width());
m_overflowHeight = max(m_overflowHeight, height());
- updateOverflowWithShadowAndReflection();
+ if (!hasOverflowClip()) {
+ int shadowLeft;
+ int shadowRight;
+ int shadowTop;
+ int shadowBottom;
+ style()->getBoxShadowExtent(shadowTop, shadowRight, shadowBottom, shadowLeft);
+
+ m_overflowLeft = min(m_overflowLeft, shadowLeft);
+ m_overflowWidth = max(m_overflowWidth, width() + shadowRight);
+ m_overflowTop = min(m_overflowTop, shadowTop);
+ m_overflowHeight = max(m_overflowHeight, height() + shadowBottom);
+
+ if (hasReflection()) {
+ IntRect reflection(reflectionBox());
+ m_overflowLeft = min(m_overflowLeft, reflection.x());
+ m_overflowWidth = max(m_overflowWidth, reflection.right());
+ m_overflowTop = min(m_overflowTop, reflection.y());
+ m_overflowHeight = max(m_overflowHeight, reflection.bottom());
+ }
+ }
statePusher.pop();
@@ -1039,10 +1032,7 @@ bool RenderBlock::handleRunInChild(RenderBox* child)
// See if we have a run-in element with inline children. If the
// children aren't inline, then just treat the run-in as a normal
// block.
- if (!child->isRunIn() || !child->childrenInline())
- return false;
- // FIXME: We don't handle non-block elements with run-in for now.
- if (!child->isRenderBlock())
+ if (!child->isRunIn() || !child->childrenInline() && !child->isReplaced())
return false;
// Get the next non-positioned/non-floating RenderBlock.
@@ -3308,17 +3298,13 @@ int RenderBlock::getClearDelta(RenderBox* child, int yPos)
// We also clear floats if we are too big to sit on the same line as a float (and wish to avoid floats by default).
// FIXME: Note that the remaining space checks aren't quite accurate, since you should be able to clear only some floats (the minimum # needed
// to fit) and not all (we should be using nextFloatBottomBelow and looping).
+ // Do not allow tables to wrap in quirks or even in almost strict mode
+ // (ebay on the PLT, finance.yahoo.com in the real world, versiontracker.com forces even almost strict mode not to work)
int result = clearSet ? max(0, bottom - yPos) : 0;
- if (!result && child->avoidsFloats()) {
- int oldYPos = child->y();
- int oldWidth = child->width();
- child->setY(yPos);
- child->calcWidth();
- if (child->width() > lineWidth(yPos, false) && child->minPrefWidth() <= availableWidth())
- result = max(0, floatBottom() - yPos);
- child->setY(oldYPos);
- child->setWidth(oldWidth);
- }
+ if (!result && child->avoidsFloats() && child->style()->width().isFixed() &&
+ child->minPrefWidth() > lineWidth(yPos, false) && child->minPrefWidth() <= availableWidth() &&
+ document()->inStrictMode())
+ result = max(0, floatBottom() - yPos);
return result;
}
@@ -5135,20 +5121,13 @@ void RenderBlock::addFocusRingRects(GraphicsContext* graphicsContext, int tx, in
ty - y() + inlineContinuation()->containingBlock()->y());
}
-RenderBlock* RenderBlock::createAnonymousBlock(bool isFlexibleBox) const
+RenderBlock* RenderBlock::createAnonymousBlock() const
{
RefPtr<RenderStyle> newStyle = RenderStyle::create();
newStyle->inheritFrom(style());
+ newStyle->setDisplay(BLOCK);
- RenderBlock* newBox = 0;
- if (isFlexibleBox) {
- newStyle->setDisplay(BOX);
- newBox = new (renderArena()) RenderFlexibleBox(document() /* anonymous box */);
- } else {
- newStyle->setDisplay(BLOCK);
- newBox = new (renderArena()) RenderBlock(document() /* anonymous box */);
- }
-
+ RenderBlock* newBox = new (renderArena()) RenderBlock(document() /* anonymous box */);
newBox->setStyle(newStyle.release());
return newBox;
}
diff --git a/WebCore/rendering/RenderBlock.h b/WebCore/rendering/RenderBlock.h
index 88d2386..839be16 100644
--- a/WebCore/rendering/RenderBlock.h
+++ b/WebCore/rendering/RenderBlock.h
@@ -147,7 +147,7 @@ public:
// This function is a convenience helper for creating an anonymous block that inherits its
// style from this RenderBlock.
- RenderBlock* createAnonymousBlock(bool isFlexibleBox = false) const;
+ RenderBlock* createAnonymousBlock() const;
Vector<IntRect>* columnRects() const;
int columnGap() const;
@@ -207,9 +207,7 @@ protected:
virtual bool hasLineIfEmpty() const;
bool layoutOnlyPositionedObjects();
-
- void updateOverflowWithShadowAndReflection();
-
+
private:
virtual RenderObjectChildList* virtualChildren() { return children(); }
virtual const RenderObjectChildList* virtualChildren() const { return children(); }
diff --git a/WebCore/rendering/RenderBox.cpp b/WebCore/rendering/RenderBox.cpp
index a1a2d9a..4c2bff0 100644
--- a/WebCore/rendering/RenderBox.cpp
+++ b/WebCore/rendering/RenderBox.cpp
@@ -416,11 +416,6 @@ bool RenderBox::scroll(ScrollDirection direction, ScrollGranularity granularity,
return b->scroll(direction, granularity, multiplier);
return false;
}
-
-bool RenderBox::canBeScrolledAndHasScrollableArea() const
-{
- return canBeProgramaticallyScrolled(false) && (scrollHeight() != clientHeight() || scrollWidth() != clientWidth());
-}
bool RenderBox::canBeProgramaticallyScrolled(bool) const
{
@@ -658,36 +653,31 @@ void RenderBox::paintMaskImages(const PaintInfo& paintInfo, int tx, int ty, int
{
// Figure out if we need to push a transparency layer to render our mask.
bool pushTransparencyLayer = false;
- bool compositedMask = hasLayer() && layer()->hasCompositedMask();
- CompositeOperator compositeOp = CompositeSourceOver;
-
- if (!compositedMask) {
- StyleImage* maskBoxImage = style()->maskBoxImage().image();
- if (maskBoxImage && style()->maskLayers()->hasImage()) {
- pushTransparencyLayer = true;
- } else {
- // We have to use an extra image buffer to hold the mask. Multiple mask images need
- // to composite together using source-over so that they can then combine into a single unified mask that
- // can be composited with the content using destination-in. SVG images need to be able to set compositing modes
- // as they draw images contained inside their sub-document, so we paint all our images into a separate buffer
- // and composite that buffer as the mask.
- // We have to check that the mask images to be rendered contain at least one image that can be actually used in rendering
- // before pushing the transparency layer.
- for (const FillLayer* fillLayer = style()->maskLayers()->next(); fillLayer; fillLayer = fillLayer->next()) {
- if (fillLayer->hasImage() && fillLayer->image()->canRender(style()->effectiveZoom())) {
- pushTransparencyLayer = true;
- // We found one image that can be used in rendering, exit the loop
- break;
- }
+ StyleImage* maskBoxImage = style()->maskBoxImage().image();
+ if (maskBoxImage && style()->maskLayers()->hasImage()) {
+ pushTransparencyLayer = true;
+ } else {
+ // We have to use an extra image buffer to hold the mask. Multiple mask images need
+ // to composite together using source-over so that they can then combine into a single unified mask that
+ // can be composited with the content using destination-in. SVG images need to be able to set compositing modes
+ // as they draw images contained inside their sub-document, so we paint all our images into a separate buffer
+ // and composite that buffer as the mask.
+ // We have to check that the mask images to be rendered contain at least one image that can be actually used in rendering
+ // before pushing the transparency layer.
+ for (const FillLayer* fillLayer = style()->maskLayers()->next(); fillLayer; fillLayer = fillLayer->next()) {
+ if (fillLayer->hasImage() && fillLayer->image()->canRender(style()->effectiveZoom())) {
+ pushTransparencyLayer = true;
+ // We found one image that can be used in rendering, exit the loop
+ break;
}
}
-
- compositeOp = CompositeDestinationIn;
- if (pushTransparencyLayer) {
- paintInfo.context->setCompositeOperation(CompositeDestinationIn);
- paintInfo.context->beginTransparencyLayer(1.0f);
- compositeOp = CompositeSourceOver;
- }
+ }
+
+ CompositeOperator compositeOp = CompositeDestinationIn;
+ if (pushTransparencyLayer) {
+ paintInfo.context->setCompositeOperation(CompositeDestinationIn);
+ paintInfo.context->beginTransparencyLayer(1.0f);
+ compositeOp = CompositeSourceOver;
}
paintFillLayers(paintInfo, Color(), style()->maskLayers(), tx, ty, w, h, compositeOp);
@@ -2711,6 +2701,11 @@ int RenderBox::leftmostPosition(bool /*includeOverflowInterior*/, bool includeSe
return left;
}
+bool RenderBox::isAfterContent(RenderObject* child) const
+{
+ return (child && child->style()->styleType() == AFTER && (!child->isText() || child->isBR()));
+}
+
VisiblePosition RenderBox::positionForPoint(const IntPoint& point)
{
// no children...return this render object's element, if there is one, and offset 0
diff --git a/WebCore/rendering/RenderBox.h b/WebCore/rendering/RenderBox.h
index e86d073..cb2297b 100644
--- a/WebCore/rendering/RenderBox.h
+++ b/WebCore/rendering/RenderBox.h
@@ -230,7 +230,6 @@ public:
virtual int verticalScrollbarWidth() const;
int horizontalScrollbarHeight() const;
virtual bool scroll(ScrollDirection, ScrollGranularity, float multiplier = 1.0f);
- bool canBeScrolledAndHasScrollableArea() const;
virtual bool canBeProgramaticallyScrolled(bool) const;
virtual void autoscroll();
virtual void stopAutoscroll() { }
@@ -334,6 +333,9 @@ private:
// These include tables, positioned objects, floats and flexible boxes.
virtual void calcPrefWidths() { setPrefWidthsDirty(false); }
+protected:
+ bool isAfterContent(RenderObject* child) const;
+
private:
// The width/height of the contents + borders + padding. The x/y location is relative to our container (which is not always our parent).
IntRect m_frameRect;
diff --git a/WebCore/rendering/RenderButton.cpp b/WebCore/rendering/RenderButton.cpp
index f3ae558..6d36a0f 100644
--- a/WebCore/rendering/RenderButton.cpp
+++ b/WebCore/rendering/RenderButton.cpp
@@ -52,8 +52,7 @@ void RenderButton::addChild(RenderObject* newChild, RenderObject* beforeChild)
if (!m_inner) {
// Create an anonymous block.
ASSERT(!firstChild());
- bool isFlexibleBox = style()->display() == BOX || style()->display() == INLINE_BOX;
- m_inner = createAnonymousBlock(isFlexibleBox);
+ m_inner = createAnonymousBlock();
setupInnerStyle(m_inner->style());
RenderFlexibleBox::addChild(m_inner);
}
@@ -109,7 +108,6 @@ void RenderButton::setupInnerStyle(RenderStyle* innerStyle)
// RenderBlock::createAnonymousBlock creates a new RenderStyle, so this is
// safe to modify.
innerStyle->setBoxFlex(1.0f);
- innerStyle->setBoxOrient(style()->boxOrient());
innerStyle->setPaddingTop(Length(theme()->buttonInternalPaddingTop(), Fixed));
innerStyle->setPaddingRight(Length(theme()->buttonInternalPaddingRight(), Fixed));
diff --git a/WebCore/rendering/RenderFieldset.cpp b/WebCore/rendering/RenderFieldset.cpp
index 8618d11..437991a 100644
--- a/WebCore/rendering/RenderFieldset.cpp
+++ b/WebCore/rendering/RenderFieldset.cpp
@@ -108,11 +108,10 @@ RenderBox* RenderFieldset::findLegend() const
{
for (RenderObject* legend = firstChild(); legend; legend = legend->nextSibling()) {
if (!legend->isFloatingOrPositioned() && legend->node() &&
- (legend->node()->hasTagName(legendTag)
+ legend->node()->hasTagName(legendTag)
#if ENABLE(WML)
|| legend->node()->hasTagName(WMLNames::insertedLegendTag)
#endif
- )
)
return toRenderBox(legend);
}
diff --git a/WebCore/rendering/RenderFlexibleBox.cpp b/WebCore/rendering/RenderFlexibleBox.cpp
index fa6d7a0..6bbcc43 100644
--- a/WebCore/rendering/RenderFlexibleBox.cpp
+++ b/WebCore/rendering/RenderFlexibleBox.cpp
@@ -295,7 +295,26 @@ void RenderFlexibleBox::layoutBlock(bool relayoutChildren)
if (m_overflowWidth < width())
m_overflowWidth = width();
- updateOverflowWithShadowAndReflection();
+ if (!hasOverflowClip()) {
+ int shadowLeft;
+ int shadowRight;
+ int shadowTop;
+ int shadowBottom;
+ style()->getBoxShadowExtent(shadowTop, shadowRight, shadowBottom, shadowLeft);
+
+ m_overflowLeft = min(m_overflowLeft, shadowLeft);
+ m_overflowWidth = max(m_overflowWidth, width() + shadowRight);
+ m_overflowTop = min(m_overflowTop, shadowTop);
+ m_overflowHeight = max(m_overflowHeight, height() + shadowBottom);
+
+ if (hasReflection()) {
+ IntRect reflection(reflectionBox());
+ m_overflowTop = min(m_overflowTop, reflection.y());
+ m_overflowHeight = max(m_overflowHeight, reflection.bottom());
+ m_overflowLeft = min(m_overflowLeft, reflection.x());
+ m_overflowHeight = max(m_overflowWidth, reflection.right());
+ }
+ }
statePusher.pop();
@@ -1142,8 +1161,6 @@ const char *RenderFlexibleBox::renderName() const
return "RenderFlexibleBox (floating)";
if (isPositioned())
return "RenderFlexibleBox (positioned)";
- if (isAnonymous())
- return "RenderFlexibleBox (generated)";
if (isRelPositioned())
return "RenderFlexibleBox (relative positioned)";
return "RenderFlexibleBox";
diff --git a/WebCore/rendering/RenderHTMLCanvas.cpp b/WebCore/rendering/RenderHTMLCanvas.cpp
index 3a776ba..1fc07f0 100644
--- a/WebCore/rendering/RenderHTMLCanvas.cpp
+++ b/WebCore/rendering/RenderHTMLCanvas.cpp
@@ -55,13 +55,10 @@ void RenderHTMLCanvas::canvasSizeChanged()
IntSize canvasSize = static_cast<HTMLCanvasElement*>(node())->size();
IntSize zoomedSize(canvasSize.width() * style()->effectiveZoom(), canvasSize.height() * style()->effectiveZoom());
- if (zoomedSize == intrinsicSize())
+ if (canvasSize == intrinsicSize())
return;
- setIntrinsicSize(zoomedSize);
-
- if (!parent())
- return;
+ setIntrinsicSize(canvasSize);
if (!prefWidthsDirty())
setPrefWidthsDirty(true);
diff --git a/WebCore/rendering/RenderImage.cpp b/WebCore/rendering/RenderImage.cpp
index 9692a09..5c11e41 100644
--- a/WebCore/rendering/RenderImage.cpp
+++ b/WebCore/rendering/RenderImage.cpp
@@ -440,7 +440,7 @@ int RenderImage::minimumReplacedHeight() const
HTMLMapElement* RenderImage::imageMap()
{
HTMLImageElement* i = node() && node()->hasTagName(imgTag) ? static_cast<HTMLImageElement*>(node()) : 0;
- return i ? i->document()->getImageMap(i->getAttribute(usemapAttr)) : 0;
+ return i ? i->document()->getImageMap(i->useMap()) : 0;
}
bool RenderImage::nodeAtPoint(const HitTestRequest& request, HitTestResult& result, int x, int y, int tx, int ty, HitTestAction hitTestAction)
diff --git a/WebCore/rendering/RenderInline.cpp b/WebCore/rendering/RenderInline.cpp
index 664af93..53962d2 100644
--- a/WebCore/rendering/RenderInline.cpp
+++ b/WebCore/rendering/RenderInline.cpp
@@ -131,6 +131,18 @@ void RenderInline::styleDidChange(StyleDifference diff, const RenderStyle* oldSt
}
}
+static inline bool isAfterContent(RenderObject* child)
+{
+ if (!child)
+ return false;
+ if (child->style()->styleType() != AFTER)
+ return false;
+ // Text nodes don't have their own styles, so ignore the style on a text node.
+ if (child->isText() && !child->isBR())
+ return false;
+ return true;
+}
+
void RenderInline::addChild(RenderObject* newChild, RenderObject* beforeChild)
{
if (continuation())
diff --git a/WebCore/rendering/RenderLayer.cpp b/WebCore/rendering/RenderLayer.cpp
index ca6e5a6..ab78f40 100644
--- a/WebCore/rendering/RenderLayer.cpp
+++ b/WebCore/rendering/RenderLayer.cpp
@@ -207,8 +207,12 @@ RenderLayer::~RenderLayer()
// Make sure we have no lingering clip rects.
ASSERT(!m_clipRects);
- if (m_reflection)
- removeReflection();
+ if (m_reflection) {
+ if (!m_reflection->documentBeingDestroyed())
+ m_reflection->removeLayers(this);
+ m_reflection->setParent(0);
+ m_reflection->destroy();
+ }
if (m_scrollCorner)
m_scrollCorner->destroy();
@@ -993,9 +997,6 @@ void RenderLayer::panScrollFromPoint(const IntPoint& sourcePoint)
void RenderLayer::scrollByRecursively(int xDelta, int yDelta)
{
- if (!xDelta && !yDelta)
- return;
-
bool restrictedByLineClamp = false;
if (renderer()->parent())
restrictedByLineClamp = renderer()->parent()->style()->lineClamp() >= 0;
@@ -1005,30 +1006,17 @@ void RenderLayer::scrollByRecursively(int xDelta, int yDelta)
int newOffsetY = scrollYOffset() + yDelta;
scrollToOffset(newOffsetX, newOffsetY);
- // If this layer can't do the scroll we ask the next layer up that can scroll to try
+ // If this layer can't do the scroll we ask its parent
int leftToScrollX = newOffsetX - scrollXOffset();
int leftToScrollY = newOffsetY - scrollYOffset();
if ((leftToScrollX || leftToScrollY) && renderer()->parent()) {
- RenderObject* nextRenderer = renderer()->parent();
- while (nextRenderer) {
- if (nextRenderer->isBox() && toRenderBox(nextRenderer)->canBeScrolledAndHasScrollableArea()) {
- nextRenderer->enclosingLayer()->scrollByRecursively(leftToScrollX, leftToScrollY);
- break;
- }
- nextRenderer = nextRenderer->parent();
- }
-
+ renderer()->parent()->enclosingLayer()->scrollByRecursively(leftToScrollX, leftToScrollY);
Frame* frame = renderer()->document()->frame();
if (frame)
frame->eventHandler()->updateAutoscrollRenderer();
}
- } else if (renderer()->view()->frameView()) {
- // If we are here, we were called on a renderer that can be programatically scrolled, but doesn't
- // have an overflow clip. Which means that it is a document node that can be scrolled.
+ } else if (renderer()->view()->frameView())
renderer()->view()->frameView()->scrollBy(IntSize(xDelta, yDelta));
- // FIXME: If we didn't scroll the whole way, do we want to try looking at the frames ownerElement?
- // https://bugs.webkit.org/show_bug.cgi?id=28237
- }
}
@@ -2885,11 +2873,6 @@ void RenderLayer::clearBacking()
{
m_backing.clear();
}
-
-bool RenderLayer::hasCompositedMask() const
-{
- return m_backing && m_backing->hasMaskLayer();
-}
#endif
void RenderLayer::setParent(RenderLayer* parent)
@@ -3200,9 +3183,10 @@ void RenderLayer::styleChanged(StyleDifference diff, const RenderStyle*)
m_marquee = 0;
}
- if (!hasReflection() && m_reflection)
- removeReflection();
- else if (hasReflection()) {
+ if (!hasReflection() && m_reflection) {
+ m_reflection->destroy();
+ m_reflection = 0;
+ } else if (hasReflection()) {
if (!m_reflection)
createReflection();
updateReflectionStyle();
@@ -3276,16 +3260,6 @@ void RenderLayer::createReflection()
m_reflection->setParent(renderer()); // We create a 1-way connection.
}
-void RenderLayer::removeReflection()
-{
- if (!m_reflection->documentBeingDestroyed())
- m_reflection->removeLayers(this);
-
- m_reflection->setParent(0);
- m_reflection->destroy();
- m_reflection = 0;
-}
-
void RenderLayer::updateReflectionStyle()
{
RefPtr<RenderStyle> newStyle = RenderStyle::create();
diff --git a/WebCore/rendering/RenderLayer.h b/WebCore/rendering/RenderLayer.h
index 16ad4d4..1772c66 100644
--- a/WebCore/rendering/RenderLayer.h
+++ b/WebCore/rendering/RenderLayer.h
@@ -415,13 +415,11 @@ public:
#if USE(ACCELERATED_COMPOSITING)
bool isComposited() const { return m_backing != 0; }
- bool hasCompositedMask() const;
RenderLayerBacking* backing() const { return m_backing.get(); }
RenderLayerBacking* ensureBacking();
void clearBacking();
#else
bool isComposited() const { return false; }
- bool hasCompositedMask() const { return false; }
#endif
bool paintsWithTransparency() const
@@ -509,8 +507,6 @@ private:
Node* enclosingElement() const;
void createReflection();
- void removeReflection();
-
void updateReflectionStyle();
bool paintingInsideReflection() const { return m_paintingInsideReflection; }
void setPaintingInsideReflection(bool b) { m_paintingInsideReflection = b; }
diff --git a/WebCore/rendering/RenderLayerBacking.cpp b/WebCore/rendering/RenderLayerBacking.cpp
index b60e18f..e98c458 100644
--- a/WebCore/rendering/RenderLayerBacking.cpp
+++ b/WebCore/rendering/RenderLayerBacking.cpp
@@ -47,14 +47,16 @@ using namespace std;
namespace WebCore {
-using namespace HTMLNames;
-
static bool hasBorderOutlineOrShadow(const RenderStyle*);
static bool hasBoxDecorations(const RenderStyle*);
static bool hasBoxDecorationsWithBackgroundImage(const RenderStyle*);
RenderLayerBacking::RenderLayerBacking(RenderLayer* layer)
: m_owningLayer(layer)
+ , m_ancestorClippingLayer(0)
+ , m_graphicsLayer(0)
+ , m_foregroundLayer(0)
+ , m_clippingLayer(0)
, m_hasDirectlyCompositedContent(false)
{
createGraphicsLayer();
@@ -64,13 +66,12 @@ RenderLayerBacking::~RenderLayerBacking()
{
updateClippingLayers(false, false);
updateForegroundLayer(false);
- updateMaskLayer(false);
destroyGraphicsLayer();
}
void RenderLayerBacking::createGraphicsLayer()
{
- m_graphicsLayer = GraphicsLayer::create(this);
+ m_graphicsLayer = GraphicsLayer::createGraphicsLayer(this);
#ifndef NDEBUG
if (renderer()->node()) {
@@ -78,7 +79,7 @@ void RenderLayerBacking::createGraphicsLayer()
m_graphicsLayer->setName("Document Node");
else {
if (renderer()->node()->isHTMLElement() && renderer()->node()->hasID())
- m_graphicsLayer->setName(renderer()->renderName() + String(" ") + static_cast<HTMLElement*>(renderer()->node())->getAttribute(idAttr));
+ m_graphicsLayer->setName(renderer()->renderName() + String(" ") + static_cast<HTMLElement*>(renderer()->node())->id());
else
m_graphicsLayer->setName(renderer()->renderName());
}
@@ -95,10 +96,14 @@ void RenderLayerBacking::destroyGraphicsLayer()
if (m_graphicsLayer)
m_graphicsLayer->removeFromParent();
+ delete m_graphicsLayer;
m_graphicsLayer = 0;
+
+ delete m_foregroundLayer;
m_foregroundLayer = 0;
+
+ delete m_clippingLayer;
m_clippingLayer = 0;
- m_maskLayer = 0;
}
void RenderLayerBacking::updateLayerOpacity()
@@ -153,9 +158,6 @@ bool RenderLayerBacking::updateGraphicsLayerConfiguration()
if (updateClippingLayers(compositor->clippedByAncestor(m_owningLayer), compositor->clipsCompositingDescendants(m_owningLayer)))
layerConfigChanged = true;
- if (updateMaskLayer(m_owningLayer->renderer()->hasMask()))
- m_graphicsLayer->setMaskLayer(m_maskLayer.get());
-
m_hasDirectlyCompositedContent = false;
if (canUseDirectCompositing()) {
if (renderer()->isImage()) {
@@ -249,19 +251,13 @@ void RenderLayerBacking::updateGraphicsLayerGeometry()
}
// If we have a layer that clips children, position it.
- IntRect clippingBox;
if (m_clippingLayer) {
- clippingBox = toRenderBox(renderer())->overflowClipRect(0, 0);
+ IntRect clippingBox = toRenderBox(renderer())->overflowClipRect(0, 0);
m_clippingLayer->setPosition(FloatPoint() + (clippingBox.location() - localCompositingBounds.location()));
m_clippingLayer->setSize(clippingBox.size());
m_clippingLayer->setOffsetFromRenderer(clippingBox.location() - IntPoint());
}
- if (m_maskLayer) {
- m_maskLayer->setSize(m_graphicsLayer->size());
- m_maskLayer->setPosition(FloatPoint());
- }
-
if (m_owningLayer->hasTransform()) {
const IntRect borderBox = toRenderBox(renderer())->borderBoxRect();
@@ -297,20 +293,10 @@ void RenderLayerBacking::updateGraphicsLayerGeometry()
}
if (m_foregroundLayer) {
- FloatPoint foregroundPosition;
- FloatSize foregroundSize = newSize;
- IntSize foregroundOffset = m_graphicsLayer->offsetFromRenderer();
- // If we have a clipping layer (which clips descendants), then the foreground layer is a child of it,
- // so that it gets correctly sorted with children. In that case, position relative to the clipping layer.
- if (m_clippingLayer) {
- foregroundPosition = FloatPoint() + (localCompositingBounds.location() - clippingBox.location());
- foregroundSize = FloatSize(clippingBox.size());
- foregroundOffset = clippingBox.location() - IntPoint();
- }
-
- m_foregroundLayer->setPosition(foregroundPosition);
- m_foregroundLayer->setSize(foregroundSize);
- m_foregroundLayer->setOffsetFromRenderer(foregroundOffset);
+ // The contents layer is always coincidental with the graphicsLayer for now.
+ m_foregroundLayer->setPosition(IntPoint(0, 0));
+ m_foregroundLayer->setSize(newSize);
+ m_foregroundLayer->setOffsetFromRenderer(m_graphicsLayer->offsetFromRenderer());
}
m_graphicsLayer->setContentsRect(contentsBox());
@@ -325,12 +311,12 @@ void RenderLayerBacking::updateInternalHierarchy()
if (m_ancestorClippingLayer) {
m_ancestorClippingLayer->removeAllChildren();
m_graphicsLayer->removeFromParent();
- m_ancestorClippingLayer->addChild(m_graphicsLayer.get());
+ m_ancestorClippingLayer->addChild(m_graphicsLayer);
}
if (m_clippingLayer) {
m_clippingLayer->removeFromParent();
- m_graphicsLayer->addChild(m_clippingLayer.get());
+ m_graphicsLayer->addChild(m_clippingLayer);
}
}
@@ -341,7 +327,7 @@ bool RenderLayerBacking::updateClippingLayers(bool needsAncestorClip, bool needs
if (needsAncestorClip) {
if (!m_ancestorClippingLayer) {
- m_ancestorClippingLayer = GraphicsLayer::create(this);
+ m_ancestorClippingLayer = GraphicsLayer::createGraphicsLayer(this);
#ifndef NDEBUG
m_ancestorClippingLayer->setName("Ancestor clipping Layer");
#endif
@@ -350,13 +336,14 @@ bool RenderLayerBacking::updateClippingLayers(bool needsAncestorClip, bool needs
}
} else if (m_ancestorClippingLayer) {
m_ancestorClippingLayer->removeFromParent();
+ delete m_ancestorClippingLayer;
m_ancestorClippingLayer = 0;
layersChanged = true;
}
if (needsDescendantClip) {
if (!m_clippingLayer) {
- m_clippingLayer = GraphicsLayer::create(0);
+ m_clippingLayer = GraphicsLayer::createGraphicsLayer(0);
#ifndef NDEBUG
m_clippingLayer->setName("Child clipping Layer");
#endif
@@ -365,6 +352,7 @@ bool RenderLayerBacking::updateClippingLayers(bool needsAncestorClip, bool needs
}
} else if (m_clippingLayer) {
m_clippingLayer->removeFromParent();
+ delete m_clippingLayer;
m_clippingLayer = 0;
layersChanged = true;
}
@@ -380,61 +368,25 @@ bool RenderLayerBacking::updateForegroundLayer(bool needsForegroundLayer)
bool layerChanged = false;
if (needsForegroundLayer) {
if (!m_foregroundLayer) {
- m_foregroundLayer = GraphicsLayer::create(this);
+ m_foregroundLayer = GraphicsLayer::createGraphicsLayer(this);
#ifndef NDEBUG
- m_foregroundLayer->setName("Foreground");
+ m_foregroundLayer->setName("Contents");
#endif
m_foregroundLayer->setDrawsContent(true);
- m_foregroundLayer->setPaintingPhase(GraphicsLayerPaintForeground);
+ m_foregroundLayer->setDrawingPhase(GraphicsLayerPaintForegroundMask);
+ m_graphicsLayer->setDrawingPhase(GraphicsLayerPaintBackgroundMask);
layerChanged = true;
}
} else if (m_foregroundLayer) {
m_foregroundLayer->removeFromParent();
+ delete m_foregroundLayer;
m_foregroundLayer = 0;
+ m_graphicsLayer->setDrawingPhase(GraphicsLayerPaintAllMask);
layerChanged = true;
}
-
- if (layerChanged)
- m_graphicsLayer->setPaintingPhase(paintingPhaseForPrimaryLayer());
-
- return layerChanged;
-}
-
-bool RenderLayerBacking::updateMaskLayer(bool needsMaskLayer)
-{
- bool layerChanged = false;
- if (needsMaskLayer) {
- if (!m_maskLayer) {
- m_maskLayer = GraphicsLayer::create(this);
-#ifndef NDEBUG
- m_maskLayer->setName("Mask");
-#endif
- m_maskLayer->setDrawsContent(true);
- m_maskLayer->setPaintingPhase(GraphicsLayerPaintMask);
- layerChanged = true;
- }
- } else if (m_maskLayer) {
- m_maskLayer = 0;
- layerChanged = true;
- }
-
- if (layerChanged)
- m_graphicsLayer->setPaintingPhase(paintingPhaseForPrimaryLayer());
-
return layerChanged;
}
-GraphicsLayerPaintingPhase RenderLayerBacking::paintingPhaseForPrimaryLayer() const
-{
- unsigned phase = GraphicsLayerPaintBackground;
- if (!m_foregroundLayer)
- phase |= GraphicsLayerPaintForeground;
- if (!m_maskLayer)
- phase |= GraphicsLayerPaintMask;
-
- return static_cast<GraphicsLayerPaintingPhase>(phase);
-}
-
float RenderLayerBacking::compositingOpacity(float rendererOpacity) const
{
float finalOpacity = rendererOpacity;
@@ -548,7 +500,7 @@ bool RenderLayerBacking::isSimpleContainerCompositingLayer() const
// Now look at the body's renderer.
HTMLElement* body = renderObject->document()->body();
- RenderObject* bodyObject = (body && body->hasLocalName(bodyTag)) ? body->renderer() : 0;
+ RenderObject* bodyObject = (body && body->hasLocalName(HTMLNames::bodyTag)) ? body->renderer() : 0;
if (!bodyObject)
return false;
@@ -753,16 +705,13 @@ void RenderLayerBacking::setContentsNeedDisplay()
if (m_foregroundLayer && m_foregroundLayer->drawsContent())
m_foregroundLayer->setNeedsDisplay();
-
- if (m_maskLayer && m_maskLayer->drawsContent())
- m_maskLayer->setNeedsDisplay();
}
// r is in the coordinate space of the layer's render object
void RenderLayerBacking::setContentsNeedDisplayInRect(const IntRect& r)
{
if (m_graphicsLayer && m_graphicsLayer->drawsContent()) {
- FloatPoint dirtyOrigin = contentsToGraphicsLayerCoordinates(m_graphicsLayer.get(), FloatPoint(r.x(), r.y()));
+ FloatPoint dirtyOrigin = contentsToGraphicsLayerCoordinates(m_graphicsLayer, FloatPoint(r.x(), r.y()));
FloatRect dirtyRect(dirtyOrigin, r.size());
FloatRect bounds(FloatPoint(), m_graphicsLayer->size());
if (bounds.intersects(dirtyRect))
@@ -773,11 +722,6 @@ void RenderLayerBacking::setContentsNeedDisplayInRect(const IntRect& r)
// FIXME: do incremental repaint
m_foregroundLayer->setNeedsDisplay();
}
-
- if (m_maskLayer && m_maskLayer->drawsContent()) {
- // FIXME: do incremental repaint
- m_maskLayer->setNeedsDisplay();
- }
}
static void setClip(GraphicsContext* p, const IntRect& paintDirtyRect, const IntRect& clipRect)
@@ -835,7 +779,7 @@ void RenderLayerBacking::paintIntoLayer(RenderLayer* rootLayer, GraphicsContext*
bool shouldPaint = m_owningLayer->hasVisibleContent() && m_owningLayer->isSelfPaintingLayer();
- if (shouldPaint && (paintingPhase & GraphicsLayerPaintBackground)) {
+ if (shouldPaint && (paintingPhase & GraphicsLayerPaintBackgroundMask)) {
// If this is the root then we need to send in a bigger bounding box
// because we'll be painting the background as well (see RenderBox::paintRootBoxDecorations()).
IntRect paintBox = clipRectToApply;
@@ -879,10 +823,7 @@ void RenderLayerBacking::paintIntoLayer(RenderLayer* rootLayer, GraphicsContext*
restoreClip(context, paintDirtyRect, damageRect);
}
- bool forceBlackText = paintRestriction == PaintRestrictionSelectionOnlyBlackText;
- bool selectionOnly = paintRestriction == PaintRestrictionSelectionOnly || paintRestriction == PaintRestrictionSelectionOnlyBlackText;
-
- if (shouldPaint && (paintingPhase & GraphicsLayerPaintForeground)) {
+ if (shouldPaint && (paintingPhase & GraphicsLayerPaintForegroundMask)) {
// Now walk the sorted list of children with negative z-indices. Only RenderLayers without compositing layers will paint.
// FIXME: should these be painted as background?
Vector<RenderLayer*>* negZOrderList = m_owningLayer->negZOrderList();
@@ -891,6 +832,9 @@ void RenderLayerBacking::paintIntoLayer(RenderLayer* rootLayer, GraphicsContext*
it[0]->paintLayer(rootLayer, context, paintDirtyRect, paintRestriction, paintingRoot);
}
+ bool forceBlackText = paintRestriction == PaintRestrictionSelectionOnlyBlackText;
+ bool selectionOnly = paintRestriction == PaintRestrictionSelectionOnly || paintRestriction == PaintRestrictionSelectionOnlyBlackText;
+
// Set up the clip used when painting our children.
setClip(context, paintDirtyRect, clipRectToApply);
RenderObject::PaintInfo paintInfo(context, clipRectToApply,
@@ -933,9 +877,7 @@ void RenderLayerBacking::paintIntoLayer(RenderLayer* rootLayer, GraphicsContext*
for (Vector<RenderLayer*>::iterator it = posZOrderList->begin(); it != posZOrderList->end(); ++it)
it[0]->paintLayer(rootLayer, context, paintDirtyRect, paintRestriction, paintingRoot);
}
- }
-
- if (shouldPaint && (paintingPhase & GraphicsLayerPaintMask)) {
+
if (renderer()->hasMask() && !selectionOnly && !damageRect.isEmpty()) {
setClip(context, paintDirtyRect, damageRect);
@@ -952,7 +894,7 @@ void RenderLayerBacking::paintIntoLayer(RenderLayer* rootLayer, GraphicsContext*
}
// Up-call from compositing layer drawing callback.
-void RenderLayerBacking::paintContents(const GraphicsLayer*, GraphicsContext& context, GraphicsLayerPaintingPhase paintingPhase, const IntRect& clip)
+void RenderLayerBacking::paintContents(const GraphicsLayer*, GraphicsContext& context, GraphicsLayerPaintingPhase drawingPhase, const IntRect& clip)
{
// We have to use the same root as for hit testing, because both methods
// can compute and cache clipRects.
@@ -970,7 +912,7 @@ void RenderLayerBacking::paintContents(const GraphicsLayer*, GraphicsContext& co
IntRect dirtyRect = enclosingBBox;
dirtyRect.intersect(clipRect);
- paintIntoLayer(m_owningLayer, &context, dirtyRect, PaintRestrictionNone, paintingPhase, renderer());
+ paintIntoLayer(m_owningLayer, &context, dirtyRect, PaintRestrictionNone, drawingPhase, renderer());
}
bool RenderLayerBacking::startAnimation(double beginTime, const Animation* anim, const KeyframeList& keyframes)
diff --git a/WebCore/rendering/RenderLayerBacking.h b/WebCore/rendering/RenderLayerBacking.h
index 731e741..b027685 100644
--- a/WebCore/rendering/RenderLayerBacking.h
+++ b/WebCore/rendering/RenderLayerBacking.h
@@ -63,23 +63,21 @@ public:
// Update contents and clipping structure.
void updateInternalHierarchy(); // make private
- GraphicsLayer* graphicsLayer() const { return m_graphicsLayer.get(); }
+ GraphicsLayer* graphicsLayer() const { return m_graphicsLayer; }
// Layer to clip children
bool hasClippingLayer() const { return m_clippingLayer != 0; }
- GraphicsLayer* clippingLayer() const { return m_clippingLayer.get(); }
+ GraphicsLayer* clippingLayer() const { return m_clippingLayer; }
// Layer to get clipped by ancestor
bool hasAncestorClippingLayer() const { return m_ancestorClippingLayer != 0; }
- GraphicsLayer* ancestorClippingLayer() const { return m_ancestorClippingLayer.get(); }
+ GraphicsLayer* ancestorClippingLayer() const { return m_ancestorClippingLayer; }
bool hasContentsLayer() const { return m_foregroundLayer != 0; }
- GraphicsLayer* foregroundLayer() const { return m_foregroundLayer.get(); }
+ GraphicsLayer* foregroundLayer() const { return m_foregroundLayer; }
- bool hasMaskLayer() const { return m_maskLayer != 0; }
-
- GraphicsLayer* parentForSublayers() const { return m_clippingLayer ? m_clippingLayer.get() : m_graphicsLayer.get(); }
- GraphicsLayer* childForSuperlayers() const { return m_ancestorClippingLayer ? m_ancestorClippingLayer.get() : m_graphicsLayer.get(); }
+ GraphicsLayer* parentForSublayers() const { return m_clippingLayer ? m_clippingLayer : m_graphicsLayer; }
+ GraphicsLayer* childForSuperlayers() const { return m_ancestorClippingLayer ? m_ancestorClippingLayer : m_graphicsLayer; }
// RenderLayers with backing normally short-circuit paintLayer() because
// their content is rendered via callbacks from GraphicsLayer. However, the document
@@ -129,10 +127,7 @@ private:
bool updateClippingLayers(bool needsAncestorClip, bool needsDescendantClip);
bool updateForegroundLayer(bool needsForegroundLayer);
- bool updateMaskLayer(bool needsMaskLayer);
- GraphicsLayerPaintingPhase paintingPhaseForPrimaryLayer() const;
-
IntSize contentOffsetInCompostingLayer() const;
// Result is transform origin in pixels.
FloatPoint3D computeTransformOrigin(const IntRect& borderBox) const;
@@ -167,11 +162,10 @@ private:
private:
RenderLayer* m_owningLayer;
- OwnPtr<GraphicsLayer> m_ancestorClippingLayer; // only used if we are clipped by an ancestor which is not a stacking context
- OwnPtr<GraphicsLayer> m_graphicsLayer;
- OwnPtr<GraphicsLayer> m_foregroundLayer; // only used in cases where we need to draw the foreground separately
- OwnPtr<GraphicsLayer> m_clippingLayer; // only used if we have clipping on a stacking context, with compositing children
- OwnPtr<GraphicsLayer> m_maskLayer; // only used if we have a mask
+ GraphicsLayer* m_ancestorClippingLayer; // only used if we are clipped by an ancestor which is not a stacking context
+ GraphicsLayer* m_graphicsLayer;
+ GraphicsLayer* m_foregroundLayer; // only used in cases where we need to draw the foreground separately
+ GraphicsLayer* m_clippingLayer; // only used if we have clipping on a stacking context, with compositing children
IntRect m_compositedBounds;
diff --git a/WebCore/rendering/RenderLayerCompositor.cpp b/WebCore/rendering/RenderLayerCompositor.cpp
index 10da951..fb15800 100644
--- a/WebCore/rendering/RenderLayerCompositor.cpp
+++ b/WebCore/rendering/RenderLayerCompositor.cpp
@@ -92,6 +92,7 @@ RenderLayerCompositor::RenderLayerCompositor(RenderView* renderView)
RenderLayerCompositor::~RenderLayerCompositor()
{
ASSERT(!m_rootLayerAttached);
+ delete m_rootPlatformLayer;
}
void RenderLayerCompositor::enableCompositingMode(bool enable /* = true */)
@@ -502,7 +503,8 @@ void RenderLayerCompositor::computeCompositingRequirements(RenderLayer* layer, O
// If we have a software transform, and we have layers under us, we need to also
// be composited. Also, if we have opacity < 1, then we need to be a layer so that
// the child layers are opaque, then rendered with opacity on this layer.
- if (childState.m_subtreeIsCompositing && requiresCompositingWhenDescendantsAreCompositing(layer->renderer())) {
+ if (childState.m_subtreeIsCompositing &&
+ (layer->renderer()->hasTransform() || layer->renderer()->style()->opacity() < 1)) {
layer->setMustOverlapCompositedLayers(true);
if (overlapMap)
addToOverlapMap(*overlapMap, layer, absBounds, haveComputedBounds);
@@ -571,7 +573,7 @@ bool RenderLayerCompositor::canAccelerateVideoRendering(RenderVideo* o) const
{
// FIXME: ideally we need to look at all ancestors for mask or video. But for now,
// just bail on the obvious cases.
- if (o->hasReflection() || !m_hasAcceleratedCompositing)
+ if (o->hasMask() || o->hasReflection() || !m_hasAcceleratedCompositing)
return false;
return o->supportsAcceleratedRendering();
@@ -630,10 +632,10 @@ void RenderLayerCompositor::rebuildCompositingLayerTree(RenderLayer* layer, stru
}
if (updateHierarchy && layerBacking && layerBacking->foregroundLayer()) {
+ // we only have a contents layer if we have an m_layer
layerBacking->foregroundLayer()->removeFromParent();
-
- // The foreground layer has to be correctly sorted with child layers, so needs to become a child of the clipping layer.
- GraphicsLayer* hostingLayer = layerBacking->parentForSublayers();
+
+ GraphicsLayer* hostingLayer = layerBacking->clippingLayer() ? layerBacking->clippingLayer() : layerBacking->graphicsLayer();
hostingLayer->addChild(layerBacking->foregroundLayer());
}
}
@@ -757,7 +759,7 @@ RenderLayer* RenderLayerCompositor::rootRenderLayer() const
GraphicsLayer* RenderLayerCompositor::rootPlatformLayer() const
{
- return m_rootPlatformLayer.get();
+ return m_rootPlatformLayer;
}
void RenderLayerCompositor::didMoveOnscreen()
@@ -770,7 +772,7 @@ void RenderLayerCompositor::didMoveOnscreen()
if (!page)
return;
- page->chrome()->client()->attachRootGraphicsLayer(frame, m_rootPlatformLayer.get());
+ page->chrome()->client()->attachRootGraphicsLayer(frame, m_rootPlatformLayer);
m_rootLayerAttached = true;
}
@@ -904,11 +906,6 @@ bool RenderLayerCompositor::requiresCompositingForAnimation(RenderObject* render
return false;
}
-bool RenderLayerCompositor::requiresCompositingWhenDescendantsAreCompositing(RenderObject* renderer) const
-{
- return renderer->hasTransform() || renderer->isTransparent() || renderer->hasMask();
-}
-
// If an element has negative z-index children, those children render in front of the
// layer background, so we need an extra 'contents' layer for the foreground of the layer
// object.
@@ -922,7 +919,7 @@ void RenderLayerCompositor::ensureRootPlatformLayer()
if (m_rootPlatformLayer)
return;
- m_rootPlatformLayer = GraphicsLayer::create(0);
+ m_rootPlatformLayer = GraphicsLayer::createGraphicsLayer(0);
m_rootPlatformLayer->setSize(FloatSize(m_renderView->overflowWidth(), m_renderView->overflowHeight()));
m_rootPlatformLayer->setPosition(FloatPoint(0, 0));
// The root layer does flipping if we need it on this platform.
@@ -940,6 +937,7 @@ void RenderLayerCompositor::destroyRootPlatformLayer()
return;
willMoveOffscreen();
+ delete m_rootPlatformLayer;
m_rootPlatformLayer = 0;
}
diff --git a/WebCore/rendering/RenderLayerCompositor.h b/WebCore/rendering/RenderLayerCompositor.h
index 8dd689c..02929dc 100644
--- a/WebCore/rendering/RenderLayerCompositor.h
+++ b/WebCore/rendering/RenderLayerCompositor.h
@@ -164,11 +164,10 @@ private:
bool requiresCompositingForAnimation(RenderObject*) const;
bool requiresCompositingForTransform(RenderObject*) const;
bool requiresCompositingForVideo(RenderObject*) const;
- bool requiresCompositingWhenDescendantsAreCompositing(RenderObject*) const;
private:
RenderView* m_renderView;
- OwnPtr<GraphicsLayer> m_rootPlatformLayer;
+ GraphicsLayer* m_rootPlatformLayer;
bool m_hasAcceleratedCompositing;
bool m_compositingConsultsOverlap;
bool m_compositing;
diff --git a/WebCore/rendering/RenderListItem.h b/WebCore/rendering/RenderListItem.h
index c4c41dc..21544f9 100644
--- a/WebCore/rendering/RenderListItem.h
+++ b/WebCore/rendering/RenderListItem.h
@@ -44,8 +44,6 @@ public:
void setNotInList(bool notInList) { m_notInList = notInList; }
bool notInList() const { return m_notInList; }
- const String& markerText() const;
-
private:
virtual const char* renderName() const { return "RenderListItem"; }
@@ -61,6 +59,8 @@ private:
virtual void positionListMarker();
+ const String& markerText() const;
+
virtual void styleDidChange(StyleDifference, const RenderStyle* oldStyle);
void updateMarkerLocation();
diff --git a/WebCore/rendering/RenderMarquee.cpp b/WebCore/rendering/RenderMarquee.cpp
index bb917f8..31a8305 100644
--- a/WebCore/rendering/RenderMarquee.cpp
+++ b/WebCore/rendering/RenderMarquee.cpp
@@ -1,6 +1,5 @@
/*
* Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved.
- * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/)
*
* Portions are Copyright (C) 1998 Netscape Communications Corporation.
*
@@ -153,11 +152,7 @@ int RenderMarquee::computePosition(EMarqueeDirection dir, bool stopAtContentEdge
void RenderMarquee::start()
{
- if (m_timer.isActive() || m_layer->renderer()->style()->marqueeIncrement().isZero()
-#if ENABLE(WCSS) && ENABLE(XHTMLMP)
- || (m_layer->renderer()->document()->isXHTMLMPDocument() && !m_layer->renderer()->style()->marqueeLoopCount())
-#endif
- )
+ if (m_timer.isActive() || m_layer->renderer()->style()->marqueeIncrement().isZero())
return;
// We may end up propagating a scroll event. It is important that we suspend events until
diff --git a/WebCore/rendering/RenderObject.cpp b/WebCore/rendering/RenderObject.cpp
index 728ff7a..5137338 100644
--- a/WebCore/rendering/RenderObject.cpp
+++ b/WebCore/rendering/RenderObject.cpp
@@ -4,7 +4,6 @@
* (C) 2000 Dirk Mueller (mueller@kde.org)
* (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com)
* Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
- * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -146,12 +145,6 @@ RenderObject* RenderObject::createObject(Node* node, RenderStyle* style)
o = new (arena) RenderTableCell(node);
break;
case TABLE_CAPTION:
-#if ENABLE(WCSS)
- // As per the section 17.1 of the spec WAP-239-WCSS-20011026-a.pdf,
- // the marquee box inherits and extends the characteristics of the
- // principal block box ([CSS2] section 9.2.1).
- case WAP_MARQUEE:
-#endif
o = new (arena) RenderBlock(node);
break;
case BOX:
@@ -1619,20 +1612,15 @@ void RenderObject::styleDidChange(StyleDifference diff, const RenderStyle*)
void RenderObject::updateFillImages(const FillLayer* oldLayers, const FillLayer* newLayers)
{
- // Optimize the common case
- if (oldLayers && !oldLayers->next() && newLayers && !newLayers->next() && (oldLayers->image() == newLayers->image()))
- return;
-
- // Go through the new layers and addClients first, to avoid removing all clients of an image.
- for (const FillLayer* currNew = newLayers; currNew; currNew = currNew->next()) {
- if (currNew->image())
- currNew->image()->addClient(this);
- }
-
+ // FIXME: This will be slow when a large number of images is used. Fix by using a dict.
for (const FillLayer* currOld = oldLayers; currOld; currOld = currOld->next()) {
- if (currOld->image())
+ if (currOld->image() && (!newLayers || !newLayers->containsImage(currOld->image())))
currOld->image()->removeClient(this);
}
+ for (const FillLayer* currNew = newLayers; currNew; currNew = currNew->next()) {
+ if (currNew->image() && (!oldLayers || !oldLayers->containsImage(currNew->image())))
+ currNew->image()->addClient(this);
+ }
}
void RenderObject::updateImage(StyleImage* oldImage, StyleImage* newImage)
diff --git a/WebCore/rendering/RenderObject.h b/WebCore/rendering/RenderObject.h
index eb558f6..911169d 100644
--- a/WebCore/rendering/RenderObject.h
+++ b/WebCore/rendering/RenderObject.h
@@ -285,9 +285,6 @@ public:
bool isHTMLMarquee() const;
- inline bool isAfterContent() const;
- static inline bool isAfterContent(const RenderObject* obj) { return obj && obj->isAfterContent(); }
-
bool childrenInline() const { return m_childrenInline; }
void setChildrenInline(bool b = true) { m_childrenInline = b; }
bool hasColumns() const { return m_hasColumns; }
@@ -861,16 +858,6 @@ inline bool RenderObject::documentBeingDestroyed() const
return !document()->renderer();
}
-inline bool RenderObject::isAfterContent() const
-{
- if (style()->styleType() != AFTER)
- return false;
- // Text nodes don't have their own styles, so ignore the style on a text node.
- if (isText() && !isBR())
- return false;
- return true;
-}
-
inline void RenderObject::setNeedsLayout(bool b, bool markParents)
{
bool alreadyNeededLayout = m_needsLayout;
diff --git a/WebCore/rendering/RenderReplaced.cpp b/WebCore/rendering/RenderReplaced.cpp
index 0ab11b6..692a66e 100644
--- a/WebCore/rendering/RenderReplaced.cpp
+++ b/WebCore/rendering/RenderReplaced.cpp
@@ -66,7 +66,7 @@ void RenderReplaced::styleDidChange(StyleDifference diff, const RenderStyle* old
bool hadStyle = (oldStyle != 0);
float oldZoom = hadStyle ? oldStyle->effectiveZoom() : RenderStyle::initialZoom();
- if (style() && style()->effectiveZoom() != oldZoom)
+ if (hadStyle && style() && style()->effectiveZoom() != oldZoom)
intrinsicSizeChanged();
}
diff --git a/WebCore/rendering/RenderTable.cpp b/WebCore/rendering/RenderTable.cpp
index ebd7fbe..7599999 100644
--- a/WebCore/rendering/RenderTable.cpp
+++ b/WebCore/rendering/RenderTable.cpp
@@ -456,7 +456,26 @@ void RenderTable::layout()
// FIXME: Only pass true if width or height changed.
layoutPositionedObjects(true);
- updateOverflowWithShadowAndReflection();
+ if (!hasOverflowClip()) {
+ int shadowLeft;
+ int shadowRight;
+ int shadowTop;
+ int shadowBottom;
+ style()->getBoxShadowExtent(shadowTop, shadowRight, shadowBottom, shadowLeft);
+
+ m_overflowLeft = min(m_overflowLeft, shadowLeft);
+ m_overflowWidth = max(m_overflowWidth, width() + shadowRight);
+ m_overflowTop = min(m_overflowTop, shadowTop);
+ m_overflowHeight = max(m_overflowHeight, height() + shadowBottom);
+
+ if (hasReflection()) {
+ IntRect reflection(reflectionBox());
+ m_overflowTop = min(m_overflowTop, reflection.y());
+ m_overflowHeight = max(m_overflowHeight, reflection.bottom());
+ m_overflowLeft = min(m_overflowLeft, reflection.x());
+ m_overflowHeight = max(m_overflowWidth, reflection.right());
+ }
+ }
statePusher.pop();
diff --git a/WebCore/rendering/RenderText.cpp b/WebCore/rendering/RenderText.cpp
index 383a394..ada3961 100644
--- a/WebCore/rendering/RenderText.cpp
+++ b/WebCore/rendering/RenderText.cpp
@@ -207,7 +207,7 @@ void RenderText::deleteTextBoxes()
PassRefPtr<StringImpl> RenderText::originalText() const
{
Node* e = node();
- return e ? static_cast<Text*>(e)->dataImpl() : 0;
+ return e ? static_cast<Text*>(e)->string() : 0;
}
void RenderText::absoluteRects(Vector<IntRect>& rects, int tx, int ty)
diff --git a/WebCore/rendering/RenderTextFragment.cpp b/WebCore/rendering/RenderTextFragment.cpp
index 9ff1106..7da9e5a 100644
--- a/WebCore/rendering/RenderTextFragment.cpp
+++ b/WebCore/rendering/RenderTextFragment.cpp
@@ -47,7 +47,7 @@ RenderTextFragment::RenderTextFragment(Node* node, StringImpl* str)
PassRefPtr<StringImpl> RenderTextFragment::originalText() const
{
Node* e = node();
- RefPtr<StringImpl> result = (e ? static_cast<Text*>(e)->dataImpl() : contentString());
+ RefPtr<StringImpl> result = (e ? static_cast<Text*>(e)->string() : contentString());
if (result && (start() > 0 || start() < result->length()))
result = result->substring(start(), end());
return result.release();
@@ -76,7 +76,7 @@ UChar RenderTextFragment::previousCharacter()
{
if (start()) {
Node* e = node();
- StringImpl* original = (e ? static_cast<Text*>(e)->dataImpl() : contentString());
+ StringImpl* original = (e ? static_cast<Text*>(e)->string() : contentString());
if (original)
return (*original)[start() - 1];
}
diff --git a/WebCore/rendering/RenderThemeChromiumMac.h b/WebCore/rendering/RenderThemeChromiumMac.h
index 0c417a2..ffb2548 100644
--- a/WebCore/rendering/RenderThemeChromiumMac.h
+++ b/WebCore/rendering/RenderThemeChromiumMac.h
@@ -156,7 +156,6 @@ namespace WebCore {
IntSize sizeForSystemFont(RenderStyle*, const IntSize* sizes) const;
void setFontFromControlSize(CSSStyleSelector*, RenderStyle*, NSControlSize) const;
- void updateActiveState(NSCell*, const RenderObject*);
void updateCheckedState(NSCell*, const RenderObject*);
void updateEnabledState(NSCell*, const RenderObject*);
void updateFocusedState(NSCell*, const RenderObject*);
diff --git a/WebCore/rendering/RenderThemeChromiumMac.mm b/WebCore/rendering/RenderThemeChromiumMac.mm
index 42e2aca..23201c9 100644
--- a/WebCore/rendering/RenderThemeChromiumMac.mm
+++ b/WebCore/rendering/RenderThemeChromiumMac.mm
@@ -549,25 +549,6 @@ IntRect RenderThemeChromiumMac::inflateRect(const IntRect& r, const IntSize& siz
return result;
}
-// Updates the control tint (a.k.a. active state) of |cell| (from |o|).
-// In the Chromium port, the renderer runs as a background process and controls'
-// NSCell(s) lack a parent NSView. Therefore controls don't have their tint
-// color updated correctly when the application is activated/deactivated.
-// FocusController's setActive() is called when the application is
-// activated/deactivated, which causes a repaint at which time this code is
-// called.
-// This function should be called before drawing any NSCell-derived controls,
-// unless you're sure it isn't needed.
-void RenderThemeChromiumMac::updateActiveState(NSCell* cell, const RenderObject* o)
-{
- NSControlTint oldTint = [cell controlTint];
- NSControlTint tint = isActive(o) ? [NSColor currentControlTint] :
- NSClearControlTint;
-
- if (tint != oldTint)
- [cell setControlTint:tint];
-}
-
void RenderThemeChromiumMac::updateCheckedState(NSCell* cell, const RenderObject* o)
{
bool oldIndeterminate = [cell state] == NSMixedState;
@@ -784,7 +765,6 @@ void RenderThemeChromiumMac::setCheckboxCellState(const RenderObject* o, const I
setControlSize(checkbox, checkboxSizes(), r.size(), o->style()->effectiveZoom());
// Update the various states we respond to.
- updateActiveState(checkbox, o);
updateCheckedState(checkbox, o);
updateEnabledState(checkbox, o);
updatePressedState(checkbox, o);
@@ -866,7 +846,6 @@ void RenderThemeChromiumMac::setRadioCellState(const RenderObject* o, const IntR
setControlSize(radio, radioSizes(), r.size(), o->style()->effectiveZoom());
// Update the various states we respond to.
- updateActiveState(radio, o);
updateCheckedState(radio, o);
updateEnabledState(radio, o);
updatePressedState(radio, o);
@@ -997,7 +976,6 @@ void RenderThemeChromiumMac::setButtonCellState(const RenderObject* o, const Int
[button setKeyEquivalent:(isDefaultButton ? @"\r" : @"")];
// Update the various states we respond to.
- updateActiveState(button, o);
updateCheckedState(button, o);
updateEnabledState(button, o);
updatePressedState(button, o);
@@ -1436,7 +1414,6 @@ void RenderThemeChromiumMac::setPopupButtonCellState(const RenderObject* o, cons
setControlSize(popupButton, popupButtonSizes(), r.size(), o->style()->effectiveZoom());
// Update the various states we respond to.
- updateActiveState(popupButton, o);
updateCheckedState(popupButton, o);
updateEnabledState(popupButton, o);
updatePressedState(popupButton, o);
@@ -1519,7 +1496,6 @@ bool RenderThemeChromiumMac::paintSliderThumb(RenderObject* o, const RenderObjec
LocalCurrentGraphicsContext localContext(paintInfo.context);
// Update the various states we respond to.
- updateActiveState(sliderThumbCell, o);
updateEnabledState(sliderThumbCell, o->parent());
updateFocusedState(sliderThumbCell, o->parent());
@@ -1631,7 +1607,6 @@ void RenderThemeChromiumMac::setSearchCellState(RenderObject* o, const IntRect&
[search setControlSize:controlSizeForFont(o->style())];
// Update the various states we respond to.
- updateActiveState(search, o);
updateEnabledState(search, o);
updateFocusedState(search, o);
}
@@ -1692,7 +1667,6 @@ bool RenderThemeChromiumMac::paintSearchFieldCancelButton(RenderObject* o, const
NSSearchFieldCell* search = this->search();
- updateActiveState([search cancelButtonCell], o);
updatePressedState([search cancelButtonCell], o);
paintInfo.context->save();
@@ -1768,8 +1742,6 @@ bool RenderThemeChromiumMac::paintSearchFieldResultsDecoration(RenderObject* o,
NSSearchFieldCell* search = this->search();
- updateActiveState([search searchButtonCell], o);
-
if ([search searchMenuTemplate] != nil)
[search setSearchMenuTemplate:nil];
@@ -1797,8 +1769,6 @@ bool RenderThemeChromiumMac::paintSearchFieldResultsButton(RenderObject* o, cons
NSSearchFieldCell* search = this->search();
- updateActiveState([search searchButtonCell], o);
-
if (![search searchMenuTemplate])
[search setSearchMenuTemplate:searchMenuTemplate()];
diff --git a/WebCore/rendering/RenderThemeChromiumSkia.cpp b/WebCore/rendering/RenderThemeChromiumSkia.cpp
index c8875dc..79804ac 100644
--- a/WebCore/rendering/RenderThemeChromiumSkia.cpp
+++ b/WebCore/rendering/RenderThemeChromiumSkia.cpp
@@ -610,10 +610,6 @@ bool RenderThemeChromiumSkia::paintMediaPlayButton(RenderObject* object, const R
static Image* mediaPlay = Image::loadPlatformResource("mediaPlay").releaseRef();
static Image* mediaPause = Image::loadPlatformResource("mediaPause").releaseRef();
- static Image* mediaPlayDisabled = Image::loadPlatformResource("mediaPlayDisabled").releaseRef();
-
- if (mediaElement->networkState() == HTMLMediaElement::NETWORK_NO_SOURCE)
- return paintMediaButtonInternal(paintInfo.context, rect, mediaPlayDisabled);
return paintMediaButtonInternal(paintInfo.context, rect, mediaElement->paused() ? mediaPlay : mediaPause);
#else
diff --git a/WebCore/rendering/style/FillLayer.h b/WebCore/rendering/style/FillLayer.h
index aad7900..c3944ad 100644
--- a/WebCore/rendering/style/FillLayer.h
+++ b/WebCore/rendering/style/FillLayer.h
@@ -63,14 +63,14 @@ public:
bool isSizeSet() const { return m_sizeSet; }
void setImage(StyleImage* i) { m_image = i; m_imageSet = true; }
- void setXPosition(Length l) { m_xPosition = l; m_xPosSet = true; }
- void setYPosition(Length l) { m_yPosition = l; m_yPosSet = true; }
+ void setXPosition(const Length& l) { m_xPosition = l; m_xPosSet = true; }
+ void setYPosition(const Length& l) { m_yPosition = l; m_yPosSet = true; }
void setAttachment(EFillAttachment attachment) { m_attachment = attachment; m_attachmentSet = true; }
void setClip(EFillBox b) { m_clip = b; m_clipSet = true; }
void setOrigin(EFillBox b) { m_origin = b; m_originSet = true; }
void setRepeat(EFillRepeat r) { m_repeat = r; m_repeatSet = true; }
void setComposite(CompositeOperator c) { m_composite = c; m_compositeSet = true; }
- void setSize(LengthSize b) { m_size = b; m_sizeSet = true; }
+ void setSize(const LengthSize& b) { m_size = b; m_sizeSet = true; }
void clearImage() { m_imageSet = false; }
void clearXPosition() { m_xPosSet = false; }
diff --git a/WebCore/rendering/style/RenderStyleConstants.h b/WebCore/rendering/style/RenderStyleConstants.h
index 013d335..c491816 100644
--- a/WebCore/rendering/style/RenderStyleConstants.h
+++ b/WebCore/rendering/style/RenderStyleConstants.h
@@ -4,7 +4,6 @@
* (C) 2000 Dirk Mueller (mueller@kde.org)
* Copyright (C) 2003, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
* Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com)
- * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -299,11 +298,7 @@ enum EDisplay {
TABLE, INLINE_TABLE, TABLE_ROW_GROUP,
TABLE_HEADER_GROUP, TABLE_FOOTER_GROUP, TABLE_ROW,
TABLE_COLUMN_GROUP, TABLE_COLUMN, TABLE_CELL,
- TABLE_CAPTION, BOX, INLINE_BOX,
-#if ENABLE(WCSS)
- WAP_MARQUEE,
-#endif
- NONE
+ TABLE_CAPTION, BOX, INLINE_BOX, NONE
};
enum EPointerEvents {
diff --git a/WebCore/storage/Database.cpp b/WebCore/storage/Database.cpp
index 12416e9..5504cb1 100644
--- a/WebCore/storage/Database.cpp
+++ b/WebCore/storage/Database.cpp
@@ -50,7 +50,6 @@
#include "SQLiteFileSystem.h"
#include "SQLiteStatement.h"
#include "SQLResultSet.h"
-#include "SQLTransactionCoordinator.h"
#include <wtf/MainThread.h>
#endif
@@ -545,17 +544,13 @@ void Database::scheduleTransaction()
m_transactionInProgress = false;
}
-void Database::scheduleTransactionStep(SQLTransaction* transaction, bool immediately)
+void Database::scheduleTransactionStep(SQLTransaction* transaction)
{
- if (!m_document->databaseThread())
- return;
-
- RefPtr<DatabaseTransactionTask> task = DatabaseTransactionTask::create(transaction);
- LOG(StorageAPI, "Scheduling DatabaseTransactionTask %p for the transaction step\n", task.get());
- if (immediately)
- m_document->databaseThread()->scheduleImmediateTask(task.release());
- else
+ if (m_document->databaseThread()) {
+ RefPtr<DatabaseTransactionTask> task = DatabaseTransactionTask::create(transaction);
+ LOG(StorageAPI, "Scheduling DatabaseTransactionTask %p for the transaction step\n", task.get());
m_document->databaseThread()->scheduleTask(task.release());
+ }
}
void Database::scheduleTransactionCallback(SQLTransaction* transaction)
@@ -593,11 +588,6 @@ Vector<String> Database::performGetTableNames()
return tableNames;
}
-SQLTransactionCoordinator* Database::transactionCoordinator() const
-{
- return m_document->databaseThread()->transactionCoordinator();
-}
-
String Database::version() const
{
if (m_deleted)
diff --git a/WebCore/storage/Database.h b/WebCore/storage/Database.h
index 02736c8..0bdb37b 100644
--- a/WebCore/storage/Database.h
+++ b/WebCore/storage/Database.h
@@ -57,7 +57,6 @@ class DatabaseThread;
class Document;
class SQLResultSet;
class SQLTransactionCallback;
-class SQLTransactionCoordinator;
class SQLTransactionErrorCallback;
class SQLValue;
@@ -117,8 +116,6 @@ public:
Vector<String> performGetTableNames();
- SQLTransactionCoordinator* transactionCoordinator() const;
-
private:
Database(Document* document, const String& name, const String& expectedVersion);
@@ -126,7 +123,7 @@ private:
void scheduleTransaction();
void scheduleTransactionCallback(SQLTransaction*);
- void scheduleTransactionStep(SQLTransaction* transaction, bool immediately = false);
+ void scheduleTransactionStep(SQLTransaction* transaction);
MessageQueue<RefPtr<SQLTransaction> > m_transactionQueue;
Mutex m_transactionInProgressMutex;
diff --git a/WebCore/storage/DatabaseThread.cpp b/WebCore/storage/DatabaseThread.cpp
index fb9b603..b6c9b5d 100644
--- a/WebCore/storage/DatabaseThread.cpp
+++ b/WebCore/storage/DatabaseThread.cpp
@@ -35,13 +35,11 @@
#include "Database.h"
#include "DatabaseTask.h"
#include "Logging.h"
-#include "SQLTransactionCoordinator.h"
namespace WebCore {
DatabaseThread::DatabaseThread()
: m_threadID(0)
- , m_transactionCoordinator(new SQLTransactionCoordinator())
{
m_selfRef = this;
}
@@ -99,9 +97,6 @@ void* DatabaseThread::databaseThread()
pool.cycle();
}
- // Clean up the list of all pending transactions on this database thread
- m_transactionCoordinator->shutdown();
-
LOG(StorageAPI, "About to detach thread %i and clear the ref to DatabaseThread %p, which currently has %i ref(s)", m_threadID, this, refCount());
// Close the databases that we ran transactions on. This ensures that if any transactions are still open, they are rolled back and we don't leave the database in an
diff --git a/WebCore/storage/DatabaseThread.h b/WebCore/storage/DatabaseThread.h
index 59d7a5d..5aab5fd 100644
--- a/WebCore/storage/DatabaseThread.h
+++ b/WebCore/storage/DatabaseThread.h
@@ -33,7 +33,6 @@
#include <wtf/HashMap.h>
#include <wtf/HashSet.h>
#include <wtf/MessageQueue.h>
-#include <wtf/OwnPtr.h>
#include <wtf/PassRefPtr.h>
#include <wtf/RefPtr.h>
#include <wtf/Threading.h>
@@ -43,7 +42,6 @@ namespace WebCore {
class Database;
class DatabaseTask;
class Document;
-class SQLTransactionCoordinator;
class DatabaseThread : public ThreadSafeShared<DatabaseThread> {
public:
@@ -62,8 +60,6 @@ public:
void recordDatabaseClosed(Database*);
ThreadIdentifier getThreadID() { return m_threadID; }
- SQLTransactionCoordinator* transactionCoordinator() { return m_transactionCoordinator.get(); }
-
private:
DatabaseThread();
@@ -79,8 +75,6 @@ private:
// This set keeps track of the open databases that have been used on this thread.
typedef HashSet<RefPtr<Database> > DatabaseSet;
DatabaseSet m_openDatabaseSet;
-
- OwnPtr<SQLTransactionCoordinator> m_transactionCoordinator;
};
} // namespace WebCore
diff --git a/WebCore/storage/SQLTransaction.cpp b/WebCore/storage/SQLTransaction.cpp
index dc48ae1..3331e6e 100644
--- a/WebCore/storage/SQLTransaction.cpp
+++ b/WebCore/storage/SQLTransaction.cpp
@@ -50,7 +50,6 @@
#include "SQLStatement.h"
#include "SQLStatementCallback.h"
#include "SQLStatementErrorCallback.h"
-#include "SQLTransactionCoordinator.h"
#include "SQLValue.h"
// There's no way of knowing exactly how much more space will be required when a statement hits the quota limit.
@@ -68,7 +67,7 @@ PassRefPtr<SQLTransaction> SQLTransaction::create(Database* db, PassRefPtr<SQLTr
SQLTransaction::SQLTransaction(Database* db, PassRefPtr<SQLTransactionCallback> callback, PassRefPtr<SQLTransactionErrorCallback> errorCallback, PassRefPtr<VoidCallback> successCallback,
PassRefPtr<SQLTransactionWrapper> wrapper)
- : m_nextStep(&SQLTransaction::acquireLock)
+ : m_nextStep(&SQLTransaction::openTransactionAndPreflight)
, m_executeSqlAllowed(false)
, m_database(db)
, m_wrapper(wrapper)
@@ -77,7 +76,6 @@ SQLTransaction::SQLTransaction(Database* db, PassRefPtr<SQLTransactionCallback>
, m_errorCallback(errorCallback)
, m_shouldRetryCurrentStatement(false)
, m_modifiedDatabase(false)
- , m_lockAcquired(false)
{
ASSERT(m_database);
}
@@ -118,9 +116,7 @@ void SQLTransaction::enqueueStatement(PassRefPtr<SQLStatement> statement)
#ifndef NDEBUG
const char* SQLTransaction::debugStepName(SQLTransaction::TransactionStepMethod step)
{
- if (step == &SQLTransaction::acquireLock)
- return "acquireLock";
- else if (step == &SQLTransaction::openTransactionAndPreflight)
+ if (step == &SQLTransaction::openTransactionAndPreflight)
return "openTransactionAndPreflight";
else if (step == &SQLTransaction::runStatements)
return "runStatements";
@@ -161,9 +157,6 @@ void SQLTransaction::checkAndHandleClosedDatabase()
m_sqliteTransaction->stop();
m_sqliteTransaction.clear();
}
-
- if (m_lockAcquired)
- m_database->transactionCoordinator()->releaseLock(this);
}
@@ -171,8 +164,7 @@ bool SQLTransaction::performNextStep()
{
LOG(StorageAPI, "Step %s\n", debugStepName(m_nextStep));
- ASSERT(m_nextStep == &SQLTransaction::acquireLock ||
- m_nextStep == &SQLTransaction::openTransactionAndPreflight ||
+ ASSERT(m_nextStep == &SQLTransaction::openTransactionAndPreflight ||
m_nextStep == &SQLTransaction::runStatements ||
m_nextStep == &SQLTransaction::postflightAndCommit ||
m_nextStep == &SQLTransaction::cleanupAfterSuccessCallback ||
@@ -203,23 +195,9 @@ void SQLTransaction::performPendingCallback()
(this->*m_nextStep)();
}
-void SQLTransaction::acquireLock()
-{
- m_database->transactionCoordinator()->acquireLock(this);
-}
-
-void SQLTransaction::lockAcquired()
-{
- m_lockAcquired = true;
- m_nextStep = &SQLTransaction::openTransactionAndPreflight;
- LOG(StorageAPI, "Scheduling openTransactionAndPreflight immediately for transaction %p\n", this);
- m_database->scheduleTransactionStep(this, true);
-}
-
void SQLTransaction::openTransactionAndPreflight()
{
ASSERT(!m_database->m_sqliteDatabase.transactionInProgress());
- ASSERT(m_lockAcquired);
LOG(StorageAPI, "Opening and preflighting transaction %p", this);
@@ -295,8 +273,6 @@ void SQLTransaction::scheduleToRunStatements()
void SQLTransaction::runStatements()
{
- ASSERT(m_lockAcquired);
-
// If there is a series of statements queued up that are all successful and have no associated
// SQLStatementCallback objects, then we can burn through the queue
do {
@@ -435,8 +411,6 @@ void SQLTransaction::deliverQuotaIncreaseCallback()
void SQLTransaction::postflightAndCommit()
{
- ASSERT(m_lockAcquired);
-
// Transaction Step 7 - Peform postflight steps, jumping to the error callback if they fail
if (m_wrapper && !m_wrapper->performPostflight(this)) {
m_transactionError = m_wrapper->sqlError();
@@ -495,16 +469,11 @@ void SQLTransaction::deliverSuccessCallback()
void SQLTransaction::cleanupAfterSuccessCallback()
{
- ASSERT(m_lockAcquired);
-
// Transaction Step 11 - End transaction steps
// There is no next step
LOG(StorageAPI, "Transaction %p is complete\n", this);
ASSERT(!m_database->m_sqliteDatabase.transactionInProgress());
m_nextStep = 0;
-
- // Release the lock on this database
- m_database->transactionCoordinator()->releaseLock(this);
}
void SQLTransaction::handleTransactionError(bool inCallback)
@@ -547,8 +516,6 @@ void SQLTransaction::deliverTransactionErrorCallback()
void SQLTransaction::cleanupAfterTransactionErrorCallback()
{
- ASSERT(m_lockAcquired);
-
m_database->m_databaseAuthorizer->disable();
if (m_sqliteTransaction) {
// Transaction Step 12 - Rollback the transaction.
@@ -573,9 +540,6 @@ void SQLTransaction::cleanupAfterTransactionErrorCallback()
// Now release our callbacks, to break reference cycles.
m_callback = 0;
m_errorCallback = 0;
-
- // Now release the lock on this database
- m_database->transactionCoordinator()->releaseLock(this);
}
} // namespace WebCore
diff --git a/WebCore/storage/SQLTransaction.h b/WebCore/storage/SQLTransaction.h
index 141cef7..e77c183 100644
--- a/WebCore/storage/SQLTransaction.h
+++ b/WebCore/storage/SQLTransaction.h
@@ -73,7 +73,6 @@ public:
void executeSQL(const String& sqlStatement, const Vector<SQLValue>& arguments,
PassRefPtr<SQLStatementCallback> callback, PassRefPtr<SQLStatementErrorCallback> callbackError, ExceptionCode& e);
- void lockAcquired();
bool performNextStep();
void performPendingCallback();
@@ -89,7 +88,6 @@ private:
void checkAndHandleClosedDatabase();
- void acquireLock();
void openTransactionAndPreflight();
void deliverTransactionCallback();
void scheduleToRunStatements();
@@ -122,7 +120,6 @@ private:
RefPtr<SQLError> m_transactionError;
bool m_shouldRetryCurrentStatement;
bool m_modifiedDatabase;
- bool m_lockAcquired;
Mutex m_statementMutex;
Deque<RefPtr<SQLStatement> > m_statementQueue;
diff --git a/WebCore/storage/SQLTransactionCoordinator.cpp b/WebCore/storage/SQLTransactionCoordinator.cpp
deleted file mode 100644
index 63fd38e..0000000
--- a/WebCore/storage/SQLTransactionCoordinator.cpp
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * 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
- * "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 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 "config.h"
-#include "SQLTransactionCoordinator.h"
-
-#include "CString.h"
-#include "Database.h"
-#include "SQLTransaction.h"
-#include <wtf/Deque.h>
-#include <wtf/HashMap.h>
-#include <wtf/RefPtr.h>
-
-namespace WebCore {
-
-static String getDatabaseIdentifier(SQLTransaction* transaction)
-{
- Database* database = transaction->database();
- ASSERT(database);
- return database->stringIdentifier();
-}
-
-void SQLTransactionCoordinator::acquireLock(SQLTransaction* transaction)
-{
- String dbIdentifier = getDatabaseIdentifier(transaction);
-
- TransactionsHashMap::iterator it = m_pendingTransactions.find(dbIdentifier);
- if (it == m_pendingTransactions.end()) {
- // No pending transactions for this DB
- TransactionsQueue pendingTransactions;
- pendingTransactions.append(transaction);
- m_pendingTransactions.add(dbIdentifier, pendingTransactions);
-
- // Start the transaction
- transaction->lockAcquired();
- } else {
- // Another transaction is running on this DB; put this one in the queue
- TransactionsQueue& pendingTransactions = it->second;
- pendingTransactions.append(transaction);
- }
-}
-
-void SQLTransactionCoordinator::releaseLock(SQLTransaction* transaction)
-{
- if (m_pendingTransactions.isEmpty())
- return;
-
- String dbIdentifier = getDatabaseIdentifier(transaction);
-
- TransactionsHashMap::iterator it = m_pendingTransactions.find(dbIdentifier);
- ASSERT(it != m_pendingTransactions.end());
- TransactionsQueue& pendingTransactions = it->second;
- ASSERT(!pendingTransactions.isEmpty());
-
- // 'transaction' should always be the first transaction in this queue
- ASSERT(pendingTransactions.first().get() == transaction);
-
- // Remove 'transaction' from the queue of pending transactions
- pendingTransactions.removeFirst();
- if (pendingTransactions.isEmpty()) {
- // No more pending transactions; delete dbIdentifier's queue
- m_pendingTransactions.remove(it);
- } else {
- // We have more pending transactions; start the next one
- pendingTransactions.first()->lockAcquired();
- }
-}
-
-void SQLTransactionCoordinator::shutdown()
-{
- // Clean up all pending transactions for all databases
- m_pendingTransactions.clear();
-}
-
-}
diff --git a/WebCore/storage/SQLTransactionCoordinator.h b/WebCore/storage/SQLTransactionCoordinator.h
deleted file mode 100644
index c6abfda..0000000
--- a/WebCore/storage/SQLTransactionCoordinator.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * 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
- * "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 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 SQLTransactionCoordinator_h
-#define SQLTransactionCoordinator_h
-
-#include "CString.h"
-#include "StringHash.h"
-#include <wtf/Deque.h>
-#include <wtf/HashMap.h>
-#include <wtf/RefPtr.h>
-
-namespace WebCore {
-
- class SQLTransaction;
-
- class SQLTransactionCoordinator {
- public:
- void acquireLock(SQLTransaction*);
- void releaseLock(SQLTransaction*);
- void shutdown();
- private:
- typedef Deque<RefPtr<SQLTransaction> > TransactionsQueue;
- typedef HashMap<String, TransactionsQueue> TransactionsHashMap;
- TransactionsHashMap m_pendingTransactions;
- };
-}
-
-#endif // SQLTransactionCoordinator_h
diff --git a/WebCore/storage/Storage.h b/WebCore/storage/Storage.h
index 197e693..d68e9bc 100644
--- a/WebCore/storage/Storage.h
+++ b/WebCore/storage/Storage.h
@@ -53,7 +53,6 @@ namespace WebCore {
bool contains(const String& key) const;
- Frame* frame() { return m_frame; }
void disconnectFrame() { m_frame = 0; }
private:
diff --git a/WebCore/storage/StorageNamespace.h b/WebCore/storage/StorageNamespace.h
index 825581f..edbe339 100644
--- a/WebCore/storage/StorageNamespace.h
+++ b/WebCore/storage/StorageNamespace.h
@@ -48,7 +48,6 @@ namespace WebCore {
virtual PassRefPtr<StorageArea> storageArea(SecurityOrigin*) = 0;
virtual PassRefPtr<StorageNamespace> copy() = 0;
virtual void close() = 0;
- virtual void unlock() = 0;
};
} // namespace WebCore
diff --git a/WebCore/storage/StorageNamespaceImpl.cpp b/WebCore/storage/StorageNamespaceImpl.cpp
index 23725a5..b4caaeb 100644
--- a/WebCore/storage/StorageNamespaceImpl.cpp
+++ b/WebCore/storage/StorageNamespaceImpl.cpp
@@ -134,11 +134,6 @@ void StorageNamespaceImpl::close()
m_isShutdown = true;
}
-void StorageNamespaceImpl::unlock()
-{
- // Because there's a single event loop per-process, this is a no-op.
-}
-
} // namespace WebCore
#endif // ENABLE(DOM_STORAGE)
diff --git a/WebCore/storage/StorageNamespaceImpl.h b/WebCore/storage/StorageNamespaceImpl.h
index d3ef37f..0b15e43 100644
--- a/WebCore/storage/StorageNamespaceImpl.h
+++ b/WebCore/storage/StorageNamespaceImpl.h
@@ -49,7 +49,6 @@ namespace WebCore {
virtual PassRefPtr<StorageArea> storageArea(SecurityOrigin*);
virtual PassRefPtr<StorageNamespace> copy();
virtual void close();
- virtual void unlock();
private:
StorageNamespaceImpl(StorageType, const String& path);
diff --git a/WebCore/svg/SVGColor.cpp b/WebCore/svg/SVGColor.cpp
index d819ebf..f939ef0 100644
--- a/WebCore/svg/SVGColor.cpp
+++ b/WebCore/svg/SVGColor.cpp
@@ -62,9 +62,9 @@ unsigned short SVGColor::colorType() const
return m_colorType;
}
-PassRefPtr<RGBColor> SVGColor::rgbColor() const
+RGBColor* SVGColor::rgbColor() const
{
- return RGBColor::create(m_color.rgb());
+ return RGBColor::create(m_color.rgb()).releaseRef();
}
void SVGColor::setRGBColor(const String& rgbColor, ExceptionCode& ec)
diff --git a/WebCore/svg/SVGColor.h b/WebCore/svg/SVGColor.h
index 406166b..5dfb694 100644
--- a/WebCore/svg/SVGColor.h
+++ b/WebCore/svg/SVGColor.h
@@ -57,8 +57,8 @@ namespace WebCore {
// 'SVGColor' functions
unsigned short colorType() const;
- PassRefPtr<RGBColor> rgbColor() const;
-
+ RGBColor* rgbColor() const;
+
static Color colorFromRGBColorString(const String&);
void setRGBColor(const String& rgbColor) { ExceptionCode ignored = 0; setRGBColor(rgbColor, ignored); }
diff --git a/WebCore/svg/SVGDocument.h b/WebCore/svg/SVGDocument.h
index c7006f9..02e3649 100644
--- a/WebCore/svg/SVGDocument.h
+++ b/WebCore/svg/SVGDocument.h
@@ -35,11 +35,13 @@ namespace WebCore {
public:
static PassRefPtr<SVGDocument> create(Frame* frame)
{
- return adoptRef(new SVGDocument(frame));
+ return new SVGDocument(frame);
}
virtual ~SVGDocument();
+ virtual bool isSVGDocument() const { return true; }
+
SVGSVGElement* rootElement() const;
void dispatchZoomEvent(float prevScale, float newScale);
@@ -50,13 +52,11 @@ namespace WebCore {
void startPan(const FloatPoint& start);
void updatePan(const FloatPoint& pos) const;
+ virtual bool childShouldCreateRenderer(Node*) const;
+
private:
SVGDocument(Frame*);
- virtual bool isSVGDocument() const { return true; }
-
- virtual bool childShouldCreateRenderer(Node*) const;
-
FloatPoint m_translate;
};
diff --git a/WebCore/svg/SVGElementInstance.cpp b/WebCore/svg/SVGElementInstance.cpp
index 3a82067..01555fc 100644
--- a/WebCore/svg/SVGElementInstance.cpp
+++ b/WebCore/svg/SVGElementInstance.cpp
@@ -1,6 +1,8 @@
/*
Copyright (C) 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org>
+ This file is part of the KDE project
+
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
@@ -23,6 +25,7 @@
#include "SVGElementInstance.h"
#include "ContainerNodeAlgorithms.h"
+#include "Document.h"
#include "Event.h"
#include "EventException.h"
#include "EventListener.h"
@@ -43,7 +46,7 @@ namespace WebCore {
static WTF::RefCountedLeakCounter instanceCounter("WebCoreSVGElementInstance");
#endif
-SVGElementInstance::SVGElementInstance(SVGUseElement* useElement, PassRefPtr<SVGElement> originalElement)
+SVGElementInstance::SVGElementInstance(SVGUseElement* useElement, SVGElement* originalElement)
: m_needsUpdate(false)
, m_useElement(useElement)
, m_element(originalElement)
diff --git a/WebCore/svg/SVGElementInstance.h b/WebCore/svg/SVGElementInstance.h
index 048c66c..c477718 100644
--- a/WebCore/svg/SVGElementInstance.h
+++ b/WebCore/svg/SVGElementInstance.h
@@ -1,6 +1,8 @@
/*
Copyright (C) 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org>
+ This file is part of the KDE project
+
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
@@ -25,6 +27,9 @@
#include "SVGElement.h"
#include "TreeShared.h"
+#include <wtf/RefPtr.h>
+#include <wtf/PassRefPtr.h>
+
namespace WebCore {
namespace Private {
@@ -32,6 +37,8 @@ namespace WebCore {
void addChildNodesToDeletionQueue(GenericNode*& head, GenericNode*& tail, GenericNodeContainer* container);
};
+ class EventListener;
+ class Frame;
class SVGUseElement;
class SVGElementInstanceList;
@@ -39,11 +46,7 @@ namespace WebCore {
class SVGElementInstance : public TreeShared<SVGElementInstance>,
public EventTarget {
public:
- static PassRefPtr<SVGElementInstance> create(SVGUseElement* useElement, PassRefPtr<SVGElement> originalElement)
- {
- return adoptRef(new SVGElementInstance(useElement, originalElement));
- }
-
+ SVGElementInstance(SVGUseElement*, SVGElement* originalElement);
virtual ~SVGElementInstance();
bool needsUpdate() const { return m_needsUpdate; }
@@ -51,6 +54,9 @@ namespace WebCore {
virtual ScriptExecutionContext* scriptExecutionContext() const;
+ virtual Node* toNode() { return shadowTreeElement(); }
+ virtual SVGElementInstance* toSVGElementInstance() { return this; }
+
virtual void addEventListener(const AtomicString& eventType, PassRefPtr<EventListener>, bool useCapture);
virtual void removeEventListener(const AtomicString& eventType, EventListener*, bool useCapture);
virtual bool dispatchEvent(PassRefPtr<Event>, ExceptionCode&);
@@ -161,11 +167,6 @@ namespace WebCore {
private:
friend class SVGUseElement;
- SVGElementInstance(SVGUseElement*, PassRefPtr<SVGElement> originalElement);
-
- virtual Node* toNode() { return shadowTreeElement(); }
- virtual SVGElementInstance* toSVGElementInstance() { return this; }
-
void appendChild(PassRefPtr<SVGElementInstance> child);
void setShadowTreeElement(SVGElement*);
void forgetWrapper();
@@ -190,6 +191,7 @@ namespace WebCore {
virtual void refEventTarget() { ref(); }
virtual void derefEventTarget() { deref(); }
+ private:
bool m_needsUpdate : 1;
SVGUseElement* m_useElement;
diff --git a/WebCore/svg/SVGUseElement.cpp b/WebCore/svg/SVGUseElement.cpp
index 9cb3024..b73a692 100644
--- a/WebCore/svg/SVGUseElement.cpp
+++ b/WebCore/svg/SVGUseElement.cpp
@@ -324,7 +324,7 @@ void SVGUseElement::buildPendingResource()
// Spec: If the 'use' element references a simple graphics element such as a 'rect', then there is only a
// single SVGElementInstance object, and the correspondingElement attribute on this SVGElementInstance object
// is the SVGRectElement that corresponds to the referenced 'rect' element.
- m_targetElementInstance = SVGElementInstance::create(this, target);
+ m_targetElementInstance = new SVGElementInstance(this, target);
// Eventually enter recursion to build SVGElementInstance objects for the sub-tree children
bool foundProblem = false;
@@ -474,17 +474,17 @@ void SVGUseElement::buildInstanceTree(SVGElement* target, SVGElementInstance* ta
continue;
// Create SVGElementInstance object, for both container/non-container nodes.
- RefPtr<SVGElementInstance> instancePtr = SVGElementInstance::create(this, element);
- targetInstance->appendChild(instancePtr.get());
+ SVGElementInstance* instancePtr = new SVGElementInstance(this, element);
+ targetInstance->appendChild(instancePtr);
// Enter recursion, appending new instance tree nodes to the "instance" object.
if (element->hasChildNodes())
- buildInstanceTree(element, instancePtr.get(), foundProblem);
+ buildInstanceTree(element, instancePtr, foundProblem);
// Spec: If the referenced object is itself a 'use', or if there are 'use' subelements within the referenced
// object, the instance tree will contain recursive expansion of the indirect references to form a complete tree.
if (element->hasTagName(SVGNames::useTag))
- handleDeepUseReferencing(static_cast<SVGUseElement*>(element), instancePtr.get(), foundProblem);
+ handleDeepUseReferencing(static_cast<SVGUseElement*>(element), instancePtr, foundProblem);
}
// Spec: If the referenced object is itself a 'use', or if there are 'use' subelements within the referenced
@@ -524,11 +524,11 @@ void SVGUseElement::handleDeepUseReferencing(SVGUseElement* use, SVGElementInsta
}
// Create an instance object, even if we're dealing with a cycle
- RefPtr<SVGElementInstance> newInstance = SVGElementInstance::create(this, target);
+ SVGElementInstance* newInstance = new SVGElementInstance(this, target);
targetInstance->appendChild(newInstance);
// Eventually enter recursion to build SVGElementInstance objects for the sub-tree children
- buildInstanceTree(target, newInstance.get(), foundProblem);
+ buildInstanceTree(target, newInstance, foundProblem);
}
void SVGUseElement::alterShadowTreeForSVGTag(SVGElement* target)
diff --git a/WebCore/svg/graphics/SVGResourceMasker.cpp b/WebCore/svg/graphics/SVGResourceMasker.cpp
index 97467c1..d6c401b 100644
--- a/WebCore/svg/graphics/SVGResourceMasker.cpp
+++ b/WebCore/svg/graphics/SVGResourceMasker.cpp
@@ -76,8 +76,8 @@ void SVGResourceMasker::applyMask(GraphicsContext* context, const FloatRect& bou
if (!luminancedImage)
return;
- PassRefPtr<CanvasPixelArray> srcPixelArray(m_mask->getUnmultipliedImageData(intImageRect)->data());
- PassRefPtr<ImageData> destImageData(luminancedImage->getUnmultipliedImageData(intImageRect));
+ PassRefPtr<CanvasPixelArray> srcPixelArray(m_mask->getImageData(intImageRect)->data());
+ PassRefPtr<ImageData> destImageData(luminancedImage->getImageData(intImageRect));
for (unsigned pixelOffset = 0; pixelOffset < srcPixelArray->length(); pixelOffset++) {
unsigned pixelByteOffset = pixelOffset * 4;
@@ -93,7 +93,7 @@ void SVGResourceMasker::applyMask(GraphicsContext* context, const FloatRect& bou
destImageData->data()->set(pixelByteOffset + 3, luma);
}
- luminancedImage->putUnmultipliedImageData(destImageData.get(), intImageRect, IntPoint(0, 0));
+ luminancedImage->putImageData(destImageData.get(), intImageRect, IntPoint(0, 0));
context->clipToImageBuffer(m_maskRect, luminancedImage.get());
}
diff --git a/WebCore/webcore-wx.bkl b/WebCore/webcore-wx.bkl
index a058e18..b31a178 100644
--- a/WebCore/webcore-wx.bkl
+++ b/WebCore/webcore-wx.bkl
@@ -58,6 +58,7 @@ wxWebCore port Bakefile project file.
platform/graphics/wx/GradientWx.cpp
platform/graphics/wx/GraphicsContextWx.cpp
platform/graphics/wx/ImageBufferWx.cpp
+ platform/graphics/wx/ImageSourceWx.cpp
platform/graphics/wx/ImageWx.cpp
platform/graphics/wx/IntPointWx.cpp
platform/graphics/wx/IntRectWx.cpp
diff --git a/WebCore/wml/WMLAnchorElement.cpp b/WebCore/wml/WMLAnchorElement.cpp
index b9b3f53..91526b9 100644
--- a/WebCore/wml/WMLAnchorElement.cpp
+++ b/WebCore/wml/WMLAnchorElement.cpp
@@ -54,7 +54,7 @@ void WMLAnchorElement::defaultEventHandler(Event* event)
shouldHandle = static_cast<KeyboardEvent*>(event)->keyIdentifier() == "Enter";
if (shouldHandle && m_task) {
- m_task->executeTask();
+ m_task->executeTask(event);
event->setDefaultHandled();
return;
}
@@ -71,7 +71,7 @@ void WMLAnchorElement::registerTask(WMLTaskElement* task)
void WMLAnchorElement::deregisterTask(WMLTaskElement* task)
{
- ASSERT_UNUSED(task, m_task == task);
+ ASSERT(m_task == task);
m_task = 0;
}
diff --git a/WebCore/wml/WMLCardElement.cpp b/WebCore/wml/WMLCardElement.cpp
index 818b818..63240f3 100644
--- a/WebCore/wml/WMLCardElement.cpp
+++ b/WebCore/wml/WMLCardElement.cpp
@@ -339,6 +339,8 @@ WMLCardElement* WMLCardElement::determineActiveCard(Document* doc)
// Update the document title
doc->setTitle(activeCard->title());
+ // Set the active activeCard in the WMLPageState object
+ pageState->setActiveCard(activeCard);
return activeCard;
}
diff --git a/WebCore/wml/WMLDoElement.cpp b/WebCore/wml/WMLDoElement.cpp
index 38ad5dd..34be6df 100644
--- a/WebCore/wml/WMLDoElement.cpp
+++ b/WebCore/wml/WMLDoElement.cpp
@@ -70,17 +70,14 @@ void WMLDoElement::defaultEventHandler(Event* event)
if (m_type == "accept" || m_type == "options") {
if (m_task)
- m_task->executeTask();
+ m_task->executeTask(event);
} else if (m_type == "prev") {
- ASSERT(document()->isWMLDocument());
- WMLDocument* document = static_cast<WMLDocument*>(this->document());
-
- WMLPageState* pageState = wmlPageStateForDocument(document);
+ WMLPageState* pageState = wmlPageStateForDocument(document());
if (!pageState)
return;
-
+
// Stop the timer of the current card if it is active
- if (WMLCardElement* card = document->activeCard()) {
+ if (WMLCardElement* card = pageState->activeCard()) {
if (WMLTimerElement* eventTimer = card->eventTimer())
eventTimer->stop();
}
@@ -175,7 +172,7 @@ void WMLDoElement::registerTask(WMLTaskElement* task)
void WMLDoElement::deregisterTask(WMLTaskElement* task)
{
- ASSERT_UNUSED(task, m_task == task);
+ ASSERT(m_task == task);
m_task = 0;
}
diff --git a/WebCore/wml/WMLDocument.cpp b/WebCore/wml/WMLDocument.cpp
index ef0bfc8..f2287be 100644
--- a/WebCore/wml/WMLDocument.cpp
+++ b/WebCore/wml/WMLDocument.cpp
@@ -79,8 +79,10 @@ void WMLDocument::finishedParsing()
return;
}
- if (m_activeCard)
+ if (m_activeCard) {
m_activeCard->handleIntrinsicEventIfNeeded();
+ m_activeCard = 0;
+ }
}
bool WMLDocument::initialize(bool aboutToFinishParsing)
diff --git a/WebCore/wml/WMLDocument.h b/WebCore/wml/WMLDocument.h
index 9053518..fb3e62e 100644
--- a/WebCore/wml/WMLDocument.h
+++ b/WebCore/wml/WMLDocument.h
@@ -34,7 +34,7 @@ class WMLDocument : public Document {
public:
static PassRefPtr<WMLDocument> create(Frame* frame)
{
- return adoptRef(new WMLDocument(frame));
+ return new WMLDocument(frame);
}
virtual ~WMLDocument();
@@ -44,8 +44,6 @@ public:
bool initialize(bool aboutToFinishParsing = false);
- WMLCardElement* activeCard() const { return m_activeCard; }
-
private:
WMLDocument(Frame*);
WMLCardElement* m_activeCard;
diff --git a/WebCore/wml/WMLGoElement.cpp b/WebCore/wml/WMLGoElement.cpp
index 8076207..635302f 100644
--- a/WebCore/wml/WMLGoElement.cpp
+++ b/WebCore/wml/WMLGoElement.cpp
@@ -73,20 +73,18 @@ void WMLGoElement::parseMappedAttribute(MappedAttribute* attr)
WMLTaskElement::parseMappedAttribute(attr);
}
-void WMLGoElement::executeTask()
+void WMLGoElement::executeTask(Event*)
{
- ASSERT(document()->isWMLDocument());
- WMLDocument* document = static_cast<WMLDocument*>(this->document());
-
- WMLPageState* pageState = wmlPageStateForDocument(document);
+ Document* doc = document();
+ WMLPageState* pageState = wmlPageStateForDocument(doc);
if (!pageState)
return;
- WMLCardElement* card = document->activeCard();
+ WMLCardElement* card = pageState->activeCard();
if (!card)
return;
- Frame* frame = document->frame();
+ Frame* frame = doc->frame();
if (!frame)
return;
@@ -99,7 +97,7 @@ void WMLGoElement::executeTask()
return;
// Substitute variables within target url attribute value
- KURL url = document->completeURL(substituteVariableReferences(href, document, WMLVariableEscapingEscape));
+ KURL url = doc->completeURL(substituteVariableReferences(href, doc, WMLVariableEscapingEscape));
if (url.isEmpty())
return;
@@ -110,9 +108,9 @@ void WMLGoElement::executeTask()
eventTimer->stop();
// FIXME: 'newcontext' handling not implemented for external cards
- bool inSameDeck = document->url().path() == url.path();
+ bool inSameDeck = doc->url().path() == url.path();
if (inSameDeck && url.hasFragmentIdentifier()) {
- if (WMLCardElement* card = WMLCardElement::findNamedCardInDocument(document, url.fragmentIdentifier())) {
+ if (WMLCardElement* card = WMLCardElement::findNamedCardInDocument(doc, url.fragmentIdentifier())) {
if (card->isNewContext())
pageState->reset();
}
diff --git a/WebCore/wml/WMLGoElement.h b/WebCore/wml/WMLGoElement.h
index 36c7be2..75c1858 100644
--- a/WebCore/wml/WMLGoElement.h
+++ b/WebCore/wml/WMLGoElement.h
@@ -39,7 +39,7 @@ public:
void deregisterPostfieldElement(WMLPostfieldElement*);
virtual void parseMappedAttribute(MappedAttribute*);
- virtual void executeTask();
+ virtual void executeTask(Event*);
private:
void preparePOSTRequest(ResourceRequest&, bool inSameDeck, const String& cacheControl);
diff --git a/WebCore/wml/WMLIntrinsicEventHandler.cpp b/WebCore/wml/WMLIntrinsicEventHandler.cpp
index 8e4c276..67364d9 100644
--- a/WebCore/wml/WMLIntrinsicEventHandler.cpp
+++ b/WebCore/wml/WMLIntrinsicEventHandler.cpp
@@ -48,7 +48,7 @@ void WMLIntrinsicEventHandler::triggerIntrinsicEvent(WMLIntrinsicEventType type)
{
RefPtr<WMLIntrinsicEvent> event = m_events.get(type);
ASSERT(event->taskElement());
- event->taskElement()->executeTask();
+ event->taskElement()->executeTask(0);
}
bool WMLIntrinsicEventHandler::hasIntrinsicEvent(WMLIntrinsicEventType type) const
diff --git a/WebCore/wml/WMLOptionElement.cpp b/WebCore/wml/WMLOptionElement.cpp
index 61fa762..764d3a1 100644
--- a/WebCore/wml/WMLOptionElement.cpp
+++ b/WebCore/wml/WMLOptionElement.cpp
@@ -158,10 +158,6 @@ RenderStyle* WMLOptionElement::nonRendererRenderStyle() const
void WMLOptionElement::handleIntrinsicEventIfNeeded()
{
- WMLSelectElement* select = ownerSelectElement(this);
- if (!select || !select->initialized())
- return;
-
WMLIntrinsicEventHandler* eventHandler = this->eventHandler();
if (!eventHandler)
return;
diff --git a/WebCore/wml/WMLPageState.cpp b/WebCore/wml/WMLPageState.cpp
index 3e1863d..5f431bb 100644
--- a/WebCore/wml/WMLPageState.cpp
+++ b/WebCore/wml/WMLPageState.cpp
@@ -35,6 +35,7 @@ namespace WebCore {
WMLPageState::WMLPageState(Page* page)
: m_page(page)
+ , m_activeCard(0)
, m_hasAccessControlData(false)
{
}
diff --git a/WebCore/wml/WMLPageState.h b/WebCore/wml/WMLPageState.h
index a5d8b23..de0af91 100644
--- a/WebCore/wml/WMLPageState.h
+++ b/WebCore/wml/WMLPageState.h
@@ -54,6 +54,9 @@ public:
Page* page() const { return m_page; }
+ WMLCardElement* activeCard() const { return m_activeCard; }
+ void setActiveCard(WMLCardElement* card) { m_activeCard = card; }
+
// Deck access control
bool processAccessControlData(const String& dmain, const String& path);
void resetAccessControlData();
@@ -67,6 +70,7 @@ private:
private:
Page* m_page;
WMLVariableMap m_variables;
+ WMLCardElement* m_activeCard;
String m_accessDomain;
String m_accessPath;
bool m_hasAccessControlData;
diff --git a/WebCore/wml/WMLPrevElement.cpp b/WebCore/wml/WMLPrevElement.cpp
index 3d487ea..2688d03 100644
--- a/WebCore/wml/WMLPrevElement.cpp
+++ b/WebCore/wml/WMLPrevElement.cpp
@@ -40,16 +40,13 @@ WMLPrevElement::~WMLPrevElement()
{
}
-void WMLPrevElement::executeTask()
+void WMLPrevElement::executeTask(Event*)
{
- ASSERT(document()->isWMLDocument());
- WMLDocument* document = static_cast<WMLDocument*>(this->document());
-
- WMLPageState* pageState = wmlPageStateForDocument(document);
+ WMLPageState* pageState = wmlPageStateForDocument(document());
if (!pageState)
return;
- WMLCardElement* card = document->activeCard();
+ WMLCardElement* card = pageState->activeCard();
if (!card)
return;
diff --git a/WebCore/wml/WMLPrevElement.h b/WebCore/wml/WMLPrevElement.h
index ce8596e..232c1b0 100644
--- a/WebCore/wml/WMLPrevElement.h
+++ b/WebCore/wml/WMLPrevElement.h
@@ -31,7 +31,7 @@ public:
WMLPrevElement(const QualifiedName& tagName, Document*);
virtual ~WMLPrevElement();
- virtual void executeTask();
+ virtual void executeTask(Event*);
};
}
diff --git a/WebCore/wml/WMLRefreshElement.cpp b/WebCore/wml/WMLRefreshElement.cpp
index bcf87ac..c05a2c9 100644
--- a/WebCore/wml/WMLRefreshElement.cpp
+++ b/WebCore/wml/WMLRefreshElement.cpp
@@ -41,16 +41,13 @@ WMLRefreshElement::~WMLRefreshElement()
{
}
-void WMLRefreshElement::executeTask()
+void WMLRefreshElement::executeTask(Event*)
{
- ASSERT(document()->isWMLDocument());
- WMLDocument* document = static_cast<WMLDocument*>(this->document());
-
- WMLPageState* pageState = wmlPageStateForDocument(document);
+ WMLPageState* pageState = wmlPageStateForDocument(document());
if (!pageState)
return;
- WMLCardElement* card = document->activeCard();
+ WMLCardElement* card = pageState->activeCard();
if (!card)
return;
@@ -65,7 +62,7 @@ void WMLRefreshElement::executeTask()
storeVariableState(pageState);
// Redisplay curremt card with current variable state
- if (Frame* frame = document->frame()) {
+ if (Frame* frame = document()->frame()) {
if (FrameLoader* loader = frame->loader())
loader->reload();
}
diff --git a/WebCore/wml/WMLRefreshElement.h b/WebCore/wml/WMLRefreshElement.h
index 43b71b5..7b1729e 100644
--- a/WebCore/wml/WMLRefreshElement.h
+++ b/WebCore/wml/WMLRefreshElement.h
@@ -31,7 +31,7 @@ public:
WMLRefreshElement(const QualifiedName& tagName, Document*);
virtual ~WMLRefreshElement();
- virtual void executeTask();
+ virtual void executeTask(Event*);
};
}
diff --git a/WebCore/wml/WMLSelectElement.cpp b/WebCore/wml/WMLSelectElement.cpp
index 03ca05a..2d03a3f 100644
--- a/WebCore/wml/WMLSelectElement.cpp
+++ b/WebCore/wml/WMLSelectElement.cpp
@@ -39,7 +39,6 @@ using namespace WMLNames;
WMLSelectElement::WMLSelectElement(const QualifiedName& tagName, Document* document)
: WMLFormControlElement(tagName, document)
- , m_initialized(false)
{
}
@@ -243,17 +242,14 @@ void WMLSelectElement::selectInitialOptions()
// Spec: Step 1 - the default option index is determined using iname and ivalue
calculateDefaultOptionIndices();
- if (m_defaultOptionIndices.isEmpty()) {
- m_initialized = true;
+ if (m_defaultOptionIndices.isEmpty())
return;
- }
// Spec: Step 2 – initialise variables
initializeVariables();
// Spec: Step 3 – pre-select option(s) specified by the default option index
selectDefaultOptions();
- m_initialized = true;
}
void WMLSelectElement::insertedIntoTree(bool deep)
diff --git a/WebCore/wml/WMLSelectElement.h b/WebCore/wml/WMLSelectElement.h
index 5ab7da6..412a950 100644
--- a/WebCore/wml/WMLSelectElement.h
+++ b/WebCore/wml/WMLSelectElement.h
@@ -85,8 +85,6 @@ public:
void scrollToSelection();
void selectInitialOptions();
- bool initialized() const { return m_initialized; }
-
private:
virtual void insertedIntoTree(bool);
@@ -106,7 +104,6 @@ private:
String ivalue() const;
SelectElementData m_data;
- bool m_initialized;
Vector<unsigned> m_defaultOptionIndices;
};
diff --git a/WebCore/wml/WMLTaskElement.h b/WebCore/wml/WMLTaskElement.h
index b813285..b5dab8c 100644
--- a/WebCore/wml/WMLTaskElement.h
+++ b/WebCore/wml/WMLTaskElement.h
@@ -40,7 +40,7 @@ public:
virtual void insertedIntoDocument();
virtual void removedFromDocument();
- virtual void executeTask() = 0;
+ virtual void executeTask(Event*) = 0;
void registerVariableSetter(WMLSetvarElement*);
void deregisterVariableSetter(WMLSetvarElement*);
diff --git a/WebCore/workers/DedicatedWorkerContext.cpp b/WebCore/workers/DedicatedWorkerContext.cpp
index 6e5a317..ae5c547 100644
--- a/WebCore/workers/DedicatedWorkerContext.cpp
+++ b/WebCore/workers/DedicatedWorkerContext.cpp
@@ -46,6 +46,23 @@ DedicatedWorkerContext::DedicatedWorkerContext(const KURL& url, const String& us
{
}
+DedicatedWorkerContext::~DedicatedWorkerContext()
+{
+ ASSERT(currentThread() == thread()->threadID());
+ // Notify parent worker we are going away. This can free the WorkerThread object, so do not access it after this.
+ thread()->workerObjectProxy().workerContextDestroyed();
+}
+
+void DedicatedWorkerContext::forwardException(const String& errorMessage, int lineNumber, const String& sourceURL)
+{
+ thread()->workerObjectProxy().postExceptionToWorkerObject(errorMessage, lineNumber, sourceURL);
+}
+
+void DedicatedWorkerContext::addMessage(MessageDestination destination, MessageSource source, MessageType type, MessageLevel level, const String& message, unsigned lineNumber, const String& sourceURL)
+{
+ thread()->workerObjectProxy().postConsoleMessageToWorkerObject(destination, source, type, level, message, lineNumber, sourceURL);
+}
+
void DedicatedWorkerContext::postMessage(const String& message, ExceptionCode& ec)
{
postMessage(message, 0, ec);
diff --git a/WebCore/workers/DedicatedWorkerContext.h b/WebCore/workers/DedicatedWorkerContext.h
index be9be0b..e974cef 100644
--- a/WebCore/workers/DedicatedWorkerContext.h
+++ b/WebCore/workers/DedicatedWorkerContext.h
@@ -46,12 +46,18 @@ namespace WebCore {
{
return adoptRef(new DedicatedWorkerContext(url, userAgent, thread));
}
+ virtual ~DedicatedWorkerContext();
virtual bool isDedicatedWorkerContext() const { return true; }
// Overridden to allow us to check our pending activity after executing imported script.
virtual void importScripts(const Vector<String>& urls, const String& callerURL, int callerLine, ExceptionCode&);
+ // ScriptExecutionContext
+ virtual void addMessage(MessageDestination, MessageSource, MessageType, MessageLevel, const String& message, unsigned lineNumber, const String& sourceURL);
+
+ virtual void forwardException(const String& errorMessage, int lineNumber, const String& sourceURL);
+
// EventTarget
virtual DedicatedWorkerContext* toDedicatedWorkerContext() { return this; }
void postMessage(const String&, ExceptionCode&);
diff --git a/WebCore/workers/DedicatedWorkerThread.cpp b/WebCore/workers/DedicatedWorkerThread.cpp
index d4789a1..0905843 100644
--- a/WebCore/workers/DedicatedWorkerThread.cpp
+++ b/WebCore/workers/DedicatedWorkerThread.cpp
@@ -45,7 +45,7 @@ PassRefPtr<DedicatedWorkerThread> DedicatedWorkerThread::create(const KURL& scri
}
DedicatedWorkerThread::DedicatedWorkerThread(const KURL& url, const String& userAgent, const String& sourceCode, WorkerLoaderProxy& workerLoaderProxy, WorkerObjectProxy& workerObjectProxy)
- : WorkerThread(url, userAgent, sourceCode, workerLoaderProxy, workerObjectProxy)
+ : WorkerThread(url, userAgent, sourceCode, workerLoaderProxy)
, m_workerObjectProxy(workerObjectProxy)
{
}
diff --git a/WebCore/workers/DefaultSharedWorkerRepository.cpp b/WebCore/workers/DefaultSharedWorkerRepository.cpp
index e55d3e1..1c1ed4c 100644
--- a/WebCore/workers/DefaultSharedWorkerRepository.cpp
+++ b/WebCore/workers/DefaultSharedWorkerRepository.cpp
@@ -35,7 +35,6 @@
#include "DefaultSharedWorkerRepository.h"
#include "ActiveDOMObject.h"
-#include "Document.h"
#include "MessagePort.h"
#include "NotImplemented.h"
#include "PlatformString.h"
@@ -43,118 +42,52 @@
#include "SecurityOriginHash.h"
#include "SharedWorker.h"
#include "SharedWorkerContext.h"
-#include "SharedWorkerRepository.h"
#include "SharedWorkerThread.h"
#include "WorkerLoaderProxy.h"
-#include "WorkerReportingProxy.h"
#include "WorkerScriptLoader.h"
#include "WorkerScriptLoaderClient.h"
-#include <wtf/HashSet.h>
+
#include <wtf/Threading.h>
namespace WebCore {
-class SharedWorkerProxy : public ThreadSafeShared<SharedWorkerProxy>, public WorkerLoaderProxy, public WorkerReportingProxy {
+class SharedWorkerProxy : public ThreadSafeShared<SharedWorkerProxy>, public WorkerLoaderProxy {
public:
- static PassRefPtr<SharedWorkerProxy> create(const String& name, const KURL& url, PassRefPtr<SecurityOrigin> origin) { return adoptRef(new SharedWorkerProxy(name, url, origin)); }
+ static PassRefPtr<SharedWorkerProxy> create(const String& name, const KURL& url) { return adoptRef(new SharedWorkerProxy(name, url)); }
void setThread(PassRefPtr<SharedWorkerThread> thread) { m_thread = thread; }
SharedWorkerThread* thread() { return m_thread.get(); }
- bool isClosing() const { return m_closing; }
- void close();
+ bool closing() const { return m_closing; }
KURL url() const { return m_url.copy(); }
String name() const { return m_name.copy(); }
- bool matches(const String& name, PassRefPtr<SecurityOrigin> origin) const { return name == m_name && origin->equal(m_origin.get()); }
// WorkerLoaderProxy
// FIXME: Implement WorkerLoaderProxy APIs by proxying to an active document.
virtual void postTaskToLoader(PassRefPtr<ScriptExecutionContext::Task>) { notImplemented(); }
virtual void postTaskForModeToWorkerContext(PassRefPtr<ScriptExecutionContext::Task>, const String&) { notImplemented(); }
- // WorkerReportingProxy
- virtual void postExceptionToWorkerObject(const String& errorMessage, int lineNumber, const String& sourceURL);
- virtual void postConsoleMessageToWorkerObject(MessageDestination, MessageSource, MessageType, MessageLevel, const String& message, int lineNumber, const String& sourceURL);
- virtual void workerContextClosed();
- virtual void workerContextDestroyed();
-
// Updates the list of the worker's documents, per section 4.5 of the WebWorkers spec.
void addToWorkerDocuments(ScriptExecutionContext*);
-
- bool isInWorkerDocuments(Document* document) { return m_workerDocuments.contains(document); }
-
- // Removes a detached document from the list of worker's documents. May set the closing flag if this is the last document in the list.
- void documentDetached(Document*);
-
private:
- SharedWorkerProxy(const String& name, const KURL&, PassRefPtr<SecurityOrigin>);
+ SharedWorkerProxy(const String& name, const KURL&);
bool m_closing;
String m_name;
KURL m_url;
- // The thread is freed when the proxy is destroyed, so we need to make sure that the proxy stays around until the SharedWorkerContext exits.
RefPtr<SharedWorkerThread> m_thread;
- RefPtr<SecurityOrigin> m_origin;
- HashSet<Document*> m_workerDocuments;
};
-SharedWorkerProxy::SharedWorkerProxy(const String& name, const KURL& url, PassRefPtr<SecurityOrigin> origin)
+SharedWorkerProxy::SharedWorkerProxy(const String& name, const KURL& url)
: m_closing(false)
, m_name(name.copy())
, m_url(url.copy())
- , m_origin(origin)
-{
- // We should be the sole owner of the SecurityOrigin, as we will free it on another thread.
- ASSERT(m_origin->hasOneRef());
-}
-
-void SharedWorkerProxy::postExceptionToWorkerObject(const String&, int, const String&)
-{
- // FIXME: Log exceptions to all parent documents.
- notImplemented();
-}
-
-void SharedWorkerProxy::postConsoleMessageToWorkerObject(MessageDestination, MessageSource, MessageType, MessageLevel, const String&, int, const String&)
{
- // FIXME: Log console messages to all parent documents.
- notImplemented();
-}
-
-void SharedWorkerProxy::workerContextClosed()
-{
- m_closing = true;
-}
-
-void SharedWorkerProxy::workerContextDestroyed()
-{
- // The proxy may be freed by this call, so do not reference it any further.
- DefaultSharedWorkerRepository::instance().removeProxy(this);
}
void SharedWorkerProxy::addToWorkerDocuments(ScriptExecutionContext* context)
{
// Nested workers are not yet supported, so passed-in context should always be a Document.
ASSERT(context->isDocument());
- ASSERT(!isClosing());
- Document* document = static_cast<Document*>(context);
- m_workerDocuments.add(document);
-}
-
-void SharedWorkerProxy::documentDetached(Document* document)
-{
- if (isClosing())
- return;
- // Remove the document from our set (if it's there) and if that was the last document in the set, mark the proxy as closed.
- m_workerDocuments.remove(document);
- if (!m_workerDocuments.size())
- close();
-}
-
-void SharedWorkerProxy::close()
-{
- ASSERT(!isClosing());
- m_closing = true;
- // Stop the worker thread - the proxy will stay around until we get workerThreadExited() notification.
- if (m_thread)
- m_thread->stop();
+ // FIXME: track referring documents so we can shutdown the thread when the last one exits and remove the proxy from the cache.
}
class SharedWorkerConnectTask : public ScriptExecutionContext::Task {
@@ -239,12 +172,12 @@ DefaultSharedWorkerRepository& DefaultSharedWorkerRepository::instance()
void DefaultSharedWorkerRepository::workerScriptLoaded(SharedWorkerProxy& proxy, const String& userAgent, const String& workerScript, PassOwnPtr<MessagePortChannel> port)
{
MutexLocker lock(m_lock);
- if (proxy.isClosing())
+ if (proxy.closing())
return;
// Another loader may have already started up a thread for this proxy - if so, just send a connect to the pre-existing thread.
if (!proxy.thread()) {
- RefPtr<SharedWorkerThread> thread = SharedWorkerThread::create(proxy.name(), proxy.url(), userAgent, workerScript, proxy, proxy);
+ RefPtr<SharedWorkerThread> thread = SharedWorkerThread::create(proxy.name(), proxy.url(), userAgent, workerScript, proxy);
proxy.setThread(thread);
thread->start();
}
@@ -256,44 +189,6 @@ void SharedWorkerRepository::connect(PassRefPtr<SharedWorker> worker, PassOwnPtr
DefaultSharedWorkerRepository::instance().connectToWorker(worker, port, url, name, ec);
}
-void SharedWorkerRepository::documentDetached(Document* document)
-{
- DefaultSharedWorkerRepository::instance().documentDetached(document);
-}
-
-bool SharedWorkerRepository::hasSharedWorkers(Document* document)
-{
- return DefaultSharedWorkerRepository::instance().hasSharedWorkers(document);
-}
-
-bool DefaultSharedWorkerRepository::hasSharedWorkers(Document* document)
-{
- MutexLocker lock(m_lock);
- for (unsigned i = 0; i < m_proxies.size(); i++) {
- if (m_proxies[i]->isInWorkerDocuments(document))
- return true;
- }
- return false;
-}
-
-void DefaultSharedWorkerRepository::removeProxy(SharedWorkerProxy* proxy)
-{
- MutexLocker lock(m_lock);
- for (unsigned i = 0; i < m_proxies.size(); i++) {
- if (proxy == m_proxies[i].get()) {
- m_proxies.remove(i);
- return;
- }
- }
-}
-
-void DefaultSharedWorkerRepository::documentDetached(Document* document)
-{
- MutexLocker lock(m_lock);
- for (unsigned i = 0; i < m_proxies.size(); i++)
- m_proxies[i]->documentDetached(document);
-}
-
void DefaultSharedWorkerRepository::connectToWorker(PassRefPtr<SharedWorker> worker, PassOwnPtr<MessagePortChannel> port, const KURL& url, const String& name, ExceptionCode& ec)
{
MutexLocker lock(m_lock);
@@ -321,14 +216,18 @@ PassRefPtr<SharedWorkerProxy> DefaultSharedWorkerRepository::getProxy(const Stri
// Look for an existing worker, and create one if it doesn't exist.
// Items in the cache are freed on another thread, so copy the URL before creating the origin, to make sure no references to external strings linger.
RefPtr<SecurityOrigin> origin = SecurityOrigin::create(url.copy());
- for (unsigned i = 0; i < m_proxies.size(); i++) {
- if (!m_proxies[i]->isClosing() && m_proxies[i]->matches(name, origin))
- return m_proxies[i];
+ SharedWorkerNameMap* nameMap = m_cache.get(origin);
+ if (!nameMap) {
+ nameMap = new SharedWorkerNameMap();
+ m_cache.set(origin, nameMap);
+ }
+
+ RefPtr<SharedWorkerProxy> proxy = nameMap->get(name);
+ if (!proxy.get()) {
+ proxy = SharedWorkerProxy::create(name, url);
+ nameMap->set(proxy->name(), proxy);
}
- // Proxy is not in the repository currently - create a new one.
- RefPtr<SharedWorkerProxy> proxy = SharedWorkerProxy::create(name, url, origin.release());
- m_proxies.append(proxy);
- return proxy.release();
+ return proxy;
}
DefaultSharedWorkerRepository::DefaultSharedWorkerRepository()
diff --git a/WebCore/workers/DefaultSharedWorkerRepository.h b/WebCore/workers/DefaultSharedWorkerRepository.h
index c2eaff4..0b4e66c 100644
--- a/WebCore/workers/DefaultSharedWorkerRepository.h
+++ b/WebCore/workers/DefaultSharedWorkerRepository.h
@@ -33,24 +33,22 @@
#if ENABLE(SHARED_WORKERS)
-#include "ExceptionCode.h"
+#include "SharedWorkerRepository.h"
#include "StringHash.h"
#include <wtf/HashMap.h>
#include <wtf/Noncopyable.h>
-#include <wtf/PassOwnPtr.h>
-#include <wtf/PassRefPtr.h>
#include <wtf/RefPtr.h>
#include <wtf/Threading.h>
namespace WebCore {
- class Document;
class KURL;
- class MessagePortChannel;
class ScriptExecutionContext;
- class SharedWorker;
+ class SecurityOrigin;
class SharedWorkerProxy;
- class String;
+
+ struct SecurityOriginHash;
+ struct SecurityOriginTraits;
// Platform-specific implementation of the SharedWorkerRepository static interface.
class DefaultSharedWorkerRepository : public Noncopyable {
@@ -61,14 +59,6 @@ namespace WebCore {
// Internal implementation of SharedWorkerRepository::connect()
void connectToWorker(PassRefPtr<SharedWorker>, PassOwnPtr<MessagePortChannel>, const KURL&, const String& name, ExceptionCode&);
- // Notification that a document has been detached.
- void documentDetached(Document*);
-
- // Removes the passed SharedWorkerProxy from the repository.
- void removeProxy(SharedWorkerProxy*);
-
- bool hasSharedWorkers(Document*);
-
static DefaultSharedWorkerRepository& instance();
private:
DefaultSharedWorkerRepository();
@@ -78,9 +68,11 @@ namespace WebCore {
// Mutex used to protect internal data structures.
Mutex m_lock;
- // List of shared workers. Expectation is that there will be a limited number of shared workers, and so tracking them in a Vector is more efficient than nested HashMaps.
- typedef Vector<RefPtr<SharedWorkerProxy> > SharedWorkerProxyRepository;
- SharedWorkerProxyRepository m_proxies;
+ typedef HashMap<String, RefPtr<SharedWorkerProxy> > SharedWorkerNameMap;
+ typedef HashMap<RefPtr<SecurityOrigin>, SharedWorkerNameMap*, SecurityOriginHash> SharedWorkerProxyCache;
+
+ // Items in this cache may be freed on another thread, so all keys and values must be either copied before insertion or thread safe.
+ SharedWorkerProxyCache m_cache;
};
} // namespace WebCore
diff --git a/WebCore/workers/SharedWorkerContext.cpp b/WebCore/workers/SharedWorkerContext.cpp
index ef35a60..2c50d94 100644
--- a/WebCore/workers/SharedWorkerContext.cpp
+++ b/WebCore/workers/SharedWorkerContext.cpp
@@ -39,6 +39,7 @@
#include "MessageEvent.h"
#include "NotImplemented.h"
#include "SharedWorkerThread.h"
+#include "WorkerObjectProxy.h"
namespace WebCore {
@@ -52,6 +53,17 @@ SharedWorkerContext::~SharedWorkerContext()
{
}
+void SharedWorkerContext::forwardException(const String&, int, const String&)
+{
+ // FIXME: forward to console (do not need to report to parent context).
+}
+
+void SharedWorkerContext::addMessage(MessageDestination, MessageSource, MessageType, MessageLevel, const String&, unsigned, const String&)
+{
+ // FIXME: forward to console.
+ notImplemented();
+}
+
void SharedWorkerContext::dispatchConnect(PassRefPtr<MessagePort> port)
{
// Since close() stops the thread event loop, this should not ever get called while closing.
diff --git a/WebCore/workers/SharedWorkerContext.h b/WebCore/workers/SharedWorkerContext.h
index d6956cd..a7e4133 100644
--- a/WebCore/workers/SharedWorkerContext.h
+++ b/WebCore/workers/SharedWorkerContext.h
@@ -50,6 +50,11 @@ namespace WebCore {
virtual bool isSharedWorkerContext() const { return true; }
+ // ScriptExecutionContext
+ virtual void addMessage(MessageDestination, MessageSource, MessageType, MessageLevel, const String& message, unsigned lineNumber, const String& sourceURL);
+
+ virtual void forwardException(const String& errorMessage, int lineNumber, const String& sourceURL);
+
// EventTarget
virtual SharedWorkerContext* toSharedWorkerContext() { return this; }
diff --git a/WebCore/workers/SharedWorkerRepository.h b/WebCore/workers/SharedWorkerRepository.h
index 96d2fb1..84acf77 100644
--- a/WebCore/workers/SharedWorkerRepository.h
+++ b/WebCore/workers/SharedWorkerRepository.h
@@ -34,12 +34,12 @@
#if ENABLE(SHARED_WORKERS)
#include "ExceptionCode.h"
+
#include <wtf/PassOwnPtr.h>
#include <wtf/PassRefPtr.h>
namespace WebCore {
- class Document;
class KURL;
class MessagePortChannel;
class SharedWorker;
@@ -50,12 +50,6 @@ namespace WebCore {
public:
// Connects the passed SharedWorker object with the specified worker thread, creating a new thread if necessary.
static void connect(PassRefPtr<SharedWorker>, PassOwnPtr<MessagePortChannel>, const KURL&, const String& name, ExceptionCode&);
-
- // Invoked when a document has been detached.
- static void documentDetached(Document*);
-
- // Returns true if the passed document is associated with any SharedWorkers.
- static bool hasSharedWorkers(Document*);
private:
SharedWorkerRepository() { }
};
diff --git a/WebCore/workers/SharedWorkerThread.cpp b/WebCore/workers/SharedWorkerThread.cpp
index ded4834..40bb2de 100644
--- a/WebCore/workers/SharedWorkerThread.cpp
+++ b/WebCore/workers/SharedWorkerThread.cpp
@@ -38,13 +38,13 @@
namespace WebCore {
-PassRefPtr<SharedWorkerThread> SharedWorkerThread::create(const String& name, const KURL& scriptURL, const String& userAgent, const String& sourceCode, WorkerLoaderProxy& workerLoaderProxy, WorkerReportingProxy& workerReportingProxy)
+PassRefPtr<SharedWorkerThread> SharedWorkerThread::create(const String& name, const KURL& scriptURL, const String& userAgent, const String& sourceCode, WorkerLoaderProxy& workerLoaderProxy)
{
- return adoptRef(new SharedWorkerThread(name, scriptURL, userAgent, sourceCode, workerLoaderProxy, workerReportingProxy));
+ return adoptRef(new SharedWorkerThread(name, scriptURL, userAgent, sourceCode, workerLoaderProxy));
}
-SharedWorkerThread::SharedWorkerThread(const String& name, const KURL& url, const String& userAgent, const String& sourceCode, WorkerLoaderProxy& workerLoaderProxy, WorkerReportingProxy& workerReportingProxy)
- : WorkerThread(url, userAgent, sourceCode, workerLoaderProxy, workerReportingProxy)
+SharedWorkerThread::SharedWorkerThread(const String& name, const KURL& url, const String& userAgent, const String& sourceCode, WorkerLoaderProxy& workerLoaderProxy)
+ : WorkerThread(url, userAgent, sourceCode, workerLoaderProxy)
, m_name(name.copy())
{
}
diff --git a/WebCore/workers/SharedWorkerThread.h b/WebCore/workers/SharedWorkerThread.h
index d96fd2a..15838d7 100644
--- a/WebCore/workers/SharedWorkerThread.h
+++ b/WebCore/workers/SharedWorkerThread.h
@@ -38,14 +38,14 @@ namespace WebCore {
class SharedWorkerThread : public WorkerThread {
public:
- static PassRefPtr<SharedWorkerThread> create(const String& name, const KURL&, const String& userAgent, const String& sourceCode, WorkerLoaderProxy&, WorkerReportingProxy&);
+ static PassRefPtr<SharedWorkerThread> create(const String& name, const KURL&, const String& userAgent, const String& sourceCode, WorkerLoaderProxy&);
~SharedWorkerThread();
protected:
virtual PassRefPtr<WorkerContext> createWorkerContext(const KURL&, const String&);
private:
- SharedWorkerThread(const String& name, const KURL&, const String& userAgent, const String& sourceCode, WorkerLoaderProxy&, WorkerReportingProxy&);
+ SharedWorkerThread(const String& name, const KURL&, const String& userAgent, const String& sourceCode, WorkerLoaderProxy&);
String m_name;
};
diff --git a/WebCore/workers/Worker.cpp b/WebCore/workers/Worker.cpp
index d4d0e9b..a906134 100644
--- a/WebCore/workers/Worker.cpp
+++ b/WebCore/workers/Worker.cpp
@@ -58,7 +58,7 @@ Worker::Worker(const String& url, ScriptExecutionContext* context, ExceptionCode
return;
m_scriptLoader = new WorkerScriptLoader();
- m_scriptLoader->loadAsynchronously(scriptExecutionContext(), scriptURL, DenyCrossOriginRequests, this);
+ m_scriptLoader->loadAsynchronously(scriptExecutionContext(), scriptURL, DenyCrossOriginRedirect, this);
setPendingActivity(this); // The worker context does not exist while loading, so we must ensure that the worker object is not collected, as well as its event listeners.
}
diff --git a/WebCore/workers/WorkerContext.cpp b/WebCore/workers/WorkerContext.cpp
index 3cb1733..722588f 100644
--- a/WebCore/workers/WorkerContext.cpp
+++ b/WebCore/workers/WorkerContext.cpp
@@ -50,10 +50,6 @@
#include "XMLHttpRequestException.h"
#include <wtf/RefPtr.h>
-#if ENABLE(NOTIFICATIONS)
-#include "NotificationCenter.h"
-#endif
-
namespace WebCore {
WorkerContext::WorkerContext(const KURL& url, const String& userAgent, WorkerThread* thread)
@@ -68,12 +64,6 @@ WorkerContext::WorkerContext(const KURL& url, const String& userAgent, WorkerThr
WorkerContext::~WorkerContext()
{
- ASSERT(currentThread() == thread()->threadID());
-#if ENABLE(NOTIFICATIONS)
- m_notifications.clear();
-#endif
- // Notify proxy that we are going away. This can free the WorkerThread object, so do not access it after this.
- thread()->workerReportingProxy().workerContextDestroyed();
}
ScriptExecutionContext* WorkerContext::scriptExecutionContext() const
@@ -119,8 +109,6 @@ void WorkerContext::close()
return;
m_closing = true;
- // Notify parent that this context is closed.
- thread()->workerReportingProxy().workerContextClosed();
m_thread->stop();
}
@@ -256,7 +244,7 @@ void WorkerContext::importScripts(const Vector<String>& urls, const String& call
for (Vector<KURL>::const_iterator it = completedURLs.begin(); it != end; ++it) {
WorkerScriptLoader scriptLoader;
- scriptLoader.loadSynchronously(scriptExecutionContext(), *it, AllowCrossOriginRequests);
+ scriptLoader.loadSynchronously(scriptExecutionContext(), *it, AllowCrossOriginRedirect);
// If the fetching attempt failed, throw a NETWORK_ERR exception and abort all these steps.
if (scriptLoader.failed()) {
@@ -283,22 +271,8 @@ void WorkerContext::reportException(const String& errorMessage, int lineNumber,
errorHandled = onerror()->reportError(errorMessage, sourceURL, lineNumber);
if (!errorHandled)
- thread()->workerReportingProxy().postExceptionToWorkerObject(errorMessage, lineNumber, sourceURL);
-}
-
-void WorkerContext::addMessage(MessageDestination destination, MessageSource source, MessageType type, MessageLevel level, const String& message, unsigned lineNumber, const String& sourceURL)
-{
- thread()->workerReportingProxy().postConsoleMessageToWorkerObject(destination, source, type, level, message, lineNumber, sourceURL);
-}
-
-#if ENABLE(NOTIFICATIONS)
-NotificationCenter* WorkerContext::webkitNotifications() const
-{
- if (!m_notifications)
- m_notifications = NotificationCenter::create(scriptExecutionContext(), m_thread->getNotificationPresenter());
- return m_notifications.get();
+ forwardException(errorMessage, lineNumber, sourceURL);
}
-#endif
} // namespace WebCore
diff --git a/WebCore/workers/WorkerContext.h b/WebCore/workers/WorkerContext.h
index 2131a7c..aa47475 100644
--- a/WebCore/workers/WorkerContext.h
+++ b/WebCore/workers/WorkerContext.h
@@ -41,7 +41,6 @@
namespace WebCore {
- class NotificationCenter;
class ScheduledAction;
class WorkerLocation;
class WorkerNavigator;
@@ -49,6 +48,7 @@ namespace WebCore {
class WorkerContext : public RefCounted<WorkerContext>, public ScriptExecutionContext, public EventTarget {
public:
+
virtual ~WorkerContext();
virtual bool isWorkerContext() const { return true; }
@@ -103,11 +103,8 @@ namespace WebCore {
// ScriptExecutionContext
virtual void reportException(const String& errorMessage, int lineNumber, const String& sourceURL);
- virtual void addMessage(MessageDestination, MessageSource, MessageType, MessageLevel, const String& message, unsigned lineNumber, const String& sourceURL);
-#if ENABLE(NOTIFICATIONS)
- NotificationCenter* webkitNotifications() const;
-#endif
+ virtual void forwardException(const String& errorMessage, int lineNumber, const String& sourceURL) = 0;
// These methods are used for GC marking. See JSWorkerContext::markChildren(MarkStack&) in
// JSWorkerContextCustom.cpp.
@@ -142,9 +139,6 @@ namespace WebCore {
RefPtr<EventListener> m_onerrorListener;
EventListenersMap m_eventListeners;
-#if ENABLE_NOTIFICATIONS
- mutable RefPtr<NotificationCenter> m_notifications;
-#endif
bool m_closing;
};
diff --git a/WebCore/workers/WorkerContext.idl b/WebCore/workers/WorkerContext.idl
index 6a4a7fa..2404d22 100644
--- a/WebCore/workers/WorkerContext.idl
+++ b/WebCore/workers/WorkerContext.idl
@@ -69,10 +69,6 @@ module threads {
boolean dispatchEvent(in Event evt)
raises(EventException);
-#if defined(ENABLE_NOTIFICATIONS) && ENABLE_NOTIFICATIONS
- // Notification interface
- readonly attribute NotificationCenter webkitNotifications;
-#endif
// Constructors
attribute MessageEventConstructor MessageEvent;
@@ -81,9 +77,6 @@ module threads {
#if ENABLE_CHANNEL_MESSAGING
attribute [JSCCustomGetter] MessageChannelConstructor MessageChannel;
#endif
-#if ENABLE_EVENTSOURCE
- attribute [JSCCustomGetter] EventSourceConstructor EventSource;
-#endif
attribute [JSCCustomGetter] XMLHttpRequestConstructor XMLHttpRequest;
};
diff --git a/WebCore/workers/WorkerObjectProxy.h b/WebCore/workers/WorkerObjectProxy.h
index 586e7a0..c5f4456 100644
--- a/WebCore/workers/WorkerObjectProxy.h
+++ b/WebCore/workers/WorkerObjectProxy.h
@@ -33,24 +33,31 @@
#if ENABLE(WORKERS)
-#include "WorkerReportingProxy.h"
+#include "Console.h"
#include <wtf/PassOwnPtr.h>
namespace WebCore {
class MessagePortChannel;
+ class String;
// A proxy to talk to the worker object.
- class WorkerObjectProxy : public WorkerReportingProxy {
+ class WorkerObjectProxy {
public:
+ virtual ~WorkerObjectProxy() {}
+
virtual void postMessageToWorkerObject(const String&, PassOwnPtr<MessagePortChannel>) = 0;
+ virtual void postExceptionToWorkerObject(const String& errorMessage, int lineNumber, const String& sourceURL) = 0;
+
+ virtual void postConsoleMessageToWorkerObject(MessageDestination, MessageSource, MessageType, MessageLevel, const String& message, int lineNumber, const String& sourceURL) = 0;
+
virtual void confirmMessageFromWorkerObject(bool hasPendingActivity) = 0;
+
virtual void reportPendingActivity(bool hasPendingActivity) = 0;
- // No need to notify the parent page context when dedicated workers are closing.
- virtual void workerContextClosed() { }
+ virtual void workerContextDestroyed() = 0;
};
} // namespace WebCore
diff --git a/WebCore/workers/WorkerReportingProxy.h b/WebCore/workers/WorkerReportingProxy.h
deleted file mode 100644
index f0447c8..0000000
--- a/WebCore/workers/WorkerReportingProxy.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * 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
- * "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 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 WorkerReportingProxy_h
-#define WorkerReportingProxy_h
-
-#if ENABLE(WORKERS)
-
-#include "Console.h"
-
-namespace WebCore {
-
- class String;
-
- // APIs used by workers to report console activity.
- class WorkerReportingProxy {
- public:
- virtual ~WorkerReportingProxy() {}
-
- virtual void postExceptionToWorkerObject(const String& errorMessage, int lineNumber, const String& sourceURL) = 0;
-
- virtual void postConsoleMessageToWorkerObject(MessageDestination, MessageSource, MessageType, MessageLevel, const String& message, int lineNumber, const String& sourceURL) = 0;
-
- // Invoked when close() is invoked on the worker context.
- virtual void workerContextClosed() = 0;
-
- // Invoked when the thread has stopped.
- virtual void workerContextDestroyed() = 0;
- };
-} // namespace WebCore
-
-#endif // ENABLE(WORKERS)
-
-#endif // WorkerReportingProxy_h
diff --git a/WebCore/workers/WorkerScriptLoader.cpp b/WebCore/workers/WorkerScriptLoader.cpp
index 52baf2d..0162b26 100644
--- a/WebCore/workers/WorkerScriptLoader.cpp
+++ b/WebCore/workers/WorkerScriptLoader.cpp
@@ -50,7 +50,7 @@ WorkerScriptLoader::WorkerScriptLoader()
{
}
-void WorkerScriptLoader::loadSynchronously(ScriptExecutionContext* scriptExecutionContext, const KURL& url, CrossOriginRequestPolicy crossOriginRequestPolicy)
+void WorkerScriptLoader::loadSynchronously(ScriptExecutionContext* scriptExecutionContext, const KURL& url, CrossOriginRedirectPolicy crossOriginRedirectPolicy)
{
m_url = url;
@@ -59,15 +59,10 @@ void WorkerScriptLoader::loadSynchronously(ScriptExecutionContext* scriptExecuti
return;
ASSERT(scriptExecutionContext->isWorkerContext());
-
- ThreadableLoaderOptions options;
- options.allowCredentials = true;
- options.crossOriginRequestPolicy = crossOriginRequestPolicy;
-
- WorkerThreadableLoader::loadResourceSynchronously(static_cast<WorkerContext*>(scriptExecutionContext), *request, *this, options);
+ WorkerThreadableLoader::loadResourceSynchronously(static_cast<WorkerContext*>(scriptExecutionContext), *request, *this, AllowStoredCredentials, crossOriginRedirectPolicy);
}
-void WorkerScriptLoader::loadAsynchronously(ScriptExecutionContext* scriptExecutionContext, const KURL& url, CrossOriginRequestPolicy crossOriginRequestPolicy, WorkerScriptLoaderClient* client)
+void WorkerScriptLoader::loadAsynchronously(ScriptExecutionContext* scriptExecutionContext, const KURL& url, CrossOriginRedirectPolicy crossOriginRedirectPolicy, WorkerScriptLoaderClient* client)
{
ASSERT(client);
m_client = client;
@@ -77,11 +72,7 @@ void WorkerScriptLoader::loadAsynchronously(ScriptExecutionContext* scriptExecut
if (!request)
return;
- ThreadableLoaderOptions options;
- options.allowCredentials = true;
- options.crossOriginRequestPolicy = crossOriginRequestPolicy;
-
- m_threadableLoader = ThreadableLoader::create(scriptExecutionContext, this, *request, options);
+ m_threadableLoader = ThreadableLoader::create(scriptExecutionContext, this, *request, DoNotSendLoadCallbacks, DoNotSniffContent, AllowStoredCredentials, crossOriginRedirectPolicy);
}
PassOwnPtr<ResourceRequest> WorkerScriptLoader::createResourceRequest()
diff --git a/WebCore/workers/WorkerScriptLoader.h b/WebCore/workers/WorkerScriptLoader.h
index 47623f6..2924ec8 100644
--- a/WebCore/workers/WorkerScriptLoader.h
+++ b/WebCore/workers/WorkerScriptLoader.h
@@ -46,8 +46,8 @@ namespace WebCore {
public:
WorkerScriptLoader();
- void loadSynchronously(ScriptExecutionContext*, const KURL&, CrossOriginRequestPolicy);
- void loadAsynchronously(ScriptExecutionContext*, const KURL&, CrossOriginRequestPolicy, WorkerScriptLoaderClient*);
+ void loadSynchronously(ScriptExecutionContext*, const KURL&, CrossOriginRedirectPolicy);
+ void loadAsynchronously(ScriptExecutionContext*, const KURL&, CrossOriginRedirectPolicy, WorkerScriptLoaderClient*);
void notifyError();
diff --git a/WebCore/workers/WorkerThread.cpp b/WebCore/workers/WorkerThread.cpp
index 752c178..86a5fa8 100644
--- a/WebCore/workers/WorkerThread.cpp
+++ b/WebCore/workers/WorkerThread.cpp
@@ -61,10 +61,9 @@ WorkerThreadStartupData::WorkerThreadStartupData(const KURL& scriptURL, const St
{
}
-WorkerThread::WorkerThread(const KURL& scriptURL, const String& userAgent, const String& sourceCode, WorkerLoaderProxy& workerLoaderProxy, WorkerReportingProxy& workerReportingProxy)
+WorkerThread::WorkerThread(const KURL& scriptURL, const String& userAgent, const String& sourceCode, WorkerLoaderProxy& workerLoaderProxy)
: m_threadID(0)
, m_workerLoaderProxy(workerLoaderProxy)
- , m_workerReportingProxy(workerReportingProxy)
, m_startupData(WorkerThreadStartupData::create(scriptURL, userAgent, sourceCode))
{
}
diff --git a/WebCore/workers/WorkerThread.h b/WebCore/workers/WorkerThread.h
index 5d861e1..a6b22dc 100644
--- a/WebCore/workers/WorkerThread.h
+++ b/WebCore/workers/WorkerThread.h
@@ -37,11 +37,9 @@
namespace WebCore {
class KURL;
- class NotificationPresenter;
class String;
class WorkerContext;
class WorkerLoaderProxy;
- class WorkerReportingProxy;
struct WorkerThreadStartupData;
class WorkerThread : public RefCounted<WorkerThread> {
@@ -54,10 +52,9 @@ namespace WebCore {
ThreadIdentifier threadID() const { return m_threadID; }
WorkerRunLoop& runLoop() { return m_runLoop; }
WorkerLoaderProxy& workerLoaderProxy() const { return m_workerLoaderProxy; }
- WorkerReportingProxy& workerReportingProxy() const { return m_workerReportingProxy; }
protected:
- WorkerThread(const KURL&, const String& userAgent, const String& sourceCode, WorkerLoaderProxy&, WorkerReportingProxy&);
+ WorkerThread(const KURL&, const String& userAgent, const String& sourceCode, WorkerLoaderProxy&);
// Factory method for creating a new worker context for the thread.
virtual PassRefPtr<WorkerContext> createWorkerContext(const KURL& url, const String& userAgent) = 0;
@@ -67,11 +64,6 @@ namespace WebCore {
WorkerContext* workerContext() { return m_workerContext.get(); }
-#if ENABLE(NOTIFICATIONS)
- NotificationPresenter* getNotificationPresenter() { return m_notificationPresenter; }
- void setNotificationPresenter(NotificationPresenter* presenter) { m_notificationPresenter = presenter; }
-#endif
-
private:
// Static function executed as the core routine on the new thread. Passed a pointer to a WorkerThread object.
static void* workerThreadStart(void*);
@@ -80,16 +72,11 @@ namespace WebCore {
ThreadIdentifier m_threadID;
WorkerRunLoop m_runLoop;
WorkerLoaderProxy& m_workerLoaderProxy;
- WorkerReportingProxy& m_workerReportingProxy;
RefPtr<WorkerContext> m_workerContext;
Mutex m_threadCreationMutex;
OwnPtr<WorkerThreadStartupData> m_startupData;
-
-#if ENABLE(NOTIFICATIONS)
- NotificationPresenter* m_notificationPresenter;
-#endif
};
} // namespace WebCore
diff --git a/WebCore/xml/XMLHttpRequest.cpp b/WebCore/xml/XMLHttpRequest.cpp
index 0b2fabb..5e20252 100644
--- a/WebCore/xml/XMLHttpRequest.cpp
+++ b/WebCore/xml/XMLHttpRequest.cpp
@@ -25,6 +25,7 @@
#include "Cache.h"
#include "CString.h"
#include "CrossOriginAccessControl.h"
+#include "CrossOriginPreflightResultCache.h"
#include "DOMImplementation.h"
#include "Document.h"
#include "Event.h"
@@ -92,25 +93,25 @@ static bool isValidToken(const String& name)
unsigned length = name.length();
for (unsigned i = 0; i < length; i++) {
UChar c = name[i];
-
+
if (c >= 127 || c <= 32)
return false;
-
+
if (c == '(' || c == ')' || c == '<' || c == '>' || c == '@' ||
c == ',' || c == ';' || c == ':' || c == '\\' || c == '\"' ||
c == '/' || c == '[' || c == ']' || c == '?' || c == '=' ||
c == '{' || c == '}')
return false;
}
-
+
return true;
}
-
+
static bool isValidHeaderValue(const String& name)
{
- // FIXME: This should really match name against
+ // FIXME: This should really match name against
// field-value in section 4.2 of RFC 2616.
-
+
return !name.contains('\r') && !name.contains('\n');
}
@@ -142,9 +143,9 @@ XMLHttpRequest::XMLHttpRequest(ScriptExecutionContext* context)
, m_responseText("")
, m_createdDocument(false)
, m_error(false)
- , m_uploadEventsAllowed(true)
, m_uploadComplete(false)
, m_sameOriginRequest(true)
+ , m_inPreflight(false)
, m_didTellLoaderAboutRequest(false)
, m_receivedLength(0)
, m_lastSendLineNumber(0)
@@ -206,7 +207,7 @@ Document* XMLHttpRequest::responseXML() const
m_responseXML->write(String(m_responseText));
m_responseXML->finishParsing();
m_responseXML->close();
-
+
if (!m_responseXML->wellFormed())
m_responseXML = 0;
}
@@ -235,7 +236,7 @@ void XMLHttpRequest::addEventListener(const AtomicString& eventType, PassRefPtr<
for (ListenerVector::iterator listenerIter = listeners.begin(); listenerIter != listeners.end(); ++listenerIter)
if (*listenerIter == eventListener)
return;
-
+
listeners.append(eventListener);
m_eventListeners.add(eventType, listeners);
}
@@ -321,10 +322,10 @@ void XMLHttpRequest::open(const String& method, const KURL& url, bool async, Exc
ec = SYNTAX_ERR;
return;
}
-
+
// Method names are case sensitive. But since Firefox uppercases method names it knows, we'll do the same.
String methodUpper(method.upper());
-
+
if (methodUpper == "TRACE" || methodUpper == "TRACK" || methodUpper == "CONNECT") {
ec = SECURITY_ERR;
return;
@@ -334,7 +335,7 @@ void XMLHttpRequest::open(const String& method, const KURL& url, bool async, Exc
if (methodUpper == "COPY" || methodUpper == "DELETE" || methodUpper == "GET" || methodUpper == "HEAD"
|| methodUpper == "INDEX" || methodUpper == "LOCK" || methodUpper == "M-POST" || methodUpper == "MKCOL" || methodUpper == "MOVE"
- || methodUpper == "OPTIONS" || methodUpper == "POST" || methodUpper == "PROPFIND" || methodUpper == "PROPPATCH" || methodUpper == "PUT"
+ || methodUpper == "OPTIONS" || methodUpper == "POST" || methodUpper == "PROPFIND" || methodUpper == "PROPPATCH" || methodUpper == "PUT"
|| methodUpper == "UNLOCK")
m_method = methodUpper;
else
@@ -356,7 +357,7 @@ void XMLHttpRequest::open(const String& method, const KURL& url, bool async, con
{
KURL urlWithCredentials(url);
urlWithCredentials.setUser(user);
-
+
open(method, urlWithCredentials, async, ec);
}
@@ -365,7 +366,7 @@ void XMLHttpRequest::open(const String& method, const KURL& url, bool async, con
KURL urlWithCredentials(url);
urlWithCredentials.setUser(user);
urlWithCredentials.setPass(password);
-
+
open(method, urlWithCredentials, async, ec);
}
@@ -462,23 +463,34 @@ void XMLHttpRequest::send(File* body, ExceptionCode& ec)
void XMLHttpRequest::createRequest(ExceptionCode& ec)
{
- // The presence of upload event listeners forces us to use preflighting because POSTing to an URL that does not
- // permit cross origin requests should look exactly like POSTing to an URL that does not respond at all.
+ // Upload event listeners should be disallowed for simple cross-origin requests, because POSTing to an URL that does not
+ // permit cross origin requests should look exactly like POSTing to an URL that does not respond at all. If a listener exists
+ // when creating the request, it will force preflight.
// Also, only async requests support upload progress events.
- bool forcePreflight = false;
+ m_uploadEventsAllowed = false;
if (m_async) {
dispatchLoadStartEvent();
if (m_requestEntityBody && m_upload) {
- forcePreflight = m_upload->hasListeners();
+ m_uploadEventsAllowed = m_upload->hasListeners();
m_upload->dispatchLoadStartEvent();
}
}
m_sameOriginRequest = scriptExecutionContext()->securityOrigin()->canRequest(m_url);
- // We also remember whether upload events should be allowed for this request in case the upload listeners are
- // added after the request is started.
- m_uploadEventsAllowed = !isSimpleCrossOriginAccessRequest(m_method, m_requestHeaders);
+ if (!m_sameOriginRequest) {
+ makeCrossOriginAccessRequest(ec);
+ return;
+ }
+
+ m_uploadEventsAllowed = true;
+
+ makeSameOriginRequest(ec);
+}
+
+void XMLHttpRequest::makeSameOriginRequest(ExceptionCode& ec)
+{
+ ASSERT(m_sameOriginRequest);
ResourceRequest request(m_url);
request.setHTTPMethod(m_method);
@@ -492,28 +504,202 @@ void XMLHttpRequest::createRequest(ExceptionCode& ec)
if (m_requestHeaders.size() > 0)
request.addHTTPHeaderFields(m_requestHeaders);
- ThreadableLoaderOptions options;
- options.sendLoadCallbacks = true;
- options.sniffContent = false;
- options.forcePreflight = forcePreflight;
- options.allowCredentials = m_sameOriginRequest || m_includeCredentials;
- options.crossOriginRequestPolicy = UseAccessControl;
+ if (m_async)
+ loadRequestAsynchronously(request);
+ else
+ loadRequestSynchronously(request, ec);
+}
- m_exceptionCode = 0;
- m_error = false;
+void XMLHttpRequest::makeCrossOriginAccessRequest(ExceptionCode& ec)
+{
+ ASSERT(!m_sameOriginRequest);
+
+ if (!m_uploadEventsAllowed && isSimpleCrossOriginAccessRequest(m_method, m_requestHeaders))
+ makeSimpleCrossOriginAccessRequest(ec);
+ else
+ makeCrossOriginAccessRequestWithPreflight(ec);
+}
+
+void XMLHttpRequest::makeSimpleCrossOriginAccessRequest(ExceptionCode& ec)
+{
+ ASSERT(isSimpleCrossOriginAccessRequest(m_method, m_requestHeaders));
+
+ // Cross-origin requests are only defined for HTTP. We would catch this when checking response headers later, but there is no reason to send a request that's guaranteed to be denied.
+ if (!m_url.protocolInHTTPFamily()) {
+ ec = XMLHttpRequestException::NETWORK_ERR;
+ networkError();
+ return;
+ }
+
+ KURL url = m_url;
+ url.setUser(String());
+ url.setPass(String());
+
+ ResourceRequest request(url);
+ request.setHTTPMethod(m_method);
+ request.setAllowHTTPCookies(m_includeCredentials);
+ request.setHTTPOrigin(scriptExecutionContext()->securityOrigin()->toString());
+
+ if (m_requestHeaders.size() > 0)
+ request.addHTTPHeaderFields(m_requestHeaders);
+
+ if (m_requestEntityBody) {
+ ASSERT(m_method != "GET");
+ ASSERT(m_method != "HEAD");
+ request.setHTTPBody(m_requestEntityBody.release());
+ }
+
+ if (m_async)
+ loadRequestAsynchronously(request);
+ else
+ loadRequestSynchronously(request, ec);
+}
+
+void XMLHttpRequest::makeCrossOriginAccessRequestWithPreflight(ExceptionCode& ec)
+{
+ String origin = scriptExecutionContext()->securityOrigin()->toString();
+ KURL url = m_url;
+ url.setUser(String());
+ url.setPass(String());
+
+ if (!CrossOriginPreflightResultCache::shared().canSkipPreflight(origin, url, m_includeCredentials, m_method, m_requestHeaders)) {
+ m_inPreflight = true;
+ ResourceRequest preflightRequest(url);
+ preflightRequest.setHTTPMethod("OPTIONS");
+ preflightRequest.setHTTPHeaderField("Origin", origin);
+ preflightRequest.setHTTPHeaderField("Access-Control-Request-Method", m_method);
+
+ if (m_requestHeaders.size() > 0) {
+ Vector<UChar> headerBuffer;
+ HTTPHeaderMap::const_iterator it = m_requestHeaders.begin();
+ append(headerBuffer, it->first);
+ ++it;
+
+ HTTPHeaderMap::const_iterator end = m_requestHeaders.end();
+ for (; it != end; ++it) {
+ headerBuffer.append(',');
+ headerBuffer.append(' ');
+ append(headerBuffer, it->first);
+ }
+
+ preflightRequest.setHTTPHeaderField("Access-Control-Request-Headers", String::adopt(headerBuffer));
+ preflightRequest.addHTTPHeaderFields(m_requestHeaders);
+ }
+
+ if (m_async) {
+ m_uploadEventsAllowed = true;
+ loadRequestAsynchronously(preflightRequest);
+ return;
+ }
+
+ loadRequestSynchronously(preflightRequest, ec);
+ m_inPreflight = false;
+
+ if (ec)
+ return;
+ }
+
+ // Send the actual request.
+ ResourceRequest request(url);
+ request.setHTTPMethod(m_method);
+ request.setAllowHTTPCookies(m_includeCredentials);
+ request.setHTTPHeaderField("Origin", origin);
+
+ if (m_requestHeaders.size() > 0)
+ request.addHTTPHeaderFields(m_requestHeaders);
+
+ if (m_requestEntityBody) {
+ ASSERT(m_method != "GET");
+ ASSERT(m_method != "HEAD");
+ request.setHTTPBody(m_requestEntityBody.release());
+ }
if (m_async) {
- request.setReportUploadProgress(true);
- setPendingActivity(this);
- m_loader = ThreadableLoader::create(scriptExecutionContext(), this, request, options);
- } else
- ThreadableLoader::loadResourceSynchronously(scriptExecutionContext(), request, *this, options);
+ m_uploadEventsAllowed = true;
+ loadRequestAsynchronously(request);
+ return;
+ }
+
+ loadRequestSynchronously(request, ec);
+}
+
+void XMLHttpRequest::handleAsynchronousPreflightResult()
+{
+ ASSERT(m_inPreflight);
+ ASSERT(m_async);
+
+ m_inPreflight = false;
+
+ KURL url = m_url;
+ url.setUser(String());
+ url.setPass(String());
+
+ ResourceRequest request(url);
+ request.setHTTPMethod(m_method);
+ request.setAllowHTTPCookies(m_includeCredentials);
+ request.setHTTPOrigin(scriptExecutionContext()->securityOrigin()->toString());
+
+ if (m_requestHeaders.size() > 0)
+ request.addHTTPHeaderFields(m_requestHeaders);
+
+ if (m_requestEntityBody) {
+ ASSERT(m_method != "GET");
+ ASSERT(m_method != "HEAD");
+ request.setHTTPBody(m_requestEntityBody.release());
+ }
+
+ m_uploadEventsAllowed = true;
+ loadRequestAsynchronously(request);
+}
+
+void XMLHttpRequest::loadRequestSynchronously(ResourceRequest& request, ExceptionCode& ec)
+{
+ ASSERT(!m_async);
+ m_loader = 0;
+ m_exceptionCode = 0;
+ StoredCredentials storedCredentials = (m_sameOriginRequest || m_includeCredentials) ? AllowStoredCredentials : DoNotAllowStoredCredentials;
+
+ ThreadableLoader::loadResourceSynchronously(scriptExecutionContext(), request, *this, storedCredentials);
if (!m_exceptionCode && m_error)
m_exceptionCode = XMLHttpRequestException::NETWORK_ERR;
ec = m_exceptionCode;
}
+void XMLHttpRequest::loadRequestAsynchronously(ResourceRequest& request)
+{
+ ASSERT(m_async);
+ m_exceptionCode = 0;
+ // SubresourceLoader::create can return null here, for example if we're no longer attached to a page.
+ // This is true while running onunload handlers.
+ // FIXME: We need to be able to send XMLHttpRequests from onunload, <http://bugs.webkit.org/show_bug.cgi?id=10904>.
+ // FIXME: Maybe create can return null for other reasons too?
+ LoadCallbacks callbacks = m_inPreflight ? DoNotSendLoadCallbacks : SendLoadCallbacks;
+ StoredCredentials storedCredentials = (m_sameOriginRequest || m_includeCredentials) ? AllowStoredCredentials : DoNotAllowStoredCredentials;
+
+ if (m_upload)
+ request.setReportUploadProgress(true);
+
+ m_loader = ThreadableLoader::create(scriptExecutionContext(), this, request, callbacks, DoNotSniffContent, storedCredentials, DenyCrossOriginRedirect);
+
+ if (m_loader) {
+ // Neither this object nor the JavaScript wrapper should be deleted while
+ // a request is in progress because we need to keep the listeners alive,
+ // and they are referenced by the JavaScript wrapper.
+ setPendingActivity(this);
+
+ // For now we should only balance the nonCached request count for main-thread XHRs and not
+ // Worker XHRs, as the Cache is not thread-safe.
+ // This will become irrelevant after https://bugs.webkit.org/show_bug.cgi?id=27165 is resolved.
+ if (!scriptExecutionContext()->isWorkerContext()) {
+ ASSERT(isMainThread());
+ ASSERT(!m_didTellLoaderAboutRequest);
+ cache()->loader()->nonCacheRequestInFlight(m_url);
+ m_didTellLoaderAboutRequest = true;
+ }
+ }
+}
+
void XMLHttpRequest::abort()
{
// internalAbort() calls dropProtection(), which may release the last reference.
@@ -525,7 +711,7 @@ void XMLHttpRequest::abort()
// Clear headers as required by the spec
m_requestHeaders.clear();
-
+
if ((m_state <= OPENED && !sendFlag) || m_state == DONE)
m_state = UNSENT;
else {
@@ -608,7 +794,7 @@ void XMLHttpRequest::abortError()
}
}
-void XMLHttpRequest::dropProtection()
+void XMLHttpRequest::dropProtection()
{
#if USE(JSC)
// The XHR object itself holds on to the responseText, and
@@ -668,7 +854,7 @@ void XMLHttpRequest::setRequestHeader(const AtomicString& name, const String& va
void XMLHttpRequest::setRequestHeaderInternal(const AtomicString& name, const String& value)
{
- pair<HTTPHeaderMap::iterator, bool> result = m_requestHeaders.add(name, value);
+ pair<HTTPHeaderMap::iterator, bool> result = m_requestHeaders.add(name, value);
if (!result.second)
result.first->second += ", " + value;
}
@@ -753,7 +939,7 @@ String XMLHttpRequest::responseMIMEType() const
}
if (mimeType.isEmpty())
mimeType = "text/xml";
-
+
return mimeType;
}
@@ -795,7 +981,7 @@ void XMLHttpRequest::didFail(const ResourceError& error)
cache()->loader()->nonCacheRequestComplete(m_url);
m_didTellLoaderAboutRequest = false;
}
-
+
// If we are already in an error state, for instance we called abort(), bail out early.
if (m_error)
return;
@@ -825,6 +1011,11 @@ void XMLHttpRequest::didFinishLoading(unsigned long identifier)
if (m_error)
return;
+ if (m_inPreflight) {
+ didFinishLoadingPreflight();
+ return;
+ }
+
if (m_state < HEADERS_RECEIVED)
changeState(HEADERS_RECEIVED);
@@ -844,6 +1035,19 @@ void XMLHttpRequest::didFinishLoading(unsigned long identifier)
dropProtection();
}
+void XMLHttpRequest::didFinishLoadingPreflight()
+{
+ ASSERT(m_inPreflight);
+ ASSERT(!m_sameOriginRequest);
+
+ // FIXME: this can probably be moved to didReceiveResponsePreflight.
+ if (m_async)
+ handleAsynchronousPreflightResult();
+
+ if (m_loader)
+ unsetPendingActivity(this);
+}
+
void XMLHttpRequest::didSendData(unsigned long long bytesSent, unsigned long long totalBytesToBeSent)
{
if (!m_upload)
@@ -861,12 +1065,45 @@ void XMLHttpRequest::didSendData(unsigned long long bytesSent, unsigned long lon
void XMLHttpRequest::didReceiveResponse(const ResourceResponse& response)
{
+ if (m_inPreflight) {
+ didReceiveResponsePreflight(response);
+ return;
+ }
+
+ if (!m_sameOriginRequest) {
+ if (!passesAccessControlCheck(response, m_includeCredentials, scriptExecutionContext()->securityOrigin())) {
+ networkError();
+ return;
+ }
+ }
+
m_response = response;
m_responseEncoding = extractCharsetFromMediaType(m_mimeTypeOverride);
if (m_responseEncoding.isEmpty())
m_responseEncoding = response.textEncodingName();
}
+void XMLHttpRequest::didReceiveResponsePreflight(const ResourceResponse& response)
+{
+ ASSERT(m_inPreflight);
+ ASSERT(!m_sameOriginRequest);
+
+ if (!passesAccessControlCheck(response, m_includeCredentials, scriptExecutionContext()->securityOrigin())) {
+ networkError();
+ return;
+ }
+
+ OwnPtr<CrossOriginPreflightResultCacheItem> preflightResult(new CrossOriginPreflightResultCacheItem(m_includeCredentials));
+ if (!preflightResult->parse(response)
+ || !preflightResult->allowsCrossOriginMethod(m_method)
+ || !preflightResult->allowsCrossOriginHeaders(m_requestHeaders)) {
+ networkError();
+ return;
+ }
+
+ CrossOriginPreflightResultCache::shared().appendEntry(scriptExecutionContext()->securityOrigin()->toString(), m_url, preflightResult.release());
+}
+
void XMLHttpRequest::didReceiveAuthenticationCancellation(const ResourceResponse& failureResponse)
{
m_response = failureResponse;
@@ -874,12 +1111,12 @@ void XMLHttpRequest::didReceiveAuthenticationCancellation(const ResourceResponse
void XMLHttpRequest::didReceiveData(const char* data, int len)
{
- if (m_error)
+ if (m_inPreflight || m_error)
return;
if (m_state < HEADERS_RECEIVED)
changeState(HEADERS_RECEIVED);
-
+
if (!m_decoder) {
if (!m_responseEncoding.isEmpty())
m_decoder = TextResourceDecoder::create("text/plain", m_responseEncoding);
@@ -973,7 +1210,7 @@ void XMLHttpRequest::dispatchLoadStartEvent()
void XMLHttpRequest::dispatchProgressEvent(long long expectedLength)
{
- dispatchXMLHttpRequestProgressEvent(m_onProgressListener.get(), eventNames().progressEvent, expectedLength && m_receivedLength <= expectedLength,
+ dispatchXMLHttpRequestProgressEvent(m_onProgressListener.get(), eventNames().progressEvent, expectedLength && m_receivedLength <= expectedLength,
static_cast<unsigned>(m_receivedLength), static_cast<unsigned>(expectedLength));
}
@@ -998,4 +1235,4 @@ ScriptExecutionContext* XMLHttpRequest::scriptExecutionContext() const
return ActiveDOMObject::scriptExecutionContext();
}
-} // namespace WebCore
+} // namespace WebCore
diff --git a/WebCore/xml/XMLHttpRequest.h b/WebCore/xml/XMLHttpRequest.h
index aa33b8b..d581d3d 100644
--- a/WebCore/xml/XMLHttpRequest.h
+++ b/WebCore/xml/XMLHttpRequest.h
@@ -117,7 +117,7 @@ public:
private:
XMLHttpRequest(ScriptExecutionContext*);
-
+
virtual void refEventTarget() { ref(); }
virtual void derefEventTarget() { deref(); }
@@ -135,6 +135,10 @@ private:
virtual void didFailRedirectCheck();
virtual void didReceiveAuthenticationCancellation(const ResourceResponse&);
+ // Special versions for the preflight
+ void didReceiveResponsePreflight(const ResourceResponse&);
+ void didFinishLoadingPreflight();
+
void updateAndDispatchOnProgress(unsigned int len);
String responseMIMEType() const;
@@ -155,6 +159,16 @@ private:
void createRequest(ExceptionCode&);
+ void makeSameOriginRequest(ExceptionCode&);
+ void makeCrossOriginAccessRequest(ExceptionCode&);
+
+ void makeSimpleCrossOriginAccessRequest(ExceptionCode&);
+ void makeCrossOriginAccessRequestWithPreflight(ExceptionCode&);
+ void handleAsynchronousPreflightResult();
+
+ void loadRequestSynchronously(ResourceRequest&, ExceptionCode&);
+ void loadRequestAsynchronously(ResourceRequest&);
+
void genericError();
void networkError();
void abortError();
@@ -209,11 +223,13 @@ private:
bool m_uploadComplete;
bool m_sameOriginRequest;
+ bool m_allowAccess;
+ bool m_inPreflight;
bool m_didTellLoaderAboutRequest;
// Used for onprogress tracking
long long m_receivedLength;
-
+
unsigned m_lastSendLineNumber;
String m_lastSendURL;
ExceptionCode m_exceptionCode;
diff --git a/WebCore/xml/XPathNamespace.cpp b/WebCore/xml/XPathNamespace.cpp
index 9646402..3c8c42c 100644
--- a/WebCore/xml/XPathNamespace.cpp
+++ b/WebCore/xml/XPathNamespace.cpp
@@ -1,6 +1,6 @@
/*
* Copyright 2005 Frerich Raabe <raabe@kde.org>
- * Copyright (C) 2006, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2006 Apple Computer, Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -33,14 +33,18 @@
namespace WebCore {
-XPathNamespace::XPathNamespace(PassRefPtr<Element> ownerElement, const AtomicString& prefix, const AtomicString& uri)
- : Node(ownerElement->document(), CreateOther)
+XPathNamespace::XPathNamespace(PassRefPtr<Element> ownerElement, const String& prefix, const String& uri)
+ : Node(ownerElement->document())
, m_ownerElement(ownerElement)
, m_prefix(prefix)
, m_uri(uri)
{
}
+XPathNamespace::~XPathNamespace()
+{
+}
+
Document* XPathNamespace::ownerDocument() const
{
return m_ownerElement->ownerDocument();
diff --git a/WebCore/xml/XPathNamespace.h b/WebCore/xml/XPathNamespace.h
index 996cb9a..c0e4280 100644
--- a/WebCore/xml/XPathNamespace.h
+++ b/WebCore/xml/XPathNamespace.h
@@ -1,6 +1,6 @@
/*
* Copyright 2005 Frerich Raabe <raabe@kde.org>
- * Copyright (C) 2006, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2006 Apple Computer, Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -34,11 +34,13 @@
namespace WebCore {
- // FIXME: This class is never instantiated. Maybe it should be removed.
+ class Document;
+ class Element;
class XPathNamespace : public Node {
- private:
- XPathNamespace(PassRefPtr<Element> ownerElement, const AtomicString& prefix, const AtomicString& uri);
+ public:
+ XPathNamespace(PassRefPtr<Element> ownerElement, const String& prefix, const String& uri);
+ virtual ~XPathNamespace();
virtual Document* ownerDocument() const;
virtual Element* ownerElement() const;
@@ -48,8 +50,9 @@ namespace WebCore {
virtual String nodeValue() const;
virtual const AtomicString& namespaceURI() const;
- virtual NodeType nodeType() const;
+ virtual Node::NodeType nodeType() const;
+ private:
RefPtr<Element> m_ownerElement;
AtomicString m_prefix;
AtomicString m_uri;
diff --git a/WebCore/xml/XSLTProcessor.cpp b/WebCore/xml/XSLTProcessor.cpp
index 9fdf31f..a26fe77 100644
--- a/WebCore/xml/XSLTProcessor.cpp
+++ b/WebCore/xml/XSLTProcessor.cpp
@@ -285,12 +285,12 @@ PassRefPtr<Document> XSLTProcessor::createDocumentFromSource(const String& sourc
static inline RefPtr<DocumentFragment> createFragmentFromSource(const String& sourceString, const String& sourceMIMEType, Document* outputDoc)
{
- RefPtr<DocumentFragment> fragment = DocumentFragment::create(outputDoc);
+ RefPtr<DocumentFragment> fragment = new DocumentFragment(outputDoc);
if (sourceMIMEType == "text/html")
parseHTMLDocumentFragment(sourceString, fragment.get());
else if (sourceMIMEType == "text/plain")
- fragment->addChild(Text::create(outputDoc, sourceString));
+ fragment->addChild(new Text(outputDoc, sourceString));
else {
bool successfulParse = parseXMLDocumentFragment(sourceString, fragment.get(), outputDoc->documentElement());
if (!successfulParse)
diff --git a/WebKitTools/Scripts/make-js-test-wrappers b/WebKitTools/Scripts/make-js-test-wrappers
new file mode 100755
index 0000000..a030d3b
--- /dev/null
+++ b/WebKitTools/Scripts/make-js-test-wrappers
@@ -0,0 +1,175 @@
+#!/usr/bin/perl -w
+
+# Copyright (C) 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.
+# 3. Neither the name of Apple Computer, Inc. ("Apple") 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 "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 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.
+
+# Script to generate HTML wrappers for JavaScript tests from templates
+
+use strict;
+
+use FindBin;
+use lib $FindBin::Bin;
+
+use File::Basename;
+use File::Find;
+use Getopt::Long;
+use webkitdirs;
+
+sub directoryFilter;
+sub findTemplateFiles(@);
+
+my $showHelp;
+
+my $result = GetOptions(
+ "help" => \$showHelp,
+);
+
+if (!$result || $showHelp) {
+ print STDERR basename($0) . " [-h|--help] [path ...]\n";
+ exit 1;
+}
+
+setConfiguration();
+my $productDir = productDir();
+
+chdirWebKit();
+
+my @templates = findTemplateFiles(@ARGV);
+
+for my $tfile (@templates) {
+
+ my $tpath = $tfile;
+ $tpath =~ s:/resources/TEMPLATE.html$::;
+
+ print "${tpath}\n";
+
+ chdirWebKit();
+ chdir($tpath);
+
+ my @files;
+ my $fileFilter = sub {
+ push @files, $File::Find::name if substr($_, -3) eq ".js";
+ };
+ find({ preprocess => \&directoryFilter, wanted => $fileFilter }, "resources");
+
+ open TEMPLATE, "<resources/TEMPLATE.html";
+ my $template = do { local $/; <TEMPLATE> };
+ close TEMPLATE;
+
+ my $templateNegative = $template;
+ if (-e "resources/TEMPLATE-n.html") {
+ open TEMPLATE, "<resources/TEMPLATE-n.html";
+ $templateNegative = do { local $/; <TEMPLATE> };
+ close TEMPLATE;
+ }
+
+ for my $file (@files) {
+ next if $file =~ /js-test-.*\.js$/;
+ next if $file =~ /cookies-test-(post|pre)\.js$/;
+ next if $file =~ /standalone-.*\.js$/;
+ next if $file =~ /SVGTestCase\.js/;
+ next if $file =~ /WMLTestCase\.js/;
+
+ next if $file =~ m:resources/bom-in-file-retains-correct-offset\.js$:; # has a custom template
+ next if $file =~ m:resources/NSResolver-exceptions\.js$:;
+ next if $file =~ m:resources/WindowProperties\.js$:;
+ next if $file =~ m:resources/altGlyph-dom\.js$:;
+ next if $file =~ m:resources/attr-case-sensitivity\.js$:;
+ next if $file =~ m:resources/box-shadow-overflow-scroll\.js$:;
+ next if $file =~ m:resources/codegen-temporaries-multiple-global-blocks-1\.js$:;
+ next if $file =~ m:resources/codegen-temporaries-multiple-global-blocks-2\.js$:;
+ next if $file =~ m:resources/constructors-cached-navigate\.js$:;
+ next if $file =~ m:resources/frame-loading-via-document-write\.js$:;
+ next if $file =~ m:resources/id-fastpath-almost-strict\.js$:;
+ next if $file =~ m:resources/id-fastpath-strict\.js$:;
+ next if $file =~ m:resources/intersectsNode\.js$:;
+ next if $file =~ m:resources/p-in-scope\.js$:;
+ next if $file =~ m:resources/paste-blockquote-before-blockquote\.js$:;
+ next if $file =~ m:resources/reflection-overflow-scroll\.js$:;
+ next if $file =~ m:resources/script-element-gc\.js$:;
+ next if $file =~ m:resources/script-element-gc\.js$:;
+ next if $file =~ m:resources/script3\.js$:;
+ next if $file =~ m:resources/script4\.js$:;
+ next if $file =~ m:resources/script5\.js$:;
+ next if $file =~ m:resources/scripted-random\.js$:;
+ next if $file =~ m:resources/select-options-remove\.js$:;
+ next if $file =~ m:resources/shadow-offset\.js$:;
+ next if $file =~ m:resources/tabindex-focus-blur-all\.js$:;
+ next if $file =~ m:resources/use-instanceRoot-event-bubbling\.js$:;
+ next if $file =~ m:resources/use-instanceRoot-event-listeners\.js$:;
+ next if $file =~ m:resources/window-properties\.js$:;
+ next if $file =~ m:resources/wrapper-identity-base\.js$:;
+ next if $file =~ m:resources/xhtml-scripts\.js$:;
+ next if $file =~ m:resources/instanceof-operator-dummy-worker\.js$:;
+ next if $file =~ m:resources/json2-es5-compat\.js$:;
+ next if $file =~ m:resources/JSON-stringify\.js$:;
+ next if $file =~ m:resources/JSON-parse\.js$:;
+ next if $file =~ m:resources/textarea-input-event\.js$:;
+
+ my $html = $file;
+ $html =~ s:resources/(.*)\.js:$1.html:;
+ next if -f "$html-disabled";
+
+ system("grep -q 'successfullyParsed =' $file");
+ if ($? != 0) {
+ `echo "" >> "${file}"`;
+ `echo "var successfullyParsed = true;" >> "${file}"`;
+ }
+
+ print " ${html}\n";
+ open HTML, ">$html";
+ my $output = ($file =~ /-n\.js/) ? $templateNegative : $template;
+ $output =~ s:YOUR_JS_FILE_HERE:$file:;
+ print HTML $output;
+
+ close HTML;
+ }
+}
+
+exit 0;
+
+sub directoryFilter
+{
+ return () if basename($File::Find::dir) eq ".svn";
+ return @_;
+}
+
+sub findTemplateFiles(@) {
+ my @args = @_;
+ my @templateFiles;
+
+ push @args, "LayoutTests" if scalar(@args) == 0;
+
+ my @paths = map { -f $_ ? dirname($_) : $_ } @args;
+
+ my $fileFilter = sub {
+ push @templateFiles, $File::Find::name if $_ eq "TEMPLATE.html";
+ };
+
+ find({ preprocess => \&directoryFilter, wanted => $fileFilter }, @paths);
+
+ return @templateFiles;
+}
diff --git a/WebKitTools/Scripts/modules/commiters_unittest.py b/WebKitTools/Scripts/modules/commiters_unittest.py
new file mode 100644
index 0000000..d221c8b
--- /dev/null
+++ b/WebKitTools/Scripts/modules/commiters_unittest.py
@@ -0,0 +1,52 @@
+# 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
+# "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 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 unittest
+from committers import CommitterList, Committer, Reviewer
+
+class CommittersTest(unittest.TestCase):
+
+ def test_committer_lookup(self):
+ committer = Committer('Test One', 'one@test.com')
+ reviewer = Reviewer('Test Two', 'two@test.com')
+ committer_list = CommitterList(committers=[committer], reviewers=[reviewer])
+
+ # Test valid committer and reviewer lookup
+ self.assertEqual(committer_list.committer_by_bugzilla_email('one@test.com'), committer)
+ self.assertEqual(committer_list.reviewer_by_bugzilla_email('two@test.com'), reviewer)
+ self.assertEqual(committer_list.committer_by_bugzilla_email('two@test.com'), reviewer)
+
+ # Test that a known committer is not returned during reviewer lookup
+ self.assertRaises(Exception, committer_list.reviewer_by_bugzilla_email, 'one@test.com')
+
+ # Test that unknown email address fail both committer and reviewer lookup
+ self.assertRaises(Exception, committer_list.committer_by_bugzilla_email, 'bar@bar.com')
+ self.assertRaises(Exception, committer_list.reviewer_by_bugzilla_email, 'bar@bar.com')
+
+if __name__ == '__main__':
+ unittest.main()